From 1eb42bd3e9d826d57ded8bad7b792974a3d9da9e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aur=C3=A9lien=20COUDERC?= Date: Sun, 26 Jan 2020 22:03:24 +0000 Subject: [PATCH 1/1] Import kalgebra_19.12.1.orig.tar.xz [dgit import orig kalgebra_19.12.1.orig.tar.xz] --- .arcconfig | 3 + .gitignore | 21 + CMakeLists.txt | 83 + COPYING | 339 ++++ COPYING.DOC | 397 +++++ COPYING.LIB | 481 +++++ Mainpage.dox | 5 + TODO | 17 + android/AndroidManifest.xml | 36 + android/res/drawable/icon.png | Bin 0 -> 1734 bytes android/res/values/libs.xml | 25 + android/res/values/strings.xml | 4 + calgebra/CMakeLists.txt | 19 + calgebra/main.cpp | 158 ++ calgebra/test_calgebra.py | 18 + cmake/COPYING-CMAKE-SCRIPTS | 22 + cmake/FindReadline.cmake | 12 + doc/CMakeLists.txt | 4 + doc/commands.docbook | 429 +++++ doc/index.docbook | 508 ++++++ doc/kalgebra-2dgraph-window.png | Bin 0 -> 41762 bytes doc/kalgebra-3dgraph-window.png | Bin 0 -> 54228 bytes doc/kalgebra-console-window.png | Bin 0 -> 48997 bytes doc/kalgebra-dictionary-window.png | Bin 0 -> 60041 bytes doc/kalgebra-main-window.png | Bin 0 -> 46156 bytes doc/view-fullscreen.png | Bin 0 -> 514 bytes icons/64-apps-kalgebra.png | Bin 0 -> 1734 bytes icons/CMakeLists.txt | 5 + icons/sc-apps-kalgebra.svgz | 335 ++++ kalgebra.kdev4 | 3 + mobile/CMakeLists.txt | 25 + mobile/Messages.sh | 2 + mobile/clipboard.cpp | 128 ++ mobile/clipboard.h | 73 + mobile/header.jpg | Bin 0 -> 17512 bytes mobile/header.qrc | 5 + mobile/kalgebramobile.cpp | 100 ++ mobile/kalgebramobile.h | 60 + mobile/main.cpp | 76 + mobile/org.kde.kalgebramobile.appdata.xml | 92 + mobile/org.kde.kalgebramobile.desktop | 141 ++ mobile/plugins/About.qml | 56 + mobile/plugins/CMakeLists.txt | 10 + mobile/plugins/Console.qml | 158 ++ mobile/plugins/Dictionary.qml | 91 + mobile/plugins/Plot2D.qml | 127 ++ mobile/plugins/Plot3D.qml | 122 ++ mobile/plugins/Tables.qml | 112 ++ mobile/plugins/VariablesView.qml | 35 + mobile/plugins/kalgebraabout.json | 56 + mobile/plugins/kalgebraconsole.json | 78 + mobile/plugins/kalgebradictionary.json | 78 + mobile/plugins/kalgebraplot2d.json | 75 + mobile/plugins/kalgebraplot3d.json | 75 + mobile/plugins/kalgebratables.json | 77 + mobile/plugins/kalgebravariables.json | 77 + mobile/plugins/resources/kde-edu-logo.png | Bin 0 -> 16041 bytes mobile/plugins/widgets/CMakeLists.txt | 6 + mobile/plugins/widgets/kde/AddButton.qml | 39 + mobile/plugins/widgets/kde/CMakeLists.txt | 14 + mobile/plugins/widgets/kde/KAlgebraMobile.qml | 90 + mobile/plugins/widgets/kde/KAlgebraPage.qml | 32 + mobile/plugins/widgets/qmldir | 6 + .../widgets/qtcontrols/ExpressionInput.qml | 80 + .../plugins/widgets/qtcontrols/RealInput.qml | 29 + mobile/pluginsmodel.cpp | 98 ++ mobile/pluginsmodel.h | 45 + mobile/resources.qrc | 9 + plasmoids/CMakeLists.txt | 6 + plasmoids/calculator/CMakeLists.txt | 11 + plasmoids/calculator/Messages.sh | 2 + plasmoids/calculator/kalgebraplasma.cpp | 159 ++ plasmoids/calculator/kalgebraplasma.h | 61 + plasmoids/calculator/kalgebraplasmoid.desktop | 126 ++ .../graphsplasmoid/contents/ui/config.ui | 28 + plasmoids/graphsplasmoid/contents/ui/main.qml | 68 + plasmoids/graphsplasmoid/metadata.desktop | 92 + po/ar/kalgebra.po | 909 ++++++++++ po/bg/kalgebra.po | 855 +++++++++ po/bg/plasma_applet_kalgebraplasmoid.po | 33 + po/bs/kalgebra.po | 502 ++++++ po/bs/plasma_applet_kalgebraplasmoid.po | 36 + po/ca/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/ca/docs/kalgebra/index.docbook | 694 ++++++++ .../docs/kalgebra/kalgebra-2dgraph-window.png | Bin 0 -> 70536 bytes .../docs/kalgebra/kalgebra-3dgraph-window.png | Bin 0 -> 73731 bytes .../docs/kalgebra/kalgebra-console-window.png | Bin 0 -> 132241 bytes .../kalgebra/kalgebra-dictionary-window.png | Bin 0 -> 95216 bytes po/ca/docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 105212 bytes po/ca/docs/kalgebra/view-fullscreen.png | Bin 0 -> 514 bytes po/ca/kalgebra.po | 437 +++++ po/ca/kalgebramobile.po | 179 ++ po/ca/plasma_applet_kalgebraplasmoid.po | 36 + po/ca@valencia/kalgebra.po | 497 ++++++ po/ca@valencia/kalgebramobile.po | 210 +++ .../plasma_applet_kalgebraplasmoid.po | 36 + po/cs/kalgebra.po | 432 +++++ po/cs/kalgebramobile.po | 175 ++ po/cs/plasma_applet_kalgebraplasmoid.po | 33 + po/da/kalgebra.po | 1117 ++++++++++++ po/da/plasma_applet_kalgebraplasmoid.po | 33 + po/de/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/de/docs/kalgebra/index.docbook | 715 ++++++++ po/de/docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 17161 bytes po/de/kalgebra.po | 1181 +++++++++++++ po/de/kalgebramobile.po | 175 ++ po/de/plasma_applet_kalgebraplasmoid.po | 30 + po/el/kalgebra.po | 1145 ++++++++++++ po/el/plasma_applet_kalgebraplasmoid.po | 34 + po/en_GB/kalgebra.po | 1163 ++++++++++++ po/en_GB/kalgebramobile.po | 202 +++ po/en_GB/plasma_applet_kalgebraplasmoid.po | 32 + po/eo/kalgebra.po | 430 +++++ po/eo/plasma_applet_kalgebraplasmoid.po | 32 + po/es/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/es/docs/kalgebra/index.docbook | 726 ++++++++ po/es/docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 37948 bytes po/es/kalgebra.po | 485 +++++ po/es/kalgebramobile.po | 204 +++ po/es/plasma_applet_kalgebraplasmoid.po | 35 + po/et/docs/kalgebra/commands.docbook | 1478 ++++++++++++++++ po/et/docs/kalgebra/index.docbook | 729 ++++++++ po/et/kalgebra.po | 1168 ++++++++++++ po/et/plasma_applet_kalgebraplasmoid.po | 33 + po/eu/kalgebra.po | 861 +++++++++ po/fi/kalgebra.po | 1020 +++++++++++ po/fi/kalgebramobile.po | 203 +++ po/fi/plasma_applet_kalgebraplasmoid.po | 35 + po/fr/kalgebra.po | 1060 +++++++++++ po/fr/kalgebramobile.po | 205 +++ po/fr/plasma_applet_kalgebraplasmoid.po | 36 + po/ga/kalgebra.po | 996 +++++++++++ po/ga/plasma_applet_kalgebraplasmoid.po | 33 + po/gl/kalgebra.po | 498 ++++++ po/gl/kalgebramobile.po | 197 +++ po/gl/plasma_applet_kalgebraplasmoid.po | 32 + po/hi/kalgebra.po | 861 +++++++++ po/hr/kalgebra.po | 945 ++++++++++ po/hu/kalgebra.po | 508 ++++++ po/hu/plasma_applet_kalgebraplasmoid.po | 33 + po/it/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/it/docs/kalgebra/index.docbook | 710 ++++++++ po/it/kalgebra.po | 1131 ++++++++++++ po/it/kalgebramobile.po | 192 ++ po/it/plasma_applet_kalgebraplasmoid.po | 33 + po/ja/kalgebra.po | 445 +++++ po/ja/kalgebramobile.po | 172 ++ po/ja/plasma_applet_kalgebraplasmoid.po | 30 + po/kk/kalgebra.po | 1032 +++++++++++ po/kk/plasma_applet_kalgebraplasmoid.po | 33 + po/km/kalgebra.po | 527 ++++++ po/ko/kalgebra.po | 504 ++++++ po/ko/plasma_applet_kalgebraplasmoid.po | 32 + po/lt/kalgebra.po | 468 +++++ po/lt/kalgebramobile.po | 176 ++ po/lt/plasma_applet_kalgebraplasmoid.po | 36 + po/lv/kalgebra.po | 1083 ++++++++++++ po/lv/plasma_applet_kalgebraplasmoid.po | 35 + po/ml/kalgebra.po | 731 ++++++++ po/ml/kalgebramobile.po | 176 ++ po/ml/plasma_applet_kalgebraplasmoid.po | 34 + po/mr/kalgebra.po | 459 +++++ po/mr/plasma_applet_kalgebraplasmoid.po | 33 + po/nb/kalgebra.po | 435 +++++ po/nb/plasma_applet_kalgebraplasmoid.po | 35 + po/nds/kalgebra.po | 1199 +++++++++++++ po/nds/plasma_applet_kalgebraplasmoid.po | 34 + po/nl/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/nl/docs/kalgebra/index.docbook | 692 ++++++++ po/nl/kalgebra.po | 1132 ++++++++++++ po/nl/kalgebramobile.po | 208 +++ po/nl/plasma_applet_kalgebraplasmoid.po | 33 + po/nn/kalgebra.po | 435 +++++ po/nn/kalgebramobile.po | 177 ++ po/nn/plasma_applet_kalgebraplasmoid.po | 35 + po/pa/kalgebra.po | 653 +++++++ po/pa/plasma_applet_kalgebraplasmoid.po | 33 + po/pl/kalgebra.po | 1150 ++++++++++++ po/pl/kalgebramobile.po | 200 +++ po/pl/plasma_applet_kalgebraplasmoid.po | 34 + po/pt/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/pt/docs/kalgebra/index.docbook | 711 ++++++++ po/pt/kalgebra.po | 430 +++++ po/pt/kalgebramobile.po | 171 ++ po/pt/plasma_applet_kalgebraplasmoid.po | 29 + po/pt_BR/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/pt_BR/docs/kalgebra/index.docbook | 730 ++++++++ .../docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 46279 bytes po/pt_BR/kalgebra.po | 437 +++++ po/pt_BR/kalgebramobile.po | 201 +++ po/pt_BR/plasma_applet_kalgebraplasmoid.po | 34 + po/ro/kalgebra.po | 1067 +++++++++++ po/ru/docs/kalgebra/commands.docbook | 1370 ++++++++++++++ po/ru/docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 29227 bytes po/ru/kalgebra.po | 1136 ++++++++++++ po/ru/kalgebramobile.po | 176 ++ po/ru/plasma_applet_kalgebraplasmoid.po | 37 + po/sk/kalgebra.po | 461 +++++ po/sk/kalgebramobile.po | 177 ++ po/sk/plasma_applet_kalgebraplasmoid.po | 31 + po/sl/kalgebra.po | 465 +++++ po/sl/plasma_applet_kalgebraplasmoid.po | 33 + po/sv/docs/kalgebra/commands.docbook | 1566 ++++++++++++++++ po/sv/docs/kalgebra/index.docbook | 708 ++++++++ po/sv/kalgebra.po | 1137 ++++++++++++ po/sv/kalgebramobile.po | 202 +++ po/sv/plasma_applet_kalgebraplasmoid.po | 33 + po/tr/kalgebra.po | 456 +++++ po/tr/plasma_applet_kalgebraplasmoid.po | 36 + po/ug/kalgebra.po | 557 ++++++ po/ug/plasma_applet_kalgebraplasmoid.po | 33 + po/uk/docs/kalgebra/commands.docbook | 1568 +++++++++++++++++ po/uk/docs/kalgebra/index.docbook | 707 ++++++++ .../docs/kalgebra/kalgebra-2dgraph-window.png | Bin 0 -> 16499 bytes .../docs/kalgebra/kalgebra-3dgraph-window.png | Bin 0 -> 19571 bytes .../docs/kalgebra/kalgebra-console-window.png | Bin 0 -> 15938 bytes .../kalgebra/kalgebra-dictionary-window.png | Bin 0 -> 17276 bytes po/uk/docs/kalgebra/kalgebra-main-window.png | Bin 0 -> 14995 bytes po/uk/kalgebra.po | 1173 ++++++++++++ po/uk/kalgebramobile.po | 213 +++ po/uk/plasma_applet_kalgebraplasmoid.po | 36 + po/zh_CN/kalgebra.po | 438 +++++ po/zh_CN/kalgebramobile.po | 178 ++ po/zh_CN/plasma_applet_kalgebraplasmoid.po | 36 + po/zh_TW/kalgebra.po | 439 +++++ po/zh_TW/kalgebramobile.po | 175 ++ po/zh_TW/plasma_applet_kalgebraplasmoid.po | 34 + src/CMakeLists.txt | 28 + src/Messages.sh | 2 + src/askname.h | 53 + src/consolehtml.cpp | 250 +++ src/consolehtml.h | 115 ++ src/consolemodel.cpp | 181 ++ src/consolemodel.h | 75 + src/dictionary.cpp | 122 ++ src/dictionary.h | 65 + src/functionedit.cpp | 321 ++++ src/functionedit.h | 129 ++ src/kalgebra.cpp | 721 ++++++++ src/kalgebra.h | 130 ++ src/kalgebra.xml | 174 ++ src/main.cpp | 47 + src/org.kde.kalgebra.appdata.xml | 137 ++ src/org.kde.kalgebra.desktop | 174 ++ src/varedit.cpp | 132 ++ src/varedit.h | 73 + src/variablesdelegate.cpp | 41 + src/variablesdelegate.h | 32 + src/viewportwidget.cpp | 76 + src/viewportwidget.h | 49 + utils/CMakeLists.txt | 2 + utils/main.cpp | 59 + 252 files changed, 75716 insertions(+) create mode 100644 .arcconfig create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 COPYING create mode 100644 COPYING.DOC create mode 100644 COPYING.LIB create mode 100644 Mainpage.dox create mode 100644 TODO create mode 100644 android/AndroidManifest.xml create mode 100644 android/res/drawable/icon.png create mode 100644 android/res/values/libs.xml create mode 100644 android/res/values/strings.xml create mode 100644 calgebra/CMakeLists.txt create mode 100644 calgebra/main.cpp create mode 100644 calgebra/test_calgebra.py create mode 100644 cmake/COPYING-CMAKE-SCRIPTS create mode 100644 cmake/FindReadline.cmake create mode 100644 doc/CMakeLists.txt create mode 100644 doc/commands.docbook create mode 100644 doc/index.docbook create mode 100644 doc/kalgebra-2dgraph-window.png create mode 100644 doc/kalgebra-3dgraph-window.png create mode 100644 doc/kalgebra-console-window.png create mode 100644 doc/kalgebra-dictionary-window.png create mode 100644 doc/kalgebra-main-window.png create mode 100644 doc/view-fullscreen.png create mode 100644 icons/64-apps-kalgebra.png create mode 100644 icons/CMakeLists.txt create mode 100644 icons/sc-apps-kalgebra.svgz create mode 100644 kalgebra.kdev4 create mode 100644 mobile/CMakeLists.txt create mode 100755 mobile/Messages.sh create mode 100644 mobile/clipboard.cpp create mode 100644 mobile/clipboard.h create mode 100644 mobile/header.jpg create mode 100644 mobile/header.qrc create mode 100644 mobile/kalgebramobile.cpp create mode 100644 mobile/kalgebramobile.h create mode 100644 mobile/main.cpp create mode 100644 mobile/org.kde.kalgebramobile.appdata.xml create mode 100644 mobile/org.kde.kalgebramobile.desktop create mode 100644 mobile/plugins/About.qml create mode 100644 mobile/plugins/CMakeLists.txt create mode 100644 mobile/plugins/Console.qml create mode 100644 mobile/plugins/Dictionary.qml create mode 100644 mobile/plugins/Plot2D.qml create mode 100644 mobile/plugins/Plot3D.qml create mode 100644 mobile/plugins/Tables.qml create mode 100644 mobile/plugins/VariablesView.qml create mode 100644 mobile/plugins/kalgebraabout.json create mode 100644 mobile/plugins/kalgebraconsole.json create mode 100644 mobile/plugins/kalgebradictionary.json create mode 100644 mobile/plugins/kalgebraplot2d.json create mode 100644 mobile/plugins/kalgebraplot3d.json create mode 100644 mobile/plugins/kalgebratables.json create mode 100644 mobile/plugins/kalgebravariables.json create mode 100644 mobile/plugins/resources/kde-edu-logo.png create mode 100644 mobile/plugins/widgets/CMakeLists.txt create mode 100644 mobile/plugins/widgets/kde/AddButton.qml create mode 100644 mobile/plugins/widgets/kde/CMakeLists.txt create mode 100644 mobile/plugins/widgets/kde/KAlgebraMobile.qml create mode 100644 mobile/plugins/widgets/kde/KAlgebraPage.qml create mode 100644 mobile/plugins/widgets/qmldir create mode 100644 mobile/plugins/widgets/qtcontrols/ExpressionInput.qml create mode 100644 mobile/plugins/widgets/qtcontrols/RealInput.qml create mode 100644 mobile/pluginsmodel.cpp create mode 100644 mobile/pluginsmodel.h create mode 100644 mobile/resources.qrc create mode 100644 plasmoids/CMakeLists.txt create mode 100644 plasmoids/calculator/CMakeLists.txt create mode 100644 plasmoids/calculator/Messages.sh create mode 100644 plasmoids/calculator/kalgebraplasma.cpp create mode 100644 plasmoids/calculator/kalgebraplasma.h create mode 100644 plasmoids/calculator/kalgebraplasmoid.desktop create mode 100644 plasmoids/graphsplasmoid/contents/ui/config.ui create mode 100644 plasmoids/graphsplasmoid/contents/ui/main.qml create mode 100644 plasmoids/graphsplasmoid/metadata.desktop create mode 100644 po/ar/kalgebra.po create mode 100644 po/bg/kalgebra.po create mode 100644 po/bg/plasma_applet_kalgebraplasmoid.po create mode 100644 po/bs/kalgebra.po create mode 100644 po/bs/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ca/docs/kalgebra/commands.docbook create mode 100644 po/ca/docs/kalgebra/index.docbook create mode 100644 po/ca/docs/kalgebra/kalgebra-2dgraph-window.png create mode 100644 po/ca/docs/kalgebra/kalgebra-3dgraph-window.png create mode 100644 po/ca/docs/kalgebra/kalgebra-console-window.png create mode 100644 po/ca/docs/kalgebra/kalgebra-dictionary-window.png create mode 100644 po/ca/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/ca/docs/kalgebra/view-fullscreen.png create mode 100644 po/ca/kalgebra.po create mode 100644 po/ca/kalgebramobile.po create mode 100644 po/ca/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ca@valencia/kalgebra.po create mode 100644 po/ca@valencia/kalgebramobile.po create mode 100644 po/ca@valencia/plasma_applet_kalgebraplasmoid.po create mode 100644 po/cs/kalgebra.po create mode 100644 po/cs/kalgebramobile.po create mode 100644 po/cs/plasma_applet_kalgebraplasmoid.po create mode 100644 po/da/kalgebra.po create mode 100644 po/da/plasma_applet_kalgebraplasmoid.po create mode 100644 po/de/docs/kalgebra/commands.docbook create mode 100644 po/de/docs/kalgebra/index.docbook create mode 100644 po/de/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/de/kalgebra.po create mode 100644 po/de/kalgebramobile.po create mode 100644 po/de/plasma_applet_kalgebraplasmoid.po create mode 100644 po/el/kalgebra.po create mode 100644 po/el/plasma_applet_kalgebraplasmoid.po create mode 100644 po/en_GB/kalgebra.po create mode 100644 po/en_GB/kalgebramobile.po create mode 100644 po/en_GB/plasma_applet_kalgebraplasmoid.po create mode 100644 po/eo/kalgebra.po create mode 100644 po/eo/plasma_applet_kalgebraplasmoid.po create mode 100644 po/es/docs/kalgebra/commands.docbook create mode 100644 po/es/docs/kalgebra/index.docbook create mode 100644 po/es/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/es/kalgebra.po create mode 100644 po/es/kalgebramobile.po create mode 100644 po/es/plasma_applet_kalgebraplasmoid.po create mode 100644 po/et/docs/kalgebra/commands.docbook create mode 100644 po/et/docs/kalgebra/index.docbook create mode 100644 po/et/kalgebra.po create mode 100644 po/et/plasma_applet_kalgebraplasmoid.po create mode 100644 po/eu/kalgebra.po create mode 100644 po/fi/kalgebra.po create mode 100644 po/fi/kalgebramobile.po create mode 100644 po/fi/plasma_applet_kalgebraplasmoid.po create mode 100644 po/fr/kalgebra.po create mode 100644 po/fr/kalgebramobile.po create mode 100644 po/fr/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ga/kalgebra.po create mode 100644 po/ga/plasma_applet_kalgebraplasmoid.po create mode 100644 po/gl/kalgebra.po create mode 100644 po/gl/kalgebramobile.po create mode 100644 po/gl/plasma_applet_kalgebraplasmoid.po create mode 100644 po/hi/kalgebra.po create mode 100644 po/hr/kalgebra.po create mode 100644 po/hu/kalgebra.po create mode 100644 po/hu/plasma_applet_kalgebraplasmoid.po create mode 100644 po/it/docs/kalgebra/commands.docbook create mode 100644 po/it/docs/kalgebra/index.docbook create mode 100644 po/it/kalgebra.po create mode 100644 po/it/kalgebramobile.po create mode 100644 po/it/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ja/kalgebra.po create mode 100644 po/ja/kalgebramobile.po create mode 100644 po/ja/plasma_applet_kalgebraplasmoid.po create mode 100644 po/kk/kalgebra.po create mode 100644 po/kk/plasma_applet_kalgebraplasmoid.po create mode 100644 po/km/kalgebra.po create mode 100644 po/ko/kalgebra.po create mode 100644 po/ko/plasma_applet_kalgebraplasmoid.po create mode 100644 po/lt/kalgebra.po create mode 100644 po/lt/kalgebramobile.po create mode 100644 po/lt/plasma_applet_kalgebraplasmoid.po create mode 100644 po/lv/kalgebra.po create mode 100644 po/lv/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ml/kalgebra.po create mode 100644 po/ml/kalgebramobile.po create mode 100644 po/ml/plasma_applet_kalgebraplasmoid.po create mode 100644 po/mr/kalgebra.po create mode 100644 po/mr/plasma_applet_kalgebraplasmoid.po create mode 100644 po/nb/kalgebra.po create mode 100644 po/nb/plasma_applet_kalgebraplasmoid.po create mode 100644 po/nds/kalgebra.po create mode 100644 po/nds/plasma_applet_kalgebraplasmoid.po create mode 100644 po/nl/docs/kalgebra/commands.docbook create mode 100644 po/nl/docs/kalgebra/index.docbook create mode 100644 po/nl/kalgebra.po create mode 100644 po/nl/kalgebramobile.po create mode 100644 po/nl/plasma_applet_kalgebraplasmoid.po create mode 100644 po/nn/kalgebra.po create mode 100644 po/nn/kalgebramobile.po create mode 100644 po/nn/plasma_applet_kalgebraplasmoid.po create mode 100644 po/pa/kalgebra.po create mode 100644 po/pa/plasma_applet_kalgebraplasmoid.po create mode 100644 po/pl/kalgebra.po create mode 100644 po/pl/kalgebramobile.po create mode 100644 po/pl/plasma_applet_kalgebraplasmoid.po create mode 100644 po/pt/docs/kalgebra/commands.docbook create mode 100644 po/pt/docs/kalgebra/index.docbook create mode 100644 po/pt/kalgebra.po create mode 100644 po/pt/kalgebramobile.po create mode 100644 po/pt/plasma_applet_kalgebraplasmoid.po create mode 100644 po/pt_BR/docs/kalgebra/commands.docbook create mode 100644 po/pt_BR/docs/kalgebra/index.docbook create mode 100644 po/pt_BR/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/pt_BR/kalgebra.po create mode 100644 po/pt_BR/kalgebramobile.po create mode 100644 po/pt_BR/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ro/kalgebra.po create mode 100644 po/ru/docs/kalgebra/commands.docbook create mode 100644 po/ru/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/ru/kalgebra.po create mode 100644 po/ru/kalgebramobile.po create mode 100644 po/ru/plasma_applet_kalgebraplasmoid.po create mode 100644 po/sk/kalgebra.po create mode 100644 po/sk/kalgebramobile.po create mode 100644 po/sk/plasma_applet_kalgebraplasmoid.po create mode 100644 po/sl/kalgebra.po create mode 100644 po/sl/plasma_applet_kalgebraplasmoid.po create mode 100644 po/sv/docs/kalgebra/commands.docbook create mode 100644 po/sv/docs/kalgebra/index.docbook create mode 100644 po/sv/kalgebra.po create mode 100644 po/sv/kalgebramobile.po create mode 100644 po/sv/plasma_applet_kalgebraplasmoid.po create mode 100644 po/tr/kalgebra.po create mode 100644 po/tr/plasma_applet_kalgebraplasmoid.po create mode 100644 po/ug/kalgebra.po create mode 100644 po/ug/plasma_applet_kalgebraplasmoid.po create mode 100644 po/uk/docs/kalgebra/commands.docbook create mode 100644 po/uk/docs/kalgebra/index.docbook create mode 100644 po/uk/docs/kalgebra/kalgebra-2dgraph-window.png create mode 100644 po/uk/docs/kalgebra/kalgebra-3dgraph-window.png create mode 100644 po/uk/docs/kalgebra/kalgebra-console-window.png create mode 100644 po/uk/docs/kalgebra/kalgebra-dictionary-window.png create mode 100644 po/uk/docs/kalgebra/kalgebra-main-window.png create mode 100644 po/uk/kalgebra.po create mode 100644 po/uk/kalgebramobile.po create mode 100644 po/uk/plasma_applet_kalgebraplasmoid.po create mode 100644 po/zh_CN/kalgebra.po create mode 100644 po/zh_CN/kalgebramobile.po create mode 100644 po/zh_CN/plasma_applet_kalgebraplasmoid.po create mode 100644 po/zh_TW/kalgebra.po create mode 100644 po/zh_TW/kalgebramobile.po create mode 100644 po/zh_TW/plasma_applet_kalgebraplasmoid.po create mode 100644 src/CMakeLists.txt create mode 100755 src/Messages.sh create mode 100644 src/askname.h create mode 100644 src/consolehtml.cpp create mode 100644 src/consolehtml.h create mode 100644 src/consolemodel.cpp create mode 100644 src/consolemodel.h create mode 100644 src/dictionary.cpp create mode 100644 src/dictionary.h create mode 100644 src/functionedit.cpp create mode 100644 src/functionedit.h create mode 100644 src/kalgebra.cpp create mode 100644 src/kalgebra.h create mode 100644 src/kalgebra.xml create mode 100644 src/main.cpp create mode 100644 src/org.kde.kalgebra.appdata.xml create mode 100755 src/org.kde.kalgebra.desktop create mode 100644 src/varedit.cpp create mode 100644 src/varedit.h create mode 100644 src/variablesdelegate.cpp create mode 100644 src/variablesdelegate.h create mode 100644 src/viewportwidget.cpp create mode 100644 src/viewportwidget.h create mode 100644 utils/CMakeLists.txt create mode 100644 utils/main.cpp diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..377c7ec --- /dev/null +++ b/.arcconfig @@ -0,0 +1,3 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d58ded --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Ignore the following files +*~ +*.[oa] +*.diff +*.kate-swp +*.kdev4 +.kdev_include_paths +*.kdevelop.pcs +*.moc +*.moc.cpp +*.orig +*.user +.*.swp +.swp.* +Doxyfile +Makefile +avail +random_seed +/build*/ +CMakeLists.txt.user* +*.unc-backup* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..56ba715 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,83 @@ +cmake_minimum_required(VERSION 3.5) + +# KDE Application Version, managed by release script +set(KDE_APPLICATIONS_VERSION_MAJOR "19") +set(KDE_APPLICATIONS_VERSION_MINOR "12") +set(KDE_APPLICATIONS_VERSION_MICRO "1") +set(KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") + +project(kalgebra VERSION ${KDE_APPLICATIONS_VERSION}) + +find_package(ECM 1.7.0 REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH}) + +find_package(Qt5 5.2 REQUIRED NO_MODULE COMPONENTS Qml Quick Xml Svg PrintSupport Test) +include(KDEInstallDirs) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(KDECMakeSettings) +include(ECMInstallIcons) +include(ECMSetupVersion) +include(FeatureSummary) +include(ECMAddAppIcon) + +find_package(Analitza5 REQUIRED) + +set(MOBILE_BACKEND "kde" CACHE STRING "Backend to install, currently. Check /mobile/plugins/widgets/*") + +include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}) + +set(CURSES_NEED_NCURSES TRUE) +find_package(Curses) +find_package(Readline) + +ecm_setup_version(${KDE_APPLICATIONS_VERSION} VARIABLE_PREFIX KALGEBRA VERSION_HEADER kalgebra_version.h) + +set_package_properties(Readline PROPERTIES TYPE OPTIONAL + PURPOSE "Allows KAlgebra to provide a console interface." + URL "http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html") +set_package_properties(Curses PROPERTIES TYPE OPTIONAL + PURPOSE "Allows KAlgebra to provide a console interface." + URL "http://www.gnu.org/software/ncurses/") + +add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) +add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +add_definitions(-DQT_NO_CAST_TO_ASCII) + +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS I18n CoreAddons) +find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS ConfigWidgets WidgetsAddons KIO DocTools) +find_package(Qt5WebEngineWidgets) +if (EXISTS "${CMAKE_SOURCE_DIR}/.git") + add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) + add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x060000) +endif() + +if(KF5DocTools_FOUND AND Qt5WebEngineWidgets_FOUND AND KF5ConfigWidgets_FOUND AND KF5WidgetsAddons_FOUND AND KF5KIO_FOUND AND NOT CMAKE_SYSTEM MATCHES Android*) + add_subdirectory(src) + add_subdirectory(plasmoids) +endif() + +add_subdirectory(icons) +add_subdirectory(mobile) + +if(READLINE_FOUND AND CURSES_FOUND) + add_subdirectory(calgebra) +endif() + +if(KF5DocTools_FOUND) + add_subdirectory(utils) + + add_custom_target(commandsdoc + ${CMAKE_CURRENT_BINARY_DIR}/utils/docbook_analitzacommands commands.docbook + DEPENDS docbook_analitzacommands + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/doc/ + COMMENT "Generating commands docbook information" + ) + + add_subdirectory(doc) +endif() + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) +ki18n_install(po) +if (KF5DocTools_FOUND) + kdoctools_install(po) +endif() diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + 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. + + GNU GENERAL PUBLIC LICENSE + 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. + + + 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 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. + + , 1 April 1989 + Ty Coon, President of Vice + +This 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. diff --git a/COPYING.DOC b/COPYING.DOC new file mode 100644 index 0000000..71ec2c4 --- /dev/null +++ b/COPYING.DOC @@ -0,0 +1,397 @@ + GNU Free Documentation License + Version 1.2, November 2002 + + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, 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. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document 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. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +https://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..5bc8fb2 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,481 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, 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 library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, 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 companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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 Library or any portion +of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. 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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; 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. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/Mainpage.dox b/Mainpage.dox new file mode 100644 index 0000000..0322cd8 --- /dev/null +++ b/Mainpage.dox @@ -0,0 +1,5 @@ +/** @mainpage KAlgebra + +Here you will find the API documentation both for KAlgebra's Analitza library and KAlgebra code. + +*/ diff --git a/TODO b/TODO new file mode 100644 index 0000000..1fa5c2c --- /dev/null +++ b/TODO @@ -0,0 +1,17 @@ + +Analitza: +- Partial derivatives +- Simplification for x^3*3/x-> 3*x^2 + +Expression: +- Copy on write for m_tree + +2D: +- Shared functions Console <-> 2D +- Sort 2D functions +- Moving on small viewport step is too large. +- Review keyBindings for zooming out. + +Doc: +- Document about piecewise +- Document about anything else diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100644 index 0000000..0d0602d --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/res/drawable/icon.png b/android/res/drawable/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3c63ebace1df58abd88fcc946f364535713534 GIT binary patch literal 1734 zcmV;%208hOP)UO`O_!)M*pjGxxB#Gvh~`%(XpsEaAU2 zvVAji=G=SF|GZ`bV~jDz82@9axDy_K_W9FcC^9HK{qD)*%l@8@6ClE;#`uUa$!RqN zD6P>t6?uHTUl_riz5rHNNrnQ5 z6?Ew5dGcE=8a5S;S1OQc8XFZH`guF~M0^0&3i4EWbf@7}{gR<}RAKT?yr&&D_NiLm z<#4XE6P!?W?#?zC<5z`hwnlDt^xVjVsyjPDCkj|TnHGVOZy3QSAYzC@K@8%ZU=kW# z5fY?8m9vKdm6({M>|d`N7QRoSA8$V+>OPquZaRcl2M==GVJee za#$`ppMM!X_~?@!u9D=UK$Hicb1I$227sRAyX)rU1EReD{4F}JaweOLzE95-m|wgV zt4K47yPLc{IgakrH3IWbrWoo$iKUghl=pY=yc#E!BW|zXCwpzu`TAP5N;Z3~%e%J1 zRc|*6NDx~)RD+$&ER{;JytcvCi@y*t>}>wa`n~s@m0w(51J)Y%=@M2~w`-k>Awe+G zYWAV%_ObA|v9LleKMlaqVUgFz2N#~3^kH>%qkvN$8wra1LHwbB)!X+X8QYuxAja=X zM$bpH&iyVxqpFgwcOpMM%WUB$0B5IfD7|_)6blGAn~Vj7SzxcxZe{J=s5!Z}{T$D$ z_a>+dG>jo33UrVhSw);VW-?h87Og|`ygJ357ek?dE1aDmB5h_C{N3TWxpIe0CJR7m ze}~i4lfhCT&^a**gp=~1~lLs~qdMMyLXgn2;AfwNi86&A_mX8?G8 zd_d)>G(Z}(_AV}ib4Tbh(|21$gE4;eTj_LPR(0vUaCd@EPlj5gM!%b!paaVL+nk-g z0bs7MNPcRjYlr2GF2p)J!G3i0y*kC0oA!n}#p3FE@4_5lEjFoQC~|_PXA11?yukPE zv&Dtw+e~D#12ccCn{jr6?i7GF3UHnl9dLGf!a;c#fJ`RK{KD$sOuq*>QNV4-8xO5CC{6ndZX$+*QW4*)1sm@cxt!k*kalx#E{28x z0kqO6Z71Kn`(g|ST%UKpAO@4U>0n~v7pDV-)?ZrOPST47DVtx$7LggWK{T~vd8K?J4SIByK)(r#ntvGcdP z?+2>I>*n-+!02S|7Uw3f6iNr53KR;1TNlfX0>%UlA!!;8yTyZF9--m$!^wN~S~O-^ zVa;BNwnk~(tkb*Pmw@d`G!iX>ASe)nawv)%DR8yB|K{Y#Y3FU4U^yTdTNK5> ztsIuCjRo1v1R}!OX*G88HXvH3?V__|ISjOQSQ`1ka26(;nE-@Z)gv^1p<(t-aRLme zu!f02?7z%Bc=$-XdJW_Iai%TGI4l(# z{eTgH)*6jQ!jKnH)Gmp&TIKZIE1m+rzulL%1AuP~Mroyjkk_bugM=kq7;khoZHzI- c7-J;yA25tVlylgUTmS$707*qoM6N<$f + + + https://download.qt-project.org/ministro/android/qt5/latest + + + + + + + + + + + + + + + + + + + + diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml new file mode 100644 index 0000000..b0d9f30 --- /dev/null +++ b/android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + KAlgebra + diff --git a/calgebra/CMakeLists.txt b/calgebra/CMakeLists.txt new file mode 100644 index 0000000..29bb7f8 --- /dev/null +++ b/calgebra/CMakeLists.txt @@ -0,0 +1,19 @@ +include(CheckFunctionExists) +include(CMakePushCheckState) + +include_directories(${READLINE_INCLUDE_DIR} ${CURSES_INCLUDE_DIR}) + +# check if we have recent version of Readline +cmake_push_check_state(RESET) +set(CMAKE_REQUIRED_LIBRARIES ${READLINE_LIBRARY} ${CURSES_LIBRARIES}) +check_function_exists(free_history_entry HAVE_FREE_HISTORY_ENTRY) +cmake_pop_check_state() +if(HAVE_FREE_HISTORY_ENTRY) + add_definitions(-DHAVE_FREE_HISTORY_ENTRY) +endif() + +add_executable(calgebra main.cpp) +target_link_libraries(calgebra Qt5::Core ${READLINE_LIBRARY} KF5::Analitza) + +install(TARGETS calgebra ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) + diff --git a/calgebra/main.cpp b/calgebra/main.cpp new file mode 100644 index 0000000..86e1d55 --- /dev/null +++ b/calgebra/main.cpp @@ -0,0 +1,158 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include +#include + +#include +#include +#include +#include + +using namespace std; + +using Analitza::Expression; + +Analitza::Analyzer a; + +enum CalcType { Evaluate, Calculate }; + +static const char* prompt=">>> "; +static const char* insidePrompt="... "; + +struct Config { + CalcType calcType; + bool showElapsedType; +}; +static Config configuration; + +void calculate(const Expression& e, CalcType t) +{ + Expression ans; + a.setExpression(e); + if(e.isCorrect()) { + QElapsedTimer time; + if(configuration.showElapsedType) time.start(); + + if(t==Calculate) + ans=a.calculate(); + else + ans=a.evaluate(); + + if(configuration.showElapsedType) qDebug() << "Ellapsed time: " << time.elapsed(); + } + + if(a.isCorrect()) { + qDebug() << qPrintable(ans.toString()); + a.insertVariable(QStringLiteral("ans"), ans); + } else { + QStringList errors = a.errors(); + qDebug() << "Error:"; + foreach(const QString &err, errors) + qDebug() << " -" << qPrintable(err); + } +} + +int main(int argc, char *argv[]) +{ + configuration.calcType=Evaluate; + configuration.showElapsedType=false; + bool hasImports = false; + + for(int i=1; ilength; i++) { + HIST_ENTRY *he = remove_history(i); +#ifdef HAVE_FREE_HISTORY_ENTRY + free_history_entry(he); +#else + free((void*)he->line); + free(he); +#endif + } + qDebug("\nExit."); + return 0; +} diff --git a/calgebra/test_calgebra.py b/calgebra/test_calgebra.py new file mode 100644 index 0000000..1506785 --- /dev/null +++ b/calgebra/test_calgebra.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +import subprocess + +input="fib:=n->piecewise { eq(n,0)?0, eq(n,1)?1, ?fib(n-1)+fib(n-2) }\n" + +i=15 +for a in range(i,29): + input += "fib(%d)\n" % (a) +p = subprocess.Popen(["calgebra", "--calculate", "--print-time"], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + +output=p.communicate(input) +for line in output[1].split('\n'): + theLine = line.split('time:') + if len(theLine)>1: + #print str(i)+", "+theLine[1] + print theLine[1] + i+=1 + 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/FindReadline.cmake b/cmake/FindReadline.cmake new file mode 100644 index 0000000..844f0a1 --- /dev/null +++ b/cmake/FindReadline.cmake @@ -0,0 +1,12 @@ +# GNU Readline library finder +if(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) + set(READLINE_FOUND TRUE) +else(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) + FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) + + FIND_LIBRARY(READLINE_LIBRARY NAMES readline) + include(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY ) + + MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY) +endif(READLINE_INCLUDE_DIR AND READLINE_LIBRARY) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..67e1bd7 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,4 @@ +########### install files ############### +# + +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kalgebra) diff --git a/doc/commands.docbook b/doc/commands.docbook new file mode 100644 index 0000000..4e05137 --- /dev/null +++ b/doc/commands.docbook @@ -0,0 +1,429 @@ + +Commands supported by KAlgebra + plus + Name: plus + Description: Addition + Parameters: plus(... parameters, ...) + Example: x->x+2 + + times + Name: times + Description: Multiplication + Parameters: times(... parameters, ...) + Example: x->x*2 + + minus + Name: minus + Description: Subtraction. Will remove all values from the first one. + Parameters: minus(... parameters, ...) + Example: x->x-2 + + divide + Name: divide + Description: Division + Parameters: divide(par1, par2) + Example: x->x/2 + + quotient + Name: quotient + Description: Quotient + Parameters: quotient(par1, par2) + Example: x->quotient(x, 2) + + power + Name: power + Description: Power + Parameters: power(par1, par2) + Example: x->x^2 + + root + Name: root + Description: Root + Parameters: root(par1, par2) + Example: x->root(x, 2) + + factorial + Name: factorial + Description: Factorial. factorial(n)=n! + Parameters: factorial(par1) + Example: x->factorial(x) + + and + Name: and + Description: Boolean and + Parameters: and(... parameters, ...) + Example: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Name: or + Description: Boolean or + Parameters: or(... parameters, ...) + Example: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Name: xor + Description: Boolean xor + Parameters: xor(... parameters, ...) + Example: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Name: not + Description: Boolean not + Parameters: not(par1) + Example: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Name: gcd + Description: Greatest common divisor + Parameters: gcd(... parameters, ...) + Example: x->gcd(x, 3) + + lcm + Name: lcm + Description: Least common multiple + Parameters: lcm(... parameters, ...) + Example: x->lcm(x, 4) + + rem + Name: rem + Description: Remainder + Parameters: rem(par1, par2) + Example: x->rem(x, 5) + + factorof + Name: factorof + Description: The factor of + Parameters: factorof(par1, par2) + Example: x->factorof(x, 3) + + max + Name: max + Description: Maximum + Parameters: max(... parameters, ...) + Example: x->max(x, 4) + + min + Name: min + Description: Minimum + Parameters: min(... parameters, ...) + Example: x->min(x, 4) + + lt + Name: lt + Description: Less than. lt(a,b)=a<b + Parameters: lt(par1, par2) + Example: x->piecewise { x<4 ? 1, ? 0 } + + gt + Name: gt + Description: Greater than. gt(a,b)=a>b + Parameters: gt(par1, par2) + Example: x->piecewise { x>4 ? 1, ? 0 } + + eq + Name: eq + Description: Equal. eq(a,b) = a=b + Parameters: eq(par1, par2) + Example: x->piecewise { x=4 ? 1, ? 0 } + + neq + Name: neq + Description: Not equal. neq(a,b)=a≠b + Parameters: neq(par1, par2) + Example: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Name: leq + Description: Less or equal. leq(a,b)=a≤b + Parameters: leq(par1, par2) + Example: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Name: geq + Description: Greater or equal. geq(a,b)=a≥b + Parameters: geq(par1, par2) + Example: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Name: implies + Description: Boolean implication + Parameters: implies(par1, par2) + Example: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Name: approx + Description: Approximation. approx(a)=a±n + Parameters: approx(par1, par2) + Example: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Name: abs + Description: Absolute value. abs(n)=|n| + Parameters: abs(par1) + Example: x->abs(x) + + floor + Name: floor + Description: Floor value. floor(n)=⌊n⌋ + Parameters: floor(par1) + Example: x->floor(x) + + ceiling + Name: ceiling + Description: Ceil value. ceil(n)=⌈n⌉ + Parameters: ceiling(par1) + Example: x->ceiling(x) + + sin + Name: sin + Description: Function to calculate the sine of a given angle + Parameters: sin(par1) + Example: x->sin(x) + + cos + Name: cos + Description: Function to calculate the cosine of a given angle + Parameters: cos(par1) + Example: x->cos(x) + + tan + Name: tan + Description: Function to calculate the tangent of a given angle + Parameters: tan(par1) + Example: x->tan(x) + + sec + Name: sec + Description: Secant + Parameters: sec(par1) + Example: x->sec(x) + + csc + Name: csc + Description: Cosecant + Parameters: csc(par1) + Example: x->csc(x) + + cot + Name: cot + Description: Cotangent + Parameters: cot(par1) + Example: x->cot(x) + + sinh + Name: sinh + Description: Hyperbolic sine + Parameters: sinh(par1) + Example: x->sinh(x) + + cosh + Name: cosh + Description: Hyperbolic cosine + Parameters: cosh(par1) + Example: x->cosh(x) + + tanh + Name: tanh + Description: Hyperbolic tangent + Parameters: tanh(par1) + Example: x->tanh(x) + + sech + Name: sech + Description: Hyperbolic secant + Parameters: sech(par1) + Example: x->sech(x) + + csch + Name: csch + Description: Hyperbolic cosecant + Parameters: csch(par1) + Example: x->csch(x) + + coth + Name: coth + Description: Hyperbolic cotangent + Parameters: coth(par1) + Example: x->coth(x) + + arcsin + Name: arcsin + Description: Arc sine + Parameters: arcsin(par1) + Example: x->arcsin(x) + + arccos + Name: arccos + Description: Arc cosine + Parameters: arccos(par1) + Example: x->arccos(x) + + arctan + Name: arctan + Description: Arc tangent + Parameters: arctan(par1) + Example: x->arctan(x) + + arccot + Name: arccot + Description: Arc cotangent + Parameters: arccot(par1) + Example: x->arccot(x) + + arccosh + Name: arccosh + Description: Hyperbolic arc cosine + Parameters: arccosh(par1) + Example: x->arccosh(x) + + arccsc + Name: arccsc + Description: Arc cosecant + Parameters: arccsc(par1) + Example: x->arccsc(x) + + arccsch + Name: arccsch + Description: Hyperbolic arc cosecant + Parameters: arccsch(par1) + Example: x->arccsch(x) + + arcsec + Name: arcsec + Description: Arc secant + Parameters: arcsec(par1) + Example: x->arcsec(x) + + arcsech + Name: arcsech + Description: Hyperbolic arc secant + Parameters: arcsech(par1) + Example: x->arcsech(x) + + arcsinh + Name: arcsinh + Description: Hyperbolic arc sine + Parameters: arcsinh(par1) + Example: x->arcsinh(x) + + arctanh + Name: arctanh + Description: Hyperbolic arc tangent + Parameters: arctanh(par1) + Example: x->arctanh(x) + + exp + Name: exp + Description: Exponent (e^x) + Parameters: exp(par1) + Example: x->exp(x) + + ln + Name: ln + Description: Base-e logarithm + Parameters: ln(par1) + Example: x->ln(x) + + log + Name: log + Description: Base-10 logarithm + Parameters: log(par1) + Example: x->log(x) + + conjugate + Name: conjugate + Description: Conjugate + Parameters: conjugate(par1) + Example: x->conjugate(x*i) + + arg + Name: arg + Description: Arg + Parameters: arg(par1) + Example: x->arg(x*i) + + real + Name: real + Description: Real + Parameters: real(par1) + Example: x->real(x*i) + + imaginary + Name: imaginary + Description: Imaginary + Parameters: imaginary(par1) + Example: x->imaginary(x*i) + + sum + Name: sum + Description: Summatory + Parameters: sum(par1 : var=from..to) + Example: x->x*sum(t*t:t=0..3) + + product + Name: product + Description: Productory + Parameters: product(par1 : var=from..to) + Example: x->product(t+t:t=1..3) + + diff + Name: diff + Description: Differentiation + Parameters: diff(par1 : var) + Example: x->(diff(x^2:x))(x) + + card + Name: card + Description: Cardinal + Parameters: card(par1) + Example: x->card(vector { x, 1, 2 }) + + scalarproduct + Name: scalarproduct + Description: Scalar product + Parameters: scalarproduct(... parameters, ...) + Example: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Name: selector + Description: Select the par1-th element of par2 list or vector + Parameters: selector(par1, par2) + Example: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Name: union + Description: Joins several items of the same type + Parameters: union(... parameters, ...) + Example: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Name: forall + Description: For all + Parameters: forall(par1 : var) + Example: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Name: exists + Description: Exists + Parameters: exists(par1 : var) + Example: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Name: map + Description: Applies a function to every element in a list + Parameters: map(par1, par2) + Example: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Name: filter + Description: Removes all elements that don't fit a condition + Parameters: filter(par1, par2) + Example: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Name: transpose + Description: Transpose + Parameters: transpose(par1) + Example: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/doc/index.docbook b/doc/index.docbook new file mode 100644 index 0000000..daa8418 --- /dev/null +++ b/doc/index.docbook @@ -0,0 +1,508 @@ + + + + + + +]> + + + + +The &kalgebra; Handbook + + + +Aleix +Pol + +
&Aleix.Pol.mail;
+
+
+ +
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Applications 16.04) + + + +&kalgebra; is an application that can replace your graphing calculator. +It has numerical, logical, symbolic, and analysis features that let you calculate +mathematical expressions on the calculator and graphically plot the results +in 2D or 3D. &kalgebra; is rooted in the Mathematical Markup Language +(MathML); however, one does not need to know MathML to use &kalgebra;. + + + + +KDE +kdeedu +graph +mathematics +2D +3D +mathML + + +
+ + +Introduction + + +&kalgebra; has numerous features that allow the user to perform all sorts +of mathematical operations and show graphically. At one time, this +program was MathML oriented. Now it can be used by anyone with a little +mathematical knowledge to solve simple and advanced problems alike. + + + +It includes such features as: + + + + + +A calculator for quick and easy evaluation of math +functions. + + +Scripting capability for advanced series of calculations + + +Language capabilities including function definition and syntax autocompletion. + + +Calculus functions including symbolic differentiation, vector calculus, +and list manipulation. + + +Function plotting with live cursor for graphical root finding and other +types of analysis. + + +3D plotting for useful visualization of 3D functions. + + +A built-in operator dictionary for quick reference to the many available +functions. + + + + +Below is a screenshot of the &kalgebra; application in action: + + + +Here's a screenshot of &kalgebra; main window + + + + + + &kalgebra; main window + + + + + +When the user begins a &kalgebra; session, they are presented with a +single window consisting of a Calculator tab, +a 2D Graph tab, +a 3D Graph tab and a +Dictionary tab. Within each tab, you will find an +input field to enter your functions or calculations, and a display field +which shows the results. + + +At any time the user may manage their session with the main menu +Session options: + + + + + +&Ctrl; +N +SessionNew + +Opens a new &kalgebra; window. + + + + +&Ctrl;&Shift; +F +SessionFull Screen Mode + +Toogle full screen mode for &kalgebra; window. The full +screen mode can also be switched on and off using + + button at the top right part of +&kalgebra; window. + + + + +&Ctrl; +Q +SessionQuit + +Shuts the program down. + + + + + + + +Syntax + +&kalgebra; uses an intuitive algebraic syntax for entering user functions, +similar to that used on most modern graphing calculators. This section +lists the fundamental built-in operators available in &kalgebra;. The +author of &kalgebra; modeled this syntax after +Maxima and + maple for users +that may be familiar with these programs. + + + +For users that are interested in the inner workings of &kalgebra;, user +entered expressions are converted to MathML on the backend. A rudimentary +understanding of the capabilities supported by MathML will go a long way +toward revealing the inner capabilities of &kalgebra;. + + +Here is a list of the available operators we have by now: + ++ - * / : Addition, subtraction, multiplication and +division. +^, **: Power, you can use them both. Also it is possible to use +the unicode ² characters. Powers are one way to make roots too, you can do it +like: a**(1/b) +-> : lambda. It is the way to specify one or more free +variables that will be bound in a function. For example, in the expression, +length:=(x,y)->(x*x+y*y)^0.5, the lambda operator is used to denote +that x and y will be bound when the length function is used. + +x=a..b : This is used when we need to delimit a range +(bounded variable+uplimit+downlimit). This means that x goes from a to b. +() : It is used to specify a higher priority. +abc(params) : Functions. When the parser finds a function, it checks +if abc is an operator. If it is, it will be treated as an operator, if it is +not, it will be treated as a user function. +:= : Definition. It is used to define a variable value. You can +do things like x:=3, x:=y being y defined or not or perimeter:=r->2*pi*r. + +? : Piecewise condition definition. Piecewise is the way we can define +conditional operations in &kalgebra;. Put another way, this is a way of +specifying an if, elseif, else condition. If we introduce the condition before the '?' it will +use this condition only if it is true, if it finds a '?' without any condition, it will +enter in the last instance. +Example: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } + +{ } : MathML container. It can be used to define a container. Mainly +useful for working with piecewise. + += > >= < <= : Value comparators for equal, +greater, greater or equal, less and less or equal respectively + + +Now you could ask me, why should the user mind about MathML? That’s easy. +With this, we can operate with functions like cos(), sin(), any other +trigonometrical functions, sum() or product(). It does not matter what kind it is. +We can use plus(), times() and everything which has its operator. Boolean +functions are implemented as well, so we can do something like or(1,0,0,0,0). + + + + +Using the Calculator +&kalgebra;'s calculator is useful as a calculator on steroids. The +user may enter expressions for evaluation in Calculate +or Evaluate mode, depending on the Calculator +menu selection. + + +In evaluation mode &kalgebra; simplifies the expression even if it sees an undefined variable. +When in calculation mode &kalgebra;, calculates everything and if it finds an undefined +variable shows an error. + + +In addition to displaying the user entered equations and results in the +Calculator display, all variables that are declared are displayed in a +persistent frame to the right. By double clicking on a variable you will see a +dialog that lets you change their values (just a way to trick the log). + + + +The "ans" variable is special, every time you enter an expression, the +"ans" variable value will be changed to the last result. + + +The following are example functions that can be entered in +the input field of the calculator window: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + + +The following shows a screenshot of the calculator window after entering +the above example expressions: + + +Screenshot of &kalgebra; calculator window with example expressions + + + + + + &kalgebra; calculator window + + + + + +A user can control the execution of a series of calculations +using the Calculator menu options: + + + + + +&Ctrl; +L +CalculatorLoad Script + +Executes the instructions in a file sequentially. +Useful if you want to define some libraries or resume some previous work. + + + + +&Ctrl; +G +CalculatorSave Script + +Saves the instructions you have typed since the session began to be able to reuse. Generates text files so it should be easy to fix +using any text editor, like Kate. + + + + +&Ctrl; +S +CalculatorExport Log + +Saves the log with all results into an &HTML; file to be able to print or publish. + + + + + + + +2D Graphs +To add a new 2D graph on &kalgebra;, select the 2D +Graph tab and click the Add tab to add +a new function. Your focus will go to an input text box where you can +type your function. + + +Syntax +If you want to use a typical f(x) function it is not necessary to specify +it, but if you want a f(y) or a polar function, you will have to add y-> and q-> +as the bounded variables. + +Examples: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +If you have entered the function click on the OK button to display the graph in the main window. + + + + +Features +You can set several graphs on the same view. Just use the Add button when +you are in List mode. You can set each graph its own color. + +The view can be zoomed and moved with the mouse. Using the wheel +you can zoom in and out. You can also select an area with the left button +of the mouse and this area will be zoomed in. Move the view with the arrow keys. + + + The viewport of 2D graphs can be explicitly defined using the Viewport tab on a 2D Graph tab. + + +In the List tab, you can open an Editing tab to edit or remove a function with double-click and check or uncheck the check box next to the function name to show or hide it. +In the 2D Graph menu you find these options: + +Show or hide the grid +Keep the aspect ratio while zooming +Zoom in (&Ctrl; ++) and zoom out (&Ctrl; +-) +Save (&Ctrl; +S) the graph as image file +Reset the view to the original zoom +Select a resolution for the graphs + + + + Below is a screenshot of a user who's cursor is at the rightmost root + of the function, sin(1/x). The user who graphed it used very fine + resolution to make this graph (as it oscillates at higher and higher + frequency near the origin). There is also a live cursor feature + where whenever you move your cursor over a spot, it shows you the x + and y values in the bottom left corner of the screen. A live "tangent + line" is plotted on the function at the live cursor location. + + + +Here's a screenshot of &kalgebra; 2D graph window + + + + + + &kalgebra; 2D graph window + + + + + + + + + + +3D Graphs + +To draw a 3D Graph with &kalgebra; select the 3D Graph tab +and you will see an input field at the bottom where you will type your function. +Z cannot be defined yet. For the moment &kalgebra; only supports +3D graphs explicitly dependent only on the x and y, such as (x,y)->x*y, +where z=x*y. + + +Examples: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +The view can be zoomed and moved with the mouse. Using the wheel +you can zoom in and out. Hold the &LMB; and move the mouse to rotate the graph. + + The left and right arrow keys rotate the graph around the z axis, the up and down arrow keys rotate around the horizontal axis of the view. Press W to zoom in the plot and S to zoom it out. + +In the 3D Graph menu you find these options: + + +Save (&Ctrl; +S) the graph as image file +Reset the view to the original zoom in the 3D graph menu +You can draw the graphs with dots, lines or solid styles in the 3D graph menu + + + +Below is a screenshot of the so-called "sombrero" function. This particular +graph is shown using the 3D graph line-style. + + + +Here's a screenshot of &kalgebra; 3D graph window + + + + + + &kalgebra; 3D graph window + + + + + + + +Dictionary + + + The dictionary provides a list of all &kalgebra; built in functions. It can be +used to find the definition of an operation and its input parameters. It's a useful +place to go to find the many capabilities of &kalgebra;. + + + + Below is a screenshot of the &kalgebra; dictionary lookup of the cosine function. + + + +Here's a screenshot of the &kalgebra; dictionary window + + + + + + &kalgebra; dictionary window + + + + + + + +&commands; + + +Credits and License + + +Program copyright 2005-2009 &Aleix.Pol; + + + + +Documentation copyright 2007 &Aleix.Pol; &Aleix.Pol.mail; + + + +&underFDL; +&underGPL; + + + +&documentation.index; +
+ + diff --git a/doc/kalgebra-2dgraph-window.png b/doc/kalgebra-2dgraph-window.png new file mode 100644 index 0000000000000000000000000000000000000000..2e49ea162e3e447890dc83019f2122c15351fdc6 GIT binary patch literal 41762 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 z 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

DNh|@Lv%cbwn(&INWuq`LjyyW* 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 literal 0 HcmV?d00001 diff --git a/doc/kalgebra-console-window.png b/doc/kalgebra-console-window.png new file mode 100644 index 0000000000000000000000000000000000000000..3da827731db9d2b3afc8a592eeb4d9bed36f9b87 GIT binary patch literal 48997 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 literal 0 HcmV?d00001 diff --git a/doc/kalgebra-dictionary-window.png b/doc/kalgebra-dictionary-window.png new file mode 100644 index 0000000000000000000000000000000000000000..eebbb0825cfe8c400b23e79d24b4ccea1272f047 GIT binary patch literal 60041 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%0A4p;Hz$%*AKN|j;L##UhD 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∓M~eT^r&vsVNO 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 Ly;6GVdh~w*+&Ac| literal 0 HcmV?d00001 diff --git a/doc/view-fullscreen.png b/doc/view-fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..f004b1d1ebe83b690fcf7430d69929b3e44f0be1 GIT binary patch literal 514 zcmV+d0{#7oP) zM6G~#0G@)xJ~u7A7%d6sc>NB5fE#cqjapS|)k{*5_ENi+@Xx`q03}Y=Lh@!LAM73P z%Fz=n`ZM-Zs6o}%xq)Gz8~NR<>UV%*RBaxW zr_Wz_`sDG3oCi#{q45LBW<+2THh|+gOr}#>UOoQ>)0-Py*Tu4|ybWiwpPZdv5XW&X z1{$tQr_-jUO`O_!)M*pjGxxB#Gvh~`%(XpsEaAU2 zvVAji=G=SF|GZ`bV~jDz82@9axDy_K_W9FcC^9HK{qD)*%l@8@6ClE;#`uUa$!RqN zD6P>t6?uHTUl_riz5rHNNrnQ5 z6?Ew5dGcE=8a5S;S1OQc8XFZH`guF~M0^0&3i4EWbf@7}{gR<}RAKT?yr&&D_NiLm z<#4XE6P!?W?#?zC<5z`hwnlDt^xVjVsyjPDCkj|TnHGVOZy3QSAYzC@K@8%ZU=kW# z5fY?8m9vKdm6({M>|d`N7QRoSA8$V+>OPquZaRcl2M==GVJee za#$`ppMM!X_~?@!u9D=UK$Hicb1I$227sRAyX)rU1EReD{4F}JaweOLzE95-m|wgV zt4K47yPLc{IgakrH3IWbrWoo$iKUghl=pY=yc#E!BW|zXCwpzu`TAP5N;Z3~%e%J1 zRc|*6NDx~)RD+$&ER{;JytcvCi@y*t>}>wa`n~s@m0w(51J)Y%=@M2~w`-k>Awe+G zYWAV%_ObA|v9LleKMlaqVUgFz2N#~3^kH>%qkvN$8wra1LHwbB)!X+X8QYuxAja=X zM$bpH&iyVxqpFgwcOpMM%WUB$0B5IfD7|_)6blGAn~Vj7SzxcxZe{J=s5!Z}{T$D$ z_a>+dG>jo33UrVhSw);VW-?h87Og|`ygJ357ek?dE1aDmB5h_C{N3TWxpIe0CJR7m ze}~i4lfhCT&^a**gp=~1~lLs~qdMMyLXgn2;AfwNi86&A_mX8?G8 zd_d)>G(Z}(_AV}ib4Tbh(|21$gE4;eTj_LPR(0vUaCd@EPlj5gM!%b!paaVL+nk-g z0bs7MNPcRjYlr2GF2p)J!G3i0y*kC0oA!n}#p3FE@4_5lEjFoQC~|_PXA11?yukPE zv&Dtw+e~D#12ccCn{jr6?i7GF3UHnl9dLGf!a;c#fJ`RK{KD$sOuq*>QNV4-8xO5CC{6ndZX$+*QW4*)1sm@cxt!k*kalx#E{28x z0kqO6Z71Kn`(g|ST%UKpAO@4U>0n~v7pDV-)?ZrOPST47DVtx$7LggWK{T~vd8K?J4SIByK)(r#ntvGcdP z?+2>I>*n-+!02S|7Uw3f6iNr53KR;1TNlfX0>%UlA!!;8yTyZF9--m$!^wN~S~O-^ zVa;BNwnk~(tkb*Pmw@d`G!iX>ASe)nawv)%DR8yB|K{Y#Y3FU4U^yTdTNK5> ztsIuCjRo1v1R}!OX*G88HXvH3?V__|ISjOQSQ`1ka26(;nE-@Z)gv^1p<(t-aRLme zu!f02?7z%Bc=$-XdJW_Iai%TGI4l(# z{eTgH)*6jQ!jKnH)Gmp&TIKZIE1m+rzulL%1AuP~Mroyjkk_bugM=kq7;khoZHzI- c7-J;yA25tVlylgUTmS$707*qoM6N<$f + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/kalgebra.kdev4 b/kalgebra.kdev4 new file mode 100644 index 0000000..ea6725c --- /dev/null +++ b/kalgebra.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=kalgebra diff --git a/mobile/CMakeLists.txt b/mobile/CMakeLists.txt new file mode 100644 index 0000000..d2f8537 --- /dev/null +++ b/mobile/CMakeLists.txt @@ -0,0 +1,25 @@ +add_subdirectory(plugins) + +qt5_add_resources(KALGEBRAMOBILE_SRCS resources.qrc header.qrc) +add_executable(kalgebramobile pluginsmodel.cpp + ../src/consolemodel.cpp + clipboard.cpp + kalgebramobile.cpp main.cpp ${KALGEBRAMOBILE_SRCS}) + +target_link_libraries(kalgebramobile Qt5::Qml Qt5::Quick Qt5::Gui + KF5::CoreAddons KF5::I18n KF5::Analitza KF5::AnalitzaGui KF5::AnalitzaPlot) + +set(DESKTOPFILE_INSTALL ${KDE_INSTALL_APPDIR}) + +if(CMAKE_SYSTEM_NAME STREQUAL "Android") +# Material requires QtSvg for icons +# if we don't link it here explicitly, androiddeployqt doesn't bring it + find_package(Qt5Svg REQUIRED) + find_package(KF5Kirigami2 REQUIRED) + kirigami_package_breeze_icons(ICONS list-add) + target_link_libraries(kalgebramobile Qt5::Svg KF5::Kirigami2) +endif() + +install(TARGETS kalgebramobile ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) +install(PROGRAMS org.kde.kalgebramobile.desktop DESTINATION ${DESKTOPFILE_INSTALL} ) +install(FILES org.kde.kalgebramobile.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) diff --git a/mobile/Messages.sh b/mobile/Messages.sh new file mode 100755 index 0000000..100eb9a --- /dev/null +++ b/mobile/Messages.sh @@ -0,0 +1,2 @@ +#! /bin/sh +$XGETTEXT `find . -name \*.cpp -o -name \*.qml -o -name \*.js` -o $podir/kalgebramobile.pot diff --git a/mobile/clipboard.cpp b/mobile/clipboard.cpp new file mode 100644 index 0000000..623053c --- /dev/null +++ b/mobile/clipboard.cpp @@ -0,0 +1,128 @@ +/* + * Copyright 2014 Aleix Pol Gonzalez + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "clipboard.h" +#include +#include +#include +#include + +Clipboard::Clipboard(QObject* parent) + : QObject(parent) + , m_clipboard(QGuiApplication::clipboard()) + , m_mode(QClipboard::Clipboard) +{ + connect(m_clipboard, &QClipboard::changed, this, &Clipboard::clipboardChanged); +} + +void Clipboard::setMode(QClipboard::Mode mode) +{ + m_mode = mode; + emit modeChanged(m_mode); +} + +void Clipboard::clipboardChanged(QClipboard::Mode m) +{ + if (m == m_mode) { + emit contentChanged(); + } +} + +void Clipboard::clear() +{ + m_clipboard->clear(m_mode); +} + +QClipboard::Mode Clipboard::mode() const +{ + return m_mode; +} + +QVariant Clipboard::contentFormat(const QString &format) const +{ + const QMimeData* data = m_clipboard->mimeData(m_mode); + QVariant ret; + if(format == QStringLiteral("text/uri-list")) { + QVariantList retList; + foreach(const QUrl& url, data->urls()) + retList += url; + ret = retList; + } else if(format.startsWith(QStringLiteral("text/"))) { + ret = data->text(); + } else if(format.startsWith(QStringLiteral("image/"))) { + ret = data->imageData(); + } else + ret = data->data(format.isEmpty() ? data->formats().first(): format); + + return ret; +} + +QVariant Clipboard::content() const +{ + return contentFormat(m_clipboard->mimeData(m_mode)->formats().first()); +} + +void Clipboard::setContent(const QVariant &content) +{ + QMimeData* mimeData = new QMimeData; + switch(content.type()) + { + case QVariant::String: + mimeData->setText(content.toString()); + break; + case QVariant::Color: + mimeData->setColorData(content.toString()); + break; + case QVariant::Pixmap: + case QVariant::Image: + mimeData->setImageData(content); + break; + default: + if (content.type() == QVariant::List) { + QVariantList list = content.toList(); + QList urls; + bool wasUrlList = true; + foreach (const QVariant& url, list) { + if (url.type() != QVariant::Url) { + wasUrlList = false; + break; + } + urls += url.toUrl(); + } + if(wasUrlList) { + mimeData->setUrls(urls); + break; + } + } + + if (content.canConvert(QVariant::String)) { + mimeData->setText(content.toString()); + } else { + mimeData->setData(QStringLiteral("application/octet-stream"), content.toByteArray()); + qWarning() << "Couldn't figure out the content type, storing as application/octet-stream"; + } + break; + } + m_clipboard->setMimeData(mimeData, m_mode); +} + +QStringList Clipboard::formats() const +{ + return m_clipboard->mimeData(m_mode)->formats(); +} diff --git a/mobile/clipboard.h b/mobile/clipboard.h new file mode 100644 index 0000000..6fdca4b --- /dev/null +++ b/mobile/clipboard.h @@ -0,0 +1,73 @@ +/* + * Copyright 2014 Aleix Pol Gonzalez + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef CLIPBOARD_H +#define CLIPBOARD_H + +#include +#include +#include + +class ClipboardPrivate; + +class Clipboard : public QObject +{ + Q_OBJECT + /** + * Controls the state this object will be monitoring and extracting its contents from. + */ + Q_PROPERTY(QClipboard::Mode mode READ mode WRITE setMode NOTIFY modeChanged) + + /** + * Provides the contents currently in the clipboard and lets modify them. + */ + Q_PROPERTY(QVariant content READ content WRITE setContent NOTIFY contentChanged) + + /** + * Figure out the nature of the contents in the clipboard. + */ + Q_PROPERTY(QStringList formats READ formats NOTIFY contentChanged) + + public: + explicit Clipboard(QObject* parent = nullptr); + + QClipboard::Mode mode() const; + void setMode(QClipboard::Mode mode); + + Q_SCRIPTABLE QVariant contentFormat(const QString &format) const; + QVariant content() const; + void setContent(const QVariant &content); + + QStringList formats() const; + + Q_SCRIPTABLE void clear(); + + Q_SIGNALS: + void modeChanged(QClipboard::Mode mode); + void contentChanged(); + + private Q_SLOTS: + void clipboardChanged(QClipboard::Mode m); + + private: + QClipboard* m_clipboard; + QClipboard::Mode m_mode; +}; + +#endif diff --git a/mobile/header.jpg b/mobile/header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9fc726f1aec1d24cb64aa053ad5f93361e173c5 GIT binary patch literal 17512 zcmbWecUV(h(=Qx)2f@&bbP^Dh-UUUvl!P8YktPA@9aM@^483FMkkA8ygeodZ7ZgJ1 zO^QfY5G){YHs1I9Jn!}W^_{c1cG%f#?d&zPX3hL&*38+|*(cBi108)G5D5thNDue} zoh^YhwL_4uAdtSkIEWeq0+E1_apb@!2*d@P=Lac>w3z1a9cxk$i0t3%l=CjYaW)Im z0#Q>^Qc+S+Q&CaT&`{ITgBj@Q=;%3FE;506xi0bXa`Eu+3rmUd3tkrD;ejYZFJG0G zlasq7rmU_cqb4OQCv*NIBs4TM^mOzb3=AAH0z3jT|JTRa8xS)!NeZbo8Hpf>l$nH# zndGb+bO|7d0-*PtC@LwdXx-G- z(bdy8Ff+HXw6eBAI61qx-g85``v(LD1&4%&J$@1s8yEi+m7bBAm7SCO3|(4=!IoE4 zR#i8?Xu>zQw6?Xseb?R7+t)uZNEjoIPfSit&nzvktbShmvc9poxBva%@W;+0hf&@2y(lOXMGd}@R?^T# zBP0v|#_H%dO3NlJwbM1=M)qu0^B-mHUHI2XBtc&G$U<1%n7FUg7m1OWFRE1 z*d8gQ8%b^%kJ$ztEy!y|VJwO=J1VhM}418>C0SIjQMQ0@x8VtKXc;yo}256op0(!Oiw` zW579&xDy?&%|SXQra9F zJl`^8==+#BuK4tABwoGAC@pQ+7S*6ApOeZ!4>i53t-<=##ZkGUxGIRrz`iu{LO=z~ zNREW(*OWkbeh!06jukK&St3Eet%6i^2~43)zysB z@LonY(l-^RRNyAi7@^qjdX2ETH`{I|32g@Yd4(Was7H^I0wg!)exoVR2&D6|`Pmvw zFdtpl6$3K1<~w++|Mk|4-UsoUW}3{+$TH=ca2XYI83C$f$c0s>Ei7f~jL1%TdXqXd~TM z(S8t;;IZ)+6E$BJ@-b_XmmM>}^TdwI3$2(Q(IYZikhDH3$Y0ME49dmykZkz(faId| zQBKXWrYB_#C{ROlhNt{Jv#yG-W`syC%T%1&^UCSAVsZ&>+E4jh(8v;9tSTs|G&}Vj zxD*8e&8S1CFjzpgC!QjT3^gyD6g-3u&{hrW8)|ohn_!xB+F;YGW#FbJ(0pko2r@?% z2J0^-%|;UcCYs8$J^6vPj^8p{PBax%$8(nm);gjn z&6qQ~z>C7MKWbVrGYq8AT#|}fVcLf0v-4 z^GCjBmWjH&;%ra8U_qqrJ{f_UP7ZU#>H-MqbrW!jQUyg1$SR8o3kz`QLyZf`b89ky z?nP=Fw~>}B{3^ZyyqZz_X7^*%i_fV@F7iLyHA?1?svi*JYVuNlO;I>ahD|3Y2($PV}`3 zw4dEqPVjcOZE5jEc}mMZa4p$tfe;V6M5^p$A#*kctraN_ZcN=DuXW-p^-Q}~^^|lC zU%RVDq-=B^d-@;>q0pcPp%mYQ_^peCqlM6cn!J(a>K_K*_OMk}Cxl=Qdv1yJFK6Xm zbVMZ#%Y~K~L}ur(GNIjXIwC=TfEl~tt4W6vmz7er(El1_2J?1kdxXMzhKMS$hK7RC z9=>zZI?$=&5i&Py|6yq=C8S3Z+zrmeTdqYwP2>ozY<`fshlfdxo;9iN0u31xI6^w> zXcY>Y*3aW?o|W4TXkd^hxXF|hZdL^$fnYH`WV8kd$c4;I;2uo-ub3+lfMy5yh#Lu% znhLLy9w{VErYF=@g=7FJf*rF_=Rc4M%FNt`n@UR?2^P(yM{;Nb+E6ooy;lc{)GT(U zoKR2}EPP&lz$!^v&<%3T0mBI-u_Efo2iSuO!U&lf_MpSXb7{CbYsU9uUp45s?^>3!Pc-VGA^MvQN^a$VR%edmt-tltO20U3zUcx``wH~K5x@AKDMN(SnsWnOD(3picy za`&)_e3&@?Xn~=5mLsTEHL)*@^d3%WCRp=;xc7JH ze1y=t2#)bLE{(d7>%UNKk398sBaFd49PmT$Z7aZ6ZGI4v~rGHs&=-WE7jiy_A+4x*CYMa zsP}D~JIXDU*|61|oIN!v6T^a=sBb7$_x5nvui-{0aMsZ_paP30N$@v9X5Tp3xncwF2iGY5z*c&#Kw{jnl|4c?gAQ@EOa>mk zb*+NcGA~+d{le~F4DA~d!+AH+3z7SqVXGyaY4ek%XX*k&3%bjkoj9AX5s-ikulRt7 zKP|PfbK*O-wig+U21EkbAP8HIkAh9n5>nJv3RkdF(l!QGL`?imS|(B~8MrBnAN)3Q zY`vH|QEMW1ZwKygHfA3z0N$m%nIml2B8V%VYZH>s3w2$)AFV4N#IixjB#KYBG-4^l z6e2Ee7ziB5XZZT64D|Y1N!B^@yJjR9th7s}J@?nE<1VS(<$b19JKmNh(#r^e-REwo z?ej)BJd>R$ll_{IHtaksdpQoQ!#={@FoHqNZyKzv5K#p;x$v`(BH#w4Jk8IsMfiH^z!Vwn;qg z;1$)ysj|lK#Mto+o=)MyLvNeE7r2AFRXk!>1a?FrA}`QZRl1uZM>s`&q-W(_?@4zL zQR?wZJkHP?SJSF_F;9saHyNzx^uCerdh*3NM$9t_R_)Fetu`^56(1nhDSLg7=fwgZ zH!|~SB?B>WBs)7B54V$&My&?&QXY*VY;YtFCZg>d;;hOgEl$eHk|w(J>e^15Gc(iu z&vn1w`U0ZO{xIm|m2|lxNSQUIYU83-bx$~l6nkZzyWB?G%&j*4S*_a>6Ppgg1$%|Q z2qBktm%J1+7-FGM2GV7DAcuaMvW;82m>5*MI-8X{o*?~^rwsB2WhVaVQ?y5vZIac8 zbXAVo_uIp^?PNx@ms+G{E+RfM^w;~D@7}K&mN4L8uyjw0Di%8TIZV zv&)(TN`GBK!RYoSSw{s#o;oo{VLO479JM6Lw*0ZXR4m9P=mSH5>APdY#S)f+6ip)- znP;lgLKBO2+I6!uo1ZFScC)0E+`KjH#>CYIB11vf87Qa(Zf5i@;F^cJ@$*zlBeM*6 zw6X#vMJI*XWW7ks7+UYTFsfu}OQbDfN4EKk+9;P{8ZrCLXI$EtE`OS0K*d`1Tv@H~ z4Q19m@9NHu%#Pm=x0JdD+$?t5+6>Jl53QwKrnz0~*RVY}4*t@z&{0N?iAUJ#J|x>W z;tIQ%Gs6@STYI7iGn~>Q8>reX51AB)_#&rcjxyw;!bU{37TRWU4w?~RQ#C;ubp0*8 zpT^sbBpUp=wWzRC65vIB57A4z6SWs>_hQY=AWEAwbJ-|JB?sIQy? z7&++~89Z$q?3BQ^Jt-Q{h>8{4uYCu*H<4hNyEJ z+#~we5(_gPfHGmJVO$7M(u&n4wDba{I0DkjiXP=zB_x=`_K63XyKfQ(ZXbfPVGaE} z7-`B|TqTZbTXiMV`O9G>UmS$4xzkG&?FD97bXS&Mb`th_Ns{fsfsa8)|=M z8pOGJ3f5NGeqx6OF=h=Renp>wEK|=w_pH+>eZLs^h~v&cD0yD4-*;c(&A9zInGoyN zh&sE@aJ$05wrN#f?+Y2X{={vC`+9R|4lS&XiBRa<1UDaLHb#_vXsBqdPOkTn8)c;gJHWH3p4VML zOk6ntC!s%!x++N^9&znmop>jtW2wzEQO^X^nvpbZ%i0c5WgoFnAb28H?ZDi9VeQu9 z>D?ezf^ZdNQ0eZr2Y6=6+tlI4U0tQ+wyGw&gwDHCtDeW8bbA=jJLW{=m&Zb;?j4#d6PVMAKF@L>c_i$w}c=bAS4rLwD>w!5iZN z^UI8imiH9zmRx(rAF^)}wk~*i;Cr$=0#XIH;9aGK-oGx=s6Q!RROvPl=+)2YaXY(Q zHq(AY?%D7<;?@r-i&I^0k?e;D z;mTO}h_U2C5tI4#I3A+46Uhd`o&l0sD?C2qNhQ<+^L2GSn?YGiIw$e*u_w@dH(?3U%hy4On1gD*k^d;p78o7xFunQ~=e z$cmC{&sC$`Q<&XE%a5#s8XGs|2DUK?nsY&F? za5I|PfHII}k(&woatu^L9*XE>lpP2bbn3qmk^?otv_YYV6$yB{TAj(D3(7ptEMg@v z&xvXc?Z;LxGWnv_n6?mp)-xYZn-|2+K%pe%qFHyjDGedu^|h-=Dr=LT z#rJgk>DB7=kL=x!L+L!d^i{BhXg=C~tbz)n;;!L~SdyPEyFF*z_&kyYr9V4Hz<#sO zCCbw!>8yG?E7|=J?RY`&D$Cb1r9<7vIy~z(iKZ<5ZhfW51$wfo{5xmE-jJ0pmUbPh4lyf&@9s(0JnlSwN>pK7Q*^u=_F!3?%C5c~f9 zh_c15sJ8!1J!*;IoxR|8r!Xm5!r;rTW33$9XJulIg%X*2_hP>&xbAs5KPx?DJHYuo z$ErLv54)OybPJl8qzUxO5S#Z+GqYk?ikG+Dk+;9{r%9_xYHrf$9(YfyIrKr_=?`hx zZ4_3Fdz(3HG^Zv6J!_CL=n|YUs^bp%1Fx3Nx^bHag|$)1?enHP4mC8B!vjCvBe zLM@cyFjL>Gw^3*!Sc}!kA})__zw%7 zE8&b%o6Dnir!T7JHyUdjwnKCm?7qVcSJbbmisU`|qVYy$lt*1(c)8wZO@F#TlGWta z>(h}Yo9_Ej9b6qY`br(rW!|f}{Z_#r%bx!5g9>aA*$>T`g zTsw@>h-YDyl+UPU#Ne*=ZkbGE=DEIOGFY6#^SKs0UE2=ef7~x;2~LQp;2nH0)#r5> z)@Kp@&65G&XCcp+Vff5F%CO`S3Q~(=OGnlCR@ow2^_^)=aB_K5bk=3ysZ|?Onf%Ab z7*YpQZAo}Lac757)blk0saQ(-G4t7n(d$o{ELgSWJM<|nHFa@_=w0rVLoe==^C6|Rr+Eyj-rh#WmD}xJpK(%6+pFRCm)?y?C?qSYg z*VRs-oyjF6(e`@CiLVxV1SLA+12N0X1D~y0Gh@sTIkCkPBCKAQOA2VSSZ~Z49`hWh zI$WG-R=iSKiZj-?w$#!!Mk0~olx7_b$)7`c#@!sy#83BFYxLZS^R*IzP`Q1IsWkJp;{5vamu}=@pe|o6hvvDZlIJg&lVkXnO~>>Izp$` z9O1s&+Od9()38|BVHuUGQ$s+#X=uYz7Pq#?64=no7D-g_-nM6dto$RSn@4JA?ybA} z?x#eYf$Tku6E`177@v^O=-TO#2@^HEni!hq-gS%(an^+~G0ZQdiMCX}msa~N-Aufc z<=(S2&nGg|{@{|OUD423CRA5f;@_^!^47f#8rB=pG& zv9LCLB9f9qXz}!x{3^&|dn>(UH%?x*49+z`irls?1>j_yTw;P?mJg?iDU#SkkKzz) zF-q;Ne1(#Rr}cnM=ezxXp7Ip#e;RDZb~^y?QlqUrrD!h7OXzrN9qc+Bm}$A!J&tO! zf9hl6&$6ghI4FXe`902FEP;NItm2BPhd7Oo_9? z>hdaPHw$IZ>$yS9`tBy=a^POuo?LO^cK3OrsrVms8!HCNQ*q@=Msk@a%X z?TK(~yw#O_FMEY!>nf*$um9kuf#kua11(k2kgu3ZqD|qWDw;7jl z!%KPL0}~ztT&}kx4{*vE{rLToIGZNd5xe0aRz*q<$kC`N&t+LskrV^_xtb%Y%WcK5P$T6 zxO19tyan-su3V+%4>%nE7Pe-o%uCfRW8$9L=QXs|RoBRVFHu&CX2;reU1sB`r1gah zv-0oM$s4lCVdIYWiV|bfDE8(O8+30DV~N}5prT{b26eyS^Td4nQO`SCL)%}M#w4UK&Uh)um_SEZF(oM8x+HF75XiJ`fW(6KL-cwR%K=$Uajm8|SG>}!+84$p;L>!j?%-JrhsnDZLGG#yjT$#LPKM8WvM@w}w~OLs#AexWJANWorVMEi2N z)}{x_Cpu0h?1#M3!n;F>jr$p4-S*+1%!6ijYDZ#&sly*5ys8JaK-#|OFR|WNc3*hi zMD7?TB2DJ=T5>U~c-_0;0TrsGC@Mn!5VM~N>j&gjcP=?nPV>RXt+@Vj+sb~3Zl!#I z!Gn6;0C=!Kky#5$;V!>$P_5x5wjSRH6Z635*Wf6cjh@hhtKtGj6op8uG3!R*PBmwkAKYvGDl zU?1l``y+Mnq@4JQ_BJLw$*(Oi?0{l#^l>Sx+;92QmQfE5G_4Q zK-*@E?9tkMXqda&wIYxA4rcAXKH5dK&?>E?t#7+)bg!w}rG6&*j@_ za_5b2hU=+60kyJ?Kh8ZgX_S$BTFAjDQBURP?3-qH2sOxiAthttD3OraVze7liK{Q} z0Q|&Hr}A2+V|8_pMbAK)$CGMD3fR)!!s+QgIA$VqFv3c~u z)#|dAuvPg*+F^>W*JHA&!C>C&KX8&%-CIg*=*WF9tHc)W8bbH!QKCIlj921BI&o7X zdrvH(Y)la`|E!^g8JK*46Mvo4`tzTo; z^%WkrTw7KU`fWLnBeG|2sK1QX%XhI3uD*AJU_7_c{Q8Q?Jnd^9Bnx>G>jfVG|JQ{j zXLY_`911%WY;SCS^`yt2)*$W${Um#JNYHo9%uN+JLa5>UK4Rr*X~*CV5)Q$-SkZvn z=(?I>EO_V&7R=+jZH?95zPuEH z^&P{iB#&50Hnpf2lvPdJEzHL6co&X#eK-KEmA;z1za7v}$u9H8x2f-O{#Za#(0hB7 zmivd=qEHTp#BrShy?VFocq?0;AiPHWONBkz%~xT1#xfcubqQ~;@wZM&uCYT(_2PeL zIw*K3ntu}+{T$#K^3~c*VAz@h;eGvl6B5hNnrn82^6C1+MbM0ddE~bmS57f9_Ek!Z# z(?Vr+CnDKUkYdvF^E^gx@Hfs?iUM|X4S{@F-KWin+@d~dRw zGFYUqNeyO0>R=T~ad} zE&8kd6>u(1vlQcK&Y{t|33Xq~4J5RAVd;5nSvtpOjsQxG5-+ka;O0u$X+UK4On|+4 zRw*u;NlV*Gl}->l-_;z2VV281W!uhIn_<>`=FvxE%}hfS0fL@UlBqP!ApC??6@5ZHa>By}&1}EW1xT zIV@jtWnn&Xe9hz=OY=uvAK2=aufORJzwyxY<$8Y#HEo}lc5Xi_Bc@H?7My`-g!qIA-c!eY zDO3%BjF6}iG~#lB_x=>L(pk!WG0eeYOS{pEsrJRPG9Q$sBl z((*7(U$Nxj4Ts=un%H@*?Y|yXD zR|B4}Bc_+i{YR>}{MXVuU)_`s2uaWlc`l)1(EPbom=|*f56gQ-FST`m_*sqWKQ+O!^jr>=dQMeYI#So);8Y0|qhP`&-3Z)*40YR2b? z$A<#iJ#(Aum7i?bz&816k#}?HolnFO`_GDDC{@A;rE7hyR2psnM2>9i)@pgsiHFo; zA6o6D;g>hzzn`WZxwb#B2)&OJ6@KqQcLsVHIdSk=U&8pxxU}kl+HoIOY(ceT?L=@D z^j3}Fm+uuJV%CI%8jrMK-_L{F(y4kv-|8}Me;beK&GMOOW|r)?D@nTQcP;Br=sWZrZil*w4Ft95`|q}_tKBkudilK9icxQL}w`QCmdw9utBeZS@KyL56!unOaN z_a-4^(DpaWhf7k6K^J<>SHm;x@&4_v6KmxXnw!(1t7&07b|k;hpWc4=KTd@|a&4UT zFM9QQ&nm7odU2nY7OzQ4^kl zCk8!&FGo#>+4W0&$Hq9TA6=NNzx?&0(SFu)wk9a3_uY=&`13TJ(Kyz5Vnc33$4FIn ztg|`!Db} z>`^{v3s2${a*LDXCe=G~?Wnx#1igY3@fMBG?BIJ!zi0Qh@$Kf`^L`g)N=&`zNZ_y+ zWrAU2NQQrEsW#6gT$pQad-P0Hm7JtTt!5Mq^;S*wg~uU}%aGkL7-kp4*qoM zd)vTCt1KV?h##4F>=?Uj^3$>f&&$_mmXy7@py-I95=#3unWk#AH2+B3g5r~3vEmJh zv97z7lL^Lu`ai(a?^Pmii;u}8$))w+PNO^y=$W37q{JMPs=i<_i)z{L7$>tW^ug>E zj*S*_T_5MBoc5vC6Qtuesk{?H`=4mpS6{TWWuQ*zt9vT#e2Eo;&;0#)u^k_!g7^pC z42MnxHh&R7d>pv<82F z1`LDTE{ptTZ{^gl$410^`<`_cs|S^8HcpbKQF1=3jY~h0f9=?PdAInYW?pCTwOhY~ ziJfKBx4mpW3-4-?f$!E|k>bj`4$bysgJ~(2O4VC6$nB8M$TQHJ9zRG+}7e17(iF#D%Tp`p>u!aB)@={KG^>tp*NObm5KZLv}I}wDG^Vs4=kcH;#TjQ z*|Gb?&T}GBF?whnm_X5%kUUh;P+b+5DOmCH4h(8P_1gSv{ltJ4hjWI;9A`~j6nYiU z#64>}pXcFmui%~M!CHA1l$cdor?8ETc&qEUD17Ryyz&JO;WCO@e#T$W_C@?)*7oTk z8}lNPQts~0+-M5Rj&H#mqh)wWG&SFROH_T)D;uCF^Y%J#O z4_T=II=cL?QPtHDYf5 zP#`>9H$4TniMGczzk7`;nj0eS8RySC3vG(SmW||qxQ(xwLW0A*gUMitHxm+w-CSl% zSqSF+mQuzGSV*?KGmr)ykfuSyn3wYFHzMVf8K-(0G75xUCIAbnrme9+b$sdPYf_V6 zdIukW|3Wy06d9SFHWd|DFfk&_POZt{+!c5D2v#<>9y#b7a8+8JeGWUFQHp&AMR;>J7|7^ z8y|g_oB-^IMIm}=#Uvlx-1=DPNFcy09VEg34alSb5;^`NwbWxEuY)XW5^wK1 z7_3*Dw&VK~#Xf&nXLPSIeccY4W7K9=Fp@M-Q~|qk590a&qcr8&J!4N zwN82A{0L9=N3f-NaqmlYe_>?0M%JxrqSwyD8LEc2@0ThktIt3}<%Vv89LXGGC*!0A z4H50Hv;2DddKAt;oAoQ1;VVZd@0mX~-am0pIo~dg5RdPTUp-2XV9GCSve5EoL|azU|$^A835n$#;YjcKFb zMc=S|S6+U_Uj1Y8%PdyLd<^Dk$7gGQa3@Sjgy0jw^1vcAOF0&bb6$* zWOMA6a;(ZcyQgcb?I+grGoq{f;u(lkV@dCoI5Bq*duibH+Z0b`V5iq=`_;i6;scS2 zO?JnP;Mw>24GCmolUue8^*LPS%d?uC>PCL=x{r!ZNNxAMzhSS55+gtU&^iMF#2`%A zp%~0;gM?&lv*A}=3w^udJ)QE1HI~I+KYzi`KyMAJnbR;WtBb&JoHe$OPJsbee_y=t zi|>cWfcNFKW6iV#8Rd6O4&f7he}oZj8vU&yz zjH-$is0iur4GByARXW+fa==S_2D&~;&u~9udSK!{Q_cu5+!{P>S!vWS_!?>gAB?ag z%neFE&;3Y+^=&VT{VI2&=Z+Sjh?*OTPzw*YazV>LVfErhv-jF}85Na_ny0o*FBGshi58O=`-u zx7RIYZXBr-V-`alFhNIFW!rXN+&&U=P}|uGjC>z6OyK6cU;RJKcE1vCeRajd1rlGB zEgD}m(ITZL;a&ZXcP@UyYKTlD+mFo3@OO*X`f(LKEso@gx_m4@&hrmUYb@;i(S?)^0o8=|Y?E(0r8CA2|?hD#>m zX&6evonwHIBA)d$Q|jwoVpDW>8w168z9f(wh6KUKY?>1%oY6xP(ogcQR%Q~Uz@If@ z*uS)+=7Uv9taJFpp4wr=?K`Vui*pb$z1?E()wisSMoOAZKNPogx(q{QN6g(|aq>oY z9I3D14PRuYI35%3M7Ynq`*OK>rLrzY$ehEJ!hD>UW%#EP7TWvXUp$alEnHe_F)E+Z z(ue<*8i=c2Qd6-#)<&JoO$K#}Z|FB&e#k+naod)Z6p_5|d!9Tj;08FYP=9R>@EZiQ zjWkLyy9aa)r825X0dxTYX`4+T*m(weOd4ny@idA$gb33Sj zX{W~S@I@z;5el@~G!@+r%7E>J%dw&q9L28L1y4jFJz)5A8WfO*2c06v^x;)dm&uLj zy?>Tj9wid5R7?;2+_~#rO^er-GKc494-Mu4F#cWM%{xD@-T7=Y$;Z^>)IJk>*E=HD z%23bUUg=frx1PzkccOj_6(I>m1Ne4DY8B}H(^$Zs(cCU^4Z5>|D}rU622Pp#bEGRE zgSN?pTdv!*2TkW)w!8NSfjn|M1Cf2K|6^6TFwi`g7og5|&Gvg$?Lks7EKy&CI12rG zIVt0p6^yc~bUIr7gyGfK&4plIdmOPz3y!>|`;pv7AnI4I%4^-FWa;D>f+ zAeg;{2;ZRK(TP=O(Ev|<)^hx-?JBY5*AtJ!m)%|+mcIT&ereUC>J6rBI_U1<`#R_=*witBO8mU%nj&eQ%P7Wd(w0YedQ zIK~+3m!Yr6r@?2SX5FL7yQo|6AKtAKQt314N)^xd_==@v`>VsEmvmPlb(3J&ww2$6 zi=~PV^vd-}H~~JXsF#u>6h6T`IW#bG5YbTVdP&}!R#V#0 zRtL(1cOR^6!$5%bR>lvc%98+s{1+xrLTHP>013+^hCp(16CA(|hWgqdNkC`;Nj|>= zWPP4X^8Y^d4fQoC0Ej^WhMSV;837rCa3CQ;VXR%L@cltg{1TB48yFY^w*IjonQJ+mW(fo{fu#>3r`G? z`zrV;NRFgg#N;cjPvBv#h7|BM0>e0bOK1J=mNDh?Cpl!t#3f&)Lk#6-R@4<&@KU9L z3X1YRVM3Ew)LM~bGVVsE{n@(Ldb!ND-};l%u*>|yGbaIE`N4&`+Xy{pP2Y(~b&jh- z{DjH;>5zFRU!LwNKK#^1dv|a@XXvmr7ZJ{gME*_c0N(>!S~gT+vtCF$P=oF06jiXD z^@~0lT(JkAF=TXn_|53iWT_5Tg3bxne}k*K!^74^t7h{woRkfOx>q6Gb6q;7m|c=D+d) zOg^9@Yf&roB*1p5zIJ4dNK7qCOEdr2O1kpb-DQ8tXDiCH8}>;8tc>V;M)dXuQhTnJ zDZV~G-l}E_j3pKxRuSP2VeqlU`?W4`cRxRaE^V-D<&c4vp`IH@CfwgplM)KRS{4)o zn1pd83}u?I4goiTJoz$9`mes50B|$KifE&*b6ExAvT58E##e{s(mXo#6q|EwNgo!k!)En;t_q9E&kT5gi$bqg*JIxF z@ssGe20l6F@N!>7S)^U3d=Z;k{LTH~LZ}w!u=K?-`{pXag6o_-Bb1W84ZePW08}^Ix`iUEhRF zmq6-5-PaEua!upXbycU553f}%tzSvrFY{S<$0+19letTatC-4`#?B~F3Yk(ESTmMC z?>U^}5ch`(-5K_w=|_+UnB&0$Pn?1g=|FNfP_P4NB0#b*fPVsokRTz$Kv4}KRhfV` z0iVm0h@^lVAY*Glg!%7`Lm?cdZWuZ0^Snxq%s{#F^e74uFc+l&@H?d92sbse7n(8H z${Ev6cMZH~*a!t0Q7tusekRO7h!n;Gl|g{aXQDw+k88WX@ABlETehQbP0=%eJYYta zbF#+86lHSf3eX5!O!04T6bSKmbpX#&l%B7bzuy250BBMGxIl_2Fyc(-CSP{YWEbV5 z%?kj5bL|OK3bml>^j_3B8yizSxUW`!(a3n8$r9!=bs3BR<6l?j| z^s=x+t-}%(fiwYYl*lHg)|pZbThr?Z5+=yKvD9&sVBs&+pCYZ2@bx6B1A4o zerzA2YRLwhrloo@Lw{M1YpEHs>3#-^-A9;*}hgwJ3 zjNRItyQs-En=_H)b69K98ewK~@pVd85Ew>fnWu@4bu zy6DsLDD-R`PX05k%ETSuTUpj>;2Y6YHY_n)bQKkVz?l5G(H6eN{Y+ncTY@j5#d_Z^ z6+%WJY$~q5#nN+^)XR+h(ef33D}y_%+cGY|Xc|d#J;P#nA;sjOr1a>IMHb1ji732J zOy=_Qa>4@gC(m*!`)hm-(Xr0m^4&{E;g|Yy! zfo8%!2^pG9rH$C}bSP;yYY<&lE-7^}9r)as>RZ%#Wm5nv{ zniOc|mw1dA;1BFCrXrlnJ50~`TnqmpevmcpR|hVKW%S9NM5}qVNqRu`rPY!Lo)hKz zX-8b3^mLSmN`;vwBc{Bza-KmYl718og@A_7g$OXyK$(%KHW}GJM*7L9<^}Pc3IK`- z_%Mj}9AJU8=-(b2#u*HCbl}GAfo*6#h_vX{7SW?Za|Q^U4DWcAbU!VfVV6&i%JdJGB!Ru0lv}oZ4x` z_!bHi|KP=$5Zhj+P0qBdhYU z?+mUUpIdEM^JqOH-p#xi1k3u{1|JFgL4Ui)7L{OM&PMjh(QitwUM?O_9%pDLPozah zaj5Jow>-o=M(yD&cJFqkA#{2});izA6NaBeZQQC>0y0$Gjvz=wS)RQkmA7t&HaPIda zql8|KqDy?kU?!}gV`0lxM$XoU#f+}sZ@YPc-jNjI@fDk+LkT&n;~w)D3}|MDUHU4F zJg-WBNhZ>7> zWCmXq#!Bkx4O>M;f{sj?geI?e>)lkO$Ft`X!LJCu_F(wa3(T5~_h@C@HJWr!mSDHN z_6LAS^v?XYSwXelFi_qZpwVMY&t$N&eaIdC?tyDNUHBVwXH%KuOPLcEA4*pBhutt; zTZ$G97rPA(i|H&|27JmWaciybp)QTBQ>!cTtMi|1PN282x7lS?{Msaho&?R6nqWl{@;Gz~YU;&fSB zqQ^!GwnQ|((`x#Th!&wzs&I@{)){?SleATc?{rR#C#msdX@MDBfGkHcXI|~9hHs4a z`$t(-7Sq4pe$xrU+KN&(?V)d(Qn-~!OjL+dcU8bmWsAn|`{uw1HOR?W#i`zQ)%Yh3 zsUAf+CQ#p2Mp;c>axdQNV2kjp79fD{%h`E`fOW=T!JyJ}=*gCy3iuZ1+z0%Kk-tm@ zioO8z1XP}#yC=W}U|z8ppbiWG^FXBFFI@QBa^CHK&cD4%)Bo2EEnw0BVEPYIy$|l zUmWl^RN+Q~L^d^n0696g@ql>z=b|*v_#gZN^gky|8>Eua3Aj$@p4I<~3N-zLZ{TK? zB>zLh-~Yp6VgC&7Ur;0mazz2y@*L~Z8bHoB+RrKZ$F(6ZMHv7b0B!&+G@VM&p5`PctveSrV#3ugZ77y`}bfbHDO}7BK0V0DlqJ|H?#ZB+uUxLEwdd=lmS00n$Qes0Y*yVllw;U2R0P2f{_3Ob39*6e{dcUUK-L1}!uc@I=NX{rTrmC)kNzA- h0xiI>{xf)hU+1lVDar&4>R(^>{NpX~I + + header.jpg + + diff --git a/mobile/kalgebramobile.cpp b/mobile/kalgebramobile.cpp new file mode 100644 index 0000000..c1d21b6 --- /dev/null +++ b/mobile/kalgebramobile.cpp @@ -0,0 +1,100 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "kalgebramobile.h" + +#include +#include +#include + +#include "../src/consolemodel.h" + +#include +#include +#include "pluginsmodel.h" +#include "clipboard.h" + +using namespace Analitza; + +KAlgebraMobile* KAlgebraMobile::s_self=0; +KAlgebraMobile* KAlgebraMobile::self() { return s_self; } + +Q_DECLARE_METATYPE(QSharedPointer) + +KAlgebraMobile::KAlgebraMobile(QObject* parent) + : QObject(parent), m_functionsModel(0), m_vars(new Analitza::Variables) +{ + Q_ASSERT(s_self==0); + s_self=this; + + const auto uri = "org.kde.kalgebra.mobile"; + qmlRegisterType("org.kde.kalgebra.mobile", 1, 0, "PluginsModel"); + qmlRegisterType("org.kde.kalgebra.mobile", 1, 0, "ConsoleModel"); + qmlRegisterType("org.kde.kalgebra.mobile", 1, 0, "QSortFilterProxyModel"); + qmlRegisterType(uri, 1, 0, "Clipboard"); + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + qmlRegisterType(); +#else + qmlRegisterAnonymousType("Kalgebra", 1); +#endif + qmlRegisterUncreatableType("org.kde.kalgebra.mobile", 1, 0, "Expression", QStringLiteral("because")); + qRegisterMetaType>("QSharedPointer"); +} + +PlotsModel* KAlgebraMobile::functionsModel() +{ + if(!m_functionsModel) { + m_functionsModel = new Analitza::PlotsModel(this); + connect(m_functionsModel, &QAbstractItemModel::rowsRemoved, this, &KAlgebraMobile::functionRemoved); + connect(m_functionsModel, &QAbstractItemModel::rowsInserted, this, &KAlgebraMobile::functionInserted); + connect(m_functionsModel, &QAbstractItemModel::dataChanged, this, &KAlgebraMobile::functionModified); + } + + return m_functionsModel; +} + +void KAlgebraMobile::functionInserted(const QModelIndex& parent, int start, int end) +{ + Q_ASSERT(!parent.isValid()); + for(int i=start; i<=end; i++) { + QModelIndex idx = functionsModel()->index(i, 1); + m_vars->modify(idx.sibling(i,0).data().toString(), Analitza::Expression(idx.data().toString())); + } +} + +void KAlgebraMobile::functionRemoved(const QModelIndex& parent, int start, int end) +{ + Q_ASSERT(!parent.isValid()); + for(int i=start; i<=end; i++) { + QModelIndex idx = functionsModel()->index(i); + m_vars->remove(functionsModel()->data(idx, Qt::DisplayRole).toString()); + } +} + +void KAlgebraMobile::functionModified(const QModelIndex& idxA, const QModelIndex& idxB) +{ + if(idxB.column()==1) { + for(int i=idxA.row(); iindex(i, 1); + m_vars->modify(idx.sibling(i,0).data().toString(), Analitza::Expression(idx.data().toString())); + } + } //else TODO: figure out how to control a "rename" +} + +QSharedPointer KAlgebraMobile::variables() const { return m_vars; } diff --git a/mobile/kalgebramobile.h b/mobile/kalgebramobile.h new file mode 100644 index 0000000..df23a27 --- /dev/null +++ b/mobile/kalgebramobile.h @@ -0,0 +1,60 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef KALGEBRAMOBILE_H +#define KALGEBRAMOBILE_H + +#include +#include + +class QModelIndex; +namespace Analitza { + class Variables; + class PlotsModel; +} + +class KAlgebraMobile : public QObject +{ + Q_OBJECT + Q_PROPERTY(QSharedPointer variables READ variables NOTIFY variablesChanged) + public: + explicit KAlgebraMobile(QObject* parent=0); + + static KAlgebraMobile* self(); + void notifyVariablesChanged() { variablesChanged(); } + + public Q_SLOTS: + Analitza::PlotsModel* functionsModel(); + QSharedPointer variables() const; + + private Q_SLOTS: + void functionRemoved(const QModelIndex& parent, int start, int end); + void functionModified(const QModelIndex& idxA, const QModelIndex& idxB); + void functionInserted(const QModelIndex& parent, int start, int end); + + Q_SIGNALS: + void variablesChanged(); + + private: + static KAlgebraMobile* s_self; + + Analitza::PlotsModel* m_functionsModel; + QSharedPointer m_vars; +}; + +#endif // KALGEBRAMOBILE_H diff --git a/mobile/main.cpp b/mobile/main.cpp new file mode 100644 index 0000000..520f1ff --- /dev/null +++ b/mobile/main.cpp @@ -0,0 +1,76 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kalgebramobile.h" +#include "kalgebra_version.h" +#include "pluginsmodel.h" + +Q_DECL_EXPORT int main(int argc, char *argv[]) +{ +#ifdef __ANDROID__ + qputenv("QT_QUICK_CONTROLS_STYLE", "Material"); +#endif + QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QGuiApplication app(argc, argv); + KLocalizedString::setApplicationDomain("kalgebramobile"); + KAboutData about(QStringLiteral("kalgebramobile"), QStringLiteral("KAlgebra"), QStringLiteral(KALGEBRA_VERSION_STRING), i18n("A portable calculator"), + KAboutLicense::GPL, i18n("(C) 2006-2018 Aleix Pol i Gonzalez")); + about.addAuthor( QStringLiteral("Aleix Pol i Gonzalez"), QString(), QStringLiteral("aleixpol@kde.org") ); + about.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails")); + KAboutData::setApplicationData(about); + + { + QCommandLineParser parser; + about.setupCommandLine(&parser); + parser.process(app); + about.processCommandLine(&parser); + } + + KAlgebraMobile widget; + + QString main = PluginsModel::pluginsDirectoryPath()+"/widgets/KAlgebraMobile.qml"; + + QDir dir = QFileInfo(main).dir(); + dir.cdUp(); + + QQmlApplicationEngine engine; + engine.rootContext()->setContextProperty(QStringLiteral("app"), &widget); + engine.addImportPath(dir.path()); + + engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); + + engine.load(QUrl::fromLocalFile(main)); + return app.exec(); +} diff --git a/mobile/org.kde.kalgebramobile.appdata.xml b/mobile/org.kde.kalgebramobile.appdata.xml new file mode 100644 index 0000000..71e4f1d --- /dev/null +++ b/mobile/org.kde.kalgebramobile.appdata.xml @@ -0,0 +1,92 @@ + + + org.kde.kalgebra.desktop + CC0-1.0 + GPL-2.0+ + KAlgebra Mobile + KAlgebra mòbil + KAlgebra mòbil + Mobilní KAlgebra + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra Mobile + KAlgebra-mobiel + KAlgebra mobil + Mobilna KAlgebra + KAlgebra Móvel + KAlgebra Móvel + KAlgebra Mobile + Mobil Kalgebra + Мобільна KAlgebra + xxKAlgebra Mobilexx + KAlgebra 移动版 + KAlgebra 行動版 +

Graph Calculator + Calculadora gràfica + Calculadora gràfica + Kalkulačka grafů + Graphenrechner + Graph Calculator + Calculadora gráfica + Kaaviolaskin + Calculatrice graphique + Calculadora gráfica + Kalkulator Grafik + Calcolatrice grafica + Rekenmachine met grafieken + Grafkalkulator + Kalkulator wykresów + Calculadora de Grafos + Calculadora gráfica + Графический калькулятор + Grafická kalkulačka + Grafräknare + Графічний калькулятор + xxGraph Calculatorxx + 图形计算器 + 圖形計算機 + +

KAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D.

+

El KAlgebra és una aplicació que pot substituir la calculadora gràfica. Té característiques numèriques, lògiques, simbòliques, i analítiques que permeten calcular expressions matemàtiques a la consola i dibuixar gràficament els resultats en 2D o 3D.

+

El KAlgebra és una aplicació que pot substituir la calculadora gràfica. Té característiques numèriques, lògiques, simbòliques, i analítiques que permeten calcular expressions matemàtiques a la consola i dibuixar gràficament els resultats en 2D o 3D.

+

KAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D.

+

KAlgebra es una aplicación que puede sustituir a su calculadora gráfica. Posee funciones numéricas, lógicas, simbólicas y de análisis que le permiten calcular expresiones matemáticas en la consola y representar gráficamente el resultado en 2 o 3 dimensiones.

+

KAlgebra on sovellus, joka voi korvata kaaviolaskimesi. Siinä on numeeriset, loogiset, symboliset ja analyysiominaisuudet, joiden avulla voit laskea matemaattisia lausekkeita konsolissa ja graafisesti kuvata tulokset kaksi- tai kolmiulotteisena.

+

KAlgebra est une application qui peut remplacer votre calculatrice graphique. Elle fournit des fonctions pour le calcul numérique, logique, symbolique et l'analyse qui vous permettent de calculer des expressions mathématiques dans la console et tracer graphiquement les résultats en 2D ou 3D.

+

KAlgebra é unha aplicación que pode substituír as calculadoras gráficas. Ten funcionalidades numéricas, lóxicas, simbólicas e de análise que permiten calcular expresións matemáticas na consola e trazar graficamente os resultados en 2D ou 3D.

+

KAlgebra adalah aplikasi yang dapat menggantikan kalkulator grafikmu. Ini memiliki fitur numerik, logis, simbolis, dan analisis yang memungkinkanmu menghitung ekspresi matematis pada konsol dan secara grafik memplot hasilnya dalam 2D atau 3D.

+

KAlgebra è un'applicazione che può sostituire la tua calcolatrice grafica. Ha funzionalità numeriche, logiche, simboliche e analitiche che ti permettono di calcolare espressioni matematiche via console e di visualizzare i risultati con un grafico 2D o 3D.

+

KAlgebra is een toepassing die uw grafische rekenmachine kan vervangen. Het heeft numerieke, logische, symbolische en analyse functies die u mathematische expressies op de console laar berekenen en de resultaten grafisch plot in 2D of 3D.

+

KAlgebra jest programem, który może zastąpić twój kalkulator graficzny. Ma możliwość przeprowadzania analiz numerycznych, logicznych i symbolicznych, które umożliwiają obliczanie wyrażeń matematycznych w konsoli i rysowanie wyników w 2D lub 3D.

+

O KAlgebra é uma aplicação que poderá substituir a sua calculadora gráfica. Tem funcionalidades numéricas, lógicas, simbólicas e analíticas que lhe permitem calcular expressões matemáticas na consola e lhe permite desenhar de forma gráfica os resultados em 2D e 3D.

+

KAlgebra é um aplicativo que poderá substituir a sua calculadora gráfica. Tem funcionalidades numéricas, lógicas, simbólicas e analíticas que lhe permitem calcular expressões matemáticas no console e também desenhar de forma gráfica os resultados em 2D e 3D.

+

KAlgebra je aplikácia, ktorá vie nahradiť vašu grafickú kalkulačku. Má numerické, logické, symbolické a analytické funkcie, ktoré vám umožnia vypočítať matematické výrazy na konzole a graficky znázorniť výsledky v 2D alebo 3D.

+

Kalgebra är en applikation som kan ersätta en grafräknare. Den har numeriska, logiska, symboliska och analytiska funktioner som låter dig beräkna matematiska uttryck i terminalen och rita upp resultaten grafiskt med två eller tre dimensioner.

+

KAlgebra — програма, яка може замінити вам графічний калькулятор. У ній ви знайдете можливості з числового, логічного, символічного аналізу, які нададуть вам змогу обчислювати математичні вирази у консолі і графічно будувати результати на площині або у просторі.

+

xxKAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D.xx

+

KAlgebra可以代替您的其他图形计算器。它包含数值计算、逻辑计算、符号计算,以及分析功能,能让您在控制台中计算数学表达式,并将函数结果绘制为2D或3D图像。

+

KAlgebra 是個能替代繪圖計算機的應用程式,它包含數字、邏輯、符號以及分析功能,讓您能在終端計算數學表達式,並用圖形化的方式以 2D 或 3D 繪製結果。

+
+ http://edu.kde.org/kalgebra/ + https://bugs.kde.org/enter_bug.cgi?format=guided&product=kalgebra + http://docs.kde.org/stable/en/kdeedu/kalgebra/index.html + https://kde.org/donate/ + + + http://kde.org/images/screenshots/kalgebra.png + + + KDE + + kalgebramobile + + + + + + diff --git a/mobile/org.kde.kalgebramobile.desktop b/mobile/org.kde.kalgebramobile.desktop new file mode 100644 index 0000000..4800dae --- /dev/null +++ b/mobile/org.kde.kalgebramobile.desktop @@ -0,0 +1,141 @@ +[Desktop Entry] +Name=KAlgebra Mobile +Name[bg]=KAlgebra (мобилен) +Name[bs]=KAlgebra Mobile +Name[ca]=KAlgebra mòbil +Name[ca@valencia]=KAlgebra mòbil +Name[cs]=Mobilní KAlgebra +Name[da]=KAlgebra Mobile +Name[de]=KAlgebra Mobil +Name[el]=KAlgebra Mobile +Name[en_GB]=KAlgebra Mobile +Name[es]=KAlgebra móvil +Name[et]=KAlgebra mobiilis +Name[eu]=KAlgebra mugikorra +Name[fa]=KAlgebra تلفن همراه +Name[fi]=KAlgebra mobiililaitteille +Name[fr]=KAlgebra Mobile +Name[ga]=KAlgebra Soghluaiste +Name[gl]=KAlgebra Mobile +Name[hu]=KAlgebra Mobile +Name[it]=KAlgebra Mobile +Name[ja]=KAlgebra モバイル +Name[kk]=KAlgebra Mobile +Name[km]=KAlgebra Mobile +Name[ko]=KAlgebra 모바일 +Name[lt]=KAlgebra Mobile +Name[lv]=KAlgebra Mobile +Name[mr]=के-एल्जिब्रा मोबाईल +Name[nb]=KAlgebra mobil +Name[nds]=KAlgebra för Mobilreedschappen +Name[nl]=KAlgebra-mobiel +Name[nn]=KAlgebra mobil +Name[pa]=ਕੇ-ਐਲਜਬਰਾ ਮੋਬਾਇਲ +Name[pl]=Mobilna KAlgebra +Name[pt]=KAlgebra Móvel +Name[pt_BR]=KAlgebra Móvel +Name[ru]=Мобильная KAlgebra +Name[sk]=KAlgebra Mobile +Name[sl]=KAlgebra Mobile +Name[sv]=Kalgebra för mobil +Name[te]=కె అల్జీబ్రా మొబైలు +Name[tr]=KAlgebra Mobil +Name[ug]=كۆچمە ئۈسكۈنىلەر ئۈچۈن KAlgebra +Name[uk]=Мобільна KAlgebra +Name[x-test]=xxKAlgebra Mobilexx +Name[zh_CN]=KAlgebra 移动 +Name[zh_TW]=KAlgebra 行動版 +GenericName=Pocket Graph Calculator +GenericName[bg]=Джобен графичен калкулатор +GenericName[bs]=Džepni graf kalkulator +GenericName[ca]=Calculadora gràfica de butxaca +GenericName[ca@valencia]=Calculadora gràfica de butxaca +GenericName[cs]=Kapesní grafická kalkulačka +GenericName[da]=Graflommeregner +GenericName[de]=Graphen-Taschenrechner +GenericName[el]=Φορητός γραφικός υπολογιστής +GenericName[en_GB]=Pocket Graph Calculator +GenericName[es]=Calculadora gráfica de bolsillo +GenericName[et]=Graafikute arvutaja taskus +GenericName[eu]=Sakeleko grafikoen kalkulagailua +GenericName[fa]=ماشین حساب جیبی گراف +GenericName[fi]=Graafinen laskin mobiililaitteille +GenericName[fr]=Calculatrice graphique de poche +GenericName[ga]=Áireamhán Grafach Póca +GenericName[gl]=Calculadora gráfica de peto +GenericName[hu]=Zsebszámológép +GenericName[it]=Calcolatrice grafica tascabile +GenericName[ja]=ポケットグラフ計算機 +GenericName[kk]=Ықшам график калькуляторы +GenericName[km]=ម៉ាស៊ីន​គិត​លេខ​ក្រាហ្វិក​ដែល​ដាក់​តាម​ខ្លួន​បាន +GenericName[ko]=포켓 그래핑 계산기 +GenericName[lt]=Kišeninis grafinis skaičiuotuvas +GenericName[lv]=Kabatas grafiskais kalkulators +GenericName[mr]=पाकिट आलेख गणकयंत्र +GenericName[nb]=Grafikk-lommekalkulator +GenericName[nds]=Taschenreekner för Diagrammen +GenericName[nl]=Zakrekenmachine met grafieken +GenericName[nn]=Grafisk lommereknar +GenericName[pa]=ਪਾਕਟ ਗਰਾਫ਼ ਕੈਲਕੂਲੇਟਰ +GenericName[pl]=Kieszonkowy kalkulator graficzny +GenericName[pt]=Calculadora Gráfica Portátil +GenericName[pt_BR]=Calculadora gráfica portátil +GenericName[ru]=Карманный графический калькулятор +GenericName[sk]=Vrecková grafická kalkulačka +GenericName[sl]=Žepno računalo z grafi +GenericName[sv]=Grafminiräknare +GenericName[te]=జేబులొ పట్టే రేఖాచిత్రం గనన యంత్రము +GenericName[tr]=Cep Grafik Hesap Makinesi +GenericName[uk]=Кишеньковий графічний калькулятор +GenericName[x-test]=xxPocket Graph Calculatorxx +GenericName[zh_CN]=口袋图形计算器 +GenericName[zh_TW]=行動版圖形計算器 +Comment=Pocket Math Expression Solver and Plotter +Comment[bg]=Джобен инструмент за решаване на математически задачи +Comment[bs]=Matematski sistem za rješavanje i crtač +Comment[ca]=Solucionador i representador gràfic de butxaca d'expressions matemàtiques +Comment[ca@valencia]=Solucionador i representador gràfic de butxaca d'expressions matemàtiques +Comment[cs]=Kapesní řešitel a souřadnicový zapisovač matematických výrazů +Comment[da]=Lommeregner til at løse og plotte matematiske udtryk +Comment[de]=Mathematischer Taschengleichungslöser und -zeichner +Comment[el]=Φορητός σχεδιαστής και επιλυτής μαθηματικών εκφράσεων +Comment[en_GB]=Pocket Maths Expression Solver and Plotter +Comment[es]=Resuelve y dibuja expresiones matemáticas +Comment[et]=Matemaatiliste avaldiste lahendaja ja joonistaja taskus +Comment[eu]=Sakeleko matematika adierazpenen ebazlea edo marrazlea +Comment[fa]=حل‌کننده جیبی عبارت ریاضی و رسام +Comment[fi]=Matemaattisten yhtälöiden ratkaisut ja kuvaajat mobiililaitteille +Comment[fr]=Traceur et résolveur de poche d'expressions mathématiques +Comment[ga]=Réiteoir agus Breacaire Matamaiticiúil don Phóca +Comment[gl]=Resolve e debuxa expresións matemáticas +Comment[hu]=Zsebszámológép matematikai kifejezések megoldására, görberajzolásra +Comment[it]=Risolutore e disegnatore tascabile di espressioni matematiche +Comment[ja]=ポケット数式ソルバー&プロッタ +Comment[kk]=Математикалық теңеуді шешіп графигін салу +Comment[km]=ឧបករណ៍​គូស​ក្រាហ្វិក និង​កម្មវិធី​ដោះស្រាយ​កន្សោម​​​គណិត​ដែល​ដាក់​តាម​ខ្លួន​បាន​ +Comment[ko]=포켓 수식 계산기와 그래핑 도구 +Comment[lt]=Matematinių reiškinių sprendikas ir grafikų braižiklis +Comment[lv]=Kabatas matemātisko izteiksmju risinātājs un attēlotājs +Comment[nb]=Matematisk uttrykksløser og plotter i lomma +Comment[nds]=Taschenreekner för't Lösen un Utdrucken vun Diagrammen +Comment[nl]=Op zak oplossen en plotten van wiskundige uitdrukkingen +Comment[nn]=Berbar matteoppgåveløysar og grafplottar +Comment[pl]=Kieszonkowe rozwiązywanie równań i rysowanie wykresów +Comment[pt]=Resolução e Desenho de Expressões Matemáticas Portátil +Comment[pt_BR]=Solucionador e visualizador portátil de expressões matemáticas +Comment[ru]=Карманное решение и построение графиков математических выражений +Comment[sk]=Vreckový riešiteľ a zapisovač matematických výrazov +Comment[sl]=Žepni reševalnik matematičnih enačb in risalnik grafov +Comment[sv]=Lösning och uppritning av matematiska uttryck i fickformat +Comment[tr]=Cep Matematiksel İfade Çözücü ve Çizici +Comment[ug]=كۆچمە ئۈسكۈنىلەر ئۈچۈن ماتېماتىكىلىق ئىپادىلەرنى يېشىش ۋە سىزىش قورالى +Comment[uk]=Кишеньковий розв’язувач математичних рівнянь та графопобудовник +Comment[x-test]=xxPocket Math Expression Solver and Plotterxx +Comment[zh_CN]=口袋数学式解决与绘图工具 +Comment[zh_TW]=行動版數學解題與繪圖 +Exec=kalgebramobile %u +MimeType=application/x-kalgebra; +Icon=kalgebra +Type=Application +Terminal=false +Categories=Qt;KDE;Education;Math;Science; diff --git a/mobile/plugins/About.qml b/mobile/plugins/About.qml new file mode 100644 index 0000000..9f85ecb --- /dev/null +++ b/mobile/plugins/About.qml @@ -0,0 +1,56 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.Controls 2.5 +import org.kde.analitza 1.0 +import org.kde.kirigami 2.6 as Kirigami + +Kirigami.AboutPage +{ + aboutData: { + "displayName": i18n("KAlgebra Mobile"), + "productName": "kalgebramobile", + "componentName": "kalgebramobile", + "shortDescription": i18n("A simple scientific calculator"), + "programIconName": "kalgebra", + "homepage": "https://edu.kde.org/kalgebra/", + "bugAddress": "submit@bugs.kde.org", + "otherText": "", + "authors": [ + { + "name": "Aleix Pol Gonzalez", + "task": "", + "emailAddress": "aleixpol@kde.org", + "webAddress": "https://proli.net", + "ocsUsername": "" + } + ], + "credits": [], + "translators": [], + "licenses": [ + { + "name": "GPL v2", + "spdx": "GPL-2.0" + } + ], + "copyrightStatement": "© 2007-2019 by Aleix Pol Gonzalez", + "desktopFileName": "org.kde.kalgebramobile" + } +} diff --git a/mobile/plugins/CMakeLists.txt b/mobile/plugins/CMakeLists.txt new file mode 100644 index 0000000..140fbaf --- /dev/null +++ b/mobile/plugins/CMakeLists.txt @@ -0,0 +1,10 @@ +add_subdirectory(widgets) + +set(QML_SRC Console.qml Plot2D.qml Plot3D.qml Tables.qml Dictionary.qml + About.qml VariablesView.qml) +install(FILES ${QML_SRC} + kalgebraabout.json kalgebraconsole.json kalgebraplot2d.json kalgebraplot3d.json + kalgebratables.json kalgebravariables.json kalgebradictionary.json + DESTINATION ${KDE_INSTALL_DATADIR}/kalgebramobile/plugins/ +) +ADD_CUSTOM_TARGET(QML SOURCES ${QML_SRC}) diff --git a/mobile/plugins/Console.qml b/mobile/plugins/Console.qml new file mode 100644 index 0000000..106ba2c --- /dev/null +++ b/mobile/plugins/Console.qml @@ -0,0 +1,158 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import org.kde.kirigami 2.5 as Kirigami +import QtQuick 2.2 +import QtQuick.Controls 2.5 as QQC2 +import QtQml.Models 2.10 +import QtQuick.Dialogs 1.0 +import org.kde.analitza 1.0 +import org.kde.kalgebra.mobile 1.0 +import widgets 1.0 + +KAlgebraPage +{ + id: page + ListModel { id: itemModel } + + Clipboard { + id: clipboard + } + + ConsoleModel { + id: consoleModel + variables: app.variables + onMessage: { + itemModel.append({ result: msg, expression: result.toString() }) + input.selectAll() + view.currentIndex = view.count-1 + view.positionViewAtIndex(view.currentIndex, ListView.Contain) + } + } + + FileDialog { + id: fileDialog + folder: shortcuts.home + onAccepted: proceed() + + property var proceed + } + + contextualActions: [ + Kirigami.Action { + text: i18n("Load Script...") + onTriggered: { + fileDialog.title = text + fileDialog.proceed = function() { consoleModel.loadScript(fileDialog.fileUrl) } + fileDialog.nameFilters = [ i18n("Script (*.kal)") ] + fileDialog.selectExisting = true + fileDialog.open() + } + }, + Kirigami.Action { + text: i18n("Save Script...") + onTriggered: { + fileDialog.title = text + fileDialog.proceed = function() { consoleModel.saveScript(fileDialog.fileUrl) } + fileDialog.nameFilters = [ i18n("Script (*.kal)") ] + fileDialog.selectExisting = false + fileDialog.open() + } + }, + //TODO: Recent scripts + Kirigami.Action { + text: i18n("Export Log...") + onTriggered: { + fileDialog.title = text + fileDialog.proceed = function() { consoleModel.saveLog(fileDialog.fileUrl) } + fileDialog.nameFilters = [ i18n("HTML (*.html)") ] + fileDialog.selectExisting = false + fileDialog.open() + } + }, + // -- + Kirigami.Action { + text: consoleModel.mode === ConsoleModel.Calculate ? i18n("Evaluate...") : i18n("Calculate...") + onTriggered: consoleModel.mode = consoleModel.mode === ConsoleModel.Calculate ? ConsoleModel.Evaluate : ConsoleModel.Calculate + }, + // -- + Kirigami.Action { + iconName: "edit-clear-history" + text: i18n("Clear Log") + onTriggered: itemModel.clear() + } + ] + + Kirigami.CardsListView { + id: view + model: itemModel + + delegate: Kirigami.Card { + contentItem: QQC2.Label { text: model.result } + + hiddenActions: [ + QQC2.Action { + readonly property string value: result.replace(/<[^>]*>/g, ''); + text: i18n("Copy \"%1\"", value) + icon.name: "edit-copy" + onTriggered: { + clipboard.content = value + } + } + ] + actions: [ + Kirigami.Action { + enabled: app.functionsModel().canAddFunction(expression, 2, app.variables) + text: i18n("2D Plot") + onTriggered: { + app.functionsModel().addFunction(expression, 2, app.variables) + } + }, + Kirigami.Action { + enabled: app.functionsModel().canAddFunction(expression, 4, app.variables) + text: i18n("3D Plot") + onTriggered: { + app.functionsModel().addFunction(expression, 4, app.variables) + } + } + ] + } + + anchors { + top: parent.top + bottom: input.top + left: parent.left + right: parent.right + } + } + + ExpressionInput { + id: input + focus: true + + Keys.onReturnPressed: { + consoleModel.addOperation(text) + } + + anchors { + bottom: parent.bottom + left: parent.left + right: parent.right + } + } +} diff --git a/mobile/plugins/Dictionary.qml b/mobile/plugins/Dictionary.qml new file mode 100644 index 0000000..a10cce7 --- /dev/null +++ b/mobile/plugins/Dictionary.qml @@ -0,0 +1,91 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import org.kde.analitza 1.0 +import widgets 1.0 +import org.kde.kirigami 2.5 as Kirigami +import QtQuick.Controls 2.5 + +KAlgebraPage +{ + id: page + anchors.margins: 0 + + function updateGraph() { + view.model.clear(); + view.resetViewport(); + view.addFunction(operators.data(operators.index(chosebox.currentIndex,3)), app.variables); + } + + ColumnLayout { + id: descriptioncol + + anchors.fill: parent + spacing: 10 + + ComboBox { + id: chosebox + Layout.fillWidth: true + textRole: "display" + + model: OperatorsModel { + id: operators + } + + onCurrentIndexChanged: { + page.updateGraph(); + } + } + + GridLayout { + id: descgrid + columns: 2 + Layout.fillWidth: true + + Label { text: operators.headerData(0,Qt.Horizontal) } + Label { text: operators.data(operators.index(chosebox.currentIndex,0)) } + Label { text: operators.headerData(1,Qt.Horizontal) } + Label { text: operators.data(operators.index(chosebox.currentIndex,1)) } + Label { text: operators.headerData(2,Qt.Horizontal) } + Label { text: operators.data(operators.index(chosebox.currentIndex,2)) } + Label { text: operators.headerData(3,Qt.Horizontal) } + Label { text: operators.data(operators.index(chosebox.currentIndex,3)) } + } + + Rectangle { + color: 'white' + Layout.fillWidth: true + Layout.fillHeight: true + + Graph2D { + id: view + anchors { + fill: parent + } + model: PlotsModel { + id: plotsModel + } + Component.onCompleted: { + page.updateGraph(); + } + } + } + } +} diff --git a/mobile/plugins/Plot2D.qml b/mobile/plugins/Plot2D.qml new file mode 100644 index 0000000..9787217 --- /dev/null +++ b/mobile/plugins/Plot2D.qml @@ -0,0 +1,127 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.Dialogs 1.0 +import QtQuick.Controls 2.3 +import org.kde.kirigami 2.5 as Kirigami +import org.kde.analitza 1.0 +import widgets 1.0 + +KAlgebraPage +{ + id: page + + leftPadding: 0 + rightPadding: 0 + topPadding: 0 + bottomPadding: 0 + + + FileDialog { + id: fileDialog + folder: shortcuts.home + onAccepted: proceed() + + property var proceed + } + + contextualActions: [ + Kirigami.Action { + text: i18n("Save...") + onTriggered: { + fileDialog.title = text + fileDialog.proceed = function() { + var ret = view.save(fileDialog.fileUrl) + console.log("saved 2D", fileDialog.fileUrl, ret) + } + fileDialog.nameFilters = view.filters + fileDialog.selectExisting = false + fileDialog.open() + } + }, + Kirigami.Action { + text: i18n("View Grid") + checkable: true + checked: view.showGrid + onToggled: view.showGrid = checked + }, + Kirigami.Action { + text: i18n("Reset Viewport") + onTriggered: view.resetViewport() + } + //custom viewport? + ] + + Rectangle { + anchors.fill: parent + height: 200 + color: 'white' + + Graph2D { + id: view + anchors.fill: parent + model: app.functionsModel() + + Kirigami.OverlaySheet { + id: dialog + + header: RowLayout { + width: parent.width + ExpressionInput { + id: input + Layout.fillWidth: true + text: "sin x" + focus: true + Component.onCompleted: selectAll() + onAccepted: { + input.selectAll() + view.addFunction(input.text, app.variables) + } + } + Button { + icon.name: "list-add" + onClicked: { + input.selectAll() + view.addFunction(input.text, app.variables) + } + } + } + contentItem: Kirigami.CardsListView { + delegate: Kirigami.Card { contentItem: Label { text: model.description } } + model: app.functionsModel() + + footer: Button { + text: i18n("Clear All") + onClicked: { + app.functionsModel().clear(); + view.resetViewport(); + } + } + } + } + + AddButton { + onClicked: { + dialog.open(); + } + } + } + } +} diff --git a/mobile/plugins/Plot3D.qml b/mobile/plugins/Plot3D.qml new file mode 100644 index 0000000..5dad327 --- /dev/null +++ b/mobile/plugins/Plot3D.qml @@ -0,0 +1,122 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.0 +import org.kde.analitza 1.1 +import widgets 1.0 +import QtQuick.Controls 2.5 +import org.kde.kirigami 2.5 as Kirigami + +KAlgebraPage +{ + id: page + + leftPadding: 0 + rightPadding: 0 + topPadding: 0 + bottomPadding: 0 + + FileDialog { + id: fileDialog + folder: shortcuts.home + onAccepted: proceed() + + property var proceed + } + + contextualActions: [ + Action { + text: i18n("Save...") + onTriggered: { + fileDialog.title = text + fileDialog.proceed = function() { + var ret = view.save(fileDialog.fileUrl) + console.log("saved 3D", fileDialog.fileUrl, ret) + } + fileDialog.nameFilters = view.filters + fileDialog.selectExisting = false + fileDialog.open() + } + }, + Action { + text: i18n("Reset Viewport") + onTriggered: view.resetViewport() + } + ] + + Graph3D + { + id: view + anchors.fill: parent + model: app.functionsModel() + + Kirigami.OverlaySheet { + id: dialog + + header: RowLayout { + width: parent.width + ExpressionInput { + id: input + Layout.fillWidth: true + text: "sin x*sin y" + focus: true + Component.onCompleted: selectAll() + onAccepted: { + input.selectAll() + var err = app.functionsModel().addFunction(input.text, 4, app.variables) + if (err.length>0) + console.warn("errors:", err) + } + } + Button { + icon.name: "list-add" + onClicked: { + input.selectAll() + var err = view.addFunction(input.text, app.variables) + if (err.length>0) + console.warn("errors:", err) + } + } + } + + contentItem: Kirigami.CardsListView { + id: list + delegate: Kirigami.Card { + contentItem: Label { text: model.description } + } + model: view.model + + footer: Button { + text: i18n("Clear All") + onClicked: { + view.model.clear() + view.resetView() + } + } + } + } + + AddButton { + onClicked: { + dialog.open(); + } + } + } +} diff --git a/mobile/plugins/Tables.qml b/mobile/plugins/Tables.qml new file mode 100644 index 0000000..7480eac --- /dev/null +++ b/mobile/plugins/Tables.qml @@ -0,0 +1,112 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import org.kde.analitza 1.0 +import widgets 1.0 +import QtQuick.Controls 2.5 +import org.kde.kirigami 2.5 as Kirigami + +KAlgebraPage +{ + Analitza { + id: a + variables: app.variables + } + + function calculateTable() { + resultsModel.clear(); + + var tmp = a.unusedVariableName() + var ret = a.insertVariable(tmp, a.dependenciesToLambda(input.text)) + var ffrom = from.realValue, fto=to.realValue, fstep=step.realValue; +// console.log("chancho (" + ffrom + ", " + fto + " : " + fstep + ") " + ret); + if((fto-ffrom>0)!=(fstep>0)) { + fstep *= -1; + step.value = fstep + } +// console.log("chancho2 (" + ffrom + ", " + fto + " : " + fstep + ") " + ret); + + if(fstep===0) { + resultsModel.append( { element: i18n("Errors: The step cannot be 0") } ); + } else if(ffrom === fto) { + resultsModel.append( { element: i18n("Errors: The start and end are the same") } ); + } else if(!a.isCorrect) { + resultsModel.append( { element: i18n("Errors: %1", ret ? ret : a.errors) } ); + } else { + for (var i=ffrom; i<=fto && i>=ffrom && a.isCorrect; i+=fstep) { + var args = new Array(); + args[0]=i; + var expr = a.executeFunc(tmp, args); + resultsModel.append( { element: i +" = "+ expr.expression } ); + } + } + + a.removeVariable(tmp); + } + + ColumnLayout { + id: inputcol + + anchors { + top: parent.top + left: parent.left + right: parent.right + } + spacing: 10 + + GridLayout { + id: ins + columns: 2 + Layout.fillWidth: true + + Label { text: i18n("Input:") } + ExpressionInput { + id: input + text: "sin x"; + Layout.fillWidth: true + onAccepted: calculateTable(); + } + Label { text: i18n("From:") } RealInput { id: from; text: "0"; Layout.fillWidth: true; onAccepted: calculateTable() } + Label { text: i18n("To:") } RealInput { id: to; text: "10"; Layout.fillWidth: true; onAccepted: calculateTable() } + Label { text: i18n("Step:") } RealInput { id: step; text: "1"; Layout.fillWidth: true; onAccepted: calculateTable() } + } + + Button { + Layout.alignment: Qt.AlignRight + text: i18n("Run") + + onClicked: calculateTable() + } + } + + Kirigami.CardsListView { + width: parent.width + anchors { + top: inputcol.bottom + bottom: parent.bottom + topMargin: 5 + } + currentIndex: -1 + + model: ListModel { id: resultsModel } + delegate: Kirigami.Card { contentItem: Label { text: model.element} } + header: Label { text: i18n("Results:") } + } +} diff --git a/mobile/plugins/VariablesView.qml b/mobile/plugins/VariablesView.qml new file mode 100644 index 0000000..cea7243 --- /dev/null +++ b/mobile/plugins/VariablesView.qml @@ -0,0 +1,35 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import org.kde.analitza 1.0 +import widgets 1.0 +import org.kde.kirigami 2.5 as Kirigami +import QtQuick.Controls 2.5 as QQC2 + +KAlgebraPage +{ + Kirigami.CardsListView { + anchors.fill: parent + model: VariablesModel { variables: app.variables } + currentIndex: -1 + delegate: Kirigami.Card { + contentItem: QQC2.Label { text: model.whatsThis } + } + } +} diff --git a/mobile/plugins/kalgebraabout.json b/mobile/plugins/kalgebraabout.json new file mode 100644 index 0000000..6a0b74e --- /dev/null +++ b/mobile/plugins/kalgebraabout.json @@ -0,0 +1,56 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Icon": "help-about", + "Name": "About KAlgebra", + "Name[ca@valencia]": "Quant al KAlgebra", + "Name[ca]": "Quant al KAlgebra", + "Name[cs]": "O aplikaci KAlgebra", + "Name[de]": "Über KAlgebra", + "Name[en_GB]": "About KAlgebra", + "Name[es]": "Acerca de KAlgebra", + "Name[fi]": "Tietoa KAlgebrasta", + "Name[fr]": "À propos de KAlgebra", + "Name[gl]": "Sobre KAlgebra", + "Name[it]": "Informazioni su KAlgebra", + "Name[nl]": "Over KAlgebra", + "Name[nn]": "Om KAlgebra", + "Name[pl]": "O KAlgebrze", + "Name[pt]": "Acerca do KAlgebra", + "Name[pt_BR]": "Sobre o KAlgebra", + "Name[sk]": "O KAlgebra", + "Name[sv]": "Om Kalgebra", + "Name[uk]": "Про KAlgebra", + "Name[x-test]": "xxAbout KAlgebraxx", + "Name[zh_CN]": "关于 KAlgebra", + "Name[zh_TW]": "關於 KAlgebra" + }, + "X-KAlgebra-Priority": "-10", + "X-KDE-PluginInfo-Name": "About.qml" +} diff --git a/mobile/plugins/kalgebraconsole.json b/mobile/plugins/kalgebraconsole.json new file mode 100644 index 0000000..f71f57a --- /dev/null +++ b/mobile/plugins/kalgebraconsole.json @@ -0,0 +1,78 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Description": "Scientific calculator", + "Description[ca@valencia]": "Calculadora científica", + "Description[ca]": "Calculadora científica", + "Description[cs]": "Vědecká kalkulačka", + "Description[de]": "Wissenschaftlicher Taschenrechner", + "Description[en_GB]": "Scientific calculator", + "Description[es]": "Calculadora científica", + "Description[fi]": "Tieteellinen laskin", + "Description[fr]": "Calculatrice scientifique", + "Description[gl]": "Calculadora científica", + "Description[it]": "Calcolatrice scientifica", + "Description[nl]": "Wetenschappelijke rekenmachine", + "Description[nn]": "Vitskapleg kalkulator", + "Description[pl]": "Kalkulator naukowy", + "Description[pt]": "Calculadora científica", + "Description[pt_BR]": "Calculadora científica", + "Description[sk]": "Vedecká kalkulačka", + "Description[sv]": "Vetenskaplig räknare", + "Description[uk]": "Інженерний калькулятор", + "Description[x-test]": "xxScientific calculatorxx", + "Description[zh_CN]": "科学计算器", + "Description[zh_TW]": "科學計算機", + "Icon": "utilities-terminal", + "Name": "Calculator", + "Name[ca@valencia]": "Calculadora", + "Name[ca]": "Calculadora", + "Name[cs]": "Kalkulačka", + "Name[de]": "Rechner", + "Name[en_GB]": "Calculator", + "Name[es]": "Calculadora", + "Name[fi]": "Laskin", + "Name[fr]": "Calculatrice", + "Name[gl]": "Calculadora", + "Name[it]": "Calcolatrice", + "Name[nl]": "Rekenmachine", + "Name[nn]": "Kalkulator", + "Name[pl]": "Kalkulator", + "Name[pt]": "Calculadora", + "Name[pt_BR]": "Calculadora", + "Name[sk]": "Kalkulačka", + "Name[sv]": "Räknare", + "Name[uk]": "Калькулятор", + "Name[x-test]": "xxCalculatorxx", + "Name[zh_CN]": "计算器", + "Name[zh_TW]": "計算機" + }, + "X-KAlgebra-Priority": "1000", + "X-KDE-PluginInfo-Name": "Console.qml" +} diff --git a/mobile/plugins/kalgebradictionary.json b/mobile/plugins/kalgebradictionary.json new file mode 100644 index 0000000..5a7ed58 --- /dev/null +++ b/mobile/plugins/kalgebradictionary.json @@ -0,0 +1,78 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Artur Puzio", + "Name[ca@valencia]": "Artur Puzio", + "Name[ca]": "Artur Puzio", + "Name[cs]": "Artur Puzio", + "Name[de]": "Artur Puzio", + "Name[en_GB]": "Artur Puzio", + "Name[es]": "Artur Puzio", + "Name[fi]": "Artur Puzio", + "Name[fr]": "Artur Puzio", + "Name[gl]": "Artur Puzio", + "Name[it]": "Artur Puzio", + "Name[nl]": "Artur Puzio", + "Name[nn]": "Artur Puzio", + "Name[pl]": "Artur Puzio", + "Name[pt]": "Artur Puzio", + "Name[pt_BR]": "Artur Puzio", + "Name[ru]": "Artur Puzio", + "Name[sk]": "Artur Puzio", + "Name[sv]": "Artur Puzio", + "Name[uk]": "Artur Puzio", + "Name[x-test]": "xxArtur Puzioxx", + "Name[zh_CN]": "Artur Puzio", + "Name[zh_TW]": "Artur Puzio", + "e-mail": "cytadela8@op.pl" + } + ], + "Description": "List of available functions", + "Description[ca@valencia]": "Llista de funcions disponibles", + "Description[ca]": "Llista de funcions disponibles", + "Description[de]": "Liste aller vorhandenen Funktionen", + "Description[en_GB]": "List of available functions", + "Description[es]": "Lista de funciones disponibles", + "Description[fi]": "Käytettävissä olevien funktioiden luettelo", + "Description[fr]": "Liste des fonctions disponibles", + "Description[gl]": "Lista das funcións dispoñíbeis", + "Description[it]": "Lista delle funzioni disponibili", + "Description[nl]": "Beschikbare functies", + "Description[nn]": "List over tilgjengelege funksjonar", + "Description[pl]": "Wykaz dostępnych możliwości", + "Description[pt]": "Lista de funções disponíveis", + "Description[pt_BR]": "Lista das funções disponíveis", + "Description[sk]": "Zoznam dostupných funkcií", + "Description[sv]": "Lista över tillgängliga funktioner", + "Description[uk]": "Список доступних функцій", + "Description[x-test]": "xxList of available functionsxx", + "Description[zh_CN]": "可用函数列表", + "Description[zh_TW]": "列出可使用的函數", + "Icon": "documentation", + "Name": "Dictionary", + "Name[ca@valencia]": "Diccionari", + "Name[ca]": "Diccionari", + "Name[cs]": "Slovník", + "Name[de]": "Funktionen", + "Name[en_GB]": "Dictionary", + "Name[es]": "Diccionario", + "Name[fi]": "Sanakirja", + "Name[fr]": "Dictionnaire", + "Name[gl]": "Dicionario", + "Name[it]": "Dizionario", + "Name[nl]": "Woordenboek", + "Name[nn]": "Ordliste", + "Name[pl]": "Słownik", + "Name[pt]": "Dicionário", + "Name[pt_BR]": "Dicionário", + "Name[sk]": "Slovník", + "Name[sv]": "Ordlista", + "Name[uk]": "Словник", + "Name[x-test]": "xxDictionaryxx", + "Name[zh_CN]": "词典", + "Name[zh_TW]": "字典" + }, + "X-KAlgebra-Priority": "-1", + "X-KDE-PluginInfo-Name": "Dictionary.qml" +} diff --git a/mobile/plugins/kalgebraplot2d.json b/mobile/plugins/kalgebraplot2d.json new file mode 100644 index 0000000..2319573 --- /dev/null +++ b/mobile/plugins/kalgebraplot2d.json @@ -0,0 +1,75 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Description": "Draws any 2D graph you want", + "Description[ca@valencia]": "Dibuixa els gràfics 2D que tu vulgues", + "Description[ca]": "Dibuixa els gràfics 2D que tu vulguis", + "Description[en_GB]": "Draws any 2D graph you want", + "Description[es]": "Dibuja cualquier gráfico 2D que desee", + "Description[fi]": "Piirtää haluamasi kaksiulotteisen kaavion", + "Description[fr]": "Dessine n'importe quel graphe 2D", + "Description[gl]": "Debuxa calquera gráfico en 2D", + "Description[it]": "Disegna qualsiasi grafico 2D tu voglia", + "Description[nl]": "Tekent elke gewenste 2D-grafiek", + "Description[nn]": "Teiknar alle 2D-grafar du måtte ønskja", + "Description[pl]": "Rysuje wykres 2D taki jaki chcesz", + "Description[pt]": "Desenha qualquer gráfico 2D que desejar", + "Description[pt_BR]": "Desenha qualquer gráfico 2D que você quiser", + "Description[sk]": "Nakreslí akýkoľvek požadovaný 2D graf", + "Description[sv]": "Ritar vilken tvådimensionell graf som helst", + "Description[uk]": "Креслить будь-який потрібний вам двовимірний графік", + "Description[x-test]": "xxDraws any 2D graph you wantxx", + "Description[zh_CN]": "绘制想要的二维图", + "Description[zh_TW]": "繪製任何您想要的 2D 圖形", + "Icon": "draw-bezier-curves", + "Name": "Graph 2D", + "Name[ca@valencia]": "Gràfics 2D", + "Name[ca]": "Gràfics 2D", + "Name[cs]": "Grafy 2D", + "Name[en_GB]": "Graph 2D", + "Name[es]": "Gráfico 2D", + "Name[fi]": "Kaksiulotteinen kaavio", + "Name[fr]": "Graphe 2D", + "Name[gl]": "Gráfico en 2D", + "Name[it]": "Grafico 2D", + "Name[nl]": "Grafiek 2D", + "Name[nn]": "2D-graf", + "Name[pl]": "Wykres 2D", + "Name[pt]": "Gráfico 2D", + "Name[pt_BR]": "Gráfico 2D", + "Name[sk]": "Graf 2D", + "Name[sv]": "Tvådimensionella grafer", + "Name[uk]": "Двовимірний графік", + "Name[x-test]": "xxGraph 2Dxx", + "Name[zh_CN]": "二维图", + "Name[zh_TW]": "2D 圖形" + }, + "X-KAlgebra-Priority": "100", + "X-KDE-PluginInfo-Name": "Plot2D.qml" +} diff --git a/mobile/plugins/kalgebraplot3d.json b/mobile/plugins/kalgebraplot3d.json new file mode 100644 index 0000000..26824e0 --- /dev/null +++ b/mobile/plugins/kalgebraplot3d.json @@ -0,0 +1,75 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Description": "Draws any 3D graph you want", + "Description[ca@valencia]": "Dibuixa els gràfics 3D que tu vulgues", + "Description[ca]": "Dibuixa els gràfics 3D que tu vulguis", + "Description[en_GB]": "Draws any 3D graph you want", + "Description[es]": "Dibuja cualquier gráfico 3D que desee", + "Description[fi]": "Piirtää haluamasi kolmiulotteisen kaavion", + "Description[fr]": "Dessine n'importe quel graphe 3D", + "Description[gl]": "Debuxa calquera gráfico en 3D", + "Description[it]": "Disegna qualsiasi grafico 3D tu voglia", + "Description[nl]": "Tekent elke gewenste 3D-grafiek", + "Description[nn]": "Teiknar alle 3D-grafar du måtte ønskja", + "Description[pl]": "Rysuje wykres 3D taki jaki chcesz", + "Description[pt]": "Desenha qualquer gráfico 3D que desejar", + "Description[pt_BR]": "Desenha qualquer gráfico 3D que você quiser", + "Description[sk]": "Nakreslí akýkoľvek požadovaný 3D graf", + "Description[sv]": "Ritar vilken tredimensionell graf som helst", + "Description[uk]": "Креслить будь-який потрібний вам просторовий графік", + "Description[x-test]": "xxDraws any 3D graph you wantxx", + "Description[zh_CN]": "绘制想要的三维图", + "Description[zh_TW]": "繪製任何您想要的 3D 圖形", + "Icon": "adjustrgb", + "Name": "Graph 3D", + "Name[ca@valencia]": "Gràfics 3D", + "Name[ca]": "Gràfics 3D", + "Name[cs]": "Grafy 3D", + "Name[en_GB]": "Graph 3D", + "Name[es]": "Gráfico 3D", + "Name[fi]": "Kolmiulotteinen kaavio", + "Name[fr]": "Graphe 3D", + "Name[gl]": "Gráfico en 3D", + "Name[it]": "Grafico 2D", + "Name[nl]": "Grafiek 3D", + "Name[nn]": "3D-graf", + "Name[pl]": "Wykres 3D", + "Name[pt]": "Gráfico 3D", + "Name[pt_BR]": "Gráfico 3D", + "Name[sk]": "Graf 3D", + "Name[sv]": "Tredimensionella grafer", + "Name[uk]": "Просторовий графік", + "Name[x-test]": "xxGraph 3Dxx", + "Name[zh_CN]": "三维图", + "Name[zh_TW]": "3D 圖形" + }, + "X-KAlgebra-Priority": "100", + "X-KDE-PluginInfo-Name": "Plot3D.qml" +} diff --git a/mobile/plugins/kalgebratables.json b/mobile/plugins/kalgebratables.json new file mode 100644 index 0000000..03c2206 --- /dev/null +++ b/mobile/plugins/kalgebratables.json @@ -0,0 +1,77 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Description": "Easily create value tables", + "Description[ca@valencia]": "Crea fàcilment taules de valors", + "Description[ca]": "Crea fàcilment taules de valors", + "Description[de]": "Wertetabellen einfach erstellen", + "Description[en_GB]": "Easily create value tables", + "Description[es]": "Crear tablas de valores con facilidad", + "Description[fi]": "Luo arvotaulukoita helposti", + "Description[fr]": "Crée facilement des tableaux de valeurs", + "Description[gl]": "Crear facilmente táboas de valores", + "Description[it]": "Crea facilmente tabelle di valori", + "Description[nl]": "Eenvoudig maken van tabellen", + "Description[nn]": "Lag verditabellar på ein enkel måte", + "Description[pl]": "Łatwe tworzenie tabel wartości", + "Description[pt]": "Criar facilmente tabelas de valores", + "Description[pt_BR]": "Criar facilmente tabelas de valores", + "Description[sk]": "Ľahko vytvárajte tabuľky s hodnotami", + "Description[sv]": "Enkelt skapade värdetabeller", + "Description[uk]": "Просте створення таблиць значень", + "Description[x-test]": "xxEasily create value tablesxx", + "Description[zh_CN]": "方便地创建数值表", + "Description[zh_TW]": "輕鬆建立數值表格", + "Icon": "kspread", + "Name": "Value Tables", + "Name[ca@valencia]": "Taula de valors", + "Name[ca]": "Taula de valors", + "Name[cs]": "Tabulky hodnot", + "Name[de]": "Wertetabellen", + "Name[en_GB]": "Value Tables", + "Name[es]": "Tablas de valores", + "Name[fi]": "Arvotaulukot", + "Name[fr]": "Tableaux de valeurs", + "Name[gl]": "Táboas de valores", + "Name[it]": "Tabelle di valori", + "Name[nl]": "Tabellen", + "Name[nn]": "Verditabellar", + "Name[pl]": "Tabela wartości", + "Name[pt]": "Tabelas de Valores", + "Name[pt_BR]": "Tabelas de valores", + "Name[sk]": "Tabuľky s hodnotami", + "Name[sv]": "Värdetabeller", + "Name[uk]": "Таблиці значень", + "Name[x-test]": "xxValue Tablesxx", + "Name[zh_CN]": "数值表", + "Name[zh_TW]": "數值表格" + }, + "X-KAlgebra-Priority": "10", + "X-KDE-PluginInfo-Name": "Tables.qml" +} diff --git a/mobile/plugins/kalgebravariables.json b/mobile/plugins/kalgebravariables.json new file mode 100644 index 0000000..d64469c --- /dev/null +++ b/mobile/plugins/kalgebravariables.json @@ -0,0 +1,77 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Aleix Pol Gonzalez", + "Name[ca@valencia]": "Aleix Pol Gonzalez", + "Name[ca]": "Aleix Pol Gonzalez", + "Name[cs]": "Aleix Pol Gonzalez", + "Name[de]": "Aleix Pol Gonzalez", + "Name[en_GB]": "Aleix Pol Gonzalez", + "Name[es]": "Aleix Pol Gonzalez", + "Name[fi]": "Aleix Pol Gonzalez", + "Name[fr]": "Aleix Pol Gonzalez", + "Name[gl]": "Aleix Pol Gonzalez", + "Name[it]": "Aleix Pol Gonzalez", + "Name[nl]": "Aleix Pol Gonzalez", + "Name[nn]": "Aleix Pol Gonzalez", + "Name[pl]": "Aleix Pol Gonzalez", + "Name[pt]": "Aleix Pol Gonzalez", + "Name[pt_BR]": "Aleix Pol Gonzalez", + "Name[ru]": "Aleix Pol Gonzalez", + "Name[sk]": "Aleix Pol Gonzalez", + "Name[sv]": "Aleix Pol Gonzalez", + "Name[uk]": "Aleix Pol Gonzalez", + "Name[x-test]": "xxAleix Pol Gonzalezxx", + "Name[zh_CN]": "Aleix Pol Gonzalez", + "Name[zh_TW]": "Aleix Pol Gonzalez" + } + ], + "Description": "Displays the stored values", + "Description[ca@valencia]": "Ensenya les variables que hagueu guardat", + "Description[ca]": "Ensenya les variables que hagueu desat", + "Description[de]": "Anzeige der gespeicherten Werte", + "Description[en_GB]": "Displays the stored values", + "Description[es]": "Muestra los valores almacenados", + "Description[fi]": "Näyttää tallennetut arvot", + "Description[fr]": "Affiche les valeurs enregistrées", + "Description[gl]": "Mostra os valores almacenados", + "Description[it]": "Mostra i valori memorizzati", + "Description[nl]": "Toont opgeslagen waarden", + "Description[nn]": "Vis lagra verdiar", + "Description[pl]": "Wyświetla przechowywane wartości", + "Description[pt]": "Mostra os valores armazenados", + "Description[pt_BR]": "Mostra os valores armazenados", + "Description[sk]": "Zobrazuje uložené hodnoty", + "Description[sv]": "Visar de lagrade värdena", + "Description[uk]": "Показує збережені значення", + "Description[x-test]": "xxDisplays the stored valuesxx", + "Description[zh_CN]": "显示存储的值", + "Description[zh_TW]": "顯示儲存的數值", + "Icon": "document-properties", + "Name": "Variables", + "Name[ca@valencia]": "Variables", + "Name[ca]": "Variables", + "Name[cs]": "Proměnné", + "Name[de]": "Variablen", + "Name[en_GB]": "Variables", + "Name[es]": "Variables", + "Name[fi]": "Muuttujat", + "Name[fr]": "Variables", + "Name[gl]": "Variábeis", + "Name[it]": "Variabili", + "Name[nl]": "Variabelen", + "Name[nn]": "Variablar", + "Name[pl]": "Zmienne", + "Name[pt]": "Variáveis", + "Name[pt_BR]": "Variáveis", + "Name[sk]": "Premenné", + "Name[sv]": "Variabler", + "Name[uk]": "Змінні", + "Name[x-test]": "xxVariablesxx", + "Name[zh_CN]": "变量", + "Name[zh_TW]": "變數" + }, + "X-KAlgebra-Priority": "0", + "X-KDE-PluginInfo-Name": "VariablesView.qml" +} diff --git a/mobile/plugins/resources/kde-edu-logo.png b/mobile/plugins/resources/kde-edu-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f652c4003b4455cba1c16171ba47689aee07f927 GIT binary patch literal 16041 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 * + * * + * 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 * + *************************************************************************************/ + +import org.kde.kirigami 2.0 as Kirigami +import QtQuick 2.1 + +Item +{ + id: root + signal clicked + + readonly property var act: Kirigami.Action { + id: action + iconName: "list-add" + onTriggered: root.clicked() + } + + Component.onCompleted: { + var page = parent + for (; page && page.title === undefined; page = page.parent) {} + + page.mainAction = action + } +} diff --git a/mobile/plugins/widgets/kde/CMakeLists.txt b/mobile/plugins/widgets/kde/CMakeLists.txt new file mode 100644 index 0000000..547f91d --- /dev/null +++ b/mobile/plugins/widgets/kde/CMakeLists.txt @@ -0,0 +1,14 @@ +set(QMLFILES AddButton.qml KAlgebraPage.qml KAlgebraMobile.qml + ../qtcontrols/RealInput.qml ../qtcontrols/ExpressionInput.qml) + +install( FILES + AddButton.qml KAlgebraPage.qml KAlgebraMobile.qml + DESTINATION ${KDE_INSTALL_DATADIR}/kalgebramobile/plugins/widgets/ +) + +install(FILES + ../qtcontrols/RealInput.qml ../qtcontrols/ExpressionInput.qml + DESTINATION ${KDE_INSTALL_DATADIR}/kalgebramobile/plugins/widgets/ +) + +ADD_CUSTOM_TARGET(QMLFILES SOURCES ${QMLFILES}) \ No newline at end of file diff --git a/mobile/plugins/widgets/kde/KAlgebraMobile.qml b/mobile/plugins/widgets/kde/KAlgebraMobile.qml new file mode 100644 index 0000000..fb6c902 --- /dev/null +++ b/mobile/plugins/widgets/kde/KAlgebraMobile.qml @@ -0,0 +1,90 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.0 as Kirigami +import org.kde.analitza 1.0 +import org.kde.kalgebra.mobile 1.0 + +Kirigami.ApplicationWindow +{ + id: rootItem + height: 500 + width: 900 + visible: true + + globalDrawer: Kirigami.GlobalDrawer { + id: drawer + + modal: Kirigami.Settings.isMobile + handleVisible: modal + + title: "KAlgebra" + titleIcon: "qrc:/kalgebra.svgz" + bannerImageSource: "qrc:/header.jpg" + drawerOpen: true + + Instantiator { + delegate: Kirigami.Action { + id: action + text: title + iconName: decoration + property Component component + onTriggered: { + if (!component) + component = Qt.createComponent(model.path, action) + + if (component.status == Component.Error) { + console.log("error", component.errorString()); + return; + } + + try { + rootItem.pageStack.replace(component, {title: title}) + } catch(e) { + console.log("error", e) + } + } + } + model: PluginsModel {} + onObjectAdded: { + var acts = []; + for(var v in drawer.actions) { + acts.push(drawer.actions[v]); + } + acts.splice(index, 0, object) + drawer.actions = acts; + } + onObjectRemoved: { + var acts = []; + for(var v in drawer.actions) { + acts.push(drawer.actions[v]); + } + drawer.actions.splice(drawer.actions.indexOf(object), 1) + drawer.actions = acts; + } + } + + actions: [] + } + + Component.onCompleted: { + drawer.actions[0].trigger() + } +} diff --git a/mobile/plugins/widgets/kde/KAlgebraPage.qml b/mobile/plugins/widgets/kde/KAlgebraPage.qml new file mode 100644 index 0000000..b68ca0b --- /dev/null +++ b/mobile/plugins/widgets/kde/KAlgebraPage.qml @@ -0,0 +1,32 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import org.kde.kirigami 2.0 +import QtQuick 2.1 + +Page +{ + readonly property real dp: Units.devicePixelRatio + title: "KAlgebra" + default property alias contents: item.data + + Item { + id: item + anchors.fill: parent + } +} diff --git a/mobile/plugins/widgets/qmldir b/mobile/plugins/widgets/qmldir new file mode 100644 index 0000000..5541e31 --- /dev/null +++ b/mobile/plugins/widgets/qmldir @@ -0,0 +1,6 @@ +ExpressionInput 1.0 ExpressionInput.qml +RealInput 1.0 RealInput.qml +ToolTip 1.0 ToolTip.qml +KAlgebraPage 1.0 KAlgebraPage.qml +KAlgebraMobile 1.0 KAlgebraMobile.qml +AddButton 1.0 AddButton.qml diff --git a/mobile/plugins/widgets/qtcontrols/ExpressionInput.qml b/mobile/plugins/widgets/qtcontrols/ExpressionInput.qml new file mode 100644 index 0000000..8fa8fb2 --- /dev/null +++ b/mobile/plugins/widgets/qtcontrols/ExpressionInput.qml @@ -0,0 +1,80 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Window 2.0 +import QtQuick.Controls 2.0 +import org.kde.analitza 1.0 +import org.kde.kalgebra.mobile 1.0 + +TextField +{ + id: field + + readonly property string currentWord: field.selectionStart === field.selectionEnd ? operators.lastWord(field.cursorPosition, field.text) : "" + onCurrentWordChanged: view.currentIndex = -1 + + Window { + height: Math.min(100, view.contentHeight) + width: field.width + flags: Qt.ToolTip + ListView { + id: view + anchors { + fill: parent + margins: 1 + } + ScrollBar.vertical: ScrollBar {} + currentIndex: -1 + model: QSortFilterProxyModel { + sourceModel: OperatorsModel { id: operators } + filterRegExp: new RegExp("^" + field.currentWord) + } + + delegate: ItemDelegate { + text: model.display + " - " + description + highlighted: view.currentIndex === index + width: ListView.view.width + + function complete() { + var toInsert = model.display.substr(field.currentWord.length); + if(isVariable) + toInsert += '('; + field.insert(field.cursorPosition, toInsert) + } + + onClicked: complete() + Keys.onReturnPressed: complete() + } + } + + visible: view.count >= 0 && field.activeFocus && field.currentWord.length > 0 + readonly property point globalPos: visible ? parent.mapToGlobal(field.x, field.y) : Qt.point(0,0) + + x: globalPos.x + y: globalPos.y + field.height + } + + placeholderText: i18n("Expression to calculate...") + inputMethodHints: /*Qt.ImhPreferNumbers |*/ Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase + + Keys.forwardTo: view.visible && view.currentItem ? [ view.currentItem ] : null + Keys.onUpPressed: view.decrementCurrentIndex() + Keys.onDownPressed: view.incrementCurrentIndex() + Keys.onReturnPressed: view.currentIndex = -1 +} diff --git a/mobile/plugins/widgets/qtcontrols/RealInput.qml b/mobile/plugins/widgets/qtcontrols/RealInput.qml new file mode 100644 index 0000000..76cad02 --- /dev/null +++ b/mobile/plugins/widgets/qtcontrols/RealInput.qml @@ -0,0 +1,29 @@ +/************************************************************************************* + * Copyright (C) 2015 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +import QtQuick.Controls 2.0 +import QtQuick 2.0 + +TextField +{ + id: input + + readonly property real realValue: Number.fromLocaleString(locale, text) + validator: DoubleValidator {} + inputMethodHints: Qt.ImhPreferNumbers +} diff --git a/mobile/pluginsmodel.cpp b/mobile/pluginsmodel.cpp new file mode 100644 index 0000000..a7565a1 --- /dev/null +++ b/mobile/pluginsmodel.cpp @@ -0,0 +1,98 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + + +#include "pluginsmodel.h" +#include +#include +#include +#include +#include + +QString PluginsModel::pluginsDirectoryPath() +{ +#ifdef __ANDROID__ + return "/data/data/org.kde.kalgebramobile/qt-reserved-files/share/kalgebramobile/plugins"; +#else + return QStandardPaths::locate(QStandardPaths::DataLocation, QStringLiteral("plugins"), QStandardPaths::LocateDirectory); +#endif +} + +PluginsModel::PluginsModel(QObject* parent) :QStandardItemModel(parent) +{ + QStringList foundPlugins; + QDir dir(pluginsDirectoryPath()); + foreach(const auto& file, dir.entryInfoList(QStringList("*.json"))) { + foundPlugins += file.absoluteFilePath(); + } + + qDebug() << "Plugins found:" << foundPlugins; + + QList items; + Q_FOREACH(const QString& file, foundPlugins) { + KPluginMetaData md(file); + if(!md.isValid()) { + qWarning() << "error opening " << file; + continue; + } +// qDebug() << "laaaaa" << f.readAll() << file; + + QStandardItem* item = new QStandardItem; + + QString scriptPath = dir.absoluteFilePath(md.value(QStringLiteral("X-KDE-PluginInfo-Name"), QString())); + + Q_ASSERT(!scriptPath.isEmpty()); + + const auto priority = md.value(QStringLiteral("X-KAlgebra-Priority"), QStringLiteral("1000")).toInt(); + + item->setData(QUrl::fromLocalFile(scriptPath), PathRole); + item->setData(priority, PriorityRole); + item->setData(md.name(), TitleRole); + item->setData(md.description(), SubtitleRole); + item->setData(md.iconName(), Qt::DecorationRole); + + items += item; + } + invisibleRootItem()->appendRows(items); + setSortRole(PriorityRole); + sort(0, Qt::DescendingOrder); +} + +QHash PluginsModel::roleNames() const +{ + QHash rolenames=QStandardItemModel::roleNames(); + rolenames.insert(PathRole, "path"); + rolenames.insert(PriorityRole, "priority"); + rolenames.insert(TitleRole, "title"); + rolenames.insert(SubtitleRole, "subtitle"); + return rolenames; +} + +QString PluginsModel::pluginPath(int row) +{ + return data(index(row, 0), PathRole).toString(); +} + +QStringList PluginsModel::titles() const +{ + QStringList ret; + for (int i=0, c=rowCount(); idata(TitleRole).toString(); + } + return ret; +} diff --git a/mobile/pluginsmodel.h b/mobile/pluginsmodel.h new file mode 100644 index 0000000..1fabba8 --- /dev/null +++ b/mobile/pluginsmodel.h @@ -0,0 +1,45 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + + +#ifndef PLUGINSMODEL_H +#define PLUGINSMODEL_H + +#include + +class PluginsModel : public QStandardItemModel +{ + Q_OBJECT + Q_PROPERTY(QStringList titles READ titles CONSTANT) + public: + enum Roles { PathRole = Qt::UserRole+1, PriorityRole, TitleRole, SubtitleRole }; + Q_ENUM(Roles) + + explicit PluginsModel(QObject* parent = 0); + QHash roleNames() const Q_DECL_OVERRIDE; + + static QString pluginsDirectoryPath(); + + QStringList titles() const; + + public Q_SLOTS: + ///qml can't access data. Yay! + QString pluginPath(int row); +}; + +#endif // PLUGINSMODEL_H diff --git a/mobile/resources.qrc b/mobile/resources.qrc new file mode 100644 index 0000000..5a7038e --- /dev/null +++ b/mobile/resources.qrc @@ -0,0 +1,9 @@ + + + plugins/resources/kde-edu-logo.png + + + ../icons/64-apps-kalgebra.png + ../icons/sc-apps-kalgebra.svgz + + diff --git a/plasmoids/CMakeLists.txt b/plasmoids/CMakeLists.txt new file mode 100644 index 0000000..1882c04 --- /dev/null +++ b/plasmoids/CMakeLists.txt @@ -0,0 +1,6 @@ +# add_subdirectory(calculator) +# TODO: port to QML + +install(DIRECTORY graphsplasmoid/ DESTINATION ${KDE_INSTALL_DATADIR}/plasma/plasmoids/org.kde.graphsplasmoid) +install(FILES graphsplasmoid/metadata.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR} RENAME graphsplasmoid.desktop) + diff --git a/plasmoids/calculator/CMakeLists.txt b/plasmoids/calculator/CMakeLists.txt new file mode 100644 index 0000000..b9d449c --- /dev/null +++ b/plasmoids/calculator/CMakeLists.txt @@ -0,0 +1,11 @@ +project(kalgebra-plasmoid) + +add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) +set(kalgebraplasma_SRCS kalgebraplasma.cpp) + +add_library(plasma_applet_kalgebra MODULE ${kalgebraplasma_SRCS}) +target_link_libraries(plasma_applet_kalgebra ${KF5::plasma} KF5::Analitza) + +set(plugin_dir ${KDE_INSTALL_PLUGINDIR}/plugins/kalgebra) +install(TARGETS plasma_applet_kalgebra DESTINATION ${KDE_INSTALL_PLUGINDIR}) +install(FILES kalgebraplasmoid.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) diff --git a/plasmoids/calculator/Messages.sh b/plasmoids/calculator/Messages.sh new file mode 100644 index 0000000..0af2da1 --- /dev/null +++ b/plasmoids/calculator/Messages.sh @@ -0,0 +1,2 @@ +#! /bin/sh +$XGETTEXT *.cpp -o $podir/plasma_applet_kalgebraplasmoid.pot diff --git a/plasmoids/calculator/kalgebraplasma.cpp b/plasmoids/calculator/kalgebraplasma.cpp new file mode 100644 index 0000000..5a2da59 --- /dev/null +++ b/plasmoids/calculator/kalgebraplasma.cpp @@ -0,0 +1,159 @@ +/************************************************************************************* + * Copyright (C) 2008 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "kalgebraplasma.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +using namespace Plasma; +using Analitza::Expression; + +QColor KAlgebraPlasmoid::correctColor() { return Theme::defaultTheme()->color(Theme::TextColor);} +QColor KAlgebraPlasmoid::errorColor() { return Qt::red; } +int KAlgebraPlasmoid::simplificationSize() { return Theme::defaultTheme()->font(Theme::DefaultFont).pointSize(); } + +KAlgebraPlasmoid::KAlgebraPlasmoid(QObject *parent, const QVariantList &args) + : PopupApplet(parent, args), m_widget(0), m_layout(0) +{ + KGlobal::locale()->insertCatalog("kalgebra"); + setAspectRatioMode(IgnoreAspectRatio); + setAssociatedApplication("kalgebra"); +} + +KAlgebraPlasmoid::~KAlgebraPlasmoid() {} + +void KAlgebraPlasmoid::init() +{ +// updateFactor(); + + setPopupIcon("kalgebra"); +} + +QQuickItem* KAlgebraPlasmoid::graphicsWidget() +{ + if(!m_widget) { + m_widget = new QQuickItem(this); + m_input = new Plasma::LineEdit(m_widget); + m_input->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + m_input->setClearButtonShown(true); + + m_output = new Plasma::Label(m_widget); + m_output->setMinimumSize(20, 20); + m_output->nativeWidget()->setAlignment(Qt::AlignCenter); + m_output->setText(i18n("Enter some expression.")); + + m_layout = new QGraphicsLinearLayout(m_widget); + m_layout->setOrientation(Qt::Vertical); + m_layout->addItem(m_input); + m_layout->addItem(m_output); + m_widget->setPreferredSize(300,300); + + connect(m_input, SIGNAL(editingFinished()), this, SLOT(addOperation())); + connect(m_input->nativeWidget(), SIGNAL(textChanged(QString)), this, SLOT(simplify())); + } + m_input->nativeWidget()->selectAll(); + m_input->setFocus(); + + return m_widget; +} + +void KAlgebraPlasmoid::addOperation() +{ + if ( m_input->text().isEmpty() ) + return; + + Expression res; + a.setExpression(Expression(m_input->text(), false)); + if(a.isCorrect()) { + res=a.evaluate(); + } + + QColor c; + if(a.isCorrect()) { + QString result=res.toString(); + m_output->setText(result); + + Plasma::ToolTipContent data; + data.setMainText(i18n("KAlgebra")); + data.setSubText(i18n("%1 = %2", m_input->text(), result)); + data.setImage(QIcon::fromTheme("kalgebra").pixmap(IconSize(KIconLoader::Desktop))); + Plasma::ToolTipManager::self()->setContent(this, data); + + c=correctColor(); + } else { + m_output->setText(a.errors().join("\n")); + c=errorColor(); + } + plasmoidFont(true, c, true); + update(); +} + +void KAlgebraPlasmoid::plasmoidFont(bool big, const QColor& c, bool bold) +{ + QFont f=m_output->nativeWidget()->font(); + f.setBold(bold); + int size; + + if(big) { + size=(m_output->size().height()*2)/3; + f.setPointSize(size); + QFontMetrics fm(f); + + int w=m_output->size().width(); + Q_ASSERT(w>0); + for(; fm.width(m_output->text()) > w; size--) { + f.setPointSize(size); + fm=QFontMetrics(f); + } + } else + size=simplificationSize(); + f.setPointSize(size); + + QPalette palette = m_output->palette(); + palette.setColor(QPalette::WindowText, c); + m_output->nativeWidget()->setPalette(palette); + m_output->nativeWidget()->setFont(f); +} + +void KAlgebraPlasmoid::simplify() +{ + Expression e(m_input->text(), false); + if(e.isCorrect()) + a.setExpression(e); + + if(e.isCorrect() && a.isCorrect()) { + a.simplify(); + m_output->setText(a.expression().toString()); + + plasmoidFont(false, correctColor(), true); + } else + m_output->setText(QString()); +} + + diff --git a/plasmoids/calculator/kalgebraplasma.h b/plasmoids/calculator/kalgebraplasma.h new file mode 100644 index 0000000..514aa59 --- /dev/null +++ b/plasmoids/calculator/kalgebraplasma.h @@ -0,0 +1,61 @@ +/************************************************************************************* + * Copyright (C) 2008 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + + +#ifndef KALGEBRAPLASMA_HEADER +#define KALGEBRAPLASMA_HEADER + +#include +#include +#include +#include +#include + + +class KAlgebraPlasmoid : public Plasma::Applet +{ + Q_OBJECT + public: + KAlgebraPlasmoid(QObject *parent, const QVariantList &args); + ~KAlgebraPlasmoid(); + + void init(); + virtual QQuickItem* graphicsWidget(); + + private Q_SLOTS: + void simplify(); + void addOperation(); + + private: + static QColor correctColor(); + static QColor errorColor(); + static int simplificationSize(); + + void plasmoidFont(bool big, const QColor& c, bool bold); + + QQuickItem* m_widget; + QGraphicsLinearLayout* m_layout; + Plasma::LineEdit *m_input; + Plasma::Label *m_output; + Analitza::Analyzer a; +}; + +// This is the command that links your applet to the .desktop file +K_EXPORT_PLASMA_APPLET(kalgebraplasmoid, KAlgebraPlasmoid) + +#endif diff --git a/plasmoids/calculator/kalgebraplasmoid.desktop b/plasmoids/calculator/kalgebraplasmoid.desktop new file mode 100644 index 0000000..4a365cb --- /dev/null +++ b/plasmoids/calculator/kalgebraplasmoid.desktop @@ -0,0 +1,126 @@ +[Desktop Entry] +Name=KAlgebra +Name[bg]=KAlgebra +Name[bs]=Kalgebra +Name[ca]=KAlgebra +Name[ca@valencia]=KAlgebra +Name[cs]=KAlgebra +Name[csb]=KAlgebra +Name[da]=KAlgebra +Name[de]=KAlgebra +Name[el]=KAlgebra +Name[en_GB]=KAlgebra +Name[eo]=KAlgebra +Name[es]=KAlgebra +Name[et]=KAlgebra +Name[eu]=KAlgebra +Name[fa]=KAlgebra +Name[fi]=KAlgebra +Name[fr]=KAlgebra +Name[ga]=KAlgebra +Name[gl]=KAlgebra +Name[gu]=KAlgebra +Name[he]=KAlgebra +Name[hi]=के-अलजेब्रा +Name[hne]=के-अलजेब्रा +Name[hr]=KAlgebra +Name[hu]=KAlgebra +Name[is]=KAlgebra +Name[it]=KAlgebra +Name[ja]=KAlgebra +Name[kk]=KAlgebra +Name[km]=KAlgebra +Name[ko]=KAlgebra +Name[lt]=KAlgebra +Name[lv]=KAlgebra +Name[ml]=കെ-ആള്‍ജിബ്ര +Name[mr]=के-एल्जिब्रा +Name[nb]=KAlgebra +Name[nds]=KAlgebra +Name[ne]=केडीई बीजगणित +Name[nl]=KAlgebra +Name[nn]=KAlgebra +Name[pa]=ਕੇ-ਐਲਜਬਰਾ +Name[pl]=KAlgebra +Name[pt]=KAlgebra +Name[pt_BR]=KAlgebra +Name[ro]=KAlgebra +Name[ru]=KAlgebra +Name[si]=KAlgebra +Name[sk]=KAlgebra +Name[sl]=KAlgebra +Name[sv]=Kalgebra +Name[te]=కె అల్జీబ్రా +Name[tr]=KAlgebra +Name[ug]=KAlgebra +Name[uk]=KАлгебра +Name[x-test]=xxKAlgebraxx +Name[zh_CN]=KAlgebra +Name[zh_TW]=數學_KAlgebra +Icon=kalgebra +Comment=A Calculator +Comment[bg]=Калкулатор +Comment[bs]=Kalkulator +Comment[ca]=Una calculadora +Comment[ca@valencia]=Una calculadora +Comment[cs]=Kalkulačka +Comment[da]=En regnemaskine +Comment[de]=Ein Taschenrechner +Comment[el]=Ένας μικροϋπολογιστής +Comment[en_GB]=A Calculator +Comment[es]=Una calculadora +Comment[et]=Arvutaja +Comment[eu]=Kalkulagailu bat +Comment[fa]=یک ماشین حساب +Comment[fi]=Laskin +Comment[fr]=Une calculatrice +Comment[ga]=Áireamhán +Comment[gl]=Unha calculadora +Comment[gu]=કેલ્ક્યુલેટર +Comment[he]=מחשבון +Comment[hne]=गनक +Comment[hr]=Kalkulator +Comment[hu]=Algebrai számológép +Comment[is]=Reiknivél +Comment[it]=Una calcolatrice +Comment[ja]=計算機 +Comment[kk]=Калькулятор +Comment[km]=ម៉ាស៊ីន​គិត​លេខ +Comment[ko]=계산기 +Comment[lt]=Skaičiuotuvas +Comment[lv]=Kalkulators +Comment[ml]=ഗണനി +Comment[mr]=गणकयंत्र +Comment[nb]=En kalkulator +Comment[nds]=En Rekenprogramm +Comment[nl]=Een rekenmachine +Comment[nn]=Kalkulator +Comment[pa]=ਇੱਕ ਕੈਲਕੂਲੇਟਰ +Comment[pl]=Kalkulator +Comment[pt]=Uma Calculadora +Comment[pt_BR]=Uma calculadora +Comment[ro]=Un calculator +Comment[ru]=Калькулятор +Comment[sk]=Kalkulačka +Comment[sl]=Računalo +Comment[sv]=Kalkylator +Comment[te]=గనన యంత్రము +Comment[tr]=Bir Hesap Makinesi +Comment[ug]=ھېسابلىغۇچ +Comment[uk]=Калькулятор +Comment[x-test]=xxA Calculatorxx +Comment[zh_CN]=一个计算器 +Comment[zh_TW]=計算器 +Type=Service +ServiceTypes=Plasma/Applet + +X-KDE-Library=plasma_applet_kalgebra +X-KDE-PluginInfo-Author=Aleix Pol Gonzalez +X-KDE-PluginInfo-Email=aleixpol@kde.org +X-KDE-PluginInfo-Name=kalgebraplasmoid +X-KDE-PluginInfo-Version=0.1 +X-KDE-PluginInfo-Website=http://edu.kde.org/ +X-KDE-PluginInfo-Category=Education +X-KDE-PluginInfo-Depends= +X-KDE-PluginInfo-License=GPL +X-KDE-PluginInfo-EnabledByDefault=true diff --git a/plasmoids/graphsplasmoid/contents/ui/config.ui b/plasmoids/graphsplasmoid/contents/ui/config.ui new file mode 100644 index 0000000..22ecd73 --- /dev/null +++ b/plasmoids/graphsplasmoid/contents/ui/config.ui @@ -0,0 +1,28 @@ + + + nowplayingConfig + + + + 0 + 0 + 351 + 341 + + + + + + + Function + + + + + + + + + + + diff --git a/plasmoids/graphsplasmoid/contents/ui/main.qml b/plasmoids/graphsplasmoid/contents/ui/main.qml new file mode 100644 index 0000000..1169c30 --- /dev/null +++ b/plasmoids/graphsplasmoid/contents/ui/main.qml @@ -0,0 +1,68 @@ +/* + * Copyright 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 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 Library 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. + */ + +import QtQuick 2.0 +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.analitza 1.0 + +Item { + property Component compactRepresentation: Component { + PlasmaComponents.Button { + iconSource: "kalgebra" + onClicked: plasmoid.togglePopup() + } + } + property string displayedFunction + onDisplayedFunctionChanged: { + plots.clear() + view.addFunction(displayedFunction) + } + + PlasmaComponents.TextField { + id: input + anchors { + top: parent.top + left: parent.left + right: parent.right + } + onAccepted: { + displayedFunction = text + plasmoid.writeConfig("function", text) + } + } + + Component.onCompleted: { + plasmoid.addEventListener('ConfigChanged', function() { + displayedFunction = plasmoid.readConfig("function") + input.text = displayedFunction + }); + } + + Graph2D { + id: view + anchors { + fill: parent + topMargin: input.height + } + + model: PlotsModel { id: plots } + + ticksShown: false + } +} diff --git a/plasmoids/graphsplasmoid/metadata.desktop b/plasmoids/graphsplasmoid/metadata.desktop new file mode 100644 index 0000000..5949fed --- /dev/null +++ b/plasmoids/graphsplasmoid/metadata.desktop @@ -0,0 +1,92 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Service +ServiceTypes=Plasma/Applet +Name=2D Plots +Name[bs]=2D crtanja +Name[ca]=Gràfiques 2D +Name[ca@valencia]=Gràfiques 2D +Name[cs]=2D grafy +Name[da]=2D-plot +Name[de]=2D-Plots +Name[el]=2D Γραφικές απεικονίσεις +Name[en_GB]=2D Plots +Name[es]=Gráficas 2D +Name[et]=2D joonised +Name[fa]=نمودار دو بعدی +Name[fi]=2D-kuvaajat +Name[fr]=Tracés 2D +Name[gl]=Gráficas en 2D +Name[hu]=2D görbék +Name[it]=Grafici 2D +Name[kk]=2D графиктер +Name[km]=ការ​គ្រោង​ធ្វេមាត្រ +Name[ko]=2차원 플롯 +Name[lt]=2D grafikai +Name[nb]=2D-plott +Name[nds]=2D-Plots +Name[nl]=2d-plots +Name[nn]=2D-plott +Name[pa]=2ਡੀ ਪਲਾਟ +Name[pl]=Wykresy 2D +Name[pt]=Gráficos 2D +Name[pt_BR]=Gráficos em 2D +Name[ru]=Двумерный график +Name[sk]=2D zákresy +Name[sl]=2D grafi +Name[sv]=Tvådimensionella diagram +Name[te]=2D ప్లాట్ +Name[tr]=2D Çizimler +Name[uk]=Плоскі графіки +Name[x-test]=xx2D Plotsxx +Name[zh_CN]=二维绘图 +Name[zh_TW]=2D 繪圖 +Comment=Put the weirdest plots on your desktop! +Comment[bs]=Postavite najčudnije crteže na vašem desktopu +Comment[ca]=Poseu les gràfiques més estranyes al vostre escriptori! +Comment[ca@valencia]=Poseu les gràfiques més estranyes al vostre escriptori! +Comment[cs]=Přidejte na svou plochu ty nejdivnější tvary. +Comment[da]=Sæt de særeste plot på dit skrivebord! +Comment[de]=Erstellt Plots für Ihre Arbeitsfläche. +Comment[el]=Βάλτε τις πιο περίεργες γραφικές απεικονίσεις στην επιφάνεια εργασίας σας! +Comment[en_GB]=Put the weirdest plots on your desktop! +Comment[es]=Traza las gráficas más retorcidas en su escritorio +Comment[et]=Aseta oma töölauale kõige veidramad joonised! +Comment[fa]=قرار دادن عجیب ترین نمودار روی دسکتاپ شما! +Comment[fi]=Laita mitä ihmeellisimpiä kuvaajia työpöydällesi! +Comment[fr]=Placez les tracés les plus étranges sur votre bureau ! +Comment[gl]=Poña as gráficas máis charramangueiras no seu escritorio! +Comment[hu]=Tegye a legfurább görbéket az asztalára! +Comment[it]=Metti i grafici più strani sul tuo desktop! +Comment[kk]=Үстеліңізге сиқырлы графиктерді шығарыңыз! +Comment[km]=Put the weirdest plots on your desktop! +Comment[ko]=데스크톱에 재미있는 플롯을 그리십시오! +Comment[lt]=Dėkite keisčiausius brėžinius ant savo darbalaukio! +Comment[nb]=Legg de merkeligste plott på skrivebordet! +Comment[nds]=De snaakschsten Plots för Dien Schriefdisch! +Comment[nl]=Zet de wonderlijkste plots op uw bureaublad! +Comment[nn]=Lag dei merkelegast tenkjelege plotta! +Comment[pl]=Rysuj najdziwniejsze wykresy na swoim pulpicie! +Comment[pt]=Coloque os gráficos mais estranhos no seu ecrã! +Comment[pt_BR]=Coloque os gráficos mais estranhos na sua área de trabalho! +Comment[ru]=Разместите на рабочем столе причудливые графики! +Comment[sk]=Vložte najpodivnejšie zákresy na vašu plochu! +Comment[sl]=Na namizje postavite čudaške grafe! +Comment[sv]=Rita riktigt konstiga diagram på skrivbordet. +Comment[tr]=Masaüstünüzde en tuhaf çizimleri koyun! +Comment[uk]=Розташуйте на вашій стільниці найвигадливіше креслення! +Comment[x-test]=xxPut the weirdest plots on your desktop!xx +Comment[zh_CN]=在您的桌面上放上奇怪的图表! +Comment[zh_TW]=在您的桌面上放最詭異的繪圖! +Icon=kalgebra +X-Plasma-API=declarativeappletscript +X-Plasma-MainScript=ui/main.qml +X-KDE-PluginInfo-Author=Aleix Pol Gonzalez +X-KDE-PluginInfo-Email=aleixpol@kde.org +X-KDE-PluginInfo-Name=org.kde.graphsplasmoid +X-KDE-PluginInfo-Version=1.0 +X-KDE-PluginInfo-Website=http://edu.kde.org/kalgebra +X-KDE-PluginInfo-Category=Education +X-KDE-PluginInfo-Depends= +X-KDE-PluginInfo-License=GPL +X-KDE-PluginInfo-EnabledByDefault=true diff --git a/po/ar/kalgebra.po b/po/ar/kalgebra.po new file mode 100644 index 0000000..9cc9a44 --- /dev/null +++ b/po/ar/kalgebra.po @@ -0,0 +1,909 @@ +# translation of kalgebra.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Youssef Chahibi , 2007. +# Safa Alfulaij , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2015-01-17 17:23+0300\n" +"Last-Translator: Safa Alfulaij \n" +"Language-Team: Arabic \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 1.5\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid "
%2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "خيارات: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "الصق \"%1\" إلى الدَّخْل" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "الصق \"%1\" إلى الدَّخْل" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    خطأ: %1‎
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "استُورد: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    خطأ: تعذّر تحميل %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "معلومات" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "أضف/حرّر دالةً" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "عاين" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "من:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "إلى:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "خيارات" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "حسنًا" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "أزل" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "الخيارات الّتي حدّدتها غير صحيحة" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "لا يمكن أن يكون الحدّ الأدنى أكبر من الحدّ الأعلى" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "ارسم ثنائيّ أبعاد" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "ارسم ثلاثيّ أبعاد" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "جلسة" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "المتغيّرات" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "احسب" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "احسب" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&حمّل سكرِبتًا..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "السّكرِبتات الحديثة" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "ا&حفظ السّكرِبت..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&صدّر السجلّ..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "وضع التّنفيذ" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "احسب" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "قدّر" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "الدّوال" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "القائمة" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "أ&ضف" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "منفذ العرض" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "مبيان ثنا&ئيّ أبعاد" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "مبيان ث&نائيّ أبعاد" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "ال&شّبكة" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "أ&بقِ النّسبة الباعيّة" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "الدّقّة" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "فقيرة" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "عاديّة" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "جيّدة" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "جيّدة جدًّا" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "مبيان ثلا&ثيّ أبعاد" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "مبيان ثلاث&يّ أبعاد" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&صفّر العرض" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "نقاط" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "خطوط" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "صلب" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "العمليّات" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "ال&قاموس" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "ابحث عن:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "ح&رّر" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "اختر سكرِبتًا" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "سكرِبت (‎*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "ملفّ HTML ‏(‎*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr "، " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "الأخطاء: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "حدّد أين تريد وضع الرسم المصيّر" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|ملفّ صورة\n" +"*.svg|ملفّ SVG" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "جاهز" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "أضف متغيّرًا" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "أدخِل اسم المتغيّر الجديد" + +#: main.cpp:30 +#, fuzzy, kde-format +msgid "A portable calculator" +msgstr "A آلة حاسبة" + +#: main.cpp:31 +#, fuzzy, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "C بول" + +#: main.cpp:33 +#, fuzzy, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Mohamed SAAD محمد سعد" + +#: main.cpp:33 +#, fuzzy, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "metehyi@free.fr" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "أضف/حرّر متغيّرًا" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "أزل المتغيّر" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "حرّر المتغيّر '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "غير متوفّر" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "‎%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "خاطئة" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "اليسار:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "الأعلى:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "العرض:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "الارتفاع:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "طبّق" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document\n" +#~| "*.x3d|X3D Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|ملفّ PNG\n" +#~ "*.pdf|مستند PDF\n" +#~ "*.x3d|مستند X3D" + +#~ msgid "C&onsole" +#~ msgstr "مع&راض" + +#~ msgid "KAlgebra" +#~ msgstr "الجبر.ك" + +#~ msgid "&Console" +#~ msgstr "م&عراض" + +#, fuzzy +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "بول" + +#, fuzzy +#~ msgid "Formula" +#~ msgstr "%1" + +#, fuzzy +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "تم" + +#, fuzzy +#~ msgid "Error: %1" +#~ msgstr "الخطأ: %1" + +#, fuzzy +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "امسح" + +#, fuzzy +#~ msgid "*.png|PNG File" +#~ msgstr "PNG ملف" + +#, fuzzy +#~ msgid "&Transparency" +#~ msgstr "شفافية" + +#, fuzzy +#~ msgid "Type" +#~ msgstr "النوع" + +#, fuzzy +#~ msgid "To Expression" +#~ msgstr "إلى تعبير" + +#, fuzzy +#~ msgid "To MathML" +#~ msgstr "إلى" + +#, fuzzy +#~ msgid "Simplify" +#~ msgstr "بسّط" + +#, fuzzy +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "الاسم" + +#, fuzzy +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "الوظيفة" + +#, fuzzy +#~ msgid "%1 function added" +#~ msgstr "الدالة" + +#, fuzzy +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "الوصف" + +#, fuzzy +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "معاملات" + +#, fuzzy +#~ msgid "%1(" +#~ msgstr "%1" + +#, fuzzy +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "البارامترات" + +#, fuzzy +#~ msgid "par%1" +#~ msgstr "1" + +#, fuzzy +#~ msgid "Addition" +#~ msgstr "جمع" + +#, fuzzy +#~ msgid "Multiplication" +#~ msgstr "ضرب" + +#, fuzzy +#~ msgid "Division" +#~ msgstr "قسمة" + +#, fuzzy +#~ msgid "Power" +#~ msgstr "الطاقة" + +#, fuzzy +#~ msgid "Remainder" +#~ msgstr "البقيّة" + +#, fuzzy +#~ msgid "Quotient" +#~ msgstr "خارج القسمة" + +#, fuzzy +#~ msgid "The factor of" +#~ msgstr "الـ من" + +#, fuzzy +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "عاملي n n!" + +#, fuzzy +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "الوظيفة إلى حساب من a زاوية" + +#, fuzzy +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "الوظيفة إلى حساب من a زاوية" + +#, fuzzy +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "الوظيفة إلى حساب من a زاوية" + +#, fuzzy +#~ msgid "Secant" +#~ msgstr "القاطع" + +#, fuzzy +#~ msgid "Cosecant" +#~ msgstr "زاوية التّمام" + +#, fuzzy +#~ msgid "Cotangent" +#~ msgstr "ظل التمام" + +#, fuzzy +#~ msgid "Hyperbolic sine" +#~ msgstr "الجيب الزائد" + +#, fuzzy +#~ msgid "Hyperbolic cosine" +#~ msgstr "جيب التمام الزائد" + +#, fuzzy +#~ msgid "Hyperbolic tangent" +#~ msgstr "الظل الزائد" + +#, fuzzy +#~ msgid "Hyperbolic secant" +#~ msgstr "إطنابي" + +#, fuzzy +#~ msgid "Hyperbolic cosecant" +#~ msgstr "إطنابي" + +#, fuzzy +#~ msgid "Hyperbolic cotangent" +#~ msgstr "إطنابي" + +#, fuzzy +#~ msgid "Arc sine" +#~ msgstr "قوس الجيب" + +#, fuzzy +#~ msgid "Arc cosine" +#~ msgstr "قوس جيب التمام" + +#, fuzzy +#~ msgid "Arc tangent" +#~ msgstr "قوس الظل" + +#, fuzzy +#~ msgid "Arc cotangent" +#~ msgstr "قوس" + +#, fuzzy +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "For all" +#~ msgstr "عادي" + +#, fuzzy +#~ msgid "Exists" +#~ msgstr "قائمة" + +#, fuzzy +#~ msgid "Differentiation" +#~ msgstr "التفاضل" + +#, fuzzy +#~ msgid "Hyperbolic arc sine" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "Arc cosecant" +#~ msgstr "قوس" + +#, fuzzy +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "Arc secant" +#~ msgstr "قوس" + +#, fuzzy +#~ msgid "Hyperbolic arc secant" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "Exponent (e^x)" +#~ msgstr "القوَة e x" + +#, fuzzy +#~ msgid "Base-e logarithm" +#~ msgstr "الأساس e خوارزمية" + +#, fuzzy +#~ msgid "Base-10 logarithm" +#~ msgstr "الأساس خوارزمية" + +#, fuzzy +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "مطلق :: حتمي :: خالص :: كامل :: مُطبق قيمة n n" + +#, fuzzy +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "الأرضية قيمة n n" + +#, fuzzy +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "سقّف قيمة n n" + +#, fuzzy +#~ msgid "Minimum" +#~ msgstr "الأدنى" + +#, fuzzy +#~ msgid "Maximum" +#~ msgstr "الأقصى" + +#, fuzzy +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "مرحب a b a b" + +#, fuzzy +#~ msgid "Less than. lt(a,b)=a%1(" +#~ msgstr " الخطأ" + +#, fuzzy +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "1" + +#, fuzzy +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr "، " + +#, fuzzy +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "القيمة" + +#, fuzzy +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "، " + +#, fuzzy +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "إحسب تعبير" + +#, fuzzy +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "إحسب تعبير" + +#, fuzzy +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "إحسب تعبير" + +#, fuzzy +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "إحسب تعبير" + +#, fuzzy +#~ msgid "Subtraction" +#~ msgstr "طرح" + +#, fuzzy +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "الخطأ: %1" + +#, fuzzy +#~ msgid "Generating... Please wait" +#~ msgstr "التوليد رجاء أنتطر" + +#, fuzzy +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "احفظ لغ" + +#, fuzzy +#~ msgid "File" +#~ msgstr "دقيق" + +#, fuzzy +#~ msgid "Mode" +#~ msgstr "الوضع" + +#, fuzzy +#~ msgid "Save the expression" +#~ msgstr "احفظ تعبير" + +#, fuzzy +#~ msgid "Calculate the expression" +#~ msgstr "إحسب تعبير" + +#, fuzzy +#~ msgid "%1:=%2" +#~ msgstr "2" + +#, fuzzy +#~ msgid "%1" +#~ msgstr " الخطأ" + +#, fuzzy +#~ msgid "From parser:" +#~ msgstr "من:" + +#, fuzzy +#~ msgid "%1, " +#~ msgstr "، " + +#, fuzzy +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "إطنابي قوس" + +#, fuzzy +#~ msgid "Real" +#~ msgstr "حقيقي" + +#, fuzzy +#~ msgid "Conjugate" +#~ msgstr "صرفي" + +#, fuzzy +#~ msgid "Imaginary" +#~ msgstr "خيالي" + +#, fuzzy +#~ msgctxt "@item:inmenu" +#~ msgid "&New" +#~ msgstr "&جديد" + +#, fuzzy +#~ msgctxt "@item:inmenu" +#~ msgid "&Quit" +#~ msgstr "ا&خرج" + +#, fuzzy +#~ msgid "&Save" +#~ msgstr "ا&حفظ" + +#, fuzzy +#~ msgctxt "Parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" diff --git a/po/bg/kalgebra.po b/po/bg/kalgebra.po new file mode 100644 index 0000000..eede82a --- /dev/null +++ b/po/bg/kalgebra.po @@ -0,0 +1,855 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Svetoslav Alexandrov AKA Zvezdichko , 2008. +# Zlatko Popov , 2008. +# Yasen Pramatarov , 2009, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2012-06-20 11:46+0300\n" +"Last-Translator: Yasen Pramatarov \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" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, fuzzy, kde-format +#| msgid "Operations" +msgid "Options: %1" +msgstr "Операции" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Грешка: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Грешка: Не може да се зареди %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Информация" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Добавяне/Редактиране на функция" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Преглед" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "От:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "До:" + +#: functionedit.cpp:106 +#, fuzzy, kde-format +#| msgid "Operations" +msgid "Options" +msgstr "Операции" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ОК" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Премахване на \"%1\"" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Сесия" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Променливи" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "&Calculator" +msgstr "Калкулатор" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "C&alculator" +msgstr "Калкулатор" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Зареждане на скрипт..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Скорошни скриптове" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Запис на скрипт..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Режим на изпълнение" + +#: kalgebra.cpp:184 +#, fuzzy, kde-format +#| msgid "A calculator" +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Калкулатор" + +#: kalgebra.cpp:185 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Стойност" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Функции" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Списък" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Добавяне" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D диаграма" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D диаграма" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Координатна мрежа" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Запазване на пропорциите" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Разделителна способност" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Слабо" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Нормално" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Добре" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Много добре" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D диаграма" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &диаграма" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Анулиране на изгледа" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Точки" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Линии" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Плътно" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Операции" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Речник" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Търсене:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Редактиране" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Изберете скрипт" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Скрипт (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Файл HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "Грешка: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|PNG изображение\n" +"*.svg|SVG файл" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Готово" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Добавяне на променлива" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Въведете име за новата променлива" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Калкулатор" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Добавяне/Редактиране на променлива" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Променливи" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Редактиране на \"%1\"" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "не е налично" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ГРЕШНО" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Широчина:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Височина:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Прилагане" + +#~ msgid "C&onsole" +#~ msgstr "К&онзола" + +#~ msgid "&Console" +#~ msgstr "&Конзола" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "Formula" +#~ msgstr "Формула" + +#, fuzzy +#~| msgctxt "3D graph done in x miliseconds" +#~| msgid "Done: %1ms" +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Готово: %1 мс" + +#~ msgid "Error: %1" +#~ msgstr "Грешка: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Изчистване" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG файл" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Прозрачност" + +#~ msgid "Type" +#~ msgstr "Вид" + +#~ msgid "To Expression" +#~ msgstr "Към израз" + +#~ msgid "To MathML" +#~ msgstr "Към MathML" + +#~ msgid "Simplify" +#~ msgstr "Опростяване" + +#, fuzzy +#~| msgctxt "@title:column" +#~| msgid "Example" +#~ msgid "Examples" +#~ msgstr "Пример" + +#~ msgid "We can only draw Real results." +#~ msgstr "Можем да изобразим само реален резултати." + +#~ msgid "center" +#~ msgstr "център" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Име" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Функция" + +#~ msgid "%1 function added" +#~ msgstr "Добавена е %1 функция" + +#~ msgid "Hide '%1'" +#~ msgstr "Скриване на \"%1\"" + +#~ msgid "Show '%1'" +#~ msgstr "Показване на \"%1\"" + +#~ msgid "Selected viewport too small" +#~ msgstr "Избраният порт е много малък" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Параметри" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Пример" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... параметри, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Събиране" + +#~ msgid "Multiplication" +#~ msgstr "Умножение" + +#~ msgid "Division" +#~ msgstr "Делене" + +#~ msgid "Power" +#~ msgstr "Степен" + +#~ msgid "Remainder" +#~ msgstr "Остатък" + +#~ msgid "Quotient" +#~ msgstr "Частно" + +#~ msgid "The factor of" +#~ msgstr "Коефициент на" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Факториел. факториел(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Функция да пресмята синуса на даден ъгъл" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Функция да пресмята косинуса на даден ъгъл" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Функция да пресмята тангенса на даден ъгъл" + +#~ msgid "Secant" +#~ msgstr "Секанта" + +#~ msgid "Cosecant" +#~ msgstr "Косеканта" + +#~ msgid "Cotangent" +#~ msgstr "Котангенс" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Хиперболичен синус" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Хиперболичен косинус" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Хиперболичен тангенс" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Хиперболична секанта" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Хиперболична косеканта" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Хиперболичен котангенс" + +#~ msgid "Arc sine" +#~ msgstr "Аркус синус" + +#~ msgid "Arc cosine" +#~ msgstr "Аркус косинус" + +#~ msgid "Arc tangent" +#~ msgstr "Аркус тангенс" + +#~ msgid "Arc cotangent" +#~ msgstr "Аркус котангенс" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Хиперболичен аркус тангенс" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Нормално" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "Списък" + +#, fuzzy +#~| msgctxt "@title:column" +#~| msgid "Description" +#~ msgid "Differentiation" +#~ msgstr "Описание" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Хиперболичен аркус синус" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Хиперболичен аркус косинус" + +#, fuzzy +#~| msgid "Arc cosine" +#~ msgid "Arc cosecant" +#~ msgstr "Аркус косинус" + +#, fuzzy +#~| msgid "Hyperbolic cosecant" +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Хиперболична косеканта" + +#, fuzzy +#~| msgid "Arc cotangent" +#~ msgid "Arc secant" +#~ msgstr "Аркус котангенс" + +#, fuzzy +#~| msgid "Hyperbolic cosecant" +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Хиперболична косеканта" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Експонента (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Логаритъм с основа числото е" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Логаритъм с основа числото 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Абсолютна стойност. abs(n)=|n|" + +#~ msgid "Minimum" +#~ msgstr "Минимум" + +#~ msgid "Maximum" +#~ msgstr "Максимум" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "По-голямо от. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : граници" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Стойност" + +#, fuzzy +#~| msgid ", " +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr ", " + +#~ msgid "We can only declare variables" +#~ msgstr "Могат да се декларират само променливите" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Въведете име за новата променлива" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgctxt "html representation of an operator" +#~| msgid "%1" +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Неправилен индекс за контейнер" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "Subtraction" +#~ msgstr "Изваждане" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Грешка: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Изберете елемент от контейнера" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Грешка: Нуждаем се от стойности, за да нарисуваме диаграма" + +#~ msgid "Generating... Please wait" +#~ msgstr "Генериране... Моля, изчакайте" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Запис на журнал" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Добре" + +#, fuzzy +#~| msgid "We can only declare variables" +#~ msgid "We can only call functions" +#~ msgstr "Могат да се декларират само променливите" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Save the expression" +#~ msgstr "Запис на израз" + +#~ msgid "Calculate the expression" +#~ msgstr "Пресмятане на израз" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Ограничение за качване ≥ ограничение за сваляне" + +#~ msgid "%1" +#~ msgstr "%1" diff --git a/po/bg/plasma_applet_kalgebraplasmoid.po b/po/bg/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..41ce1f2 --- /dev/null +++ b/po/bg/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Yasen Pramatarov , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-07-15 12:30+0300\n" +"Last-Translator: Yasen Pramatarov \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" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Въведете израз" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/bs/kalgebra.po b/po/bs/kalgebra.po new file mode 100644 index 0000000..401e41f --- /dev/null +++ b/po/bs/kalgebra.po @@ -0,0 +1,502 @@ +# 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: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2013-11-03 08:42+0000\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" +"X-Generator: Launchpad (build 16820)\n" +"X-Launchpad-Export-Date: 2013-11-04 05:58+0000\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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcije: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Umetni \"%1\" na ulaz" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Umetni \"%1\" na ulaz" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Greška: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Uvezeno: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Greška: Ne mogu učitati %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informacija" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Dodaj/Izmijeni funkciju" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Pregled" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcije" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "U redu" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Ukloni" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Opcije koje ste podesili nisu tačne" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Donja granica ne može biti veća od gornje granice" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D prikaz" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D prikaz" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesija" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Promjenljive" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Izračunaj" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Izračunaj" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Učitaj Skriptu..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Posljednje skripte" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Snimi skriptu..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksportuj izvještaj..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Režim izvršenja" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Izračunaj" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Procijeni" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcije" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Dodaj" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Tačka gledišta" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D Grafik" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D Grafik" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Mreža" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Zadrži omjer ekrana" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rezolucija" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Slabo" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normalan" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fin" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Veoma fino" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D Grafik" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &Grafik" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Resetuj Pogled" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Tačke" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linije" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Čvrsto" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacije" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Rječnik" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Traži:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Izmjena" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Izaberite skriptu" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skripta(*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML datoteka (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Greške: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Slikovna datoteka\n" +"*.svg|SVG datoteka" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Spreman" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Dodaj promjenljivu" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Unesite ime za novu promjenljivu" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Kalkulator" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Samir Ribić" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "samir.ribic@etf.unsa.ba" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Dodaj/Izmijeni promjenljivu" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Ukloni Promjenljivu" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Izmijeni '%1' vrijednost" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nije dostupno" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "POGREŠNO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Lijevo:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Vrh:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Širina:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Visina:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Primijeni" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG datoteka\n" +#~ "*.pdf|PDF Dokument" + +#~ msgid "C&onsole" +#~ msgstr "K&onzola" + +#~ msgid "&Console" +#~ msgstr "&Konzola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Razvijen funkcija za crtanje implicitnih krivih . Poboljšanja za crtanje " +#~ "funkcija." + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Greška: Pogrešan tip funkcije" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Završeno: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Greška: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Očisti" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG datoteka" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." diff --git a/po/bs/plasma_applet_kalgebraplasmoid.po b/po/bs/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..87437b4 --- /dev/null +++ b/po/bs/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# 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: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2015-02-04 15:19+0000\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" +"X-Launchpad-Export-Date: 2015-02-05 07:08+0000\n" +"X-Generator: Launchpad (build 17331)\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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Unesi neki izraz." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "Kalgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ca/docs/kalgebra/commands.docbook b/po/ca/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..a569f4d --- /dev/null +++ b/po/ca/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Ordres suportades per &kalgebra; + plus (suma) + Nom: plus + Descripció: Suma + Paràmetres: plus(... paràmetres, ...) + Exemple: x->x+2 + + times (multiplicació) + Nom: times + Descripció: Multiplicació + Paràmetres: times(... paràmetres, ...) + Exemple: x->x*2 + + minus (resta) + Nom: minus + Descripció: Resta. Eliminarà tots els valors des del primer. + Paràmetres: minus(... paràmetres, ...) + Exemple: x->x-2 + + divide (divisió) + Nom: divide + Descripció: Divisió + Paràmetres: divide(par1, par2) + Exemple: x->x/2 + + quotient (quocient) + Nom: quotient + Descripció: Quocient + Paràmetres: quotient(par1, par2) + Exemple: x->quotient(x, 2) + + power (potència) + Nom: power + Descripció: Potència + Paràmetres: power(par1, par2) + Exemple: x->x^2 + + root (arrel) + Nom: root + Descripció: Arrel + Paràmetres: root(par1, par2) + Exemple: x->root(x, 2) + + factorial + Nom: factorial + Descripció: Factorial. factorial(n)=n! + Paràmetres: factorial(par1) + Exemple: x->factorial(x) + + and (i) + Nom: and + Descripció: Booleà «and» (i) + Paràmetres: and(... paràmetres, ...) + Exemple: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or (o) + Nom: or + Descripció: Booleà «or» (o) + Paràmetres: or(... paràmetres, ...) + Exemple: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor (xo) + Nom: xor + Descripció: Booleà «xor» + Paràmetres: xor(... paràmetres, ...) + Exemple: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not (no) + Nom: not + Descripció: Booleà «not» + Paràmetres: not(par1) + Exemple: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd (màxim comú divisor) + Nom: gcd + Descripció: Màxim comú divisor + Paràmetres: gcd(... paràmetres, ...) + Exemple: x->gcd(x, 3) + + lcm (mínim comú múltiple) + Nom: lcm + Descripció: Mínim comú múltiple + Paràmetres: lcm(... paràmetres, ...) + Exemple: x->lcm(x, 4) + + rem (restant) + Nom: rem + Descripció: Restant + Paràmetres: rem(par1, par2) + Exemple: x->rem(x, 5) + + factorof (factor de) + Nom: factorof + Descripció: El factor «of» (de) + Paràmetres: factorof(par1, par2) + Exemple: x->factorof(x, 3) + + max (màxim) + Nom: max + Descripció: Màxim + Paràmetres: max(... paràmetres, ...) + Exemple: x->max(x, 4) + + min (mínim) + Nom: min + Descripció: Mínim + Paràmetres: min(... paràmetres, ...) + Exemple: x->min(x, 4) + + lt (menor que) + Nom: lt + Descripció: Menor que. lt(a,b)=a<b + Paràmetres: lt(par1, par2) + Exemple: x->piecewise { x<4 ? 1, ? 0 } + + gt (Major que) + Nom: gt + Descripció: Major que. gt(a,b)=a>b + Paràmetres: gt(par1, par2) + Exemple: x->piecewise { x>4 ? 1, ? 0 } + + eq (igual que) + Nom: eq + Descripció: Igual que. eq(a,b) = a=b + Paràmetres: eq(par1, par2) + Exemple: x->piecewise { x=4 ? 1, ? 0 } + + neq (no és igual) + Nom: neq + Descripció: No és igual. neq(a,b)=a≠b + Paràmetres: neq(par1, par2) + Exemple: x->piecewise { x!=4 ? 1, ? 0 } + + leq (menor o igual que) + Nom: leq + Descripció: Menor o igual que. leq(a,b)=a≤b + Paràmetres: leq(par1, par2) + Exemple: x->piecewise { x<=4 ? 1, ? 0 } + + geq (major o igual que) + Nom: geq + Descripció: Major o igual que. geq(a,b)=a≥b + Paràmetres: geq(par1, par2) + Exemple: x->piecewise { x>=4 ? 1, ? 0 } + + implies (implicació lògica) + Nom: implies + Descripció: Implicació lògica + Paràmetres: implies(par1, par2) + Exemple: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx (aproximació) + Nom: approx + Descripció: Aproximació. approx(a)=a±n + Paràmetres: approx(par1, par2) + Exemple: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs (valor absolut) + Nom: abs + Descripció: Valor absolut. abs(n)=|n| + Paràmetres: abs(par1) + Exemple: x->abs(x) + + floor (enter inferior) + Nom: floor + Descripció: Enter inferior. floor(n)=⌊n⌋ + Paràmetres: floor(par1) + Exemple: x->floor(x) + + ceiling (enter superior) + Nom: ceiling + Descripció: Enter superior. ceil(n)=⌈n⌉ + Paràmetres: ceiling(par1) + Exemple: x->ceiling(x) + + sin (sinus) + Nom: sin + Descripció: Funció per calcular el sinus d'un angle donat + Paràmetres: sin(par1) + Exemple: x->sin(x) + + cos (cosinus) + Nom: cos + Descripció: Funció per calcular el cosinus d'un angle donat + Paràmetres: cos(par1) + Exemple: x->cos(x) + + tan (tangent) + Nom: tan + Descripció: Funció per calcular la tangent d'un angle donat + Paràmetres: tan(par1) + Exemple: x->tan(x) + + sec (secant) + Nom: sec + Descripció: Secant + Paràmetres: sec(par1) + Exemple: x->sec(x) + + csc (cosecant) + Nom: csc + Descripció: Cosecant + Paràmetres: csc(par1) + Exemple: x->csc(x) + + cot (cotangent) + Nom: cot + Descripció: Cotangent + Paràmetres: cot(par1) + Exemple: x->cot(x) + + sinh (sinus hiperbòlic) + Nom: sinh + Descripció: Sinus hiperbòlic + Paràmetres: sinh(par1) + Exemple: x->sinh(x) + + cosh (cosinus hiperbòlic) + Nom: cosh + Descripció: Cosinus hiperbòlic + Paràmetres: cosh(par1) + Exemple: x->cosh(x) + + tanh (tangent hiperbòlica) + Nom: tanh + Descripció: Tangent hiperbòlica + Paràmetres: tanh(par1) + Exemple: x->tanh(x) + + sech (secant hiperbòlica) + Nom: sech + Descripció: Secant hiperbòlica + Paràmetres: sech(par1) + Exemple: x->sech(x) + + csch (cosecant hiperbòlica) + Nom: csch + Descripció: Cosecant hiperbòlica + Paràmetres: csch(par1) + Exemple: x->csch(x) + + coth (cotangent hiperbòlica) + Nom: coth + Descripció: Cotangent hiperbòlica + Paràmetres: coth(par1) + Exemple: x->coth(x) + + arcsin (arcsinus) + Nom: arcsin + Descripció: Arcsinus + Paràmetres: arcsin(par1) + Exemple: x->arcsin(x) + + arccos (arccosinus) + Nom: arccos + Descripció: Arccosinus + Paràmetres: arccos(par1) + Exemple: x->arccos(x) + + arctan (arctangent) + Nom: arctan + Descripció: Arctangent + Paràmetres: arctan(par1) + Exemple: x->arctan(x) + + arccot (arccotangent) + Nom: arccot + Descripció: Arccotangent + Paràmetres: arccot(par1) + Exemple: x->arccot(x) + + arccosh (arccosinus hiperbòlic) + Nom: arccosh + Descripció: Arccosinus hiperbòlic + Paràmetres: arccosh(par1) + Exemple: x->arccosh(x) + + arccsc (arccosecant) + Nom: arccsc + Descripció: Arccosecant + Paràmetres: arccsc(par1) + Exemple: x->arccsc(x) + + arccsch (arccosecant hiperbòlica) + Nom: arccsch + Descripció: Arccosecant hiperbòlica + Paràmetres: arccsch(par1) + Exemple: x->arccsch(x) + + arcsec (arcsecant) + Nom: arcsec + Descripció: Arcsecant + Paràmetres: arcsec(par1) + Exemple: x->arcsec(x) + + arcsech (arcsecant hiperbòlica) + Nom: arcsech + Descripció: Arcsecant hiperbòlica + Paràmetres: arcsech(par1) + Exemple: x->arcsech(x) + + arcsinh (arcsinus hiperbòlic) + Nom: arcsinh + Descripció: Arcsinus hiperbòlic + Paràmetres: arcsinh(par1) + Exemple: x->arcsinh(x) + + arctanh (arctangent hiperbòlica) + Nom: arctanh + Descripció: Arctangent hiperbòlica + Paràmetres: arctanh(par1) + Exemple: x->arctanh(x) + + exp (exponent) + Nom: exp + Descripció: Exponent (e^x) + Paràmetres: exp(par1) + Exemple: x->exp(x) + + ln (base e) + Nom: ln + Descripció: Logaritme en base e + Paràmetres: ln(par1) + Exemple: x->ln(x) + + log (base 10) + Nom: log + Descripció: Logaritme en base 10 + Paràmetres: log(par1) + Exemple: x->log(x) + + conjugate + Nom: conjugate + Descripció: Conjugate + Paràmetres: conjugate(par1) + Exemple: x->conjugate(x*i) + + arg + Nom: arg + Descripció: Arg + Paràmetres: arg(par1) + Exemple: x->arg(x*i) + + real + Nom: real + Descripció: Real + Paràmetres: real(par1) + Exemple: x->real(x*i) + + imaginary + Nom: imaginary + Descripció: Imaginary + Paràmetres: imaginary(par1) + Exemple: x->imaginary(x*i) + + sum (suma) + Nom: sum + Descripció: Suma + Paràmetres: sum(par1 : var=des_de..a) + Exemple: x->x*sum(t*t:t=0..3) + + product (producte) + Nom: product + Descripció: Producte + Paràmetres: product(par1 : var=des_de..a) + Exemple: x->product(t+t:t=1..3) + + diff (diferenciació) + Nom: diff + Descripció: Diferenciació + Paràmetres: diff(par1 : var) + Exemple: x->(diff(x^2:x))(x) + + card (cardinal) + Nom: card + Descripció: Cardinal + Paràmetres: card(par1) + Exemple: x->card(vector { x, 1, 2 }) + + scalarproduct (producte escalar) + Nom: scalarproduct + Descripció: Producte escalar + Paràmetres: scalarproduct(... paràmetres, ...) + Exemple: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nom: selector + Descripció: Selecciona l'element par1-è de la llista o vector par2 + Paràmetres: selector(par1, par2) + Exemple: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union (unió) + Nom: union + Descripció: Uneix diversos ítems del mateix tipus + Paràmetres: union(... paràmetres, ...) + Exemple: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall (per a tots) + Nom: forall + Descripció: Per a tots + Paràmetres: forall(par1 : var) + Exemple: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists (existeix) + Nom: exists + Descripció: Existeix + Paràmetres: exists(par1 : var) + Exemple: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nom: map + Descripció: Aplica una funció a cada element d'una llista + Paràmetres: map(par1, par2) + Exemple: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter (filtre) + Nom: filter + Descripció: Elimina tots els elements que no verifiquin certa condició + Paràmetres: filter(par1, par2) + Exemple: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose (transposa) + Nom: transpose + Descripció: Transposa + Paràmetres: transpose(par1) + Exemple: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/ca/docs/kalgebra/index.docbook b/po/ca/docs/kalgebra/index.docbook new file mode 100644 index 0000000..cfb4e6c --- /dev/null +++ b/po/ca/docs/kalgebra/index.docbook @@ -0,0 +1,694 @@ + + + + + + +]> + + + + +El manual de &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+&traductor.Antoni.Bella; +
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +19 d'abril de 2016 +0.10 (Aplicacions 16.04) + + +&kalgebra; és una aplicació que pot substituir la calculadora gràfica. Té característiques numèriques, lògiques, simbòliques i d'anàlisi que us permetran calcular expressions matemàtiques a la calculadora i traçar gràfics dels resultats en 2D o 3D. &kalgebra; té les seves arrels en el llenguatge de marques matemàtic (Mathematical Markup Language -MathML-). Però un no us caldrà saber MathML per utilitzar &kalgebra;. + + + +KDE +kdeedu +graf +matemàtiques +2D +3D +mathML + + +
+ + +Introducció + +&kalgebra; té nombroses característiques que permeten a l'usuari realitzar tot tipus d'operacions matemàtiques i mostrar-les gràficament. Alhora, aquest programa ha estat orientat a MathML. Ara el pot utilitzar qualsevol persona amb una mica de coneixements matemàtics per resoldre problemes senzills i avançats per igual. + +Inclou característiques com: + + + +Una calculadora per a l'avaluació ràpida i fàcil de les funcions matemàtiques. +Capacitat de crear scripts per a sèries de càlculs avançats +Capacitats de llenguatge, incloent-hi l'autocompleció de definició de funcions i sintaxi. +Funcions de càlcul, incloent-hi els derivats de càlcul simbòlic, càlcul vectorial, manipulació de les llistes. +Gràfics de funcions amb cursor dinàmic per trobar l'arrel gràfica i altres tipus d'anàlisi. +Gràfics 3D per a una visualització útil de les funcions en 3D. +Un diccionari encastat d'operadors per a una referència ràpida de les funcions disponibles. + + +A continuació es mostra una captura de pantalla de l'aplicació &kalgebra; en acció: + + +Aquí hi ha una captura de pantalla de la finestra principal de &kalgebra; + + + + + + Finestra principal de &kalgebra; + + + + +Quan l'usuari inicia una sessió de &kalgebra;, es presentarà amb una sola finestra que consisteix en una pestanya Calculadora, un Graf 2D, un Graf 3D i un Diccionari. Dins de cada pestanya, trobareu un camp d'entrada per introduir les vostres funcions o càlculs, i un camp de vista que mostrarà els resultats. + +En qualsevol moment l'usuari pot gestionar la seva sessió amb les opcions del menú principal Sessió: + + + + +&Ctrl; N SessióNou +Obre una nova finestra de &kalgebra;. + + + +&Ctrl;&Maj; F SessióMode de pantalla completa +Alterna el mode de pantalla completa per a la finestra de &kalgebra;. El mode de pantalla completa també es pot activar i desactivar utilitzant el botó a la part superior dreta de la finestra de &kalgebra;. + + + +&Ctrl; Q SessióSurt +Surt del programa. + + + + + + + +Sintaxi +&kalgebra; utilitza una sintaxi algebraica intuïtiva per a la introducció de funcions d'usuari, similar a la utilitzada en les calculadores gràfiques més modernes. En aquesta secció s'enumeren els operadors incorporats fonamentals disponibles a &kalgebra;. L'autor de &kalgebra; modela aquesta sintaxi basant-se en Maxima i maple per als usuaris que estiguin familiaritzats amb aquests programes. + +Per als usuaris que estiguin interessats en el funcionament intern de &kalgebra;, les expressions introduïdes per l'usuari es converteixen a MathML sobre el dorsal. Una comprensió rudimentària de les capacitats de suport de MathML donen un gran avenç a les capacitats internes de &kalgebra;. + +Aquí hi ha una llista dels operadors disponibles que tenim per ara: + ++ - * / : Suma, resta, multiplicació i divisió. +^, ** : Potència, pot utilitzar ambdós. També és possible utilitzar caràcters Unicode ². Les potències són una manera de calcular arrels, podeu fer-ho com: a**(1/b) +-> : lambda. És la manera d'especificar una o més variables lliures que seran acotades a una funció. Per exemple, en l'expressió, length:=(x,y)->(x*x+y*y)^0.5, l'operador «lambda» s'utilitza per indicar que «x» i «y» s'acoten quan s'utilitza la funció de longitud («length»). +x=a..b : S'utilitza quan necessitem delimitar un abast (variable acotada+límit superior+límit inferior). Això vol dir que «x» anirà des de «A» a «B». +() : S'utilitza per especificar una prioritat més alta. +abc(params) : Funcions. Quan l'analitzador troba una funció, comprovarà si «abc» és un operador. Si ho és, el tractarà com a tal, si no ho és, el tractarà com una funció d'usuari. +:= : Definició. S'utilitza per definir un valor variable. Podeu fer coses com x:=3, x:=y, la «y» es pot o no definir, o perimeter:=r->2*pi*r. +? : Definició de condicions. Aquesta és la manera com podem definir operacions condicionals a &kalgebra;. Dit d'una altra manera, aquesta és una forma d'especificar una condició «if», «elseif», «else». Si presentem la condició abans del caràcter «?» només s'utilitzarà aquesta condició si és veritat, si troba un caràcter «?» sense cap condició, introduirà l'última instància. Exemple: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{} : Contenidor de MathML. Es pot utilitzar per definir un contenidor. Principalment útil per treballar amb les definicions d'operacions condicionals. += > >= < <= : Comparadors de valor per «igual que», «major que», «major o igual que», «menor que» i «menor o igual que», respectivament. + + +Ara us podeu preguntar, què fa llavors MathML? És molt senzill. Amb ell, podem operar amb funcions com cos(), sin(), altres funcions trigonomètriques, sum() o product(). No importa de quin tipus siguin. Podem utilitzar plus(), times() i tot el que té el seu operador. Les funcions booleanes també s'apliquen, així que no podem fer quelcom semblant a or(1,0,0,0,0). + + + + +Ús de la calculadora +La calculadora del &kalgebra; és útil com una calculadora amb esteroides. L'usuari pot introduir expressions per avaluar en rl mode Calcula o Avalua, depenent de la selecció al menú de la Calculadora. +En el mode avaluació, &kalgebra; simplifica l'expressió fins i tot si veu una variable sense definir. En el mode càlcul, &kalgebra; ho calcula tot i si troba una variable sense definir, mostrarà un error. +A més de mostrar a la pantalla de la calculadora les equacions i resultats introduïts per l'usuari, totes les variables que es declaren es mostren en un quadre persistent de la dreta. Fent doble clic sobre una variable, veureu un diàleg que us permetrà canviar els seus valors (només una manera d'enganyar al registre). + +La variable «ans» és especial, cada vegada que introduïu una expressió, el valor de la variable «ans» canviarà el resultat final. + +Els següents exemples són de funcions que es poden introduir en el camp d'entrada de la finestra de la calculadora: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +A continuació es mostra una captura de pantalla de la finestra de la calculadora després d'introduir les expressions d'exemple de dalt: + +Captura de pantalla de la finestra calculadora del &kalgebra; amb expressions d'exemple + + + + + + Finestra calculadora del &kalgebra; + + + + + +Un usuari pot controlar l'execució d'una sèrie de càlculs utilitzant les opcions de menú de Calculadora: + + + + +&Ctrl; L CalculadoraCarrega un script +Executa les instruccions en un fitxer seqüencial. Útil si es volen definir algunes biblioteques o reprendre algun treball anterior. + + + +&Ctrl; G CalculadoraDesa un script +Desa les instruccions que heu escrit des que es va iniciar la sessió per poder-les tornar a utilitzar. Genera fitxers de text de manera que siguin fàcils de corregir utilitzant qualsevol editor de text, com Kate. + + + +&Ctrl; S CalculadoraExporta el registre +Desa el registre amb tots els resultats en un fitxer &HTML; per poder-lo imprimir o publicar. + + + + + + + +Grafs 2D +Per afegir un nou graf 2D en &kalgebra;, seleccioneu la pestanya Graf 2D i feu clic a la pestanya Afegeix per afegir una nova funció. El vostre focus anirà a un quadre de text des d'on podreu escriure la funció. + + +Sintaxi +Si voleu utilitzar una funció típica f(x), no és necessari especificar-la, però si voleu f(y) o una funció polar, haureu d'afegir y-> i q-> com en les variables acotades. + +Exemples: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Si heu introduït la funció, feu clic al botó D'acord per visualitzar el graf a la finestra principal. + + + + +Característiques +Podeu ajustar diversos grafs en la mateixa vista. Només heu d'utilitzar el botó Afegeix quan es troba en mode de llista. Podeu ajustar cada graf amb el seu propi color. + +La vista es pot apropar i moure amb el ratolí. Utilitzant la roda podeu apropar i allunyar. També podeu seleccionar una zona amb el &BER; i aquesta àrea serà ampliada. Moureu la vista amb les tecles de fletxa. + + + El camp de visió dels grafs en 2D es pot definir de forma explícita utilitzant la pestanya Camp de visió sobre una pestanya Graf 2D. + + +A la pestanya Llista, podeu obrir una pestanya Editant per editar o eliminar una funció amb doble clic i marcar o desmarcar la casella de selecció al costat del nom de la funció per mostrar-la o ocultar-la. +Al menú Graf 2D trobareu aquestes opcions: + +Mostrar o ocultar la graella +Mantenir la relació d'aspecte mentre es fa zoom +Apropar (&Ctrl; +) i allunyar (&Ctrl; -) +Desar (&Ctrl; S) el graf com un fitxer d'imatge +Reiniciar la vista a l'apropament original +Selecciona una resolució pels grafs + + +A continuació es mostra una captura de pantalla d'un usuari que el cursor es troba en l'arrel a la dreta de la funció, sin(1/x). L'usuari utilitza una resolució molt alta per crear aquest graf (atès que una funció amb una freqüència cada vegada major acaba oscil·lant al voltant de les coordenades d'origen). També hi ha una funció de cursor en viu, on cada vegada que moveu el cursor sobre un punt, es mostren els valors de «x» i «y» a la cantonada inferior esquerra de la pantalla. També s'ha dibuixat una «línia tangent» sobre la funció a la posició on es troba el cursor. + + +Aquí hi ha una captura de pantalla de la finestra grafs 2D de &kalgebra; + + + + + + Finestra grafs 2D de &kalgebra; + + + + + + + + + + +Grafs 3D + +Per dibuixar un graf 3D amb &kalgebra; seleccioneu la pestanya Graf 3D i veureu un camp d'entrada a la part inferior on escriureu la funció. Z encara no es pot definir. De moment &kalgebra; només suporta grafs 3D explícitament que depenen únicament de la «x» i «y», com ara (x,y)->x*y, on z=x*y. + +Exemples: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +La vista es pot apropar i moure amb el ratolí. Utilitzant la roda podeu apropar i allunyar. Premeu el &BER; i moveu el ratolí per girar el graf. + + Les tecles de fletxa esquerra i dreta giren el gràfic al voltant de l'eix «z», les tecles de fletxa cap amunt i cap avall el giren al voltant de l'eix horitzontal de la vista. Premeu W per ampliar i S per allunyar dins del gràfic. + +Al menú Graf 3D trobareu aquestes opcions: + + +Desar (&Ctrl; S) el graf com un fitxer d'imatge +Reiniciar la vista a l'apropament original al menú de grafs 3D +Podeu dibuixar els grafs amb punts, línies o estils sòlids al menú de graf 3D + + +A continuació es mostra una captura de pantalla de l'anomenada funció «sombrero». En aquest graf en particular es mostra el graf 3D utilitzant l'estil de línies. + + +Aquí hi ha una captura de pantalla de la finestra grafs 3D de &kalgebra; + + + + + + Finestra grafs 3D de &kalgebra; + + + + + + + +Diccionari + +El diccionari conté una llista de totes les funcions incloses a &kalgebra;. Es pot utilitzar per trobar la definició d'una operació i els seus paràmetres d'entrada. És un lloc útil per cercar les moltes capacitats de &kalgebra;. + + A continuació es mostra una captura de pantalla de la cerca al diccionari de &kalgebra; de la funció cosinus. + + +Aquí hi ha una captura de pantalla de la finestra diccionari de &kalgebra; + + + + + + Finestra diccionari de &kalgebra; + + + + + + + +&commands; + + +Crèdits i llicència + + +Copyright del programa 2005-2009 &Aleix.Pol; + + + +Copyright de la documentació 2007 &Aleix.Pol; &Aleix.Pol.mail; + +Traductor de la documentació: &credits.Antoni.Bella; &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/ca/docs/kalgebra/kalgebra-2dgraph-window.png b/po/ca/docs/kalgebra/kalgebra-2dgraph-window.png new file mode 100644 index 0000000000000000000000000000000000000000..414b81b3c4523b13481c445a8bc0f669b359f169 GIT binary patch literal 70536 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

i*66MZ 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 literal 0 HcmV?d00001 diff --git a/po/ca/docs/kalgebra/kalgebra-main-window.png b/po/ca/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..dff189c13919c8146232eaabac0bbeae91af77af GIT binary patch literal 105212 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 HeZ>C)L01^& literal 0 HcmV?d00001 diff --git a/po/ca/docs/kalgebra/view-fullscreen.png b/po/ca/docs/kalgebra/view-fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..f004b1d1ebe83b690fcf7430d69929b3e44f0be1 GIT binary patch literal 514 zcmV+d0{#7oP) zM6G~#0G@)xJ~u7A7%d6sc>NB5fE#cqjapS|)k{*5_ENi+@Xx`q03}Y=Lh@!LAM73P z%Fz=n`ZM-Zs6o}%xq)Gz8~NR<>UV%*RBaxW zr_Wz_`sDG3oCi#{q45LBW<+2THh|+gOr}#>UOoQ>)0-Py*Tu4|ybWiwpPZdv5XW&X z1{$tQr_-j, 2007, 2008, 2009, 2010, 2011, 2012, 2013. +# Aleix Pol , 2007, 2008, 2009. +# Josep Ma. Ferrer , 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2017, 2018, 2019. +# Antoni Bella Pérez , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-09-07 14:49+0100\n" +"Last-Translator: Josep Ma. 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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcions: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Enganxa «%1» a l'entrada" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Enganxa a l'entrada" + +#: consolemodel.cpp:88 +#, kde-format +msgid "

    Error: %1
  • %2
" +msgstr "
    Error: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importades: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Error: No s'ha pogut carregar %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informació" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Afegeix/Edita una funció" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Des de:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "A:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcions" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "D'acord" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Elimina" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Les opcions que heu especificat no són correctes" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "El límit inferior no pot ser més gran que el superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Gràfic 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Gràfic 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessió" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variables" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Carrega un script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripts recents" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Desa un script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exporta el registre..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Insereix «ANS»..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Mode d'execució" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcula" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Avalua" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funcions" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Llista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Afegeix" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Àrea de visualització" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Gràfic &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gràfic 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Graella" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Mantén la relació d'aspecte" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolució" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Pobre" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fina" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Molt fina" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gràfic &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Gràfic 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Restableix la vista" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punts" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Línies" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sòlid" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacions" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Diccionari" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Cerca:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editant" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Escull un script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Fitxer HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Seleccioneu a on situar el gràfic renderitzat" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Fitxer PNG (*.png);;Fitxer SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Llest" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Afegeix una variable" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Introduïu un nom per a la nova variable" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Una calculadora portàtil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Orestes Mas Casals" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "orestes@tsc.upc.edu" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Afegir/Editar una variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Elimina variable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Edita el valor «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "no disponible" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "INCORRECTE" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Esquerra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Dalt:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Amplada:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Alçada:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplica" diff --git a/po/ca/kalgebramobile.po b/po/ca/kalgebramobile.po new file mode 100644 index 0000000..fa38510 --- /dev/null +++ b/po/ca/kalgebramobile.po @@ -0,0 +1,179 @@ +# Translation of kalgebramobile.po to Catalan +# Copyright (C) 2018-2019 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. +# +# Aleix , 2018. +# Antoni Bella Pérez , 2018. +# Josep Ma. Ferrer , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-09-07 14:50+0100\n" +"Last-Translator: Josep Ma. 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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Una calculadora portàtil" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "aleixpol@kde.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra mòbil" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Una calculadora científica senzilla" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Carrega un script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Desa l'script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exporta el registre..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Avalua..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcula..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Neteja el registre" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copia «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gràfica en 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gràfica en 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Desa..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Veure la quadrícula" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Restableix l'àrea de visualització" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Neteja-ho tot" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Errors: El pas no pot ser 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Errors: L'inici i el final és el mateix" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "A:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Pas:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Executa" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultats:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expressió per calcular..." diff --git a/po/ca/plasma_applet_kalgebraplasmoid.po b/po/ca/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..bfea977 --- /dev/null +++ b/po/ca/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Translation of plasma_applet_kalgebraplasmoid.po to Catalan +# Copyright (C) 2014 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. +# +# Josep Ma. Ferrer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-21 11:08+0200\n" +"Last-Translator: Josep Ma. 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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 1.4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Introduïu alguna expressió." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ca@valencia/kalgebra.po b/po/ca@valencia/kalgebra.po new file mode 100644 index 0000000..8fd19a2 --- /dev/null +++ b/po/ca@valencia/kalgebra.po @@ -0,0 +1,497 @@ +# Translation of kalgebra.po to Catalan (Valencian) +# Copyright (C) 2007-2018 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Orestes Mas Casals , 2007, 2008, 2009, 2010, 2011, 2012, 2013. +# Aleix Pol , 2007, 2008, 2009. +# Josep Ma. Ferrer , 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2017, 2018. +# Antoni Bella Pérez , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-26 10:10+0100\n" +"Last-Translator: Josep Ma. 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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcions: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Enganxa «%1» a l'entrada" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Enganxa a l'entrada" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Error: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importades: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Error: No s'ha pogut carregar %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informació" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Afig/Edita una funció" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Des de:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "A:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcions" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "D'acord" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Elimina" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Les opcions que heu especificat no són correctes" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "El límit inferior no pot ser més gran que el superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Gràfic 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Gràfic 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessió" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variables" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Carrega un script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripts recents" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Guar&da un script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exporta el registre..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Insereix «ANS»..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Mode d'execució" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcula" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Avalua" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funcions" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Llista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Afig" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Finestra de visualització" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Gràfic &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gràfic 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Graella" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Mantén la relació d'aspecte" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolució" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Pobre" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fina" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Molt fina" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gràfic &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Gràfic 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Restableix la vista" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punts" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Línies" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sòlid" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacions" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Diccionari" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Cerca:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editant" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Trieu un script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Fitxer HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Seleccioneu a on situar el gràfic renderitzat" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Fitxer PNG (*.png);;Fitxer SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Llest" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Afig una variable" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Introduïu un nom per a la nova variable" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Una calculadora portàtil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Orestes Mas Casals" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "orestes@tsc.upc.edu" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Afegir/Editar una variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Elimina variable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Edita el valor «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "no disponible" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "INCORRECTE" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Esquerra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Dalt:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Amplària:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Alçària:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplica" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "Fitxer PNG (*.png);;Document PDF (*.pdf);;Document X3D (*.x3d);;Document " +#~ "STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsola" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Consola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +# skip-rule: t-sc-plot +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Ha desenvolupat la possibilitat de dibuixar corbes implícites. Millores a " +#~ "les funcions de representació." + +#~ msgid "Formula" +#~ msgstr "Fórmula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Error: tipus de funció equivocat" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Fet: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Error: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Neteja" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Fitxer PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparència" + +#~ msgid "Type" +#~ msgstr "Tipus" diff --git a/po/ca@valencia/kalgebramobile.po b/po/ca@valencia/kalgebramobile.po new file mode 100644 index 0000000..693d89e --- /dev/null +++ b/po/ca@valencia/kalgebramobile.po @@ -0,0 +1,210 @@ +# Translation of kalgebramobile.po to Catalan (Valencian) +# Copyright (C) 2018-2019 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. +# +# Aleix , 2018. +# Antoni Bella Pérez , 2018. +# Josep Ma. Ferrer , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 15:59+0100\n" +"Last-Translator: Josep Ma. 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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Una calculadora portàtil" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "aleixpol@kde.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra mòbil" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Una calculadora científica senzilla" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Carrega un script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Guarda l'script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exporta el registre..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Avalua..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcula..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Neteja el registre" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copia «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gràfica en 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gràfica en 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Guarda..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Veure la quadrícula" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Restableix la vista" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Neteja-ho tot" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Errors: El pas no pot ser 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Errors: L'inici i el final és el mateix" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "A:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Pas:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Executa" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultats:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expressió per calcular..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "El KAlgebra és proporcionat per la comunitat de KDE i KDE Edu amb d'un entorn " +#~ "de programari lliure." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Si voleu aprendre més sobre el KAlgebra, podeu trobar més informació al " +#~ "web " +#~ "oficial i a la wiki per " +#~ "usuaris.
Si teniu cap problema amb el nostre programari, reporteu-" +#~ "ho alnostre seguidor d'errors." + +#~ msgid "Results" +#~ msgstr "Resultats" + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information " +#~ msgstr "Si vols aprendre més sobre KAlgebra, pots trobar més informació" diff --git a/po/ca@valencia/plasma_applet_kalgebraplasmoid.po b/po/ca@valencia/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..9970390 --- /dev/null +++ b/po/ca@valencia/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Translation of plasma_applet_kalgebraplasmoid.po to Catalan (Valencian) +# Copyright (C) 2014 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. +# +# Josep Ma. Ferrer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-21 11:08+0200\n" +"Last-Translator: Josep Ma. 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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Generator: Lokalize 1.4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Introduïu alguna expressió." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/cs/kalgebra.po b/po/cs/kalgebra.po new file mode 100644 index 0000000..a43c4ef --- /dev/null +++ b/po/cs/kalgebra.po @@ -0,0 +1,432 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-03-15 12:28+0100\n" +"Last-Translator: Vít Pelčák \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 19.08.0\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Možnosti: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Vložit \"%1\" do vstupu" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Vložit do vstupu" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Chyba: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importováno: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Chyba: Nelze načíst %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informace" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Přidat/Upravit funkci" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Náhled" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od: " + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Komu: " + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Odstranit" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Dolní mez nemůže být vyšší než horní mez" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Vykreslit dvojrozměrně" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Vykreslit trojrozměrně" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sezení" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Proměnné" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Kalkulačka" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "K&alkulačka" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Načíst skript..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nedávné skripty" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Uložit skript..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportovat záznam..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Režim spuštění" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Vypočíst" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Vyhodnotit" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkce" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Seznam" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "Přid&at" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Mřížka" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Dodržet poměr stran" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rozlišení" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Nízké" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normální" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Skvělé" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Vysoké" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Obnovit pohled" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Tečky" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Čáry" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Plný" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operace" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "S&lovník" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Hledat:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Úpravy" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Vyberte skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Soubor HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Chyby: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Soubor obrázku (*.png);;Soubor SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Připraven" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Přidat proměnnou" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Zadejte název nové proměnné" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Vít Pelčák" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "vit@pelcak.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Přidat/Upravit proměnnou" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Odstranit proměnnou" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Upravit hodnotu '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "Nedostupné" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "CHYBNÉ" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Vlevo:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Nahoře:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Šířka:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Výška:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Použít" diff --git a/po/cs/kalgebramobile.po b/po/cs/kalgebramobile.po new file mode 100644 index 0000000..fa37427 --- /dev/null +++ b/po/cs/kalgebramobile.po @@ -0,0 +1,175 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vit Pelcak , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-09-30 13:33+0200\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 19.08.1\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Vít Pelčák" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "vit@pelcak.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "Mobilní KAlgebra" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Jednoduchá vědecká kalkulačka" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Načíst skript..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Uložit skript..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportovat záznam..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Vyhodnotit..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Spočítat..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Vyprázdnit záznam" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopírovat \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D graf" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D graf" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Uložit..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Zobrazit mřížku" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Smazat vše" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Chyby: Krok nemůže být 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Chyba: Začátek a konec jsou stejné" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Chyby: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Vstup:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Krok:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Spustit" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Výsledky:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "" diff --git a/po/cs/plasma_applet_kalgebraplasmoid.po b/po/cs/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..391f2a5 --- /dev/null +++ b/po/cs/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-04-14 14:07+0200\n" +"Last-Translator: Vít Pelčák \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" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Zadejte nějaký výraz." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/da/kalgebra.po b/po/da/kalgebra.po new file mode 100644 index 0000000..26373c8 --- /dev/null +++ b/po/da/kalgebra.po @@ -0,0 +1,1117 @@ +# Danish translation of kalgebra. +# Copyright (C) 2010 kalgebra's COPYRIGHT HOLDER +# This file is distributed under the same license as the kdeedu package. +# +# Martin Schlander , 2008, 2009, 2011, 2012, 2013, 2015. +# Jan Madsen , 2009. +# Torben Helligsø , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2015-12-08 19:54+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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Indstillinger: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Indsæt \"%1\" som input" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Indsæt \"%1\" som input" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Fejl: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importeret: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Fejl: Kunne ikke indlæse %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Information" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Tilføj/redigér en funktion" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Forhåndsvisning" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Fra:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Indstillinger" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Fjern" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Dine indstillinger er forkerte" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Den nedre må ikke være større end den øvre grænse." + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Session" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabler" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Regnemaskine" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgid "&Calculator" +msgid "C&alculator" +msgstr "&Regnemaskine" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Indlæs script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nylige scripts" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Gem script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksportér log..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Kørselstilstand" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Beregn" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluér" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funktioner" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Tilføj" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Visningsområde" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Gitter" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Behold aspektforhold" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Opløsning" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Grov" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fin" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Meget fin" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Nulstil visning" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Prikker" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Massiv" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operationer" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Ordbog" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Kig efter:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Redigering" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Vælg et script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fil (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Fejl: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Vælg hvor det renderede plot skal placeres" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Billedfil\n" +"*.svg|SVG-fil" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Klar" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Tilføj variabel" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Angiv et navn på den ny variabel" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "En regnemaskine" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Martin Schlander" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "mschlander@opensuse.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Tilføj/Redigér en variabel" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Fjern variabler" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Redigér \"%1\"-værdi" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ikke tilgængelig" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FORKERT" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Venstre:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Øverst:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Bredde:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Højde:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Anvend" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document\n" +#~| "*.x3d|X3D Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG-fil\n" +#~ "*.pdf|PDF-dokument *.x3d|X3D-dokument" + +#~ msgid "C&onsole" +#~ msgstr "K&onsol" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Konsol" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Udviklede funktion til tegning af implicitte kurver. Forbedring af " +#~ "plotning af funktioner." + +#~ msgid "Formula" +#~ msgstr "Formel" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Fejl: Forkert funktionstype" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Færdig: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Fejl: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Ryd" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-fil" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Gennemsigtighed" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Result: %1" +#~ msgstr "Resultat: %1" + +#~ msgid "To Expression" +#~ msgstr "Til udtryk" + +#~ msgid "To MathML" +#~ msgstr "Til MathML" + +#~ msgid "Simplify" +#~ msgstr "Forenkl" + +#~ msgid "Examples" +#~ msgstr "Eksempler" + +#~ msgid "We can only draw Real results." +#~ msgstr "Kun reelle resultater kan tegnes." + +#~ msgid "The expression is not correct" +#~ msgstr "Udtrykket er ikke korrekt" + +#~ msgid "Function type not recognized" +#~ msgstr "Funktionstype ikke genkendt" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Funktionstype ikke korrekt for funktioner der afhænger af %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Implicit funktion udefineret i planet" + +#~ msgid "center" +#~ msgstr "centreret" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funktion" + +#~ msgid "%1 function added" +#~ msgstr "Funktionen %1 tilføjet" + +#~ msgid "Hide '%1'" +#~ msgstr "Skjul \"%1\"" + +#~ msgid "Show '%1'" +#~ msgstr "Vis \"%1\"" + +#~ msgid "Selected viewport too small" +#~ msgstr "Det valgte visningsområde er for småt" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Beskrivelse" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametre" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Eksempel" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=fra..til" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametre, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Addition" + +#~ msgid "Multiplication" +#~ msgstr "Multiplikation" + +#~ msgid "Division" +#~ msgstr "Division" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Subtraktion. Vil fjerne alle værdier fra den første." + +#~ msgid "Power" +#~ msgstr "Potens" + +#~ msgid "Remainder" +#~ msgstr "Rest" + +#~ msgid "Quotient" +#~ msgstr "Kvotient" + +#~ msgid "The factor of" +#~ msgstr "Faktor af" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Fakultet. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funktion til at beregne sinus af en given vinkel" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funktion til at beregne cosinus af en given vinkel" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funktion til at beregne tangens af en given vinkel" + +#~ msgid "Secant" +#~ msgstr "Sekant" + +#~ msgid "Cosecant" +#~ msgstr "Cosekant" + +#~ msgid "Cotangent" +#~ msgstr "Cotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyberbolsk sinus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyberbolsk cosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyberbolsk tangens" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyberbolsk sekant" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperbolsk cosekant" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperbolsk cotangens" + +#~ msgid "Arc sine" +#~ msgstr "Invers sinus" + +#~ msgid "Arc cosine" +#~ msgstr "Invers cosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Invers tangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Invers cotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Invers hyperbolsk tangens" + +#~ msgid "Summatory" +#~ msgstr "Summation" + +#~ msgid "Productory" +#~ msgstr "Produkt" + +#~ msgid "For all" +#~ msgstr "For alle" + +#~ msgid "Exists" +#~ msgstr "Findes" + +#~ msgid "Differentiation" +#~ msgstr "Differentiering" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Invers hyperbolsk sinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Invers hyperbolsk cosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Invers cosekant" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Invers hyperbolsk cosekant" + +#~ msgid "Arc secant" +#~ msgstr "Invers sekant" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Invers hyperbolsk sekant" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Eksponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Naturlig logaritme" + +#~ msgid "Base-10 logarithm" +#~ msgstr "10-talslogaritme" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absolut værdi. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Rund ned. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Rund op. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Større end. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : grænser" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Værdi" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Skal specificere en korrekt handling" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr ", " + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Ukendt identifikator: \"%1\"" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Kunne ikke finde et passende valg til en betingelsessætning." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Der kan ikke sættes grænser for denne type." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Den nedre grænse er større end den øvre grænse" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Forkert nedre eller øvre grænse." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Definerede en selvrefererende variabel" + +#~ msgid "The result is not a number" +#~ msgstr "Resultatet er ikke et tal" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Nåede uventet til afslutningen af inputtet" + +#~ msgid "Unknown token %1" +#~ msgstr "Ukendt symbol %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 behøver mindst 2 parametre" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 kræver %2 parametre" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Manglende grænse for \"%1\"" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Uventet grænse for \"%1\"" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 manglende grænser for \"%2\"" + +#~ msgid "Wrong declare" +#~ msgstr "Forkert erklæring" + +#~ msgid "Empty container: %1" +#~ msgstr "Tom beholder: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Betingelser er kun tilladt i afsnitsvise strukturer." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Kan ikke have to parametre med samme navn såsom \"%1\"." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parametret otherwise skal være det sidste" + +# Edit en gyldig? +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 er ikke en gyldig betingelse indeni den afsnitsvise struktur" + +#~ msgid "We can only declare variables" +#~ msgstr "Kun variabler kan erklæres" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Der kan kun sættes grænser for variabler" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Fejl under fortolkning: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Ukendt beholder: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Kan ikke kodificere værdien %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Operatoren %1 kan ikke have underkontekster." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Elementet \"%1\" er ikke en operator." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Vil ikke have tomme vektorer" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Ikke understøttet/ukendt: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Forventede %1 i stedet for %2" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Mangler højre parentes" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Ikke-afbalanceret højre parentes" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Uventet symbol %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Uventet symbol %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Kunne ikke udregne den afledte værdi for \"%1\"" + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Domænet skal enten være en vektor eller en liste." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Ugyldigt antal parametre for \"%2\". Skal have 1 parameter." +#~ msgstr[1] "Ugyldigt antal parametre for \"%2\". Skal have %1 parametre." + +#~ msgid "Could not call '%1'" +#~ msgstr "Kunne ikke kalde \"%1\"" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Kunne ikke løse \"%1\"" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Usammenhængende type for variablen \"%1\"" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Kunne ikke bestemme typen for afsnitsvis" + +#~ msgid "Unexpected type" +#~ msgstr "Uventet type" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Kan ikke konvertere \"%1\" til \"%2\"" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Ukendt symbol %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Kan ikke udregne resten for 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Kan ikke udregne faktoren for 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Kan ikke udregne lcm for 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Kunne ikke udregne værdien af %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Ugyldigt indeks i en beholder" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Kan ikke behandle vektorer af forskellig størrelse." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Kunne ikke beregne %1 for en vektor" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Kunne ikke beregne %1 for en liste" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Kunne ikke udregne den afledte værdi for \"%1\"" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Kunne ikke reducere \"%1\" og \"%2\"." + +#~ msgid "Incorrect domain." +#~ msgstr "Forkert domæne." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Den parametriske funktion giver ikke en vektor" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Der kræves en todimensional vektor" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Elementerne i den parametriske funktion skal være skalarer" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "%1-afledningen er ikke blevet implementeret." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Forstod ikke den reelle værdi: %1" + +#~ msgid "Subtraction" +#~ msgstr "Subtraktion" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Fejl: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Vælg et element fra en beholder" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Fejl: Værdier er nødvendige for at tegne en graf" + +#~ msgid "Generating... Please wait" +#~ msgstr "Genererer graf. Vent..." + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Forkert antal parametre. Havde %1 parameter til \"%2\"" +#~ msgstr[1] "Forkert antal parametre. Havde %1 parametre til \"%2\"" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Gem log" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Fin" + +#~ msgid "We can only call functions" +#~ msgstr "Kun funktioner kan kaldes" + +#~ msgid "Wrong parameter count" +#~ msgstr "Antallet af parametre er forkert" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "Wrong parameter count" +#~ msgid "Invalid parameter count." +#~ msgstr "Antallet af parametre er forkert" + +#~ msgid "Mode" +#~ msgstr "Tilstand" + +#~ msgid "Save the expression" +#~ msgstr "Gem udtrykket" + +#~ msgid "Calculate the expression" +#~ msgstr "Beregn udtrykket" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Kan ikke have nedre grænse ≥ øvre grænse" diff --git a/po/da/plasma_applet_kalgebraplasmoid.po b/po/da/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..94037fd --- /dev/null +++ b/po/da/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Martin Schlander , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-06-08 12:20+0200\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 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Angiv et udtryk." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/de/docs/kalgebra/commands.docbook b/po/de/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..59f1d25 --- /dev/null +++ b/po/de/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Referenz der Funktionen für &kalgebra; + plus + Name: plus + Beschreibung: Addition + Parameter: plus(... Parameter, ...) + Beispiel: x->x+2 + + times + Name: times + Beschreibung: Multiplikation + Parameter: times(... Parameter, ...) + Beispiel: x->x*2 + + minus + Name: minus + Beschreibung: Subtraktion. Subtrahiert alle Werte vom ersten Wert. + Parameter: minus(... Parameter, ...) + Beispiel: x->x-2 + + divide + Name: divide + Beschreibung: Division + Parameter: divide(par1, par2) + Beispiel: x->x/2 + + quotient + Name: quotient + Beschreibung: Quotient + Parameter: quotient(par1, par2) + Beispiel: x->quotient(x, 2) + + power + Name: power + Beschreibung: Potenz + Parameter: power(par1, par2) + Beispiel: x->x^2 + + root + Name: root + Beschreibung: Wurzel + Parameter: root(par1, par2) + Beispiel: x->root(x, 2) + + factorial + Name: factorial + Beschreibung; Fakultät. factorial(n)=n! + Parameter: factorial(par1) + Beispiel: x->factorial(x) + + and + Name: and + Beschreibung: Boolesches Und + Parameter: and(... Parameter, ...) + Beispiel: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Name: or + Beschreibung: Boolesches Oder + Parameter: or(... Parameter, ...) + Beispiel: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Name: xor + Beschreibung: Boolesches exclusives Oder + Parameter: xor(... Parameter, ...) + Beispiel: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Name: not + Beschreibung: Boolesches Nicht + Parameter: not(par1) + Beispiel: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Name: gcd + Beschreibung: Größter gemeinsamer Teiler + Parameter: gcd(... Parameter, ...) + Beispiel: x->gcd(x, 3) + + lcm + Name: lcm + Beschreibung: Kleinstes gemeinsames Vielfaches + Parameter: lcm(... Parameter, ...) + Beispiel: x->lcm(x, 4) + + rem + Name: rem + Beschreibung: Rest + Parameter: rem(par1, par2) + Beispiel: x->rem(x, 5) + + factorof + Name: factorof + Beschreibung: Faktor von + Parameter: factorof(par1, par2) + Beispiel: x->factorof(x, 3) + + max + Name: max + Beschreibung: Maximum + Parameter: max(... Parameter, ...) + Beispiel: x->max(x, 4) + + min + Name: min + Beschreibung: Minimum + Parameter: min(... Parameter, ...) + Beispiel: x->min(x, 4) + + lt + Name: lt + Beschreibung: Kleiner als. lt(a,b)=a<b + Parameter: lt(par1, par2) + Beispiel: x->piecewise { x<4 ? 1, ? 0 } + + gt + Name: gt + Beschreibung: Größer als. gt(a,b)=a>b + Parameter: gt(par1, par2) + Beispiel: x->piecewise { x>4 ? 1, ? 0 } + + eq + Name: eq + Beschreibung: Gleich. eq(a,b) = a=b + Parameter: eq(par1, par2) + Beispiel: x->piecewise { x=4 ? 1, ? 0 } + + neq + Name: neq + Beschreibung: Ungleich. neq(a,b) = a≠b + Parameter: neq(par1, par2) + Beispiel: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Name: leq + Beschreibung: Kleiner-Gleich. leq(a,b) = a≤b + Parameter: leq(par1, par2) + Beispiel: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Name: geq + Beschreibung: Größer-Gleich. geq(a,b) = a≥b + Parameter: geq(par1, par2) + Beispiel: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Name: implies + Beschreibung: Boolesche Implikation + Parameter: implies(par1, par2) + Beispiel: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Name: approx + Beschreibung: Näherungswert. approx(a) = a±n + Parameter: approx(par1, par2) + Beispiel: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Name: abs + Beschreibung: Absoluter Wert. abs(n)=|n| + Parameter: abs(par1) + Beispiel: x->abs(x) + + floor + Name: floor + Beschreibung: Abrunden floor(n) = ⌊n⌋ + Parameter: floor(par1) + Beispiel: x->floor(x) + + ceiling + Name: ceiling + Beschreibung: Aufrunden. ceil(n) = ⌈n⌉ + Parameter: ceiling(par1) + Beispiel: x->ceiling(x) + + sin + Name: sin + Beschreibung: Funktion, um den Sinus eines gegebenen Winkels auszurechnen + Parameter: sin(par1) + Beispiel: x->sin(x) + + cos + Name: cos + Beschreibung: Funktion, um den Kosinus eines gegebenen Winkels auszurechnen + Parameter: cos(par1) + Beispiel: x->cos(x) + + tan + Name: tan + Beschreibung: Funktion, um den Tangens eines gegebenen Winkels auszurechnen + Parameter: tan(par1) + Beispiel: x->tan(x) + + sec + Name: sec + Beschreibung: Sekans + Parameter: sec(par1) + Beispiel: x->sec(x) + + csc + Name: csc + Beschreibung: Kosekans + Parameter: csc(par1) + Beispiel: x->csc(x) + + cot + Name: cot + Beschreibung: Kotangens + Parameter: cot(par1) + Beispiel: x->cot(x) + + sinh + Name: sinh + Beschreibung: Sinus Hyperbolicus + Parameter: sinh(par1) + Beispiel: x->sinh(x) + + cosh + Name: cosh + Beschreibung: Kosinus Hyperbolicus + Parameter: cosh(par1) + Beispiel: x->cosh(x) + + tanh + Name: tanh + Beschreibung: Tangens Hyperbolicus + Parameter: tanh(par1) + Beispiel: x->tanh(x) + + sech + Name: sech + Beschreibung: Sekans Hyperbolicus + Parameter: sech(par1) + Beispiel: x->sech(x) + + csch + Name: csch + Beschreibung: Kosekans Hyperbolicus + Parameter: csch(par1) + Beispiel: x->csch(x) + + coth + Name: coth + Beschreibung: Kotangens Hyperbolicus + Parameter: coth(par1) + Beispiel: x->coth(x) + + arcsin + Name: arcsin + Beschreibung: Arkussinus + Parameter: arcsin(par1) + Beispiel: x->arcsin(x) + + arccos + Name: arccos + Beschreibung: Arkuskosinus + Parameter: arccos(par1) + Beispiel: x->arccos(x) + + arctan + Name: arctan + Beschreibung: Arkustangens + Parameter: arctan(par1) + Beispiel: x->arctan(x) + + arccot + Name: arccot + Beschreibung: Arkuskotangens + Parameter: arccot(par1) + Beispiel: x->arccot(x) + + arccosh + Name: arccosh + Beschreibung: Arkuskosinus Hyperbolicus + Parameter: arccosh(par1) + Beispiel: x->arccosh(x) + + arccsc + Name: arccsc + Beschreibung: Arkuskosekans + Parameter: arccsc(par1) + Beispiel: x->arccsc(x) + + arccsch + Name: arccsch + Beschreibung: Arkuskosekans Hyperbolicus + Parameter: arccsch(par1) + Beispiel: x->arccsch(x) + + arcsec + Name: arcsec + Beschreibung: Arkussekans + Parameter: arcsec(par1) + Beispiel: x->arcsec(x) + + arcsech + Name: arcsech + Beschreibung: Arkussekans Hyperbolicus + Parameter: arcsech(par1) + Beispiel: x->arcsech(x) + + arcsinh + Name: arcsinh + Beschreibung: Arkussinus Hyperbolicus + Parameter: arcsinh(par1) + Beispiel: x->arcsinh(x) + + arctanh + Name: arctanh + Beschreibung: Arkustangens Hyperbolicus + Parameter: arctanh(par1) + Beispiel: x->arctanh(x) + + exp + Name: exp + Beschreibung: Exponent (e^x) + Parameter: exp(par1) + Beispiel: x->exp(x) + + ln + Name: ln + Beschreibung: Natürlicher Logarithmus zur Basis e + Parameter: ln(par1) + Beispiel: x->ln(x) + + log + Name: log + Beschreibung: Dekadischer Logarithmus + Parameter: log(par1) + Beispiel: x->log(x) + + conjugate + Name: conjugate + Beschreibung: konjugiert-komplexe Zahl + Parameter: conjugate(par1) + Beispiel: x->conjugate(x*i) + + arg + Name: arg + Beschreibung: Polarwinkel einer komplexen Zahl + Parameter: arg(par1) + Beispiel: x->arg(x*i) + + real + Name: real + Beschreibung: Realteil einer komplexen Zahl + Parameter: real(par1) + Beispiel: x->real(x*i) + + imaginary + Name: imaginary + Beschreibung: Imaginärteil einer komplexen Zahl + Parameter: imaginary(par1) + Beispiel: x->imaginary(x*i) + + sum + Name: sum + Beschreibung: Summe + Parameter: sum(par1 : var=von..bis) + Beispiel: x->x*sum(t*t:t=0..3) + + product + Name: product + Beschreibung: Produkt + Parameter: product(par1 : var=von..bis) + Beispiel: x->product(t+t:t=1..3) + + diff + Name: diff + Beschreibung: Differentiation + Parameter: diff(par1 : var) + Beispiel: x->(diff(x^2:x))(x) + + card + Name: card + Beschreibung: Kardinal + Parameter: card(par1) + Beispiel: x->card(vector { x, 1, 2 }) + + scalarproduct + Name: scalarproduct + Beschreibung: Skalarprodukt + Parameter: scalarproduct(... Parameter, ...) + Beispiel: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Name: selector + Beschreibung: Wählt das par1-te Element aus der Liste oder dem Vektor par2. + Parameter: selector(par1, par2) + Beispiel: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Name: union + Beschreibung: Verbindet mehrere Einträge desselben Typs + Parameter: union(... Parameter, ...) + Beispiel: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Name: forall + Beschreibung: Für alle + Parameter: forall(par1 : var) + Beispiel: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Name: exists + Beschreibung: Existenz + Parameter: exists(par1 : var) + Beispiel: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Name: map + Beschreibung: Wendet eine Funktion auf jedes Element einer Liste an + Parameter: map(par1, par2) + Beispiel: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Name: filter + Beschreibung: Entfernt alle Elemente, die nicht einer Bedingung entsprechen + Parameter: filter(par1, par2) + Beispiel: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Name: transpose + Beschreibung: Transpose + Parameter: transpose(par1) + Beispiel: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/de/docs/kalgebra/index.docbook b/po/de/docs/kalgebra/index.docbook new file mode 100644 index 0000000..49f8aab --- /dev/null +++ b/po/de/docs/kalgebra/index.docbook @@ -0,0 +1,715 @@ + + + + + + +]> + + + + +Das Handbuch zu &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+BurkhardLück
lueck@hube-lueck.de
Übersetzung
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Applications 16.04) + + +&kalgebra; ist eine Anwendung, die Ihren grafischen Taschenrechner ersetzt. &kalgebra; hat numerische, logische, symbolische und analytische Fähigkeiten mit denen Sie mathematische Ausdrücke im Rechnerauswerten und die Ergebnisse zwei- oder dreidimensional darstellen können. &kalgebra; basiert auf der Sprache „Mathematical Markup Language“ (MathML), es sind jedoch keine Kenntnisse von MathML erforderlich, um &kalgebra; erfolgreich einsetzen zu können. + + + +KDE +kdeedu +graph +Mathematik +2D +3D +mathML + + +
+ + +Einführung + +&kalgebra; bietet zahlreiche Möglichkeiten, um alle Arten von mathematischen Operationen auszuführen und deren Ausgaben graphisch darzustellen. Früher war dieses Programm stark an MathML ausgerichtet, heute kann es von Personen mit ein wenig mathematischem Verständnis benutzt werden, um sowohl einfache als auch schwierige mathematische Aufgaben zu lösen. + +Das Programm bietet folgende Funktionsmerkmale: + + + +Ein Rechner für die schnelle und leichte Auswertung von mathematischen Funktionen. +Skript-Fähigkeiten für erweiterte Folgen von Berechnungen +Funktionsdefinitionen und automatische Syntax-Vervollständigung +Kalkülfunktionen einschließlich symbolischer Differentiation, Vektorkalkül und Listenbearbeitung. +Grafische Darstellung von Funktionen mit der Möglichkeit, mit dem Cursor die Nullstellen zu finden und weitere Arten von Analysen. +3D-Grafik zur Visualisierung von dreidimensionalen Funktionen. +Ein Funktionsverzeichnis für die schnelle Referenz zu allen vorhandenen Funktionen. + + +Hier sehen Sie ein Bildschirmfoto vom &kalgebra;-Programm: + + +Hier sehen Sie ein Bildschirmfoto vom &kalgebra;-Hauptfenster + + + + + + &kalgebra;-Hauptfenster + + + + +Das Hauptfenster von &kalgebra; besteht aus den Karteikarten Rechner, 2D-Graph, 3D-Graph und Funktionen. Auf jeder Karteikarte befindet sich ein Textfeld zur Eingabe von Funktionen oder Berechnungen und ein Bereich für die Anzeige der Ergebnisse. + +Sitzungen können jederzeit mit den Aktionen im Menü Sitzungen verwaltet werden: + + + + +&Ctrl; N SitzungNeu +Öffnet ein neues &kalgebra;-Hauptfenster + + + +&Ctrl;&Shift; F SitzungVollbildmodus +Schaltet den Vollbildmodus für das &kalgebra;-Fenster ein und aus. Dies kann auch mit dem Knopf rechts oben im &kalgebra;-Fenster ausgeführt werden. + + + +&Ctrl; Q SitzungBeenden +Beendet das Programm. + + + + + + + +Syntax +&kalgebra; verwendet eine intuitive algebraische Syntax für die Eingabe von benutzerdefinierten Funktionen, Eine ähnliche Syntax wird für die meisten modernen grafischen Rechner verwendet. In diesem Abschnitt werden alle in &kalgebra; verfügbaren eingebauten Operatoren aufgeführt. Die Syntax von &kalgebra; wurde in Anlehnung an die mathematischen Anwendungen Maxima und maple entwickelt und sollte daher allen Benutzern dieser Programme vertraut sein. + +In &kalgebra; werden die eingegebenen Ausdrücke in MathML für das Hintergrundprogramm umgewandelt. Ein grundsätzliches Verständnis der durch MathML unterstützten Fähigkeiten ist hilfreich, um die Möglichkeiten von &kalgebra; zu entdecken. + +Folgende Operatoren sind in dieser Version enthalten: + ++ - * / : Addition, Subtraktion, Multiplikation und Division. +^, ** : Potenzen, beide Schreibweisen und auch das Unicodezeichen ² sind erlaubt. Potenzen können auch als Wurzel benutzt werden, zum Beispiel: a**(1/b) +->: Lambda-Funktion. Die Möglichkeit, eine oder mehrere freie Variablen zu definieren, die an eine Funktion gebunden werden. Im Ausdruck length:=(x,y)->(x*x+y*y)^0.5 zum Beispiel wird der Lambda-Operator zur Kennzeichnung benutzt, dass x und y als gebundene Variablen bei der Funktion „length“ verwendet werden. +x=a..b : Einschränkung eines Wertebereichs (beschränkte Variable mit unterer und oberer Grenze). Die Variable x kann in diesem Beispiel nur Werte von a bis b annehmen. +() : Klammern bestimmen den Vorrang einer auszuführenden Rechenoperation vor anderen in der Rechenreihenfolge. +abc(parameter) : Funktionen. Beim Einlesen von Funktionen wird überprüft, ob „abc“ ein Operator ist. Wenn ja, dann wird es als Operator behandelt, ansonsten als benutzerdefinierte Funktion. +:= : Definition des Wertes einer Variablen. Definitionen wie x:=3, x:=y sind möglich, auch wenn y noch nicht definiert ist, oder zum Beispiel umfang:=r->2*pi*r. +? : Abschnittsweise definierte Bedingungen. Damit können bedingte Operationen in &kalgebra; definiert werden. Anders ausgedrückt ist das eine Möglichkeit „if, elseif, else“ -Bedingungen zu definieren. Das Ergebnis einer abschnittsweise definierten Funktion ist der Ausdruck nach dem '?' der ersten wahre Bedingung. Trifft keine Bedingung zu, wird der Ausdruck nach dem letzten '?' ohne vorangestellte Bedingung zurückgegeben. Beispiel: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : Damit werden MathML-Container definiert, die hauptsächlich bei abschnittsweise definierten Bedingungen verwendet werden. += > >= < <= : Vergleichsoperatoren für gleich, größer, größer oder gleich, kleiner und kleiner oder gleich. + + +Mit diese MathML-ähnlichen Syntax kann mit Funktionen wie cos(), sin(), jeder beliebigen trigonometrischen Funktion, sum() oder product() gearbeitet werden. Sie können Funktionen wie plus(), mal() und jede beliebige Funktion mit Operator verwenden. Auch Boolesche Funktionen sind implementiert, Sie können zum Beispiel mit Ausdrücken wie or(1,0,0,0,0) arbeiten. + + + + +Arbeiten mit dem Rechner +&kalgebra;s Rechner hat erweiterten Fähigkeiten. Es können Ausdrücke im Modus Berechnen oder Auswerten eingeben werden, je nach Auswahl im Menü Rechner. +Im Auswertungsmodus vereinfacht &kalgebra; Ausdrücke, auch wenn sie eine nicht definierte Variable enthalten. Im Berechnungsmodus wird alles berechnet und bei einer nicht definierte Variablen eine Fehlermeldung angezeigt. +Zusätzlich zur Anzeige der vom Benutzer eingegebenen Ausdrücke und deren Ergebnissen in der Karteikarte Rechner werden alle deklarierten Variablen in einer Liste rechts angezeigt. Durch Doppelklicken auf eine Variable in der Liste öffnen Sie einen Dialog, in dem Sie den Wert der Variablen ändern oder Sie entfernen können. + +„ans“ ist eine besondere Variable, sie enthält immer das Ergebnis der Auswertung des zuletzt eingegeben Ausdrucks. + +Als Beispiel folgen einige Funktionen, die in das Eingabefeld der Karteikarte Rechner eingetragen werden können: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Das folgende Bildschirmfoto zeigt die Karteikarte Rechner nach der Eingabe der oben genannten Beispiel-Ausdrücke: + +Bildschirmfoto des &kalgebra;-Rechners mit den Beispiel-Ausdrücken + + + + + + &kalgebra;-Karteikarte Rechner + + + + + +Mit den Aktionen für Skripte im Menü Rechner kann die Ausführung einer Folge von Berechnungen gesteuert werden: + + + + +&Ctrl; L RechnerSkript laden +Führt alle Anweisungen in der Skriptdatei nacheinander aus. Damit können Sie zum Beispiel mathematische Funktionen aus Bibliotheken oder Ihre vorher erstellte Arbeit wieder laden. + + + +&Ctrl; G RechnerSkript speichern +Speichert alle Anweisungen, die seit Beginn der Sitzung eingegeben wurden, in eine Datei. Diese Textdatei kann dann zum Beispiel mit einem Editor wie Kate korrigiert oder bearbeitet werden. + + + +&Ctrl; S RechnerProtokoll speichern +Speichert das Protokoll mit allen Ergebnissen in einer &HTML;-Datei, um sie ausdrucken oder weiterzugeben. + + + + + + + +2D-Graphen +Um einen neuen 2D-Graphen in &kalgebra; einzugeben, wechseln Sie zur Karteikarte 2D-Graph. Klicken Sie dann auf den Karteireiter Hinzufügen und geben Sie im Textfeld oben die neue Funktion ein. + + +Syntax +Eine Funktion des Typs f(x) können Sie direkt so eingeben. Für Funktionen des Typs f(y) oder für polare Funktionen müssen Sie y-> und q-> als die gebundenen Variablen hinzufügen. + +Beispiele: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Wenn Sie eine Funktion eingegeben haben, klicken Sie auf den Knopf OK, um den Graphen der Funktion auf der Karteikarte anzuzeigen. + + + + +Eigenschaften +Mehrere Graphen können in derselben Ansicht angezeigt werden. Wechseln Sie dazu auf die Karteikarte Hinzufügen. Jeder Graph kann in einer eigenen Farbe dargestellt werden. + +Die Ansicht kann mit dem Mausrad vergrößert oder verkleinert werden. Mit der linken Maustaste können Sie Bereiche in der Ansicht zur Vergrößerung auswählen. Mit den Pfeiltasten kann die Ansicht verschoben werden. + + + Das Darstellungsfeld für einen 2D-Graph kann auf der Karteikarte Darstellungsfeld definiert werden. + + +Auf der Karteikarte Liste können Sie mit Doppelklick auf eine Funktion die Karteikarte Bearbeiten öffnen. Dort kann die Funktion geändert werden. Verwenden Sie das Ankreuzfeld links neben dem Funktionsnamen, um die Anzeige der Funktion ein- und auszuschalten. +Im Menü 2D-Graph sind diese Einträge vorhanden: + +Gitternetzlinien anzeigen oder ausblenden +Seitenverhältnis bei Größenänderung beibehalten +Vergrößern (&Ctrl; +) und Verkleinern (&Ctrl; -) der Ansicht +Den Graphen als Bilddatei speichern (&Ctrl; S) +Ansicht wieder auf die Originalgröße zurücksetzen +Auflösung des Graphen einstellen + + +Das folgende Bildschirmfoto zeigt die Funktion sin(1/x) mit dem Cursor an der rechten Nullstelle der Funktion. Es wird eine sehr hohe Auflösung zur Anzeige verwendet, da die Funktion mit immer höherer Frequenz in der Nähe des Koordinatenursprungs schwingt. Folgen Sie mit dem Cursor dem Verlauf der Funktion, dann wird für jeden Punkt der x- und y-Wert der Funktion links unten angezeigt und diese Anzeige laufend aktualisiert. Gleichzeitig wird die Tangente der Funktion am aktuellen Schnittpunkt mit dem Cursor gezeichnet. + + +Hier sehen Sie ein Bildschirmfoto von der &kalgebra;-Karteikarte „2D-Graph“ + + + + + + &kalgebra;-Karteikarte „2D-Graph“ + + + + + + + + + + +3D-Graphen + +Wechseln Sie zur Karteikarte 3D-Graph und geben Sie im Textfeld unten eine Funktion ein. Zurzeit kann noch kein Funktionswert für die Z-Achse eingegeben werden. &kalgebra; erlaubt nur 3D-Funktionen abhängig von x und y, wie (x,y)->x*y, dabei ist z=x*y. + +Beispiele: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +Die Ansicht kann mit dem Mauszeiger verschoben und mit dem Mausrad vergrößert oder verkleinert werden. Mit der &LMBn; können Bereiche in der Ansicht zur Vergrößerung ausgewählt werden. + + Die Pfeiltasten links und rechts drehen die Grafik um die senkrechte Z-Achse, die Pfeiltasten auf und ab drehen die Grafik um die horizontale Achse der Ansicht. Drücken Sie die Taste W zum Vergrößern und die Taste S zum Verkleinern der Ansicht. + +Im Menü 3D-Graph sind diese Einträge vorhanden: + + +Den Graphen als Bilddatei speichern (&Ctrl; S) +Ansicht wieder auf die Originalgröße zurücksetzen +Anzeige der Grafik als Gitternetz aus Punkten, Linien oder als gefüllte Fläche mit einem Liniengitter. + + +Hier sehen Sie ein Bildschirmfoto der sogenannten „Sombrero“-Funktion, die 3D-Grafik wird im Liniengitter-Stil angezeigt. + + +Hier sehen Sie ein Bildschirmfoto von der &kalgebra;-Karteikarte „3D-Graph“ + + + + + + &kalgebra;-Karteikarte „3D-Graph“ + + + + + + + +Funktionen + +Auf der Karteikarte Funktionen finden Sie eine Liste aller in &kalgebra; verfügbaren Funktionen. Wählen Sie eine Funktion aus der Liste oder im Suchfeld, dann wird die Beschreibung, die Parameter und ein Beispiel dieser Funktion mit dem Graphen links angezeigt. + + Hier sehen Sie ein Bildschirmfoto der &kalgebra;-Karteikarte „Funktionen“ mit der Anzeige der Cosinus-Funktion. + + +Hier sehen Sie ein Bildschirmfoto von der &kalgebra;-Karteikarte „Funktionen“ + + + + + + &kalgebra;-Karteikarte „Funktionen“ + + + + + + + +&commands; + + +Danksagungen und Lizenz + + +Program copyright 2005-2009 &Aleix.Pol; + + + +Dokumentation Copyright 2007 &Aleix.Pol; &Aleix.Pol.mail; + +Übersetzung Burkhard Lücklueck@hube-lueck.de +&underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/de/docs/kalgebra/kalgebra-main-window.png b/po/de/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f9c092865a5640cc10eca57f3dcd3f68dbda2a GIT binary patch literal 17161 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 U!;vjD_^p7;NGN_N7c=z#U$bEAI{*Lx literal 0 HcmV?d00001 diff --git a/po/de/kalgebra.po b/po/de/kalgebra.po new file mode 100644 index 0000000..6afad3a --- /dev/null +++ b/po/de/kalgebra.po @@ -0,0 +1,1181 @@ +# Martin Ereth , 2007, 2008. +# Thomas Reitelbach , 2007, 2008. +# Thorsten Mürell , 2007. +# Burkhard Lück , 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017. +# Frederik Schwarzer , 2009, 2010, 2011, 2013, 2016. +# Panagiotis Papadopoulos , 2010. +# Peter Rüthemann , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-03-20 16:12+0100\n" +"Last-Translator: Burkhard Lück \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" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Optionen: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "„%1“ in Eingabe einfügen" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "In Eingabe einfügen" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Fehler: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importiert: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Fehler: %1 kann nicht geladen werden.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informationen" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Hinzufügen/Bearbeiten einer Funktion" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Vorschau" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Von:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Bis:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Optionen" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Entfernen" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Die angegebenen Optionen sind nicht richtig." + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Die untere Grenze kann nicht größer als die obere Grenze sein." + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sitzung" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variablen" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Rechner" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "&Rechner" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Skript &laden ..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Zuletzt geöffnete Skripte" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Skript speichern ..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Protokoll &exportieren ..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Ausführungsmodus" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Berechnen" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Auswerten" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funktionen" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Hinzufügen" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Darstellungsfeld" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-Graph" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-Graph" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Gitter" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Seitenverhältnis beibehalten" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Auflösung" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Grob" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fein" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Sehr fein" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-Graph" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&Graph" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Ansicht &zurücksetzen" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punktgitter" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Liniengitter" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Einfarbig mit Liniengitter" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operationen" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Funktionen" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Suchen nach:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Bearbeiten" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Wählen Sie ein Skript aus" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-Datei (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Fehler: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Wählen Sie aus, wo der gerenderte Plot abgelegt wird" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Bilddatei (*.png);;SVG-Datei (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Bereit" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Variable hinzufügen" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Geben Sie einen Namen für die neue Variable ein" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Ein tragbarer Rechner" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "Copyright © 2006–2016 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Martin Ereth" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "martin.ereth@arcor.de" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Hinzufügen/Bearbeiten einer Variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Variable entfernen" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Den Wert „%1“ bearbeiten" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nicht verfügbar" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FALSCH" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Links:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Oben:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Breite:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Höhe:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Anwenden" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG-Datei (*.png);;PDF-Dokument(*.pdf);;X3D-Dokument (*.x3d);;STL-" +#~ "Dokument (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "&Rechner" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Konsole" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Entwickelte Funktion zum Zeichnen von impliziten Kurven. Verbesserungen " +#~ "für Zeichnungsfunktionen." + +#~ msgid "Formula" +#~ msgstr "Formel" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Fehler: Falscher Funktionstyp" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Fertig: %1 ms" + +#~ msgid "Error: %1" +#~ msgstr "Fehler: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Leeren" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-Bilddatei" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1 ..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparenz" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Result: %1" +#~ msgstr "Ergebnis: %1" + +#~ msgid "To Expression" +#~ msgstr "Als Ausdruck" + +#~ msgid "To MathML" +#~ msgstr "Als MathML" + +#~ msgid "Simplify" +#~ msgstr "Vereinfachen" + +#~ msgid "Examples" +#~ msgstr "Beispiele" + +#~ msgid "We can only draw Real results." +#~ msgstr "Es können nur Reelle Ergebnisse gezeichnet werden." + +#~ msgid "The expression is not correct" +#~ msgstr "Der Ausdruck ist nicht richtig" + +#~ msgid "Function type not recognized" +#~ msgstr "Der Funktionstyp kann nicht erkannt werden" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Der Funktionstyp ist falsch für Funktionen, die von %1 abhängen" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Undefinierte implizite Funktion in der Ebene" + +#~ msgid "center" +#~ msgstr "Zentrieren" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funktion" + +#~ msgid "%1 function added" +#~ msgstr "Funktion %1 hinzugefügt" + +#~ msgid "Hide '%1'" +#~ msgstr "„%1“ ausblenden" + +#~ msgid "Show '%1'" +#~ msgstr "„%1“ anzeigen" + +#~ msgid "Selected viewport too small" +#~ msgstr "Ausgewähltes Darstellungsfeld zu klein" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Beschreibung" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parameter" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Beispiel" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=von..bis" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... Parameter, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Addition" + +#~ msgid "Multiplication" +#~ msgstr "Multiplikation" + +#~ msgid "Division" +#~ msgstr "Division" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Subtraktion. Entfernt alle Werte vom ersten." + +#~ msgid "Power" +#~ msgstr "Potenz" + +#~ msgid "Remainder" +#~ msgstr "Rest" + +#~ msgid "Quotient" +#~ msgstr "Quotient" + +#~ msgid "The factor of" +#~ msgstr "Der Faktor von" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Fakultät. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funktion, um den Sinus eines gegebenen Winkels auszurechnen" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funktion, um den Kosinus eines gegebenen Winkels auszurechnen" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funktion, um den Tangens eines gegebenen Winkels auszurechnen" + +#~ msgid "Secant" +#~ msgstr "Sekans" + +#~ msgid "Cosecant" +#~ msgstr "Kosekans" + +#~ msgid "Cotangent" +#~ msgstr "Kotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinus Hyperbolicus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Kosinus Hyperbolicus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangens Hyperbolicus" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Sekans Hyperbolicus" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Kosekans Hyperbolicus" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Kotangens Hyperbolicus" + +#~ msgid "Arc sine" +#~ msgstr "Arkussinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arkuskosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arkustangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arkuskotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Arkustangens Hyperbolicus" + +#~ msgid "Summatory" +#~ msgstr "Summe" + +#~ msgid "Productory" +#~ msgstr "Produkt" + +#~ msgid "For all" +#~ msgstr "Für alle" + +#~ msgid "Exists" +#~ msgstr "Existiert" + +#~ msgid "Differentiation" +#~ msgstr "Differentiation" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Arkussinus Hyperbolicus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Arkuskosinus Hyperbolicus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arkuskosekans" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Arkuskosekans Hyperbolicus" + +#~ msgid "Arc secant" +#~ msgstr "Arkussekans" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Arkussekans Hyperbolicus" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Natürlicher Logarithmus" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Dekadischer Logarithmus" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absoluter Wert. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Abrunden floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Aufrunden. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Größer als. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : Grenzen" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Wert" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Bitte geben Sie eine gültige Operation an" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "„, “" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Unbekannter Bezeichner: „%1“" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "" +#~ "Es kann keine passende Wahl für eine Bedingungsbeschreibung gefunden " +#~ "werden." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Dieser Typ kann nicht begrenzt werden." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Die untere Grenze ist größer als die obere Grenze" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Ungültige untere oder obere Grenze" + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Eine Variable wurde als Zirkelbezug definiert" + +#~ msgid "The result is not a number" +#~ msgstr "Das Ergebnis ist keine Nummer" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Unerwartetes Ende der Eingabe" + +#~ msgid "Unknown token %1" +#~ msgstr "Unbekanntes Trennzeichen %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 benötigt mindestens 2 Parameter" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 benötigt %2 Parameter" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Fehlende Grenze für „%1“" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Unerwartete Begrenzung für „%1“" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 fehlende Grenzen für „%2“" + +#~ msgid "Wrong declare" +#~ msgstr "Falsche Deklaration" + +#~ msgid "Empty container: %1" +#~ msgstr "Leerer Container: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "" +#~ "Es sind nur Bedingungen in einer abschnittsweise definierten Funktion " +#~ "erlaubt." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "" +#~ "Es ist nicht möglich zwei Parameter mit demselben Namen wie „%1“ zu haben." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Der sonstige-Parameter sollte der letzte sein" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "" +#~ "%1 ist keine korrekt definierte Bedingung in einer abschnittsweise " +#~ "definierten Funktion" + +#~ msgid "We can only declare variables" +#~ msgstr "Es können nur Variablen deklariert werden" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Es können nur gebundene Variablen deklariert werden" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Fehler beim Verarbeiten: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "unbekannter Container: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Wert %1 kann nicht verschlüsselt werden." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Der Operator „%1“ kann keinen Kind-Kontext haben." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Das Element „%1“ ist kein Operator." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Keine leeren Vektoren erwünscht" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nicht unterstützt/unbekannt: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Es wurde %1 anstatt „%2“ erwartet" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Fehlende schließende Klammer" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Unausgeglichene schließende Klammern" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Unerwartetes Trennzeichen %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Unerwartetes Trennzeichen %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Die Ableitung von %1 kann nicht berechnet werden" + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "" +#~ "Der Definitionsbereich muss entweder ein Vektor oder eine Liste sein." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "" +#~ "Falsche Parameteranzahl für „%2“: Es sollte einen Parameter haben." +#~ msgstr[1] "Falsche Parameteranzahl für „%2“: Es sollte %1 Parameter haben." + +#~ msgid "Could not call '%1'" +#~ msgstr "„%1“ kann nicht aufgerufen werden." + +#~ msgid "Could not solve '%1'" +#~ msgstr "„%1“ kann nicht berechnet werden." + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Geben Sie einen Namen für die neue Variable ein" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "" +#~ "Der Typ der abschnittsweise definierten Funktion kann nicht ermittelt " +#~ "werden." + +#~ msgid "Unexpected type" +#~ msgstr "Unerwarteter Typ" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "„%1“ kann nicht in „%2“ umgewandelt werden." + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Unbekanntes Trennzeichen %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Der Rest für eine Division durch 0 kann nicht berechnet werden." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Für „0“ kann kein Teiler berechnet werden." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "" +#~ "Das kleinste gemeinsame Vielfache von „0“ kann nicht berechnet werden." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Ein Wert %1 kann nicht berechnet werden" + +#~ msgid "Invalid index for a container" +#~ msgstr "Ungültiger Index für einen Container" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Vektoren unterschiedlicher Größe können nicht verarbeitet werden." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "%1 eines Vektors kann nicht berechnet werden" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "%1 einer Liste kann nicht berechnet werden" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Die Ableitung von %1 kann nicht berechnet werden" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "„%1“ und „%2“ können nicht gekürzt werden." + +#~ msgid "Incorrect domain." +#~ msgstr "Fehlerhafte Domäne." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Die parametrische Funktion gibt keinen Vektor zurück." + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Es wird ein zweidimensionaler Vektor benötigt." + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Die Elemente der parametrischen Funktion sollten Skalare sein." + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Die %1te Ableitung wurde noch nicht implementiert." + +# real = reelle Zahl? +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Der reelle Wert kann nicht nachvollzogen werden: %1" + +#~ msgid "Subtraction" +#~ msgstr "Subtraktion" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Fehler: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Ein Element aus einem Container auswählen" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "" +#~ "Fehler: Es werden Werte benötigt, um einen Graphen zeichnen zu können" + +#~ msgid "Generating... Please wait" +#~ msgstr "Erzeugen ... Bitte warten" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Falsche Parameteranzahl: 1 Parameter für „%2“" +#~ msgstr[1] "Falsche Parameteranzahl: %1 Parameter für „%2“" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Protokoll speichern" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Fein" + +#~ msgid "We can only call functions" +#~ msgstr "Es können nur Funktionen aufgerufen werden" + +#~ msgid "Wrong parameter count" +#~ msgstr "Falsche Parameteranzahl" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid parameter count." +#~ msgstr "Ungültige Parameteranzahl." + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Save the expression" +#~ msgstr "Den Ausdruck speichern" + +#~ msgid "Calculate the expression" +#~ msgstr "Den Ausdruck berechnen" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Die untere Grenze kann nicht ≥ der oberen Grenze sein" + +#, fuzzy +#~| msgid "Trying to call an empty or invalid function" +#~ msgid "Trying to call an invalid function" +#~ msgstr "Aufruf einer leeren oder ungültigen Funktion" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Die Funktion %1 existiert nicht" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Die Variable %1 existiert nicht" + +#~ msgid "Need a var name and a value" +#~ msgstr "Es wird ein Variablenname und ein Wert erwartet" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "Es können nur Containerwerte nach dem Ganzzahlindex ausgewählt werden" + +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "The first parameter in a function construction should be the name" +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "Der erste Parameter einer Funktion muss der Name sein" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Unbekannte gebundene Variable: %1" + +#~ msgid "From parser:" +#~ msgstr "Verarbeitungsausgabe:" + +#, fuzzy +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "Stück oder sonstiges an der falschen Stelle" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Fehlende Grenzwerte für einen Summenoperation" + +#~ msgctxt "" +#~ "%1 the operation name, %2 and %3 is the opearation we wanted to calculate" +#~ msgid "Cannot calculate the %1(%2, %3)" +#~ msgstr "%1(%2, %3) kann nicht berechnet werden." + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Es wurde versucht, einen unbekannten Wert zu kodieren: %1" + +#~ msgid "%1, " +#~ msgstr "%1, " + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Arkuskotangens Hyperbolicus" + +#, fuzzy +#~| msgctxt "@info:status" +#~| msgid "Ready" +#~ msgid "Real" +#~ msgstr "Bereit" diff --git a/po/de/kalgebramobile.po b/po/de/kalgebramobile.po new file mode 100644 index 0000000..2ff739e --- /dev/null +++ b/po/de/kalgebramobile.po @@ -0,0 +1,175 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# +# Burkhard Lück , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-09-22 20:47+0200\n" +"Last-Translator: Burkhard Lück \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 18.12.3\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Ein tragbarer Rechner" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "Copyright © 2006–2018 Aleix Pol Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Ein einfacher wissenschaftlicher Rechner" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Skript laden ..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Skript speichern ..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Protokoll exportieren ..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Auswerten ..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Berechnen ..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Protokoll leeren" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "„%1“ kopieren" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Speichern ..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Alles löschen" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Fehler: Die Schrittweite darf nicht 0 sein" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Fehler: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Eingabe:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Von:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Bis:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Schrittweite:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Ausführen" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Ergebnisse:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Zu berechnender Ausdruck ..." diff --git a/po/de/plasma_applet_kalgebraplasmoid.po b/po/de/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..b14ef2f --- /dev/null +++ b/po/de/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,30 @@ +# Panagiotis Papadopoulos , 2010. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-03-27 22:21+0100\n" +"Last-Translator: Panagiotis Papadopoulos \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" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Geben Sie einen Ausdruck ein." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/el/kalgebra.po b/po/el/kalgebra.po new file mode 100644 index 0000000..212116c --- /dev/null +++ b/po/el/kalgebra.po @@ -0,0 +1,1145 @@ +# translation of kalgebra.po to greek +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Spiros Georgaras , 2007. +# Toussis Manolis , 2007, 2008, 2009. +# Yannis Kaskamanidis , 2010. +# Petros , 2010. +# Antonis Geralis , 2012. +# Dimitrios Glentadakis , 2012. +# Dimitris Kardarakos , 2012, 2013, 2014. +# Stelios , 2017. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-09-16 12:45+0200\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 2.0\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Επιλογές: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Επικόλληση \"%1\" στην είσοδο" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Επικόλληση στην είσοδο" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Σφάλμα: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Εισάχθηκε: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Σφάλμα: Αδυναμία φόρτωσης του %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Πληροφορίες" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Προσθήκη/επεξεργασία μιας συνάρτησης" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Προεπισκόπηση" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Από:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Προς:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Επιλογές" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Εντάξει" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Αφαίρεση" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Οι επιλογές που καθορίσατε δεν είναι σωστές" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Το κατώτατο όριο δεν μπορεί να είναι μεγαλύτερο από το ανώτατο όριο." + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Γραφική απεικόνιση 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Γραφική απεικόνιση 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Συνεδρία" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Μεταβλητές" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "Αρι&θμομηχανή" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "Αριθμομηχ&ανή" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Φόρτωση σεναρίου..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Πρόσφατα σενάρια" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Αποθήκευση σεναρίου..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Εξαγωγή καταγραφής..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Τρόπος εκτέλεσης" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Υπολογισμός" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Αποτίμηση" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Συναρτήσεις" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Λίστα" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Προσθήκη" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Παράθυρο προβολής" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D γράφημα" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D γράφημα" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Κάνναβος" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Διατήρηση αναλογιών" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Ανάλυση" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Φτωχή" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Κανονική" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Λεπτομερής" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Πολύ λεπτομερής" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D γράφημα" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &γράφημα" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Επαναφορά προβολής" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Τελείες" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Γραμμές" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Συμπαγές" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Λειτουργίες" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Λεξικό" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Αναζήτηση για:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Επεξεργασία" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Επιλέξτε ένα σενάριο" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Σενάριο (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Αρχείο HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Σφάλματα: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Επιλέξτε τη θέση του σχεδίου" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Αρχελιο εικόνας (*.png);;SVG αρχείο (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Έτοιμο" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Προσθήκη μεταβλητής" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Εισάγετε όνομα για τη νέα μεταβλητή" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Ένας συμβατός υπολογιστής" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Τούσης Μανώλης, Σπύρος Γεωργαράς" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "manolis@koppermind.homelinux.org, sng@hellug.gr" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Προσθήκη/επεξεργασία μιας μεταβλητής" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Αφαίρεση μεταβλητής" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Επεξεργασία τιμής της '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "μη διαθέσιμο" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ΛΑΘΟΣ" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Αριστερά:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Επάνω:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Πλάτος:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Ύψος:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Εφαρμογή" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|Αρχείο PNG\n" +#~ "*.pdf|Έγγραφο PDF" + +#~ msgid "C&onsole" +#~ msgstr "Κ&ονσόλα" + +#~ msgid "&Console" +#~ msgstr "&Κονσόλα" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Ανάπτυξη χαρακτηριστικού για την σχεδίαση πεπλεγμένων καμπυλών. " +#~ "Βελτιώσεις στη γραφική απεικόνιση των συναρτήσεων." + +#~ msgid "Formula" +#~ msgstr "Μαθηματική σχέση" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Σφάλμα: Λανθασμένος τύπος της συνάρτησης" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Ολοκληρώθηκε: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Σφάλμα: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Καθαρισμός" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Αρχείο PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Διαφάνεια" + +#~ msgid "Type" +#~ msgstr "Τύπος" + +#~ msgid "Result: %1" +#~ msgstr "Αποτέλεσμα: %1" + +#~ msgid "To Expression" +#~ msgstr "Σε έκφραση" + +#~ msgid "To MathML" +#~ msgstr "Σε MathML" + +#~ msgid "Simplify" +#~ msgstr "Απλοποίηση" + +#, fuzzy +#~ msgid "Examples" +#~ msgstr "Παράδειγμα" + +#~ msgid "We can only draw Real results." +#~ msgstr "Μπορείτε να σχεδιάσετε μόνο αποτελέσματα πραγματικών." + +#~ msgid "The expression is not correct" +#~ msgstr "Η έκφραση δεν είναι σωστή" + +#~ msgid "center" +#~ msgstr "κέντρο" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Όνομα" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Συνάρτηση" + +#~ msgid "%1 function added" +#~ msgstr "Προστέθηκε %1 συνάρτηση" + +#~ msgid "Hide '%1'" +#~ msgstr "Απόκρυψη '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Εμφάνιση '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Η επιλεγμένη προβολή είναι πολύ μικρή" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Περιγραφή" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Παράμετροι" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Παράδειγμα" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... παράμετροι, ... %2)" + +#~ msgid "par%1" +#~ msgstr "παρ%1" + +#~ msgid "Addition" +#~ msgstr "Πρόσθεση" + +#~ msgid "Multiplication" +#~ msgstr "Πολλαπλασιασμός" + +#~ msgid "Division" +#~ msgstr "Διαίρεση" + +#~ msgid "Power" +#~ msgstr "Δύναμη" + +#~ msgid "Remainder" +#~ msgstr "Υπόλοιπο" + +#~ msgid "Quotient" +#~ msgstr "Πηλίκο" + +#~ msgid "The factor of" +#~ msgstr "Ο διαιρέτης του" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Παραγοντικό. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Συνάρτηση υπολογισμού του ημιτονίου μιας δοσμένης γωνίας" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Συνάρτηση υπολογισμού του συνημιτόνου μιας δοσμένης γωνίας" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Συνάρτηση υπολογισμού της εφαπτομένης μιας δοσμένης γωνίας" + +#~ msgid "Secant" +#~ msgstr "Τέμνουσα" + +#~ msgid "Cosecant" +#~ msgstr "Συντέμνουσα" + +#~ msgid "Cotangent" +#~ msgstr "Συνεφαπτομένη" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Υπερβολικό ημίτονο" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Υπερβολικό συνημίτονο" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Υπερβολική εφαπτομένη" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Υπερβολική τέμνουσα" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Υπερβολική συντέμνουσα" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Υπερβολική συνεφαπτομένη" + +#~ msgid "Arc sine" +#~ msgstr "Τόξο ημίτονου" + +#~ msgid "Arc cosine" +#~ msgstr "Τόξο συνημιτόνου" + +#~ msgid "Arc tangent" +#~ msgstr "Τόξο εφαπτομένης" + +#~ msgid "Arc cotangent" +#~ msgstr "Τόξο συνεφαπτομένης" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Υπερβολικό τόξο εφαπτομένης" + +#~ msgid "Summatory" +#~ msgstr "Άθροισμα" + +#~ msgid "Productory" +#~ msgstr "Γινόμενο" + +#, fuzzy +#~ msgid "For all" +#~ msgstr "Κανονική" + +#, fuzzy +#~ msgid "Exists" +#~ msgstr "Λίστα" + +#~ msgid "Differentiation" +#~ msgstr "Διαφορικό" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Υπερβολικό τόξο ημιτονίου" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Υπερβολικό τόξο συνημιτόνου" + +#~ msgid "Arc cosecant" +#~ msgstr "Τόξο συντέμνουσας" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Υπερβολικό τόξο συντέμνουσας" + +#~ msgid "Arc secant" +#~ msgstr "Τόξο συντέμνουσας" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Υπερβολικό τόξο τέμνουσας" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Φυσικός εκθέτης (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Φυσικός λογάριθμος" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Δεκαδικός λογάριθμος" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Απόλυτη τιμή. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Κατώτερη τιμή. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Τιμή οροφής. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Ελάχιστο" + +#~ msgid "Maximum" +#~ msgstr "Μέγιστο" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Μεγαλύτερο από. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., παρ%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "παρ%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : όρια" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Τιμή" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Πρέπει να καθορίσετε μια σωστή λειτουργία" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Άγνωστο αναγνωριστικό: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Αδυναμία εύρεσης μιας κατάλληλης επιλογής για μια δήλωση συνθήκης." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Ο τύπος δεν υποστηρίζεται για περιορισμό." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Το κατώτατο όριο είναι μεγαλύτερο από το ανώτατο όριο." + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Λανθασμένο κατώτατο ή ανώτατο όριο." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Ορίστηκε ένας κύκλος μεταβλητής" + +#~ msgid "The result is not a number" +#~ msgstr "Το αποτέλεσμα δεν είναι αριθμός" + +#~ msgid "Unknown token %1" +#~ msgstr "Άγνωστο ενδεικτικό %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "Η %1 απαιτεί τουλάχιστον 2 παραμέτρους" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "Η %1 απαιτεί %2 παραμέτρους" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Λείπει όριο για το '%1'" + +#, fuzzy +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Μη αναμενόμενο ενδεικτικό %1" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 λείπουν όρια στο '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Λανθασμένη δήλωση" + +#~ msgid "Empty container: %1" +#~ msgstr "Κενός υποδοχέας: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Συνθήκες μπορούν να υπάρχουν μόνο σε δομές piecewise." + +#, fuzzy +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Μόνο μία διαφορετικά οι παράμετροι είναι αρκετοί" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "Το %1 δεν είναι μια σωστή συνθήκη μέσα στην piecewise" + +#~ msgid "We can only declare variables" +#~ msgstr "Μπορείτε να δηλώσετε μόνο μεταβλητές." + +#~ msgid "We can only have bounded variables" +#~ msgstr "Μπορούμε να έχουμε μόνο περιορισμένες μεταβλητές" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Σφάλμα κατά την ανάλυση: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Άγνωστος υποδοχέας: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Αδυναμία κωδικοποίησης της τιμής %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Ο τελεστής %1 δεν μπορεί να έχει υποπεριεχόμενο." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Το στοιχείο '%1' δεν είναι τελεστής." + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Μη υποστηριζόμενο/άγνωστο: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Αναμενόταν %1 αντί για το %2" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Λείπει δεξιά παρένθεση" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Δεξιά παρένθεση χωρίς ισορροπία" + +#, fuzzy +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Μη αναμενόμενο ενδεικτικό %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Μη αναμενόμενο ενδεικτικό %1" + +#, fuzzy +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Αδυναμία υπολογισμού της τιμής %1" + +#, fuzzy +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Λανθασμένη μέτρηση παραμέτρου, είχε 1 παράμετρο για '%2'" +#~ msgstr[1] "Λανθασμένη μέτρηση παραμέτρου, είχε %1 παραμέτρους για '%2'" + +#, fuzzy +#~ msgid "Could not call '%1'" +#~ msgstr "Αδυναμία κλήσης '%1'" + +#, fuzzy +#~ msgid "Could not solve '%1'" +#~ msgstr "Αδυναμία υπολογισμού της τιμής %1" + +#, fuzzy +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Εισάγετε όνομα για τη νέα μεταβλητή" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Αδυναμία καθορισμού του τύπου της τμηματικής συνάρτησης" + +#, fuzzy +#~ msgid "Unexpected type" +#~ msgstr "Μη αναμενόμενο ενδεικτικό %1" + +#, fuzzy +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Αδυναμία μετατροπής %1 σε %2" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Άγνωστο σύμβολο %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Αδυναμία υπολογισμού του υπολοίπου στο 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Αδυναμία υπολογισμού του παράγοντα στο 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Αδυναμία υπολογισμού του ελάχιστου κοινού πολλαπλάσιου του 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Αδυναμία υπολογισμού της τιμής %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Μη έγκυρος δείκτης ενός υποδοχέα" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Αδυναμία τέλεσης σε διανύσματα διαφορετικού μεγέθους." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Αδυναμία υπολογισμού του %1 ενός διανύσματος" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Αδυναμία υπολογισμού μιας λίστας %1" + +#, fuzzy +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Αδυναμία υπολογισμού της τιμής %1" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Αδυναμία αλλαγής μεγέθους '%1' και '%2'." + +#~ msgid "Incorrect domain." +#~ msgstr "Λανθασμένος τομέας." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Η παραμετρική συνάρτηση δεν επέστρεψε ένα διάνυσμα" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Ένα δισδιάστατο διάνυσμα είναι απαραίτητο" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Τα αντικείμενα της παραμετρικής συνάρτησης πρέπει να έχουν μέγεθος" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Η παράγωγος %1 δεν έχει υλοποιηθεί." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Αδυναμία υπολογισμού της πραγματικής τιμής: %1" + +#~ msgid "Subtraction" +#~ msgstr "Αφαίρεση" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Σφάλμα: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Επιλέξτε ένα στοιχείο από έναν υποδοχέα" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Σφάλμα: απαιτούνται τιμές για τη σχεδίαση ενός γραφήματος" + +#~ msgid "Generating... Please wait" +#~ msgstr "Δημιουργία... παρακαλώ περιμένετε" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Λανθασμένη μέτρηση παραμέτρου, είχε 1 παράμετρο για '%2'" +#~ msgstr[1] "Λανθασμένη μέτρηση παραμέτρου, είχε %1 παραμέτρους για '%2'" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Αποθήκευση καταγραφής" + +#, fuzzy +#~ msgid "File" +#~ msgstr "Λεπτομερής" + +#~ msgid "We can only call functions" +#~ msgstr "Μπορούμε να καλέσουμε μόνο μεταβλητές." + +#~ msgid "Wrong parameter count" +#~ msgstr "Λανθασμένη μέτρηση παραμέτρου" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "αληθές" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "ψευδές" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~ msgid "Invalid parameter count." +#~ msgstr "Λανθασμένη μέτρηση παραμέτρου" + +#~ msgid "Mode" +#~ msgstr "Λειτουργία" + +#~ msgid "Save the expression" +#~ msgstr "Αποθήκευση της έκφρασης" + +#~ msgid "Calculate the expression" +#~ msgstr "Υπολογισμός της έκφρασης" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Αδυναμία εφαρμογής '%1' στο '%2'" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Αδυναμία χειρισμού '%1'" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Αδυναμία ελέγχου του '%1' τύπου" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Λανθασμένος αριθμός παραμέτρων κατά την κλήση του '%1'" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Δεν μπορεί να είναι το κάτω όριο ≥ πάνω όριο" + +#, fuzzy +#~ msgid "Trying to call an invalid function" +#~ msgstr "Προσπάθεια κλήσης μιας κενής ή μη έγκυρης συνάρτησης" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Η συνάρτηση %1 δεν υπάρχει" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Η μεταβλητή %1 δεν υπάρχει" + +#~ msgid "Need a var name and a value" +#~ msgstr "Απαιτείται όνομα μεταβλητής και μια τιμή" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "Μπορεί να επιλεγεί μια τιμή υποδοχέα μόνο με τον ακέραιο δείκτη της" + +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "Η πρώτη παράμετος σε μια κατασκευή συνάρτησης είναι το όνομα" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Άγνωστη περιορισμένη μεταβλητή: %1" + +#~ msgid "From parser:" +#~ msgstr "Από τον αναλυτή:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Εσφαλμένο πλήθος παραμέτρων σε έναν επιλογέα, θα έπρεπε να είναι 2 " +#~ "παράμετροι, το επιλεγμένο ευρετήριο και ο υποδοχέας." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "piece ή otherwise σε λανθασμένη θέση" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Χωρίς περιοριστικές μεταβλητές για αυτό το άθροισμα" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Λείπουν περιοριστικές τιμές σε μια λειτουργία άθροισης" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Προσπάθεια κωδικοποίησης μιας άγνωστης τιμής: %1" + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Υπερβολικό τόξο συνεφαπτομένης" + +#~ msgid "Real" +#~ msgstr "Πραγματικός" + +#~ msgid "%1, " +#~ msgstr "%1, " diff --git a/po/el/plasma_applet_kalgebraplasmoid.po b/po/el/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..5614c82 --- /dev/null +++ b/po/el/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# translation of plasma_applet_kalgebra.po to Greek +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Antonis Geralis , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2012-05-11 00:11+0300\n" +"Last-Translator: Antonis Geralis \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 1.4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Εισάγετε μία έκφραση." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/en_GB/kalgebra.po b/po/en_GB/kalgebra.po new file mode 100644 index 0000000..b063e4c --- /dev/null +++ b/po/en_GB/kalgebra.po @@ -0,0 +1,1163 @@ +# 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, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-03-24 19:49+0000\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 19.07.70\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Options: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Paste \"%1\" to input" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Paste to Input" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Error: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Imported: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Error: Could not load %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Information" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Add/Edit a function" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Preview" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "From:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "To:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Options" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Remove" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "The options you specified are not correct" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Downlimit cannot be greater than uplimit" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Session" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variables" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculator" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculator" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Load Script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Recent Scripts" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Save Script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Export Log..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Insert ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Execution Mode" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calculate" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluate" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Functions" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "List" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Add" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Viewport" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D Graph" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D Graph" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grid" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Keep Aspect Ratio" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolution" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Poor" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fine" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Very Fine" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D Graph" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &Graph" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Reset View" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Dots" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Lines" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Solid" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operations" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dictionary" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Look for:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editing" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Choose a script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML File (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Select where to put the rendered plot" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Image File (*.png);;SVG File (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Ready" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Add variable" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Enter a name for the new variable" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "A portable calculator" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Steve Allewell" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "steve.allewell@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Add/Edit a variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Remove Variable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Edit '%1' value" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "not available" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "WRONG" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Left:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Top:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Width:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Height:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Apply" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsole" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Console" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Error: Wrong type of function" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Done: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Error: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Clear" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG File" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparency" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Result: %1" +#~ msgstr "Result: %1" + +#~ msgid "To Expression" +#~ msgstr "To Expression" + +#~ msgid "To MathML" +#~ msgstr "To MathML" + +#~ msgid "Simplify" +#~ msgstr "Simplify" + +#~ msgid "Examples" +#~ msgstr "Examples" + +#~ msgid "We can only draw Real results." +#~ msgstr "We can only draw Real results." + +#~ msgid "The expression is not correct" +#~ msgstr "The expression is not correct" + +#~ msgid "Function type not recognized" +#~ msgstr "Function type not recognised" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Function type not correct for functions depending on %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Implicit function undefined in the plane" + +#~ msgid "center" +#~ msgstr "centre" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Function" + +#~ msgid "%1 function added" +#~ msgstr "%1 function added" + +#~ msgid "Hide '%1'" +#~ msgstr "Hide '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Show '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Selected viewport too small" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parameters" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Example" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=from..to" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parameters, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Addition" + +#~ msgid "Multiplication" +#~ msgstr "Multiplication" + +#~ msgid "Division" +#~ msgstr "Division" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Subtraction. Will remove all values from the first one." + +#~ msgid "Power" +#~ msgstr "Power" + +#~ msgid "Remainder" +#~ msgstr "Remainder" + +#~ msgid "Quotient" +#~ msgstr "Quotient" + +#~ msgid "The factor of" +#~ msgstr "The factor of" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Factorial. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Function to calculate the sine of a given angle" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Function to calculate the cosine of a given angle" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Function to calculate the tangent of a given angle" + +#~ msgid "Secant" +#~ msgstr "Secant" + +#~ msgid "Cosecant" +#~ msgstr "Cosecant" + +#~ msgid "Cotangent" +#~ msgstr "Cotangent" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyperbolic sine" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperbolic cosine" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyperbolic tangent" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyperbolic secant" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperbolic cosecant" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperbolic cotangent" + +#~ msgid "Arc sine" +#~ msgstr "Arc sine" + +#~ msgid "Arc cosine" +#~ msgstr "Arc cosine" + +#~ msgid "Arc tangent" +#~ msgstr "Arc tangent" + +#~ msgid "Arc cotangent" +#~ msgstr "Arc cotangent" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hyperbolic arc tangent" + +#~ msgid "Summatory" +#~ msgstr "Summatory" + +#~ msgid "Productory" +#~ msgstr "Productory" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Normal" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "List" + +#~ msgid "Differentiation" +#~ msgstr "Differentiation" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hyperbolic arc sine" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hyperbolic arc cosine" + +#~ msgid "Arc cosecant" +#~ msgstr "Arc cosecant" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hyperbolic arc cosecant" + +#~ msgid "Arc secant" +#~ msgstr "Arc secant" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hyperbolic arc secant" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Base-e logarithm" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Base-10 logarithm" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absolute value. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Floor value. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Ceil value. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Greater than. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : bounds" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Value" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Must specify a correct operation" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Unknown identifier: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Could not find a proper choice for a condition statement." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Type not supported for bounding." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "The downlimit is greater than the uplimit" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Incorrect uplimit or downlimit." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Defined a variable cycle" + +#~ msgid "The result is not a number" +#~ msgstr "The result is not a number" + +#~ msgid "Unknown token %1" +#~ msgstr "Unknown token %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 needs at least 2 parameters" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 requires %2 parameters" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Missing boundary for '%1'" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Unexpected bounding for '%1'" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 missing bounds on '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Wrong declare" + +#~ msgid "Empty container: %1" +#~ msgstr "Empty container: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "We can only have conditionals inside piecewise structures." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Cannot have two parameters with the same name like '%1'." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "The otherwise parameter should be the last one" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 is not a proper condition inside the piecewise" + +#~ msgid "We can only declare variables" +#~ msgstr "We can only declare variables" + +#~ msgid "We can only have bounded variables" +#~ msgstr "We can only have bounded variables" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Error while parsing: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Container unknown: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Cannot codify the %1 value." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "The %1 operator cannot have child contexts." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "The element '%1' is not an operator." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Do not want empty vectors" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Not supported/unknown: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Expected %1 instead of '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Missing right bracket" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Unbalanced right bracket" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Unexpected token %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Unexpected token %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Could not calculate the derivative for '%1'" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgstr[1] "Invalid parameter count for '%2'. Should have %1 parameters." + +#~ msgid "Could not call '%1'" +#~ msgstr "Could not call '%1'" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Could not solve '%1'" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Enter a name for the new variable" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Could not determine the type for piecewise" + +#, fuzzy +#~| msgid "Unexpected bounding for '%1'" +#~ msgid "Unexpected type" +#~ msgstr "Unexpected bounding for '%1'" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Cannot convert '%1' to '%2'" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Unknown token %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Cannot calculate the remainder on 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Cannot calculate the factor on 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Cannot calculate the lcm of 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Could not calculate a value %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Invalid index for a container" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Cannot operate on different sized vectors." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Could not calculate a vector's %1" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Could not calculate a list's %1" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Could not calculate the derivative for '%1'" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Could not reduce '%1' and '%2'." + +#~ msgid "Incorrect domain." +#~ msgstr "Incorrect domain." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "The parametric function does not return a vector" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "A two-dimensional vector is needed" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "The parametric function items should be scalars" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "The %1 derivative has not been implemented." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Did not understand the real value: %1" + +#~ msgid "Subtraction" +#~ msgstr "Subtraction" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Error: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Select an element from a container" + +#~ msgid " Plot 3D" +#~ msgstr " Plot 3D" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Error: We need values to draw a graph" + +#~ msgid "Generating... Please wait" +#~ msgstr "Generating... Please wait" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Wrong parameter count, had 1 parameter for '%2'" +#~ msgstr[1] "Wrong parameter count, had %1 parameters for '%2'" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Save Log" + +#~ msgid "File" +#~ msgstr "File" + +#~ msgid "We can only call functions" +#~ msgstr "We can only call functions" + +#~ msgid "Wrong parameter count" +#~ msgstr "Wrong parameter count" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid parameter count." +#~ msgstr "Invalid parameter count." + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Save the expression" +#~ msgstr "Save the expression" + +#~ msgid "Calculate the expression" +#~ msgstr "Calculate the expression" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Cannot apply '%1' to '%2'" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Cannot operate '%1'" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Cannot check '%1' type" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Wrong number of parameters when calling '%1'" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Cannot have downlimit ≥ uplimit" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Trying to call an invalid function" + +#~ msgid "Unfulfilled dependencies for: '%1'" +#~ msgstr "Unfulfilled dependencies for: '%1'" + +#, fuzzy +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "We want a 2 dimension vector" +#~ msgstr "We want a 2 dimension vector" + +#~ msgid "The function %1 does not exist" +#~ msgstr "The function %1 does not exist" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "The variable %1 does not exist" + +#~ msgid "Need a var name and a value" +#~ msgstr "Need a var name and a value" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "We can only select a container's value with its integer index" + +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "The first parameter in a function construction should be the name" +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "The first parameter in a function construction should be the name" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Unknown bounded variable: %1" + +#~ msgid "From parser:" +#~ msgstr "From parser:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "piece or otherwise in the wrong place" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "No bounding variables for this sum" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Missing bounding limits on a sum operation" diff --git a/po/en_GB/kalgebramobile.po b/po/en_GB/kalgebramobile.po new file mode 100644 index 0000000..e3e6d97 --- /dev/null +++ b/po/en_GB/kalgebramobile.po @@ -0,0 +1,202 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Steve Allewell , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-24 19:49+0000\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 19.07.70\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "A portable calculator" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Steve Allewell" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "steve.allewell@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "A simple scientific calculator" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Load Script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Save Script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Export Log..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Evaluate..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calculate..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Clear Log" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copy \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D Plot" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D Plot" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Save..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "View Grid" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Reset Viewport" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Clear All" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Errors: The step cannot be 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Errors: The start and end are the same" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Input:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "From:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "To:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Step:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Run" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Results:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expression to calculate..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." + +#~ msgid "Results" +#~ msgstr "Results" diff --git a/po/en_GB/plasma_applet_kalgebraplasmoid.po b/po/en_GB/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..a2f5392 --- /dev/null +++ b/po/en_GB/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Andrew Coles , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-03-27 16:31+0000\n" +"Last-Translator: Andrew Coles \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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Enter some expression." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/eo/kalgebra.po b/po/eo/kalgebra.po new file mode 100644 index 0000000..dde8980 --- /dev/null +++ b/po/eo/kalgebra.po @@ -0,0 +1,430 @@ +# Translation of kalgebra into esperanto. +# Axel Rousseau , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2009-11-14 06:06-0500\n" +"Last-Translator: Axel Rousseau \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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Zanata 3.5.1\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, fuzzy, kde-format +msgid "Options: %1" +msgstr "Opcioj" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informo" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Antaŭrigardo" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "De:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Al:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcioj" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Bone" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Seanco" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabloj" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "" + +#: kalgebra.cpp:185 +#, fuzzy, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Valoro" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcioj" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Listo" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Aldoni" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Difino" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linioj" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Plenstreko" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacioj" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Vortaro" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +msgid "Errors: %1" +msgstr "Eraro: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "" + +#: varedit.cpp:39 +#, fuzzy, kde-format +msgid "Remove Variable" +msgstr "Variabloj" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Maldekstra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Supre:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Larĝeco:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Alteco:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Apliki" diff --git a/po/eo/plasma_applet_kalgebraplasmoid.po b/po/eo/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..e19bcf2 --- /dev/null +++ b/po/eo/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,32 @@ +# Translation of plasma_applet_kalgebra into esperanto. +# Axel Rousseau , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-06-20 20:01+0200\n" +"Last-Translator: Axel Rousseau \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: pology\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/es/docs/kalgebra/commands.docbook b/po/es/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..3bd55de --- /dev/null +++ b/po/es/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Órdenes permitidas por KAlgebra + más + Nombre: más + Descripción: adición + Parámetros: más(... parámetros, ...) + Ejemplo: x->x+2 + + veces + Nombre: veces + Descripción: multiplicación + Parámetros: veces(... parámetros, ...) + Ejemplo: x->x*2 + + menos + Nombre: menos + Descripción: Sustracción. Eliminará todos los valores desde el primero. + Parámetros: menos(... parámetros, ...) + Ejemplo: x->x-2 + + dividir + Nombre: dividir + Descripción: división + Parámetros: dividir(par1, par2) + Ejemplo: x->x/2 + + cociente + Nombre: cociente + Descripción: cociente + Parámetros: cociente(par1, par2) + Ejemplo: x->quotient(x, 2) + + potencia + Nombre: potencia + Descripción: potenciación + Parámetros: potencia(par1, par2) + Ejemplo: x->x^2 + + radicación + Nombre: radicación + Descripción: radicación + Parámetros: radicación(par1, par2) + Ejemplo: x->root(x, 2) + + factorial + Nombre: factorial + Descripción: factorial. factorial(n)=n! + Parámetros: factorial(par1) + Ejemplo: x->factorial(x) + + y + Nombre: y + Descripción: y lógico + Parámetros: y(... parámetros, ...) + Ejemplo: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + o + Nombre: o + Descripción: o lógico + Parámetros: o(... parámetros, ...) + Ejemplo: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Nombre: xor + Descripción: xor lógico + Parámetros: xor(... parámetros, ...) + Ejemplo: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + negación + Nombre: negación + Descripción: negación lógica + Parámetros: negación(par1) + Ejemplo: x->piecewise { not(x>0) ? 1, ? 0 } + + mcd + Nombre: mcd + Descripción: máximo común divisor + Parámetros: mcd(... parámetros, ...) + Ejemplo: x->mcd(x, 3) + + mcm + Nombre: mcm + Descripción: mínimo común múltiplo + Parámetros: mcm(... parámetros, ...) + Ejemplo: x->mcm(x, 4) + + resto + Nombre: resto + Descripción: resto + Parámetros: resto(par1, par2) + Ejemplo: x->resto(x, 5) + + factorof + Nombre: factorof + Descripción: el factor de + Parámetros: factorof(par1, par2) + Ejemplo: x->factorof(x, 3) + + max + Nombre: max + Descripción: máximo + Parámetros: max(... parámetros, ...) + Ejemplo: x->max(x, 4) + + min + Nombre: min + Descripción: mínimo + Parámetros: min(... parámetros, ...) + Ejemplo: x->min(x, 4) + + lt + Nombre: lt + Descripción: menor que. lt(a,b)=a<b + Parámetros: lt(par1, par2) + Ejemplo: x->piecewise { x<4 ? 1, ? 0 } + + gt + Nombre: gt + Descripción: mayor que. gt(a,b)=a>b + Parámetros: gt(par1, par2) + Ejemplo: x->piecewise { x>4 ? 1, ? 0 } + + eq + Nombre: eq + Descripción: igual. eq(a,b) = a=b + Parámetros: eq(par1, par2) + Ejemplo: x->piecewise { x=4 ? 1, ? 0 } + + neq + Nombre: neq + Descripción: no igual. neq(a,b)=a≠b + Parámetros: neq(par1, par2) + Ejemplo: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Nombre: leq + Descripción: menor o igual. leq(a,b)=a≤b + Parámetros: leq(par1, par2) + Ejemplo: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Nombre: geq + Descripción: mayor o igual. geq(a,b)=a≥b + Parámetros: geq(par1, par2) + Ejemplo: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Nombre: implies + Descripción: implicación lógica + Parámetros: implies(par1, par2) + Ejemplo: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Nombre: approx + Descripción: aproximación. approx(a)=a±n + Parámetros: approx(par1, par2) + Ejemplo: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Nombre: abs + Descripción: valor absoluto. abs(n)=|n| + Parámetros: abs(par1) + Ejemplo: x->abs(x) + + floor + Nombre: floor + Descripción: función piso. floor(n)=⌊n⌋ + Parámetros: floor(par1) + Ejemplo: x->floor(x) + + ceiling + Nombre: ceiling + Descripción: función techo. ceil(n)=⌈n⌉ + Parámetros: ceiling(par1) + Ejemplo: x->ceiling(x) + + sin + Nombre: sin + Descripción: función para calcular el seno del ángulo indicado + Parámetros: sin(par1) + Ejemplo: x->sin(x) + + cos + Nombre: cos + Descripción: función para calcular el coseno del ángulo indicado + Parámetros: cos(par1) + Ejemplo: x->cos(x) + + tan + Nombre: tan + Descripción: función para calcular la tangente del ángulo indicado + Parámetros: tan(par1) + Ejemplo: x->tan(x) + + sec + Nombre: sec + Descripción: secante + Parámetros: sec(par1) + Ejemplo: x->sec(x) + + csc + Nombre: csc + Descripción: cosecante + Parámetros: csc(par1) + Ejemplo: x->csc(x) + + cot + Nombre: cot + Descripción: cotangente + Parámetros: cot(par1) + Ejemplo: x->cot(x) + + sinh + Nombre: sinh + Descripción: seno hiperbólico + Parámetros: sinh(par1) + Ejemplo: x->sinh(x) + + cosh + Nombre: cosh + Descripción: coseno hiperbólico + Parámetros: cosh(par1) + Ejemplo: x->cosh(x) + + tanh + Nombre: tanh + Descripción: tangente hiperbólica + Parámetros: tanh(par1) + Ejemplo: x->tanh(x) + + sech + Nombre: sech + Descripción: secante hiperbólica + Parámetros: sech(par1) + Ejemplo: x->sech(x) + + csch + Nombre: csch + Descripción: cosecante hiperbólica + Parámetros: csch(par1) + Ejemplo: x->csch(x) + + coth + Nombre: coth + Descripción: cotangente hiperbólica + Parámetros: coth(par1) + Ejemplo: x->coth(x) + + arcsin + Nombre: arcsin + Descripción: arcoseno + Parámetros: arcsin(par1) + Ejemplo: x->arcsin(x) + + arccos + Nombre: arccos + Descripción: arcocoseno + Parámetros: arccos(par1) + Ejemplo: x->arccos(x) + + arctan + Nombre: arctan + Descripción: arcotangente + Parámetros: arctan(par1) + Ejemplo: x->arctan(x) + + arccot + Nombre: arccot + Descripción: arcocotangente + Parámetros: arccot(par1) + Ejemplo: x->arccot(x) + + arccosh + Nombre: arccosh + Descripción: arcocoseno hiperbólico + Parámetros: arccosh(par1) + Ejemplo: x->arccosh(x) + + arccsc + Nombre: arccsc + Descripción: arcocosecante + Parámetros: arccsc(par1) + Ejemplo: x->arccsc(x) + + arccsch + Nombre: arccsch + Descripción: arcocosecante hiperbólica + Parámetros: arccsch(par1) + Ejemplo: x->arccsch(x) + + arcsec + Nombre: arcsec + Descripción: arcosecante + Parámetros: arcsec(par1) + Ejemplo: x->arcsec(x) + + arcsech + Nombre: arcsech + Descripción: arcosecante hiperbólica + Parámetros: arcsech(par1) + Ejemplo: x->arcsech(x) + + arcsinh + Nombre: arcsinh + Descripción: arcoseno hiperbólico + Parámetros: arcsinh(par1) + Ejemplo: x->arcsinh(x) + + arctanh + Nombre: arctanh + Descripción: arcotangente hiperbólica + Parámetros: arctanh(par1) + Ejemplo: x->arctanh(x) + + exp + Nombre: exp + Descripción: exponente (e^x) + Parámetros: exp(par1) + Ejemplo: x->exp(x) + + ln + Nombre: ln + Descripción: logaritmo con base e + Parámetros: ln(par1) + Ejemplo: x->ln(x) + + log + Nombre: log + Descripción: logaritmo con base 10 + Parámetros: log(par1) + Ejemplo: x->log(x) + + conjugate + Nombre: conjugate + Descripción: Conjugar + Parámetros: conjugate(par1) + Ejemplo: x->conjugate(x*i) + + arg + Nombre: arg + Descripción: Arg + Parámetros: arg(par1) + Ejemplo: x->arg(x*i) + + real + Name: real + Description: Real + Parámetros: real(par1) + Ejemplo: x->real(x*i) + + imaginary + Nombre: imaginary + Descripción: imaginario + Parámetros: imaginary(par1) + Ejemplo: x->imaginary(x*i) + + sum + Nombre: sum + Descripción: suma + Parámetros: sum(par1 : var=desde..hasta) + Ejemplo: x->x*sum(t*t:t=0..3) + + product + Nombre: product + Descripción: producto + Parámetros: product(par1 : var=desde..hasta) + Ejemplo: x->product(t+t:t=1..3) + + diff + Nombre: diff + Descripción: diferenciación + Parámetros: diff(par1 : var) + Ejemplo: x->(diff(x^2:x))(x) + + card + Nombre: card + Descripción: cardinal + Parámetros: card(par1) + Ejemplo: x->card(vector { x, 1, 2 }) + + scalarproduct + Nombre: scalarproduct + Descripción: producto escalar + Parámetros: scalarproduct(... parámetros, ...) + Ejemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nombre: selector + Descripción: selección del elemento de orden par1 de la lista o vector par2 + Parámetros: selector(par1, par2) + Ejemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Nombre: union + Descripción: une varios elementos del mismo tipo + Parámetros: union(... parámetros, ...) + Ejemplo: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Nombre: forall + Descripción: para todo + Parámetros: forall(par1 : var) + Ejemplo: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Nombre: exists + Descripción: existe + Parámetros: exists(par1 : var) + Ejemplo: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nombre: map + Descripción: aplica una función a cada elemento de una lista + Parámetros: map(par1, par2) + Ejemplo: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Nombre: filter + Descripción: elimina todos los elementos que no cumplen una condición + Parámetros: filter(par1, par2) + Ejemplo: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transponer + Nombre: transponer + Descripción: transponer + Parámetros: transponer(par1) + Ejemplo: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/es/docs/kalgebra/index.docbook b/po/es/docs/kalgebra/index.docbook new file mode 100644 index 0000000..3f28af2 --- /dev/null +++ b/po/es/docs/kalgebra/index.docbook @@ -0,0 +1,726 @@ + + + + + + +]> + + + + +El manual de &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+LeticiaMartín Hernández
leticia.martin@gmail.com
Traductor
EloyCuadra
ecuadra@eloihr.net
Traductor
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Aplicaciones 16.04) + + +&kalgebra; es una aplicación que puede sustituir su calculadora gráfica. Posee funciones numéricas, lógicas, simbólicas y de análisis que le permiten calcular expresiones matemáticas en la calculadora y trazar gráficamente el resultado en 2D o 3D. &kalgebra; está arraigada al lenguaje de marcas matemáticas (MathML); no obstante, no es necesario saber MathML para usar &kalgebra;. + + + +KDE +kdeedu +gráfica +matemáticas +2D +3D +mathML + + +
+ + +Introducción + +&kalgebra; contiene numerosas funciones que permiten al usuario realizar todo tipo de operaciones matemáticas y mostrarlas gráficamente. Originalmente, este programa estaba orientado a MathML. En la actualidad lo puede usar cualquier persona con pocos conocimientos matemáticos para resolver problemas sencillos o avanzados. + +Incluye funcionalidades como las siguientes: + + + +Una calculadora para una fácil y rápida evaluación de funciones matemáticas. +Posibilidad de usar guiones para series avanzadas de cálculos. +Posibilidades lingüísticas, como la definición de funciones y la terminación automática. +Funciones de cálculo, como la diferenciación simbólica, cálculo vectorial y manipulación de listas. +Trazado de funciones con cursor activo para encontrar raíces gráficas y otros tipos de análisis. +Trazado en 3D para la visualización útil de funciones en 3D. +Un diccionario de operadores integrado para la rápida referencia de las diversas funciones disponibles. + + +A continuación se muestra una imagen de la aplicación &kalgebra; en acción: + + +Aquí se muestra una captura de la ventana principal de &kalgebra;. + + + + + + Ventana principal de &kalgebra; + + + + +Cuando el usuario comienza una sesión con &kalgebra; se le muestra una única ventana que contiene cuatro pestañas: Calculadora, Gráfica 2D, Gráfica 3D y Diccionario. Dentro de estas pestañas encontrará un campo de entrada donde podrá introducir sus funciones o cálculos, y un campo de visualización que muestra el resultado. + +El usuario puede gestionar la sesión en cualquier momento con las opciones del menú principal Sesión: + + + + +&Ctrl; N SesiónNueva +Abre una nueva ventana de &kalgebra; + + + +&Ctrl;&Shift; F SesiónModo de pantalla completa +Conmuta el modo de pantalla completa para la ventana de &kalgebra;. El modo de pantalla completa también se puede activar o desactivar mediante el botón situado en la parte superior derecha de la ventana de &kalgebra;. + + + +&Ctrl; Q SesiónSalir +Cierra el programa. + + + + + + + +Sintaxis +&kalgebra; usa una sintaxis algebraica intuitiva para introducir las funciones del usuario de forma similar a la que usan la mayor parte de las calculadoras gráficas modernas. Esta sección lista las operaciones fundamentales que proporciona &kalgebra;. El autor de &kalgebra; ha modelado la sintaxis según Maxima y maple para los usuarios que estén familiarizados con estos programas. + +Para los usuarios interesados en el funcionamiento interno de &kalgebra;, las funciones introducidas por el usuario se convierten a MathML en el motor. Un conocimiento rudimentario de las posibilidades proporcionadas por MathML le servirá de ayuda para revelar las funcionalidades internas de &kalgebra;. + +Aquí tiene una lista de los operadores disponibles hasta el momento: + ++ - * / : suma, resta, multiplicación y división. +^, ** : potencia, puede usar cualquiera de las dos formas. Asimismo, puede usar los caracteres unicode ². Las potencias son también una forma de expresar raíces, lo que puede hacer de la siguiente forma: a**(1/b). +-> : lambda. Es el modo de especificar una o más variables libres que estarán ligadas a una función. Por ejemplo, en la expresión length:=(x,y)->(x*x+y*y)^0.5, el operador lambda se usa para indicar que «x» e «y» estarán ligadas cuando se usa la función «length». +x=a..b : se usa cuando necesitamos delimitar un intervalo (variable limitada + límite superior + límite inferior). Esto significa que «x» va de «a» a «b». +() : se usa para especificar una prioridad mayor. +abc(parámetros) : funciones. Cuando el analizador sintáctico encuentra una función, comprueba si «abc» es un operador. Si lo es, lo trata como un operador; si no lo es, lo trata como una función de usuario. +:= : definición. Se usa para definir el valor de una variable. Puede escribir cosas como «x:=3, x:=y», donde «y» puede estar definido o no, o como «perímetro:=r->2*pi*r». +? : definición de condiciones en funciones definidas a trozos («piecewise»). Permite definir operaciones condicionales en &kalgebra;. Dicho de otro modo, es otra forma de especificar una condición «if, elseif, else». Cuando introducimos la condición antes del símbolo «?», se utilizará dicha condición solo si es verdadera; en cambio, si encuentra un símbolo «?» sin ninguna condición, se tendrá en cuenta el último caso. Por ejemplo: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : contenedor MathML. Puede usarse para definir un contenedor. Es muy útil a la hora de trabajar con funciones definidas a trozos. += > >= < <= : operadores relacionales que indican «igual», «mayor», «mayor o igual», «menor» o «menor o igual», respectivamente. + + +Ahora puede preguntarme por qué debería el usuario preocuparse por MathML. La respuesta es fácil. Con esto podremos realizar operaciones con funciones como cos(), sin() (o cualquier otra función trigonométrica), sum() o product(). No importa el tipo de función que sea. Podremos usar plus(), times() y cualquier cosa a la que le corresponda un operador. También se han implementado funciones lógicas, por lo que podremos hacer cosas como «or(1,0,0,0,0)». + + + + +Uso de la calculadora +La calculadora de &kalgebra; es útil como una calculadora a lo grande. El usuario puede introducir expresiones a evaluar en los modos Calcular y Evaluar, según la selección del menú Calculadora. +En el modo de evaluación, &kalgebra; simplifica la expresión incluso si se encuentra una variable indefinida. Cuando está en modo de cálculo, &kalgebra; calcula todo y si encuentra una variable indefinida muestra un error. +Además de mostrar las ecuaciones introducidas por el usuario y el resultado en la pantalla de la calculadora, también se muestran todas las variables declaradas en un cuadro persistente en la parte de la derecha. Si hace doble clic sobre una variable se mostrará un diálogo que le permitirá modificar su valor (solo es un modo de engañar al registro). + +La variable «ans» es especial; cada vez que introduzca una expresión, la variable «ans» cambiará su valor al del último resultado. + +A continuación se muestran funciones de ejemplo que se pueden introducir en el campo de entrada de la ventana de la calculadora: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +A continuación se muestra una captura de la ventana de la calculadora tras introducir las expresiones de ejemplo anteriores: + +Captura de la ventana de la calculadora de &kalgebra; con expresiones de ejemplo + + + + + + Ventana de la calculadora de &kalgebra; + + + + + +El usuario puede controlar la ejecución de una serie de cálculos usando las opciones del menú Calculadora: + + + + +&Ctrl; L CalculadoraCargar guion +Ejecuta las instrucciones de un archivo de forma secuencial. Es útil si desea definir bibliotecas o reanudar un trabajo anterior. + + + +&Ctrl; G CalculadoraGuardar guion +Guarda las intrucciones que ha introducido desde que comenzó la sesión, con lo que podrá reutilizarlas. Genera un archivo de texto que podrá corregir usando cualquier editor de texto, por ejemplo Kate. + + + +&Ctrl; S CalculadoraExportar registro +Guarda el registro con todos los resultados en un archivo &HTML; que podrá imprimir o publicar. + + + + + + + +Gráficas 2D +Para añadir un gráfica 2D en &kalgebra;, seleccione la pestaña Gráfica 2D y pulse la pestaña Añadir, que le permitirá añadir una nueva función. A continuación tendrá dirigirse al cuadro de texto de entrada, donde podrá introducir la función. + + +Sintaxis +Si quiere usar una función f(x) típica, no es necesario que la especifique; en cambio, si quiere usar una función f(y) o una función polar, tendrá que añadir y-> y q-> como variables limitadas. + +Ejemplos: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Después de haber introducido la función, pulse el botón Aceptar para dibujar la gráfica en la ventana principal. + + + + +Características +Es posible dibujar varias gráficas en la misma vista. Para esto use simplemente el botón Añadir cuando se encuentre en el modo Lista. Puede ajustar el color de cada gráfica. + +Puede ampliar la vista y desplazarla con el ratón. Con la rueda del ratón podrá ampliar o reducir la vista. Puede también seleccionar un área con el botón izquierdo, y el área se ampliará. Desplace la vista con las teclas de dirección. + + + La ventana de gráficos 2D se puede definir de manera explícita mediante la pestaña Ventana en una pestaña Gráfico 2D. + + +En la pestaña Lista, puede abrir una pestaña de Edición para editar o eliminar una función mediante doble clic y poner o quitar la marca de la casilla de verificación situada junto al nombre de la función para mostrarla u ocultarla. +En el menú Gráfica 2D dispone de las siguientes opciones: + +Mostrar u ocultar la rejilla. +Mantener las proporciones mientras amplía o reduce la vista. +Ampliar (&Ctrl; +) y reducir (&Ctrl; -). +Guardar (&Ctrl; S) la gráfica como un archivo de imagen. +Reiniciar la vista a la ampliación original. +Seleccionar una resolución para las gráficas. + + +A continuación se muestra una captura de pantalla de un usuario cuyo cursor está en la raíz del extremo derecho de la función, sen(1/x). El usuario ha utilizado una resolución muy alta para mostrar el grafo (ya que oscila al frecuencias muy altas cerca del origen). También dispone de la funcionalidad de cursor vivo, mediante la cual se muestran los valores «x» e «y» en la esquina inferior izquierda de la pantalla cada vez que mueva el cursor a un nuevo punto. Se traza una «línea tangente» viva sobre la función en la posición del cursor vivo. + + +Aquí se muestra una captura de la ventana gráfica 2D de &kalgebra; + + + + + + Ventana gráfica 2D de &kalgebra; + + + + + + + + + + +Gráficas 3D + +Para dibujar una grafica 3D con &kalgebra;, seleccione la pestaña Gráfica 3D, donde verá un campo de entrada en la parte inferior que le permitirá introducir la función. Aún no podrá definir «Z». Por ahora, &kalgebra; solo admite gráficas 3D que dependen de «x» e «y», como (x,y)->x*y, donde z=x*y. + +Ejemplos: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +Puede ampliar o reducir la vista con el ratón. Use la rueda del ratón para ampliarla o reducirla. Si mantiene pulsado el &LMB; y se desplaza con el ratón, la gráfica rotará. + + Las teclas de las flechas izquierda y derecha rotan el grafo alrededor del eje Z. Las teclas de las flechas arriba y abajo rotan la vista alrededor del eje horizontal. Pulse W para ampliar el gráfico y S para reducirlo. + +En el menú Gráfica 3D dispone de las siguientes opciones: + + +Guardar (&Ctrl; S) la gráfica como un archivo de imagen. +Reiniciar la vista a la ampliación original en el menú de gráficos 3D +Puede dibujar la gráfica con puntos, con líneas o con una línea sólida en el menú de gráficos 3D + + +A continuación se muestra una captura de la función denominada «sombrero». Esta gráfica particular se muestra usando el estilo 3D. + + +Aquí se muestra una captura de la ventana gráfica 3D de &kalgebra; + + + + + + Ventana gráfica 3D de &kalgebra; + + + + + + + +Diccionario + +El diccionario proporciona una lista de todas las funciones integradas en &kalgebra;. Se puede usar para encontrar la definición de una operación y sus parámetros de entrada. Es un lugar útil para encontrar las muchas funcionalidades que posee &kalgebra;. + + A continuación se muestra una captura de la ventana de la búsqueda de la función coseno en el diccionario de &kalgebra;. + + +Aquí se muestra una captura de la ventana del diccionario de &kalgebra; + + + + + + Ventana del diccionario de &kalgebra; + + + + + + + +&commands; + + +Créditos y licencia + + +Derechos de autor del programa 2005-2009 &Aleix.Pol;. + + + +Derechos de autor de la documentación 2007 &Aleix.Pol; &Aleix.Pol.mail;. + +Traducido por Leticia Martín Hernández leticia.martin@gmail.com y Eloy Cuadra ecuadra@eloihr.net. &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/es/docs/kalgebra/kalgebra-main-window.png b/po/es/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..9c55d0d6592383941b2d4fca4fbee1b90e632881 GIT binary patch literal 37948 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, 2007, 2008. +# Enrique Matias Sanchez (aka Quique) , 2007. +# Jaime Robles , 2008. +# Enrique Matias Sanchez (Quique) , 2009. +# Eloy Cuadra , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019. +# Rocío Gallego , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-01-10 21:49+0100\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 18.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opciones: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Pegar «%1» en la entrada" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Pegar en la entrada" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Error: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importado: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Error: no se puede cargar %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Información" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Añadir/editar una función" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Vista previa" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Desde:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Hasta:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opciones" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Aceptar" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Eliminar" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Las opciones que ha especificado no son correctas" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "El límite inferior no puede ser mayor que el límite superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfica 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfica 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesión" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variables" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Cargar un guion..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Guiones recientes" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Guardar el guion..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportar registro..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Insertar ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Modo de ejecución" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcular" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluar" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funciones" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Añadir" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Área de visualización" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Gráfica &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gráfica 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "Re&jilla" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Mantener las proporciones" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolución" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Pobre" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Buena" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Muy buena" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gráfica &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Gráfica 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Reiniciar la vista" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Puntos" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Líneas" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sólido" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operaciones" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Diccionario" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Buscar:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Edición" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Elija un guion" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Guion (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Archivo HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Errores: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Seleccione dónde situar la gráfica dibujada" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Archivo de imagen (*.png);;Archivo SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Preparado" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Añadir variable" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Introduzca un nombre para la nueva variable" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Una calculadora portátil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eloy Cuadra" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ecuadra@eloihr.net" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Añadir/editar una variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Eliminar variable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editar el valor de «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "no disponible" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "INCORRECTO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Izquierda:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Arriba:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Anchura:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplicar" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "Archivo PNG (*.png);;Documento PDF (*.pdf);;Documento X3D (*.x3d);;" +#~ "Documento STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsola" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Consola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Desarrollo de la funcionalidad para dibujar curvas implícitas. Mejoras en " +#~ "las funciones de trazado." + +#~ msgid "Formula" +#~ msgstr "Fórmula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Error: tipo de función incorrecto" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Hecho: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Error: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Borrar" diff --git a/po/es/kalgebramobile.po b/po/es/kalgebramobile.po new file mode 100644 index 0000000..afd45a3 --- /dev/null +++ b/po/es/kalgebramobile.po @@ -0,0 +1,204 @@ +# Spanish translations for kalgebramobile.po package. +# Copyright (C) 2018 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Automatically generated, 2018. +# Eloy Cuadra , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-09 21:29+0100\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.2\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Calculadora portable" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eloy Cuadra" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ecuadra@eloihr.net" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Una sencilla calculadora científica" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Cargar guion..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Guion (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Guardar guion..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportar registro..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Evaluar..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcular..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Borrar el registro" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copiar «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gráfico en 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gráfico en 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Guardar..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Ver la cuadrícula" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Reiniciar el área visible" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Borrar todo" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Errores: el paso no puede ser 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Errores: el inicio y el final son idénticos" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Errors: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Desde:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Hasta:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Paso:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Ejecutar" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultado:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expresión a calcular..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "La encantadora comunidad de KDE y de KDE Edu le proporcionan KAlgebra desde un " +#~ "entorno de Software Libre." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Si desea saber más sobre KAlgebra, puede encontrar más información en el " +#~ "sitio " +#~ "oficial y en la wiki de " +#~ "sus usuarios.
Si tiene algún problema con este software, " +#~ "díganoslo mediante nuestro sistema de " +#~ "seguimiento de errores." + +#~ msgid "Results" +#~ msgstr "Resultado" diff --git a/po/es/plasma_applet_kalgebraplasmoid.po b/po/es/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..2e17983 --- /dev/null +++ b/po/es/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,35 @@ +# Spanish translations for plasma_applet_kalgebraplasmoid.po package. +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Automatically generated, 2014. +# Eloy Cuadra , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 10:34+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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Introduzca una expresión." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/et/docs/kalgebra/commands.docbook b/po/et/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..ceaabe8 --- /dev/null +++ b/po/et/docs/kalgebra/commands.docbook @@ -0,0 +1,1478 @@ + +KAlgebra toetatud käsud + plus + Nimi: plus + Kirjeldus: liitmine + Parameetrid: plus(... parameetrid, ...) + Näide: x->x+2 + + times + Nimi: times + Kirjeldus: korrutamine + Parameetrid: times(... parameetrid, ...) + Näide: x->x*2 + + minus + Nimi: minus + Kirjeldus: lahutamine. Arvab kõik väärtused esimesest väärtusest maha. + Parameetrid: minus(... parameetrid, ...) + Näide: x->x-2 + + divide + Nimi: divide + Kirjeldus: jagamine + Parameetrid: divide(par1, par2) + Näide: x->x/2 + + quotient + Nimi: quotient + Kirjeldus: jagatis + Parameetrid: quotient(par1, par2) + Näide: x->quotient(x, 2) + + power + Nimi: power + Kirjeldus: astendamine + Parameetrid: power(par1, par2) + Näide: x->x^2 + + root + Nimi: root + Kirjeldus: juurimine + Parameetrid: root(par1, par2) + Näide: x->root(x, 2) + + factorial + Nimi: factorial + Kirjeldus: faktoriaal. factorial(n)=n! + Parameetrid: factorial(par1) + Näide: x->factorial(x) + + and + Nimi: and + Kirjeldus: loogiline JA + Parameetrid: and(... parameetrid, ...) + Näide: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Nimi: or + Kirjeldus: loogiline VÕI + Parameetrid: or(... parameetrid, ...) + Näide: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Nimi: xor + Kirjeldus: loogiline välistav VÕI + Parameetrid: xor(... parameetrid, ...) + Näide: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Nimi: not + Kirjeldus: loogiline EI + Parameetrid: not(par1) + Näide: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Nimi: gcd + Kirjeldus: suurim ühistegur + Parameetrid: gcd(... parameetrid, ...) + Näide: x->gcd(x, 3) + + lcm + Nimi: lcm + Kirjeldus: vähim ühiskordne + Parameetrid: lcm(... parameetrid, ...) + Näide: x->lcm(x, 4) + + rem + Nimi: rem + Kirjeldus: jääk + Parameetrid: rem(par1, par2) + Näide: x->rem(x, 5) + + factorof + Nimi: factorof + Kirjeldus: tegur + Parameetrid: factorof(par1, par2) + Näide: x->factorof(x, 3) + + max + Nimi: max + Kirjeldus: maksimum + Parameetrid: max(... parameetrid, ...) + Näide: x->max(x, 4) + + min + Nimi: min + Kirjeldus: miinimum + Parameetrid: min(... parameetrid, ...) + Näide: x->min(x, 4) + + lt + Nimi: lt + Kirjeldus: väiksem kui. lt(a,b)=a<b + Parameetrid: lt(par1, par2) + Näide: x->piecewise { x<4 ? 1, ? 0 } + + gt + Nimi: gt + Kirjeldus: suurem kui. gt(a,b)=a>b + Parameetrid: gt(par1, par2) + Näide: x->piecewise { x>4 ? 1, ? 0 } + + eq + Nimi: eq + Kirjeldus: võrdub. eq(a,b) = a=b + Parameetrid: eq(par1, par2) + Näide: x->piecewise { x=4 ? 1, ? 0 } + + neq + Nimi: neq + Kirjeldus: ei võrdu. neq(a,b)=a≠b + Parameetrid: neq(par1, par2) + Näide: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Nimi: leq + Kirjeldus: väiksem kui või võrdub. leq(a,b)=a≤b + Parameetrid: leq(par1, par2) + Näide: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Nimi: geq + Kirjeldus: suurem kui või võrdub. geq(a,b)=a≥b + Parameetrid: geq(par1, par2) + Näide: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Nimi: implies + Kirjeldus: loogiline implikatsioon + Parameetrid: implies(par1, par2) + Näide: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Nimi: approx + Kirjeldus: lähendus. approx(a)=a±n + Parameetrid: approx(par1, par2) + Näide: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Nimi: abs + Kirjeldus: absoluutväärtus. abs(n)=|n| + Parameetrid: abs(par1) + Näide: x->abs(x) + + floor + Nimi: floor + Kirjeldus: alumine piirväärtus. floor(n)=⌊n⌋ + Parameetrid: floor(par1) + Näide: x->floor(x) + + ceiling + Nimi: ceiling + Kirjeldus: ülemine piirväärtus. ceil(n)=⌈n⌉ + Parameetrid: ceiling(par1) + Näide: x->ceiling(x) + + sin + Nimi: sin + Kirjeldus: antud nurga siinuse arvutamise funktsioon + Parameetrid: sin(par1) + Näide: x->sin(x) + + cos + Nimi: cos + Kirjeldus: antud nurga koosinuse arvutamise funktsioon + Parameetrid: cos(par1) + Näide: x->cos(x) + + tan + Nimi: tan + Kirjeldus: antud nurga tangensi arvutamise funktsioon + Parameetrid: tan(par1) + Näide: x->tan(x) + + sec + Nimi: sec + Kirjeldus: seekans + Parameetrid: sec(par1) + Näide: x->sec(x) + + csc + Nimi: csc + Kirjeldus: koosekans + Parameetrid: csc(par1) + Näide: x->csc(x) + + cot + Nimi: cot + Kirjeldus: kootangens + Parameetrid: cot(par1) + Näide: x->cot(x) + + sinh + Nimi: sinh + Kirjeldus: hüperboolne siinus + Parameetrid: sinh(par1) + Näide: x->sinh(x) + + cosh + Nimi: cosh + Kirjeldus: hüperboolne koosinus + Parameetrid: cosh(par1) + Näide: x->cosh(x) + + tanh + Nimi: tanh + Kirjeldus: hüperboolne tangens + Parameetrid: tanh(par1) + Näide: x->tanh(x) + + sech + Nimi: sech + Kirjeldus: hüperboolne seekans + Parameetrid: sech(par1) + Näide: x->sech(x) + + csch + Nimi: csch + Kirjeldus: hüperboolne koosekans + Parameetrid: csch(par1) + Näide: x->csch(x) + + coth + Nimi: coth + Kirjeldus: hüperboolne kootangens + Parameetrid: coth(par1) + Näide: x->coth(x) + + arcsin + Nimi: arcsin + Kirjeldus: arkussiinus + Parameetrid: arcsin(par1) + Näide: x->arcsin(x) + + arccos + Nimi: arccos + Kirjeldus: arkuskoosinus + Parameetrid: arccos(par1) + Näide: x->arccos(x) + + arctan + Nimi: arctan + Kirjeldus: arkustangens + Parameetrid: arctan(par1) + Näide: x->arctan(x) + + arccot + Nimi: arccot + Kirjeldus: arkuskootangens + Parameetrid: arccot(par1) + Näide: x->arccot(x) + + arccosh + Nimi: arccosh + Kirjeldus: hüperboolne arkuskoosinus + Parameetrid: arccosh(par1) + Näide: x->arccosh(x) + + arccsc + Nimi: arccsc + Kirjeldus: arkuskoosekans + Parameetrid: arccsc(par1) + Näide: x->arccsc(x) + + arccsch + Nimi: arccsch + Kirjeldus: hüperboolne arkuskoosekans + Parameetrid: arccsch(par1) + Näide: x->arccsch(x) + + arcsec + Nimi: arcsec + Kirjeldus: arkusseekans + Parameetrid: arcsec(par1) + Näide: x->arcsec(x) + + arcsech + Nimi: arcsech + Kirjeldus: hüperboolne arkusseekans + Parameetrid: arcsech(par1) + Näide: x->arcsech(x) + + arcsinh + Nimi: arcsinh + Kirjeldus: hüperboolne arkussiinus + Parameetrid: arcsinh(par1) + Näide: x->arcsinh(x) + + arctanh + Nimi: arctanh + Kirjeldus: hüperboolne arkustangens + Parameetrid: arctanh(par1) + Näide: x->arctanh(x) + + exp + Nimi: exp + Kirjeldus: astendaja (e^x) + Parameetrid: exp(par1) + Näide: x->exp(x) + + ln + Nimi: ln + Kirjeldus: naturaallogaritm + Parameetrid: ln(par1) + Näide: x->ln(x) + + log + Nimi: log + Kirjeldus: kümnendlogaritm + Parameetrid: log(par1) + Näide: x->log(x) + + sum + Nimi: sum + Kirjeldus: summa + Parameetrid: sum(par1 : muutuja=alates..kuni) + Näide: x->x*sum(t*t:t=0..3) + + product + Nimi: product + Kirjeldus: korrutis + Parameetrid: product(par1 : muutuja=alates..kuni) + Näide: x->product(t+t:t=1..3) + + diff + Nimi: diff + Kirjeldus: diferents + Parameetrid: diff(par1 : muutuja) + Näide: x->(diff(x^2:x))(x) + + card + Nimi: card + Kirjeldus: kardinaalarv + Parameetrid: card(par1) + Näide: x->card(vector { x, 1, 2 }) + + scalarproduct + Nimi: scalarproduct + Kirjeldus: skalaarkorrutis + Parameetrid: scalarproduct(... parameetrid, ...) + Näide: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nimi: selector + Kirjeldus: par1-nda elemendi valimine par2 loendist või vektorist + Parameetrid: selector(par1, par2) + Näide: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Nimi: union + Kirjeldus: mitme samatüübiline elemendi ühendamine + Parameetrid: union(... parameetrid, ...) + Näide: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Nimi: forall + Kirjeldus: kõigi kohta + Parameetrid: forall(par1 : muutuja) + Näide: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Nimi: exists + Kirjeldus: on olemas + Parameetrid: exists(par1 : muutuja) + Näide: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nimi: map + Kirjeldus: funktsiooni rakendamine loendi kõigile elementidele + Parameetrid: map(par1, par2) + Näide: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Nimi: filter + Kirjeldus: kõigi elementide eemaldamine, mis ei vasta tingimusele + Parameetrid: filter(par1, par2) + Näide: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Nimi: transpose + Kirjeldus: transponeerimine + Parameetrid: transpose(par1) + Näide: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/et/docs/kalgebra/index.docbook b/po/et/docs/kalgebra/index.docbook new file mode 100644 index 0000000..71ad4f0 --- /dev/null +++ b/po/et/docs/kalgebra/index.docbook @@ -0,0 +1,729 @@ + + + + + + + + +]> + + + + +&kalgebra; käsiraamat + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+MarekLaane
bald@smail.ee
Tõlge eesti keelde
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2013-06-27 +0.11 (&kde; 4.11) + + +&kalgebra; on rakendus, mis võib asendada su senist graafikalkulaatorit. Sel on arvulisi, loogilisi, sümbolilisi ja analüüsiomadusi, mis võimaldavad arvutada matemaatilisi avaldisi konsoolis ja lasta tulemusi kujutada graafiliselt nii tasapinnaliselt (2D) kui ka ruumiliselt (3D). &kalgebra; juured on matemaatilises märkekeeles (MathML), kuid &kalgebra; kasutamiseks ei ole MathML-i tundmine sugugi vajalik. + + + +KDE +kdeedu +diagramm +matemaatika +2D +3D +mathML + + +
+ + +Sissejuhatus + +&kalgebra;l on arvukalt omadusi, mis lubavad kasutajal ette võtta kõikvõimalikke matemaatilisi tehteid ja neid graafiliselt kujutada. Algselt oli rakendus orienteeritud MathMl-i kasutamisele. Praegu aga võivad ka väheste matemaatiliste teadmistega inimesed selle abil lahendada nii lihtsamaid kui ka päris keerulisi probleeme. + +Kasutada saab selliseid võimalusi: + + + +Konsool matemaatiliste funktsioonide kiireks ja lihtsaks hindamiseks +Skriptimisvõimalused pikemateks arvutusteks +Keelevõimalused, sealhulgas funktsiooni definitsiooni ja süntaksi automaatne lõpetamine +Arvutusvõimalused, sealhulgas algebra, vektorarvutus ja loendite käsitlemine +Funktsioonide joonistamine, sealhulgas mittelineaarsetele võrranditele ja muudele +Ruumiliste graafide loomine 3D funktsioonide kuvamiseks +Sisseehitatud operandide sõnaraamat paljude funktsioonide kohta kiire abi leidmiseks + + +Allpool on pilt &kalgebra;st töös: + + +&kalgebra; peaaken + + + + + + &kalgebra; peaaken + + + + +&kalgebra; seanssi käivitades näeb üht akent mitmest kaardiga: Konsool, 2D graafik, 3D graafik ja Sõnaraamat. Kõigil kaartidel leiab sisestusvälja, kus saab sisestada funktsioone või arvutusi, ning kuvavälja, kus näeb tulemusi. + +Kasutaja saab alati võtta midagi ette oma seansiga menüü Seanss käskude vahendusel: + + + + +&Ctrl; N SeanssUus +Avab uue &kalgebra; akna. + + + +&Ctrl;&Shift; F SeanssTäisekraanirežiim +Võimaldab lülitada &kalgebra; akna täisekraanirežiimi. Samuti saab sellesse režiimi lülituda ja sellest väljuda nupu abil, mille leiab &kalgebra; akna ülemisest parempoolsest osast. + + + +&Ctrl; Q SeanssVälju +Lõpetab rakenduse töö. + + + + + + + +Süntaks +&kalgebra; kasutab kasutaja funktsioonide sisestamiseks intuitiivset algebralist süntaksi, mis sarnaneb enamikus tänapäeva graafikalkulaatorites kasutusel oleva süntaksiga. Allpool loetletakse tähtsaimad &kalgebra;s saadaolevad operandid. &kalgebra; autor võttis süntaksi loomisel eeskuju programmidest Maxima ja maple, pidades silmas kasutajaid, kes võivad olla nendega juba tuttavad. + +Kui kedagi peaks huvitama &kalgebra; siseelu, siis kasutaja sisestatud avaldised teisendab taustaprogramm MathML-i. See tähendab, et &kalgebra; sisemiste omaduste korralikuks mõistmiseks on vajalik vähemalt pinnapealnegi arusaam MathML-o toetatud võimalustest. + +Nimekiri praegu kasutada olevatest tehetest: + ++ - * / : liitmine, lahutamine, korrutamine ja jagamine. +^, **: astendamine, kasutada võib mõlemat viisi. Samuti võib kasutada Unicode ² märki. Astmemärkide abil saab ka juurida, näiteks nii: a**(1/b)a +-> : lambda. Sellega saab määrata ühe või rohkem vabu muutujaid, mis on funktsioonis piiratud. Näiteks avaldises length:=(x,y)->(x*x+y*y)^0.5 kasutatakse lambdaoperandi märkimaks, et x ja y on piiratud, kui kasutatakse funktsioon length. +x=a..b : seda saab kasutada vajaduse korral määrata kindlaks vahemik (piiratud muutuja+ülemraja+alamraja). See tähendab, et x on vahemikud a kuni b. +() : sellega saab määrata kõrgema prioriteedi. +abc(parameetrid) : funktsioonid. Kui parser leiab funktsiooni, kontrollib ta, kas abc on operaator. Kui jah, siis nii seda käsitletaksegi, kui ei, siis võetakse seda kui kasutaja funktsiooni. +:= : definitsioon. Nii saab defineerida muutuja väärtuse. Saab teha selliseid asju nagu x:=3, x:=y, kus y on defineeritud või defineerimata, või ümbermõõt:=r->2*pi*r. +? : tükiti (piecewise) tingimuse definitsioon. Sel moel saab &kalgebra;s defineerida tingimuslikke tehteid. Või kui teisiti öelda, siis saab nii määrata if, elseif ja else tingimust. Kui lisame tingimuse '?' ette, kasutatakse seda tingimust ainult siis, kui see on tõene, kui leitakse '?' ilma tingimuseta, lisatakse see viimasena. Näide: kui on tõene kui a iga asukohas Näide: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : MathML konteiner. Nii saab defineerida konteineri. Peamiselt on sellest kasu tükiti tehete puhul. += > >= < <= : väärtuste võrdlejad vastavalt võrdse, suurema, suurema või võrdse, väiksema ning väiksema või võrdse jaoks + + +Võib tekkida küsimus, milleks peaks üldse MathML-i peale mõtlema? Vastus on lihtne: nii saab kasutada selliseid fuktsioone nagu cos(), sin() või muid trigonomeetrilisi funktsioone, sum() or product(). Pole vahet, mis tüüpi see on. Kasutada saab plus(), times() ja kõike muud, millel on oma operaator. Võimalikud on ka tõeväärtustega funktsioonid, nii et kasutada saab ka sellist asja nagu or(1,0,0,0,0). + + + + +Konsooli kasutamine +&kalgebra; konsool on tõeliselt võimas kalkulaator. Kasutaja saab avaldisi hindamiseks sisestada arvutamise või hindamise režiimis sõltuvalt sellest, milline režiim on valitud menüüs Konsool. +Hindamisrežiimis lihtsustab &kalgebra; avaldist, isegi kui selles esineb defineerimata muutuja. Arvutamisrežiimis arvutab &kalgebra; kõik välja ja kui leiab defineerimata muutuja, annab teada veast. +Lisaks kasutaja sisestatud võrrandite ja tulemuste kuvamisele konsoolis näeb paremal asuvas paneelis kõiki deklareeritud muutujaid. Topeltklõpsuga mõnele muutujale ilmub dialoog, kus saab muuta nende väärtust. + +Muutuja "ans" on eriline: iga kord, kui see avaldisse sisestada, antakse sellele viimase tulemuse väärtus. + +Järgnevalt mõned näitefunktsioonid, mida saab sisestada konsooliakna sisendiväljale: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Nüüd ka pilt konsooliaknast pärast ülal toodud näidisavaldiste sisestamist: + +&kalgebra; konsooliaken näidisavaldistega + + + + + + &kalgebra; konsooliaken + + + + + +Kasutaja saab arvutuste jada täitmist juhtida menüü Konsool käskudega: + + + + +&Ctrl; L KonsoolLaadi skript +Käivitab järgemööda failis antud juhised. Sellest on abi, kui on vaja defineerida teeke või taastada varasemat tegevust. + + + +&Ctrl; G KonsoolSalvesta skript +Salvestab juhised, mida oled alates seansi algusest sisestanud, et neid saaks uuesti kasutada. Loob tekstifailid, mida saab vajaduse korral hõlpsasti parandada suvalises tekstiredaktoris, näiteks Kates. + + + +&Ctrl; S KonsoolEkspordi logi +Salvestab logi koos kõigi tulemustega &HTML;-failina, mida saab trükkida või avaldada. + + + + + + + +2D graafikud +Uue 2D graafiku lisamiseks &kalgebra;s tuleb valida kaart 2D graafik ja klõpsata uue funktsiooni lisamiseks Lisa. Seejärel saab nähtavale ilmunud sisestuskasti kirjutada vajaliku funktsiooni. + + +Süntaks +Kui soovid kasutada tüüpilist f(x) funktsiooni, ei ole seda tingimata vaja määrata, aga kui soovid f(y) või polaarfunktsiooni, peab lisama tõkestatud muutujatena y-> ja q->. + +Näited: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Kui oled funktsiooni sisestanud, klõpsa OK ja näedki graafikut peaaknas. + + + + +Võimalused +Samasse vaatesse saab paigutada mitu graafikut. Kasuta lihtsalt nuppu Lisa. Igale graafikule võib anda oma värvi. + +Vaadet saab hiirega suurendada ja liigutada. Hiirerattaga saab suurendada ja vähendada. Samuti võib hiire vasaku nupuga valida piirkonnaga, mida siis näidatakse suurendatult. Vaadet saab liigutada nooleklahvidega. + + + 2D graafide vaateava saab otseselt määrata kaardi 2D graaf alamkaardil Vaateava. + + +Kaardil Nimekiri saab avada kaardi Redigeerimine funktsiooni muutmiseks või eemaldamiseks topeltklõpsuga. Samuti saab seal lasta funktsiooni nime näidata või see peita, kui märkida kastike või eemaldada märge kastikesest funktsiooni nime ees. +Menüüs 2D graafik leiab järgmised valikud: + +Alusvõrgu näitamine või peitmine +Proportsioonide säilitamine suurendamisel/vähendamisel +Suurendamine (&Ctrl;+) ja vähendamine (&Ctrl;-) +Graafiku salvestamine pildina (&Ctrl;S) +Vaate algse suurenduse lähtestamine +Graafiku eraldusvõime valimine + + +Allpool on näide kasutajast, kelle kursor asub paremas servas, otse funktsiooni sin(1/x) peal. Kasutaja on tarvitanud graafi loomisel väga suurt lahutust (ostsillatsioon toimub kõrgetel sagedustel allika lähedal). Kasutada saab ka reaalajas kursori võimalust, mis tähendab, et kui viid kursori mõne punkti peale, näed ekraani alumises vasakus nurgas X- ja Y-väärtusi. Reaalajas kursori asukohta on funktsioonile tõmmatud "puutuja". + + +&kalgebra; 2D graafiku aken + + + + + + &kalgebra; 2D graafiku aken + + + + + + + + + + +3D graafikud + +3D graafiku loomiseks &kalgebra;s tuleb valida kaart 3D graafik, mille allosas on sisestusväli, kuhu saab kirjutada funktsiooni. Z ei ole veel defineeritav, praegu toetab &kalgebra; ainult 3D graafikuid, mis sõltuvad ainult x-ist ja y-st, näiteks (x,y)->x*y, kus z=x*y. + +Näited: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +Vaadet saab hiirega suurendada ja vähendada ning liigutada. Hiirerattaga saab suurendada ja vähendada. Kui hoida all &HPN; ja liigutada hiirt, saab graafikut pöörata. + + Nool vasakule ja paremale pööravad graafikut Z-telje ümber, nool üles ja alla ümber vaate rõhttelje. Joonise suurendamiseks vajuta klahvi W ja vähendamiseks klahvi S. + +Menüüs 3D graafik leiab järgmised valikud: + + +Graafiku salvestamine pildina (&Ctrl;S) +Vaate algse suurenduse lähtestamine +Graafiku esitamine punktide, joonte või ühtlasena + + +Allpool on niinimetatud sombreerofunktsiooni näide. Siinsel graafil on kasutatud ruumiliselt jooni. + + +&kalgebra; 3D graafiku aken + + + + + + &kalgebra; 3D graafiku aken + + + + + + + +Sõnaraamat + +Sõnaraamat sisaldab kõiki &kalgebra;s saadaolevaid funktsioone. Väga mõistlik on sõnaraamatus üle kontrollida, milleks mõnda tehet kasutada saab ja kui palju parameetreid funktsioonid vajavad. Samuti saab siin tõeliselt aimu, milleks on &kalgebra; võimeline. + + Allpool on näide &kalgebra; sõnaraamatust, kus on otsitud teavet koosinuse kohta. + + +&kalgebra; sõnaraamatu aken + + + + + + &kalgebra; sõnaraamatu aken + + + + + + + +&commands; + + +Autorid ja litsents + + +Rakenduse autoriõigus 2005-2009: &Aleix.Pol; + + + +Dokumentatsiooni autoriõigus 2007: &Aleix.Pol; &Aleix.Pol.mail; + +Tõlge eesti keelde: Marek Laane bald@smail.ee +&underFDL; &underGPL; + + + +Paigaldamine + + +&kalgebra; hankimine +&install.intro.documentation; + + +Kompileerimine ja paigaldamine +&install.compile.documentation; + + +&documentation.index; +
+ + diff --git a/po/et/kalgebra.po b/po/et/kalgebra.po new file mode 100644 index 0000000..1adf73d --- /dev/null +++ b/po/et/kalgebra.po @@ -0,0 +1,1168 @@ +# translation of kalgebra.po to Estonian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2007-2009, 2010, 2011, 2012, 2014, 2016, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-11-22 12:11+0200\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.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Valikud: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Aseta \"%1\" sisendisse" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Aseta \"%1\" sisendisse" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Viga: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Imporditi: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Tõrge: %1 laadimine nurjus.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Info" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Lisa/muuda funktsiooni" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Eelvaatlus" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Alates:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Kuni:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Valikud" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Eemalda" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Määratud valikud ei ole korrektsed" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Alumine raja ei saa olla suurem kui ülemine" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D joonis" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D joonis" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Seanss" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Muutujad" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Kalkulaator" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "&Kalkulaator" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Laadi skript..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Viimati kasutatud skriptid" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Salvesta skript..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Ekspordi logi..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "L&isa ans ..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Täitmise režiim" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Arvutamine" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Hindamine" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funktsioonid" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Nimekiri" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Lisa" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Vaateava" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D graafik" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D graafik" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Alusvõrk" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Proportsiooni säilitamine" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Lahutus" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Kehv" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normaalne" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Korralik" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Väga korralik" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D graafik" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &graafik" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Lähtesta vaade" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punktid" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Jooned" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Ühtlane" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Tehted" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Sõnaraamat" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Otsitakse:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "R&edigeerimine" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Skripti valik" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fail (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Vead: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Vali, kuhu paigutada renderdatud joonis" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Pildifail (*.png);;SVG-fail (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Valmis" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Lisa muutuja" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Sisesta uue muutuja nimi" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Kalkulaator" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016: Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Marek Laane" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "qiilaq69@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Lisa/muuda muutujat" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Eemalda muutuja" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Väärtuse '%1' muutmine" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "pole saadaval" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "VÄÄR" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Vasak:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Ülemine:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Laius:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Kõrgus:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Rakenda" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG-fail (*.png);;PDF-dokument(*.pdf);;X3D-dokument (*.x3d);;STL-dokument " +#~ "(*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "K&onsool" + +#~ msgid "&Console" +#~ msgstr "&Konsool" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Määramata funktsioonide kõverate esitamise võimaluse väljatöötamine, " +#~ "funktsioonide esitamise parandused." + +#~ msgid "Formula" +#~ msgstr "Valem" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Viga: väär funktsiooni tüüp" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Tehtud: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Viga: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Puhasta" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-fail" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "Läbipais&tvus" + +#~ msgid "Type" +#~ msgstr "Tüüp" + +#~ msgid "Result: %1" +#~ msgstr "Tulemus: %1" + +#~ msgid "To Expression" +#~ msgstr "Avaldisena" + +#~ msgid "To MathML" +#~ msgstr "MathML-ina" + +#~ msgid "Simplify" +#~ msgstr "Lihtsustatult" + +#~ msgid "Examples" +#~ msgstr "Näited" + +#~ msgid "We can only draw Real results." +#~ msgstr "Joonistada saab ainult tegelikke tulemusi." + +#~ msgid "The expression is not correct" +#~ msgstr "Avaldis ei ole korrektne" + +#~ msgid "Function type not recognized" +#~ msgstr "Funktsiooni tüüp on tundmatu" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "" +#~ "Funktsiooni tüüp ei ole õige funktsioonide puhul, mille sõltuvuseks on %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Määramata funktsioon on defineerimata" + +#~ msgid "center" +#~ msgstr "keskpunkt" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funktsioon" + +#~ msgid "%1 function added" +#~ msgstr "%1 funktsioon lisatud" + +#~ msgid "Hide '%1'" +#~ msgstr "Peida '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Näita '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Valitud vaateava on liiga väike" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Kirjeldus" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parameetrid" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Näide" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : muutuja" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=alates..kuni" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parameetrid, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Liitmine" + +#~ msgid "Multiplication" +#~ msgstr "Korrutamine" + +#~ msgid "Division" +#~ msgstr "Jagamine" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Lahutamine. Arvab kõik väärtused esimesest maha." + +#~ msgid "Power" +#~ msgstr "Astendamine" + +#~ msgid "Remainder" +#~ msgstr "Jääk" + +#~ msgid "Quotient" +#~ msgstr "Jagatis" + +#~ msgid "The factor of" +#~ msgstr "Tegur" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Faktoriaal factorial(n)=n" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Antud nurga siinuse arvutamise funktsioon" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Antud nurga koosinuse arvutamise funktsioon" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "antud nurga tangensi arvutamise funktsioon" + +#~ msgid "Secant" +#~ msgstr "Seekans" + +#~ msgid "Cosecant" +#~ msgstr "Koosekans" + +#~ msgid "Cotangent" +#~ msgstr "Kootangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hüperboolsiinus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hüperboolkoosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hüperbooltangens" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hüperboolseekans" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hüperboolkoosekans" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hüperboolkootangens" + +#~ msgid "Arc sine" +#~ msgstr "Arkussiinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arkuskoosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arkustangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arkuskootangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hüperboolne arkustangens" + +#~ msgid "Summatory" +#~ msgstr "Summa" + +#~ msgid "Productory" +#~ msgstr "Korrutis" + +#~ msgid "For all" +#~ msgstr "Üldisus" + +#~ msgid "Exists" +#~ msgstr "Olemasolu" + +#~ msgid "Differentiation" +#~ msgstr "Diferents" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hüperboolne arkussiinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hüperboolne arkuskoosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arkuskoosekans" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hüperboolne arkuskoosekans" + +#~ msgid "Arc secant" +#~ msgstr "Arkusseekans" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hüperboolne arkusseekans" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Eksponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Naturaallogaritm" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Kümnendlogaritm" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absoluutväärtus abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Alumine piirväärtus floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Ülemine piirväärtus ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Miinimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Suurem kui gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : piirav" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Väärtus" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Määrata tuleb korrektne tehe" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Tundmatu identifikaator: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Tingimuslausele ei leitud sobivat valikut." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Tüüp ei sobi piiramiseks." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Alumine raja on suurem kui ülemine" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Vigane ülemine või alumine raja." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Defineeriti muutuja tsükkel" + +#~ msgid "The result is not a number" +#~ msgstr "Tulemus ei ole arv" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Jõuti ootamatult sisendi lõppu" + +#~ msgid "Unknown token %1" +#~ msgstr "Tundmatu märgis %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 vajab vähemalt 2 parameetrit" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 vajab %2 parameetrit" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Puuduv raja '%1' puhul" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Ootamatu raja '%1' puhul" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 puuduvad rajad '%2' jaoks" + +#~ msgid "Wrong declare" +#~ msgstr "Vale deklaratsioon" + +#~ msgid "Empty container: %1" +#~ msgstr "Tühi konteiner: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Tingimused saavad olla ainult piecewise'i struktuuride sees." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Korraga ei tohi olla kaht parameetrit sama nimega, näiteks \"%1\"." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parameeter otherwise peab olema viimane" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 ei ole sobiv tingimus piecewise'i sees" + +#~ msgid "We can only declare variables" +#~ msgstr "Deklareerida saab ainult muutujaid" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Deklareerida saab ainult piiratud muutujaid" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Viga parsimisel: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Tundmatu konteiner: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "%1 väärtuse muutmine koodiks nurjus." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "%1 tehtemärgil ei saa olla järglaskonteksti." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Element '%1' ei ole operaator." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Tühje vektoreid ei tohi olla" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Toetamata/tundmatu: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Oodati %1, aga saadi \"%2\"" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Parem sulg puudub" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Üleliigne parem sulg" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Ootamatu märgis %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Ootamatu märgis %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "%1 tuletist ei saa arvutada" + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Domeen peab olema vektor või loend." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Vigane parameetrite arv '%2' jaoks. Peab olema 1 parameeter." +#~ msgstr[1] "Vigane parameetrite arv '%2' jaoks. Peab olema %1 parameetrit." + +#~ msgid "Could not call '%1'" +#~ msgstr "\"%1\" väljakutsumine nurjus" + +#~ msgid "Could not solve '%1'" +#~ msgstr "\"%1\" lahendamine nurjus" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Tüüp ei ole muutujaga \"%1\" kooskõlas" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Tükiti tüübi määramine nurjus" + +#~ msgid "Unexpected type" +#~ msgstr "Ootamatu tüüp" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Teisendamine \"%1\" -> \"%2\" nurjus" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Tundmatu märgis %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "0 jääki ei saa arvutada." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "0 tegurit ei saa arvutada." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "0 vähimat ühiskordset ei saa arvutada." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Väärtust %1 ei saa arvutada" + +#~ msgid "Invalid index for a container" +#~ msgstr "Vigane konteineri indeks" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Eri suuruses vektoreid ei saa kasutada." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Vektori %1 ei saa arvutada" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Loendi %1 ei saa arvutada" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "%1 tuletist ei saa arvutada" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "'%1' ja '%2' taandamine nurjus." + +#~ msgid "Incorrect domain." +#~ msgstr "Vigane ring." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Parameeterfunktsioon ei tagasta vektorit" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Vajalik on kahemõõtmeline vektor" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Parameeterfunktsiooni elemendid peavad olema skalaarid" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "%1 tuletis ei ole veel võimalik." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Reaalväärtust ei mõistetud: %1" + +#~ msgid "Subtraction" +#~ msgstr "Lahutamine" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Viga: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Vali konteinerist element" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Viga: graafiku joonistamiseks on vaja väärtusi" + +#~ msgid "Generating... Please wait" +#~ msgstr "Luuakse... Palun oota" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Vigane parameetrite arv, 1 parameeter '%2' jaoks" +#~ msgstr[1] "Vigane parameetrite arv, %1 parameetrit '%2' jaoks" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Salvesta logi" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Korralik" + +#~ msgid "We can only call functions" +#~ msgstr "Välja kutsuda saab ainult funktsioone" + +#~ msgid "Wrong parameter count" +#~ msgstr "Vale parameetrite arv" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "Wrong parameter count" +#~ msgid "Invalid parameter count." +#~ msgstr "Vale parameetrite arv" + +#~ msgid "Mode" +#~ msgstr "Režiim" + +#~ msgid "Save the expression" +#~ msgstr "Avaldise salvestamine" + +#~ msgid "Calculate the expression" +#~ msgstr "Avaldise arvutamine" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "\"%1\" rakendamine \"%2\"-le nurjus" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Tehe \"%1\" abil nurjus" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "\"%1\" tüübi kontrollimine nurjus" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Vale parameetrite arv \"%1\" väljakutsumisel" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Alumine raja ei saa olla ≥ ülemisest rajast" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Püüti välja kutsuda vigast funktsiooni" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "We want a 2 dimension vector" +#~ msgstr "Me soovime kahemõõtmelist vektorit" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Funktsiooni %1 ei ole olemas" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Muutujat %1 ei ole olemas" + +#~ msgid "Need a var name and a value" +#~ msgstr "Vajalik on muutuja nimi ja väärtus" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "Valida saab ainult konteineri väärtuse selle täisarvulise indeksiga" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "Funktsiooni esimene parameeter peab olema nimi" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Tundmatu tõkestatud muutuja: %1" + +#~ msgid "From parser:" +#~ msgstr "Parserist:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Vale parameetrite arv valijas, peab olema 2 parameetrit, valitud indeks " +#~ "ja konteiner." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "piece või otherwise on vales kohas" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Sel summal puuduvad piiravad muutujad" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Summeerimistehtel puuduavd piiravad rajad" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Püüti kodifitseerida tundmatut väärtust: %1" + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Hüperboolne arkuskootangens" + +#~ msgid "Real" +#~ msgstr "Reaalarv" diff --git a/po/et/plasma_applet_kalgebraplasmoid.po b/po/et/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..6d8691c --- /dev/null +++ b/po/et/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Marek Laane , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-07-04 18:08+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 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Sisesta avaldis." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/eu/kalgebra.po b/po/eu/kalgebra.po new file mode 100644 index 0000000..3c7f9d0 --- /dev/null +++ b/po/eu/kalgebra.po @@ -0,0 +1,861 @@ +# Translation of kalgebra.po to Basque/Euskera (eu). +# Copyright (C) 2011, Free Software Foundation, Inc. +# This file is distributed under the same license as the kdeedu package. +# +# Iñigo Salvador Azurmendi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2011-10-08 23:35+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.0\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Aukerak: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Itsatsi \"%1\" sarreran" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Itsatsi \"%1\" sarreran" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Akatsa: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Inportatuta: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Akatsa: Ezin izan da %1 zamatu.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informazioa" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Erantsi/Editatu funtzio bat" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Aurreikusi" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Nondik:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Nora:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Aukerak" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Ados" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Kendu '%1'" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Zehaztu dituzun aukerak ez dira zuzenak" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Beheko muga ezin da goiko muga baino handiagoa izan" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Marraztu 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Marraztu 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Saioa" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Aldagaiak" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Kalkulatu" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Kalkulatu" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Zamatu script-a..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Oraintxuko script-ak" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Gorde script-a..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Esportatu egunkaria..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Exekuzio modua" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Kalkulatu" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Ebaluatu" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funtzioak" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Zerrenda" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Erantsi" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D grafikoa" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D grafikoa" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Sareta" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Mantendu itxuraren erlazioa" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Bereizmena" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Kaskarra" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Ohikoa" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Ona" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Oso ona" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D grafikoa" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &grafikoa" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Berrezarri ikuspegia" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Puntuak" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Lerroak" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Solidoa" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Eragiketak" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Hiztegia" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Bilatu:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editatzea" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Hautatu script bat" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML fitxategia (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "Akatsa: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Irudi fitxategia\n" +"*.svg|SVG fitxategia" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Prest" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Erantsi aldagaia" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Sartu izen bat aldagai berriarentzako" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Kalkulagailu bat" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Erantsi/Editatu aldagai bat" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Aldagaiak" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editatu '%1' balioa" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "Eskuraezina" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "OKER" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Ezkerra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Goia:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Zabalera:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altuera:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Ezarri" + +#~ msgid "C&onsole" +#~ msgstr "K&ontsola" + +#~ msgid "&Console" +#~ msgstr "&Kontsola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Akatsa: Funtzio mota okerra" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Eginda: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Akatsa: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Garbitu" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG fitxategia" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Gardentasuna" + +#~ msgid "Type" +#~ msgstr "Mota" + +#~ msgid "Result: %1" +#~ msgstr "Emaitza: %1" + +#~ msgid "To MathML" +#~ msgstr "MathML-ra" + +#~ msgid "Simplify" +#~ msgstr "Sinplifikatu" + +#~ msgid "Examples" +#~ msgstr "Adibideak" + +#~ msgid "We can only draw Real results." +#~ msgstr "Emaitza errealak baino ezin ditugu marraztu." + +#~ msgid "The expression is not correct" +#~ msgstr "Adierazpena ez da zuzena" + +#~ msgid "Function type not recognized" +#~ msgstr "Funtzio mota ez da ezagutzen" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Izena" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funtzioa" + +#~ msgid "%1 function added" +#~ msgstr "%1 funtzioa erantsita" + +#~ msgid "Hide '%1'" +#~ msgstr "Ezkutatu '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Erakutsi '%1'" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Deskribapena" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametroak" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Adibidea" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=hontatik..hontara" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametroak, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Batuketa" + +#~ msgid "Multiplication" +#~ msgstr "Biderkaketa" + +#~ msgid "Division" +#~ msgstr "Zatiketa" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Kenketa. Balio guztiak lehenengotik kenduko ditu." + +#~ msgid "Power" +#~ msgstr "Berreketa" + +#~ msgid "Remainder" +#~ msgstr "Hondarra" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Faktoriala. faktoriala(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Emandako angeluaren sinua kalkulatzeko funtzioa" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Emandako angeluaren kosinua kalkulatzeko funtzioa" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Emandako angeluaren tangentea kalkulatzeko funtzioa" + +#~ msgid "Secant" +#~ msgstr "Sekantea" + +#~ msgid "Cosecant" +#~ msgstr "Kosekantea" + +#~ msgid "Cotangent" +#~ msgstr "Kotangentea" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinu hiperbolikoa" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Kosinu hiperbolikoa" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangente hiperbolikoa" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Sekante hiperbolikoa" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Kosekante hiperbolikoa" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Kotangente hiperbolikoa" + +#~ msgid "Arc sine" +#~ msgstr "Ark sinua" + +#~ msgid "Arc cosine" +#~ msgstr "Ark kosinua" + +#~ msgid "Arc tangent" +#~ msgstr "Ark tangentea" + +#~ msgid "Arc cotangent" +#~ msgstr "Ark kotangentea" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Ark tangente hiperbolikoa" + +#~ msgid "Summatory" +#~ msgstr "Batukaria" + +#~ msgid "Exists" +#~ msgstr "Existitzen da" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Ark sinu hiperbolikoa" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Ark kosinu hiperbolikoa" + +#~ msgid "Arc cosecant" +#~ msgstr "Ark kosekantea" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Ark kosekante hiperbolikoa" + +#~ msgid "Arc secant" +#~ msgstr "Ark sekantea" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Ark sekante hiperbolikoa" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logaritmoa e oinarrian" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logaritmoa 10 oinarrian" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Balio absolutua. abs(n)=|n|" + +#~ msgid "Minimum" +#~ msgstr "Gutxienezkoa" + +#~ msgid "Maximum" +#~ msgstr "Gehienezkoa" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Handiago baino. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Balioa" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Eragiketa zuzen bat zehaztu behar da" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Identifikatzaile ezezaguna: '%1'" + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Beheko muga goiko muga baino handiago da" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Goi muga edo behe muga okerra." + +#~ msgid "The result is not a number" +#~ msgstr "Emaitza ez da zenbaki bat" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1-(e)k gutxienez 2 parametro behar ditu" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1-(e)k %2 parametro behar ditu" + +#~ msgid "Wrong declare" +#~ msgstr "Deklarazio okerra" + +#~ msgid "Empty container: %1" +#~ msgstr "Edukitzaile hutsa: %1" + +#~ msgid "We can only declare variables" +#~ msgstr "Solik aldagaiak deklaratu ditzakegu" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Akatsa azterketa sintaktikoan: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Edukitzaile ezezaguna: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Ezin da %1 balioa kodetu." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "'%1' elementua ez da eragile bat." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Ez da bektore hutsik nahi" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Ez onartua/ezezaguna: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "%1 espero zen '%2' ordez" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Eskuineko parentesia falta da" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Orekatu gabeko eskuin parentesia" + +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Domeinua bektore bat edo zerrenda bat izan beharko litzateke" + +#~ msgid "Could not call '%1'" +#~ msgstr "Ezin izan da '%1' deitu" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Ezin izan da '%1' ebatzi" + +#~ msgid "Unexpected type" +#~ msgstr "Ustekabeko mota" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Ezin bihurtu '%1' '%2'-ra" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Ezin kalkulatu 0-ren hondarra." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Ezin da 0-rekiko faktorea kalkulatu." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Ezin kalkulatu 0-ren multiplo komunetako txikiena." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Ezin kalkulatu %1 balio bat" + +#~ msgid "Invalid index for a container" +#~ msgstr "Indize baliogabea edukitzaile batentzako" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Ezin eragiketa egin neurri ezberdineko bektoreetan." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Ezin kalkulatu bektore baten %1" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Ezin kalkulatu zerrenda baten %1" diff --git a/po/fi/kalgebra.po b/po/fi/kalgebra.po new file mode 100644 index 0000000..2c37c52 --- /dev/null +++ b/po/fi/kalgebra.po @@ -0,0 +1,1020 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tommi Nieminen , 2011, 2018. +# Lasse Liehu , 2011, 2012, 2013, 2014, 2015, 2016, 2017. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-08-23 20:23+0200\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:22:54+0000\n" +"X-Generator: Lokalize 2.0\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Asetukset: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Liitä ”%1” syötteeseen" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Liitä syötteeseen" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Virhe: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Tuotiin: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Virhe: ei voitu ladata: %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Tietoja" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Lisää funktio tai muokkaa funktiota" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Esikatselu" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Alaraja:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Yläraja:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Asetukset" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Poista" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Määrittämäsi asetukset eivät ole oikein" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Alaraja ei voi olla ylärajaa suurempi" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D-kaavio" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D-kaavio" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Istunto" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Muuttujat" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Laskin" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "&Laskin" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Avaa skripti…" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Viimeaikaiset skriptit" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Tallenna skripti…" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Vie loki…" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Laskutapa" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Laske" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Sievennä" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funktiot" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Luettelo" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Lisää" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Näkymä" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-kuvaaja" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-kuvaaja" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Ruudukko" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Säilytä kuvasuhde" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Tarkkuus" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Huono" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Tavallinen" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Hyvä" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Erittäin hyvä" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-kuvaaja" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&kuvaaja" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Alusta näkymä" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pisteet" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Viivat" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Tasainen" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Toiminnot" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Sanasto" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Etsi:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Muokkaus" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Valitse skripti" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skripti (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-tiedosto (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Virheet: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Valitse minne piirretty kaavio laitetaan" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Kuvatiedosto (*.png);;SVG-tiedosto (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Valmis" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Lisää muuttuja" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Anna uuden muuttujan nimi" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Kannettava laskin" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006–2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Lasse Liehu,Tommi Nieminen" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "lasse.liehu@gmail.com,translator@legisign.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Lisää muuttuja tai muokkaa muuttujaa" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Poista muuttuja" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Muokkaa arvoa: ”%1”" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ei käytettävissä" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "VÄÄRIN" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Vasen:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Ylä:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Leveys:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Korkeus:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Käytä" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG-tiedosto (*.png);;PDF-tiedosto (*.pdf);;X3D-tiedosto (*.x3d);;STL-" +#~ "tiedosto (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "K&onsoli" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Konsoli" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Kehitti implisiittisten käyrien piirtämisominaisuuden. Parannuksia " +#~ "kaavionpiirtofunktioihin." + +#~ msgid "Formula" +#~ msgstr "Kaava" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Virhe: Väärä funktiotyyppi" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Valmis: %1 ms" + +#~ msgid "Error: %1" +#~ msgstr "Virhe: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Tyhjennä" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-tiedosto" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Läpinäkyvyys" + +#~ msgid "Type" +#~ msgstr "Tyyppi" + +#~ msgid "Result: %1" +#~ msgstr "Tulos: %1" + +#~ msgid "To Expression" +#~ msgstr "Lausekkeeksi" + +#~ msgid "To MathML" +#~ msgstr "MathML:ksi" + +#~ msgid "Simplify" +#~ msgstr "Sievennä" + +#~ msgid "Examples" +#~ msgstr "Esimerkit" + +#~ msgid "We can only draw Real results." +#~ msgstr "Vain reaalituloksia voi piirtää." + +#~ msgid "The expression is not correct" +#~ msgstr "Lauseke ei ole oikein" + +#~ msgid "Function type not recognized" +#~ msgstr "Funktiotyyppiä ei tunnistettu" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Funktiotyyppi ei ole oikein funktioille, jonka riippuvuuksina on %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Tason implisiittinen funktio määrittelemättä" + +#~ msgid "center" +#~ msgstr "keskusta" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funktio" + +#~ msgid "%1 function added" +#~ msgstr "Lisätty funktio %1" + +#~ msgid "Hide '%1'" +#~ msgstr "Piilota ”%1”" + +#~ msgid "Show '%1'" +#~ msgstr "Näytä ”%1”" + +#~ msgid "Selected viewport too small" +#~ msgstr "Valittu näkymä on liian pieni" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Kuvaus" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametrit" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Esimerkki" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : muuttuja" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=mistä..mihin" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametrit, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Summa" + +#~ msgid "Multiplication" +#~ msgstr "Tulo" + +#~ msgid "Division" +#~ msgstr "Jako" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Vähennys. Vähentää kaikki arvot ensimmäisestä." + +#~ msgid "Power" +#~ msgstr "Potenssi" + +#~ msgid "Remainder" +#~ msgstr "Jakojäännös" + +#~ msgid "Quotient" +#~ msgstr "Osamäärä" + +#~ msgid "The factor of" +#~ msgstr "Tekijä" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Kertoma. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funktio annetun kulman sinin laskemiseksi" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funktio annetun kulman kosinin laskemiseksi" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funktio annetun kulman tangentin laskemiseksi" + +#~ msgid "Secant" +#~ msgstr "Sekantti" + +#~ msgid "Cosecant" +#~ msgstr "Kosekantti" + +#~ msgid "Cotangent" +#~ msgstr "Kotangentti" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyperbolinen sini" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperbolinen kosini" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyperbolinen tangentti" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyperbolinen sekantti" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperbolinen kosekantti" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperbolinen kotangentti" + +#~ msgid "Arc sine" +#~ msgstr "Arkussini" + +#~ msgid "Arc cosine" +#~ msgstr "Arkuskosini" + +#~ msgid "Arc tangent" +#~ msgstr "Arkustangentti" + +#~ msgid "Arc cotangent" +#~ msgstr "Arkuskotangentti" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hyperbolinen arkustangentti" + +#~ msgid "Summatory" +#~ msgstr "Summamerkintä" + +#~ msgid "Productory" +#~ msgstr "Tulomerkintä" + +#~ msgid "For all" +#~ msgstr "Kaikille" + +#~ msgid "Exists" +#~ msgstr "On olemassa" + +#~ msgid "Differentiation" +#~ msgstr "Derivaatta" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hyperbolinen arkussini" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hyperbolinen arkuskosini" + +#~ msgid "Arc cosecant" +#~ msgstr "Arkuskosekantti" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hyperbolinen arkuskosekantti" + +#~ msgid "Arc secant" +#~ msgstr "Arkussekantti" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hyperbolinen arkussekantti" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Eksponentti (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "e-kantainen logaritmi" + +#~ msgid "Base-10 logarithm" +#~ msgstr "10-kantainen logaritmi" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Itseisarvo: abs(n) = |n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Lattia-arvo. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Katto-arvo. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimi" + +#~ msgid "Maximum" +#~ msgstr "Maksimi" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Suurempi kuin: gt(a,b) = a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : rajat" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Arvo" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Vaaditaan kelvollinen toiminnot" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "”, ”" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Tuntematon tunniste: ”%1”" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Ehtolauseesta ei löytynyt sopivaa vaihtoehtoa." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Tyyppiä ei tueta rajana" + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Alaraja on ylärajaa suurempi" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Väärä ala- tai yläraja." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Muuttujan kehämäärittely" + +#~ msgid "The result is not a number" +#~ msgstr "Tulos ei ole luku" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Odottamaton syötteen loppu" + +#~ msgid "Unknown token %1" +#~ msgstr "Virheellinen merkki %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 tarvitsee vähintään 2 parametria" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 tarvitsee %2 parametria" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Puuttuva raja funktiossa %1" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Odottamaton raja funktiossa %1" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 puuttuvat rajat funktiossa %2" + +#~ msgid "Wrong declare" +#~ msgstr "Väärä esittely" + +#~ msgid "Empty container: %1" +#~ msgstr "Tyhjä tietorakenne: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Vain piecewise-rakenteissa voi olla ehtoja." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Kahdella parametrilla ei voi olla samaa nimeä, esim. ”%1”." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "otherwise-parametrin tulee olla viimeisenä" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 ei ole kelvollinen ehto piecewise-rakenteessa" + +#~ msgid "We can only declare variables" +#~ msgstr "Vain muuttujia voi esitellä" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Tietorakenteessa voi olla vain rajamuuttujia" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Virhe jäsennettäessä: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Tuntematon tietorakenne: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Arvoa %1 ei voida koodata." + +# En tajua itsekään mitä tämä tarkoittaa. Liittyy MathML:n jäsentämiseen (lähdekoodi). +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Operaattorilla %1 ei voi olla lapsikonteksteja." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Elementti ”%1” ei ole operaattori." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Ei halua tyhjiä vektoreita" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Ei tuettu/tuntematon: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Odotettiin %1 eikä ”%2”" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Oikea sulje puuttuu" + +# Merkitys tarkistettu lähdekoodista. +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Ylimääräinen oikea sulje" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Odottamaton merkki %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Odottamaton merkki %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Arvon ”%1” derivaattaa ei voi laskea." + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Määrittelyjoukon tulee olla joko vektori tai luettelo." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Väärä parametrien määrä (”%2”). Tulisi olla 1 parametri." +#~ msgstr[1] "Väärä parametrien määrä (”%2”). Tulisi olla %1 parametria." + +#~ msgid "Could not call '%1'" +#~ msgstr "Ei voi kutsua: ”%1”" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Ei voi ratkaista: ”%1”" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Anna uuden muuttujan nimi" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "piecewise-rakenteen tyyppiä ei voitu selvittää" + +#~ msgid "Unexpected type" +#~ msgstr "Odottamaton tyyppi" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Ei voi muuntaa ”%1” -> ”%2”" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Virheellinen merkki %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Nollalla jakamisen jakojäännöstä ei voi laskea." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Ei voi laskea, onko luku nollan tekijä." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "" +#~ "Toisen luvuista ollessa nolla, ei pienintä yhteistä jaettavaa voi laskea." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Arvoa %1 ei voi laskea" + +#~ msgid "Invalid index for a container" +#~ msgstr "Virheellinen tietorakenteen indeksi" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Ei voi käsitellä erikokoisia vektoreita." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Toiminnon %1 suorittaminen vektorille ei onnistunut." + +# ”Toiminto” ei liene kovin matemaattista kieltä. +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Toiminnon %1 suorittaminen luettelolle ei onnistunut." + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Arvon ”%1” derivaattaa ei voi laskea." + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Arvoja ”%1” ja ”%2” ei voi sieventää." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Parametrinen funktio ei palauta vektoria" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Kaksiulotteista vektoria tarvitaan" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Parametrisen funktion kohtien tulee olla skalaareja" diff --git a/po/fi/kalgebramobile.po b/po/fi/kalgebramobile.po new file mode 100644 index 0000000..681c488 --- /dev/null +++ b/po/fi/kalgebramobile.po @@ -0,0 +1,203 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# Tommi Nieminen , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2018-08-23 20:23+0200\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Kannettava laskin" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Tommi Nieminen" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "translator@legisign.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, fuzzy, kde-format +#| msgid "A portable calculator" +msgid "A simple scientific calculator" +msgstr "Kannettava laskin" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Lataa komentojono…" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Komentojono (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Tallenna komentojono…" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Vie loki…" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Laske…" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Laske…" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Tyhjennä loki" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Tallenna…" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Näytä ruudukko" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Tyhjennä ikkuna" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Tyhjennä kaikki" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Virheitä: askel ei voi olla 0" + +#: plugins/Tables.qml:49 +#, fuzzy, kde-format +#| msgid "Errors: The step cannot be 0" +msgid "Errors: The start and end are the same" +msgstr "Virheitä: askel ei voi olla 0" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Virheitä: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Syöte:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Mistä:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Mihin:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Askel:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Suorita" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Tulokset:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Laskettava lauseke…" + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebran toi sinulle vapaiden ohjelmistojen ympäristön ihana KDE-yhteisö ja KDE Edu." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Jos haluat lisätietoa KAlgebrasta, löydät sitä viralliselta sivustolta ja käyttäjien wikistä.
Jos " +#~ "kohtaat ohjelmassa ongelmia, ilmoita niistä vikajäljittimeemme." + +#~ msgid "Results" +#~ msgstr "Tulokset" diff --git a/po/fi/plasma_applet_kalgebraplasmoid.po b/po/fi/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..4f5ab37 --- /dev/null +++ b/po/fi/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,35 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Tommi Nieminen , 2011. +# +# KDE Finnish translation sprint participants: +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-03-04 23:00+0200\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" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:23:53+0000\n" +"X-Generator: MediaWiki 1.21alpha (963ddae); Translate 2012-11-08\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Syötä jokin lauseke." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/fr/kalgebra.po b/po/fr/kalgebra.po new file mode 100644 index 0000000..6ddebf7 --- /dev/null +++ b/po/fr/kalgebra.po @@ -0,0 +1,1060 @@ +# translation of kalgebra.po to Français +# translation of kalgebratrad.po to +# translation of kalgebra.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Delannoy Nicolas , 2007. +# Ludovic Grossard , 2007, 2008. +# Mickael Sibelle , 2008. +# Sébastien Renard , 2008. +# Joëlle Cornavin , 2009, 2010, 2012, 2013. +# Thomas Vergnaud , 2015, 2016. +# Simon Depiets , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-01-24 12:29+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \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 19.03.70\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Options : %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Coller « %1 » dans la saisie" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Coller dans la saisie" + +# unreviewed-context +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Erreur : %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importé : %1" + +# unreviewed-context +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Erreur : impossible de charger %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informations" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +# unreviewed-context +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Ajouter / Modifier une fonction" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Aperçu" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Depuis :" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Vers :" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Options" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Ok" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Supprimer" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Les options que vous avez spécifiées ne sont pas correctes" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" +"Impossible que la limite inférieure soit plus grande que la limite supérieure" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Graphe 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Graphe 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Session" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variables" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculatrice" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "&Calculatrice" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Charger &le script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripts récents" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Enregistrer le &script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exporter le journal..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Insérer ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Mode d'exécution" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calculer" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Évaluer" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Fonctions" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Ajouter" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Fenêtre d'affichage" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Graphe &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Graphe 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grille" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Conserver le rapport hauteur / largeur" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Résolution" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Pauvre" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normale" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Précise" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Très précise" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Graphique &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Graphique 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Ré-initialiser l'affichage" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Points" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Lignes" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Trait continu" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Opérations" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dictionnaire" + +# unreviewed-context +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Chercher :" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Modification" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Choisir un script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Fichier HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Erreurs : %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Indiquez où enregistrer le rendu du tracé" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "fichier d'image (*.png);;fichier SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Prêt" + +# unreviewed-context +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Ajouter une variable" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Saisissez le nom de la nouvelle variable" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Une calculatrice portable" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Joëlle Cornavin, Simon Depiets" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "jcorn@free.fr, sdepiets@gmail.com" + +# unreviewed-context +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Ajouter / Modifier une variable" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Supprimer une variable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Modifier la valeur « %1 »" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "Non disponible" + +# unreviewed-context +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "INCORRECT" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Gauche :" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Haut :" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Largeur :" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Hauteur :" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Appliquer" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "fichier PNG (*.png);;document PDF (*.pdf);;document X3D (*.x3d)::" +#~ "document STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsole" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Console" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Développement d'une fonctionnalité permettant le dessin de courbes " +#~ "implicites. Amélioration des fonctions de traçage." + +#~ msgid "Formula" +#~ msgstr "Formule" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Erreur : type erroné de fonction" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Terminé : %1 ms" + +#~ msgid "Error: %1" +#~ msgstr "Erreur : %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Effacer" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Fichier « PNG »" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparence" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Result: %1" +#~ msgstr "Résultat : %1" + +#~ msgid "To Expression" +#~ msgstr "Vers une expression" + +#~ msgid "To MathML" +#~ msgstr "Vers MathML" + +#~ msgid "Simplify" +#~ msgstr "Simplifier" + +#~ msgid "Examples" +#~ msgstr "Exemples" + +#~ msgid "We can only draw Real results." +#~ msgstr "On peut tracer uniquement des résultats réels." + +#~ msgid "The expression is not correct" +#~ msgstr "L'expression n'est pas correcte" + +#~ msgid "Function type not recognized" +#~ msgstr "Type de fonction non reconnu" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Type de fonction non correct pour les fonctions dépendant de %1" + +#, fuzzy +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Fonction implicite non définie dans le plan" + +#~ msgid "center" +#~ msgstr "centre" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Fonction" + +#~ msgid "%1 function added" +#~ msgstr "Fonction %1 ajoutée" + +# unreviewed-context +#~ msgid "Hide '%1'" +#~ msgstr "Masquer « %1 »" + +# unreviewed-context +#~ msgid "Show '%1'" +#~ msgstr "Afficher « %1 »" + +#~ msgid "Selected viewport too small" +#~ msgstr "La fenêtre d'affichage sélectionnée est trop petite" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Paramètres" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Exemple" + +#, fuzzy +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : variable" + +#, fuzzy +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=de..à" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... paramètres, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Addition" + +#~ msgid "Multiplication" +#~ msgstr "Multiplication" + +#~ msgid "Division" +#~ msgstr "Division" + +#~ msgid "Power" +#~ msgstr "Puissance" + +#~ msgid "Remainder" +#~ msgstr "Reste" + +#~ msgid "Quotient" +#~ msgstr "Quotient" + +#~ msgid "The factor of" +#~ msgstr "Le facteur de" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Factorielle. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Fonction pour calculer le sinus d'un angle donné" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Fonction pour calculer le cosinus d'un angle donné" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Fonction pour calculer la tangente d'un angle donné" + +#~ msgid "Secant" +#~ msgstr "Sécante" + +#~ msgid "Cosecant" +#~ msgstr "Cosécante" + +#~ msgid "Cotangent" +#~ msgstr "Cotangente" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinus hyperbolique" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Cosinus hyperbolique" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangente hyperbolique" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Sécante hyperbolique" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Cosécante hyperbolique" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Cotangente hyperbolique" + +#~ msgid "Arc sine" +#~ msgstr "Arc sinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arc cosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arc tangente" + +#~ msgid "Arc cotangent" +#~ msgstr "Arc cotangente" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Arc tangente hyperbolique" + +#~ msgid "Summatory" +#~ msgstr "Somme" + +#~ msgid "Productory" +#~ msgstr "Produit" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Normale" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "Liste" + +#~ msgid "Differentiation" +#~ msgstr "Différentiation" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Arc sinus hyperbolique" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Arc cosinus hyperbolique" + +#~ msgid "Arc cosecant" +#~ msgstr "Arc cosécante" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Arc cosécante hyperbolique" + +#~ msgid "Arc secant" +#~ msgstr "Arc sécante hyperbolique" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Arc sécante hyperbolique" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exposant (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logarithme de base-e" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logarithme de base 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Valeur absolue. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Valeur plancher. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Valeur plafond. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Supérieur à. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, etc.)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : limites" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Valeur" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Doit spécifier une opération correcte" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Identifiant inconnu : « %1 »" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "" +#~ "Impossible de trouver un choix approprié pour une instruction " +#~ "conditionnelle." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Type non pris en charge pour une limitation." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "La limite inférieure est plus grande que la limite supérieure" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Limite supérieure ou limite inférieure incorrecte." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Un cycle de variable a été défini" + +#~ msgid "The result is not a number" +#~ msgstr "Le résultat n'est pas un nombre" + +#~ msgid "Unknown token %1" +#~ msgstr "Jeton inconnu %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 nécessite au moins 2 paramètres" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 requiert %2 paramètres" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Frontière absente pour « %1 »" + +#, fuzzy +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Limitation inattendue pour « %1 »" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 limites absentes sur « %2 »" + +#~ msgid "Wrong declare" +#~ msgstr "Déclaration incorrecte" + +#~ msgid "Empty container: %1" +#~ msgstr "Conteneur vide : %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "" +#~ "On peut avoir uniquement des conditions à l'intérieur des structures en " +#~ "morceaux (piecewise)." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Il est impossible d'avoir deux paramètres du même nom comme « %1 »." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Le paramètre sinon devra être le dernier" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "" +#~ "%1 n'est pas une condition appropriée à l'intérieur du morceau (piecewise)" + +#~ msgid "We can only declare variables" +#~ msgstr "On peut déclarer uniquement des variables" + +#~ msgid "We can only have bounded variables" +#~ msgstr "On ne peut déclarer que des variables bornées" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Erreur lors de l'analyse syntaxique : %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Conteneur inconnu : %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Impossible de codifier la valeur %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Impossible que l'opérateur %1 ait des contextes fils." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "L'élément « %1 » n'est pas un opérateur." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Ne pas vouloir de vecteurs vides" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Non pris en charge / inconnu : %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "On attendait %1 au lieu de « %2 »" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Il manque la parenthèse droite" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "La parenthèse droite n'est pas équilibrée" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Jeton inattendu %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Jeton inattendu %1" + +#, fuzzy +#~| msgid "Could not calculate a value %1" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Impossible de calculer une valeur %1" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "" +#~ "Nombre de paramètres incorrect pour « %2 » . Il ne doit y avoir qu'un " +#~ "seul paramètre." +#~ msgstr[1] "" +#~ "Nombre de paramètres incorrect, on a %1 paramètres pour « %2 ». Il " +#~ "devrait y avoir %1 paramètres." + +#~ msgid "Could not call '%1'" +#~ msgstr "Impossible d'appeler « %1 »" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Impossible de résoudre « %1 »" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Saisissez le nom de la nouvelle variable" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Impossible de déterminer le type du morceau (piecewise)" + +#, fuzzy +#~| msgid "Unexpected bounding for '%1'" +#~ msgid "Unexpected type" +#~ msgstr "Limitation inattendue pour « %1 »" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Impossible de convertir « %1 » en « %2 »" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Jeton inattendu %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Impossible de calculer le reste sur 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Impossible de calculer le facteur sur 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Impossible de calculer le PPCM de 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Impossible de calculer une valeur %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Indice incorrect pour un conteneur" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Impossible d'opérer sur des vecteurs de taille différente." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Impossible de calculer le %1 du vecteur" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Impossible de calculer le %1 d'une liste" + +#, fuzzy +#~| msgid "Could not calculate a value %1" +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Impossible de calculer une valeur %1" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Impossible de réduire « %1 » et « %2 »." + +#~ msgid "Incorrect domain." +#~ msgstr "Domaine incorrect." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "La fonction paramétrique ne retourne pas de vecteur" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Un vecteur bidimensionnel est nécessaire" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Les éléments de la fonction paramétrique doivent être scalaires" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "La dérivée %1 n'a pas été mise en œuvre." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Impossible de comprendre la valeur réelle : %1" + +#~ msgid "Subtraction" +#~ msgstr "Soustraction" diff --git a/po/fr/kalgebramobile.po b/po/fr/kalgebramobile.po new file mode 100644 index 0000000..d254d04 --- /dev/null +++ b/po/fr/kalgebramobile.po @@ -0,0 +1,205 @@ +# Simon Depiets , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-20 01:42+0800\n" +"Last-Translator: Simon Depiets \n" +"Language-Team: French \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 19.07.70\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Une calculatrice portable" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Geoffray Levasseur, Matthieu Robin, Simon Depiets" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"geoffray.levasseurbrandin@numericable.fr, kde@macolu.org, sdepiets@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Une calculatrice scientifique simple" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Charger un script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Enregistrer le script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exporter le journal..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Évaluer..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calculer..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Effacer le journal" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copier « %1 »" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Tracé 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Tracé 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Enregistrer..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Afficher la grille" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Réinitialiser l'affichage" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Tout effacer" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Erreur : le pas doit être différent de 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Erreur : le départ et l'arrivée sont identiques" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Erreur : %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrée :" + +# unreviewed-context +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De :" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "À :" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Pas :" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Exécuter" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Résultats :" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expressions à calculer..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra est développé par la communauté chaleureuse de KDE et KDE Edu qui " +#~ "soutient le logiciel libre." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Si vous souhaitez en apprendre davantage au sujet de KAlgebra, vous " +#~ "pourrez trouver davantage d'informations sur notre site officiel et sur le " +#~ "wiki des utilisateurs.
Si vous rencontrez le moindre problème avec votre logiciel, veuillez le " +#~ "signaler sur notre système de suivi de " +#~ "bogues." + +#~ msgid "Results" +#~ msgstr "Résultats" diff --git a/po/fr/plasma_applet_kalgebraplasmoid.po b/po/fr/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..08745b1 --- /dev/null +++ b/po/fr/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# translation of plasma_applet_kalgebra.po to Français +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Joëlle Cornavin , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-06-19 11:41+0200\n" +"Last-Translator: Joëlle Cornavin \n" +"Language-Team: French \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-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Saisissez une expression." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ga/kalgebra.po b/po/ga/kalgebra.po new file mode 100644 index 0000000..1c3600c --- /dev/null +++ b/po/ga/kalgebra.po @@ -0,0 +1,996 @@ +# Irish translation of kalgebra +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kalgebra package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdeedu/kalgebra.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2007-06-27 10:27-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" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Roghanna: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Earráid: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Iompórtáilte: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Earráid: Níorbh fhéidir %1 a luchtú.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Eolas" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Cuir feidhm leis/in eagar" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Réamhamharc" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Ó:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Go:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Roghanna" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Bain '%1'" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Seisiún" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Athróga" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "&Calculator" +msgstr "Áireamhán" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "C&alculator" +msgstr "Áireamhán" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Luchtaigh Script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripteanna Le Déanaí" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Sábháil Script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Easpórtáil Logchomhad..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Luacháil" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Feidhmeanna" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liosta" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Cuir Leis" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Graf &2T" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Graf 2&T" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Greille" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Caomhnaigh an Cóimheas Treoíochta" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Taifeach" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Garbh" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Gnáth" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Mín" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "An-Mhín" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Graf &3T" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Graf 3T" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Athshoc&raigh an tAmharc" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Poncanna" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Línte" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Soladach" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Oibríochtaí" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Foclóir" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Lorg:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Eagarthóireacht" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Roghnaigh script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Comhad HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Earráidí: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "Image File (*.png)" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Comhad Íomhá (*.png)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Réidh" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Cuir athróg leis" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Iontráil ainm na hathróige nuaí" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Kevin Scannell" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kscanne@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Cuir athróg leis/in eagar" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Athróga" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Cuir luach '%1' in eagar" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "níl ar fáil" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "MÍCHEART" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Ar Chlé:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Barr:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Leithead:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Airde:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Cuir i bhFeidhm" + +#~ msgid "C&onsole" +#~ msgstr "C&onsól" + +#~ msgid "&Console" +#~ msgstr "&Consól" + +#~ msgid "" +#~ "*.png|Image File\n" +#~ "*.svg|SVG File" +#~ msgstr "" +#~ "*.png|Comhad Íomhá\n" +#~ "*.svg|Comhad SVG" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "Formula" +#~ msgstr "Foirmle" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Críochnaithe: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Earráid: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Glan" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Comhad PNG" + +#~ msgid "&Transparency" +#~ msgstr "&Trédhearcacht" + +#~ msgid "Type" +#~ msgstr "Cineál" + +#~ msgid "Result: %1" +#~ msgstr "Toradh: %1" + +#~ msgid "To Expression" +#~ msgstr "Go Slonn" + +#~ msgid "To MathML" +#~ msgstr "Go MathML" + +#~ msgid "Simplify" +#~ msgstr "Simpligh" + +#~ msgid "Examples" +#~ msgstr "Samplaí" + +#~ msgid "We can only draw Real results." +#~ msgstr "Ní féidir ach torthaí Réadacha a thaispeáint." + +#~ msgid "center" +#~ msgstr "lár" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Ainm" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Feidhm" + +#~ msgid "%1 function added" +#~ msgstr "Feidhm %1 curtha leis" + +#~ msgid "Hide '%1'" +#~ msgstr "Folaigh '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Taispeáin '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Tá an t-amharc roghnaithe róbheag" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Cur Síos" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Paraiméadair" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Sampla" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... paraiméadair, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Suimiú" + +#~ msgid "Multiplication" +#~ msgstr "Iolrú" + +#~ msgid "Division" +#~ msgstr "Roinnt" + +#~ msgid "Power" +#~ msgstr "Cumhacht" + +#~ msgid "Remainder" +#~ msgstr "Fuílleach" + +#~ msgid "Quotient" +#~ msgstr "Líon" + +#~ msgid "The factor of" +#~ msgstr "An fachtóir de" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Iolrán. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Feidhm a áiríonn síneas den uillinn thugtha" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Feidhm a áiríonn comhshíneas den uillinn thugtha" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Feidhm a áiríonn tangant den uillinn thugtha" + +#~ msgid "Secant" +#~ msgstr "Seiceant" + +#~ msgid "Cosecant" +#~ msgstr "Comhsheiceant" + +#~ msgid "Cotangent" +#~ msgstr "Comhthangant" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Síneas hipearbóileach" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Comhshíneas hipearbóileach" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangant hipearbóileach" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Seiceant hipearbóileach" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Comhsheiceant hipearbóileach" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Comhthangant hipearbóileach" + +#~ msgid "Arc sine" +#~ msgstr "Arcshíneas" + +#~ msgid "Arc cosine" +#~ msgstr "Arc-chomhshíneas" + +#~ msgid "Arc tangent" +#~ msgstr "Arcthangant" + +#~ msgid "Arc cotangent" +#~ msgstr "Arc-chomhthangant" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Arcthangant hipearbóileach" + +#~ msgid "Summatory" +#~ msgstr "Feidhm Shuimithe" + +#~ msgid "Productory" +#~ msgstr "Feidhm Iolraithe" + +#~ msgid "Differentiation" +#~ msgstr "Difreáil" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Arcshíneas hipearbóileach" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Arc-chomhshíneas hipearbóileach" + +#~ msgid "Arc cosecant" +#~ msgstr "Arc-chomhsheiceant" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Arc-chomhsheiceant hipearbóileach" + +#~ msgid "Arc secant" +#~ msgstr "Arcsheiceant" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Arcsheiceant hipearbóileach" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Easpónant (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logartam aiceanta" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logartam le bunuimhir 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Luach uimhriúil. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Luach urláir. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Luach síleála. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Íosmhéid" + +#~ msgid "Maximum" +#~ msgstr "Uasmhéid" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Níos mó ná. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : teorainn" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Luach" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Caithfidh tú oibríocht cheart a shonrú" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "" +#~ "Níorbh fhéidir rogha oiriúnach a aimsiú le haghaidh ráitis choinníollaigh." + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Uasteorainn nó íosteorainn mhícheart." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Sainíodh ciogal athróg" + +#~ msgid "Unknown token %1" +#~ msgstr "Teaghrán anaithnid comharthach %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "Tá dhá pharaiméadar ar a laghad de dhíth ar %1" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "Tá %2 paraiméadar de dhíth ar %1" + +#~ msgid "Empty container: %1" +#~ msgstr "Coimeádán folamh: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Ní cheadaítear coinníollacha ach laistigh de bhreacstruchtúir." + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "Ní coinníoll oiriúnach laistigh den bhreacstruchtúr é %1" + +#~ msgid "We can only declare variables" +#~ msgstr "Ní féidir ach athróga a fhógairt" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Earráid le linn parsála: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Coimeádán anaithnid: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Ní féidir an luach %1 a chódú." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Ní féidir mac-chomhthéacsanna a bheith ag oibreoir %1." + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Gan tacaíocht/anaithnid: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Bhíothas ag súil le %1 in ionad '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Lúibín deas ar iarraidh" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Lúibín deas neamhchothrom" + +#~ msgid "Unexpected token %1" +#~ msgstr "Teaghrán comharthach %1 gan súil leis" + +#~ msgid "Could not call '%1'" +#~ msgstr "Níorbh fhéidir '%1' a ghlao" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Níorbh fhéidir '%1' a réiteach" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Teaghrán anaithnid comharthach %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Ní féidir fuílleach ar 0 a áireamh." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Ní féidir an fachtóir ar 0 a áireamh." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Ní féidir an comhiolrú is lú de 0 a áireamh." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Níorbh fhéidir luach %1 a áireamh" + +#~ msgid "Invalid index for a container" +#~ msgstr "Innéacs neamhbhailí ar choimeádán" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Ní féidir oibriú le veicteoirí de mhéideanna éagsúla." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Níorbh fhéidir %1 an veicteora a áireamh" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Níl an díorthach %1 ar fáil." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Níor tuigeadh an luach réadach: %1" + +#~ msgid "Subtraction" +#~ msgstr "Dealú" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Earráid: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Roghnaigh eilimint ó choimeádán" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Earráid: Luachanna de dhíth chun graf a dhearadh" + +#~ msgid "Generating... Please wait" +#~ msgstr "Á ghiniúint... fan go fóill" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Sábháil Logchomhad" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Save the expression" +#~ msgstr "Sábháil an slonn" + +#~ msgid "Calculate the expression" +#~ msgstr "Áirigh an slonn" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Ní cheadaítear íosteorainn ≥ uasteorainn" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Níl feidhm %1 ann" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Níl athróg %1 ann" + +#~ msgid "Need a var name and a value" +#~ msgstr "Ainm athróige agus luach de dhíth" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "Is féidir luach coimeádáin a roghnú trína innéacs slánuimhreach amháin" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Athróg anaithnid chuimsithe: %1" + +#~ msgid "From parser:" +#~ msgstr "Ón pharsálaí:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Tá líon na bparaiméadar mícheart i roghnóir; ba chóir dhá pharaiméadar a " +#~ "bheith ann, an t-innéacs roghnaithe agus an coimeádán." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "píosa nó otherwise san áit mhícheart" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Níl athróga teorantacha ag an tsuim seo" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Teorainneacha ar iarraidh ar oibríocht suimithe" + +#~ msgid "Real" +#~ msgstr "Fíor" + +#~ msgid "%1, " +#~ msgstr "%1, " + +#~ msgctxt "Parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@item:inmenu" +#~ msgid "&New" +#~ msgstr "&Nua" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Quit" +#~ msgstr "&Scoir" + +#~ msgid "&Save" +#~ msgstr "&Sábháil" + +#~ msgid "Sine" +#~ msgstr "Síneas" + +#~ msgid "Cosine" +#~ msgstr "Comhshíneas" + +#~ msgid "Tangent" +#~ msgstr "Tangant" diff --git a/po/ga/plasma_applet_kalgebraplasmoid.po b/po/ga/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..d5d8b6a --- /dev/null +++ b/po/ga/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Irish translation of plasma_applet_kalgebra +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the plasma_applet_kalgebra package. +# Kevin Scannell , 2010. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-03-18 00:57-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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Iontráil slonn." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/gl/kalgebra.po b/po/gl/kalgebra.po new file mode 100644 index 0000000..318d9ae --- /dev/null +++ b/po/gl/kalgebra.po @@ -0,0 +1,498 @@ +# translation of kalgebra.po to galician +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Miguel Branco , 2008. +# mvillarino , 2008, 2009. +# Marce Villarino , 2008. +# Manuel A. Vazquez , 2009. +# Xosé , 2009, 2010, 2011, 2013. +# Marce Villarino , 2009, 2013. +# Adrián Chaves Fernández , 2015, 2016, 2017. +# Adrián Chaves (Gallaecio) , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-04-06 11:53+0200\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" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcións: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Pegar «%1» na entrada" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Pegar na entrada" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Erro: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importado: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Erro: Non se puido cargar %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Información" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Engadir/Editar unha función" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Previsualización" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "De:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Ata:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcións" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Aceptar" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Retirar" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "As opcións indicadas non son correctas" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "O límite inferior non pode ser máis grande que o límite superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Representar en 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Representar en 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesión" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variábeis" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Cargar un script…" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripts recentes" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Gardar o script…" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportar o rexistro…" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Inserir…" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Modo de execución" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcular" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Avaliar" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funcións" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "Eng&adir" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Área de visualización" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&Gráfico 2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gráfico 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grade" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Manter as proporcións" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolución" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Mala" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Boa" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Excelente" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gráfico &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "Gráfico 3&D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Reiniciar a vista" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Puntos" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Liñas" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sólido" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacións" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dicionario" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Buscar:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editar" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Escoller un script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Ficheiro HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Selecciona onde colocar o gráfico xerado." + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Ficheiro de imaxe (*.png);;Ficheiro SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Listo" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Engadir unha variábel" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Insire un nome para a nova variábel" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Unha calculadora portátil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Xosé Calvo" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "xosecalvo@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Engadir/Editar unha variábel" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Retirar a variábel" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editar o valor «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "non dispoñíbel" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FALSO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Esquerda:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Arriba:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Anchura:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplicar" + +#, fuzzy +#~| msgid "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d)" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "Ficheiro PNG (*.png);;Documento PDF (*.pdf);;Documento X3D (*.x3d)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsola" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Consola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Creou a funcionalidade que permite deseñar curvas implícitas. Melloras " +#~ "nas funcións de representación." + +#~ msgid "Formula" +#~ msgstr "Fórmula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Erro: O tipo de función é erróneo" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Feito: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Erro: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Limpar" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Ficheiro PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparencia" + +#~ msgid "Type" +#~ msgstr "Tipo" diff --git a/po/gl/kalgebramobile.po b/po/gl/kalgebramobile.po new file mode 100644 index 0000000..c555b82 --- /dev/null +++ b/po/gl/kalgebramobile.po @@ -0,0 +1,197 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# +# Adrián Chaves (Gallaecio) , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-09 12:39+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" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Unha calculadora portátil" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Adrian Chaves (Gallaecio)" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "adrian@chaves.io" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Unha calculadora científica sinxela" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Cargar un script…" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Gardar o script…" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportar o rexistro…" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Avaliar…" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcular…" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Limpar o rexistro" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copiar «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gráfica en 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gráfica en 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Gardar…" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Ver a grade" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Restabelecer a área de visualización" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Limpar todo" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Erros: o paso non pode ser 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Erros: O inicio e o final son o mesmo" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "A:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Paso:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Executar" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultados:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expresión para calcular…" + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra fornécello a encantadora comunidade de KDE e KDE Edu desde un " +#~ "ambiente de Software Libre." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Se quere aprender máis sobre KAlgebra, atopará máis información no sitio " +#~ "web oficial e no wiki de " +#~ "usuarios.
Se ten calquera problema co software, informe del no noso sistema de seguimento de fallos." diff --git a/po/gl/plasma_applet_kalgebraplasmoid.po b/po/gl/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..c6c5e56 --- /dev/null +++ b/po/gl/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Xosé , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-09-22 00:12+0200\n" +"Last-Translator: Xosé \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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Insire algunha expresión." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/hi/kalgebra.po b/po/hi/kalgebra.po new file mode 100644 index 0000000..54c1cf4 --- /dev/null +++ b/po/hi/kalgebra.po @@ -0,0 +1,861 @@ +# translation of kalgebra.po to Hindi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Ravishankar Shrivastava , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2007-12-21 17:37+0530\n" +"Last-Translator: Ravishankar Shrivastava \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Options: %1" +msgstr "फंक्शन्स" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "जानकारी" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "फंक्शन जोड़ें/संपादित करें" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "" + +#: functionedit.cpp:106 +#, fuzzy, kde-format +#| msgid "Functions" +msgid "Options" +msgstr "फंक्शन्स" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ठीक" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, fuzzy, kde-format +#| msgid "To Expression" +msgid "Session" +msgstr "को एक्सप्रेशन" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "चर" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "&Calculator" +msgstr "एक गणक" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "C&alculator" +msgstr "एक गणक" + +#: kalgebra.cpp:169 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Load Script" +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "स्क्रिप्ट लोड करें (&L)" + +#: kalgebra.cpp:171 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Save Script" +msgid "Recent Scripts" +msgstr "स्क्रिप्ट सहेजें (&S)" + +#: kalgebra.cpp:175 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Save Script" +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "स्क्रिप्ट सहेजें (&S)" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, fuzzy, kde-format +#| msgid "A calculator" +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "एक गणक" + +#: kalgebra.cpp:185 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "मान" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "फंक्शन्स" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "सूची" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "जोड़ें (&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2डी ग्राफ " + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2डी ग्राफ (&D)" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "ग्रिड (&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "रिसॉल्यूशन" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "खराब" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "सामान्य" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "बढ़िया" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "बहुत बढ़िया" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3डी ग्राफ" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "३डी ग्राफ (&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "दृश्य रीसेट करें (&R)" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "बिन्दुएँ" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "पंक्तियाँ" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "ठोस" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "शब्दकोष (&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "संपादन (&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "स्क्रिप्ट चुनें" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "स्क्रिप्ट (*.kal)" + +#: kalgebra.cpp:528 +#, fuzzy, kde-format +#| msgid "Text File (*)" +msgid "HTML File (*.html)" +msgstr "पाठ फ़ाइल (*)" + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgctxt "Function parameter separator" +#| msgid ", " +msgid ", " +msgstr "," + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "त्रुटि: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|छवि फ़ाइल\n" +"*.svg|एसवीजी फ़ाइल" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "तैयार" + +#: kalgebra.cpp:680 +#, fuzzy, kde-format +#| msgid "Add/Edit a variable" +msgid "Add variable" +msgstr "कोई चर जोड़ें/संपादित करें" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "एक गणक" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006 अलेक्स पोल गोंजालेज" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "रविशंकर श्रीवास्तव, जी. करूणाकर" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "raviratlami@aol.in," + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "कोई चर जोड़ें/संपादित करें" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "चर" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "मूल्य '%1' संपादित करें" + +#: varedit.cpp:66 +#, fuzzy, kde-format +#| msgid "Add/Edit a variable" +msgid "not available" +msgstr "कोई चर जोड़ें/संपादित करें" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "गलत" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "" + +#~ msgid "C&onsole" +#~ msgstr "कंसोल (&o)" + +#~ msgid "&Console" +#~ msgstr "कंसोल (&C)" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "एलेक्स पोल गोंजालेज" + +#, fuzzy +#~| msgctxt "Current parameter in function prototype" +#~| msgid "par%1" +#~ msgid "Formula" +#~ msgstr "par%1" + +#, fuzzy +#~| msgid "Done: %1ms" +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "सम्पन्न: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "त्रुटि: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "साफ करें" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|पीएनजी फ़ाइल" + +#~ msgid "&Transparency" +#~ msgstr "पारदर्शिता (&T)" + +#~ msgid "Type" +#~ msgstr "क़िस्म" + +#~ msgid "To Expression" +#~ msgstr "को एक्सप्रेशन" + +#~ msgid "To MathML" +#~ msgstr "को मैथएमएल" + +#~ msgid "Simplify" +#~ msgstr "सरल करें" + +#~ msgid "center" +#~ msgstr "बीच में" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "नाम" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "फंक्शन" + +#~ msgid "%1 function added" +#~ msgstr "%1 फंक्शन जोड़े" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "वर्णन" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "पैरामीटर्स" + +#, fuzzy +#~| msgctxt "Parameter in function prototype" +#~| msgid "%1" +#~ msgid "%1(" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "%1(..., parameters, ...)" +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1(..., पैरामीटर्स, ...)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "जोड़ें" + +#~ msgid "Multiplication" +#~ msgstr "गुणा" + +#~ msgid "Division" +#~ msgstr "भाग" + +#~ msgid "Power" +#~ msgstr "पावर" + +#~ msgid "Remainder" +#~ msgstr "शेषफल" + +#~ msgid "Quotient" +#~ msgstr "भागफल" + +#~ msgid "The factor of" +#~ msgstr "का फ़ैक्टर है" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "फैक्टोरियल. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "दिए गए कोण के ज्या का गणन करने का फंक्शन" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "दिए गए कोण के कोज्या का गणन करने का फंक्शन" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "दिए गए कोण के स्पर्शज्या का गणन करने का फंक्शन" + +#~ msgid "Secant" +#~ msgstr "सीकेण्ट" + +#~ msgid "Cosecant" +#~ msgstr "कोसीकेण्ट" + +#~ msgid "Cotangent" +#~ msgstr "कोस्पर्शज्या" + +#~ msgid "Hyperbolic sine" +#~ msgstr "हाइपरबोलिक ज्या" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "हाइपरबोलिक कोज्या" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "हाइपरबोलिक स्पर्शज्या" + +#~ msgid "Hyperbolic secant" +#~ msgstr "हाइपरबोलिक सीकेण्ट" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "हाइपरबोलिक कोसीकेण्ट" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "हाइपरबोलिक कोटिस्पर्शज्या" + +#~ msgid "Arc sine" +#~ msgstr "आर्क ज्या" + +#~ msgid "Arc cosine" +#~ msgstr "आर्क कोज्या" + +#~ msgid "Arc tangent" +#~ msgstr "आर्क स्पर्शज्या" + +#~ msgid "Arc cotangent" +#~ msgstr "आर्क कोटिस्पर्शज्या" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "अतिपरवलय चाप स्पर्शज्या" + +#~ msgid "Summatory" +#~ msgstr "समेटरी" + +#~ msgid "Productory" +#~ msgstr "प्रोडक्टरी" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "सामान्य" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "सूची" + +#~ msgid "Differentiation" +#~ msgstr "अवकलन" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "अतिपरवलय चाप ज्या" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "अतिपरवलय चाप कोज्या" + +#~ msgid "Arc cosecant" +#~ msgstr "चाप कोसीकेण्ट" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "अतिपरवलय चाप कोसीकेण्ट" + +#~ msgid "Arc secant" +#~ msgstr "चाप सीकेण्ट" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "अतिपरवलय चाप सीकेण्ट" + +#~ msgid "Exponent (e^x)" +#~ msgstr "एक्सपोनेंट (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "बेस-e का लघुगणक" + +#~ msgid "Base-10 logarithm" +#~ msgstr "बेस-10 का लघुगणक" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "निरपेक्ष मूल्य. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "फ्लोर मूल्य. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "सील मूल्य. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "न्यूनतम" + +#~ msgid "Maximum" +#~ msgstr "अधिकतम" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "से बड़ा है. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#, fuzzy +#~| msgctxt "Uncorrect function name in function prototype" +#~| msgid "%1(" +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr "," + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "मान" + +#, fuzzy +#~| msgctxt "Function parameter separator" +#~| msgid ", " +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "," + +#, fuzzy +#~| msgid "Calculate the expression" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "एक्सप्रेशन की गणना करें" + +#, fuzzy +#~| msgid "Calculate the expression" +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "एक्सप्रेशन की गणना करें" + +#, fuzzy +#~| msgid "Calculate the expression" +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "एक्सप्रेशन की गणना करें" + +#, fuzzy +#~| msgid "Calculate the expression" +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "एक्सप्रेशन की गणना करें" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "Subtraction" +#~ msgstr "ऋण" + +#, fuzzy +#~| msgid "Error: %1" +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "त्रुटि: %1" + +#~ msgid "Generating... Please wait" +#~ msgstr "बनाया जा रहा है... कृपया इंतजार करें." + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "लॉग सहेजें...(&S)" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "बढ़िया" + +#~ msgid "Mode" +#~ msgstr "मोड" + +#~ msgid "Save the expression" +#~ msgstr "एक्सप्रेशन सहेजें" + +#~ msgid "Calculate the expression" +#~ msgstr "एक्सप्रेशन की गणना करें" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#, fuzzy +#~| msgid "WRONG" +#~ msgid "%1" +#~ msgstr "गलत" + +#~ msgid "From parser:" +#~ msgstr "पारसर से:" + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "अतिपरवलय चाप कोस्पर्शज्या" + +#~ msgid "Real" +#~ msgstr "रीयल" + +#, fuzzy +#~| msgctxt "Function parameter separator" +#~| msgid ", " +#~ msgid "%1, " +#~ msgstr "," + +#~ msgid "Conjugate" +#~ msgstr "कॉन्जुगेट" + +#~ msgid "Imaginary" +#~ msgstr "इमेजिनरी" + +#~ msgctxt "@item:inmenu" +#~ msgid "&New" +#~ msgstr "नया (&N)" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Quit" +#~ msgstr "बाहर जाएँ (&Q)" + +#~ msgid "&Save" +#~ msgstr "सहेजें (&S)" diff --git a/po/hr/kalgebra.po b/po/hr/kalgebra.po new file mode 100644 index 0000000..f24de80 --- /dev/null +++ b/po/hr/kalgebra.po @@ -0,0 +1,945 @@ +# Translation of kalgebra 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: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2010-02-25 21:28+0100\n" +"Last-Translator: Ivo Ugrina \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" +"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: Lokalize 1.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, fuzzy, kde-format +#| msgid "Options" +msgid "Options: %1" +msgstr "Opcije" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, fuzzy, kde-format +#| msgid "
    Error: %1
  • %2
" +msgid "
    Error: %1
  • %2
" +msgstr "
    Pogreška: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, fuzzy, kde-format +#| msgid "
    Error: %1
  • %2
" +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Pogreška: %1
  • %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informacije" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Dodaj/Editiraj funkciju" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Pretpregled" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Za:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcije" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "U redu" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Ukloni '%1'" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Opcije koje ste podesili nisu točne" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Varijable" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "&Calculator" +msgstr "Kalkulator" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "C&alculator" +msgstr "Kalkulator" + +#: kalgebra.cpp:169 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Load Script" +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Učitaj skriptu" + +#: kalgebra.cpp:171 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Save Script" +msgid "Recent Scripts" +msgstr "&Spremi skriptu" + +#: kalgebra.cpp:175 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "&Save Script" +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Spremi skriptu" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, fuzzy, kde-format +#| msgid "A calculator" +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Kalkulator" + +#: kalgebra.cpp:185 +#, fuzzy, kde-format +#| msgctxt "@title:column" +#| msgid "Value" +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Vrijednost" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcije" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Dodaj" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Točka gledišta" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rezolucija" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Siromašno" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normalno" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fino" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Vrlo fino" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Točke" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linije" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Čvrto" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacije" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Rječnik" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Traži: " + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Uređivanje" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Izaberi skriptu" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: kalgebra.cpp:528 +#, fuzzy, kde-format +#| msgid "Text File (*)" +msgid "HTML File (*.html)" +msgstr "Tekstualna datoteka (*)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr "" + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "Pogreška: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|PNG datoteka\n" +"*.svg|SVG datoteka" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Spremno" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Dodaj varijablu" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Unesi ime za novu varijablu" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Kalkulator" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2009 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006–2009 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Dodaj/Uredi varijablu" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Varijable" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Uredi '%1' vrijednost" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nije dostupno" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "Pogrešno" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Lijevo:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Vrh:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Širina:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Visina:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Primijeni" + +#~ msgid "C&onsole" +#~ msgstr "K&onzola" + +#~ msgid "&Console" +#~ msgstr "&Konzola" + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "&Transparency" +#~ msgstr "&Transparentnost" + +#~ msgid "Type" +#~ msgstr "Tip" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG datoteka" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Result: %1" +#~ msgstr "Rezultati: %1" + +#~ msgid "To MathML" +#~ msgstr "U MathML" + +#~ msgid "Simplify" +#~ msgstr "Pojednostavni" + +#, fuzzy +#~| msgctxt "@title:column" +#~| msgid "Example" +#~ msgid "Examples" +#~ msgstr "Primjeri" + +#~ msgid "We can only draw Real results." +#~ msgstr "Jedino se mogu crtati realni rezultati." + +#~ msgid "The expression is not correct" +#~ msgstr "Izraz je netočan" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Očisti" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1…" + +#~ msgid "center" +#~ msgstr "centar" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Ime" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funkcija" + +#~ msgid "Hide '%1'" +#~ msgstr "Sakrij '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Prikaži '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Izabrana točka gledišta je premala" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametri" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Primjeri" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1… parametri, …%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Zbrajanje" + +#~ msgid "Multiplication" +#~ msgstr "Množenje" + +#~ msgid "Division" +#~ msgstr "Dijeljenje" + +#~ msgid "Power" +#~ msgstr "Eksponent" + +#~ msgid "Remainder" +#~ msgstr "Ostatak" + +#~ msgid "Quotient" +#~ msgstr "Kvocijent" + +#~ msgid "The factor of" +#~ msgstr "Faktor od" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Faktorijela. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funkcija za računanje sinusa danog kuta" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funkcija za računanje kosinusa danog kuta" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funkcija za računanje tangensa danog kuta" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinus hiperbolni" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hiperbolički kosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hiperbolički tangens" + +#~ msgid "Arc sine" +#~ msgstr "Arkus sinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arkus kosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arkus tangens" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Normalno" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "Lista" + +#~ msgid "Differentiation" +#~ msgstr "Deriviranje" + +#~ msgid "Base-e logarithm" +#~ msgstr "prirodni logaritam (baza e)" + +#~ msgid "Base-10 logarithm" +#~ msgstr "logaritam s bazom 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Apsolutna vrijednost. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Najveće cijelo (pod). floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Najmanje cijelo (strop). ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum:" + +#~ msgid "Maximum" +#~ msgstr "Maksimum:" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Veći od. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(…, par%2, …)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : granice" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Vrijednost" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Morate specifirati ispravnu operaciju" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Nepoznat identifikator: %1" + +#~ msgid "The result is not a number" +#~ msgstr "Rezultat nije broj" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 treba barem 2 parametra" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 treba %2 parametra" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Nedostaje granica za '%1'" + +#, fuzzy +#~| msgid "Missing boundary for '%1'" +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Nedostaje granica za '%1'" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 nedostaju granice na '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Pogrešna deklaracija" + +#~ msgid "Empty container: %1" +#~ msgstr "Prazan spremnik: %1" + +#~ msgid "We can only declare variables" +#~ msgstr "Deklarirati se mogu samo varijable" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Samo su ograničene varijable dopuštene" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Pogreška pri parsiranju: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Spremnik nepoznat: %1" + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Element '%1' nije operator." + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nepodržan/nepoznat: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Očekivao %1 umjesto '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Nedostaje desna zagrada" + +#, fuzzy +#~| msgid "Cannot calculate the remainder on 0." +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Ne mogu izračunati ostatak na 0." + +#, fuzzy +#~| msgid "Wrong parameter count, had 1 parameter for '%2'" +#~| msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Pogrešan broj parametara. Dobio %1 parametar za '%2'" +#~ msgstr[1] "Pogrešan broj parametara. Dobio %1 parametra za '%2'" +#~ msgstr[2] "Pogrešan broj parametara. Dobio %1 parametara za '%2'" + +#, fuzzy +#~| msgid "Cannot call '%1'" +#~ msgid "Could not call '%1'" +#~ msgstr "Neuspješno pozivanje '%1'" + +#, fuzzy +#~| msgid "Cannot call '%1'" +#~ msgid "Could not solve '%1'" +#~ msgstr "Neuspješno pozivanje '%1'" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Unesi ime za novu varijablu" + +#, fuzzy +#~| msgid "Missing boundary for '%1'" +#~ msgid "Unexpected type" +#~ msgstr "Nedostaje granica za '%1'" + +#, fuzzy +#~| msgid "Cannot convert %1 to %2" +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Ne mogu konvertirati %1 u %2." + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgctxt "html representation of an operator" +#~| msgid "%1" +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Ne mogu izračunati ostatak na 0." + +#~ msgid "Invalid index for a container" +#~ msgstr "Neispravan indeks za spremnik" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Izvršavanje operacija na vektorima različitih duljina nije moguće." + +#, fuzzy +#~| msgid "Cannot calculate the remainder on 0." +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Ne mogu izračunati ostatak na 0." + +#~ msgid "Incorrect domain." +#~ msgstr "Neispravna domena." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Potreban je dvodimenzionalan vektor" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "%1. derivacija nije implementirana" + +#~ msgid "Subtraction" +#~ msgstr "Oduzimanje" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Pogreška: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Izaberite element iz spremnika" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Pogreška: potebne su vrijednosti za nacrtati graf" + +#~ msgid "Generating... Please wait" +#~ msgstr "Generira se… Molim pričekajte" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Pogrešan broj parametara. Dobio %1 parametar za '%2'" +#~ msgstr[1] "Pogrešan broj parametara. Dobio %1 parametra za '%2'" +#~ msgstr[2] "Pogrešan broj parametara. Dobio %1 parametara za '%2'" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Spremi dnevnik" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Fino" + +#~ msgid "We can only call functions" +#~ msgstr "Jedino se funkcije mogu pozivati" + +#~ msgid "Wrong parameter count" +#~ msgstr "Pogrešan broj parametara" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "Wrong parameter count" +#~ msgid "Invalid parameter count." +#~ msgstr "Pogrešan broj parametara" + +#~ msgid "Mode" +#~ msgstr "Način rada" + +#~ msgid "Save the expression" +#~ msgstr "Snimi izraz" + +#~ msgid "Calculate the expression" +#~ msgstr "Izračunaj izraz" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Nije moguće primjeniti '%1'na '%2'." + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Neuspješna provjera tipa '%1'" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Pogrešan broj parametara pri pozivanju '%1'" diff --git a/po/hu/kalgebra.po b/po/hu/kalgebra.po new file mode 100644 index 0000000..0b3ea52 --- /dev/null +++ b/po/hu/kalgebra.po @@ -0,0 +1,508 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Kristóf Kiszel , 2011, 2014. +# Balázs Úr , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2014-09-18 22:40+0200\n" +"Last-Translator: Kristóf Kiszel \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" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Beállítások: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "„%1” beillesztése a bemenetre" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "„%1” beillesztése a bemenetre" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Hiba: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importálva: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Hiba: %1 nem tölthető be.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Információ" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Függvény hozzáadása/szerkesztése" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Előnézet" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Ettől:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Eddig:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Beállítások" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Eltávolítás" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "A megadott beállítás helytelen" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Az alsó korlát nem lehet nagyobb mint a felső korlát" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D-s ábrázolás" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D-s ábrázolás" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Munkamenet" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Változók" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Számolás" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Számolás" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Szkript betö<ése…" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Legutóbbi szkriptek" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Szkript mentése…" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Napló &exportálása…" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Végrehajtó mód" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Számolás" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Kiértékelés" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Függvények" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "Hozzá&adás" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Nézőpont" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-s grafikon" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-s grafikon" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rács" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Az arány &megőrzése" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Felbontás" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Alacsony" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normál" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Magas" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Nagyon magas" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-s grafikon" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3&D-s grafikon" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Alapé&rtelmezett nézet" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pontok" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Vonalak" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Folytonos" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Műveletek" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Szótár" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Keresés:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "Sz&erkesztés" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Válasszon szkriptet" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Szkript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fájl (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Hibák: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Válassza ki, hová kerüljön a renderelt ábra" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Képfájl\n" +"*.svg|SVG-fájl" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Kész" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Változó hozzáadása" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Adja meg az új változó nevét" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Számolóhép" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© Aleix Pol Gonzalez, 2006-2010." + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Kiszel Kristóf,Úr Balázs" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ulysses@kubuntu.org,urbalazs@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Változó hozzáadása/szerkesztése" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Változó eltávolítása" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "„%1” érték szerkesztése" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nem érhető el" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "HIBA" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Balra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Fent:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Szélesség:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Magasság:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Alkalmazás" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document\n" +#~| "*.x3d|X3D Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG fájl\n" +#~ "*.pdf|PDF dokumentum\n" +#~ "*.x3d|X3D dokumentum" + +#~ msgid "C&onsole" +#~ msgstr "K&onzol" + +#~ msgid "&Console" +#~ msgstr "&Konzol" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Szolgáltatás fejlesztése implicit görbék rajzolásához, javításokok a " +#~ "függvényábrázolásban." + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Hiba: rossz függvénytípus" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Kész: %1 ms" + +#~ msgid "Error: %1" +#~ msgstr "Hiba: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Törlés" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-fájl" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1…" + +#~ msgid "&Transparency" +#~ msgstr "Á&tlátszóság" + +#~ msgid "Type" +#~ msgstr "Típus" diff --git a/po/hu/plasma_applet_kalgebraplasmoid.po b/po/hu/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..5a8d959 --- /dev/null +++ b/po/hu/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Kristóf Kiszel , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 16:28+0200\n" +"Last-Translator: Kristóf Kiszel \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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Adjon meg néhány kifejezést." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/it/docs/kalgebra/commands.docbook b/po/it/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..2bd364d --- /dev/null +++ b/po/it/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Comandi supportati da &kalgebra; + plus + Nome: plus + Descrizione: addizione + Parametri: plus(... parametri, ...) + Esempio: x->x+2 + + times + Nome: times + Descrizione: moltiplicazione + Parametri: times(... parametri, ...) + Esempio: x->x*2 + + minus + Nome: minus + Descrizione: sottrazione. Sottrarrà tutti i valori dal primo. + Parametri: minus(... parametri, ...) + Esempio: x->x-2 + + divide + Nome: divide + Descrizione: divisione + Parametri: divide(parametro1, parametro2) + Esempio: x->x/2 + + quotient + Nome: quotient + Descrizione: quoziente + Parametri: quotient(parametro1, parametro2) + Esempio: x->quotient(x, 2) + + power + Nome: power + Descrizione: elevamento a potenza + Parametro: power(parametro1, parametro2) + Esempio: x->x^2 + + root + Nome: root + Descrizione: radice + Parametri: root(parametro1, parametro2) + Esempio: x->root(x, 2) + + factorial + Nome: factorial + Descrizione: fattoriale. factorial(n)=n! + Parametri: factorial(parametro1) + Esempio: x->factorial(x) + + and + Nome: and + Descrizione: AND booleano + Parametro: and(... parametri, ...) + Esempio: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Nome: or + Descrizione: OR booleano + Parametri: or(... parametri, ...) + Esempio: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Nome: xor + Descrizione: XOR booleano + Parametri: xor(... parametri, ...) + Esempio: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Nome: not + Descrizione: NOT booleano + Parametri: not(parametro1) + Esempio: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Nome: gcd + Descrizione: massimo comun divisore (MCD) + Parametri: gcd(... parametri, ...) + Esempio: x->gcd(x, 3) + + lcm + Name: lcm + Descrizione: minimo comune multiplo (MCM) + Parametri: lcm(... parametri, ...) + Esempio: x->lcm(x, 4) + + rem + Nome: rem + Descrizione: resto della divisione + Parametri: rem(parametro1, parametro2) + Esempio: x->rem(x, 5) + + factorof + Nome: factorof + Descrizione: il fattore di + Parametri: factorof(parametro1, parametro2) + Esempio: x->factorof(x, 3) + + max + Nome: max + Descrizione: massimo + Parametri: max(... parametri, ...) + Esempio: x->max(x, 4) + + min + Nome: min + Descrizione: minimo + Parametri: min(... parametri, ...) + Esempio: x->min(x, 4) + + lt + Nome: lt + Descrizione: minore di. lt(a,b)=a<b + Parametri: lt(parametro1, parametro2) + Esempio: x->piecewise { x<4 ? 1, ? 0 } + + gt + Nome: gt + Descrizione: maggiore di. gt(a,b)=a>b + Parametri: gt(parametro1, parametro2) + Esempio: x->piecewise { x>4 ? 1, ? 0 } + + eq + Nome: eq + Descrizione: uguale. eq(a,b) = a=b + Parametri: eq(parametro1, parametro2) + Esempio: x->piecewise { x=4 ? 1, ? 0 } + + neq + Nome: neq + Descrizione: non uguale. neq(a,b) = a≠b + Parametri: neq(parametro1, parametro2) + Esempio: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Nome: leq + Descrizione: minore o uguale. leq(a,b) = a≤b + Parametri: leq(parametro1, parametro2) + Esempio: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Nome: geq + Descrizione: maggiore o uguale. geq(a,b) = a≥b + Parametri: geq(parametro1, parametro2) + Esempio: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Nome: implies + Descrizione: implicazione booleana + Parametri: implies(parametro1, parametro2) + Esempio: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Nome: approx + Descrizione: approssimazione. approx(a) = a≈n + Parametri: approx(parametro1, parametro2) + Esempio: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Nome: abs + Descrizione: valore assoluto. abs(n)=|n| + Parametri: abs(parametro1) + Esempio: x->abs(x) + + floor + Nome: floor + Descrizione: parte intera di un valore. floor(n) = ⌊n⌋ + Parametri: floor(parametro1) + Esempio: x->floor(x) + + ceiling + Nome: ceiling + Descrizione: parte intera superiore di un valore. ceil(n) = ⌈n⌉ + Parametri: ceiling(parametro1) + Esempio: x->ceiling(x) + + sin + Nome: sin + Descrizione: funzione per calcolare il seno di un angolo dato + Parametri: sin(parametro1) + Esempio: x->sin(x) + + cos + Nome: cos + Descrizione: funzione per calcolare il coseno di un angolo dato + Parametri: cos(parametro1) + Esempio: x->cos(x) + + tan + Nome: tan + Descrizione: funzione per calcolare la tangente di un angolo dato + Parametri: tan(parametro1) + Esempio: x->tan(x) + + sec + Nome: sec + Descrizione: secante + Parametri: sec(parametro1) + Esempio: x->sec(x) + + csc + Nome: csc + Descrizione: cosecante + Parametri: csc(parametro1) + Esempio: x->csc(x) + + cot + Nome: cot + Descrizione: cotangente + Parametri: cot(parametro1) + Esempio: x->cot(x) + + sinh + Nome: sinh + Descrizione: seno iperbolico + Parametri: sinh(parametro1) + Esempio: x->sinh(x) + + cosh + Nome: cosh + Descrizione: coseno iperbolico + Parametri: cosh(parametro1) + Esempio: x->cosh(x) + + tanh + Nome: tanh + Descrizione: tangente iperbolica + Parametri: tanh(parametro1) + Esempio: x->tanh(x) + + sech + Nome: sech + Descrizione: secante iperbolica + Parametri: sech(parametro1) + Esempio: x->sech(x) + + csch + Nome: csch + Descrizione: cosecante iperbolica + Parametri: csch(parametro1) + Esempio: x->csch(x) + + coth + Nome: coth + Descrizione: cotangente iperbolica + Parametri: coth(parametro1) + Esempio: x->coth(x) + + arcsin + Nome: arcsin + Descrizione: arcoseno + Parametri: arcsin(parametro1) + Esempio: x->arcsin(x) + + arccos + Nome: arccos + Descrizione: arcocoseno + Parametri: arccos(parametro1) + Esempio: x->arccos(x) + + arctan + Nome: arctan + Descrizione: arcotangente + Parametri: arctan(parametro1) + Esempio: x->arctan(x) + + arccot + Nome: arccot + Descrizione: arcocotangente + Parametri: arccot(parametro1) + Esempio: x->arccot(x) + + arccosh + Nome: arccosh + Descrizione: arcocoseno iperbolico + Parametri: arccosh(parametro1) + Esempio: x->arccosh(x) + + arccsc + Nome: arccsc + Descrizione: arcocosecante + Parametri: arccsc(parametro1) + Esempio: x->arccsc(x) + + arccsch + Nome: arccsch + Descrizione: arcocosecante iperbolica + Parametri: arccsch(parametro1) + Esempio: x->arccsch(x) + + arcsec + Nome: arcsec + Description: arcosecante + Parametri: arcsec(parametro1) + Esempio: x->arcsec(x) + + arcsech + Nome: arcsech + Descrizione: arcosecante iperbolica + Parametri: arcsech(parametro1) + Esempio: x->arcsech(x) + + arcsinh + Nome: arcsinh + Descrizione: arcoseno iperbolico + Parametri: arcsinh(parametro1) + Esempio: x->arcsinh(x) + + arctanh + Nome: arctanh + Descrizione: arcotangente iperbolica + Parametri: arctanh(parametro1) + Esempio: x->arctanh(x) + + exp + Nome: exp + Descrizione: esponenziale (e^x) + Parametri: exp(parametro1) + Esempio: x->exp(x) + + ln + Nome: ln + Descrizione: logaritmo in base e + Parametri: ln(parametro1) + Esempio: x->ln(x) + + log + Nome: log + Descrizione: logaritmo in base 10 + Parametri: log(parametro1) + Esempio: x->log(x) + + conjugate + Nome: conjugate + Descrizione: coniugato + Parametri: conjugate(parametro1) + Esempio: x->conjugate(x*i) + + arg + Nome: arg + Descrizione: arg + Parametri: arg(parametro1) + Esempio: x->arg(x*i) + + real + Nome: real + Descrizione: reale + Parametri: real(parametro1) + Esempio: x->real(x*i) + + imaginary + Nome: imaginary + Descrizione: immaginario + Parametri: imaginary(parametro1) + Esempio: x->imaginary(x*i) + + sum + Nome: sum + Descrizione: sommatoria + Parametri: sum(parametro1 : variabile=da..a) + Esempio: x->x*sum(t*t:t=0..3) + + product + Nome: product + Descrizione: produttoria + Parametri: product(parametro1 : variabile=da..a) + Esempio: x->product(t+t:t=1..3) + + diff + Nome: diff + Descrizione: differenziale + Parametri: diff(parametro1 : variabile) + Esempio: x->(diff(x^2:x))(x) + + card + Nome: card + Descrizione: numero cardinale + Parametri: card(parametro1) + Esempio: x->card(vector { x, 1, 2 }) + + scalarproduct + Nome: scalarproduct + Descrizione: prodotto scalare + Parametri: scalarproduct(... parametri, ...) + Esempio: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nome: selector + Descrizione: sceglie il parametro1-esimo elemento dalla lista o vettore parametro2 + Parametri: selector(parametro1, parametro2) + Esempio: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Nome: union + Descrizione: unisce diversi elementi aventi lo stesso tipo + Parametri: union(... parametri, ...) + Esempio: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Nome: forall + Descrizione: per tutti + Parametri: forall(parametro1 : variabile) + Esempio: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Nome: exists + Descrizione: esiste + Parametri: esiste(parametro1 : variabile) + Esempio: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nome: map + Descrizione: applica una funzione a ciascun elemento in una lista + Parametri: map(parametro1, parametro2) + Esempio: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Nome: filter + Descrizione: rimuove tutti gli elementi che non soddisfano una condizione + Parametri: filter(parametro1, parametro2) + Esempio: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Nome: transpose + Descrizione: matrice trasposta + Parametri: transpose(parametro1) + Esempio: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/it/docs/kalgebra/index.docbook b/po/it/docs/kalgebra/index.docbook new file mode 100644 index 0000000..74406bf --- /dev/null +++ b/po/it/docs/kalgebra/index.docbook @@ -0,0 +1,710 @@ + + + + + + +]> + + + + +Manuale di &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+PinoToscano
toscano.pino@tiscali.it
Traduzione italiana
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Applications 16.04) + + +&kalgebra; è un'applicazione che può sostituire la tua calcolatrice grafica. Ha funzionalità numeriche, logiche, simboliche e di analisi che ti permettono di calcolare espressioni matematiche e di visualizzarne graficamente i risultati in 2D e 3D. &kalgebra; si basa sul linguaggio a marcatori di matematica («Mathematical Markup Language», MathML); tuttavia, non è necessario conoscere MathML per usare &kalgebra;. + + + +KDE +kdeedu +grafico +matematica +2D +3D +mathML + + +
+ + +Introduzione + +&kalgebra; ha numerose funzioni che permettono all'utente di effettuare tutti i tipi di operazioni matematiche e di visualizzarle graficamente. Una volta, questo programma era orientato su MathML. Adesso può essere usato da chiunque con un minimo di conoscenza di matematica per risolvere problemi semplici e complessi. + +Include funzioni quali: + + + +Una calcolatrice per la valutazione semplice e veloce di funzioni matematiche. +Possibilità di usare script per calcoli avanzati +Funzionalità del linguaggio che includono la definizione di funzioni e il completamento automatico della sintassi +Funzioni per l'analisi che includono la differenziazione simbolica, il calcolo vettoriale e la manipolazione di liste. +Grafico di funzioni con cursore mobile per la ricerca grafica delle radici e altri tipi di analisi. +Grafico 3D per l'utile visualizzazione di funzioni 3D. +Un dizionario integrato degli operatori per un aiuto veloce sulle numerose funzioni disponibili. + + +Qui sotto vi è un'immagine di &kalgebra; in azione: + + +Immagine della finestra principale di &kalgebra; + + + + + + Finestra principale di &kalgebra; + + + + +Quando un utente inizia una sessione di &kalgebra;, viene presentata una finestra composta da una scheda Calcolatrice, una scheda Grafico 2D, una scheda Grafico 3D e una scheda Dizionario. Sotto ciascuna scheda si trovano un campo di inserimento per scrivere le funzioni o fare calcoli e un campo che mostra i risultati. + +In ogni momento l'utente può gestire le sue sessioni usando le opzioni del menu Sessione: + + + + +&Ctrl; N SessioneNuova +Apre una nuova finestra di &kalgebra;. + + + +&Ctrl;&Shift; F SessioneModalità a tutto schermo +Attiva o disattiva la modalità a tutto schermo della finestra di &kalgebra;. La modalità a tutto schermo può essere attivata e disattivata anche usando il pulsante che si trova a destra nella parte alta della finestra di &kalgebra;. + + + +&Ctrl; Q SessioneEsci +Chiude il programma. + + + + + + + +Sintassi +&kalgebra; usa una sintassi algebrica intuitiva per l'inserimento delle funzioni dell'utente, in modo simile a quanto viene fatto nella maggior parte delle moderne calcolatrici grafiche. Questa sezione elenca gli operatori fondamentali forniti in &kalgebra;. L'autore di &kalgebra; ha modellato questa sintassi seguendo Maxima e maple, per gli utenti che possono avere familiarità con questi programmi. + +Per gli utenti interessati al funzionamento interno di &kalgebra;, le espressioni inserite dall'utente sono convertite in MathML nel backend interno. Una conoscenza basilare delle possibilità di MathML permetterà di comprendere meglio le funzionalità interne di &kalgebra;. + +Ecco una lista degli operatori disponibili al momento: + ++ - * / : addizione, sottrazione, moltiplicazione e divisione. +^, ** : elevamento a potenza, puoi usare entrambi. È anche possibile usare il carattere Unicode «²». Con gli elevamenti a potenza è anche possibile effettuare radici, ad esempio: a**(1/b) +> : lambda. È il modo di specificare una o più variabili che saranno vincolate in una funzione. Ad esempio, nell'espressione length:=(x,y)->(x*x+y*y)^0.5, l'operatore lambda è usato per denotare che x e y saranno vincolate quando la funzione length è usata. +x=a..b : usato per delimitare un intervallo (variabile limitata + limite superiore + limitare inferiore). Ciò significa che x va da a fino a b. +() : usato per specificare una priorità più alta. +abc(parametri) : funzioni. Quando l'analizzatore trova una funzione, controlla se «abc» è un operatore. Se lo è, sarà trattato come un operatore; se non lo è, sarà trattato come una funzione utente. +:= : definizione. Usata per definire il valore di una variabile. Puoi far cose come x:=3, x:=y con y definita o no, oppure perimetro:=r->2*pi*r. +s? : Definizione di condizione definita a tratti. Una definizione "a tratti" è il modo in cui possiamo definire operazioni condizionali in &kalgebra;. Per dirla anche in altri termini, questo è un modo di definire una condizione «if, elseif, else». Se introduciamo la condizione prima del «?», questa condizione sarà usata solo se è vera; se viene trovato un «?» senza condizione, verrà usato come ultima alternativa. Esempio: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ }: contenitore MathML. Può essere usato per definire un contenitore. Utile principalmente per le funzioni definite a tratti. += > >= < <= : comparatori di valori per rispettivamente: uguale, maggiore di, maggiore o uguale a, minore di, minore o uguale a + + +Adesso potresti chiedermi: perché l'utente dovrebbe conoscere MathML? Semplice: con il MathML possiamo operare con funzioni come cos(), sin() (e qualsiasi altra funzione trigonometrica), sum() o product(). Non importa che tipo di funzione sia. Possiamo usare plus(), times() e qualunque cosa che ha un operatore. Sono implementate anche le funzioni booleane, così possiamo usare ⪚ «or(1,0,0,0,0)». + + + + +Uso della calcolatrice +La calcolatrice di &kalgebra; è utile come calcolatrice potenziata. L'utente può inserire espressioni da valutare in modalità Calcola o Vàluta, a seconda della scelta del menu Calcolatrice. +In modalità di valutazione &kalgebra; semplifica l'espressione anche se c'è una variabile non definita. In modalità di calcolo &kalgebra; calcola tutto, mostrando un errore se trova una variabile non definita. +Oltre alla visualizzazione nella calcolatrice delle equazioni inserite dall'utente e dei risultati, tutte le variabili che vengono dichiarate sono visualizzate in un pannello fisso a destra. Facendo doppio clic su una variabile vedrai una finestra di dialogo per ti permette di modificarne il valore (un modo per truccare il log). + +La variabile «ans» è speciale: ogni volta che inserisci un'espressione, questa variabile assumerà il valore dell'ultimo risultato. + +Di seguito vi sono funzioni d'esempio che possono essere inserite nel campo di inserimento della finestra della calcolatrice. + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Di seguito vi è un'immagine della finestra della calcolatrice dopo aver inserito le espressioni d'esempio elencate sopra: + +Immagine della finestra della calcolatrice di &kalgebra; con le espressioni d'esempio + + + + + + Finestra della calcolatrice di &kalgebra; + + + + + +Un utente può controllare l'esecuzione di una serie di calcoli usando le opzioni del menu Calcolatrice: + + + + +&Ctrl; L CalcolatriceCarica script +Esegue le istruzioni presenti in un file. Un metodo utile per creare "librerie" o riprendere un lavoro interrotto in precedenza. + + + +&Ctrl; G CalcolatriceSalva script +Salva le istruzioni eseguite dall'inizio della sessione in modo da poterle riusare. Genera file di testo semplice, quindi è possibile modificarli usando un qualsiasi editor di testo (come Kate). + + + +&Ctrl; S CalcolatriceEsporta log +Salva il log e tutti i risultati su file &HTML; che può essere stampato o pubblicato. + + + + + + + +Grafici 2D +Per aggiungere un nuovo grafico 2D in &kalgebra;, seleziona la scheda Grafico 2D e fare clic sulla scheda Aggiungi per aggiungere una nuova funzione. Sarà quindi attivata la casella di testo dove puoi scrivere la funzione. + + +Sintassi +Se vuoi usare una tipica funzione f(x) non è necessario specificarla, ma se vuoi usare una funzione f(y) oppure polare, devi aggiungere y-> e q-> come variabili vincolate. + +Esempi: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Quando hai inserito la funzione premi OK per visualizzare il grafico nella finestra principale. + + + + +Funzioni +Puoi avere più grafici nella stessa vista. Usa il pulsante Aggiungi in modalità «lista». Puoi impostare un diverso colore per ogni grafico. + +La vista può essere ingrandita e spostata con il mouse. Puoi ingrandire e rimpicciolire usando la rotellina del mouse. Puoi anche selezionare un'area con il &LMB; e quest'area sarà ingrandita. Puoi muovere la vista con i tasti freccia. + + + L'area di visualizzazione di grafici 2D può essere definita in modo esplicito usando la scheda Area di visualizzazione nella scheda Grafico 2D. + + +Nella scheda Lista puoi aprire una scheda Modifica per modificare o rimuovere una funzione con un doppio clic, oppure marcare o disattivare la casella accanto al nome della funzione per mostrarla o nasconderla. +Nel menu Grafico 2D trovi queste opzioni: + +Mostra o nascondi la griglia +Mantieni le proporzioni quando ingrandisci o riduci +Ingrandisci (&Ctrl; +) e riduci (&Ctrl; -) +Salva (&Ctrl; S) il grafico come immagine +Ripristina la vista all'ingrandimento originale +Scegli una risoluzione per i grafici + + +Sotto vi è l'immagine di un utente il cui cursore è alla radice più a destra della funzione, sin(1/x). L'utente che ne ha creato il grafico ha usato una risoluzione molto stretta (dato che oscilla a frequenze sempre più alte man mano che si avvicina all'origine). C'è anche un cursore mobile che, ogni volta che sposti il cursore sopra un punto, mostra i valori X e Y nell'angolo in basso a sinistra dello schermo. Una linea mobile di tangente è disegnata sulla funzione alla posizione del cursore mobile. + + +Immagine della finestra del grafico 2D di &kalgebra; + + + + + + Finestra del grafico 2D di &kalgebra; + + + + + + + + + + +Grafici 3D + +Per disegnare un grafico 3D con &kalgebra;, seleziona la scheda Grafico 3D: lì vedrai una casella di inserimento in basso, dove puoi scrivere la funzione. Z non può essere definita ancora, al momento &kalgebra; supporta solo grafici 3D che dipendono esplicitamente solo da x e y, come (x,y)->x*y, dove z=x*y. + +Esempi: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +La vista può essere ingrandita e spostata con il mouse. Puoi ingrandire e rimpicciolire usando la rotellina del mouse. Tieni premuto il &LMB; e muovi il mouse per ruotare il grafico. + + I tasti freccia «Sinistra» e «Destra» ruotano il grafico attorno all'asse Z, i tasti freccia «Su» e «Giù» ruotano attorno all'asse orizzontale della vista. Premi W per ingrandire il grafico e S per ridurlo. + +Nel menu Grafico 3D trovi queste opzioni: + + +Salva (&Ctrl; S) il grafico come immagine +Ripristina la vista all'ingrandimento originale nel menu «Grafico 3D» +Disegna i grafici usando punti, linee o un colore di riempimento nel menu «Grafico 3D» + + +Sotto vediamo un'immagine della funzione chiamata "sombrero". Questo grafico 3D particolare è visualizzato usando lo stile a linee. + + +Immagine della finestra del grafico 3D di &kalgebra; + + + + + + Finestra del grafico 3D di &kalgebra; + + + + + + + +Dizionario + +Il dizionario è una collezione di tutte le funzioni integrate in &kalgebra;. Può essere utile per trovare la definizione di un'operazione e i suoi parametri, e in generale per scoprire le molte funzionalità di &kalgebra;. + + Sotto vi è un'immagine della ricerca della funzione coseno nel dizionario di &kalgebra; + + +Immagine della finestra del dizionario di &kalgebra; + + + + + + Finestra del dizionario di &kalgebra; + + + + + + + +&commands; + + +Riconoscimenti e licenza + + +Copyright del programma 2005-2009 &Aleix.Pol; + + + +Copyright della documentazione 2007 &Aleix.Pol; &Aleix.Pol.mail; + +Traduzione italiana di Pino Toscano toscano.pino@tiscali.it &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/it/kalgebra.po b/po/it/kalgebra.po new file mode 100644 index 0000000..6149cf0 --- /dev/null +++ b/po/it/kalgebra.po @@ -0,0 +1,1131 @@ +# translation of kalgebra.po to Italian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the kalgebra package. +# Pino Toscano , 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-07-06 09:27+0100\n" +"Last-Translator: Pino Toscano \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 2.0\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opzioni: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Incolla «%1» per inserirlo" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Incolla per inserirlo" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Errore: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importato: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Errore: impossibile caricare %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informazioni" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Aggiungi/modifica una funzione" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Anteprima" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Da:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "A:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opzioni" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Rimuovi" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Le opzioni specificate non sono corrette" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Il limite inferiore non può essere più grande del limite superiore" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Grafico 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Grafico 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessione" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabili" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calcolatrice" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alcolatrice" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Carica script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Script recenti" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Salva script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Esporta log..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Inserisci ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Modalità di esecuzione" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcola" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Vàluta" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funzioni" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Aggiungi" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Area di visualizzazione" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Grafico &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Grafico 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Griglia" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Mantieni proporzioni" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Risoluzione" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Scarsa" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normale" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Buona" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Molto buona" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Grafico &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Grafico 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Ripristina vista" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punti" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linee" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Pieno" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operazioni" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dizionario" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Cerca:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Modifica" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Scegli uno script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "File HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Errori: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Scegli dove salvare il grafico generato" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Immagine (*.png);;File SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pronto" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Aggiungi variabile" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Scrivi un nome per la nuova variabile" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Una calcolatrice portabile" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Pino Toscano" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "toscano.pino@tiscali.it" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Aggiungi/modifica una variabile" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Rimuovi variabile" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Modifica il valore '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "non disponibile" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ERRATO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Sinistra:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Alto:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Larghezza:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altezza:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Applica" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "File PNG (*.png);;Documento PDF (*.pdf);;Documento X3D (*.x3d);;Documento " +#~ "STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsole" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Console" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Ha sviluppato il disegno delle curve implicite, e migliorato il grafico " +#~ "delle funzioni." + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Cancella" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Errore: tipo errato di funzione" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Fatto: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Errore: %1" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|File PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Trasparenza" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Result: %1" +#~ msgstr "Risultato: %1" + +#~ msgid "To Expression" +#~ msgstr "In espressione" + +#~ msgid "To MathML" +#~ msgstr "In MathML" + +#~ msgid "Simplify" +#~ msgstr "Semplifica" + +#~ msgid "Examples" +#~ msgstr "Esempi" + +#~ msgid "We can only draw Real results." +#~ msgstr "Possiamo disegnare solo risultati reali." + +#~ msgid "Function type not recognized" +#~ msgstr "Tipo di funzione non riconosciuto" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Tipo di funzione non corretto per funzioni che dipendono da %1" + +#~ msgid "The expression is not correct" +#~ msgstr "L'espressione non è corretta" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Funzione implicita non definita nel piano" + +#~ msgid "center" +#~ msgstr "centro" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funzione" + +#~ msgid "%1 function added" +#~ msgstr "funzione %1 aggiunta" + +#~ msgid "Hide '%1'" +#~ msgstr "Nascondi '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Mostra '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "L'area di visualizzazione è troppo piccola" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Descrizione" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametri" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Esempio" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=da..a" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametri, ...%2)" + +#~ msgid "par%1" +#~ msgstr "parametro%1" + +#~ msgid "Addition" +#~ msgstr "Addizione" + +#~ msgid "Multiplication" +#~ msgstr "Moltiplicazione" + +#~ msgid "Division" +#~ msgstr "Divisione" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Sottrazione. Sottrarrà tutti i valori dal primo." + +#~ msgid "Power" +#~ msgstr "Potenza" + +#~ msgid "Remainder" +#~ msgstr "Resto" + +#~ msgid "Quotient" +#~ msgstr "Quoziente" + +#~ msgid "The factor of" +#~ msgstr "Il fattore di" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Fattoriale. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funzione per calcolare il seno dell'angolo dato" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funzione per calcolare il coseno dell'angolo dato" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funzione per calcolare la tangente dell'angolo dato" + +#~ msgid "Secant" +#~ msgstr "Secante" + +#~ msgid "Cosecant" +#~ msgstr "Cosecante" + +#~ msgid "Cotangent" +#~ msgstr "Cotangente" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Seno iperbolico" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Coseno iperbolico" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangente iperbolica" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Secante iperbolica" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Cosecante iperbolica" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Cotangente iperbolica" + +#~ msgid "Arc sine" +#~ msgstr "Arcoseno" + +#~ msgid "Arc cosine" +#~ msgstr "Arcocoseno" + +#~ msgid "Arc tangent" +#~ msgstr "Arcotangente" + +#~ msgid "Arc cotangent" +#~ msgstr "Arcocotangente" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Arcotangente iperbolica" + +#~ msgid "Summatory" +#~ msgstr "Sommatoria" + +#~ msgid "Productory" +#~ msgstr "Produttoria" + +#~ msgid "For all" +#~ msgstr "Per tutti" + +#~ msgid "Exists" +#~ msgstr "Esiste" + +#~ msgid "Differentiation" +#~ msgstr "Differenziale" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Arcoseno iperbolico" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Arcocoseno iperbolico" + +#~ msgid "Arc cosecant" +#~ msgstr "Arcocosecante" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Arcocosecante iperbolica" + +#~ msgid "Arc secant" +#~ msgstr "Arcosecante" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Arcosecante iperbolica" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Esponenziale (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logaritmo in base e" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logaritmo in base 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Valore assoluto. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Parte intera. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Parte intera superiore. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimo" + +#~ msgid "Maximum" +#~ msgstr "Massimo" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Maggiore di. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : vincoli" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Valore" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Deve essere specificata un'operazione corretta." + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Identificatore sconosciuto: «%1»" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Impossibile trovare una scelta opportuna per la condizione." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Il tipo non può essere vincolato." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Il limite inferiore è più grande del limite superiore" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Limite superiore o inferiore non corretto." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Definita una varibile ciclica" + +#~ msgid "The result is not a number" +#~ msgstr "Il risultato non è un numero" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Dati inattesi trovati alla fine dei dati letti" + +#~ msgid "Unknown token %1" +#~ msgstr "Token «%1» sconosciuto" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "Sono necessari almeno 2 parametri per %1" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "Sono necessari almeno %2 parametri per %1" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Vincolo di «%1» mancante" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Vincolo non atteso per «%1»" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 vincoli mancanti per «%2»" + +#~ msgid "Wrong declare" +#~ msgstr "«declare» errata" + +#~ msgid "Empty container: %1" +#~ msgstr "Contenitore vuoto: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Ci possono essere solo condizioni nelle definizioni a tratti." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Non è possibile avere due parametri con lo stesso nome, come «%1»." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Il parametro per otherwise dovrebbe essere l'ultimo" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "«%1» non è una condizione corretta nella definizione a tratti" + +#~ msgid "We can only declare variables" +#~ msgstr "Possiamo solo dichiarare variabili" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Possiamo solo avere variabili vincolate" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Errore durante l'analisi: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Contenitore sconosciuto: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Impossibile codificare il valore %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "L'operatore «%1» non può avere contesti figli." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "L'elemento «%1» non è un operatore." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Non è possibile avere vettori vuoti" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Non supportato o sconosciuto: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Era atteso «%1» invece di «%2»" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Parentesi chiusa mancante" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Parentesi chiuse non bilanciate" + +#~ msgid "Unexpected token %1" +#~ msgstr "Token «%1» non atteso" + +#~ msgid "The domain should be either a vector or a list." +#~ msgstr "Il dominio dovrebbe essere un vettore o una lista." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Numero errato di parametri di «%2». Dovrebbe avere 1 parametro." +#~ msgstr[1] "Numero errato di parametri di «%2». Dovrebbe avere %1 parametri." + +#~ msgid "Could not call '%1'" +#~ msgstr "Impossibile chiamare «%1»" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Impossibile risolvere «%1»" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Non è possibile determinare il tipo della definizione a tratti" + +#~ msgid "Unexpected type" +#~ msgstr "Tipo non atteso" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Non è stato possibile convertire «%1» in «%2»." + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Token «%1» sconosciuto" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Impossibile calcolare il resto rispetto a 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Impossibile calcolare il fattore rispetto a 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Impossibile calcolare il MCM di 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Impossibile calcolare un valore %1" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Non è stato possibile ridurre «%1» e «%2»." + +#~ msgid "Invalid index for a container" +#~ msgstr "Indice non valido per un contenitore" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Impossibile operare su vettori di dimensione differente." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Impossibile calcolare l'operazione %1 di un vettore" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Impossibile calcolare l'operazione %1 di una lista" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Impossibile calcolare la derivata di «%1»" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Tipo incoerente per la variabile «%1»" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "La funzione parametrica non restituisce un vettore" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "È richiesto un vettore a due dimensioni" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "I parametri della funzione dovrebbero essere scalari" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "La derivata di %1 non è stata implementata." + +#~ msgid "Incorrect domain." +#~ msgstr "Dominio non corretto." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Valore reale non valido: %1" + +#~ msgid "Subtraction" +#~ msgstr "Sottrazione" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Errore: %2" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Errore: sono richiesti valori per disegnare un grafico" + +#~ msgid "Select an element from a container" +#~ msgstr "Seleziona un elemento da un contenitore" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Non è possibile avere un limite inferiore ≥ limite superiore" + +#~ msgid "Generating... Please wait" +#~ msgstr "Generazione... Attendere" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "Salva &log" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Save the expression" +#~ msgstr "Salva l'espressione" + +#~ msgid "Calculate the expression" +#~ msgstr "Calcola l'espressione" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "We can only call functions" +#~ msgstr "Possiamo chiamare solo funzioni" + +#~ msgid "Wrong parameter count" +#~ msgstr "Numero errato di parametri" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Variabile vincolata sconosciuta: %1" + +#~ msgid "Need a var name and a value" +#~ msgstr "Sono necessari un nome di variabile ed un valore" + +#~ msgid "The function %1 does not exist" +#~ msgstr "La funzione %1 non esiste" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "La variabile %1 non esiste" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Numero errato di parametri in un selettore, che dovrebbe avere 2 " +#~ "parametri, l'indice selezionato e il contenitore" + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "«piece» o «otherwise» nel posto sbagliato" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Nessuna variabile vincolata per questa somma" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Limiti vincolati mancanti per un'operazione di somma" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "Possiamo selezionare il valore di un contenitore solo con il suo indice " +#~ "intero" + +#~ msgid "Trying to call an empty or invalid function" +#~ msgstr "Chiamata di funzione vuota o invalida" + +#~ msgid "From parser:" +#~ msgstr "Dall'analizzatore:" + +#~ msgctxt "" +#~ "%1 the operation name, %2 and %3 is the opearation we wanted to calculate" +#~ msgid "Cannot calculate the %1(%2, %3)" +#~ msgstr "Impossibile calcolare %1(%2, %3)" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Stai provando a codificare un valore sconosciuto: %1" + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Arcocotangente iperbolica" + +#~ msgid "Real" +#~ msgstr "Reale" + +#~ msgid "Conjugate" +#~ msgstr "Coniugata" + +#~ msgid "Imaginary" +#~ msgstr "Immaginario" diff --git a/po/it/kalgebramobile.po b/po/it/kalgebramobile.po new file mode 100644 index 0000000..49a30c4 --- /dev/null +++ b/po/it/kalgebramobile.po @@ -0,0 +1,192 @@ +# translation of kalgebramobile.po to Italian +# This file is distributed under the same license as the kalgebra package. +# Pino Toscano , 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-07-06 09:33+0100\n" +"Last-Translator: Pino Toscano \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 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Una calcolatrice portabile" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Pino Toscano" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "toscano.pino@tiscali.it" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Una semplice calcolatrice scientifica" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Carica script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Salva script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Esporta log..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Vàluta..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcola..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Cancella log" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copia \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Grafico 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Grafico 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Salva..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Mostra griglia" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Ripristina area di visualizzazione" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Cancella tutto" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Errori: il passo non può essere 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Errori: l'inizio e la fine sono gli stessi" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Errori: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Ingresso:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Da:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "A:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Passo:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Esegui" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Risultati:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Espressione da calcolare..." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Se vuoi sapere di più su KAlgebra, puoi trovare ulteriori informazioni nel sito " +#~ "ufficiale e nel wiki per " +#~ "gli utenti.
Nel caso di problemi con il software, segnalali nel " +#~ "nostro sistema di segnalazione bug." + +#~ msgid "Results" +#~ msgstr "Risultati" diff --git a/po/it/plasma_applet_kalgebraplasmoid.po b/po/it/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..bc6a4a3 --- /dev/null +++ b/po/it/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# translation of plasma_applet_kalgebra.po to Italian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Pino Toscano , 2010. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-05-30 18:54+0200\n" +"Last-Translator: Pino Toscano \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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Inserisci un'espressione." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ja/kalgebra.po b/po/ja/kalgebra.po new file mode 100644 index 0000000..b992a25 --- /dev/null +++ b/po/ja/kalgebra.po @@ -0,0 +1,445 @@ +# Translation of kalgebra into Japanese. +# This file is distributed under the same license as the kdeedu package. +# Yukiko Bando , 2007, 2008, 2009. +# Fumiaki Okushi , 2007, 2011, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2014-09-21 00:27-0700\n" +"Last-Translator: Fumiaki Okushi \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-Generator: KBabel 1.11.4\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "オプション: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    エラー: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "" +"
    エラー: %1 を読み込むことができません。
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "情報" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "関数を追加/編集" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "オプション" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "削除" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "セッション" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "変数" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "計算" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "計算" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "スクリプトを読み込み(&L)..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "最近のスクリプト" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "スクリプトを保存(&S)..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "計算" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "評価" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "関数" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "リスト" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "追加(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "2D グラフ(&2)" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2D グラフ(&D)" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "グリッド(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "アスペクト比を保つ(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "解像度" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "低" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "中" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "高" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "超高" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "3D グラフ(&3)" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D グラフ(&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "ビューをリセット(&R)" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "点" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "線" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "実線" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "演算" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "辞書(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "検索:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "編集(&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "スクリプトを選択" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "スクリプト (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML ファイル (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "エラー: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|画像ファイル\n" +"*.svg|SVG ファイル" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "準備完了" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "変数を追加" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "新しい変数の名前を入力します" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Yukiko Bando" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ybando@k6.dion.ne.jp" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "変数を追加/編集" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "変数を削除" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' の値を編集" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ありません" + +# |,no-bad-patterns +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "不正" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "" diff --git a/po/ja/kalgebramobile.po b/po/ja/kalgebramobile.po new file mode 100644 index 0000000..3645c71 --- /dev/null +++ b/po/ja/kalgebramobile.po @@ -0,0 +1,172 @@ +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2018-08-01 23:02-0700\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" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "" diff --git a/po/ja/plasma_applet_kalgebraplasmoid.po b/po/ja/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..73f5267 --- /dev/null +++ b/po/ja/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,30 @@ +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-03-17 21:20+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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "" diff --git a/po/kk/kalgebra.po b/po/kk/kalgebra.po new file mode 100644 index 0000000..545470c --- /dev/null +++ b/po/kk/kalgebra.po @@ -0,0 +1,1032 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2013-09-14 04:31+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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Амалдар: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "\"%1\" шығысына орналастырылмады" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "\"%1\" шығысына орналастырылмады" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Қате: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Импортталғаны: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Қате: %1 деген жүктелмеді.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Мәлімет" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Функцияны қосу/өзгерту" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Қарау" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Мынадан:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Мынаған дейін:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Параметрлері" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ОК" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Өшіру" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Келтірілген параметрлері дұрыс емес" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Төменгі шегі жоғарғыдан асуға тиіс емес" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2 өлшемді график" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3 өлшемді график" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Сеанс" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Айнымалылары" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Есептеу" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Есептеу" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Скриптті &жүктеу..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Жуырдағы скрипттер" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Скриптті &сақтау..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Журналды э&кспорттау..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Орындау режімі" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Есептеу" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Бағалау" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Функциялар" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Тізім" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr " Қ&осу" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Қарау терезесі" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&Екі өлшемді график" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Е&кі өлшемді график" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Тор" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Ара қатынасын &сақтау" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Айырымдылығы" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Шамалы" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Орташа" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Айқын" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Ап-айқын" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&Үш өлшемді график" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "Ү&ш өлшемді график" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Ысырып тастау" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Нүктелі" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Үзінді" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Сызықты" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Амалдар" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Сөздік" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Іздейтіні:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Өңдеу" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Скриптті таңдау" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Скрипт (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML файлы (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Қателер: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Кескін файлы\n" +"*.svg|Сызба файлы" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Дайын" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Айнымалыны қосу" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Жаңа айнымалының атауын келтіру" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Калькулятор" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Сайран Киккарин" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sairan@computer.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Айнымалыны қосу/өзгерту" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Айнымалыны өшіру" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' мәнің өзгерту" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "жоқ" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr " %1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ҚАТЕ" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Сол жағы:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Жоғары жағы:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Ені:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Биіктігі:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Іске асыру" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG файлы\n" +#~ "*.pdf|PDF құжаты" + +#~ msgid "C&onsole" +#~ msgstr "К&онсоль" + +#~ msgid "&Console" +#~ msgstr "&Консоль" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Айқындалмаған түрде берілген функцияларды салу мүмкіндігін қосқан. " +#~ "Функцияларды сызуын жетілдіріткен." + +#~ msgid "Formula" +#~ msgstr " Формула" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Қате: Функциясы дұрыс емес" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Дайын: %1" + +#~ msgid "Error: %1" +#~ msgstr "Қате: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Тазалау" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG файлы" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Мөлдірлігі" + +#~ msgid "Type" +#~ msgstr "Түрі" + +#~ msgid "Result: %1" +#~ msgstr "Нәтижесі: %1" + +#~ msgid "To Expression" +#~ msgstr "Өрнекке" + +#~ msgid "To MathML" +#~ msgstr "MathML-ге" + +#~ msgid "Simplify" +#~ msgstr "Ықшамдату" + +#~ msgid "Examples" +#~ msgstr "Мысалдар" + +#~ msgid "We can only draw Real results." +#~ msgstr "Тек нақты (real) бөлігін сала аламыз. " + +#~ msgid "The expression is not correct" +#~ msgstr "Өрнегі дұрыс емес" + +#~ msgid "Function type not recognized" +#~ msgstr "Функцияның түрі түсініксіз" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "%1 дегеннен тәуелді функция үшін оның түрі дұрыс емес" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Айқындалмаған функция бұл жазықтыта анықталмаған" + +#~ msgid "center" +#~ msgstr "ортасы" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Атауы" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Функция" + +#~ msgid "%1 function added" +#~ msgstr "%1 функциясы қосылды" + +#~ msgid "Hide '%1'" +#~ msgstr "'%1' дегенді жасыру" + +#~ msgid "Show '%1'" +#~ msgstr "'%1' дегенді көрсету" + +#~ msgid "Selected viewport too small" +#~ msgstr "Қарау терезесі тым тар" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Түсініктеме" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Параметрлер" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Мысал" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=мынадан..мынаған дейін" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... параметpлері, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Қосу" + +#~ msgid "Multiplication" +#~ msgstr "Көбейту" + +#~ msgid "Division" +#~ msgstr "Бөлу" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Азайту. Мәндерін біріншісінен алынып тасталады." + +#~ msgid "Power" +#~ msgstr "Дәреже" + +#~ msgid "Remainder" +#~ msgstr "Қалдық" + +#~ msgid "Quotient" +#~ msgstr "Бөлінді" + +#~ msgid "The factor of" +#~ msgstr "Келесінің көбейткіші" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Факториал, factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Синус" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Косинус" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Тангенс" + +#~ msgid "Secant" +#~ msgstr "Секанс" + +#~ msgid "Cosecant" +#~ msgstr "Косеканс" + +#~ msgid "Cotangent" +#~ msgstr "Котангенс" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Гиперболалық синус" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Гиперболалық косинус" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Гиперболалық тангенс" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Гиперболалық секанс" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Гиперболалық косеканс" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Гиперболалық котангенс" + +#~ msgid "Arc sine" +#~ msgstr "Арксинус" + +#~ msgid "Arc cosine" +#~ msgstr "Арксосинус" + +#~ msgid "Arc tangent" +#~ msgstr "Арктангенс" + +#~ msgid "Arc cotangent" +#~ msgstr "Арккотангенс" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Гиперболалық арктангенс" + +#~ msgid "Summatory" +#~ msgstr "Қосындыны санауыш" + +#~ msgid "Productory" +#~ msgstr "Көбейткіш" + +#~ msgid "For all" +#~ msgstr "Бүкілдеріне" + +#~ msgid "Exists" +#~ msgstr "Бар" + +#~ msgid "Differentiation" +#~ msgstr "Дифференциалдау" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Гиперболалық арксинус" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Гиперболалық арккосинус" + +#~ msgid "Arc cosecant" +#~ msgstr "Арккосеканс" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Гиперболалық арккосеканс" + +#~ msgid "Arc secant" +#~ msgstr "Арксеканс" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Гиперболалық арксеканс" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Экспонента (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Натурал логарифм" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Ондық логарифм" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Модулі, abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Ең жақын кішірек бүтін саны, floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Ең жақын үлкенрек бүтін саны, ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Минимумы" + +#~ msgid "Maximum" +#~ msgstr "Максимумы" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Келесіден артық, gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : шегі" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Мәні" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Дұрыс амалды келтіру керек" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr " ', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Беймәлім идентификатор: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Шартқа келетіні табылмады." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Шек үшін қолданбайтын түрі" + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Төменгі шегі жоғарғыдан асып тұр" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Төменгі не жоғарғы шегі дұрыс емес" + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Тұйықтық айнымалының өз-өзінен тәуелдігі" + +#~ msgid "The result is not a number" +#~ msgstr "Нәтижесі сан емес" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Күтпегенде кіріс бітті" + +#~ msgid "Unknown token %1" +#~ msgstr "%1 беймәлім нәрсе" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 кемінде екі параметрді қажет етеді" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 кемінде %2 параметрді қажет етеді" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "'%1' дегеннің шегі келтірілмеген" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "'%1' үшін күтпеген шегі келтірілген" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 дегеннің '%2' дегені шектелмеген" + +#~ msgid "Wrong declare" +#~ msgstr "Анықтама қате" + +#~ msgid "Empty container: %1" +#~ msgstr "Бос контейнер: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Шарттар тек қана құрама құрылымдарында болуға тиіс. " + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "'%1' сияқты бірдей аталған екі параметр болуға тиіс емес." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "otherwise параметрі соңғы болуға тиіс " + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 деген шарт емес, ол бұл құрамада жарамайды" + +#~ msgid "We can only declare variables" +#~ msgstr "Айнымалыларды жариялау ғана болады" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Айнымалылар шектелген ғана болады" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Мынаны талдау қатесі: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Беймәлім контейнер: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "%1 мәні кодтауға келмеді." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "%1 операторы туынды контексттерге ие бола алмайды." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "'%1' элементі оператор емес." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Бос вектор жөнсіз" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Танылмайтын/беймәлім: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "ы'%2' орнында %1 күтілген еді" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Оң жақ жақшасы жетіспейді" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Жабылмаған оң жақ жақшасы" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "%1 деген күтпеген нәрсе" + +#~ msgid "Unexpected token %1" +#~ msgstr "%1 деген күтпеген нәрсе" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "'%1' дегеннің тұындысы есептеуге келмейді" + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Анықталу аймағы вектор немесе тізім болу керек." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "'%2' дегенде параметр саны дұрыс емес. Ол %1 болуға тиіс." + +#~ msgid "Could not call '%1'" +#~ msgstr "'%1' шақырылмады" + +#~ msgid "Could not solve '%1'" +#~ msgstr "'%1' шешілмеді" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "'%1' айнымалының түрі анықсыз" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Құрама функцияның түрі анықталмады" + +#~ msgid "Unexpected type" +#~ msgstr "Күтпеген түрі" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr " '%1' деген'%2' дегенге аударылмады" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "%1 деген беймәлім нәрсе" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "0-ден қалдық есептеуге келмейді" + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "0-дің көбейткіші есептеуге келмейді" + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "0-дің ең кіші ортақ еселігі есептеуге келмейді" + +#~ msgid "Could not calculate a value %1" +#~ msgstr "%1 мәні есептеуге келмейді" + +#~ msgid "Invalid index for a container" +#~ msgstr "Контейнерінің индексі дұрыс емес" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Түрлі өлшмді векторлар бір амалда үйлеспейді." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Вектордың %1 есептеуге келмейді" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Тізімдің %1 есептеуге келмейді" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "'%1' дегеннің тұындысы есептеуге келмейді" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr " '%1' және '%2' ықшамдатуға келмейді." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Параметрлік функция векторды қайтармайды " + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Екі өлшемді векторы керек" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Параметрлік функцияның параметрлері скаляр болуға тиіс" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "%1 туындысы әлі іске асырылмаған" + +#~ msgid "Incorrect domain." +#~ msgstr "Аумағы дұрыс емес." diff --git a/po/kk/plasma_applet_kalgebraplasmoid.po b/po/kk/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..24cd1f9 --- /dev/null +++ b/po/kk/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2012. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2012-01-06 03:31+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" +"X-Generator: Lokalize 1.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Бір өрнекті келтіріңіз." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/km/kalgebra.po b/po/km/kalgebra.po new file mode 100644 index 0000000..b79d113 --- /dev/null +++ b/po/km/kalgebra.po @@ -0,0 +1,527 @@ +# translation of kalgebra.po to Khmer +# Khoem Sokhem , 2008, 2009, 2011. +# Auk Piseth , 2008. +# Eng Vannak , 2008. +# Morn Met, 2009. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# sutha , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2013-01-04 14:25+0700\n" +"Last-Translator: sutha \n" +"Language-Team: Khmer \n" +"Language: km\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: WordForge 0.8 RC1\n" +"X-Language: km-KH\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "ជម្រើស​ ៖ %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "បិទ​ភ្ជាប់​ \"%1\" ដើម្បី​បញ្ចូល" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "បិទ​ភ្ជាប់​ \"%1\" ដើម្បី​បញ្ចូល" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    កំហុស​ ៖ %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "បាន​នាំចូល ៖ %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    កំហុស ៖ មិន​អាច​ផ្ទុក​ %1។

%2" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "ព័ត៌មាន" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "បន្ថែម/កែសម្រួល​អនុគមន៍" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "មើល​ជា​មុន" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "ពី​៖" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "ដល់ ៖" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "ជម្រើស" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "យល់​​ព្រម​" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "ជម្រើស​ដែល​អ្នក​បាន​បញ្ជាក់​មិន​ត្រឹមត្រូវ​ទេ" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "កម្រិត​ទាប​បំផុត​មិន​អាច​ធំ​ជាង​កម្រិត​ខ្ពស់​បំផុត​បាន​ទេ" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "គូស​ក្រាហ្វិក​ទ្វេ​មាត្រ" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "​គូស​ក្រាហ្វិក​ត្រីមាត្រ" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "សម័យ" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "អថេរ" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "គណនា" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "គណនា" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "ផ្ទុក​ស្គ្រីប" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "ស្គ្រីប​បច្ចុប្បន្ន" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "រក្សាទុក​ស្គ្រីប​..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "នាំ​ចេញ​កំណត់​ហេតុ​..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "របៀប​ប្រតិបត្តិ​" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "គណនា" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "វាយ​តម្លៃ" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "អនុគមន៍" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "បញ្ជី" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "បន្ថែម" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "ច្រក​ទិដ្ឋភាព​" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "ក្រាប​​ទ្វេ​មាត្រ" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "ក្រាប​ទ្វេ​មាត្រ" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "ក្រឡា​ចត្រង្គ" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "រក្សា​ទុក​សមាមាត្រ" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "គុណភាព​បង្ហាញ" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "អន់" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "ធម្មតា" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "ល្អ" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "ល្អ​បំផុត​" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "ក្រាប​​​ត្រីមាត្រ" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "ក្រាប​ត្រីមាត្រ" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "កំណត់​ទិដ្ឋភាព​ឡើងវិញ" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "ចំណុច" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "បន្ទាត់" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "តាន់" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "ប្រតិបត្តិការ" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "វចនានុក្រម" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "រក​មើល ៖" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "កែសម្រួល" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "ជ្រើស​ស្គ្រីប" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "ស្គ្រីប (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "ឯកសារ​ HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "កំហុស ៖ %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"ឯកសារ​ *.png|Image\n" +"ឯកសារ​ *.svg|SVG " + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "រួចរាល់" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "បន្ថែម​​អថេរ" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "បញ្ចូល​ឈ្មោះ​សម្រាប់​អថេរ​ថ្មី" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "ម៉ាស៊ីន​គិតលេខ" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "រក្សា​សិទ្ធិ​ឆ្នាំ​ ២០០៦-២០១០ ដោយ​ Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ខឹម សុខែម, សេង សុត្ថា, សុខ សុភា" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sokhem@open.org.kh,sutha@open.org.kh,sophea@open.org.kh" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "បន្ថែម​/កែសម្រួល​អថេរ" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "អថេរ" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "កែសម្រួល​តម្លៃ '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "មិន​មាន" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 ៖= %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ខុស" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "ឆ្វេង​ ៖" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "លើ​ ៖" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "ទទឹង​​ ៖" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "កម្ពស់​ ៖" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "អនុវត្ត" + +#~ msgid "C&onsole" +#~ msgstr "កុងសូល" + +#~ msgid "&Console" +#~ msgstr "កុងសូល" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "បាន​អភិវឌ្ឍន៍​លក្ខណ​ពិសេស​សម្រាប់​ការ​គូស​ខ្សែ​កោង​អាំប្លីស៊ីត​ ។ ការ​ធ្វើ​ឲ្យ​ប្រសើរ​សម្រាប់​ការ​គូស​ក្រាហ្វិក​" +#~ "អនុគមន៍ ។" + +#~ msgid "Formula" +#~ msgstr "រូបមន្ត" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "កំហុស​ ៖ ប្រភេទ​អនុគមន៍​មិន​ត្រឹម​ត្រូវ" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "ធ្វើ​រួច ៖ %1ms" + +#~ msgid "Error: %1" +#~ msgstr "កំហុស ៖ %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "សម្អាត" + +#~ msgid "*.png|PNG File" +#~ msgstr "ឯកសារ​ *.png|PNG " + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "ភាព​ថ្លា" + +#~ msgid "Type" +#~ msgstr "ប្រភេទ" + +#~ msgid "Result: %1" +#~ msgstr "លទ្ធផល​ ៖ %1" + +#~ msgid "To Expression" +#~ msgstr "ទៅ​កាន់​កន្សោម" + +#~ msgid "To MathML" +#~ msgstr "ទៅ​កាន់ MathML" + +#~ msgid "Simplify" +#~ msgstr "ធ្វើ​ឲ្យ​ធម្មតា" + +#~ msgid "Examples" +#~ msgstr "ឧទាហរណ៍" + +#~ msgid "We can only draw Real results." +#~ msgstr "យើង​អាច​គូរ​តែ​លទ្ធផល​ពិត​ប៉ុណ្ណោះ ។" + +#~ msgid "The expression is not correct" +#~ msgstr "កន្សោម​មិន​ត្រឹម​ត្រូវ" + +#~ msgid "Function type not recognized" +#~ msgstr "មិន​ស្គាល់​ប្រភេទ​អនុគមន៍" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "ប្រភេទ​អនុគមន៍​មិន​ត្រឹម​ត្រូវ​សម្រាប់​អនុគមន៍​ដែល​ផ្អែក​លើ​ %1" diff --git a/po/ko/kalgebra.po b/po/ko/kalgebra.po new file mode 100644 index 0000000..babea1d --- /dev/null +++ b/po/ko/kalgebra.po @@ -0,0 +1,504 @@ +# Korean 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. +# Shinjo Park , 2011, 2014, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: kdeedu\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2015-04-26 19:16+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 1.5\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "옵션: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "\"%1\"을(를) 입력으로 붙여넣기" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "\"%1\"을(를) 입력으로 붙여넣기" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    오류: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "가져옴: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    오류: %1을(를) 불러올 수 없음.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "정보" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "함수 추가/편집" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "미리 보기" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "시작:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "끝:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "설정" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "확인" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "삭제" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "지정한 옵션이 올바르지 않습니다" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "최솟값이 최댓값보다 클 수 없음" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2차원으로 그리기" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3차원으로 그리기" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "세션" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "변수" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "계산" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "계산" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "스크립트 열기(&L)..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "최근 스크립트" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "스크립트 저장(&S)..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "로그 내보내기(&E)..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "실행 모드" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "계산" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "평가" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "함수" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "목록" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "추가(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "뷰포트" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "2D 그래프(&2)" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2D 그래프(&D)" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "격자(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "가로 세로 비율 유지(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "해상도" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "나쁨" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "보통" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "좋음" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "매우 좋음" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "3D 그래프(&3)" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D 그래프(&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "보기 재설정(&R)" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "점" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "선" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "실선" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "연산" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "사전(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "찾을 단어:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "편집(&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "스크립트를 선택하십시오" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "스크립트 (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML 파일 (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "오류: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "렌더링한 결과를 출력할 위치를 선택하십시오" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|그림 파일\n" +"*.svg|SVG 파일" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "준비" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "변수 추가" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "새 변수 이름을 입력하십시오" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "계산기" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "박신조" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde@peremen.name" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "변수 추가/편집" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "변수 삭제" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' 값 편집" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "사용할 수 없음" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "오류" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "왼쪽:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "위:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "넓이:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "높이:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "적용" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document\n" +#~| "*.x3d|X3D Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG 파일\n" +#~ "*.pdf|PDF 문서\n" +#~ "*.x3d|X3D 문서" + +#~ msgid "C&onsole" +#~ msgstr "콘솔(&O)" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "콘솔(&C)" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "음함수 그리기 기능, 작도 함수 개선" + +#~ msgid "Formula" +#~ msgstr "공식" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "오류: 함수 종류가 잘못된" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "완료됨: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "오류: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "지우기" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG 파일" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." diff --git a/po/ko/plasma_applet_kalgebraplasmoid.po b/po/ko/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..b594d74 --- /dev/null +++ b/po/ko/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,32 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Shinjo Park , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-01-03 19:42+0900\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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "수식을 입력하십시오." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/lt/kalgebra.po b/po/lt/kalgebra.po new file mode 100644 index 0000000..af9c99e --- /dev/null +++ b/po/lt/kalgebra.po @@ -0,0 +1,468 @@ +# Lithuanian translations for kalgebra package. +# This file is distributed under the same license as the kalgebra package. +# Andrius Štikonas , 2008. +# Valdas Jankūnas , 2009. +# Remigijus Jarmalavičius , 2011. +# Liudas Ališauskas , 2015. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2015-01-28 07:02+0200\n" +"Last-Translator: Liudas Ališauskas \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 1.5\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Parinktys: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Įdėti „%1“ į įvestį" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Įdėti „%1“ į įvestį" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Klaida: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importuota: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Klaida: negalima pakrauti %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informacija" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Pridėti arba keiti funkciją" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Peržiūra" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Nuo:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Iki:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Parinktys" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Gerai" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Pašalinti" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Nurodytos pasirinktys nėra teisingos" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Žemiausia riba negali būti didesnė nei aukščiausia riba" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Brėžti 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Brėžti 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesija" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Kintamieji" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Skaičiuoti" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Skaičiuoti" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Į&kelti scenarijų..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Paskiausi scenarijai" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Įrašyti scenarijų..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Eksportuoti žurnalą..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Vykdymo režimas" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Skaičiuoti" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Įvertinti" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcijos" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Sąrašas" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Pridėti" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Matomas plotas" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D grafikas" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D grafikas" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Tinklelis" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Išlaikyti &proporciją" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Skiriamoji geba" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Grubus" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normalus" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Smulkus" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Labai smulkus" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D grafikas" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &grafikas" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Atstatyti rodinį" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Taškai" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linijos" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Vientisas" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacijos" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "Ž&odynas" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Ieškoti:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Keičiama" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Parinkite scenarijų" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Scenarijus (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML failas (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Klaidos: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Nurodykite kur padėti padarytą brėžinį" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Paveikslo failas\n" +"*.svg|SVG failas" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pasirengęs" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Pridėti kintamąjį" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Įveskite naujo kintamojo pavadinimą" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Pridėti arba keisti kintamąjį" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Pašalinti kintamąjį" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Keisti „%1“ vertę" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nėra" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "KLAIDINGAS" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Kairė:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Viršus:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Plotis:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Aukštis:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Pritaikyti" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document\n" +#~| "*.x3d|X3D Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG failas\n" +#~ "*.pdf|PDF dokumentas\n" +#~ "*.x3d|X3D dokumentas" + +#~ msgid "C&onsole" +#~ msgstr "P&ultas" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Pultas" diff --git a/po/lt/kalgebramobile.po b/po/lt/kalgebramobile.po new file mode 100644 index 0000000..6498064 --- /dev/null +++ b/po/lt/kalgebramobile.po @@ -0,0 +1,176 @@ +# Lithuanian translations for kalgebra package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 03:26+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: lt\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" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "" diff --git a/po/lt/plasma_applet_kalgebraplasmoid.po b/po/lt/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..e409426 --- /dev/null +++ b/po/lt/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Lithuanian translations for l package. +# Copyright (C) 2010 This_file_is_part_of_KDE +# This file is distributed under the same license as the l package. +# +# Andrius Štikonas , 2010. +# Remigijus Jarmalavičius , 2011. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-08-08 20:36+0300\n" +"Last-Translator: Remigijus Jarmalavičius \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 1.2\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Įveskite reiškinį." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/lv/kalgebra.po b/po/lv/kalgebra.po new file mode 100644 index 0000000..ce18848 --- /dev/null +++ b/po/lv/kalgebra.po @@ -0,0 +1,1083 @@ +# translation of kalgebra.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maris Nartiss , 2007, 2008. +# Viesturs Zarins , 2008. +# Viesturs Zariņš , 2008. +# Viesturs Zariņš , 2009. +# Einars Sprugis , 2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2011-07-06 01:24+0300\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.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcijas: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Ievietot \"%1\" ievadē" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Ievietot \"%1\" ievadē" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Kļūda: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importēts: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Kļūda: neizdevās ielādēt %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informācija" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Pielikt/labot funkciju" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Priekšskatījums" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "No:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Līdz:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcijas" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Labi" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Noņemt '%1'" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Jūsu norādītās opcijas nav pareizas" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Apakšējā robeža nevar būt lielāka nekā augšējā robeža" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Grafiks 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Grafiks 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesija" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Mainīgie" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Aprēķināt" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Aprēķināt" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Ie&lādēt skriptu..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nesenie skripti" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Saglabāt skriptu..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksportēt žurnālu..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Izpildes režīms" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Aprēķināt" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Novērtēt" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcijas" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Saraksts" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Pievienot" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Skats" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D grafiks" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D grafiks" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rūtiņas" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Saglabāt &attiecību" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Izšķirtspēja" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Zema" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normāla" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Augsta" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Ļoti augsta" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D grafiks" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &grafiks" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Atiestatīt skatu" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punktu" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Līniju" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Aizpildīts" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Darbības" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "Vār&dnīca" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Meklēt:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "R&ediģēšana" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Izvēlieties skriptu" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skripts (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML fails (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "Kļūda: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Attēla fails\n" +"*.svg|SVG fails" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Gatavs" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Pievienot mainīgo" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Ievadiet jaunā mainīgā nosaukumu" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Kalkulators" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Pievienot/Labot mainīgo" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Mainīgie" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Labot '%1' vērtību" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nav pieejams" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "APLAMI" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "No kreisās:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "No augšas:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Platums:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Augstums:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Pielietot" + +#~ msgid "C&onsole" +#~ msgstr "K&onsole" + +#~ msgid "&Console" +#~ msgstr "&Konsole" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleikss Pols Gozaless (Aleix Pol Gonzalez)" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Kļūda: nepareizs funkcijas tips" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Pabeigts: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Kļūda: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Attīrīt" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG Fails" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Caurspīdīgums" + +#~ msgid "Type" +#~ msgstr "Veids" + +#~ msgid "Result: %1" +#~ msgstr "Rezultāts: %1" + +#~ msgid "To Expression" +#~ msgstr "Uz izteiksmi" + +#~ msgid "To MathML" +#~ msgstr "Uz MathML" + +#~ msgid "Simplify" +#~ msgstr "Vienkāršot" + +#~ msgid "Examples" +#~ msgstr "Piemēri" + +#~ msgid "We can only draw Real results." +#~ msgstr "Mēs mākam zīmēt tikai reālus skaitļus." + +#~ msgid "Function type not recognized" +#~ msgstr "Funkcijas tips nav atpazīts" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Funkcijas tips nav pareizs funkcijām, kas atkarīgas no %1" + +#~ msgid "The expression is not correct" +#~ msgstr "Izteiksme nav pareiza" + +#~ msgid "center" +#~ msgstr "centrs" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nosaukums" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funkcija" + +#~ msgid "%1 function added" +#~ msgstr "%1 funkcija pielikta" + +#~ msgid "Hide '%1'" +#~ msgstr "Slēpt '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Rādīt '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Izvēlētais skats ir pārāk mazs" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Apraksts" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametri" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Piemērs" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=no..līdz" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametri, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Saskaitīšana" + +#~ msgid "Multiplication" +#~ msgstr "Reizināšana" + +#~ msgid "Division" +#~ msgstr "Dalīšana" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Atņemšana. Noņems visas vērtības no pirmās." + +#~ msgid "Power" +#~ msgstr "Kāpināšana" + +#~ msgid "Remainder" +#~ msgstr "Atlikums" + +#~ msgid "Quotient" +#~ msgstr "Kvocients" + +#~ msgid "The factor of" +#~ msgstr "Dalītājs " + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Faktoriāls. faktoriāls(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funkcija sinusa aprēķināšanai dotajam leņķim" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funkcija kosinusa aprēķināšanai dotajam leņķim" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funkcija tangensa aprēķināšanai dotajam leņķim" + +#~ msgid "Secant" +#~ msgstr "Sekants" + +#~ msgid "Cosecant" +#~ msgstr "Kosekants" + +#~ msgid "Cotangent" +#~ msgstr "Kotangenss" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hiperboliskais sinuss" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hiperboliskais kosinuss" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hiperboliskais tangenss" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hiperboliskais sekants" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hiperboliskais kosekants" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hiperboliskais kotangenss" + +#~ msgid "Arc sine" +#~ msgstr "Arksinuss" + +#~ msgid "Arc cosine" +#~ msgstr "Arkkosīnuss" + +#~ msgid "Arc tangent" +#~ msgstr "Arktangenss" + +#~ msgid "Arc cotangent" +#~ msgstr "Arkkotangenss" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hiperboliskais arktangenss" + +#~ msgid "Summatory" +#~ msgstr "Summa" + +#~ msgid "Productory" +#~ msgstr "Reizinājums" + +#~ msgid "For all" +#~ msgstr "Visiem" + +#~ msgid "Exists" +#~ msgstr "Pastāv" + +#~ msgid "Differentiation" +#~ msgstr "Diferencēšana" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hiperboliskais arksinuss" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hiperboliskais arkkosinuss" + +#~ msgid "Arc cosecant" +#~ msgstr "Arkkosekants" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hiperboliskais arkkosekants" + +#~ msgid "Arc secant" +#~ msgstr "Arksekants" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hiperboliskais arksekants" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Eksponente (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Naturāllogaritms" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Decimāllogaritms" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absolūtā vērtība. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Grīdas funkcija. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Griestu funkcija. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimums" + +#~ msgid "Maximum" +#~ msgstr "Maksimums" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Lielāks par. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Vērtība" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Jānorāda derīga darbība" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Nezināms identifikators: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Neizdevās atrast pareizu izvēli nosacījuma izteikumam." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Apakšējā robeža ir lielāka nekā augšējā robeža" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Nekorekta augšējā vai apakšējā robeža." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Definēts mainīgs cikls" + +#~ msgid "The result is not a number" +#~ msgstr "Rezultāts nav skaitlis" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Negaidīti nonāca līdz ievades beigām" + +#~ msgid "Unknown token %1" +#~ msgstr "Nezināms elements %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 nepieciešami vismaz 2 parametri" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 nepieciešami %2 parametri" + +#~ msgid "Wrong declare" +#~ msgstr "Nepareiza deklarācija" + +#~ msgid "Empty container: %1" +#~ msgstr "Tukšs konteiners: %1" + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Nevar būt divi parametri ar vienādu nosaukumu kā '%1'." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parametram savādāk būtu jābūt pēdējam" + +#~ msgid "We can only declare variables" +#~ msgstr "Mēs mākam deklarēt tikai mainīgos" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Mums var būt tikai piesaistītie mainīgie" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Kļūda analizējot: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Nezināms konteiners: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Neizdevās kodificēt %1 vērtību." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "%1 operatoram nevar būt bērna konteksti." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Elements '%1' nav operators." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Nevēlos tukšus vektorus" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nav atbalstīts/nezināms: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Gaidīts '%1' nevis '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Trūkst labās iekavas" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Lieka labā iekava" + +#~ msgid "Unexpected token %1" +#~ msgstr "Negaidīts elements %1" + +#~ msgid "The domain should be either a vector or a list." +#~ msgstr "Definīcijas apgabalam būtu jābūt vai nu vektoram vai sarakstam." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Nederīgs parametru skaits priekš '%2'. Jābūt %1 parametram." +#~ msgstr[1] "Nederīgs parametru skaits priekš '%2'. Jābūt %1 parametriem." +#~ msgstr[2] "Nederīgs parametru skaits priekš '%2'. Jābūt %1 parametriem." + +#~ msgid "Could not call '%1'" +#~ msgstr "Neizdevās izsaukt '%1'" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Neizdevās aprēķināt '%1'" + +#~ msgid "Unexpected type" +#~ msgstr "Negaidīts tips" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Nevar pārveidot '%1' uz '%2'" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Nezināms elements %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Nevar aprēķināt atlikumu nullei (0)." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Nevar aprēķināt reizinātāju nullei (0)." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Nevar aprēķināt nulles (0) mazāko kopīgo dalāmo." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Neizdevās aprēķināt vērtību %1" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Neizdevās reducēt '%1' un '%2'." + +#~ msgid "Invalid index for a container" +#~ msgstr "Nederīgs konteinera indekss" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Nevar darboties uz dažāda izmēra vektoriem." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Nevar aprēķināt vektora %1" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Nevar aprēķināt saraksta %1" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Neizdevās aprēķināt '%1' atvasinājumu" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Parametriskā funkcija neatgriež vektoru" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Vajadzīgs divdimensionālais vektors" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Parametriskās funkcijas punktiem vajadzētu būt skalāriem" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "%1 atvasinājums nav realizēts." + +#~ msgid "Incorrect domain." +#~ msgstr "Nepareizs domēns." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Nesapratu reālo vērtību: %1" + +#~ msgid "Subtraction" +#~ msgstr "Atņemšana" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Kļūda: %2" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Kļūda: nepieciešamas vērtības grafika zīmēšanai" + +#~ msgid "Select an element from a container" +#~ msgstr "Izvēlieties elementu no konteinera" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Nedrīkst apakšējā robeža ≥ augšējā robeža" + +#~ msgid "Generating... Please wait" +#~ msgstr "Ģenerē... Lūdzu gaidiet" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Saglabāt žurnālu" + +#~ msgid "Mode" +#~ msgstr "Režīms" + +#~ msgid "Save the expression" +#~ msgstr "Saglabāt izteiksmi" + +#~ msgid "Calculate the expression" +#~ msgstr "Aprēķināt izteiksmi" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#, fuzzy +#~| msgid "We can only draw Real results." +#~ msgid "We can only call functions" +#~ msgstr "Mēs mākam zīmēt tikai reālus skaitļus." + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "patiess" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "aplams" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Nezināms piesaistītais mainīgais: %1" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Need a var name and a value" +#~ msgstr "Nepieciešams mainīgā nosaukums un vērtība" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Funkcija %1 nepastāv" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Mainīgais %1 nepastāv" + +#, fuzzy +#~| msgid "We can only select a containers value with its integer index" +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "Jūs varat izvēlēties vērtību no konteinera ar vesela skaitļa indeksu." + +#~ msgid "From parser:" +#~ msgstr "No parsētāja:" + +#~ msgctxt "" +#~ "%1 the operation name, %2 and %3 is the opearation we wanted to calculate" +#~ msgid "Cannot calculate the %1(%2, %3)" +#~ msgstr "Nevar aprēķināt %1(%2, %3)" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Mēģina mainīt nezināmu vērtību: %1" + +#, fuzzy +#~| msgid "Hyperbolic arc tangent" +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Hiperboliskais arktangenss" + +#, fuzzy +#~| msgctxt "@info:status" +#~| msgid "Ready" +#~ msgid "Real" +#~ msgstr "Gatavs" diff --git a/po/lv/plasma_applet_kalgebraplasmoid.po b/po/lv/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..16fa505 --- /dev/null +++ b/po/lv/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,35 @@ +# translation of plasma_applet_kalgebra.po to Latvian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Maris Nartiss , 2010. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-07-19 16:16+0300\n" +"Last-Translator: Maris Nartiss \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: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Ievadiet izteiksmi." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ml/kalgebra.po b/po/ml/kalgebra.po new file mode 100644 index 0000000..222bb17 --- /dev/null +++ b/po/ml/kalgebra.po @@ -0,0 +1,731 @@ +# translation of kalgebra.po to +# Copyright (C) 2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kalgebra package. +# ANI PETER|അനി പീറ്റര്‍ , 2008 +# മണിലാല്‍ കെ.എം|Manilal K M , 2008 +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2008-07-14 11:56+0530\n" +"Last-Translator: മണിലാല്‍ കെ.എം|Manilal K M \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"X-Poedit-Language: Malayalam\n" +"X-Poedit-Country: INDIA\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, fuzzy, kde-format +msgid "Options: %1" +msgstr "പ്രക്രിയകള്‍" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, fuzzy, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    പിശകു്: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, fuzzy, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    പിശകു്: %1
  • %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "വിവരം" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "ഫംഗ്ഷന്‍ ചേര്‍ക്കുക/മാറ്റമാകുക" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "" + +#: functionedit.cpp:106 +#, fuzzy, kde-format +msgid "Options" +msgstr "പ്രക്രിയകള്‍" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ശരി" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "'%1' നീക്കം ചെയ്യുക" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, fuzzy, kde-format +msgid "Session" +msgstr "വാക്ക്യത്തിലേക്കു്" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "വേരിയബിളുകള്‍" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +msgid "&Calculator" +msgstr "ഗണനി" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +msgid "C&alculator" +msgstr "ഗണനി" + +#: kalgebra.cpp:169 +#, fuzzy, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "സ്ക്രിപ്റ്റ് &ലഭ്യമാക്കുക" + +#: kalgebra.cpp:171 +#, fuzzy, kde-format +msgid "Recent Scripts" +msgstr "സ്ക്രിപ്റ്റ് &സൂക്ഷിക്കുക" + +#: kalgebra.cpp:175 +#, fuzzy, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "സ്ക്രിപ്റ്റ് &സൂക്ഷിക്കുക" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, fuzzy, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "ഗണനി" + +#: kalgebra.cpp:185 +#, fuzzy, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "മൂല്യം" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "ഫംഗ്ഷനുകള്‍" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "പട്ടിക" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&ചേര്‍ക്കുക" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2ഡി ഗ്രാഫ്" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "&2ഡി ഗ്രാഫ്" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&ഗ്രിഡ്" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "ആസ്പെക്ട് റേഷ്യോ &സൂക്ഷിക്കുക" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "റെസൊല്യൂഷന്‍" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "മോശമായത്" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "സാധാരണ" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "നല്ലത്" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "വളരെ നല്ലത്" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "3ഡി &ഗ്രാഫ്" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3ഡി &ഗ്രാഫ്" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "കാഴ്ച &വീണ്ടും ക്രമീകരിക്കുക" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "കുത്തുകള്‍" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "വരികള്‍" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "കട്ടിയുള്ള" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "പ്രക്രിയകള്‍" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&നിഘണ്ടു" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "തെരയുക:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&ചിട്ടപ്പെടുത്തുന്നു" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "ഒരു സ്ക്രിപ്റ്റ് തെരഞ്ഞെടുക്കുക" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "സ്ക്രിപ്റ്റ് (*.kal)" + +#: kalgebra.cpp:528 +#, fuzzy, kde-format +msgid "HTML File (*.html)" +msgstr "വാചക ഫയല്‍ (*)" + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +msgid "Errors: %1" +msgstr "പിശകു്: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Image ഫയല്‍\n" +"*.svg|SVG ഫയല്‍" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "തയ്യാര്‍" + +#: kalgebra.cpp:680 +#, fuzzy, kde-format +msgid "Add variable" +msgstr "ചരം ചേര്‍ക്കുക/മാറ്റുക" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, fuzzy, kde-format +msgid "A portable calculator" +msgstr "ഗണനി" + +#: main.cpp:31 +#, fuzzy, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2008 അലെയിക്സ് പോള്‍ ഗോണ്‍സാലസ്" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "അനി പീറ്റര്‍" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "apeter@redhat.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "ചരം ചേര്‍ക്കുക/മാറ്റുക" + +#: varedit.cpp:39 +#, fuzzy, kde-format +msgid "Remove Variable" +msgstr "വേരിയബിളുകള്‍" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' മൂല്യം ചിട്ടപ്പെടുത്തുക" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ലഭ്യമല്ല" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "തെറ്റു്" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "" + +#~ msgid "C&onsole" +#~ msgstr "&കണ്‍സോള്‍" + +#~ msgid "&Console" +#~ msgstr "&കണ്‍സോള്‍" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "അലെയിക്സ് പോള്‍ ഗോണ്‍സാലസ്" + +#, fuzzy +#~ msgid "Formula" +#~ msgstr "%1" + +#, fuzzy +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "പൂര്‍ത്തിയായി: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "പിശകു്: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "വെടിപ്പാക്കുക" + +#~ msgid "*.png|PNG File" +#~ msgstr "൨" + +#~ msgid "&Transparency" +#~ msgstr "സുതാര്യത" + +#~ msgid "Type" +#~ msgstr "തരം" + +#~ msgid "To Expression" +#~ msgstr "വാക്ക്യത്തിലേക്കു്" + +#~ msgid "To MathML" +#~ msgstr "MathML-ലേക്കു്" + +#~ msgid "Simplify" +#~ msgstr "ലളിതമാക്കുക" + +#, fuzzy +#~ msgid "Examples" +#~ msgstr "ഉദാഹരണം" + +#~ msgid "center" +#~ msgstr "മധ്യം" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "പേരു്" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "ഫംഗ്ഷന്‍" + +#~ msgid "%1 function added" +#~ msgstr "%1 ഫംഗ്ഷന്‍ ചേര്‍ത്തിരിക്കുന്നു" + +#~ msgid "Hide '%1'" +#~ msgstr "'%1' അദൃശ്യമാക്കുക" + +#~ msgid "Show '%1'" +#~ msgstr "'%1' കാണിക്കുക" + +#~ msgid "Selected viewport too small" +#~ msgstr "തെരഞ്ഞെടുത്ത വ്യൂപോര്‍ട്ട് വളരെ ചെറുതാണു്" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "വിവരണം" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "ഉദാഹരണം" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#, fuzzy +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... പരാമീറ്ററുകള്‍, ...)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "സങ്കലനം" + +#~ msgid "Multiplication" +#~ msgstr "ഗുണനം" + +#~ msgid "Division" +#~ msgstr "ഹരണം" + +#~ msgid "Power" +#~ msgstr "ഊര്‍ജ്ജം" + +#~ msgid "Remainder" +#~ msgstr "ശിഷ്ടം" + +#~ msgid "Quotient" +#~ msgstr "ഹരണഫലം" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "തന്നിരിക്കുന്ന കോണിന്റെ സൈന്‍ കണ്ടുപിടിക്കാനുള്ള ഫംഗ്ഷന്‍" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "തന്നിരിക്കുന്ന കോണിന്റെ കൊസൈന്‍ കണ്ടുപിടിക്കാനുള്ള ഫംഗ്ഷന്‍" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "തന്നിരിക്കുന്ന കോണിന്റെ ടാന്‍ജെന്റ് കണ്ടുപിടിക്കാനുള്ള ഫംഗ്ഷന്‍" + +#~ msgid "Secant" +#~ msgstr "സീക്കെന്‍ഡ്" + +#~ msgid "Cosecant" +#~ msgstr "കൊസീക്കെന്‍ഡ്" + +#~ msgid "Cotangent" +#~ msgstr "കൊടാന്‍ജെന്റ്" + +#, fuzzy +#~ msgid "Arc tangent" +#~ msgstr "കൊടാന്‍ജെന്റ്" + +#, fuzzy +#~ msgid "Arc cotangent" +#~ msgstr "കൊടാന്‍ജെന്റ്" + +#, fuzzy +#~ msgid "For all" +#~ msgstr "സാധാരണ" + +#, fuzzy +#~ msgid "Exists" +#~ msgstr "പട്ടിക" + +#, fuzzy +#~ msgid "Differentiation" +#~ msgstr "വിവരണം" + +#, fuzzy +#~ msgid "Arc cosecant" +#~ msgstr "കൊസീക്കെന്‍ഡ്" + +#, fuzzy +#~ msgid "Arc secant" +#~ msgstr "കൊസീക്കെന്‍ഡ്" + +#~ msgid "Minimum" +#~ msgstr "ഏറ്റവും കുറഞ്ഞ" + +#~ msgid "Maximum" +#~ msgstr "ഏറ്റവും കൂടിയ" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "വലുതു്. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "മൂല്യം" + +#, fuzzy +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr ", " + +#, fuzzy +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "വാക്ക്യത്തിന്റെ മൂല്യം കാണുക" + +#, fuzzy +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "വാക്ക്യത്തിന്റെ മൂല്യം കാണുക" + +#, fuzzy +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "വാക്ക്യത്തിന്റെ മൂല്യം കാണുക" + +#, fuzzy +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "വാക്ക്യത്തിന്റെ മൂല്യം കാണുക" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "Subtraction" +#~ msgstr "വ്യവകലനം" + +#, fuzzy +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "പിശകു്: %1" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "പ്രശ്നം: ഗ്രാഫ് വരയ്ക്കാന്‍ വിലകള്‍ വേണം" + +#~ msgid "Generating... Please wait" +#~ msgstr "ലഭ്യമാക്കുന്നു... ദയവായി കാത്തിരിക്കുക" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "ലോഗ് &സൂക്ഷിക്കുക" + +#, fuzzy +#~ msgid "File" +#~ msgstr "നല്ലത്" + +#~ msgid "Save the expression" +#~ msgstr "വാക്ക്യം സൂക്ഷിക്കുക" + +#~ msgid "Calculate the expression" +#~ msgstr "വാക്ക്യത്തിന്റെ മൂല്യം കാണുക" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "From parser:" +#~ msgstr "പാര്‍സറില്‍ നിന്നും:" + +#~ msgid "Real" +#~ msgstr "രേഖീയ സംഖ്യ" + +#~ msgid "%1, " +#~ msgstr "%1, " diff --git a/po/ml/kalgebramobile.po b/po/ml/kalgebramobile.po new file mode 100644 index 0000000..a233037 --- /dev/null +++ b/po/ml/kalgebramobile.po @@ -0,0 +1,176 @@ +# Malayalam translations for kalgebra package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 03:26+0100\n" +"Last-Translator: Automatically generated\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" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "" diff --git a/po/ml/plasma_applet_kalgebraplasmoid.po b/po/ml/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..5084897 --- /dev/null +++ b/po/ml/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# Malayalam translations for kalgebra package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2018-08-16 09:06+0200\n" +"Last-Translator: Automatically generated\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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "" diff --git a/po/mr/kalgebra.po b/po/mr/kalgebra.po new file mode 100644 index 0000000..891a7b2 --- /dev/null +++ b/po/mr/kalgebra.po @@ -0,0 +1,459 @@ +# 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: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2013-03-05 17:11+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" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "पर्याय : %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, fuzzy, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "त्रुटी" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "माहिती" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "पूर्वावलोकन" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "पासून :" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "पर्यंत :" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "पर्याय" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ठीक आहे" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "सत्र" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "व्हेरिएबल्स" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "गणना करा" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "गणना करा" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "गणना करा" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "कार्ये" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "यादी" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, fuzzy, kde-format +msgid "&Add" +msgstr "जोडा (&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "" + +#: kalgebra.cpp:257 +#, fuzzy, kde-format +msgid "&Grid" +msgstr "जाळे" + +#: kalgebra.cpp:258 +#, fuzzy, kde-format +msgid "&Keep Aspect Ratio" +msgstr "स्वरूपाचे गुणोत्तर ठेवा" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "घनता" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "सामान्य" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "ओळी" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "क्रिया" + +#: kalgebra.cpp:340 +#, fuzzy, kde-format +msgid "&Dictionary" +msgstr "शब्दकोश" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr "" + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +msgid "Errors: %1" +msgstr "त्रुटी" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" + +#: kalgebra.cpp:646 +#, fuzzy, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "तयार" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "एलैक्स पोल गोन्झालेझ" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "चेतन खोना" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "chetan@kompkin.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "व्हेरिएबल्स" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "" + +#: varedit.cpp:66 +#, fuzzy, kde-format +msgid "not available" +msgstr "उपलब्ध नाही" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "" + +#: viewportwidget.cpp:46 +#, fuzzy, kde-format +msgid "Left:" +msgstr "डावे :" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "वर :" + +#: viewportwidget.cpp:48 +#, fuzzy, kde-format +msgid "Width:" +msgstr "रुंदी :" + +#: viewportwidget.cpp:49 +#, fuzzy, kde-format +msgid "Height:" +msgstr "उंची :" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "लागू करा" + +#, fuzzy +#~ msgid "C&onsole" +#~ msgstr "कन्सोल" + +#, fuzzy +#~ msgid "&Console" +#~ msgstr "कन्सोल" + +#, fuzzy +#~ msgid "Formula" +#~ msgstr "फोर्म्युला" + +#, fuzzy +#~ msgid "Error: %1" +#~ msgstr "त्रुटी : %1" + +#, fuzzy +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "पुसून टाका" diff --git a/po/mr/plasma_applet_kalgebraplasmoid.po b/po/mr/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..a0d43be --- /dev/null +++ b/po/mr/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# 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: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2013-03-22 11:07+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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "अभिव्यक्ति दाखल करा." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "के-एल्जिब्रा" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/nb/kalgebra.po b/po/nb/kalgebra.po new file mode 100644 index 0000000..e8d507c --- /dev/null +++ b/po/nb/kalgebra.po @@ -0,0 +1,435 @@ +# Translation of kalgebra to Norwegian Bokmål +# +# Bjørn Steensrud , 2008, 2009, 2010, 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2013-11-20 12:19+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" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr "" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Valg: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Lim inn «%1» til inndata" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Feil: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importert: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Feil: Klarte ikke laste inn %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informasjon" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Legg til/rediger en funksjon" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Forhåndsvis" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Fra:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Valg" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Fjern" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Valgene du oppga er ikke riktige" + +# ?? +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Ned-grense kan ikke være større enn opp-grense" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plott 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Økt" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabler" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Last inn skript …" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nylige skripter" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Lagre &skript …" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksporter logg …" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Kjøremodus" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Beregn" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluer" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funksjoner" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Legg til" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Bilderute" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rutenett" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Be&hold høyde/bredde-forhold" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Oppløsning" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Dårlig" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fin" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Svært fin" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Tilbakestill visning" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punkter" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Heltrukken" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Regneoperasjoner" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Ordliste" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Let etter:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "R&edigering" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Velg et skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fil (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Feil: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Klar" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Legg til variabel" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Skriv et navn på den nye variablen" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Legg til/rediger en variabel" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Fjern variabel" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Rediger verdien «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ikke tilgjengelig" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FEIL" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Venstre:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Øverst:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Bredde:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Høyde:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Bruk" diff --git a/po/nb/plasma_applet_kalgebraplasmoid.po b/po/nb/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..2b07f70 --- /dev/null +++ b/po/nb/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,35 @@ +# Translation of plasma_applet_kalgebraplasmoid to Norwegian Bokmål +# +# Bjørn Steensrud , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-04-07 19:54+0200\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.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Oppgi et uttrykk." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/nds/kalgebra.po b/po/nds/kalgebra.po new file mode 100644 index 0000000..0c5c8f8 --- /dev/null +++ b/po/nds/kalgebra.po @@ -0,0 +1,1199 @@ +# translation of kalgebra.po to Low Saxon +# Translation of kalgebra.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. +# Sönke Dibbern , 2008, 2009. +# Manfred Wiese , 2008, 2009, 2010, 2011, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2014-03-18 21:53+0100\n" +"Last-Translator: Manfred Wiese \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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Optschonen: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "\"%1\" na Ingaav infögen" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "\"%1\" na Ingaav infögen" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Fehler: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importeert: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Fehler: \"%1\" lett sik nich laden.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informatschonen" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "En Funkschoon tofögen/bewerken" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Vöransicht" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Vun:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Na:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Optschonen" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Wegmaken" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "De angeven Optschonen sünd leeg" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Neddergrenz kann nich grötter as Bövergrenz wesen." + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D-Diagramm" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D-Diagramm" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Törn" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabeln" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Utreken" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Utreken" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Skript &laden..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Tolest bruukt Skripten" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Skript &sekern..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Logbook &exporteren..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Utföhrbedrief" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Utreken" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Utweerten" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkschonen" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "List" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Tofögen" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Kiekrebeet" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-Graph" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-Graph" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Gadder" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Proportschoon &wohren" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Oplösen" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Groff" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normaal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fien" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Bannig fien" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-Graph" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&Graph" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Ansicht to&rüchsetten" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pünkt" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Streek" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Vull" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Akschonen" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Wöörbook" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Kieken na:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Bewerken" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "En Skript utsöken" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-Datei (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Fehlers: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Bilddatei\n" +"*.svg|SVG-Datei" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Praat" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Variabel tofögen" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Giff en Naam för de niege Variabel in" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "En Taschenreekner" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2010: Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Sönke Dibbern, Manfred Wiese" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "s_dibbern@web.de, m.j.wiese@web.de" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "En Variabel tofögen/bewerken" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Variabel wegmaken" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Weert \"%1\" bewerken" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nich verföögbor" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "Falsch" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Linkerhand:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Baven:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Breed:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Hööchd:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Bruken" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|PNG-Datei\n" +#~ "*.pdf|PDF-Dokment" + +#~ msgid "C&onsole" +#~ msgstr "K&onsool" + +#~ msgid "&Console" +#~ msgstr "&Konsool" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Hett de Mööglichkeit för't Teken vun inbett Bagens un Verbetern vun de " +#~ "Diagrammtekenfunkschoon bidragen." + +#~ msgid "Formula" +#~ msgstr "Formel" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Fehler: Typ oder Funkschoon verkehrt" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Afslaten: %1 ms" + +#~ msgid "Error: %1" +#~ msgstr "Fehler: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Leddig maken" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-Datei" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Dörschienen" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Result: %1" +#~ msgstr "Resultaat: %1" + +#~ msgid "To Expression" +#~ msgstr "Na Utdruck" + +#~ msgid "To MathML" +#~ msgstr "Na MathML" + +#~ msgid "Simplify" +#~ msgstr "Eenfacher" + +#~ msgid "Examples" +#~ msgstr "Bispelen" + +#~ msgid "We can only draw Real results." +#~ msgstr "Bloots rejell Resultaten laat sik teken." + +#~ msgid "The expression is not correct" +#~ msgstr "De Utdruck is leeg." + +#~ msgid "Function type not recognized" +#~ msgstr "Funkschoon-Typ nich begäng" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Verkehrt Funkschoon-Typ för Funkschonen, de vun %1 afhangt" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Inbett Funkschoon in de Evene nich fastleggt" + +#~ msgid "center" +#~ msgstr "In de Merrn" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funkschoon" + +#~ msgid "%1 function added" +#~ msgstr "%1-Funkschoon toföögt" + +#~ msgid "Hide '%1'" +#~ msgstr "\"'%1\" versteken" + +#~ msgid "Show '%1'" +#~ msgstr "\"%1\" wiesen" + +#~ msgid "Selected viewport too small" +#~ msgstr "Utsöcht Kiekrebeet to lütt" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Beschrieven" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parameters" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Bispill" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=vun...bet" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... Parameters, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Totellen" + +#~ msgid "Multiplication" +#~ msgstr "Multiplikatschoon" + +#~ msgid "Division" +#~ msgstr "Divischoon" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Aftrecken. Treckt all Weerten vun den eersten Weert af." + +#~ msgid "Power" +#~ msgstr "Hooch" + +#~ msgid "Remainder" +#~ msgstr "Nablievels" + +#~ msgid "Quotient" +#~ msgstr "Quotschent" + +#~ msgid "The factor of" +#~ msgstr "De Fakter vun" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Keden-Multiplikatschoon: factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funkschoon, de den Sinus vun en geven Winkel utreekt" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funkschoon, de den Kosinus vun en geven Winkel utreekt" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funkschoon, de den Tangens vun en geven Winkel utreekt" + +#~ msgid "Secant" +#~ msgstr "Sekans" + +#~ msgid "Cosecant" +#~ msgstr "Kosekans" + +#~ msgid "Cotangent" +#~ msgstr "Kotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyperboolsch Sinus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperboolsch Kosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyperboolsch Tangens" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyperboolsch Sekans" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperboolsch Kosekans" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperboolsch Kotangens" + +#~ msgid "Arc sine" +#~ msgstr "Arkussinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arkuskosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arkustangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arkuskotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hyperboolsch Arkustangens" + +#~ msgid "Summatory" +#~ msgstr "Summ" + +#~ msgid "Productory" +#~ msgstr "Produkt" + +#~ msgid "For all" +#~ msgstr "För all" + +#~ msgid "Exists" +#~ msgstr "Vörhannen" + +#~ msgid "Differentiation" +#~ msgstr "Afledden" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hyperboolsch Arkussinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hyperboolsch Arkuskosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arkuskosekans" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hyperboolsch Arkuskosekans" + +#~ msgid "Arc secant" +#~ msgstr "Arkussekans" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hyperboolsch Arkussekans" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Euler-Logaritmus" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Teiner-Logaritmus" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Afsoluutweert: abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Afrunnen: floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Oprunnen: ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Lüttst" + +#~ msgid "Maximum" +#~ msgstr "Gröttst" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Grötter as: gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr ": Grenzen" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Weert" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Du muttst en gellen Akschoon angeven" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "\",\"" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Nich begäng Beteker: \"%1\"" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Keen propper Köör för en Tostand-Utdruck funnen." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Typ ünnerstütt keen Ingrenzen." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "De Neddergrenz is grötter as de Bövergrenz." + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Leeg Böver- oder Neddergrenz" + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Variabel-Krink fastleggt" + +#~ msgid "The result is not a number" +#~ msgstr "Dat Resultaat is keen Tall." + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Unverwachtens bi't Enn vun de Ingaav anlangt" + +#~ msgid "Unknown token %1" +#~ msgstr "Beteker %1 nich begäng" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 bruukt tominnst 2 Parameters" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 bruukt %2 Parameters" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Grenzen fehlt bi \"%1\"" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Ingrenzen för \"%1\" nich verwacht" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 Grenzen fehlt bi \"%2\"" + +#~ msgid "Wrong declare" +#~ msgstr "Leeg Verkloren" + +#~ msgid "Empty container: %1" +#~ msgstr "Leddig Gelaats: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Binnen \"piecewise\"-Strukturen sünd bloots Bedingen tolaten." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Twee Parameters mit den sülven Naam as \"%1\" sünd nich tolaten." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "De Parameter anners mutt tolest kamen." + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 is binnen en \"piecewise\"-Element keen propper Beding" + +#~ msgid "We can only declare variables" +#~ msgstr "Bloots Variabeln laat sik verkloren" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Bloots bunnen Variabeln sünd tolaten." + +#~ msgid "Error while parsing: %1" +#~ msgstr "Fehler bi't Inlesen: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Nich begäng Gelaats: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "De %1-Weert lett sik nich fastschrieven." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "De %1-Oprater mutt keen Ünnerkontexten hebben." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Dat Element \"%1\" is keen Oprater" + +#~ msgid "Do not want empty vectors" +#~ msgstr "Leddig Vektoren sünd nich tolaten." + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nich ünnerstütt oder nich begäng: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "%1 ansteed \"%2\" verwacht" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Klemm rechts fehlt" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Klemm rechts ahn Güntklemm" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Beteker %1 nich verwacht" + +#~ msgid "Unexpected token %1" +#~ msgstr "Beteker %1 nich verwacht" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "De Afledden för \"%1\" lett sik nich utreken." + +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "De Domään mutt en Vektor oder en List wesen." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Leeg Parametertall för \"%2\": Müss een Parameter hebben." +#~ msgstr[1] "Leeg Parametertall för \"%2\": Müss %1 Parameters hebben." + +#~ msgid "Could not call '%1'" +#~ msgstr "\"%1\" lett sik nich opropen." + +#~ msgid "Could not solve '%1'" +#~ msgstr "\"%1\" lett sik nich lösen." + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Giff en Naam för de niege Variabel in" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "De Typ för \"piecewise\" lett sik nich fastslaan." + +#~ msgid "Unexpected type" +#~ msgstr "Nich verwacht Typ" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "\"%1\" lett sik nich na \"%2\" wanneln." + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Beteker %1 nich begäng" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Nablievel vun 0 lett sik nich utreken." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Faktor vun 0 lett sik nich utreken." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "LgV vun 0 lett sik nich utreken." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Weert %1 lett sik nich utreken" + +#~ msgid "Invalid index for a container" +#~ msgstr "Leeg Gelaats-Index" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Akschoon mit Vektoren vun verscheden Grött nich mööglich" + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "En Vektor sien %1 lett sik nich utreken" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "En List ehr %1 lett sik nich utreken." + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "De Afledden för \"%1\" lett sik nich utreken." + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "\"%1\" un \"%2\" laat sik nich körten." + +#~ msgid "Incorrect domain." +#~ msgstr "Leeg Domään" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "De Parameterfunkschoon gifft keen Vektor torüch" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "En tweedimenschonaal Vektor deit noot." + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "De Elementen vun de Parameterfunkschoon mööt Skalaren wesen" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "De %1. Afleden is nich inbuut." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Rejell Weert lett sik nich verstahn: %1" + +#~ msgid "Subtraction" +#~ msgstr "Aftrecken" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Fehler: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "En Element ut en Gelaats utsöken" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Fehler: Graphen laat sik bloots ut Weerten teken" + +#~ msgid "Generating... Please wait" +#~ msgstr "Bi to opstellen ... Tööv bitte" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Leeg Parametertall: %1 Parameter för \"%2\"" +#~ msgstr[1] "Leeg Parametertall: %1 Parameters för \"%2\"" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "Logbook &sekern" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Fien" + +#~ msgid "We can only call functions" +#~ msgstr "Bloots Funkschonen laat sik opropen." + +#~ msgid "Wrong parameter count" +#~ msgstr "Leeg Parametertall" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "Wohr" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "Falsch" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgid "Wrong parameter count" +#~ msgid "Invalid parameter count." +#~ msgstr "Leeg Parametertall" + +#~ msgid "Mode" +#~ msgstr "Bedriefoort" + +#~ msgid "Save the expression" +#~ msgstr "Den Utdruck sekern" + +#~ msgid "Calculate the expression" +#~ msgstr "Den Utdruck utreken" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "\"%1\" lett sik nich op \"%2\" anwennen." + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Akschoon mit \"%1\" nich mööglich" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Typ \"%1\" lett sik nich pröven." + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Leeg Tall vun Parameters bi Oproop vun \"%1\"" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Neddergrenz mutt lütter as Bövergrenz wesen" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Oproop vun en leeg Funkschoon" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "We want a 2 dimension vector" +#~ msgstr "Wi bruukt en 2-Dimenschonen-Vektor" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Dat gifft de Funkschoon %1 nich" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Dat gifft de Variabal %1 nich" + +#~ msgid "Need a var name and a value" +#~ msgstr "Variabelnaam un -weert nödig" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "En Gelaats sien Weert lett sik bloots över sien Heeltall-Index utsöken" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "De eerste Parameter binnen en Funkschoon mutt ehr Naam wesen" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Nich begäng bunnen Variabel: %1" + +#~ msgid "From parser:" +#~ msgstr "Vun den Inleser:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "En Selektor bargt en leeg Parametertall. Tolaten sünd twee Parameters, " +#~ "den köört Index un dat Gelaats." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "Stück oder sünst an en leeg Steed" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Keen Grenzweerten för de Summ" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Grenzweerten för Tosamentell-Akschoon fehlt" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Nich begäng Weert lett sik nich fastschrieven: %1" + +#~ msgctxt "An error message" +#~ msgid "The downlimit is greater than the uplimit. Probably should be %1..%2" +#~ msgstr "" +#~ "De Neddergrenz is grötter as de Bövergrenz. Schull wull %1..%2 wesen" + +#~ msgid "Hyperbolic arc cotangent" +#~ msgstr "Hyperboolsch Arkuskotangens" + +#~ msgid "Real" +#~ msgstr "Rejell" + +#~ msgid "%1, " +#~ msgstr "%1, " + +#~ msgid "Conjugate" +#~ msgstr "Konjugatschoon" + +#~ msgid "Imaginary" +#~ msgstr "Imagineer" diff --git a/po/nds/plasma_applet_kalgebraplasmoid.po b/po/nds/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..8ecb564 --- /dev/null +++ b/po/nds/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# translation of plasma_applet_kalgebra.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 , 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-04-07 05:47+0200\n" +"Last-Translator: Manfred Wiese \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.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "En Utdruck ingeven" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/nl/docs/kalgebra/commands.docbook b/po/nl/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..4c91786 --- /dev/null +++ b/po/nl/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Functies in KAlgebra (alleen Engelstalige namen) + plus + Naam: plus + Beschrijving: Optellen + Parameters: plus(... parameters, ...) + Voorbeeld: x->x+2 + + keer + Naam: times + Beschrijving: Vermenigvuldigen + Parameters: times(... parameters, ...) + Voorbeeld: x->x*2 + + min + Naam: minus + Beschrijving: Aftrekken. Alle getallen worden van het eerste afgetrokken. + Parameters: minus(... parameters, ...) + Voorbeeld: x->x-2 + + delen + Naam: divide + Beschrijving: Delen + Parameters: divide(par1, par2) + Voorbeeld: x->x/2 + + quotient + Naam: quotient + Beschrijving: Quotient + Parameters: quotient(par1, par2) + Voorbeeld: x->quotient(x, 2) + + macht + Naam: power + Beschrijving: Machtsverheffen + Parameters: power(par1, par2) + Voorbeeld: x->x^2 + + wortel + Naam: root + Beschrijving: Worteltrekken + Parameters: root(par1, par2) + Voorbeeld: x->root(x, 2) (2e machtswortel uit x) + + faculteit + Naam: factorial + Beschrijving: Faculteit. factorial(n) is "n faculteit" = n!; voorbeeld: 3!=1*2*3=6 + Parameters: factorial(par1) + Voorbeeld: x->factorial(x) + + and + Naam: and + Beschrijving: Booleaanse and, of en + Parameters: and(... parameters, ...) + Voorbeeld: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Naam: or + Beschrijving: Booleaanse or (of) + Parameters: or(... parameters, ...) + Voorbeeld: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Naam: xor + Beschrijving: Booleaanse xor + Parameters: xor(... parameters, ...) + Voorbeeld: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Naam: not + Beschrijving: Booleaanse not, of niet + Parameters: not(par1) + Voorbeeld: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Naam: gcd + Beschrijving: Grootste gemene deler (GGD) (Engels: greatest common divisor) + Parameters: gcd(... parameters, ...) + Voorbeeld: x->gcd(x, 3) + + lcm + Naam: lcm + Beschrijving: Kleinste gemene deler (KGV) (Engels: least common multiple) + Parameters: lcm(... parameters, ...) + Voorbeeld: x->lcm(x, 4) + + rem + Naam: rem + Beschrijving: Rest (na een deling) (Engels: remainder) + Parameters: rem(par1, par2) + Voorbeeld: x->rem(x, 5) + + factorof + Naam: factorof + Beschrijving: Is factor van (Booleaans) + Parameters: factorof(par1, par2) + Beschrijving: x->factorof(x, 3) (Is drie een factor van x?) + + max + Naam: max + Beschrijving: Maximum + Parameters: max(... parameters, ...) + Voorbeeld: x->max(x, 4) + + min + Naam: min + Beschrijving: Minimum + Parameters: min(... parameters, ...) + Voorbeeld: x->min(x, 4) + + lt + Naam: lt + Beschrijving: Kleiner dan (Engels: less than). lt(a,b)=a<b + Parameters: lt(par1, par2) + Voorbeeld: x->piecewise { x<4 ? 1, ? 0 } + + gt + Naam: gt + Beschrijving: Groter dan (Engels: greater than). gt(a,b)=a>b + Parameters: gt(par1, par2) + Voorbeeld: x->piecewise { x>4 ? 1, ? 0 } + + eq + Naam: eq + Beschrijving: Gelijk aan (Engels: equal). eq(a,b) = a=b + Parameters: eq(par1, par2) + Voorbeeld: x->piecewise { x=4 ? 1, ? 0 } + + neq + Naam: neq + Beschrijving: Ongelijk aan (Eng.: Not equal). neq(a,b) = a≠b + Parameters: neq(par1, par2) + Voorbeeld: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Naam: leq + Beschrijving: Kleiner of gelijk aan (Eng.: Less or equal). leq(a,b) = a≤b + Parameters: leq(par1, par2) + Voorbeeld: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Naam: geq + Beschrijving: Groter of gelijk aan (Eng.: Greater or equal). geq(a,b) = a≥b + Parameters: geq(par1, par2) + Voorbeeld: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Naam: implies + Beschrijving: Booleaanse implicatie (als ..., dan ...) + Parameters: implies(par1, par2) + Voorbeeld: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Naam: approx + Beschrijving: Benadering (Eng.: approximation). approx(a)= a±n + Parameters: approx(par1, par2) + Voorbeeld: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Naam: abs + Beschrijving: Absolute waarde. abs(n)=|n| + Parameters: abs(par1) + Voorbeeld: x->abs(x) + + floor + Naam: floor + Beschrijving: Grootste gehele waarde kleiner dan. (Eng.: floor is vloer). Voorbeeld: floor(3.14) = ⌊3.14⌋ = 3 + Parameters: floor(par1) + Beschrijving: x->floor(x) + + ceiling + Naam: ceiling + Beschrijving: Kleinste gehele waarde groter dan (Eng.: ceiling is plafond). Voorbeeld: ceiling(3.14) = ⌈3.14⌉=4 + Parameters: ceiling(par1) + Voorbeeld: x->ceiling(x) + + sin + Naam: sin + Beschrijving: functie berekent de sinus van een gegeven hoek of reëel getal + Parameters: sin(par1) + Voorbeeld: x->sin(x) + + cos + Naam: cos + Beschrijving: functie berekent de cosinus van een gegeven hoek of reëel getal + Parameters: cos(par1) + Voorbeeld: x->cos(x) + + tan + Naam: tan + Beschrijving: functie berekent de tangens van een gegeven hoek of reëel getal + Parameters: tan(par1) + Voorbeeld: x->tan(x) + + sec + Naam: sec + Beschrijving: Secans (dit is 1/cos) + Parameters: sec(par1) + Voorbeeld: x->sec(x) + + csc + Naam: csc + Beschrijving: Cosecans (dit is 1/sin) + Parameters: csc(par1) + Voorbeeld: x->csc(x) + + cot + Naam: cot + Beschrijving: Cotangens (dit is 1/tan) + Parameters: cot(par1) + Voorbeeld: x->cot(x) + + sinh + Naam: sinh + Beschrijving: Sinus hyperbolicus + Parameters: sinh(par1) + Voorbeeld: x->sinh(x) + + cosh + Naam: cosh + Beschrijving: Cosinus hyperbolicus + Parameters: cosh(par1) + Voorbeeld: x->cosh(x) + + tanh + Naam: tanh + Beschrijving: Tangens hyperbolicus + Parameters: tanh(par1) + Voorbeeld: x->tanh(x) + + sech + Naam: sech + Beschrijving: Secans hyperbolicus + Parameters: sech(par1) + Voorbeeld: x->sech(x) + + csch + Naam: csch + Beschrijving: Cosecans hyperbolicus + Parameters: csch(par1) + Voorbeeld: x->csch(x) + + coth + Naam: coth + Beschrijving: Cotangens hyperbolicus + Parameters: coth(par1) + Voorbeeld: x->coth(x) + + arcsin + Naam: arcsin + Beschrijving: arcsinus, boogsinus, inverse sinus (is NIET 1/sin) + Parameters: arcsin(par1) + Voorbeeld: x->arcsin(x) + + arccos + Naam: arccos + Beschrijving: arccosinus, boogcosinus, inverse cosinus (is NIET 1/cos) + Parameters: arccos(par1) + Voorbeeld: x->arccos(x) + + arctan + Naam: arctan + Beschrijving: arctangens, boogtangens, inverse tangens (is NIET 1/tan) + Parameters: arctan(par1) + Voorbeeld: x->arctan(x) + + arccot + Naam: arccot + Beschrijving: arccotangens, boogcotangens, inverse cotangens (is NIET 1/cot) + Parameters: arccot(par1) + Voorbeeld: x->arccot(x) + + arccosh + Naam: arccosh + Beschrijving: arccosinus hyperbolicus + Parameters: arccosh(par1) + Voorbeeld: x->arccosh(x) + + arccsc + Naam: arccsc + Beschrijving: arccosecans + Parameters: arccsc(par1) + Voorbeeld: x->arccsc(x) + + arccsch + Naam: arccsch + Beschrijving: Arccosecans hyperbolicus + Parameters: arccsch(par1) + Voorbeeld: x->arccsch(x) + + arcsec + Naam: arcsec + Beschrijving: Arcsecans + Parameters: arcsec(par1) + Voorbeeld: x->arcsec(x) + + arcsech + Naam: arcsech + Beschrijving: Arcsecans hyperbolicus + Parameters: arcsech(par1) + Voorbeeld: x->arcsech(x) + + arcsinh + Naam: arcsinh + Beschrijving: Arcsinus hyperbolicus + Parameters: arcsinh(par1) + Voorbeeld: x->arcsinh(x) + + arctanh + Naam: arctanh + Beschrijving: Arctangens hyperbolicus + Parameters: arctanh(par1) + Voorbeeld: x->arctanh(x) + + exp + Naam: exp + Beschrijving: Exponent, e-macht (e^x) + Parameters: exp(par1) + Voorbeeld: x->exp(x) + + ln + Naam: ln + Beschrijving: Logaritme met grondtal e, natuurlijke logaritme + Parameters: ln(par1) + Voorbeeld: x->ln(x) + + log + Naam: log + Beschrijving: Logaritme met grondtal 10 + Parameters: log(par1) + Voorbeeld: x->log(x) + + toegevoegd + Naam: toegevoegd + Beschrijving: Toegevoegd + Parameters: conjugate(par1) + Voorbeeld: x->conjugate(x*i) + + arg + Naam: arg + Beschrijving: Arg + Parameters: arg(par1) + Voorbeeld: x->arg(x*i) + + reëel + Naam: reëel + Beschrijving: Reëel + Parameters: real(par1) + Voorbeeld: x->real(x*i) + + imaginair + Naam: imaginair + Beschrijving: Imaginair + Parameters: imaginary(par1) + Voorbeeld: x->imaginary(x*i) + + sum + Naam: sum + Beschrijving: Som getallenbereik berekenen + Parameters: sum(par1 : var=van..tot) + Voorbeeld: x->sum(t*t:t=0..3) + + product + Naam: product + Beschrijving: Product getallenbereik berekenen + Parameters: product(par1 : var=van..tot) + Voorbeeld: x->product(t+t:t=1..3) + + diff + Naam: diff + Beschrijving: Differentiëren + Parameters: diff(par1 : var) + Voorbeeld: x->(diff(x^2:x))(x) + + card + Naam: card + Beschrijving: Kardinaliteit + Parameters: card(par1) + Voorbeeld: x->card(vector { x, 1, 2 }) + + scalarproduct + Naam: scalarproduct + Beschrijving: Scalair product, inproduct (van vectoren) + Parameters: scalarproduct(... parameters, ...) + Voorbeeld: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Naam: selector + Beschrijving: Het par1-de element selecteren uit lijst of vector par2 + Parameters: selector(par1, par2) + Voorbeeld: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Naam: vereniging + Beschrijving: Vereniging van verzamelingen van het zelfde type (lijsten, vectoren) + Parameters: union(... parameters, ...) + Voorbeeld: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + voor alle + Naam: forall + Beschrijving: Voor alle ... + Parameters: forall(par1 : var) + Voorbeeld: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + er is + Naam: exists + Beschrijving: Er is een ... + Parameters: exists(par1 : var) + Voorbeeld: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Naam: map + Beschrijving: Past functie toe op elk element in de lijst + Parameters: map(par1, par2) + Voorbeeld: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Naam: filter + Beschrijving: verwijdert alle elementen die niet aan een voorwaarde voldoen + Parameters: filter(par1, par2) + Voorbeeld: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transponeren + Naam: transponeren + Beschrijving: transponeren + Parameters: transponeren(par1) + Voorbeeld: x->transponeren(matrix { matrixrij { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/nl/docs/kalgebra/index.docbook b/po/nl/docs/kalgebra/index.docbook new file mode 100644 index 0000000..cb89c8c --- /dev/null +++ b/po/nl/docs/kalgebra/index.docbook @@ -0,0 +1,692 @@ + + + + + + +]> + + + + +Het handboek van &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+&Jaap.Woldringh; +
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Applications 16.04) + + +&kalgebra; kan uw grafische rekenmachine vervangen. Het heeft numerieke, logische, symbolische en analytische functies waarmee u wiskundige uitdrukkingen kunt berekenen, en de resultaten in 2D of 3D kunt plotten. &kalgebra; is gebaseerd op de Mathematical Markup Language (MathML), maar kennis daarvan is niet nodig om &kalgebra; te kunnen gebruiken. + + + +KDE +kdeedu +grafiek +wiskunde +2D +3D +mathML + + +
+ + +Inleiding + +&kalgebra; heeft talloze eigenschappen die de gebruiker kan gebruiken voor allerlei wiskundige bewerkingen, en het grafisch weergeven van de resultaten. Aanvankelijk was dit programma op MathML gericht. Tegenwoordig kan het door iedereen worden gebruikt met enige wiskundige kennis, voor het oplossen van zowel eenvoudige als minder eenvoudige problemen. + +Het heeft eigenschappen zoals: + + + +Een rekenmachine waarin wiskundige functies snel en eenvoudig kunnen worden berekend. +Scriptmogelijkheden voor gevorderde reeksen van berekeningen +Taalmogelijkheden zoals definiëren van functies en automatisch syntaxisaanvullen. +Analysefuncties, zoals symbolisch differentiëren, vectoranalyse, en manipuleren van lijsten. +Functieplotten met een actieve muisaanwijzer voor het grafisch vinden van nulpunten, en andere. +3D plotten voor het visualiseren van 3D functies. +Een woordenlijst van bewerkingen waarin vlot de vele aanwezige functies kunnen worden gevonden. + + +Hier ziet u een schermbeeld van &kalgebra; in actie: + + +Hier ziet u een schermbeeld van het hoofdvenster van &kalgebra; + + + + + + Hoofdvenster van &kalgebra; + + + + +Bij het starten van &kalgebra; ziet de gebruiker een enkel venster, dat de tabbladen bevat voorRekenmachine, 2D-grafiek , 3D-grafiek en Woordenlijst. In deze tabbladen vindt u een invoerveld waarin u functies kunt typen, en een veld waarin de antwoorden worden getoond. + +Altijd kan de gebruiker een sessie beheren met de opties in het hoofdmenu Sessie options: + + + + +&Ctrl; N SessieNieuw +Opent een nieuw venster van &kalgebra; + + + +&Ctrl;&Shift; F SessieVolledig scherm +Volledig scherm in &kalgebra; aan- en uitzetten. Dit kan ook met de knop rechts boven in het venster van &kalgebra;. + + + +&Ctrl; Q SessieAfsluiten +Sluit het programma af. + + + + + + + +Syntaxis +In &kalgebra; wordt een intuïtieve algebraïsche syntaxis gebruikt voor het invoeren van functies, gelijk aan die van veel moderne grafische rekenmachines. U vindt hier een lijst van de fundamentele ingebouwde bewerkingen in &kalgebra;. De auteur van &kalgebra; baseerde de syntaxis op Maxima en maple, om tegemoet te komen aan gebruikers van deze programma's. + +Voor hen die belang stellen in hoe &kalgebra; werkt: door de gebruiker ingevoerde expressies worden in het backend geconverteerd naar MathML. Een rudimentair begrip van de mogelijkheden van MathML kan al veel duidelijk maken van de inwendige werking van &kalgebra;. + +Hier is een lijst van de tot nu toe beschikbare bewerkingen: + ++ - * / : Optellen, aftrekken, vermenigvuldigen en delen. +^, **: Machtverheffen, u kunt ze beiden gebruiken. Het is ook mogelijk de unicode ² -karakters te gebruiken. U kunt machten ook gebruiken voor het berekenen van wortels zoals: a**(1/b) +-> : lambda. Dit is de manier om een of meer vrije variabelen op te geven die in een functie worden ingebonden (bound). Bijvoorbeeld, in de expressie lengte:=(x,y)->(x*x+y*y)^0.5, wordt de bewerking lambda gebruikt om aan te geven dat x en y zullen worden ingebonden als de functie lengte wordt gebruikt. +x=a..b : Wordt gebruikt wanneer het nodig is om een interval af te bakenen (begrensde variabele+bovengrens+ondergrens). Dit betekent dat x waarden krijgt tussen a en b. +() : Wordt gebruikt om een hogere prioriteit aan te geven. +abc(params) : Functies. Wanneer bij het inlezen een functie wordt gevonden, wordt nagegaan of abc een bewerking is. Indien dit zo is, dan wordt het als een bewerking beschouwd, en anders als een door de gebruiker gemaakte functie. +:= : Definitie.Wordt gebruikt om een variabele te definiëren. U kunt dingen doen als x:=3, x:=y, waarin y al of niet is gedefiniëerd, of omtrek :=r->2*pi*r. +? : Piecewise voorwaarden. Met piecewise (betekent: in gedeelten) kunnen we in &kalgebra; voorwaardelijke bewerkingen definiëren. Dit is een alternatief voor het opgeven van een voorwaarde in de vorm van if, elseif, else.Indien we een voorwaarde opgeven voor het '?', dan wordt de bewerking erna alleen uitgevoerd als die voorwaarde waar is, indien een '?' wordt aangetroffen zonder voorwaarde daaraan voorafgaand, dan zal de bewerking erna worden uitgevoerd. Voorbeeld: piecewise { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : plaatshouder in MathML. Kan worden gebruikt om een plaatshouder te definiëren. Wordt het meest met piecewise worden gebruikt. += > >= < <= : Vergelijking van getallen, in de genoemde volgorde gelijk aan, groter dan of gelijk aan, kleiner dan en kleiner dan of gelijk aan + + +U zou mij nu kunnen vragen wat een gebruiker te maken heeft met MathML. Dat is eenvoudig te beantwoorden. Hiermee kunnen we functies gebruiken, zoals cos(), sin(), of elke andere goniometrische functie, sum() of product(). Het geeft niet welke. We kunnen plus(), times() en alles waar een bewerking bij hoort gebruiken. Ook booleaanse functies zijn geïmplementeerd, zodat zoiets als or(1,0,0,0,0) mogelijk is. + + + + +De rekenmachine gebruiken +De rekenmachine van &kalgebra; is supersnel. De gebruiker kan hierin te berekenen expressies invoeren in de modus Berekenen of Evaluatie, afhankelijk van de keuze in het menu Rekenmachine. +In de evaluatiemodus vereenvoudigt &kalgebra; de uitdrukking, zelfs als er een niet gedefinieerde variabele in voorkomt. In de berekeningsmodus berekent &kalgebra; alles, en geeft het een foutmelding wanneer een variabele niet is gedefinieerd. +Naast het in het rekenmachinescherm tonen van de door de gebruiker ingevoerde vergelijkingen en de antwoorden, worden alle gedeclareerde variabelen getoond in een vast scherm rechts. Na dubbelklikken op een variabele ziet u een dialoog waarin u de waarde ervan kunt wijzigen. + +De variabele "ans" is bijzonder, en heeft de waarde van de laatst uitgevoerde berekening. + +Hier volgen wat voorbeelden van functies die in het invoerveld van de rekenmachine kunnen worden ingevoerd: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Hier volgt een schermafbeelding van het rekenmachinevenster na het invoeren van de bovenstaande voorbeelden: + +Schermbeeld van de rekenmachine van &kalgebra; met voorbeelden van expressies + + + + + + Venster van de rekenmachine van &kalgebra; + + + + + +Een gebruiker kan het uitvoeren van een lijst van berekeningen regelen met de menu-opties in het menu Rekenmachine: + + + + +&Ctrl; L RekenmachineScript inlezen +Voert de instructies in een bestand na elkaar uit. Handig om bijvoorbeeld een aantal bibliotheken te definiëren, of met vorig werk verder te kunnen gaan. + + + +&Ctrl; G RekenmachineScript opslaan +Bewaart de sinds het begin van de sessie ingetypte instructies voor later hergebruik. Hierdoor wordt een tekstbestand aangemaakt, dat eenvoudig kan worden bewerkt met een tekstverwerker, zoals Kate. + + + +&Ctrl; S RekenmachineLog exporteren +Slaat de log (logboek) van alle resultaten op in een &HTML;-bestand, zodat u die kunt afdrukken of publiceren. + + + + + + + +2D-grafieken +U kunt een 2D-grafiek in &kalgebra; toevoegen in het tabblad 2D-grafiek. Klik hierin op de knop Toevoegen, u kunt dan een nieuwe functie intypen in het invoerveld. + + +Syntaxis +Indien u een gebruikelijke f(x)-functie wilt gebruiken, dan is het niet nodig die nader te omschrijven, maar is het een f(y)-functie of een functie in poolcoördinaten, dan is het nodig om y-> en q-> toe te voegen als de begrensde variabelen. + +Voorbeelden: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Na het invoeren van een functie klikt u op de knop OK, de grafiek wordt dan in het hoofvenster getoond. + + + + +Eigenschappen +U kunt meerdere grafieken tegelijk plotten. In de Lijst-modus kunt u dit gewoon met de knop Toevoegen doen. U kunt elke grafiek een eigen kleur geven. + +U kunt in de grafieken zoomen en het beeld verplaatsen met behulp van de muis. Met het muiswiel kunt u in- en uitzoomen. Met de linker muisknop kunt u ook een gebied selecteren waarna op dit gebied wordt ingezoomd. Het beeld kan worden verplaatst met behulp van de pijltjes-toetsen. + + + Het afbeeldingsgebied voor 2D-grafieken kan expliciet worden aangegeven in het tabblad Afbeeldingsgebied in het tabblad 2D-grafiek. + + +In het tabblad Lijst kunt u een tabblad Bewerken openen, waarin u met dubbelklikken een functie kunt bewerken of verwijderen, en middels het keuzevakje het tonen van de functienaam aan of uit zetten. +In het menu 2D-grafiek zijn de volgende opties: + +Rooster zichtbaar of onzichtbaar +Bij zoomen aspectverhouding bewaren +Inzoomen (&Ctrl; +) en uitzoomen (&Ctrl; -) +Grafiek (&Ctrl; S) opslaan als afbeeldingsbestand +Aanvankelijke zoom herstellen +Nauwkeurigheid grafieken selecteren + + +Hieronder is een schermbeeld waarin zijn muisaanwijzer geplaatst is op het meest rechtse nulpunt van de functie sin(1/x). Deze grafiek werd met een hoge resolutie gemaakt (omdat die steeds sneller oscilleert nabij de oorsprong). Er is ook een actieve muisaanwijzer beschikbaar waarvan u, als u die over de plot verplaatst, de bijbehorende x- en y-coördinaten kunt aflezen links onder in het scherm. Op de plaats van deze muisaanwijzer wordt ook een raaklijn aan de grafiek van de functie getekend in de plot. + + +Hier ziet u een schermbeeld van het 2D-venster van &kalgebra; + + + + + + 2D-venster van &kalgebra; + + + + + + + + + + +3D-grafieken + +In &kalgebra; kunt u een 3D-grafiek te tekenen in het tabblad 3D-grafiek. Hierin vindt u onderin een invoerveld, waarin u uw functie kunt typen. Voorlopig ondersteunt &kalgebra; alleen impliciete 3d-grafieken die alleen afhankelijk zijn van x en y, zoals (x,y)->x*y, dus waarin z=x*y. + +Voorbeelden: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +U kunt in de grafieken zoomen en het beeld verplaatsen met behulp van de muis. Met het muiswiel kunt u in- en uitzoomen. Als u de &LMB; ingedrukt houdt kunt u de grafiek roteren (draaien) door de muis te verplaatsen. + + Met de linker- en rechter pijltoets kunt u de grafiek roteren (draaien) om de z-as, met de op- en neer pijltjestoetsen roteert u de grafiek om de horizontale as. Door op de knop W te drukken kunt u in de plot inzoomen, en op de knop S uitzoomen. + +In het menu 3D-grafiek zijn deze opties: + + +Grafiek (&Ctrl; S) opslaan als afbeeldingsbestand +Aanvankelijke zoom herstellen in het menu voor 3D-grafieken +In het menu 3D-grafieken grafieken tekenen met stippels, streepjes of aaneengesloten lijnen + + +Hierinder is een schermbeeld van de zogenaamde "sombrero"-functie. In dit geval is de grafiek getekend met aaneengesloten lijnen voor 3D-grafieken. + + +Hier ziet u een schermbeeld van het 3D-venster van &kalgebra; + + + + + + 3D-venster van &kalgebra; + + + + + + + +Woordenlijst + +De woordenlijst bevat een lijst van alle bewerkingen die in &kalgebra; mogelijk zijn. U kunt hierin vinden hoe u een bewerking kunt gebruiken en welke parameters een functie nodig heeft. Hierin kunt u de vele mogelijkheden van &kalgebra; ontdekken. + + Hieronder is een schermbeeld van het opzoeken van de functie cosinus in de woordenlijst. + + +Hier ziet u een schermbeeld van de woordenlijst van &kalgebra; + + + + + + Venster van de woordenlijst van &kalgebra; + + + + + + + +&commands; + + +Dankbetuigingen en Licentie + + +Programma copyright 2005-2009 &Aleix.Pol; + + + +Documentatie copyright 2007 &Aleix.Pol; &Aleix.Pol.mail; + +&meld.fouten;&vertaling.jaap; &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/nl/kalgebra.po b/po/nl/kalgebra.po new file mode 100644 index 0000000..f340ef0 --- /dev/null +++ b/po/nl/kalgebra.po @@ -0,0 +1,1132 @@ +# translation of kalgebraN.po to Nederlands +# KTranslator Generated File +# Nederlandse vertaling van korganizer.po +# Copyright (c) 2000-2007 KDE e.v. +# Copyright (C) 2000-2007 KDE-Nederlands team . +# Niels Reedijk , 2000. +# Wilbert Berendsen , 2003, 2004. +# Bram Schoenmakers , 2004, 2005, 2006, 2007, 2008. +# Tom Albers , 2004. +# Rinse de Vries ,2000-2002, 2003, 2004, 2005, 2006, 2007, 2008. +# Antoon Tolboom , 2008. +# Freek de Kruijf , 2009, 2010, 2014, 2015, 2016. +# Jaap Woldringh , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kalgebraN\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-27 16:31+0100\n" +"Last-Translator: Jaap Woldringh \n" +"Language-Team: Dutch \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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opties: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Plak \"%1\" voor invoer" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Plakken voor invoer" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Fout: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Geïmporteerd: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Fout: Kan %1 niet lezen.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informatie" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Een functie toevoegen/wijzigen" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Voorbeeld" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Van:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Tot:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opties" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Verwijderen" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "De door u opgegeven opties zijn niet goed" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Ondergrens kan niet groter zijn dan de bovengrens" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plot 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plot 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessie" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabelen" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Rekenmachine" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "Rekenm&achine" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Script in&lezen..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Recente scripts" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Script opslaan..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Log &exporteren..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "ans &invoegen..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Uitvoeringsmodus" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Berekenen" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Berekenen" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Functies" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lijst" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Toevoegen" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Op in te zoomen gebied" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-grafiek" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-grafiek" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rooster" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Aspectverhouding &behouden" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolutie" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Laag" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normaal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Hoog" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Erg hoog" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-grafiek" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&grafiek" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Beeld he&rstellen" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Stippels" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Lijnen" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Aaneengesloten" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Bewerkingen" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Woordenlijst" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Zoek op:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "B&ewerken" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Kies een script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-bestand (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Fouten: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Selecteer bestemming van de plot" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Afbeeldingsbestand (*.png);;SVG-bestand (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Klaar" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Variabele toevoegen" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Voer een naam in voor de nieuwe variabele" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Een multiplatform rekenmachine" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Niels Reedijk,Wilbert Berendsen,Bram Schoenmakers,Tom Albers,Rinse de Vries," +"Antoon Tolboom,Freek de Kruijf,Jaap Woldringh" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"n.reedijk@planet.nl,wbsoft@xs4all.nl,bramschoenmakers@kde.nl,tomalbers@kde." +"nl,rinsedevries@kde.nl,atolboo@gmail.com,freekdekruijf@kde.nl," +"jjhwoldringh@kde.nl" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Een variabele toevoegen/bewerken" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Variabele verwijderen" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "De waarde '%1' bewerken" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "niet beschikbaar" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FOUT" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Links:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Boven:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Breedte:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Hoogte:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Toepassen" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "C&onsole" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Console" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Ontwikkelde de mogelijkheid impliciete krommen te tekenen. Verbeteringen " +#~ "van het plotten van functies" + +#~ msgid "Formula" +#~ msgstr "Formule" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Fout: verkeerd type functie" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Klaar: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Fout: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Wissen" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-bestand" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparantie" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Result: %1" +#~ msgstr "Antwoord: %1" + +#~ msgid "To Expression" +#~ msgstr "Naar expressie" + +#~ msgid "To MathML" +#~ msgstr "Naar MathML" + +#~ msgid "Simplify" +#~ msgstr "Vereenvoudigen" + +#~ msgid "Examples" +#~ msgstr "Voorbeelden" + +#~ msgid "We can only draw Real results." +#~ msgstr "Alleen reële resultaten kunnen worden weergegeven." + +#~ msgid "The expression is not correct" +#~ msgstr "De uitdrukking is niet goed" + +#~ msgid "Function type not recognized" +#~ msgstr "Onbekend functietype" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Onjuist type voor functies afhankelijk van %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Impliciete functie niet gedefinieerd in het vlak" + +#~ msgid "center" +#~ msgstr "midden" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Functie" + +#~ msgid "%1 function added" +#~ msgstr "functie %1 toegevoegd" + +#~ msgid "Hide '%1'" +#~ msgstr "'%1' verbergen" + +#~ msgid "Show '%1'" +#~ msgstr "'%1' tonen" + +#~ msgid "Selected viewport too small" +#~ msgstr "Het geselecteerde op in te zoomen gebied is te klein" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Beschrijving" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parameters" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Voorbeeld" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=van..naar" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parameters, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Optellen" + +#~ msgid "Multiplication" +#~ msgstr "Vermenigvuldigen" + +#~ msgid "Division" +#~ msgstr "Delen" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Aftrekken. Trekt alle waarden van de eerste waarde af." + +#~ msgid "Power" +#~ msgstr "Macht" + +#~ msgid "Remainder" +#~ msgstr "Rest" + +#~ msgid "Quotient" +#~ msgstr "Deling" + +#~ msgid "The factor of" +#~ msgstr "De factor van" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Faculteit. factorial(n)=n faculteit=1*2*3*...*n=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Functie voor het berekenen van de sinus van een gegeven hoek" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Functie voor het berekenen van de cosinus van een gegeven hoek" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Functie voor het berekenen van de tangens van een gegeven hoek" + +#~ msgid "Secant" +#~ msgstr "Secans" + +#~ msgid "Cosecant" +#~ msgstr "Cosecans" + +#~ msgid "Cotangent" +#~ msgstr "Cotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyperbolische sinus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperbolische cosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyperbolische tangens" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyperbolische secans" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperbolische cosecans" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperbolische cotangens" + +#~ msgid "Arc sine" +#~ msgstr "Arcsinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arccosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arctangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arccotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hyperbolische arctangens" + +#~ msgid "Summatory" +#~ msgstr "Somfunctie" + +#~ msgid "Productory" +#~ msgstr "Productfunctie" + +#~ msgid "For all" +#~ msgstr "Voor alle" + +#~ msgid "Exists" +#~ msgstr "Bestaat" + +#~ msgid "Differentiation" +#~ msgstr "Differentiëren" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hyperbolische arcsinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hyperbolische arccosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arccosecans" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hyperbolische arccosecans" + +#~ msgid "Arc secant" +#~ msgstr "Arcsecans" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hyperbolische arcsecans" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logaritme met grondtal e" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logaritme met grondtal 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absolute waarde: abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Floor. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Ceil. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Groter dan. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : grenzen" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Waarde" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Geef een correcte bewerking op" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Onbekende naam: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Kon niet vinden wat te doen na een voorwaarde." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Voor dit type zijn er geen grenzen" + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "De ondergrens is groter dan de bovengrens" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Onder- of bovengrens is niet goed." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Gedefinieerde variabele is cyclisch (afhankleijk van zichzelf)" + +#~ msgid "The result is not a number" +#~ msgstr "Het antwoord is geen getal" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Onverwacht einde aan de invoer" + +#~ msgid "Unknown token %1" +#~ msgstr "Onbekend teken: %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "Voor %1 zijn minstens 2 parameters nodig" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "Voor %1 zijn %2 parameters nodig" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Grens onbreekt voor '%1'" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Onbekende begrenzing voor '%1'" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 grenzen ontbreken voor '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Foute declaratie" + +#~ msgid "Empty container: %1" +#~ msgstr "Lege plaatshouder: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "" +#~ "Er kunnen alleen voorwaarden voorkomen binnen structuren in gedeelten." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Twee parameters met dezelfde naam zoals '%1' niet toegestaan." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "De parameter anders moet de laatste zijn" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 is geen goede voorwaarde binnen gedeelte van een structuur" + +#~ msgid "We can only declare variables" +#~ msgstr "Er kunnen alleen variabelen worden gedeclareerd" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Alleen begrensde variabelen zijn mogelijk" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Fout bij het inlezen: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Plaatshouder onbekend: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Kan de waarde %1 niet intern weergeven." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Er kunnen geen van %1 afgeleide bewerkingen zijn." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "'%1' is geen bewerking." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Lege vectoren zijn niet toegestaan" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Niet ondersteund/onbekend: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "%1 verwacht en niet '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Rechterhaakje ontbreekt" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Aantal rechter haakjes klopt niet" + +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Onverwacht teken: %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Onbekend teken %1" + +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Kon geen type vinden voor '%1'" + +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Het domein moet een vector zijn of een lijst." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Fout aantal parameters voor '%2'. Moet 1 parameter zijn." +#~ msgstr[1] "Fout aantal parameters voor '%2'. Moet %1 parameters zijn." + +#~ msgid "Could not call '%1'" +#~ msgstr "Kan '%1' niet aanroepen" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Kan '%1' niet oplossen" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Het type van de variabele '%1' klopt niet" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Kan het type van de structuur in gedeelten niet vaststellen" + +#~ msgid "Unexpected type" +#~ msgstr "Onverwacht type" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Kan '%1' niet naar '%2' omzetten" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Onbekend teken %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Kan de rest van 0 niet berekenen." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Kan 0 niet in factoren ontbinden." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Kan de KGV van 0 niet berekenen." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Kan een waarde %1 niet berekenen" + +#~ msgid "Invalid index for a container" +#~ msgstr "Ongeldige index voor een plaatshouder" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "" +#~ "Kan de bewerking niet uivoeren op vectoren met een verschillend aantal " +#~ "componenten." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Kon de %1 van een vector niet berekenen" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Kon de %1 van een lijst niet berekenen" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Kon de afgeleide van '%1' niet berekenen" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Kon '%1'en '%2' niet vereenvoudigen." + +#~ msgid "Incorrect domain." +#~ msgstr "Domein is niet juist." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "De parametrische functie geeft geen vector terug" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Er is een twee-dimensionale vector nodig" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "" +#~ "De afzonderlijke functies van een parametrische functie moeten scalair " +#~ "zijn" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "De %1 afgeleide is niet geïmplementeerd." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Begrijp de reële waarde niet: %1" + +#~ msgid "Subtraction" +#~ msgstr "Aftrekken" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Fout: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Selecteer een element in een plaatshouder" + +#~ msgid " Plot 3D" +#~ msgstr " Plot 3D" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Fout: Er zijn waarden nodig om een grafiek te kunnen tekenen" + +#~ msgid "Generating... Please wait" +#~ msgstr "Wordt aangemaakt... even geduld alstublieft" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Fout aantal parameters, 1 parameter voor '%2'" +#~ msgstr[1] "Fout aantal parameters, %1 parameters voor '%2'" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "Log Op&slaan" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Hoog" + +#~ msgid "We can only call functions" +#~ msgstr "Alleen functies kunnen worden weergegeven." + +#~ msgid "Wrong parameter count" +#~ msgstr "Fout aantal parameters" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "waar" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "onwaar" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid parameter count." +#~ msgstr "Fout aantal parameters." + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Save the expression" +#~ msgstr "De expressie opslaan" + +#~ msgid "Calculate the expression" +#~ msgstr "De expressie berekenen" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Kan '%1' niet op '%2' toepassen" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Kan bewerking niet op '%1' toepassen" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Kan type van '%1' niet controleren" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Verkeerd aantal parameters bij het aanroepen van '%1'" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Ondergrens mag niet ≥ bovengrens zijn" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Een ongeldige functie wordt aangeroepen" diff --git a/po/nl/kalgebramobile.po b/po/nl/kalgebramobile.po new file mode 100644 index 0000000..9839664 --- /dev/null +++ b/po/nl/kalgebramobile.po @@ -0,0 +1,208 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2018. +# Jaap Woldringh , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 16:11+0100\n" +"Last-Translator: jaap \n" +"Language-Team: Dutch \n" +"Language: nl\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 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Een multiplatform rekenmachine" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Freek de Kruijf, Jaap Woldringh" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "freekdekruijf@kde.nl, jjhwoldringh@kde.nl" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Een eenvoudige wetenschappelijke rekenmachine" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Script inlezen..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Script opslaan..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Log exporteren..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Berekenen..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Berekenen..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Log wissen" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopieer \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D-plot" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D-plot" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Opslaan..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Rooster tonen" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Viewport herstellen" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Alles wissen" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Fout: stapgrootte mag niet 0 zijn" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Fout: begin en einde zijn gelijk" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Fout: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Invoer:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Van:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Tot:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Stapgrootte:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Doen" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Antwoorden:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Te berekenen expressie..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra wordt u aangeboden door de vriendelijke community van KDE en KDE Edu vanuit een omgeving voor Vrije Software." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "U kunt meer informatie vinden over KAlgebra, als u dit wenst, op de " +#~ "officiële website en in de wiki voor gebruikers.
Mocht u een probleem tegenkomen," +#~ "dan vragen we u dit te melden op onze " +#~ "foutreportagepagina." + +#~ msgid "Results" +#~ msgstr "Antwoorden" + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information " +#~ msgstr "Indien u meer wilt weten over KAlgebra, vindt u meer informatie" diff --git a/po/nl/plasma_applet_kalgebraplasmoid.po b/po/nl/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..b47cfbd --- /dev/null +++ b/po/nl/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Freek de Kruijf , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 21:39+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Voer een expressie in." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/nn/kalgebra.po b/po/nn/kalgebra.po new file mode 100644 index 0000000..1386769 --- /dev/null +++ b/po/nn/kalgebra.po @@ -0,0 +1,435 @@ +# Translation of kalgebra to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2007, 2008, 2009, 2010, 2018, 2019. +# Eirik U. Birkeland , 2008. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-03-22 22:00+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 18.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Val: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Lim inn «%1» til inndata" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Lim inn til inndata" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Feil: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importert: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Feil: Klarte ikkje lasta %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informasjon" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Legg til / rediger funksjon" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Preview" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Frå:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Val" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Fjern" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Val du oppgav er ikkje rette" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Nedre grense kan ikkje vera større enn øvre grense" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Plott i 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Plott i 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Økt" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variablar" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Kalkulator" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "K&alkulator" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Opna skript …" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nyleg brukte skript" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Lagra skript …" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksporter logg …" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Set inn svar …" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Køyremodus" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Rekn ut" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluer" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funksjonar" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Legg til" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Visingsrute" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D-graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D-graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rutenett" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Hald fast på høgd/breidd-forhold" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Oppløysing" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Dårleg" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Vanleg" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Fin" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Veldig fin" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D-graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D-&graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Nullstill vising" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Prikkar" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Heiltrekt" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operasjonar" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Ordliste" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Sjå etter:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Redigering" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Vel eit skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fil (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Feil: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Vel kor plottet skal visast" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Biletfil (*.png);;SVG-fil (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Klar" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Legg til variabel" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Skriv eit namn på den nye variabelen" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Portabel kalkulator" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006–2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Karl Ove Hufthammer" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "karl@huftis.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Legg til / rediger variabel" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Fjern variabel" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Rediger verdien «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ikkje tilgjengeleg" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "FEIL" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Venstre:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Topp:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Breidd:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Høgd:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Bruk" diff --git a/po/nn/kalgebramobile.po b/po/nn/kalgebramobile.po new file mode 100644 index 0000000..dd6a8e5 --- /dev/null +++ b/po/nn/kalgebramobile.po @@ -0,0 +1,177 @@ +# Translation of kalgebramobile to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-04-10 20:00+0200\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 18.12.3\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Portabel kalkulator" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© 2006–2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Karl Ove Hufthammer" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "karl@huftis.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra mobil" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Enkel vitskapleg kalkulator" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Opna skript …" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Lagra skript …" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Eksporter logg …" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Evaluer …" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Rekn ut …" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Tøm logg" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopier «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D-plott" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D-plott" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Lagra …" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Vis rutenett" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Tilbakestill visingsrute" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Tøm alt" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Feil: Steget kan ikkje vera 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Feil: Start- og sluttverdiane er like" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Feil: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Inndata:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Frå:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Til:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Steg:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Køyr" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultat:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Uttrykk å rekna ut …" diff --git a/po/nn/plasma_applet_kalgebraplasmoid.po b/po/nn/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..d439f27 --- /dev/null +++ b/po/nn/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,35 @@ +# Translation of plasma_applet_kalgebraplasmoid to Norwegian Nynorsk +# +# Karl Ove Hufthammer , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2016-10-15 11:41+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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Skriv inn eit uttrykk." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/pa/kalgebra.po b/po/pa/kalgebra.po new file mode 100644 index 0000000..fe9dfd3 --- /dev/null +++ b/po/pa/kalgebra.po @@ -0,0 +1,653 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2009, 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2011-06-30 07:14+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" +"Language: pa\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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "ਚੋਣਾਂ: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "ਇੰਪੁੱਟ ਲਈ \"%1\" ਚੇਪੋ" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "ਇੰਪੁੱਟ ਲਈ \"%1\" ਚੇਪੋ" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    ਗਲਤੀ: %1
  • %2
" + +#: consolemodel.cpp:110 +#, fuzzy, kde-format +msgid "Imported: %1" +msgstr "ਇੰਪੋਰਟ ਕੀਤੇ %1 - %2 (%3)" + +#: consolemodel.cpp:112 +#, fuzzy, kde-format +#| msgid "
    Error: %1
  • %2
" +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    ਗਲਤੀ: %1
  • %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "ਜਾਣਕਾਰੀ" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ/ਸੋਧੋ" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "ਝਲਕ" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "ਤੋਂ:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "ਵੱਲ:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "ਚੋਣਾਂ" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ਠੀਕ ਹੈ" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "'%1' ਹਟਾਓ" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "ਸ਼ੈਸ਼ਨ" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "ਵੇਰੀਬਲ" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "ਗਣਨਾ" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "ਗਣਨਾ" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "ਸਕ੍ਰਿਪਟ ਲੋਡ ਕਰੋ(&L)..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "ਤਾਜ਼ਾ ਸਕ੍ਰਿਪਟਾਂ" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "ਸਕ੍ਰਿਪਟ ਸੰਭਾਲੋ(&S)..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "ਗਣਨਾ" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "ਮੁੱਲਾਂਕਣ" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "ਫੰਕਸ਼ਨ" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "ਲਿਸਟ" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "ਸ਼ਾਮਲ(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "ਵਿਊਪੋਰਟ" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D ਗਰਾਫ਼" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D ਗਰਾਫ਼" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "ਗਰਿੱਡ(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "ਅਕਾਰ ਅਨੁਪਾਤ ਰੱਖੋ(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "ਰੈਜ਼ੋਲੁਸ਼ਨ" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "ਘੱਟ" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "ਸਧਾਰਨ" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "ਵਧੀਆ" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "ਬਹੁਤ ਵਧੀਆ" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D ਗਰਾਫ਼" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D ਗਰਾਫ਼(&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "ਬਿੰਦੀਆਂ" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "ਲਾਈਨਾਂ" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "ਗੂੜ੍ਹਾ" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "ਓਪਰੇਸ਼ਨ" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "ਡਿਕਸ਼ਨਰੀ(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "ਖੋਜ:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "ਸੋਧ ਜਾਰੀ(&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "ਸਕ੍ਰਿਪਟ ਚੁਣੋ" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "ਸਕ੍ਰਿਪਟ (*.kal)" + +#: kalgebra.cpp:528 +#, fuzzy, kde-format +#| msgid "Text File (*)" +msgid "HTML File (*.html)" +msgstr "ਟੈਕਸਟ ਫਾਇਲ (*)" + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgctxt "Function parameter separator" +#| msgid ", " +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "ਗਲਤੀ: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|ਚਿੱਤਰ ਫਾਇਲ\n" +"*.svg|SVG ਫਾਇਲ" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "ਤਿਆਰ" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "ਵੇਰੀਬਲ ਸ਼ਾਮਲ" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "ਕੈਲਕੂਲੇਟਰ" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "ਵੇਰੀਬਲ" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' ਮੁੱਲ ਸੋਧੋ" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ਉਪਲੱਬਧ ਨਹੀਂ" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "*ਗਲਤ*" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "ਖੱਬਾ:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "ਉੱਤੇ:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "ਚੌੜਾਈ:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "ਉਚਾਈ:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "ਲਾਗੂ ਕਰੋ" + +#~ msgid "C&onsole" +#~ msgstr "ਕਨਸੋਲ(&o)" + +#~ msgid "&Console" +#~ msgstr "ਕਨਸੋਲ(&C)" + +#~ msgid "Formula" +#~ msgstr "ਫਾਰਮੂਲਾ" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "ਮੁਕੰਮਲ: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "ਗਲਤੀ: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "ਸਾਫ਼ ਕਰੋ" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG ਫਾਇਲ" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "ਟਰਾਂਸਪਰੇਸੀ(&T)" + +#~ msgid "Type" +#~ msgstr "ਕਿਸਮ" + +#~ msgid "Result: %1" +#~ msgstr "ਨਤੀਜਾ: %1" + +#~ msgid "To Expression" +#~ msgstr "ਸਮੀਕਰਨ ਲਈ" + +#~ msgid "Simplify" +#~ msgstr "ਸਧਾਰਨ ਕਰੋ" + +#~ msgid "Examples" +#~ msgstr "ਉਦਾਹਰਨਾਂ" + +#~ msgid "center" +#~ msgstr "ਸੈਂਟਰ" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "ਨਾਂ" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "ਫੰਕਸ਼ਨ" + +#~ msgid "%1 function added" +#~ msgstr "%1 ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕੀਤਾ" + +#~ msgid "Hide '%1'" +#~ msgstr "'%1' ਓਹਲੇ" + +#~ msgid "Show '%1'" +#~ msgstr "'%1' ਵੇਖੋ" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "ਵੇਰਵਾ" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "ਪੈਰਾਮੀਟਰ" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "ਉਦਾਹਰਨ" + +#, fuzzy +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "ਪੈਰਾਮੀਟਰ" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "ਜੋੜ" + +#~ msgid "Multiplication" +#~ msgstr "ਗੁਣਾ" + +#~ msgid "Division" +#~ msgstr "ਭਾਗ" + +#~ msgid "Power" +#~ msgstr "ਪਾਵਰ" + +#~ msgid "Hyperbolic sine" +#~ msgstr "ਹਾਈਪਰਬੋਲ ਸਾਈਨ" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperbolic cosine" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "ਹਾਈਪਰਬੋਲਿਕ ਟੇਜੈਂਟ" + +#~ msgid "Arc sine" +#~ msgstr "Arc sine" + +#~ msgid "Arc cosine" +#~ msgstr "Arc cosine" + +#~ msgid "Arc tangent" +#~ msgstr "Arc tangent" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "ਸਧਾਰਨ" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Minimum" +#~ msgstr "ਘੱਟੋ-ਘੱਟ" + +#~ msgid "Maximum" +#~ msgstr "ਵੱਧੋ-ਵੱਧ" + +#~ msgid "Root" +#~ msgstr "ਰੂਟ" + +#~ msgctxt "n-ary function prototype" +#~ msgid "%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr ": ਬਾਊਂਡ" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "ਮੁੱਲ" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#, fuzzy +#~| msgctxt "@title:column" +#~| msgid "Function" +#~ msgid "Subtraction" +#~ msgstr "ਫੰਕਸ਼ਨ" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "ਗਲਤੀ: %2" + +#~ msgid "Generating... Please wait" +#~ msgstr "ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ... ਉਡੀਕੋ" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "ਲਾਗ ਸੰਭਾਲੋ(&S)" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "ਵਧੀਆ" + +#~ msgid "Mode" +#~ msgstr "ਮੋਡ" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" diff --git a/po/pa/plasma_applet_kalgebraplasmoid.po b/po/pa/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..b5b2684 --- /dev/null +++ b/po/pa/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# A S Alam , 2011. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-06-30 07:43+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \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 1.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "ਕੁਝ ਸਮੀਕਰਨ ਦਿਉ।" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "ਕੇ-ਐਲਜਬਰਾ" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/pl/kalgebra.po b/po/pl/kalgebra.po new file mode 100644 index 0000000..8dde0ec --- /dev/null +++ b/po/pl/kalgebra.po @@ -0,0 +1,1150 @@ +# translation of kalgebra.po to Polish +# translation of kalgebra.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Tadeusz Hessel , 2007. +# Marta Rybczyńska , 2007, 2008, 2010, 2013. +# Maciej Wikło , 2008, 2009. +# Franciszek Janowski , 2009. +# Ireneusz Gierlach , 2010, 2011. +# Łukasz Wojniłowicz , 2011, 2012, 2014, 2015, 2016, 2017, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-01-23 19:50+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 19.03.70\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opcje: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Wklej \"%1\" do wejścia" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Wklej do wejścia" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Błąd: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Zaimportowane: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Błąd: Nie można wczytać %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informacja" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Dodaj/modyfikuj funkcję" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Podgląd" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opcje" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Usuń" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Podane opcje nie są poprawne" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Dolny limit nie może być większy niż górny limit" + +# 2D albo dwuwymiarowy +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Wykres 2D" + +# 3D albo trójwymiarowy +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Wykres 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesja" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Zmienne" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Kalkulator" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "K&alkulator" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Wczytaj skrypt..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Ostatnie skrypty" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Zapi&sz skrypt..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Eksportuj dziennik..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "Wstaw odpow&iedź..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Tryb wykonywania" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Oblicz" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Wykonaj" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcje" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "Dod&aj" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Obszar wyświetlania" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&Wykres 2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Wykres 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Siatka" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Zachowaj proporcje" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rozdzielczość" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Słaba" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normalna" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Dobra" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Bardzo dobra" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Wykres &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Wykres 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "W&yczyść widok" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Kropki" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linie" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Ciągłe" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacje" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Słownik" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Znajdź:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Edytowanie" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Wybierz skrypt" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skrypt (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Plik HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Błędy: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Wybierz gdzie umieścić narysowany wykres" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Plik obrazu (*.png);;Plik SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Gotowy" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Dodaj zmienną" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Podaj nazwę nowej zmiennej" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Kalkulator kieszonkowy" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Łukasz Wojniłowicz" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "lukasz.wojnilowicz@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Dodaj/zmień zmienną" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Usuń zmienną" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Zmień wartość '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "niedostępne" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ŹLE" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Od lewej:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Od góry:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Szerokość:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Wysokość:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Zastosuj" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "Plik PNG (*.png);;Dokument PDF (*.pdf);;Dokument X3D (*.x3d));;Dokument " +#~ "STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "T&erminal" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Terminal" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Stworzył funkcję do rysowania bezwarunkowych krzywych. Ulepszenia w " +#~ "wykresach funkcji." + +#~ msgid "Formula" +#~ msgstr "Formuła" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Błąd: nieprawidłowy typ funkcji" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Wykonano: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Błąd: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Wyczyść" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Plik PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Przezroczystość" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Result: %1" +#~ msgstr "Wynik: %1" + +#~ msgid "To Expression" +#~ msgstr "Do wyrażenia" + +#~ msgid "To MathML" +#~ msgstr "Do MathML" + +#~ msgid "Simplify" +#~ msgstr "Uprość" + +#~ msgid "Examples" +#~ msgstr "Przykłady" + +#~ msgid "We can only draw Real results." +#~ msgstr "Możemy pokazać tylko wyniki będące liczbami rzeczywistymi." + +#~ msgid "The expression is not correct" +#~ msgstr "Wyrażenie nie jest poprawne" + +#~ msgid "Function type not recognized" +#~ msgstr "Nie rozpoznany typ funkcji" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Typ funkcji nie jest odpowiedni dla funkcji zależnych od %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Bezwarunkowa funkcja niezdefiniowana w płaszczyźnie" + +#~ msgid "center" +#~ msgstr "środek" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nazwa" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funkcja" + +#~ msgid "%1 function added" +#~ msgstr "Funkcja %1 dodana" + +#~ msgid "Hide '%1'" +#~ msgstr "Ukryj '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Pokaż '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Wybrano za mały obszar wyświetlania" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametry" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Przykład" + +# var albo zmienna. zależy od kontekstu. +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=od..do" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametry, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Dodawanie" + +#~ msgid "Multiplication" +#~ msgstr "Mnożenie" + +#~ msgid "Division" +#~ msgstr "Dzielenie" + +# Will remove brzmi troche jak usunie.... a nie odejmie... +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Odejmowanie. Odejmie wszystkie wartości od wartości pierwszej." + +#~ msgid "Power" +#~ msgstr "Potęga" + +#~ msgid "Remainder" +#~ msgstr "Reszta" + +#~ msgid "Quotient" +#~ msgstr "Iloraz" + +#~ msgid "The factor of" +#~ msgstr "Dzielnik" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Silnia. silnia(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funkcja do obliczenia sinusa danego kąta" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funkcja do obliczenia cosinusa danego kąta" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funkcja do obliczenia tangensa danego kąta" + +#~ msgid "Secant" +#~ msgstr "Secans" + +#~ msgid "Cosecant" +#~ msgstr "Cosecans" + +#~ msgid "Cotangent" +#~ msgstr "Cotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinus hiperboliczny" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Cosinus hiperboliczny" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangens hiperboliczny" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Secans hiperboliczny" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Cosecans hiperboliczny" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Cotangens hiperboliczny" + +#~ msgid "Arc sine" +#~ msgstr "Arcus sinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arcus cosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arcus tangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arcus cotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hiperboliczny arcus tangens" + +#~ msgid "Summatory" +#~ msgstr "Sumujący" + +#~ msgid "Productory" +#~ msgstr "Mnożący" + +#~ msgid "For all" +#~ msgstr "Dla wszystkich" + +#~ msgid "Exists" +#~ msgstr "Istniejące" + +#~ msgid "Differentiation" +#~ msgstr "Pochodna" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hiperboliczny arcus sinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hiperboliczny arcus cosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arcus cosecans" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hiperboliczny arcus cosecans" + +#~ msgid "Arc secant" +#~ msgstr "Arcus secans" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hiperboliczny arcus secans" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Funkcja wykładnicza (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logarytm naturalny" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logarytm dziesiętny" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Wartość bezwzględna. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Wartość \"podłoga\" (floor). floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Wartość \"sufit\" (ceil). ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maksimum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Większe niż. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : granice" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Wartość" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Musisz określić poprawną operację" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Nieznany identyfikator: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "" +#~ "Nie można było znaleźć prawidłowego wyboru dla stwierdzenia warunku." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Ograniczenia dla tego typu nie są obsługiwane." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Dolny limit jest większy niż górny." + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Górny lub dolny limit jest nieprawidłowy." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Zdefiniowano zmienną cykliczną" + +#~ msgid "The result is not a number" +#~ msgstr "Wynik nie jest cyfrą" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Nieoczekiwanie osiągnięto koniec wejścia" + +#~ msgid "Unknown token %1" +#~ msgstr "Nieznany token %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 potrzebuje przynajmniej 2 parametrów" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 wymaga %2 parametrów" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Brak granicy dla '%1'" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Nieoczekiwana granica dla %1" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1brak granicy na '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Nieprawidłowa deklaracja" + +#~ msgid "Empty container: %1" +#~ msgstr "Pusty kontener: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Można podawać tylko warunki w przedziałach." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Nie można posiadać dwóch parametrów o tej samej nazwie jak '%1'." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parametr otherwise powinien być ostatni" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 nie jest prawidłowym warunkiem w przedziale" + +#~ msgid "We can only declare variables" +#~ msgstr "Możemy jedynie zadeklarować zmienne" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Można podawać tylko ograniczone zmienne" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Błąd podczas parsowania: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Nieznany kontener: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Nie można kodyfikować wartości %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Operator %1 nie może mieć kontekstów potomnych." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Element '%1' nie jest operatorem." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Nie obsługuj pustych wektorów" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nieobsługiwany/nieznany: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Oczekiwano %1 zamiast '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Brak prawidłowego nawiasu" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Niezbalansowany prawidłowy nawias" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Nieoczekiwany token %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Nieoczekiwany token %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Nie można obliczyć różniczki dla '%1'" + +#, fuzzy +#~| msgid "The domain should be either a vector or a list." +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Domena powinna być albo wektorem albo listą." + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "" +#~ "Nieprawidłowa liczba parametrów dla '%2'. Powinien być 1 parametr." +#~ msgstr[1] "" +#~ "Nieprawidłowa liczba parametrów dla '%2'. Powinno być %1 parametrów." +#~ msgstr[2] "" +#~ "Nieprawidłowa liczba parametrów dla '%2'. Powinno być %1 parametrów." + +#~ msgid "Could not call '%1'" +#~ msgstr "Nie można wywołać '%1' " + +#~ msgid "Could not solve '%1'" +#~ msgstr "Nie można obliczyć wartości '%1'" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Niespójny typ dla zmiennej '%1'" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Nie można ustalić typu dla przedziału" + +#~ msgid "Unexpected type" +#~ msgstr "Nieoczekiwany typ" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Nie można skonwertować '%1' na '%2'" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Nieznany token %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Nie można obliczyć reszty z zera." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Nie można obliczyć współczynnika zera." + +# LCM = Least Common Multiple +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Nie można obliczyć najmniejszej wspólnej wielokrotności zera." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Nie można obliczyć wartości %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Nieprawidłowy indeks kontenera" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Nie można działać na wektorach innych rozmiarów." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Nie można obliczyć %1 wektora" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Nie można obliczyć listy %1" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Nie można obliczyć różniczki dla '%1'" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Nie można zredukować '%1' i '%2'." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Funkcja parametryczna nie zwraca wektora" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Potrzebny jest dwuwymiarowy wektor" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Elementy funkcji parametrycznej powinny być skalarne" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Pochodna %1 nie została zaimplementowana." + +#~ msgid "Incorrect domain." +#~ msgstr "Nieprawidłowy zakres." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Nie zrozumiano wartości rzeczywistej: %1" + +#~ msgid "Subtraction" +#~ msgstr "Odejmowanie" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Błąd: %2" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Błąd: potrzebne są wartości, aby narysować wykres" + +#~ msgid "Select an element from a container" +#~ msgstr "Wybierz element ze zbioru" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Nie można ustawić dolnej granicy ≥ górnej granicy" + +#~ msgid "Generating... Please wait" +#~ msgstr "Generowanie... Proszę czekać" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Zapisz do dziennika" + +#~ msgid "Mode" +#~ msgstr "Tryb" + +#~ msgid "Save the expression" +#~ msgstr "Zapisz wyrażenie" + +#~ msgid "Calculate the expression" +#~ msgstr "Oblicz wyrażenie" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#, fuzzy +#~| msgid "We can only draw Real results." +#~ msgid "We can only call functions" +#~ msgstr "Możemy pokazać tylko wyniki będące liczbami rzeczywistymi." + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Nieznana ograniczona zmienna: %1" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Need a var name and a value" +#~ msgstr "Potrzebna jest nazwa zmiennej i wartość" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Funkcja %1 nie istnieje" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Zmienna %1 nie istnieje" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Zła liczba parametrów, powinny być 2 parametry - wybrany indeks i " +#~ "kontener." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "przedział albo inaczej w nieprawidłowym miejscu" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Brak zmiennych granicznych dla tej sumy" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Brak limitów w operacji dodawania" + +#~| msgid "We can only select a containers value with its integer index" +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "" +#~ "Można wybrać tylko wartość kontenera, będącą indeksem liczby całkowitej" + +#~ msgid "Trying to call an empty or invalid function" +#~ msgstr "Próba wywołania pustej lub niepoprawnej funkcji" + +#~ msgid "From parser:" +#~ msgstr "Od analizatora:" + +#~ msgctxt "" +#~ "%1 the operation name, %2 and %3 is the opearation we wanted to calculate" +#~ msgid "Cannot calculate the %1(%2, %3)" +#~ msgstr "Nie można obliczyć %1(%2, %3)" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Próba skodyfikowania nieznanej wartości: %1" diff --git a/po/pl/kalgebramobile.po b/po/pl/kalgebramobile.po new file mode 100644 index 0000000..02315fb --- /dev/null +++ b/po/pl/kalgebramobile.po @@ -0,0 +1,200 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# +# Łukasz Wojniłowicz , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-05-25 07:34+0200\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" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 19.07.70\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Przenośny kalkulator" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Łukasz Wojniłowicz" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "lukasz.wojnilowicz@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "Mobilna KAlgebra" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Posty kalkulator naukowy" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Wczytaj skrypt..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skrypt (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Zapisz skrypt..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Eksportuj dziennik..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Oszacuj..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Oblicz..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Wyczyść dziennik" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopiuj \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Wykres 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Wykres 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Zapisz..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Pokaż siatkę" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Wyzeruj pole widzenia" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Wyczyść wszystko" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Błąd: Krok nie może być 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Błędy: Początek i koniec są takie same" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Błąd: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Wejście:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Krok:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Uruchom" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Wyniki:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Wyrażenie do obliczenia..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra masz dzięki naszej kochanej społeczności KDE oraz KDE Edu ze środowiska " +#~ "Wolnego Oprogramowania." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Jeśli chcesz dowiedzieć się więcej o KAlgebrze, to zajrzyj naoficjalną " +#~ "stronę i na wiki " +#~ "użytkowników.
Jeśli napotkasz jakikolwiek problem z tym " +#~ "oprogramowaniem, to proszę zgłoś go w naszym systemie zarządzania błędami." diff --git a/po/pl/plasma_applet_kalgebraplasmoid.po b/po/pl/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..7257c67 --- /dev/null +++ b/po/pl/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Łukasz Wojniłowicz , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 15:54+0200\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" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.5\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Wpisz jakieś wyrażenie." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/pt/docs/kalgebra/commands.docbook b/po/pt/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..bd12321 --- /dev/null +++ b/po/pt/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Comandos suportados pelo KAlgebra + mais + Nome: mais + Descrição: Adição + Parâmetros plus(... parâmetros, ...) + Exemplo: x->x+2 + + vezes + Nome: vezes + Descrição: Multiplicação + Parâmetros: vezes(... parâmetros, ...) + Exemplo: x->x*2 + + menos + Nome: menos + Descrição: Subtracção. Irá remover todos os valores do primeiro. + Parâmetros: menos(... parâmetros, ...) + Exemplo: x->x-2 + + dividir + Nome: dividir + Descrição: Divisão + Parâmetros: dividir(par1, par2) + Exemplo: x->x/2 + + quociente + Nome: quociente + Descrição: Quociente + Parâmetros: quociente(par1, par2) + Exemplo: x->quociente(x, 2) + + potência + Nome: potência + Descrição: Potência + Parâmetros: potência(par1, par2) + Exemplo: x->x^2 + + raiz + Nome: raiz + Descrição: Raiz + Parâmetros: raiz(par1, par2) + Exemplo: x->raiz(x, 2) + + factorial + Nome: factorial + Descrição: Factorial. factorial(n)=n! + Parâmetros: factorial(par1) + Exemplo: x->factorial(x) + + e + Nome: e + Descrição: 'E' booleano + Parâmetros: e(... parâmetros, ...) + Exemplo: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + ou + Nome: ou + Descrição: 'ou' booleano + Parâmetros: ou(... parâmetros, ...) + Exemplo: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Nome: xor + Descrição: 'ou exclusivo' booleano + Parâmetros: xor(... parâmetros, ...) + Exemplo: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + nao + Nome: nao + Descrição: 'não' booleano + Parâmetros: nao(par1) + Exemplo: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Nome: gcd + Descrição: Máximo divisor comum + Parâmetros: gcd(... parâmetros, ...) + Exemplo: x->gcd(x, 3) + + lcm + Nome: lcm + Descrição: Mínimo múltiplo comum + Parâmetros: lcm(... parâmetros, ...) + Exemplo: x->lcm(x, 4) + + rem + Nome: rem + Descrição: Resto + Parâmetros: rem(par1, par2) + Exemplo: x->rem(x, 5) + + factorof + Nome: factorof + Descrição: O factor de + Parâmetros: factorof(par1, par2) + Exemplo: x->factorof(x, 3) + + max + Nome: max + Descrição: Máximo + Parâmetros: max(... parâmetros, ...) + Exemplo: x->max(x, 4) + + min + Nome: min + Descrição: Mínimo + Parâmetros: min(... parâmetros, ...) + Exemplo: x->min(x, 4) + + lt + Nome: lt + Descrição: Menor que. lt(a,b)=a<b + Parâmetros: lt(par1, par2) + Exemplo: x->piecewise { x<4 ? 1, ? 0 } + + gt + Nome: gt + Descrição: Maior que. gt(a,b)=a>b + Parâmetros: gt(par1, par2) + Exemplo: x->piecewise { x>4 ? 1, ? 0 } + + eq + Nome: eq + Descrição: Igual. eq(a,b) = a=b + Parâmetros: eq(par1, par2) + Exemplo: x->piecewise { x=4 ? 1, ? 0 } + + neq + Nome: neq + Descrição: Diferente. neq(a,b)=a≠b + Parâmetros: neq(par1, par2) + Exemplo: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Nome: leq + Descrição: Menor ou igual. leq(a,b)=a≤b + Parâmetros: leq(par1, par2) + Exemplo: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Nome: geq + Descrição: Maior ou igual. geq(a,b)=a≥b + Parâmetros: geq(par1, par2) + Exemplo: x->piecewise { x>=4 ? 1, ? 0 } + + implica + Nome: implica + Descrição: Implicação booleana + Parâmetros: implica(par1, par2) + Exemplo: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + aprox + Nome: aprox + Descrição: Aproximação approx(a)=a±n + Parâmetros: aprox(par1, par2) + Exemplo: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Nome: abs + Descrição: Valor absoluto. abs(n)=|n| + Parâmetros: abs(par1) + Exemplo: x->abs(x) + + floor + Nome: floor + Descrição: Valor por defeito. floor(n)=⌊n⌋ + Parâmetros: floor(par1) + Exemplo: x->floor(x) + + ceiling + Nome: ceiling + Descrição: Valor por excesso. ceil(n)=⌈n⌉ + Parâmetros: ceiling(par1) + Exemplo: x->ceiling(x) + + sin + Nome: sin + Descrição: Função para calcular o seno de um determinado ângulo + Parâmetros: sin(par1) + Exemplo: x->sin(x) + + cos + Nome: cos + Descrição: Função para calcular o coseno de um dado ângulo + Parâmetros: cos(par1) + Exemplo: x->cos(x) + + tan + Nome: tan + Descrição: Função para calcular a tangente de um dado ângulo + Parâmetros: tan(par1) + Exemplo: x->tan(x) + + sec + Nome: sec + Descrição: Secante + Parâmetros: sec(par1) + Exemplo: x->sec(x) + + csc + Nome: csc + Descrição: Co-secante + Parâmetros: csc(par1) + Exemplo: x->csc(x) + + cot + Nome: cot + Descrição: Co-tangente + Parâmetros: cot(par1) + Exemplo: x->cot(x) + + sinh + Nome: sinh + Descrição: Seno hiperbólico + Parâmetros: sinh(par1) + Exemplo: x->sinh(x) + + cosh + Nome: cosh + Descrição: Coseno hiperbólico + Parâmetros: cosh(par1) + Exemplo: x->cosh(x) + + tanh + Nome: tanh + Descrição: Tangente hiperbólica + Parâmetros: tanh(par1) + Exemplo: x->tanh(x) + + sech + Nome: sech + Descrição: Secante hiperbólica + Parâmetros: sech(par1) + Exemplo: x->sech(x) + + csch + Nome: csch + Descrição: Co-secante hiperbólica + Parâmetros: csch(par1) + Exemplo: x->csch(x) + + coth + Nome: coth + Descrição: Cotangente hiperbólica + Parâmetros: coth(par1) + Exemplo: x->coth(x) + + arcsin + Nome: arcsin + Descrição: Arco-seno + Parâmetros: arcsin(par1) + Exemplo: x->arcsin(x) + + arccos + Nome: arccos + Descrição: Arco-coseno + Parâmetros: arccos(par1) + Exemplo: x->arccos(x) + + arctan + Nome: arctan + Descrição: Arco-tangente + Parâmetros: arctan(par1) + Exemplo: x->arctan(x) + + arccot + Nome: arccot + Descrição: Arco-cotangente + Parâmetros: arccot(par1) + Exemplo: x->arccot(x) + + arccosh + Nome: arccosh + Descrição: Arco-coseno hiperbólico + Parâmetros: arccosh(par1) + Exemplo: x->arccosh(x) + + arccsc + Nome: arccsc + Descrição: Arco-cosecante + Parâmetros: arccsc(par1) + Exemplo: x->arccsc(x) + + arccsch + Nome: arccsch + Descrição: Arco-cosecante hiperbólica + Parâmetros: arccsch(par1) + Exemplo: x->arccsch(x) + + arcsec + Nome: arcsec + Descrição: Arco-secante + Parâmetros: arcsec(par1) + Exemplo: x->arcsec(x) + + arcsech + Nome: arcsech + Descrição: Arco-secante hiperbólica + Parâmetros: arcsech(par1) + Exemplo: x->arcsech(x) + + arcsinh + Nome: arcsinh + Descrição: Arco-seno hiperbólico + Parâmetros: arcsinh(par1) + Exemplo: x->arcsinh(x) + + arctanh + Nome: arctanh + Descrição: Arco-tangente hiperbólica + Parâmetros: arctanh(par1) + Exemplo: x->arctanh(x) + + exp + Nome: exp + Descrição: Expoente (e^x) + Parâmetros: exp(par1) + Exemplo: x->exp(x) + + ln + Nome: ln + Descrição: Logaritmo de base-e + Parâmetros: ln(par1) + Exemplo: x->ln(x) + + log + Nome: log + Descrição: Logaritmo de base-10 + Parâmetros: log(par1) + Exemplo: x->log(x) + + conjugate + Nome: conjugate + Descrição: Conjugado + Parâmetros: conjugate(par1) + Exemplo: x->conjugate(x*i) + + arg + Nome: arg + Descrição: Argumento + Parâmetros: arg(par1) + Exemplo: x->arg(x*i) + + real + Nome: real + Descrição: Parte real + Parâmetros: real(par1) + Exemplo: x->real(x*i) + + imaginary + Nome: imaginary + Descrição: Parte Imaginária + Parâmetros: imaginary(par1) + Exemplo: x->imaginary(x*i) + + sum + Nome: sum + Descrição: Somatório + Parâmetros: sum(par1 : var=de..até) + Exemplo: x->x*sum(t*t:t=0..3) + + product + Nome: product + Descrição: Produtório + Parâmetros: product(par1 : var=de..até) + Exemplo: x->product(t+t:t=1..3) + + diff + Nome: diff + Descrição: Derivada + Parameters: diff(par1 : variável) + Exemplo: x->(diff(x^2:x))(x) + + card + Nome: card + Descrição: Cardinalidade + Parâmetros: card(par1) + Exemplo: x->card(vector { x, 1, 2 }) + + scalarproduct + Nome: scalarproduct + Descrição: Produto escalar + Parâmetros: scalarproduct(... parâmetros, ...) + Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nome: selector + Descrição: Selecciona o par1-ésimo elemento da lista ou vector 'par2' + Parâmetros: selector(par1, par2) + Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Nome: union + Descrição: Junta vários itens do mesmo tipo + Parâmetros: union(... parâmetros, ...) + Exemplo: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Nome: forall + Descrição: Para todos + Parâmetros: forall(par1 : variável) + Exemplo: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Nome: exists + Descrição: Existe + Parâmetros: exists(par1 : variável) + Exemplo: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nome: map + Descrição: Aplica uma dada função a todos os elementos de uma lista + Parâmetros: map(par1, par2) + Exemplo: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filtro + Nome: filter + Descrição: Remove todos os elementos que não correspondam a uma dada condição + Parâmetros: filter(par1, par2) + Exemplo: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Nome: transpose + Descrição: Transposição + Parâmetros: transpose(par1) + Exemplo: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/pt/docs/kalgebra/index.docbook b/po/pt/docs/kalgebra/index.docbook new file mode 100644 index 0000000..2dcf5d0 --- /dev/null +++ b/po/pt/docs/kalgebra/index.docbook @@ -0,0 +1,711 @@ + + + + + + +]> + + + + +O Manual do &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+JoséPires
zepires@gmail.com
Tradução
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Aplicações 16.04) + + +O &kalgebra; é uma aplicação que poderá substituir a sua calculadora gráfica. Tem funcionalidades numéricas, lógicas, simbólicas e analíticas que lhe permitem calcular expressões na consola e desenhar graficamente os resultados em 2D e 3D. O &kalgebra; é baseado na Mathematical Markup Language (MathML); contudo, não é preciso perceber de MathML para usar o &kalgebra;. + + + +KDE +kdeedu +gráfico +matemática +2D +3D +mathML + + +
+ + +Introdução + +O &kalgebra; tem diversas funcionalidades que permitem ao utilizador efectuar todos os tipos de operações matemáticas e mostrá-las de forma gráfica. Numa altura, este programa estava orientado para o MathML. Agora poderá ser usado por todos os que tenham alguns conhecimentos de matemática para resolver problemas simples e avançados. + +Inclui algumas funcionalidades como por exemplo: + + + +Uma calculadora para avaliar rápida e facilmente funções matemáticas. +Capacidades de programação para séries avançadas de cálculos +Capacidades da linguagem que incluem a definição de funções e a completação automática da sintaxe. +As funções de cálculo incluem o cálculo simbólico de derivadas, o cálculo vectorial e a manipulação de listas. +Gráficos de funções com cursores dinâmicos para a descoberta gráfica de raízes e outros tipos de análises. +Gráficos 3D para visualizações úteis de funções em 3D. +Um dicionário incorporado de operadores para uma referência rápida das funções disponíveis. + + +Aqui está uma imagem da janela principal do &kalgebra; em acção: + + +Aqui está uma imagem da janela principal do &kalgebra; + + + + + + Janela principal do &kalgebra; + + + + +Quando o utilizador inicia uma sessão do &kalgebra;, é-lhes apresentada uma única janela que consiste numa página de Calculadora, uma página Gráfico 2D e outra Gráfico 3D, assim como ainda uma página de Dicionário. Por baixo destas páginas, irá ver um campo de texto onde poderá escrever as suas funções ou fazer os seus cálculos e um campo de visualização que apresenta os resultados. + +Em qualquer altura, o utilizador poderá gerir a sua sessão com as opções do menu Sessão: + + + + +&Ctrl; N SessãoNovo +Abre uma nova janela do &kalgebra;. + + + +&Ctrl;&Shift; F SessãoModo de Ecrã Completo +Activa ou desactiva o modo de ecrã completo para a janela do &kalgebra;. O modo de ecrã completo também poderá ser activado ou desactivado com o botão na parte superior direita da janela do &kalgebra;. + + + +&Ctrl; Q SessãoSair +Termina o programa. + + + + + + + +Sintaxe +O &kalgebra; usa uma sintaxe algébrica intuitiva para introduzir as funções do utilizador, semelhante à que é usada nas calculadoras modernas. Esta secção apresenta os operadores fundamentais que estão disponíveis no &kalgebra;. O autor do &kalgebra; modelou esta sintaxe com base no Maxima e no Maple para os utilizadores que se possam familiarizar com estes programas. + +Para os utilizadores que estejam interessados no funcionamento interno do &kalgebra;, as expressões introduzidas pelo utilizador são convertidas para MathML pela infra-estrutura. Uma compreensão rudimentar das capacidades suportadas pelo MathML dará um grande avanço sobre as capacidades internas do &kalgebra;. + +Será agora apresentada uma lista dos operadores suportados por agora: + ++ - * / : Soma, subtracção, multiplicação e divisão. +^, **: Potência - poderá ser usado qualquer um deles. Também é possível usar os caracteres Unicode ². As potências também são uma forma de calcular raizes, como pode ser feito em a**(1/b) +-> : lambda. É a forma de indicar uma ou mais variáveis livres que serão associadas a uma função´. Por exemplo, na expressão, comprimento:=(x,y)->(x*x+y*y)^0.5, o operador 'lambda' é usado para definir que o 'x' e o 'y' serão preenchidos quando for usada a função 'comprimento'. +x=a..b : Isto é usado quando é necessário definir um intervalo [variável + limite-superior + limite-inferior). Isto significa que o 'x' vai de 'a' a 'b'. +() : É usado para aumentar a precedência. +abc(parâmetros) : Funções. Quando o processador encontrar uma função, verifica se o 'abc' é um operador. Se for, será tratado como tal; se não for, será tratado como uma função do utilizador. +:= : Definição. É usada para definir o valor de uma variável. Poderá fazer coisas do tipo x:=3, x:=y, sendo que o 'y' possa estar definido ou não, ou ainda perimetro:=r->2*pi*r. +? : Definição de condições. Esta é a forma de definir operações condicionais no &kalgebra;. Se introduzir a condição antes do '?', será usada apenas se for verdadeira; se encontrar um '?' sem qualquer condição, irá entrar na última instância. Por exemplo: condição { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : Contentor de MathML. Pode ser usado para definir um contentor. É principalmente útil para lidar com as definições de operações condicionais. += > >= < <= : Comparações dos valores para 'igual', 'maior', 'maior ou igual', 'menor' ou 'menor ou igual', respectivamente + + +Agora poderá perguntar: para que interessa então o MathML? É simples: com ele, poderá usar funções como a cos(), sin(), outras funções trigonométricas, o sum() ou o product(). Não interessa o seu tipo. Poderá usar o plus(), times() e tudo o que tiver o seu operador. As funções booleanas estão também implementadas, pelo que poderá fazer algo do género 'or(1,0,0,0,0)'. + + + + +Usar a Calculadora +A calculadora do &kalgebra; é útil como uma calculadora com esteróides. O utilizador poderá introduzir expressões para avaliar no modo Calcular ou Avaliar, dependendo da selecção do menu Calculadora. +No modo de avaliação, o &kalgebra; simplifica a expressão ou tenta simplificá-la quando vê uma variável não definida. No modo de cálculo, o &kalgebra; calcula tudo e, se encontrar uma variável não definida, da um erro. +Para além de mostrar as equações introduzidas pelo utilizador e os resultados na área da Calculadora, todas as variáveis declaradas são apresentadas numa área persistente à direita. Ao fazer duplo-click sobre uma variável, poderá ver uma janela que lhe permite alterar os seus valores (apenas uma forma de enganar o registo). + +A variável "ans" é especial; sempre que introduzir uma expressão, o valor da variável "ans" será alterado para o último resultado. + +As funções seguintes são exemplos que poderão ser introduzidos no campo de texto da janela da calculadora: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Segue-se uma imagem da janela da calculadora depois de introduzir as expressões de exemplo acima: + +Imagem da janela da calculadora do &kalgebra; com expressões de exemplo + + + + + + Janela da calculadora do &kalgebra; + + + + + +Um utilizador poderá controlar a execução de uma série de cálculos com as opções do menu Calculadora: + + + + +&Ctrl; L CalculadoraCarregar um Programa +Executa as instruções de forma sequencial a partir de um ficheiro. É bom se quiser definir algumas bibliotecas ou prosseguir trabalho anterior. + + + +&Ctrl; GCalculadoraGravar o Programa +Grava as instruções que escreveu desde o início da sessão, para as poder reutilizar. Gera ficheiros de texto, de modo a serem fáceis de alterar com qualquer editor de texto, como o Kate. + + + +&Ctrl; SCalculadoraExportar o Registo +Grava o registo num ficheiro em &HTML;, para poder imprimi-lo ou publicá-lo. + + + + + + + +Gráficos 2D +Para adicionar um novo gráfico 2D ao &kalgebra;, o que tem a fazer é ir à página de Gráficos 2D e carregar no botão para Adicionar a função nova. Depois, ficará activo o campo de texto onde poderá escrever a sua função. + + +Sintaxe +Se quiser usar uma função típica f(x), não é necessário defini-la; mas se quiser uma função f(y) ou uma função polar, terá de adicionar o 'y' e o 'q' como variáveis-fronteira. + +Exemplos: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Se tiver introduzido a função, carregue no botão OK para mostrar o gráfico na janela principal. + + + + +Características +Poderá ter vários gráfico na mesma janela. Basta usar o botão Adicionar quando estiver no modo de Lista. Poderá atribuir a cada gráfico a sua própria cor. + +A janela poderá ser ampliada e movida com o rato. Se usar o rato, poderá ampliar e reduzir a mesma. Poderá também seleccionar uma área com o botão esquerdo do rato, ficando apenas esta área ampliada. Mova a vista com as teclas dos cursores. + + + A área de visualização dos gráficos 2D pode ser definida de forma explícita com a página Área de Visualização numa secção de Gráfico 2D. + + +Na página Lista, poderá abrir uma secção de Edição para editar ou remover uma função com duplo-click e marcar ou desmarcar a opção a seguir ao nome da função para a mostrar ou esconder. +No menu do Gráfico 2D, poderá encontrar estas opções: + +Mostrar ou esconder a grelha +Manter as proporções ao ampliar +Ampliar (&Ctrl; +) e reduzir (&Ctrl; -) +Gravar (&Ctrl; S) o gráfico como um ficheiro de imagem +Repor a janela com o nível de ampliação original +Seleccionar uma resolução para os gráficos + + +Em baixo, está uma imagem de um utilizador cujo cursor está na parte mais à direita da função, 'sin(1/x)'. O utilizador que a desenhou usou uma resolução bastante fina para criar este grafo (dado que oscila em altas frequências, perto da origem). Existe também um cursor dinâmico onde poderá mover o seu cursor para um ponto, para que lhe mostre os valores de X e Y no canto inferior esquerdo do ecrã. Também é desenhada uma "linha tangente" na função, no local em que se encontra o cursor. + + +Aqui está uma imagem da janela de gráficos 2D do &kalgebra; + + + + + + Janela de gráficos 2D do &kalgebra; + + + + + + + + + + +Gráficos 3D + +Para desenhar um Gráfico 3D com o &kalgebra;, terá de ir à página de Gráficos 3D, onde irá ver um campo de texto no fundo que será usado para introduzir a sua função. O Z ainda não pode ser definido; de momento, o &kalgebra; só suporta funções implícitas que dependam apenas do 'x' e 'y', como por exemplo (x,y)->x*y, onde o z=x*y. + +Exemplos: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +A janela poderá ser ampliada e movida com o rato. Se usar o rato, poderá ampliar e reduzir a mesma. Mantenha o &LMB; carregado e mova o rato para rodar o gráfico. + + As teclas de cursores para a esquerda e direita rodam o gráfico em torno do eixo dos Z, enquanto as teclas para cima e para baixo rodam em torno do eixo horizontal da janela. Carregue em W para ampliar o gráfico e em S para o reduzir. + +No menu Gráfico 3D, poderá encontrar estas opções: + + +Gravar (&Ctrl; S) o gráfico como um ficheiro de imagem +Repor a janela com o nível de ampliação original no menu de gráficos 3D +Poderá desenhar os gráficos com pontos, linhas ou preenchimentos no menu de gráficos 3D + + +Por baixo, encontra-se uma imagem da função "sombrero". Este gráfico em particular é apresentado com o estilo de linha dos gráficos 3D. + + +Aqui está uma imagem da janela de gráficos 3D do &kalgebra; + + + + + + Janela de gráficos 3D do &kalgebra; + + + + + + + +Dicionário + +O dicionário é uma colecção de todas as funções incorporadas e disponíveis no &kalgebra;. Pode ser útil para verificar para que serve uma dada operação e para saber quantos parâmetros uma função necessita. É um local útil para descobrir as diversas capacidades do &kalgebra;. + + Por baixo, encontra-se uma pesquisa no dicionário do &kalgebra; pela função 'cosine' (co-seno). + + +Aqui está uma imagem da janela do dicionário do &kalgebra; + + + + + + Janela do dicionário do &kalgebra; + + + + + + + +&commands; + + +Créditos e Licença + + +Programa com 'copyright' 2005-2009 de &Aleix.Pol; + + + +Documentação com 'copyright' 2007 de &Aleix.Pol; &Aleix.Pol.mail; + +Tradução de José Nuno Pires zepires@gmail.com +&underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/pt/kalgebra.po b/po/pt/kalgebra.po new file mode 100644 index 0000000..79802e1 --- /dev/null +++ b/po/pt/kalgebra.po @@ -0,0 +1,430 @@ +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-26 19:29+0000\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: Gonzalez geq gt XOR leq Aleix kal Pol abs ms neq eq\n" +"X-POFile-SpellExtra: Coseno aprox otherwise lt ceil floor Percy Aucahuasi\n" +"X-POFile-SpellExtra: Triveño KAlgebra STL stl\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opções: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Colar o \"%1\" ao texto introduzido" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Colar no Texto Introduzido" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Erro: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importado: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Erro: Não foi possível carregar o %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informação" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Adicionar/Editar uma função" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Antevisão" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "De:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Até:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opções" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Remover" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "As opções que indicou não estão correctas" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "O limite inferior não pode ser maior que o superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfico 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfico 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessão" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variáveis" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Carregar um Programa..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Programas Recentes" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Gravar o Programa..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportar o Registo..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Inserir a resposta..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Modo de Execução" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcular" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Avaliar" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funções" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Adicionar" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Visualizador" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Gráfico &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gráfico 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grelha" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Man&ter as Proporções" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolução" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Baixa" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Elevada" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Muito Elevada" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gráfico &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Gráfico 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Repor a Janela" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pontos" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linhas" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sólido" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operações" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dicionário" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Procurar por:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Edição" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Escolha um programa" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Programa (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Ficheiro HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Seleccione onde colocar o gráfico desenhado" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Ficheiro de Imagem (*.png);;Ficheiro SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pronto" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Adicionar uma variável" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Indique um nome para a variável nova" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Uma calculadora portátil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "José Nuno Pires" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zepires@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Adicionar/Editar uma variável" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Remover a Variável" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editar o valor de '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "não disponível" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ERRADO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Esquerda:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Topo:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Largura:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplicar" diff --git a/po/pt/kalgebramobile.po b/po/pt/kalgebramobile.po new file mode 100644 index 0000000..7edd46b --- /dev/null +++ b/po/pt/kalgebramobile.po @@ -0,0 +1,171 @@ +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-29 13:12+0000\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: Gonzalez KAlgebra Pol Aleix kal Edu\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Uma calculadora portátil" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "José Nuno Pires" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zepires@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Móvel" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Uma calculadora científica simples" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Carregar um Programa..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Programa (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Gravar o Programa..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportar o Registo..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Avaliar..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcular..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Limpar o Registo" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copiar o \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gráfico 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gráfico 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Gravar..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Ver a Grelha" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Limpar a Área de Visualização" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Limpar Tudo" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Erros: O passo não pode ser igual a 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Erros: O início e o fim são iguais" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Até:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Passo:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Executar" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultados:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expressão a calcular..." diff --git a/po/pt/plasma_applet_kalgebraplasmoid.po b/po/pt/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..ff860b9 --- /dev/null +++ b/po/pt/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,29 @@ +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 10:29+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: KAlgebra\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Indique uma expressão." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/pt_BR/docs/kalgebra/commands.docbook b/po/pt_BR/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..8f9a707 --- /dev/null +++ b/po/pt_BR/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Comandos suportados pelo KAlgebra + plus + Nome: plus + Descrição: Adição + Parâmetros: plus(... parâmetros, ...) + Exemplo: x->x+2 + + times + Nome: times + Descrição: Multiplicação + Parâmetros: times(... parâmetros, ...) + Exemplo: x->x*2 + + minus + Nome: minus + Descrição: Subtração. Irá remover todos os valores do primeiro. + Parâmetros: minus(... parâmetros, ...) + Exemplo: x->x-2 + + divide + Nome: divide + Descrição: Divisão + Parâmetros: divide(par1, par2) + Exemplo: x->x/2 + + quotient + Nome: quotient + Descrição: Quociente + Parâmetros: quotient(par1, par2) + Exemplo: x->quotient(x, 2) + + power + Nome: power + Descrição: Potência + Parâmetros: power(par1, par2) + Exemplo: x->x^2 + + root + Nome: root + Descrição: Raiz + Parâmetros: root(par1, par2) + Exemplo: x->root(x, 2) + + factorial + Nome: factorial + Descrição: Fatorial. fatorial(n)=n! + Parâmetros: factorial(par1) + Exemplo: x->factorial(x) + + and + Nome: and + Descrição: 'E' booleano + Parâmetros: and(... parâmetros, ...) + Exemplo: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Nome: or + Descrição: 'ou' booleano + Parâmetros: or(... parâmetros, ...) + Exemplo: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Nome: xor + Descrição: 'ou exclusivo' booleano + Parâmetros: xor(... parâmetros, ...) + Exemplo: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Nome: not + Descrição: 'não' booleano + Parâmetros: not(par1) + Exemplo: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Nome: gcd + Descrição: Máximo divisor comum + Parâmetros: gcd(... parâmetros, ...) + Exemplo: x->gcd(x, 3) + + lcm + Nome: lcm + Descrição: Mínimo múltiplo comum + Parâmetros: lcm(... parâmetros, ...) + Exemplo: x->lcm(x, 4) + + rem + Nome: rem + Descrição: Resto + Parâmetros: rem(par1, par2) + Exemplo: x->rem(x, 5) + + factorof + Nome: factorof + Descrição: O fator de + Parâmetros: factorof(par1, par2) + Exemplo: x->factorof(x, 3) + + max + Nome: max + Descrição: Máximo + Parâmetros: max(... parâmetros, ...) + Exemplo: x->max(x, 4) + + min + Nome: min + Descrição: Mínimo + Parâmetros: min(... parâmetros, ...) + Exemplo: x->min(x, 4) + + lt + Nome: lt + Descrição: Menor que. lt(a,b)=a<b + Parâmetros: lt(par1, par2) + Exemplo: x->piecewise { x<4 ? 1, ? 0 } + + gt + Nome: gt + Descrição: Maior que. gt(a,b)=a>b + Parâmetros: gt(par1, par2) + Exemplo: x->piecewise { x>4 ? 1, ? 0 } + + eq + Nome: eq + Descrição: Igual. eq(a,b) = a=b + Parâmetros: eq(par1, par2) + Exemplo: x->piecewise { x=4 ? 1, ? 0 } + + neq + Nome: neq + Descrição: Diferente. neq(a,b)=a≠b + Parâmetros: neq(par1, par2) + Exemplo: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Nome: leq + Descrição: Menor ou igual. leq(a,b)=a≤b + Parâmetros: leq(par1, par2) + Exemplo: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Nome: geq + Descrição: Maior ou igual. geq(a,b)=a≥b + Parâmetros: geq(par1, par2) + Exemplo: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Nome: implies + Descrição: Implicação booleana + Parâmetros: implies(par1, par2) + Exemplo: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Nome: approx + Descrição: Aproximação. approx(a)=a±n + Parâmetros: approx(par1, par2) + Exemplo: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Nome: abs + Descrição: Valor absoluto. abs(n)=|n| + Parâmetros: abs(par1) + Exemplo: x->abs(x) + + floor + Nome: floor + Descrição: Valor por defeito. floor(n)=⌊n⌋ + Parâmetros: floor(par1) + Exemplo: x->floor(x) + + ceiling + Nome: ceiling + Descrição: Valor por excesso. ceil(n)=⌈n⌉ + Parâmetros: ceiling(par1) + Exemplo: x->ceiling(x) + + sin + Nome: sin + Descrição: Função para calcular o seno de um determinado ângulo + Parâmetros: sin(par1) + Exemplo: x->sin(x) + + cos + Nome: cos + Descrição: Função para calcular o cosseno de um dado ângulo + Parâmetros: cos(par1) + Exemplo: x->cos(x) + + tan + Nome: tan + Descrição: Função para calcular a tangente de um dado ângulo + Parâmetros: tan(par1) + Exemplo: x->tan(x) + + sec + Nome: sec + Descrição: Secante + Parâmetros: sec(par1) + Exemplo: x->sec(x) + + csc + Nome: csc + Descrição: Co-secante + Parâmetros: csc(par1) + Exemplo: x->csc(x) + + cot + Nome: cot + Descrição: Co-tangente + Parâmetros: cot(par1) + Exemplo: x->cot(x) + + sinh + Nome: sinh + Descrição: Seno hiperbólico + Parâmetros: sinh(par1) + Exemplo: x->sinh(x) + + cosh + Nome: cosh + Descrição: Cosseno hiperbólico + Parâmetros: cosh(par1) + Exemplo: x->cosh(x) + + tanh + Nome: tanh + Descrição: Tangente hiperbólica + Parâmetros: tanh(par1) + Exemplo: x->tanh(x) + + sech + Nome: sech + Descrição: Secante hiperbólica + Parâmetros: sech(par1) + Exemplo: x->sech(x) + + csch + Nome: csch + Descrição: Co-secante hiperbólica + Parâmetros: csch(par1) + Exemplo: x->csch(x) + + coth + Nome: coth + Descrição: Cotangente hiperbólica + Parâmetros: coth(par1) + Exemplo: x->coth(x) + + arcsin + Nome: arcsin + Descrição: Arco-seno + Parâmetros: arcsin(par1) + Exemplo: x->arcsin(x) + + arccos + Nome: arccos + Descrição: Arco-cosseno + Parâmetros: arccos(par1) + Exemplo: x->arccos(x) + + arctan + Nome: arctan + Descrição: Arco-tangente + Parâmetros: arctan(par1) + Exemplo: x->arctan(x) + + arccot + Nome: arccot + Descrição: Arco-cotangente + Parâmetros: arccot(par1) + Exemplo: x->arccot(x) + + arccosh + Nome: arccosh + Descrição: Arco-cosseno hiperbólico + Parâmetros: arccosh(par1) + Exemplo: x->arccosh(x) + + arccsc + Nome: arccsc + Descrição: Arco-cossecante + Parâmetros: arccsc(par1) + Exemplo: x->arccsc(x) + + arccsch + Nome: arccsch + Descrição: Arco-cossecante hiperbólica + Parâmetros: arccsch(par1) + Exemplo: x->arccsch(x) + + arcsec + Nome: arcsec + Descrição: Arco-secante + Parâmetros: arcsec(par1) + Exemplo: x->arcsec(x) + + arcsech + Nome: arcsech + Descrição: Arco-secante hiperbólica + Parâmetros: arcsech(par1) + Exemplo: x->arcsech(x) + + arcsinh + Nome: arcsinh + Descrição: Arco-seno hiperbólico + Parâmetros: arcsinh(par1) + Exemplo: x->arcsinh(x) + + arctanh + Nome: arctanh + Descrição: Arco-tangente hiperbólica + Parâmetros: arctanh(par1) + Exemplo: x->arctanh(x) + + exp + Nome: exp + Descrição: Expoente (e^x) + Parâmetros: exp(par1) + Exemplo: x->exp(x) + + ln + Nome: ln + Descrição: Logaritmo de base-e + Parâmetros: ln(par1) + Exemplo: x->ln(x) + + log + Nome: log + Descrição: Logaritmo de base-10 + Parâmetros: log(par1) + Exemplo: x->log(x) + + conjugate + Nome: conjugate + Descrição: Conjugado + Parâmetros: conjugate(par1) + Exemplo: x->conjugate(x*i) + + arg + Nome: arg + Descrição: Argumento + Parâmetros: arg(par1) + Exemplo: x->arg(x*i) + + real + Nome: Parte real + Descrição: Real + Parâmetros: real(par1) + Exemplo: x->real(x*i) + + imaginary + Nome: imaginary + Descrição: Parte imaginária + Parâmetros: imaginary(par1) + Exemplo: x->imaginary(x*i) + + sum + Nome: sum + Descrição: Somatório + Parâmetros: sum(par1 : var=de..até) + Exemplo: x->x*sum(t*t:t=0..3) + + product + Nome: product + Descrição: Produtório + Parâmetros: product(par1 : var=de..até) + Exemplo: x->product(t+t:t=1..3) + + diff + Nome: diff + Descrição: Derivada + Parâmetros: diff(par1 : var) + Exemplo: x->(diff(x^2:x))(x) + + card + Nome: card + Descrição: Cardinalidade + Parâmetros: card(par1) + Exemplo: x->card(vector { x, 1, 2 }) + + scalarproduct + Nome: scalarproduct + Descrição: Produto escalar + Parâmetros: scalarproduct(... parâmetros, ...) + Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Nome: selector + Descrição: Seleciona o par1-ésimo elemento da lista ou vetor 'par2' + Parâmetros: selector(par1, par2) + Exemplo: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Nome: union + Descrição: Junta vários itens do mesmo tipo + Parâmetros: union(... parâmetros, ...) + Exemplo: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Nome: forall + Descrição: Para todos + Parâmetros: forall(par1 : var) + Exemplo: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Nome: exists + Descrição: Existe + Parâmetros: exists(par1 : var) + Exemplo: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Nome: map + Descrição: Aplica uma função para cada elemento em uma lista + Parâmetros: map(par1, par2) + Exemplo: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Nome: filter + Descrição: Remove todos os elementos que não corresponde a uma condição + Parâmetros: filter(par1, par2) + Exemplo: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Nome: transpose + Descrição: Transpose + Parâmetros: transpose(par1) + Exemplo: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/pt_BR/docs/kalgebra/index.docbook b/po/pt_BR/docs/kalgebra/index.docbook new file mode 100644 index 0000000..c6b345a --- /dev/null +++ b/po/pt_BR/docs/kalgebra/index.docbook @@ -0,0 +1,730 @@ + + + + + + +]> + + + + +Manual do &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+Luiz FernandoRanghetti
elchevive@opensuse.org
Tradução
André MarceloAlvarenga
alvarenga@kde.org
Tradução
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +19/04/2016 +0.10 (Applications 16.04) + + +&kalgebra; é um aplicativo que pode substituir a sua calculadora gráfica. Ele tem funcionalidades numéricas, lógicas, simbólicas e analíticas que lhe permitem calcular expressões matemáticas e desenhar graficamente os resultados em 2D ou 3D. O &kalgebra; é baseado na Mathematical Markup Language (MathML). Entretanto, não é preciso conhecer o MathML para usar o &kalgebra;. + + + +KDE +kdeedu +gráfico +matemática +2D +3D +mathML + + +
+ + +Introdução + +O &kalgebra; tem diversas funcionalidades que permitem ao usuário efetuar todos os tipos de operações matemáticas e mostrá-las de forma gráfica. No passado, este programa foi orientado para o MathML. Agora ele pode ser usado por todos os que tenham algum conhecimentos de matemática para resolver problemas simples e avançados. + +Ele inclui algumas funcionalidades como por exemplo: + + + +Uma calculadora para avaliar funções matemáticas de maneira fácil e rápida. +Capacidades de programação para séries avançadas de cálculos +Capacidades da linguagem que incluem a definição de funções e a completação automática da sintaxe. +As funções de cálculo incluem o cálculo simbólico de derivadas, o cálculo vetorial e a manipulação de listas. +Gráficos de funções com cursores dinâmicos para a descoberta gráfica de raízes e outros tipos de análises. +Gráficos 3D para visualizações úteis de funções em 3D. +Um dicionário de operadores incorporado para uma referência rápida das funções disponíveis. + + +Aqui está uma imagem do &kalgebra; em ação: + + +Aqui está uma captura de tela da janela principal do &kalgebra; + + + + + + Janela principal do &kalgebra; + + + + +Quando o usuário inicia uma sessão do &kalgebra;, é apresentada uma única janela que consiste em uma aba de Calculadora, uma aba Gráfico 2D e outra Gráfico 3D, assim como uma aba de Dicionário. Em cada uma destas abas, você encontrará um campo de texto onde poderá digitar as suas funções ou fazer os seus cálculos e também um campo de visualização que apresenta os resultados. + +Em qualquer tempo, o usuário poderá gerenciar a sua sessão com as opções do menu Sessão: + + + + +&Ctrl; N SessãoNovo +Abre uma nova janela do &kalgebra;. + + + +&Ctrl;&Shift; F SessãoModo tela inteira +Alterna a janela do &kalgebra; para o modo em tela inteira. Também é possível usar este modo com o botão na parte superior à direita na janela do &kalgebra;. + + + +&Ctrl; Q SessãoSair +Encerra o programa. + + + + + + + +Sintaxe +O &kalgebra; usa uma sintaxe algébrica intuitiva para introduzir as funções do usuário, semelhante a que é usada nas calculadoras gráficas modernas. Esta seção apresenta os operadores fundamentais que estão disponíveis no &kalgebra;. O autor do &kalgebra; modelou esta sintaxe com base no Maxima e no Maple para que os usuários possam se familiarizar com estes programas. + +Para os usuários que estejam interessados no funcionamento interno do &kalgebra;, as expressões introduzidas pelo usuário são convertidas para MathML pela infraestrutura. Uma compreensão rudimentar das capacidades suportadas pelo MathML dará um grande avanço sobre as capacidades internas do &kalgebra;. + +Aqui está uma lista dos operadores disponíveis que temos até agora: + ++ - * / : Soma, subtração, multiplicação e divisão. +^, **: Potência, você poderá usar qualquer um deles. Também é possível usar os caracteres unicode ². As potências também são uma forma de calcular raízes, como pode ser feito em a**(1/b) +-> : lambda. É a forma de indicar uma ou mais variáveis livres que serão associadas a uma função. Por exemplo, na expressão comprimento:=(x,y)->(x*x+y*y)^0.5, o operador 'lambda' é usado para definir que o 'x' e o 'y' serão preenchidos quando for usada a função 'comprimento'. +x=a..b : Isto é usado quando é necessário definir um intervalo [variável +limite-superior + limite-inferior). Isto significa que o 'x' vai de 'a' a 'b'. +() : É usado para especificar uma maior prioridade. +abc(parâmetros) : Funções. Quando o processador encontrar uma função, verifica se o 'abc' é um operador. Se for, será tratado como tal; se não for, será tratado como uma função do usuário. +:= : Definição. É usada para definir o valor de uma variável. Você poderá fazer coisas do tipo x:=3, x:=y, sendo que o y pode ser definido ou não, ou ainda perímetro:=r->2*pi*r. +? : Definição de condições. Esta é a forma de definir operações condicionais no &kalgebra;. Dito de outra forma, esta é uma maneira de especificar uma condição if, elseif, else. Se introduzir a condição antes do ?, será usada apenas se for verdadeira; se encontrar um ? sem qualquer condição, irá entrar na última instância. Por exemplo: condição { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : Contenedor MathML. Pode ser usado para definir um contenedor. É principalmente útil para lidar com as definições de operações condicionais. += > >= < <= : Comparações dos valores para 'igual', 'maior', 'maior ou igual', 'menor' ou 'menor ou igual', respectivamente + + +Agora poderá perguntar: para que interessa então o MathML? É simples: com ele, poderá usar funções como cos(), sin(), outras funções trigonométricas, o sum() ou o product(). Não interessa o seu tipo. Poderá usar o plus(), times() e tudo o que tiver o seu operador. As funções booleanas estão também implementadas, pelo que poderá fazer algo do gênero 'or(1,0,0,0,0)'. + + + + +Usando a calculadora +A calculadora do &kalgebra; é útil como uma calculadora com esteroides. O usuário poderá introduzir expressões para avaliar no modo Calcular ou Avaliar, dependendo da seleção do menu Calculadora. +No modo de avaliação, o &kalgebra; simplifica a expressão, mesmo quando vê uma variável não definida. O modo de cálculo do &kalgebra; calcula tudo e, se encontrar uma variável não definida, apresenta um erro. +Além de mostrar as equações introduzidas pelo usuário e os resultados na área da Calculadora, todas as variáveis declaradas são apresentadas em uma área persistente à direita. Ao clicar duas vezes sobre uma variável, você poderá ver uma janela que lhe permite alterar os seus valores (apenas uma forma de enganar o registro). + +A variável "ans" é especial. Sempre que introduzir uma expressão, o valor da variável "ans" será alterado para o último resultado. + +As funções seguintes são exemplos que podem ser introduzidos no campo de texto da janela da calculadora: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Segue-se uma imagem da janela da calculadora depois de introduzir as expressões de exemplo acima: + +Imagem da janela da calculadora do &kalgebra; com expressões de exemplo + + + + + + Janela da calculadora do &kalgebra; + + + + + +Um usuário poderá controlar a execução de uma série de cálculos usando as opções do menu Calculadora: + + + + +&Ctrl; L CalculadoraCarregar script +Executa as instruções de forma sequencial a partir de um arquivo. Útil se você quiser definir algumas bibliotecas ou terminar algum trabalho anterior. + + + +&Ctrl; G CalculadoraSalvar script +Salva as instruções que escreveu desde o início da sessão, para poder reutilizá-las. Gera arquivos de texto, de modo a serem fáceis de alterar com qualquer editor de texto, como o Kate. + + + +&Ctrl; S CalculadoraExportar registro +Salva o registro com todos os resultados em um arquivo &HTML;, para poder ser impresso ou publicado. + + + + + + + +Gráficos 2D +Para adicionar um novo gráfico 2D no &kalgebra;, selecione a aba Gráfico 2D e clique na aba Adicionar para adicionar uma nova função. Depois, o seu foco irá para um campo de texto onde você poderá escrever a sua função. + + +Sintaxe +Se quiser usar uma função típica f(x), não é necessário especificá-la; mas se quiser uma função f(y) ou uma função polar, terá de adicionar y-> e q-> como variáveis de fronteira. + +Exemplos: + +sen(x) +x² +y->sen(y) +q->3*sen(7*q) +t->vector{sin t, t**2} + +Se você tiver digitado a função, clique no botão OK para mostrar o gráfico na janela principal. + + + + +Recursos +Você poderá ter vários gráfico na mesma janela. Basta usar o botão Adicionar quando estiver no modo de lista. Você poderá atribuir a cada gráfico a sua própria cor. + +A janela poderá ser ampliada e movida com o mouse. Usando a roda do mouse você poderá ampliar e reduzir a mesma. Poderá também selecionar uma área com o botão esquerdo do mouse, ficando apenas esta área ampliada. Mova a visão com as teclas de seta. + + + A área de visualização dos gráficos 2D pode ser definida de forma explícita usando a aba Visualizador dentro da aba Gráfico 2D. + + +Na aba Lista, você pode abrir uma aba de Edição para editar ou remover uma função com clique duplo e marcar ou desmarcar a opção após o nome da função para a mostrar ou ocultá-la. +No menu do Gráfico 2D, você poderá encontrar estas opções: + +Exibe ou oculta a grade +Manter a taxa de proporção ao expandir +Ampliar (&Ctrl; +) e reduzir (&Ctrl; -) +Salva (&Ctrl; S) o gráfico como um arquivo de imagem +Restaurar a janela com o nível de ampliação original +Selecionar uma resolução para os gráficos + + +Abaixo está uma captura de tela de um usuário cujo cursor está na raiz mais à direita da função sin(1/x). O usuário que gerou o gráfico usou uma resolução muito precisa para criar o desenho (conforme ele oscila em frequências cada vez mais altas próximo a origem). Existe também uma funcionalidade de cursor ao vivo em qualquer lugar que você mova o cursor sobre um ponto. Ela mostra os valores x e y no canto inferior esquerdo da tela. Uma "linha tangente" ao vivo é plotada na função na localização do cursor atual. + + +Aqui está uma imagem da janela de gráfico 2D do &kalgebra; + + + + + + Janela de gráfico 2D do &kalgebra; + + + + + + + + + + +Gráficos 3D + +Para desenhar um gráfico 3D com o &kalgebra;, selecione a aba Gráficos 3D, onde irá ver um campo de texto na base que será usado para digitar a sua função. O Z ainda não pode ser definido. Por enquanto o &kalgebra; só suporta gráficos 3D que dependam explicitamente apenas de x e y, como por exemplo (x,y)->x*y, onde o z=x*y. + +Exemplos: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +A janela pode ser ampliada e movida com o mouse. Usando a roda do mouse você poderá ampliar e reduzir a mesma. Mantenha o &LMB; clicado e mova o mouse para rodar o gráfico. + + As teclas de cursores para a esquerda e direita giram o gráfico em torno do eixo Z, enquanto as teclas para cima e para baixo giram em torno do eixo horizontal da janela. Pressione a tecla W para ampliar o gráfico e em S para reduzi-lo. + +No menu Gráfico 3D, você irá encontrar estas opções: + + +Salva (&Ctrl; S) o gráfico como um arquivo de imagem +Restaurar a janela com o nível de ampliação original no menu de gráficos 3D +Você pode desenhar os gráficos com estilos de pontos, linhas ou sólido no menu de gráficos 3D + + +Abaixo está uma imagem do função chamada "sombrero". Este gráfico em particular é mostrado usando o estilo em linha de gráfico 3D. + + +Aqui está uma captura de tela da janela de gráfico 3D do &kalgebra; + + + + + + Janela de gráfico 3D do &kalgebra; + + + + + + + +Dicionário + +O dicionário fornece uma lista de todas as funções embutidas no &kalgebra;. Ele pode ser usada para encontrar a definição de uma operação e seus parâmetros de entrada. É um local útil para ir para encontrar os diversos recursos do &kalgebra;. + + Abaixo está uma captura de tela do dicionário do &kalgebra; procurando a função cosine. + + +Aqui está uma captura de tela da janela do dicionário do &kalgebra; + + + + + + Janela do dicionário do &kalgebra; + + + + + + + +&commands; + + +Créditos e licença + + +Direitos autorais do programa, 2005-2009 &Aleix.Pol; + + + +Direitos autorais da documentação 2007 &Aleix.Pol; &Aleix.Pol.mail; + +Tradução: Luiz Fernando Ranghetti elchevive@opensuse.org André Marcelo Alvarenga alvarenga@kde.org &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/pt_BR/docs/kalgebra/kalgebra-main-window.png b/po/pt_BR/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..ccdb3edc86c57670432eb940b477cded3a0ddc78 GIT binary patch literal 46279 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 VE|_&~q$6JeTIzaN3oa8L{U0kIBF+E+ literal 0 HcmV?d00001 diff --git a/po/pt_BR/kalgebra.po b/po/pt_BR/kalgebra.po new file mode 100644 index 0000000..5ca43e8 --- /dev/null +++ b/po/pt_BR/kalgebra.po @@ -0,0 +1,437 @@ +# Translation of kalgebra.po to Brazilian Portuguese +# Copyright (C) 2007-2018 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Diniz Bortolotto , 2007. +# Eliana Megumi Habiro Boaglio , 2008. +# André Marcelo Alvarenga , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018. +# Luiz Fernando Ranghetti , 2009, 2010, 2017. +# Marcus Vinícius de Andrade Gama , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-30 21:54-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian 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 2.0\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opções: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Colar \"%1\" na entrada" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Colar na entrada" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Erro: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importado: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Erro: Não foi possível carregar o %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informações" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Adicionar/editar uma função" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Visualizar" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "De:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Para:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opções" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Remover" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "As opções que você especificou não estão corretas" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "O limite inferior não pode ser maior que o superior" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Gráfico em 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Gráfico em 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sessão" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variáveis" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Calculadora" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "C&alculadora" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Carregar script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripts recentes" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Salvar script..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportar log..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Inserir a resposta..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Modo de execução" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calcular" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Avaliar" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funções" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Adicionar" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Visualizador" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Gráfico &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Gráfico 2&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grade" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Manter a taxa de proporção" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Resolução" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Baixa" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Elevada" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Muito elevada" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Gráfico &3D" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "&Gráfico 3D" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Reiniciar visualização" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pontos" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linhas" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Sólido" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operações" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dicionário" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Procurar por:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Edição" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Escolha um script" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Arquivo HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Selecione onde colocar o gráfico desenhado" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Arquivo de imagem (*.png);;Arquivo SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pronto" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Adicionar variável" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Digite o nome da nova variável" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Uma calculadora portátil" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "André Marcelo Alvarenga" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "alvarenga@kde.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Adicionar/editar uma variável" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Remover variável" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editar o valor de '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "não disponível" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ERRADO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Esquerda:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Superior:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Largura:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplicar" diff --git a/po/pt_BR/kalgebramobile.po b/po/pt_BR/kalgebramobile.po new file mode 100644 index 0000000..da2b6c2 --- /dev/null +++ b/po/pt_BR/kalgebramobile.po @@ -0,0 +1,201 @@ +# Translation of kalgebramobile.po to Brazilian Portuguese +# Copyright (C) 2018 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Luiz Fernando Ranghetti , 2018, 2019. +# André Marcelo Alvarenga , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-20 16:00-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 18.12.3\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Uma calculadora portátil" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Luiz Fernando Ranghetti, André Marcelo Alvarenga" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "elchevive@opensuse.org, alvarenga@kde.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra móvel" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Uma calculadora científica simples" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Carregar script..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Salvar script..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportar log..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Avaliar..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Calcular..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Limpar log" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Copiar \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Gráfico 2D" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Gráfico 3D" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Salvar..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Exibir grade" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Limpar a área de visualização" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Limpar tudo" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Erros: O passo não pode ser 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Erros: O início e fim são os mesmos" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Erros: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Entrada:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "De:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Para:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Passo:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Executar" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultados:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Expressão a calcular..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "O KAlgebra é oferecido pela comunidade adorável que é o KDE e o KDE Edu a partir " +#~ "de um ambiente de Software Livre." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Se quiser aprender mais sobre o KAlgebra, você poderá encontrar mais " +#~ "informações na página oficial e na Wiki dos usuários.
Se tiver algum problema com o " +#~ "aplicativo nos informe através do nosso " +#~ "sistema de registo de erros." diff --git a/po/pt_BR/plasma_applet_kalgebraplasmoid.po b/po/pt_BR/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..5dafbca --- /dev/null +++ b/po/pt_BR/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# Translation of plasma_applet_kalgebraplasmoid.po to Brazilian Portuguese +# Copyright (C) 2014 This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# André Marcelo Alvarenga , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 10:15-0300\n" +"Last-Translator: André Marcelo Alvarenga \n" +"Language-Team: Brazilian 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 1.5\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Digite uma expressão." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ro/kalgebra.po b/po/ro/kalgebra.po new file mode 100644 index 0000000..83e57d8 --- /dev/null +++ b/po/ro/kalgebra.po @@ -0,0 +1,1067 @@ +# Traducerea kalgebra.po în Română +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sergiu Bivol , 2008, 2012. +# Carla Boczor , 2010. +# Victor Cărbune , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2012-12-23 12:05+0200\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" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Opțiuni: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Lipește \"%1\" in partea de intrare " + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Lipește \"%1\" in partea de intrare " + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Eroare: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, fuzzy, kde-format +#| msgid "
    Error: Could not load %1
" +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Eroare:Nu se poate incărca %1
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informație" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Adăugare/editare funcție" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Previzualizare" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "De la:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Către:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Opțiuni " + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, fuzzy, kde-format +#| msgid "Remove '%1'" +msgctxt "@action:button" +msgid "Remove" +msgstr "Elimină „%1”" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Opțiunile specificate nu sunt corecte" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Limita inferioară nu poate fi mai mare decat cea superioară" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Schița 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Schița 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sesiune" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabile" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Calculează" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Calculează" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Încarcă Script..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Scripturi recente" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Salvează Scriptul..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportează Înregistrarea" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Mod de execuție" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Calculează" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Evaluează" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funcții" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Listă" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Adăugare" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Fereastră de vizualizare" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "Grafic &2D" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Grafic 3&D" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Grilă" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Păstrează raportul de aspect" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rezoluție" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Slabă" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normală" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Bună" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Foarte bună" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D Grafic" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &Grafic" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Resetați vizionarea " + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Puncte" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linii" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Solid" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operații" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Dicționar" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Caută:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Editare" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Alegeți un script " + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Script (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Fișier HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, fuzzy, kde-format +#| msgid "Error: %1" +msgid "Errors: %1" +msgstr "Eroare: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, fuzzy, kde-format +#| msgid "" +#| "*.png|Image File\n" +#| "*.svg|SVG File" +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|Fișier Imagine\n" +"*.svg|Fișier SVG" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Gata" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Adaugă variabilă" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Introduceți numele variabilei noi " + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Un calculator" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "(C) 2006-2010 Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2010 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Adaugă/Editează o variabilă" + +#: varedit.cpp:39 +#, fuzzy, kde-format +#| msgid "Variables" +msgid "Remove Variable" +msgstr "Variabile" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Editeaza valoarea '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "indisponibil" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "Greșit" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Stânga:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Sus:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Lățime:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Înălțime:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Aplică" + +#~ msgid "C&onsole" +#~ msgstr "C&onsolă" + +#~ msgid "&Console" +#~ msgstr "&Consolă" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "S-a dezvoltat proprietatea de a desena curbe implicite.Îmbunătățire " +#~ "pentru trasarea funcțiilor." + +#~ msgid "Formula" +#~ msgstr "Formula" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Eroare: Tip de funcție greșit" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Gata: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Eroare: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Curăță" + +#~ msgid "*.png|PNG File" +#~ msgstr " *.png|Fișier PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Transparența" + +#~ msgid "Type" +#~ msgstr "Tip" + +#~ msgid "Result: %1" +#~ msgstr "Rezultat: %1" + +#~ msgid "To Expression" +#~ msgstr "În expresie" + +#~ msgid "To MathML" +#~ msgstr "În MathML" + +#~ msgid "Simplify" +#~ msgstr "Reducere" + +#~ msgid "Examples" +#~ msgstr "Exemple" + +#~ msgid "We can only draw Real results." +#~ msgstr "Putem desena numai rezultate reale." + +#~ msgid "The expression is not correct" +#~ msgstr "Expresie incorectă" + +#~ msgid "Function type not recognized" +#~ msgstr "Tipul funcției nerecunoscut" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Topul funcției incorect pentru funcții depinzând de %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Funcție implicită nedefinită in plan " + +#~ msgid "center" +#~ msgstr "centru" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Nume" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funcție" + +#~ msgid "%1 function added" +#~ msgstr "Funcția %1 adăugată" + +#~ msgid "Hide '%1'" +#~ msgstr "Ascunde „%1”" + +#~ msgid "Show '%1'" +#~ msgstr "Arată „%1”" + +#~ msgid "Selected viewport too small" +#~ msgstr "Fereastra de vizualizare alesă prea mică" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Descriere" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametrii " + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Exemplu" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=de la..până la" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... parametrii, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Adunare" + +#~ msgid "Multiplication" +#~ msgstr "Înmultire" + +#~ msgid "Division" +#~ msgstr "Împartire" + +#~ msgid "Power" +#~ msgstr "La putere" + +#~ msgid "Remainder" +#~ msgstr "Rest" + +#~ msgid "Quotient" +#~ msgstr "Cât" + +#~ msgid "The factor of" +#~ msgstr "Factorul " + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "N factorial.factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funcție care calculeaza sinusul unui unghi dat" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funcție care calculează cosinusul unui unghi dat" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funcție care calculează tangenta unui unghi dat " + +#~ msgid "Secant" +#~ msgstr "Secantă" + +#~ msgid "Cosecant" +#~ msgstr "Cosecantă" + +#~ msgid "Cotangent" +#~ msgstr "Cotangentă" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Sinus hiperbolic" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Cosinus hiperbolic" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Tangentă hiperbolică" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Secantă hiperbolica" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Cosecantă hiperbolica" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Cotangentă hiperbolică" + +#~ msgid "Arc sine" +#~ msgstr "Arcsin" + +#~ msgid "Arc cosine" +#~ msgstr "Arccos" + +#~ msgid "Arc tangent" +#~ msgstr "Arctg" + +#~ msgid "Arc cotangent" +#~ msgstr "Arcctg" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Arctg hiperbolică" + +#~ msgid "Summatory" +#~ msgstr "Sumă" + +#~ msgid "Productory" +#~ msgstr "Produs" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Normală" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "Listă" + +#~ msgid "Differentiation" +#~ msgstr "Diferență" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Arcsin hiperbolic" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Arccos hiperbolic" + +#~ msgid "Arc cosecant" +#~ msgstr "Arccosecant" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Arccosecant hiperbolic" + +#~ msgid "Arc secant" +#~ msgstr "Arcsecant" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Arcsecant hiperbolic" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Logaritm in baza e" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Logaritm in baza 10" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Valoare absoluta. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Partea întreagă=[n]" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "[x]+1" + +#~ msgid "Minimum" +#~ msgstr "Minim" + +#~ msgid "Maximum" +#~ msgstr "Maxim" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Mai mare. Mm(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr ": limite" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Valoare" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Trebuie specificată o operație corectă" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Identificator necunoscut: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "" +#~ "Nu s-a putut găsi o alegere adecvata pentru o condiție din declarație." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Tip nesuportat pentru delimitare." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Limita inferioară este mai mare decat limita superioară" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Limită superioară sau inferioară incorecta. " + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Definit un ciclu de variabile" + +#~ msgid "The result is not a number" +#~ msgstr "Rezultatul nu este un număr" + +#~ msgid "Unknown token %1" +#~ msgstr "Caracteristică necunoscut %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 are nevoie de cel putin 2 parametrii" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 are nevoie de %2 parametrii" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Lipsește delimitarea pentru %1" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Limita neașteptată pentru '%1'" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 lipsește limita la '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Declarație greșită" + +#~ msgid "Empty container: %1" +#~ msgstr "Variabilă goala: %1 " + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Nu putem avea condiții decât in funcții cu ramuri." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Nu puteți avea două variabile cu același nume ca și '%1'." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parametrul celălalt ar trebui sa fie ultimul" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 nu este o condiție adecvată in interiorul funcției cu ramuri." + +#~ msgid "We can only declare variables" +#~ msgstr "Putem declara numai variabile" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Putem avea numai variabile limitate" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Eroare la analizare: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Container necunoscut: %1 " + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Nu se poate codifica %1 valoare." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Operatorul %1 nu poate avea contexte derivate. " + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Elementul '%1' nu este operator " + +#~ msgid "Do not want empty vectors" +#~ msgstr "Nu sunt doriti vectori fără nici un element." + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Nu este acceptat/străin: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Se așteaptă %1 in loc de '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Lipsește paranteya dreapta " + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Paranteza dreaptă este dezaxată " + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Caracteristică neașteptată %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Caracteristică neașteptată %1" + +#, fuzzy +#~| msgid "Could not calculate a value %1" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Nu se poate calcula valoarea %1" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "" +#~ "Sumă invalidă a paramerilor pentru '%2'.Ar trebui să fie 1 parametru." +#~ msgstr[1] "" +#~ "Sumă invalidă a paramerilor pentru '%2'.Ar trebui să fie %1 parametrii." +#~ msgstr[2] "" +#~ "Sumă invalidă a paramerilor pentru '%2'.Ar trebui să fie %1 parametrii." + +#~ msgid "Could not call '%1'" +#~ msgstr "Nu se poate denumi '%1'" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Nu se poate rezolva '%1'" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Introduceți numele variabilei noi " + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Nu se poate determina tipul ramificațiilor" + +#, fuzzy +#~| msgid "Unexpected bounding for '%1'" +#~ msgid "Unexpected type" +#~ msgstr "Limita neașteptată pentru '%1'" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Nu se poate interschimba '%1' cu '%2'" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Caracteristică necunoscută %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Nu se poate calcula restul împărțirii cu 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Nu se pot calcula divizorii lui 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Nu se poate calcula cel mai mic multiplu comun a lui 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Nu se poate calcula valoarea %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Index invalid pentru un container" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Nu se pot face operații pe vectori de mărimi diferite." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Nu se poate calcula %1 al vectorului " + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Nu se poate calcula %1 al listei " + +#, fuzzy +#~| msgid "Could not calculate a value %1" +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Nu se poate calcula valoarea %1" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Nu se poate simplifica '%1' si '%2'." + +#~ msgid "Incorrect domain." +#~ msgstr "Domeniu de definiție incorect." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Funcția parametrica nu redă un vector " + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Este nevoie de un vector bidimensional" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Elementele funcției parametrice ar trebui sa fie scalare" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Derivata %1 nu a fost implementată." + +#~| msgctxt "@title:column" +#~| msgid "Function" +#~ msgid "Subtraction" +#~ msgstr "Funcție" + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Nu se ințelege valoarea reala : %1" + +#, fuzzy +#~| msgid "Error: %1" +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "Eroare: %1" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Eroare: Avem nevoie de valori pentru a desena un grafic" + +#~ msgid "Generating... Please wait" +#~ msgstr "Generare... Așteptați" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Salvează jurnalul" + +#, fuzzy +#~| msgid "We can only draw Real results." +#~ msgid "We can only call functions" +#~ msgstr "Putem desena numai rezultate reale." + +#~ msgid "%1" +#~ msgstr "%1" diff --git a/po/ru/docs/kalgebra/commands.docbook b/po/ru/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..20c2117 --- /dev/null +++ b/po/ru/docs/kalgebra/commands.docbook @@ -0,0 +1,1370 @@ + +Команды, поддерживаемые KAlgebra + plus + Название: plus + Описание: сложение + Использование: plus(... параметры, ...) + Пример: x->x+2 + + times + Название: times + Описание: умножение + Использование: times(... параметры, ...) + Пример: x->x*2 + + minus + Название: minus + Описание: вычитание + Использование: minus(... параметры, ...) + Пример: x->x-2 + + divide + Название: divide + Описание: деление + Использование: divide(... параметры, ...) + Пример: x->x/2 + + quotient + Название: quotient + Описание: частное + Использование: quotient(... параметры, ...) + Пример: x->quotient(x, 2) + + power + Название: power + Описание: степень + Использование: power(par1, par2) + Пример: x->x^2 + + root + Название: root + Описание: корень + Использование: root(par1, par2) + Пример: x->root(x, 2) + + factorial + Название: factorial + Описание: факториал. factorial(n)=n! + Использование: factorial(par1) + Пример: x->factorial(x) + + and + Название: and + Описание: логическое И + Использование: and(... параметры, ...) + Пример: x->and(x>-2, x<2) + + or + Название: or + Описание: логическое ИЛИ + Использование: or(... параметры, ...) + Пример: x->or(x>2, x>-2) + + xor + Название: xor + Описание: логическое исключающее ИЛИ + Использование: xor(... параметры, ...) + Пример: x->xor(x>0, x<3) + + not + Название: not + Описание: логическое отрицание + Использование: not(par1) + Пример: x->not(x) + + gcd + Название: gcd + Описание: наибольший общий делитель + Использование: gcd(... параметры, ...) + Пример: x->gcd(x, 3) + + lcm + Название: lcm + Описание: наименьшее общее кратное + Использование: lcm(... параметры, ...) + Пример: x->lcm(x, 4) + + rem + Название: rem + Описание: остаток от деления + Использование: rem(par1, par2) + Пример: x->rem(x, 5) + + factorof + Название: factorof + Описание: возвращает истину, если par1 делится на par2 без остатка. + Использование: factorof(par1, par2) + Пример: x->factorof(x, 3) + + max + Название: max + Описание: возвращает максимальный из параметров + Использование: max(... параметры, ...) + Пример: x->max(x, 4) + + min + Название: min + Описание: возвращает минимальный из параметров + Использование: min(... параметры, ...) + Пример: x->min(x, 4) + + lt + Название: lt + Описание: если par1 меньше par2, возвращает истину. lt(a,b)=a<b + Использование: lt(par1, par2) + Пример: x->x<4 + + gt + Название: gt + Описание: если par1 больше par2, возвращает истину. gt(a,b)=a>b + Использование: gt(par1, par2) + Пример: x->x>4 + + eq + Название: eq + Описание: если par1 равно par2, возвращает истину. eq(a,b) = a=b + Использование: eq(par1, par2) + Пример: x->x=4 + + neq + Название: neq + Описание: если par1 не равно par2, возвращает истину. neq(a,b) = a≠b + Использование: neq(par1, par2) + Пример: x->x!=4 + + leq + Название: leq + Описание: если par1 меньше или равно par2, возвращает истину. leq(a,b) = a⩽b + Использование: leq(par1, par2) + Пример: x->x<=4 + + geq + Название: geq + Описание: если par1 больше или равно par2, возвращает истину. geq(a,b) = a⩾b + Использование: geq(par1, par2) + Пример: x->x>=4 + + implies + Название: implies + Описание: логическое следование + Использование: implies(par1, par2) + Пример: x->implies(x<0, x<3) + + approx + Название: approx + Описание: приблизительное сравнение. approx(a) = a≈n + Использование: approx(par1, par2) + Пример: x->approx(x, 4) + + abs + Название: abs + Описание: абсолютное значение. abs(n)=|n| + Использование: abs(par1) + Пример: x->abs(x) + + floor + Название: floor + Описание: округление числа до ближайшего целого в меньшую сторону. floor(n) = ⌊n⌋ + Использование: floor(par1) + Пример: x->floor(x) + + ceiling + Название: ceiling + Описание: округление числа до ближайшего целого в большую сторону. ceil(n) = ⌈n⌉ + Использование: ceiling(par1) + Пример: x->ceiling(x) + + sin + Название: sin + Описание: функция для вычисления синуса данного угла + Использование: sin(par1) + Пример: x->sin(x) + + cos + Название: cos + Описание: функция для вычисления косинуса данного угла + Использование: cosin(par1) + Пример: x->cos(x) + + tan + Название: tan + Описание: функция для вычисления тангенса данного угла + Использование: tan(par1) + Пример: x->tan(x) + + sec + Название: sec + Описание: функция для вычисления секанса данного угла + Использование: sec(par1) + Пример: x->sec(x) + + csc + Название: csc + Описание: функция для вычисления косеканса данного угла + Использование: csc(par1) + Пример: x->csc(x) + + cot + Название: cot + Описание: функция для вычисления котангенса данного угла + Использование: cot(par1) + Пример: x->cot(x) + + sinh + Название: sinh + Описание: функция для вычисления гиперболического синуса данного угла + Использование: sinh(par1) + Пример: x->sinh(x) + + cosh + Название: cosh + Описание: функция для вычисления гиперболического синуса данного угла + Использование: cosh(par1) + Пример: x->cosh(x) + + tanh + Название: tanh + Описание: функция для вычисления гиперболического тангенса данного угла + Использование: tanh(par1) + Пример: x->tanh(x) + + sech + Название: sech + Описание: функция для вычисления гиперболического секанса данного угла + Использование: sech(par1) + Пример: x->sech(x) + + csch + Название: csch + Описание: функция для вычисления гиперболического секанса данного угла + Использование: csch(par1) + Пример: x->csch(x) + + coth + Название: coth + Описание: функция для вычисления гиперболического котангенса данного угла + Использование: coth(par1) + Пример: x->coth(x) + + arcsin + Название: arcsin + Описание: функция для вычисления арксинуса данного угла + Использование: arcsin(par1) + Пример: x->arcsin(x) + + arccos + Название: arccos + Описание: функция для вычисления арккосинуса данного угла + Использование: arccos(par1) + Пример: x->arccos(x) + + arctan + Название: arctan + Описание: функция для вычисления арктангенса данного угла + Использование: arctan(par1) + Пример: x->arctan(x) + + arccot + Название: arccot + Описание: функция для вычисления арккотангенса данного угла + Использование: arccot(par1) + Пример: x->arccot(x) + + arccosh + Название: arccosh + Описание: функция для вычисления гиперболического арккосинуса данного угла + Использование: arccosh(par1) + Пример: x->arccosh(x) + + arccsc + Название: arccsc + Описание: функция для вычисления арккосеканса данного угла + Использование: arccsc(par1) + Пример: x->arccsc(x) + + arccsch + Название: arccsch + Описание: функция для вычисления гиперболического арккосеканса данного угла + Использование: arccsch(par1) + Пример: x->arccsch(x) + + arcsec + Название: arcsec + Описание: функция для вычисления арксеканса данного угла + Использование: arcsec(par1) + Пример: x->arcsec(x) + + arcsech + Название: arcsech + Описание: функция для вычисления гиперболического арксеканса данного угла + Использование: arcsech(par1) + Пример: x->arcsech(x) + + arcsinh + Название: arcsinh + Описание: функция для вычисления гиперболического арксинуса данного угла + Использование: arcsinh(par1) + Пример: x->arcsinh(x) + + arctanh + Название: arctanh + Описание: функция для вычисления гиперболического арктангенса данного угла + Использование: arctanh(par1) + Пример: x->arctanh(x) + + exp + Название: exp + Описание: экспонента (ex) + Использование: exp(par1) + Пример: x->exp(x) + + ln + Название: ln + Описание: натуральный логарифм + Использование: ln(par1) + Пример: x->ln(x) + + log + Название: log + Описание: десятичный логарифм + Использование: log(par1) + Пример: x->log(x) + + sum + Название: sum + Описание: сумматор + Использование: sum(par1 : перем=от..до) + Пример: x->x*sum(t*t:t=0..3) + + product + Название: product + Описание: произведение + Использование: product(par1 : перем=от..до) + Пример: x->product(t+t:t=1..3) + + diff + Название: diff + Описание: дифференцирование + Использование: diff(par1 : переменная) + Пример: x->(diff(x^2:x))(x) + + card + Название: card + Описание: кардинальное число + Использование: card(par1) + Пример: x->card(vector { x, 1, 2 }) + + scalarproduct + Название: scalarproduct + Описание: скалярное произведение + Использование: scalarproduct(... параметры, ...) + Пример: x->selector(1, scalarproduct(vector { 0, x }, vector { x, 0 })) + + selector + Название: selector + Описание: выбор элемента из контейнера + Использование: selector(par1, par2) + Пример: x->piecewise { x>0 ? selector(1, vector { x, 1/x }), ? selector(2, vector { x, 1/x }) } + + union + Название: union + Описание: объединяет несколько объектов одного типа. + Использование: union(... параметры, ...) + Пример: x->selector(rem(floor(x), 5)+3, union(list { 1, 2, 3 }, list { 4, 5, 6 })) + + diff --git a/po/ru/docs/kalgebra/kalgebra-main-window.png b/po/ru/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2127cfb0df392e5f5309e05d87e7906ab454c2 GIT binary patch literal 29227 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 Dz1Rre literal 0 HcmV?d00001 diff --git a/po/ru/kalgebra.po b/po/ru/kalgebra.po new file mode 100644 index 0000000..ca90769 --- /dev/null +++ b/po/ru/kalgebra.po @@ -0,0 +1,1136 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Nick Shaforostoff , 2007. +# Nick Shaforostoff , 2007, 2008. +# Andrey Cherepanov , 2009. +# Alexander Potashev , 2010, 2011, 2017. +# Yuri Efremov , 2013. +# Alexander Lakhin , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-02-05 22:40+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \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 2.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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Действия: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Вставить «%1» в поле ввода" + +#: consolemodel.cpp:86 +#, fuzzy, kde-format +#| msgid "Paste \"%1\" to input" +msgid "Paste to Input" +msgstr "Вставить «%1» в поле ввода" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Ошибка: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Импортировано: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Ошибка: не удалось загрузить %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Сведения" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Добавить/изменить функцию" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Просмотр" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "От:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "До:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Параметры" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "ОК" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Удалить" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Параметры, заданные вами, некорректны." + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Нижний предел функции не может быть больше верхнего" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Двумерный график" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Трёхмерный график" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Сеанс" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Переменные" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "Вычислить" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "Вычислить" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Открыть сценарий..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Последние сценарии" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Сохранить сценарий..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Экспорт журнала..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Режим выполнения" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Вычислить" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Упростить" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Функции" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Список" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Добавить" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Область просмотра" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "П&лоский график" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Плоск&ий график" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Сетка" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "С&охранять пропорции" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Разрешение" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Мелкое" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Среднее" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Чёткое" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Очень чёткое" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "Объ&ёмный график" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "Объё&мный график" + +# сбросить масштаб --aspotashev +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Сбросить масштаб" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Пунктир" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Штрих" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Сплошная" + +# Функции? --aspotashev +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Операции" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "Сло&варь" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Искать:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Редактирование" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Открытие сценария" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Сценарии (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Файлы HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Ошибки: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Изображения PNG (*.png);;Векторные изображения SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Готово" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Добавить переменную" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Введите имя для новой переменной" + +#: main.cpp:30 +#, fuzzy, kde-format +#| msgid "A calculator" +msgid "A portable calculator" +msgstr "Калькулятор с возможностью построения графиков" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© Aleix Pol Gonzalez, 2006-2016" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Юрий Ефремов" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "yur.arh@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Добавить/изменить переменную" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Удалить переменную" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Изменить значение параметра %1" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "недоступно" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "НЕВЕРНО" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Левая граница:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Верхняя граница:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Ширина:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Высота:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Применить" + +#, fuzzy +#~| msgid "" +#~| "*.png|PNG File\n" +#~| "*.pdf|PDF Document" +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "*.png|Файл PNG\n" +#~ "*.pdf|Документ PDF" + +#~ msgid "C&onsole" +#~ msgstr "Ко&нсоль" + +#~ msgid "&Console" +#~ msgstr "&Консоль" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Разработал отрисовку кривых, заданных неявно. Улучшил функции построения " +#~ "графиков." + +#~ msgid "Formula" +#~ msgstr "Формула" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Ошибка: неправильный тип функции" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Готово: %1 мс" + +#~ msgid "Error: %1" +#~ msgstr "Ошибка: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Очистить" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Изображение PNG (*.png)" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Прозрачность" + +#~ msgid "Type" +#~ msgstr "Тип" + +#~ msgid "Result: %1" +#~ msgstr "Результат: %1" + +#~ msgid "To Expression" +#~ msgstr "В выражение" + +#~ msgid "To MathML" +#~ msgstr "В MathML" + +#~ msgid "Simplify" +#~ msgstr "Упростить" + +#~ msgid "Examples" +#~ msgstr "Примеры" + +#~ msgid "We can only draw Real results." +#~ msgstr "Возможно построение только действительных результатов." + +#~ msgid "The expression is not correct" +#~ msgstr "Выражение не корректно" + +#~ msgid "Function type not recognized" +#~ msgstr "Тип функции не опознан" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Тип функции неправилен для функций, зависящих от %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Неявная функция не определена в плоскости." + +#~ msgid "center" +#~ msgstr "центр" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Название" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Функция" + +#~ msgid "%1 function added" +#~ msgstr "Добавлена функция %1" + +#~ msgid "Hide '%1'" +#~ msgstr "Скрыть %1" + +#~ msgid "Show '%1'" +#~ msgstr "Показать %1" + +#~ msgid "Selected viewport too small" +#~ msgstr "Выбранный режим просмотра слишком мал" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Параметры" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Пример" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=от..до" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... параметры, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Сложение" + +#~ msgid "Multiplication" +#~ msgstr "Умножение" + +#~ msgid "Division" +#~ msgstr "Деление" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Вычитание. Все значения из уменьшаемого будут удалены." + +#~ msgid "Power" +#~ msgstr "Степень" + +#~ msgid "Remainder" +#~ msgstr "Остаток" + +#~ msgid "Quotient" +#~ msgstr "Частное" + +#~ msgid "The factor of" +#~ msgstr "Делимость на число" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Факториал (n!)" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Синус" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Косинус" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Тангенс" + +#~ msgid "Secant" +#~ msgstr "Секанс" + +#~ msgid "Cosecant" +#~ msgstr "Косеканс" + +#~ msgid "Cotangent" +#~ msgstr "Котангенс" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Гиперболический синус" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Гиперболический косинус" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Гиперболический тангенс" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Гиперболический секанс" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Гиперболический косеканс" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Гиперболический котангенс" + +#~ msgid "Arc sine" +#~ msgstr "Арксинус" + +#~ msgid "Arc cosine" +#~ msgstr "Арккосинус" + +#~ msgid "Arc tangent" +#~ msgstr "Арктангенс" + +#~ msgid "Arc cotangent" +#~ msgstr "Арккотангенс" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Гиперболический арктангенс" + +#~ msgid "Summatory" +#~ msgstr "Сумма" + +#~ msgid "Productory" +#~ msgstr "Произведение" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Normal" +#~ msgid "For all" +#~ msgstr "Среднее" + +#, fuzzy +#~| msgid "List" +#~ msgid "Exists" +#~ msgstr "Список" + +#~ msgid "Differentiation" +#~ msgstr "Дифференцирование" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Гиперболический арксинус" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Гиперболический арккосинус" + +#~ msgid "Arc cosecant" +#~ msgstr "Арккосеканс" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Гиперболический арккосеканс" + +#~ msgid "Arc secant" +#~ msgstr "Арксеканс" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Гиперболический арксеканс" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Экспонента (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Натуральный логарифм" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Десятичный логарифм" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Абсолютное значение. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Наименьшее абсолютное значение. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Наибольшее абсолютное значение. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Минимум" + +#~ msgid "Maximum" +#~ msgstr "Максимум" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Больше чем. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : границы" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Значение" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Нужно указать допустимую операцию" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "," + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Неизвестный идентификатор: %1" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Невозможно найти правильное условие." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Тип, не поддерживаемый для пределов." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Нижний предел больше чем верхний." + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Нижний или верхний предел является неправильным." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Определена переменная, зависящая от себя." + +#~ msgid "The result is not a number" +#~ msgstr "Результат не является числом." + +#~ msgid "Unknown token %1" +#~ msgstr "Неизвестная лексема %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "Для %1 необходимо не менее двух параметров" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "Для %1 требуется указать %2 параметров" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "У %1 отсутствуют пределы" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Недопустимый предел для %1" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 отсутствующих пределов у %2" + +#~ msgid "Wrong declare" +#~ msgstr "Неправильное определение" + +#~ msgid "Empty container: %1" +#~ msgstr "Пустой контейнер: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Условия возможны только в кусочно-заданных конструкциях." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Невозможно определить два параметра с именем %1." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Параметр otherwise должен быть последним" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 не является подходящим условием для кусочно-заданной функции." + +#~ msgid "We can only declare variables" +#~ msgstr "Возможно только объявлять переменные" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Возможны только ограниченные значения" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Ошибка при разборе %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Неизвестный блок: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Невозможно кодифицировать значение %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Оператор %1 не может иметь дочерних контекстов." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Элемент «%1» не является оператором." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Не следует задавать нуль-векторы" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Не поддерживается или неизвестно: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Ожидалось %1 вместо %2" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Отсутствует закрывающая скобка" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Не хватает закрывающих скобок" + +#, fuzzy +#~| msgid "Unexpected token %1" +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Неожиданная лексема %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Неожиданная лексема %1" + +#, fuzzy +#~| msgid "Could not calculate the derivative for '%1'" +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Невозможно посчитать производную выражения «%1»" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "" +#~ "Неверное число параметров для %2. Функция должна иметь %1 параметр." +#~ msgstr[1] "" +#~ "Неверное число параметров для %2. Функция должна иметь %1 параметра." +#~ msgstr[2] "" +#~ "Неверное число параметров для %2. Функция должна иметь %1 параметров." +#~ msgstr[3] "" +#~ "Неверное число параметров для %2. Функция должна иметь 1 параметр." + +#~ msgid "Could not call '%1'" +#~ msgstr "Невозможно вызвать %1" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Невозможно решить %1" + +#, fuzzy +#~| msgid "Enter a name for the new variable" +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Введите имя для новой переменной" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Невозможно определить тип кусочно-заданной функции." + +#~ msgid "Unexpected type" +#~ msgstr "Недопустимый тип" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Невозможно преобразовать %1 в %2" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Неизвестная лексема %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Невозможно посчитать остаток от 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Невозможно посчитать множитель от 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Невозможно посчитать наименьший общий делитель от 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Невозможно посчитать значение %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Неправильный индекс блока." + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Невозможно производить действия с векторами разного размера." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Невозможно посчитать %1 вектора." + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Невозможно посчитать %1 списка." + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Невозможно посчитать производную выражения «%1»" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Невозможно уменьшить %1 и %2." + +#~ msgid "Incorrect domain." +#~ msgstr "Неправильный домен." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Параметрическая функция не возвращает вектор" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Нужно задать двумерный вектор" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Элементы параметрической функции должны быть скалярами" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Производная %1 ещё не реализована." + +#~ msgid "Subtraction" +#~ msgstr "Вычитание" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Ошибка: %2" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Ошибка: нужны значения для построения графика" + +#~ msgid "Generating... Please wait" +#~ msgstr "Создание..." + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Сохранить журнал" + +#, fuzzy +#~| msgctxt "@item:inmenu" +#~| msgid "Fine" +#~ msgid "File" +#~ msgstr "Чёткое" + +#, fuzzy +#~| msgctxt "Error message" +#~| msgid "Unknown bounded variable: %1" +#~ msgid "We can only call functions" +#~ msgstr "Неизвестное краевое значение: %1" + +#, fuzzy +#~| msgctxt "html representation of a number" +#~| msgid "true" +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "истина" + +#, fuzzy +#~| msgctxt "html representation of a number" +#~| msgid "false" +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "ложь" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Save the expression" +#~ msgstr "Сохранить выражение" + +#~ msgid "Calculate the expression" +#~ msgstr "Вычислить выражение" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Функция %1 не существует" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Переменная %1 не существует" + +#~ msgid "Need a var name and a value" +#~ msgstr "Необходимо имя переменной и значение" + +#~ msgid "%1" +#~ msgstr "%1" + +#, fuzzy +#~| msgctxt "Function parameter separator" +#~| msgid ", " +#~ msgid "%1, " +#~ msgstr ", " + +#~ msgctxt "Parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@item:inmenu" +#~ msgid "&New" +#~ msgstr "&Создать" + +#~ msgid "&Save" +#~ msgstr "&Сохранить" diff --git a/po/ru/kalgebramobile.po b/po/ru/kalgebramobile.po new file mode 100644 index 0000000..3604812 --- /dev/null +++ b/po/ru/kalgebramobile.po @@ -0,0 +1,176 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# +# Alexander Potashev , 2018. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2018-08-28 00:14+0300\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \n" +"Language: ru\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 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© Aleix Pol i Gonzalez, 2006-2018" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "" diff --git a/po/ru/plasma_applet_kalgebraplasmoid.po b/po/ru/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..02e4641 --- /dev/null +++ b/po/ru/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,37 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Alexander Potashev , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-04-26 19:31+0400\n" +"Last-Translator: Alexander Potashev \n" +"Language-Team: Russian \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 1.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" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Введите выражение." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/sk/kalgebra.po b/po/sk/kalgebra.po new file mode 100644 index 0000000..d191695 --- /dev/null +++ b/po/sk/kalgebra.po @@ -0,0 +1,461 @@ +# translation of kalgebra.po to Slovak +# Richard Fric , 2007, 2009. +# Roman Paholík , 2012, 2013, 2014, 2015, 2016, 2017. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2019-11-15 12:37+0100\n" +"Last-Translator: Matej Mrenica \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 19.08.3\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Možnosti: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Vložiť \"%1\" do vstupu" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Vložiť do vstupu" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Error: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importované: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Chyba: Nemôžem načítať %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Informácia" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Pridať/Upraviť funkciu" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Náhľad" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Pre:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "OK" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Odstrániť" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Voľby, ktoré ste zadali, nie sú správne" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Dolná hranica nesmie byť väčšia ako horná hranica" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2D graf" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3D graf" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Sedenie" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Premenné" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "Kalkulačka" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "Kalkulačka" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "Načítať skript..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nedávne skripty" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Uložiť skript..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "Exportovať &záznam..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "Vložiť ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Režim spúšťania" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Spočítať" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Vyhodnotiť" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcie" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Zoznam" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Pridať" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Pohľad" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D Graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "&2D Graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "Mriežka" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "Zachovať pomer strán" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Rozlíšenie" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Nízka" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normálna" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Presná" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Veľmi presne" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "3D &Graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &Graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Znovunastaviť pohľad" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Bodky" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Čiarky" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Plný" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operácie" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Slovník" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Hľadať:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "Editovanie" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Vybrať skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Súbor HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Chyby: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Vyberte, kam vložiť vykreslený graf" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Súbor obrázku (*.png);;SVG súbor (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pripravený" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Pridať premennú" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Zadajte meno novej premennej" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Prenosná kalkulačka" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Roman Paholík" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "wizzardsk@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Pridať/upraviť premennú" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Odstrániť premennú" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Upraviť hodnotu '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "nedostupné" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "ZLE" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Vľavo:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Hore:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Šírka:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Výška:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Použiť" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG súbor (*.png);;PDF dokument(*.pdf);;X3D dokument (*.x3d);;STL " +#~ "dokument (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "Konzola" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "Konzola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Vyvinutá funkcia na kreslenie implicitných kriviek. Zlepšenia kresliacich " +#~ "funkcií." diff --git a/po/sk/kalgebramobile.po b/po/sk/kalgebramobile.po new file mode 100644 index 0000000..f14a9cb --- /dev/null +++ b/po/sk/kalgebramobile.po @@ -0,0 +1,177 @@ +# translation of kalgebramobile.po to Slovak +# Roman Paholík , 2018. +# Matej Mrenica , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-08-11 16:35+0200\n" +"Last-Translator: Matej Mrenica \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 19.07.90\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Prenosná kalkulačka" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Roman Paholík" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "wizzardsk@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra Mobile" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Jednoduchá vedecká kalkulačka" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Načítať skript..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Uložiť skript..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportovať záznam..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Vyhodnotiť..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Spočítať..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Vyčistiť záznam" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopírovať \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D vykreslenie" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D vykreslenie" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Uložiť..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Zobraziť mriežku" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Obnoviť zobrazenie" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Vyčistiť všetko" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Chyby: krok nemôže byť 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Chyby: Začiatok a koniec nemôže byť ten istý" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Chyby: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Vstup:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Pre:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Krok:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Spustiť" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Výsledky:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Výraz na vypočítanie..." + +#~ msgid "Results" +#~ msgstr "Výsledky" diff --git a/po/sk/plasma_applet_kalgebraplasmoid.po b/po/sk/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..6087004 --- /dev/null +++ b/po/sk/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,31 @@ +# translation of plasma_applet_kalgebraplasmoid.po to Slovak +# Roman Paholík , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-20 12:45+0200\n" +"Last-Translator: Roman Paholik \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 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Zadajte nejaký výraz." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/sl/kalgebra.po b/po/sl/kalgebra.po new file mode 100644 index 0000000..bfca5c6 --- /dev/null +++ b/po/sl/kalgebra.po @@ -0,0 +1,465 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Jure Repinc , 2007, 2010, 2011. +# Andrej Mernik , 2012, 2013, 2014, 2015, 2016, 2017. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-03-24 21:35+0100\n" +"Last-Translator: Andrej Mernik \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" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Možnosti: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Prilepi »%1« v vnosno polje" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Prilepi v vnosno polje" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Napaka: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Uvoženo: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Napaka: ni bilo mogoče naložiti %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Podrobnosti" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Dodaj/uredi funkcijo" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Predogled" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Od:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Do:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Možnosti" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "V redu" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Odstrani" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Podane možnosti niso pravilne" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Spodnja meja ne more biti večja od zgornje meje" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Izriši v 2D" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Izriši v 3D" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Seja" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Spremenljivke" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Računalo" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "R&ačunalo" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Naloži skript ..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Nedavni skripti" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Shrani skript ..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Izvozi dnevnik ..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Izvedljivi način" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Izračunaj" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Ovrednoti" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funkcije" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Seznam" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Dodaj" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Vidno polje" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2D graf" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&D graf" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Mreža" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Ohrani razmerje" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Ločljivost" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Nizka" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Običajna" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Visoka" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Zelo visoka" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3D graf" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3D &graf" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Ponastavi pogled" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Pike" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Črte" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Polno" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operacije" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "Sl&ovar" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Poišči:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Urejanje" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Izberite skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Datoteka HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Napake: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Izberite kam bo postavljen izrisan graf" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Slikovna datoteka (*.png);;Datoteka SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Pripravljen" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Dodaj spremenljivko" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Vnesite ime nove spremenljivke" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Prenosno računalo" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Jure Repinc,Andrej Mernik" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "jlp@holodeck1.com,andrejm@ubuntu.si" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Dodaj/uredi spremenljivko" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Odstrani spremenljivko" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Uredi vrednost »%1«" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ni na voljo" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "NAPAČNO" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Levo:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Zgoraj:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Širina:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Višina:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Uveljavi" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "Datoteka PNG (*.png);;Dokument PDF (*.pdf);;Dokument X3D (*.x3d);;" +#~ "Dokument STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "K&onzola" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Konzola" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Razvil zmožnost risanja implicitnih krivulj. Izboljšal risalne funkcije." + +#~ msgid "Formula" +#~ msgstr "Formula" diff --git a/po/sl/plasma_applet_kalgebraplasmoid.po b/po/sl/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..fdba72c --- /dev/null +++ b/po/sl/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) 2011 Free Software Foundation, Inc. +# +# Klemen Košir , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2011-09-03 12:40+0100\n" +"Last-Translator: Klemen Košir \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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Vnesite izraz." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/sv/docs/kalgebra/commands.docbook b/po/sv/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..1c3b5b3 --- /dev/null +++ b/po/sv/docs/kalgebra/commands.docbook @@ -0,0 +1,1566 @@ + +Kommandon som stöds av Kalgebra + plus + Namn: plus + Beskrivning: Addition + Parametrar: plus(... parametrar, ...) + Exempel: x->x+2 + + times + Namn: times + Beskrivning: Multiplikation + Parametrar: times(... parametrar, ...) + Exempel: x->x*2 + + minus + Namn: minus + Beskrivning: Subtraktion. Tar bort alla värden från det första. + Parametrar: minus(... parametrar, ...) + Exempel: x->x-2 + + divide + Namn: divide + Beskrivning: Division + Parametrar: divide(par1, par2) + Exempel: x->x/2 + + quotient + Namn: quotient + Beskrivning: Kvot + Parametrar: quotient(par1, par2) + Exempel: x->quotient(x, 2) + + power + Namn: power + Beskrivning: Upphöjt till + Parametrar: power(par1, par2) + Exempel: x->x^2 + + root + Namn: root + Beskrivning: Rot + Parametrar: root(par1, par2) + Exempel: x->root(x, 2) + + factorial + Namn: factorial + Beskrivning: Fakultet. factorial(n)=n! + Parametrar: factorial(par1) + Exempel: x->factorial(x) + + and + Namn: and + Beskrivning: Booleskt och + Parametrar: and(... parametrar, ...) + Exempel: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Namn: or + Beskrivning: Booleskt eller + Parametrar: or(... parametrar, ...) + Exempel: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Namn: xor + Beskrivning: Booleskt exklusivt eller + Parametrar: xor(... parametrar, ...) + Exempel: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Namn: not + Beskrivning: Booleskt icke + Parametrar: not(par1) + Exempel: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Namn: gcd + Beskrivning: Största gemensamma delare + Parametrar: gcd(... parametrar, ...) + Exempel: x->gcd(x, 3) + + lcm + Namn: lcm + Beskrivning: Minsta gemensamma multipel + Parametrar: lcm(... parametrar, ...) + Exempel: x->lcm(x, 4) + + rem + Namn: rem + Beskrivning: Rest + Parametrar: rem(par1, par2) + Exempel: x->rem(x, 5) + + factorof + Namn: factorof + Beskrivning: Faktorn av + Parametrar: factorof(par1, par2) + Exempel: x->factorof(x, 3) + + max + Namn: max + Beskrivning: Maximum + Parametrar: max(... parametrar, ...) + Exempel: x->max(x, 4) + + min + Namn: min + Beskrivning: Minimum + Parametrar: min(... parametrar, ...) + Exempel: x->min(x, 4) + + lt + Namn: lt + Beskrivning: Mindre än. lt(a,b)=a<b + Parametrar: lt(par1, par2) + Exempel: x->piecewise { x<4 ? 1, ? 0 } + + gt + Namn: gt + Beskrivning: Större än. gt(a,b)=a>b + Parametrar: gt(par1, par2) + Exempel: x->piecewise { x>4 ? 1, ? 0 } + + eq + Namn: eq + Beskrivning: Lika med. eq(a,b) = a=b + Parametrar: eq(par1, par2) + Exempel: x->piecewise { x=4 ? 1, ? 0 } + + neq + Namn: neq + Beskrivning: Inte lika med. neq(a,b)=a≠b + Parametrar: neq(par1, par2) + Exempel: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Namn: leq + Beskrivning: Mindre än eller lika med. leq(a,b)=a≤b + Parametrar: leq(par1, par2) + Exempel: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Namn: geq + Beskrivning: Större än eller lika med. geq(a,b)=a≥b + Parametrar: geq(par1, par2) + Exempel: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Namn: implies + Beskrivning: Boolesk implikation + Parametrar: implies(par1, par2) + Exempel: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Namn: approx + Beskrivning: Approximation. approx(a)=a±n + Parametrar: approx(par1, par2) + Exempel: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Namn: abs + Beskrivning: Absolutvärde. abs(n)=|n| + Parametrar: abs(par1) + Exempel: x->abs(x) + + floor + Namn: floor + Beskrivning: Golvfunktionens värde. floor(n)=⌊n⌋ + Parametrar: floor(par1) + Exempel: x->floor(x) + + ceiling + Namn: ceiling + Beskrivning: Takfunktionens värde. ceil(n)=⌈n⌉ + Parametrar: ceiling(par1) + Exempel: x->ceiling(x) + + sin + Namn: sin + Beskrivning: Funktion för att beräkna sinus för en given vinkel + Parametrar: sin(par1) + Exempel: x->sin(x) + + cos + Namn: cos + Beskrivning: Funktion för att beräkna cosinus för en given vinkel + Parametrar: cos(par1) + Exempel: x->cos(x) + + tan + Namn: tan + Beskrivning: Funktion för att beräkna tangens för en given vinkel + Parametrar: tan(par1) + Exempel: x->tan(x) + + sec + Namn: sec + Beskrivning: Sekant + Parametrar: sec(par1) + Exempel: x->sec(x) + + csc + Namn: csc + Description: Cosekant + Parametrar: csc(par1) + Exempel: x->csc(x) + + cot + Namn: cot + Beskrivning: Cotangens + Parametrar: cot(par1) + Exempel: x->cot(x) + + sinh + Namn: sinh + Beskrivning: Hyperbolisk sinus + Parametrar: sinh(par1) + Exempel: x->sinh(x) + + cosh + Namn: cosh + Beskrivning: Hyperbolisk cosinus + Parametrar: cosh(par1) + Exempel: x->cosh(x) + + tanh + Namn: tanh + Beskrivning: Hyperbolisk tangens + Parametrar: tanh(par1) + Exempel: x->tanh(x) + + sech + Namn: sech + Beskrivning: Hyperbolisk sekant + Parametrar: sech(par1) + Exempel: x->sech(x) + + csch + Namn: csch + Beskrivning: Hyperbolisk cosekant + Parametrar: csch(par1) + Exempel: x->csch(x) + + coth + Namn: coth + Beskrivning: Hyperbolisk cotangens + Parametrar: coth(par1) + Exempel: x->coth(x) + + arcsin + Namn: arcsin + Beskrivning: Arcus sinus + Parametrar: arcsin(par1) + Exempel: x->arcsin(x) + + arccos + Namn: arccos + Beskrivning: Arcus cosinus + Parametrar: arccos(par1) + Exempel: x->arccos(x) + + arctan + Namn: arctan + Beskrivning: Arcus tangens + Parametrar: arctan(par1) + Exempel: x->arctan(x) + + arccot + Namn: arccot + Beskrivning: Arcus cotangens + Parametrar: arccot(par1) + Exempel: x->arccot(x) + + arccosh + Namn: arccosh + Beskrivning: Hyperbolisk arcus cosinus + Parametrar: arccosh(par1) + Exempel: x->arccosh(x) + + arccsc + Namn: arccsc + Description: Arcus cosekant + Parametrar: arccsc(par1) + Exempel: x->arccsc(x) + + arccsch + Namn: arccsch + Beskrivning: Hyperbolisk arcus cosekant + Parametrar: arccsch(par1) + Exempel: x->arccsch(x) + + arcsec + Namn: arcsec + Beskrivning: Arcus sekant + Parametrar: arcsec(par1) + Exempel: x->arcsec(x) + + arcsech + Namn: arcsech + Beskrivning: Hyperbolisk arcus sekant + Parametrar: arcsech(par1) + Exempel: x->arcsech(x) + + arcsinh + Namn: arcsinh + Beskrivning: Hyperbolisk arcus sinus + Parametrar: arcsinh(par1) + Exempel: x->arcsinh(x) + + arctanh + Namn: arctanh + Beskrivning: Hyperbolisk arcus tangens + Parametrar: arctanh(par1) + Exempel: x->arctanh(x) + + exp + Namn: exp + Beskrivning: Exponent (e^x) + Parametrar: exp(par1) + Exempel: x->exp(x) + + ln + Namn: ln + Beskrivning: Bas-e logaritm + Parametrar: ln(par1) + Exempel: x->ln(x) + + log + Namn: log + Beskrivning: Bas-10 logaritm + Parametrar: log(par1) + Exempel: x->log(x) + + conjugate + Namn: conjugate + Beskrivning: Konjugera + Parametrar: conjugate(par1) + Exempel: x->conjugate(x*i) + + arg + Namn: arg + Beskrivning: Argument + Parametrar: arg(par1) + Exempel: x->arg(x*i) + + real + Name: real + Beskrivning: Realdel + Parametrar: real(par1) + Exempel: x->real(x*i) + + imaginary + Namn: imaginary + Beskrivning: Imaginärdel + Parametrar: imaginary(par1) + Exempel: x->imaginary(x*i) + + sum + Namn: sum + Beskrivning: Summering + Parametrar: sum(par1 : var=från..till) + Exempel: x->x*sum(t*t:t=0..3) + + product + Namn: product + Beskrivning: Produkt + Parametrar: product(par1 : var=från..till) + Exempel: x->product(t+t:t=1..3) + + diff + Namn: diff + Beskrivning: Derivata + Parametrar: diff(par1 : var) + Exempel: x->(diff(x^2:x))(x) + + card + Namn: card + Beskrivning: Kardinaltal + Parametrar: card(par1) + Exempel: x->card(vector { x, 1, 2 }) + + scalarproduct + Namn: scalarproduct + Beskrivning: Skalärprodukt + Parametrar: scalarproduct(... parametrar, ...) + Exempel: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Namn: selector + Beskrivning: Välj element par1 från listan eller vektorn par2 + Parametrar: selector(par1, par2) + Exempel: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Namn: union + Beskrivning: Sammanfogar flera objekt av samma typ + Parametrar: union(... parametrar, ...) + Exempel: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Namn: forall + Beskrivning: För alla + Parametrar: forall(par1 : var) + Exempel: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Namn: exists + Beskrivning: Existerar + Parametrar: exists(par1 : var) + Exempel: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Namn: map + Beskrivning: Utför en funktion för varje element i en lista + Parametrar: map(par1, par2) + Exempel: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Namn: filter + Beskrivning: Tar bort alla element som inte uppfyller ett villkor + Parametrar: filter(par1, par2) + Exempel: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Namn: transpose + Beskrivning: Transponera + Parametrar: transpose(par1) + Exempel: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/sv/docs/kalgebra/index.docbook b/po/sv/docs/kalgebra/index.docbook new file mode 100644 index 0000000..c2acca8 --- /dev/null +++ b/po/sv/docs/kalgebra/index.docbook @@ -0,0 +1,708 @@ + + + + + + +]> + + + + +Handbok &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+ Stefan Asserhäll
stefan.asserhall@bredband.net
Översättare
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +2016-04-19 +0.10 (Program 16.04) + + +&kalgebra; är ett program som kan ersätta en grafisk miniräknare. Det har numeriska, logiska, symboliska och analytiska funktioner som gör det möjligt att beräkna matematiska uttryck med räknaren och rita upp resultatet grafiskt i två eller tre dimensioner. &kalgebra; är grundat på det matematiska taggspråket (MathML), men man behöver dock inte känna till MathML för att använda &kalgebra;. + + + +KDE +kdeedu +graf +matematik +2D +3D +mathML + + +
+ + +Inledning + +&kalgebra; har en mängd funktioner som låter användare utföra alla sorters matematiska operationer och visa dem grafiskt. Tidigare var programmet grundat på MathML, men nu kan det användas av vem som helst med en viss kunskap om matematik för att lösa likväl enkla som avancerade problem. + +Det innehåller funktioner som: + + + +En räknare för snabb och enkel utvärdering av matematiska funktioner. +Skriptmöjligheter för avancerade beräkningsserier. +Språkmöjligheter inklusive funktionsdefinitioner och automatisk komplettering av syntax. +Analytiska funktioner inklusive symbolisk derivering, vektoranalys och listhantering. +Uppritning av funktioner med rörlig markör för grafisk rotsökning och andra typer av analys. +Tredimensionell uppritning för användbar återgivning av tredimensionella funktioner. +Ett inbyggt lexikon med operatorer för snabb referens till de många tillgängliga funktionerna. + + +Här är en skärmbild av programmet &kalgebra; i arbete: + + +Här är en skärmbild av huvudfönstret i &kalgebra; + + + + + + Huvudfönstret i &kalgebra; + + + + +När användaren påbörjar en session i &kalgebra;, visas ett enda fönster som består av fliken Räknare, en flik med ett tvådimensionellt diagram, en flik med ett tredimensionellt diagram, och fliken Lexikon. I varje flik finns ett inmatningsfält för att mata in funktioner eller beräkningar, och ett visningsfält som visar resultaten. + +Användaren kan när som helst hantera sessioner med alternativen i huvudmenyn Session: + + + + +&Ctrl; N SessionNy +Öppnar ett nytt fönster i &kalgebra;. + + + +&Ctrl;&Shift; F SessionFullskärmsläge +Ändra fullskärmsläge fönstret i &kalgebra;. Fullskärmsläge kan också sättas på eller stängas av genom att använda knappen längst upp till höger i &kalgebra;s fönster. + + + +&Ctrl; Q SessionAvsluta +Stänger av programmet. + + + + + + + +Syntax +&kalgebra; använder intuitiv algebraisk syntax för att mata in användarfunktioner, som liknar det som används av de flesta moderna grafiska miniräknare. Det här avsnittet listar de grundläggande inbyggda operatorer som är tillgängliga i &kalgebra;. Upphovsmannen till &kalgebra; modellerade syntaxen efter Maxima och maple för användare som eventuellt är bekanta med dessa program. + +För användare som är intresserade av hur &kalgebra; fungerar internt, konverteras uttryck som matas in av användare till MathML i bakgrunden. En rudimentär förståelse av möjligheterna i MathML räcker långt för att avslöja de interna möjligheterna i &kalgebra;. + +Här är en lista av operatorer vi har sett nu: + ++ - * / : Addition, subtraktion, multiplikation och division. +^, **: Upphöjt till, där endera formen kan användas. Dessutom är det möjligt att använda Unicode-tecknet ². Upphöjt till är också ett sätt att skriva rötter. Det kan göras som a**(1/b). +-> : lambda. Detta är sättet en eller flera oberoende variabler anges som ska kopplas till en funktion. Exempelvis används lambda operatorn för att ange att x och y kopplas när funktionen length används i uttycket length:=(x,y)->(x*x+y*y)^0.5. +x=a..b : Detta används när man behöver begränsa ett intervall (begränsad variabel+övre gräns+undre gräns). Det betyder att x går från a till b. +() : Används för att ange högre prioritet. +abc(parametrar) : Funktioner. När tolken hittar en funktion, kontrolleras om abc är en operator. Om den är det, behandlas den som en operator. Om den inte är det, behandlas den som en användarfunktion. +:= : Definition. Det används för att definiera ett variabelvärde. Man kan skriva uttryck som x:=3, x:=y (vare sig y är definierad eller inte), omkrets:=r->2*pi*r. +? : Villkorsdefinition del för del. Vi kan definiera villkorsoperationer i &kalgebra; del för del. Med andra ord, är det ett sätt att ange villkoren om, annars om och annars. Om villkoret anges före '?' används uttrycket bara om det är sant. Om ett '?' utan något villkor hittas, används den sista instansen. Till exempel: piecewise { eq (x,0) ? 0, eq(x,1) ? x+1, ? x**2 } +{ } : MathML-omgivning. Den kan användas för att definiera en omgivning. I huvudsak användbar för att arbeta del för del. += > >= < <= : Jämförelse av värden för respektive lika med, större än, större än eller lika med, mindre än, mindre än eller lika med + + +Nu kan man ställa sig frågan varför användaren ska bry sig om MathML? Det är enkelt. Med det kan man utnyttja funktioner som cos(), sin() och övriga trigonometriska funktioner, sum() eller product(). Det spelar ingen roll vilken sort den är Man kan använda plus(), times() och allt som har en operator. Booleska funktioner är också implementerade, så man kan exempelvis skriva något som liknar or(1,0,0,0,0). + + + + +Använda räknaren +&kalgebra;s räknare är användbar som en miniräknare med superstyrka. Användaren kan skriva in uttryck att utvärdera med inställningarna Beräkna eller Utvärdera, beroende på menyvalet Räknare. +I utvärderingsläge förenklar &kalgebra; uttrycket även när det ser en odefinierad variabel. I beräkningsläge beräknar &kalgebra; allting, och om en odefinierad variabel påträffas, visas ett fel. +Förutom att visa ekvationerna som användaren matat in och resultaten i räknaren, visas alla variabler som är deklarerade i en bestående ram till höger. Genom att dubbelklicka på en variabel visas en dialogruta som låter dig ändra värdena (bara ett sätt att gå runt loggen). + +Variabeln "ans" är speciell. Varje gång ett uttryck skrivs in kommer variabeln "ans" värde att ändras till det senaste resultatet. + +Det följande är exempelfunktioner som kan matas in i inmatningsfältet på räknarfönstret: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Det följande visar en skärmbild av räknarfönstret efter att de ovanstående exempeluttrycken har matats in: + +Skärmbild av &kalgebra;s räknarfönster med exempel på uttryck + + + + + + Räknarfönstret i &kalgebra; + + + + + +En användare kan styra hur en serie beräkningar utförs med alternativen i menyn Räknare: + + + + +&Ctrl; L RäknareLadda skript +Kör instruktioner i en fil i tur och ordning. Användbart om man vill definiera några bibliotek eller återuppta något tidigare arbete. + + + +&Ctrl; G RäknareSpara skript +Sparar instruktionerna som har skrivits in sedan sessionen påbörjades, för att kunna återanvända dem. Skapar textfiler, som bör vara enkla att ändra med vilken texteditor som helst, såsom Kate. + + + +&Ctrl; S RäknareExportera logg +Sparar loggen med alla resultat i en &HTML;-fil, för att kunna skriva ut dem eller publicera dem. + + + + + + + +Tvådimensionella diagram +För att lägga till en ny tvådimensionell graf i &kalgebra;, välj den tvådimensionella fliken och klicka på fliken Lägg till för att lägga till en ny funktion. Då ges fokus till en textruta för inmatning där funktionen kan skrivas in. + + +Syntax +Om en typisk f(x)-funktion ska användas, är det inte nödvändigt att ange det, men om en f(y)-funktion eller polär funktion önskas, måste y-> och q-> anges som bundna variabler. + +Exempel: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Om du har skrivit in funktionen, klicka på knappen Ok för att visa grafen i huvudfönstret. + + + + +Funktioner +Flera grafer kan visas i samma diagram. Använd bara knappen Lägg till i listläge. Varje graf kan få en egen färg. + +Vyn kan zoomas och flyttas med musen. Genom att använda mushjulet kan man zooma in eller ut. Man kan också markera ett område med musens vänsterknapp, så zoomas området in. Flytta vyn med piltangenterna. + + + Vyn för tvådimensionellt diagram kan definieras explicit genom att använda fliken Vy under någon av flikarna Tredimensionellt diagram. + + +Under fliken Lista kan en flik benämnd Redigering öppnas med ett dubbelklick för att redigera eller ta bort en funktion, samt visa eller dölja den genom att markera eller avmarkera kryssrutan intill funktionen. +I menyn Tvådimensionellt diagram hittar du följande alternativ: + +Visa eller dölj rutnät +Behåll proportion vid zoomning +Zooma in (&Ctrl; +) och zooma ut (&Ctrl; -) +Spara (&Ctrl; S) grafen som en bildfil +Återställ vyn till ursprunglig zoomning +Välj en upplösning för diagrammen + + +Nedan är en skärmbild av en användare vars markör är vid roten längst till höger för funktionen sin(1/x). Användaren som ritade upp den använde mycket hög upplösning för att skapa grafen (eftersom den oscillerar med allt högre frekvens nära origo). Det finns också en rörlig markörfunktion som visar x och y värden längst ner till vänster på skärmen när markören hålls över en punkt. En rörlig "tangentlinje" ritas vid funktionen på platsen för den rörliga markören. + + +Här är en skärmbild av fönstret för tvådimensionella diagram i &kalgebra; + + + + + + Fönstret för tvådimensionella diagram i &kalgebra; + + + + + + + + + + +Tredimensionella diagram + +För att rita en tredimensionell graf i &kalgebra;, välj fliken Tredimensionellt diagram. Längst ner finns ett inmatningsfält där funktionen kan skrivas in. Z kan ännu inte definieras. För närvarande stöder &kalgebra; bara tredimensionella diagram som bara beror explicit på x och y, såsom (x,y)->x*y, där z=x*y. + +Exempel: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +Vyn kan zoomas och flyttas med musen. Genom att använda mushjulet kan man zooma in eller ut. Håll nere vänster musknapp och flytta musen för att rotera diagrammet. + + Vänster och höger piltangenter roterar diagrammet omkring Z-axeln, medan uppåt- och neråttangenterna roterar omkring vyns horisontella axel. Tryck på W för att zooma in i diagrammet och S för att zooma ut. + +I menyn Tredimensionellt diagram hittar du följande alternativ: + + +Spara (&Ctrl; S) grafen som en bildfil +Återställ vyn till ursprunglig zoomning i menyn för tredimensionella diagram +Du kan rita diagrammet med punkter, linjer eller ytor i menyn för tredimensionella diagram + + +Nedan finns en skärmbild av den så kallade "sombrero-funktionen". Just den här grafen visas med linjestil i det tredimensionella diagrammet. + + +Här är en skärmbild av fönstret för tredimensionella diagram i &kalgebra; + + + + + + Fönstret för tredimensionella diagram i &kalgebra; + + + + + + + +Lexikon + +Lexikonet är en samling av alla inbyggda funktioner i &kalgebra;. Det kan vara användbart för att hitta definitionen av en operation och dess inparametrar. Det är en användbar plats för att få reda på de många möjligheterna i &kalgebra;. + + Nedan visas en skärmbild av uppslagning av funktionen cosinus i &kalgebra;s lexikon. + + +Här är en skärmbild av lexikonfönstret i &kalgebra; + + + + + + Lexikonfönstret i &kalgebra; + + + + + + + +&commands; + + +Tack till och licens + + +Program copyright 2005-2009 &Aleix.Pol; + + + +Dokumentation copyright 2007 &Aleix.Pol; &Aleix.Pol.mail; + +Översättning Stefan Asserhäll stefan.asserhall@bredband.net &underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/sv/kalgebra.po b/po/sv/kalgebra.po new file mode 100644 index 0000000..b250c4e --- /dev/null +++ b/po/sv/kalgebra.po @@ -0,0 +1,1137 @@ +# translation of kalgebra.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 , 2007, 2008, 2009, 2010. +# Stefan Asserhall , 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-27 09:58+0100\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 2.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Alternativ: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Klistra in \"%1\" i indata" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Klistra in som indata" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Fel: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Importerade: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Fel: Kunde inte läsa in %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Information" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Lägg till eller redigera en funktion" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Förhandsgranskning" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Från:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Till:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Alternativ" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Ok" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Ta bort" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Alternativen du angav är inte riktiga" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Undre gränsen kan inte vara större än den övre" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Rita i två dimensioner" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Rita i tre dimensioner" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Session" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Variabler" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "Rä&knare" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "Räkn&are" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Ladda skript..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Senaste skript" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Spara skript..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Exportera logg..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Infoga ans..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Körningsläge" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Beräkna" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Utvärdera" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Funktioner" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Lista" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Lägg till" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Vy" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&Tvådimensionellt diagram" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Två&dimensionellt diagram" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Rutnät" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Behåll proportion" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Upplösning" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Låg" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Hög" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Mycket hög" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "T&redimensionellt diagram" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "Tredi&mensionellt diagram" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Åte&rställ vy" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Punkter" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Linjer" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Ytor" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Operationer" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Lexikon" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Sök efter:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Redigering" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Välj ett skript" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML-fil (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Fel: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Välj var det återgivna diagrammet ska placeras" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Bildfil (*.png);;SVG-fil (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Klar" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Lägg till variabel" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Ange den nya variabelns namn" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "En flyttbar räknare" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© 2006-2016 Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stefan Asserhäll" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "stefan.asserhall@bredband.net" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Lägg till eller redigera en variabel" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Ta bort variabel" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Redigera värdet '%1'" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "inte tillgänglig" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "Fel" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Vänster:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Överst:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Bredd:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Höjd:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Verkställ" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG-fil (*.png);;PDF-dokument(*.pdf);;X3D-dokument (*.x3d);;STL-dokument " +#~ "(*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "&Terminal" + +#~ msgid "KAlgebra" +#~ msgstr "Kalgebra" + +#~ msgid "&Console" +#~ msgstr "&Terminal" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Utvecklade funktion för att rita implicita kurvor. Förbättringar för " +#~ "uppritning av funktioner." + +#~ msgid "Formula" +#~ msgstr "Formel" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Fel: Oriktig typ av funktion" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Klar: %1ms" + +#~ msgid "Error: %1" +#~ msgstr "Fel: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Rensa" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|PNG-fil" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Genomskinlighet" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Result: %1" +#~ msgstr "Resultat: %1" + +#~ msgid "To Expression" +#~ msgstr "Till uttryck" + +#~ msgid "To MathML" +#~ msgstr "Till MathML" + +#~ msgid "Simplify" +#~ msgstr "Förenkla" + +#~ msgid "Examples" +#~ msgstr "Exempel" + +#~ msgid "We can only draw Real results." +#~ msgstr "Det går bara att rita reella resultat." + +#~ msgid "The expression is not correct" +#~ msgstr "Uttrycket är inte riktigt" + +#~ msgid "Function type not recognized" +#~ msgstr "Funktionstypen känns inte igen" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Funktionstypen inte riktig för funktioner som beror på %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Implicit funktion odefinierad i planet" + +#~ msgid "center" +#~ msgstr "Centrera" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Namn" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Funktion" + +#~ msgid "%1 function added" +#~ msgstr "%1 funktion tillagd" + +#~ msgid "Hide '%1'" +#~ msgstr "Dölj '%1'" + +#~ msgid "Show '%1'" +#~ msgstr "Visa '%1'" + +#~ msgid "Selected viewport too small" +#~ msgstr "Vald vy för liten" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Beskrivning" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Parametrar" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Exempel" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : var" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=från..till" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1 ..., parametrar, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Addition" + +#~ msgid "Multiplication" +#~ msgstr "Multiplikation" + +#~ msgid "Division" +#~ msgstr "Division" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Subtraktion. Tar bort alla värden från det första." + +#~ msgid "Power" +#~ msgstr "Upphöjt till" + +#~ msgid "Remainder" +#~ msgstr "Rest" + +#~ msgid "Quotient" +#~ msgstr "Kvot" + +#~ msgid "The factor of" +#~ msgstr "Faktorn av" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Fakultet. factorial(n) = n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Funktion för att beräkna sinus för en given vinkel" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Funktion för att beräkna cosinus för en given vinkel" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Funktion för att beräkna tangens för en given vinkel" + +#~ msgid "Secant" +#~ msgstr "Sekant" + +#~ msgid "Cosecant" +#~ msgstr "Cosekant" + +#~ msgid "Cotangent" +#~ msgstr "Cotangens" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Hyperbolisk sinus" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Hyperbolisk cosinus" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Hyperbolisk tangens" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Hyperbolisk sekant" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Hyperbolisk cosekant" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Hyperbolisk cotangens" + +#~ msgid "Arc sine" +#~ msgstr "Arcus sinus" + +#~ msgid "Arc cosine" +#~ msgstr "Arcus cosinus" + +#~ msgid "Arc tangent" +#~ msgstr "Arcus tangens" + +#~ msgid "Arc cotangent" +#~ msgstr "Arcus cotangens" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Hyperbolisk arcus tangens" + +#~ msgid "Summatory" +#~ msgstr "Summa" + +#~ msgid "Productory" +#~ msgstr "Produkt" + +#~ msgid "For all" +#~ msgstr "För alla" + +#~ msgid "Exists" +#~ msgstr "Det existerar" + +#~ msgid "Differentiation" +#~ msgstr "Derivering" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Hyperbolisk arcus sinus" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Hyperbolisk arcus cosinus" + +#~ msgid "Arc cosecant" +#~ msgstr "Arcus cosekant" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Hyperbolisk arcus cosekant" + +#~ msgid "Arc secant" +#~ msgstr "Arcus sekant" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Hyperbolisk arcus sekant" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Exponent (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Bas-e logaritm" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Bas-10 logaritm" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Absolutvärde. abs(n) = |n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Golvfunktion. ceil(n) = ⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Takfunktion. ceil(n) =⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Minimum" + +#~ msgid "Maximum" +#~ msgstr "Maximum" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Större än. gt(a,b) = a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : gränser" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Värde" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Måste ange en riktig operation" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Okänd identifierare: '%1'" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Kunde inte hitta lämpligt val för en villkorssats." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Typ stöds inte för avgränsning." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Undre gränsen är större än den övre" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Felaktig övre eller undre gräns." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Definierade en cyklisk variabel" + +#~ msgid "The result is not a number" +#~ msgstr "Resultatet är inte ett tal" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Kom oväntat till slutet av indata" + +#~ msgid "Unknown token %1" +#~ msgstr "Okänd symbol %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 kräver minst två parametrar" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 kräver %2 parametrar" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "Saknar gräns för '%1'" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Oväntad avgränsning för '%1'" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "%1 saknar gränser för '%2'" + +#~ msgid "Wrong declare" +#~ msgstr "Felaktig deklaration" + +#~ msgid "Empty container: %1" +#~ msgstr "Tom behållare: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Villkor får bara finnas inne i villkorsstrukturer." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "Det kan inte finnas två parametrar med samma namn som '%1'." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Parametern otherwise ska vara den sista" + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 är inte ett riktigt villkor inne i villkorssatsen" + +#~ msgid "We can only declare variables" +#~ msgstr "Det går bara att deklarera variabler" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Det går bara att ha gränsvariabler" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Fel vid tolkning: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Okänd behållare: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Kan inte tolka värdet %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Operatorn %1 kan inte ha underliggande objektsammanhang." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Elementet '%1' är inte en operator" + +#~ msgid "Do not want empty vectors" +#~ msgstr "Vill inte ha tomma vektorer" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Stöds inte eller okänd: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Förväntade %1 istället för '%2'" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Saknar högerparentes" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Obalanserad högerparentes" + +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Oväntad symbolidentifierare: %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Oväntad symbol %1" + +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Kunde inte hitta en typ som förenar '%1'" + +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Domänen ska antingen vara en vektor eller en lista" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Felaktigt antal parametrar för '%2'. Ska vara 1 parametrar." +#~ msgstr[1] "Felaktigt antal parametrar för '%2'. Ska vara %1 parametrar." + +#~ msgid "Could not call '%1'" +#~ msgstr "Kunde inte anropa '%1'" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Kunde inte lösa '%1'" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Osammanhängande typ för variabeln '%1'" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Kunde inte bestämma typ för villkorssats" + +#~ msgid "Unexpected type" +#~ msgstr "Oväntad typ" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Kan inte konvertera '%1' till '%2'" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Okänd symbol %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Kan inte beräkna rest för 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Kan inte beräkna faktor för 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Kan inte beräkna minsta gemensamma faktor för 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Kunde inte beräkna ett värdes %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Ogiltigt index för en behållare" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Kan inte utföra beräkning med vektorer av olika storlek." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Kunde inte beräkna en vektors %1" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Kunde inte beräkna en listas %1" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Kunde inte beräkna derivatan av '%1'" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Kunde inte reducera '%1' och '%2'." + +#~ msgid "Incorrect domain." +#~ msgstr "Felaktig domän." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Parameterfunktionen returnerar inte en vektor" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "En tvådimensionell vektor behövs" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Parameterfunktionens objekt måste vara skalärer" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Derivata av ordningen %1 har inte implementerats." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Förstod inte det verkliga värdet: %1" + +#~ msgid "Subtraction" +#~ msgstr "Subtraktion" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Fel: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Välj ett element från behållaren" + +#~ msgid " Plot 3D" +#~ msgstr " Rita i tre dimensioner" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Fel: Det behövs värden för att rita ett diagram" + +#~ msgid "Generating... Please wait" +#~ msgstr "Producerar ... Vänta" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Felaktigt antal parametrar, har 1 parameter för '%2'" +#~ msgstr[1] "Felaktigt antal parametrar, har %1 parametrar för '%2'" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Spara logg" + +#~ msgid "File" +#~ msgstr "Arkiv" + +#~ msgid "We can only call functions" +#~ msgstr "Det går bara att anropa funktioner" + +#~ msgid "Wrong parameter count" +#~ msgstr "Felaktigt antal parametrar" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "sant" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "falskt" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid parameter count." +#~ msgstr "Felaktigt antal parametrar." + +#~ msgid "Mode" +#~ msgstr "Läge" + +#~ msgid "Save the expression" +#~ msgstr "Spara uttrycket" + +#~ msgid "Calculate the expression" +#~ msgstr "Beräkna uttrycket" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Kan inte tilldela '%1' till '%2'" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Kan inte utföra beräkning '%1'" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Kan inte kontrollera typen hos '%1'." + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Fel antal parametrar vid anrop till '%1'" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Kan inte ha undre gräns ≥ övre gräns" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Försök att anropa en ogiltig funktion" + +#~ msgid "Unfulfilled dependencies for: '%1'" +#~ msgstr "Ouppfyllda beroenden för: '%1'" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "We want a 2 dimension vector" +#~ msgstr "Vi vill ha en tvådimensionell vektor" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Funktionen %1 finns inte" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Variabeln %1 finns inte" + +#~ msgid "Need a var name and a value" +#~ msgstr "Kräver ett variabelnamn och ett värde" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "En behållares värde kan bara väljas med dess heltalsindex" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "Den första parametern i en funktion ska vara namnet" diff --git a/po/sv/kalgebramobile.po b/po/sv/kalgebramobile.po new file mode 100644 index 0000000..53e5197 --- /dev/null +++ b/po/sv/kalgebramobile.po @@ -0,0 +1,202 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 20:51+0100\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "En flyttbar räknare" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stefan Asserhäll" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "stefan.asserhall@bredband.net" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "Mobil Kalgebra" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "En enkel vetenskaplig räknare" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Ladda skript..." + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Skript (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Spara skript..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Exportera logg..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Utvärdera..." + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Beräkna..." + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Rensa logg" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Kopiera \"%1\"" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Tvådimensionellt diagram" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Tredimensionellt diagram" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Spara..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Visa rutnät" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Återställ visningsområde" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Rensa alla" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Fel: Steget kan inte vara 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Fel: Start och slut är likadana" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Fel: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Indata:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Från:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "Till:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Steg:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Kör" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Resultat:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Uttryck att beräkna..." + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "Kalgebra kommer till dig av den underbara KDE-gemenskapen och KDE Utbildning från " +#~ "en miljö med fri programvara." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Om du vill ta reda på mer om Kalgebra, hittar du mer information på den " +#~ "officiella webbplatsen och i användarnas wiki.
Om du har några problem med " +#~ "programvaran, rapportera det gärna till vårt felspårningsverktyg." + +#~ msgid "Results" +#~ msgstr "Resultat" diff --git a/po/sv/plasma_applet_kalgebraplasmoid.po b/po/sv/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..3797150 --- /dev/null +++ b/po/sv/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Stefan Asserhäll , 2014. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 17:13+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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Ange ett uttryck." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "Kalgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/tr/kalgebra.po b/po/tr/kalgebra.po new file mode 100644 index 0000000..972049d --- /dev/null +++ b/po/tr/kalgebra.po @@ -0,0 +1,456 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# H. İbrahim Güngör , 2011. +# Kunter Kutlu , 2008. +# Necmettin Begiter , 2008. +# Ozan Çağlayan , 2010. +# Renan Cakirerk, 2010. +# obsoleteman , 2007-2009. +# Volkan Gezer , 2014. +# Kaan Ozdincer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdeedu-kde4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2017-05-16 09:29+0000\n" +"Last-Translator: Kaan \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 1.4\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Seçenekler: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "\"%1\" metnini girdiye yapıştır" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Girdiye Yapıştır" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    Hata: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "İçeriye aktarıldı: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Hata: %1 yüklenemedi.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Bilgi" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "İşlev ekle veya düzenle" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Önizleme" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Kimden:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "Alıcı:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Seçenekler" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Tamam" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Sil" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Verdiğiniz seçenek doğru değil" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Alt sınır üst sınırdan büyük olamaz" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "2B Çizim" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "3B Çizim" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Oturum" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Değişkenler" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Hesap Makinesi" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "Hes&aplayıcı" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Betik Yükle..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Güncel Betikler" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "Betiği &Kaydet" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Sistem Günlüğünü Dışa Aktar..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Çalıştırma Kipi" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Hesapla" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Hesapla" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "İşlevler" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Liste" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Ekle" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Görüş alanı" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&2B Grafik" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "2&B Grafik" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "Iz&gara" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Görünüm Oranını Koru" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Çözünürlük" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Zayıf" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Normal" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "İyi" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Çok İyi" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&3B Grafik" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "3B &Grafik" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "Görünümü Sıfı&rla" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Noktalar" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Çizgiler" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Katı" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "İşlemler" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "S&özlük" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Aranacak:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Düzenleme" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Bir betik seçin" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Betik (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML Dosyası(*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Hatalar: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Gerçeklenen çizimin nereye konacağını seçin" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "Resim Dosyası (*.png);;SVG Dosyası (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Hazır" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Değişken ekle" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Yeni değişkenin adını girin" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Taşınabilir bir hesap makinesi" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Necdet Yücel, Serdar Soytetir, Ahmet Duran" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "necdetyucel@gmail.com, tulliana@gmail.com, paradoxical.boy@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Bir değişken ekle/değiştir" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Değişkeni Sil" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "'%1' değerini değiştir" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "kullanılabilir değil" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "YANLIŞ" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Sol:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Üst:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Genişlik:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Yükseklik:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Uygula" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "PNG Dosyası (*.png);;PDF Belgesi(*.pdf);;X3D Belgesi (*.x3d);;STL Belgesi " +#~ "(*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "K&onsol" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Konsol" diff --git a/po/tr/plasma_applet_kalgebraplasmoid.po b/po/tr/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..e29fdb4 --- /dev/null +++ b/po/tr/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Volkan, 2013. +# Kaan Ozdincer , 2014. +msgid "" +msgstr "" +"Project-Id-Version: kdeedu-kde4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-11-12 00:37+0200\n" +"Last-Translator: Kaan Ozdincer \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 1.4\n" +"(http: //www.transifex.com/projects/p/kdeedu-k-tr/language/tr/)\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Bir ifade girin." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/ug/kalgebra.po b/po/ug/kalgebra.po new file mode 100644 index 0000000..ef678d8 --- /dev/null +++ b/po/ug/kalgebra.po @@ -0,0 +1,557 @@ +# Uyghur translation for kalgebra. +# 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: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\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" + +#: consolehtml.cpp:167 +#, fuzzy, kde-format +#| msgid " %2" +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "تاللانما: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    خاتالىق: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    خاتالىق: %1 نى ئوقۇغىلى بولمىدى.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "ئۇچۇر" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "ئالدىن كۆزەت" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "ئەۋەتكۈچى:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "خەت تاپشۇرۇۋالغۇچى:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "تاللانما" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "تامام" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "چىقىرىۋەت" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "ئەڭگىمە" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "ئۆزگەرگۈچىلەر" + +#: kalgebra.cpp:155 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "&Calculator" +msgstr "ھېسابلا" + +#: kalgebra.cpp:167 +#, fuzzy, kde-format +#| msgctxt "@item:inmenu" +#| msgid "Calculate" +msgid "C&alculator" +msgstr "ھېسابلا" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "ھېسابلا" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "باھا" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "فۇنكسىيىلەر" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "تىزىم" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "قوش(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "كۆرۈنۈش ئېغىزى(Viewport)" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "كاتەك(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "ئېگىزلىك-كەڭلىك نىسبىتىنى ساقلاپ قال(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "ئېنىقلىق" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "ناچار" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "نورمال" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "سىپتا" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "چېكىت" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "سىزىقلار" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "لىق تولغان" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "ھېسابلا" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "لۇغەت(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr "، " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "تەييار" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "" + +#: main.cpp:31 +#, fuzzy, kde-format +#| msgid "Aleix Pol Gonzalez" +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "Aleix Pol Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "ئىشلەتكىلى بولمايدۇ" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "سول:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "چوققا:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "كەڭلىك:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "ئېگىزلىك:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "قوللان" + +#~ msgid "C&onsole" +#~ msgstr "تىزگىن سۇپا(&O)" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "Formula" +#~ msgstr "فورمۇلا" + +#~ msgid "Error: %1" +#~ msgstr "خاتالىق: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "تازىلا" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "سۈزۈك(&T)" + +#~ msgid "Type" +#~ msgstr "تىپى" + +#~ msgid "Simplify" +#~ msgstr "ئاددىيلاشتۇر" + +#~ msgid "Examples" +#~ msgstr "مىساللار" + +#~ msgid "center" +#~ msgstr "ئوتتۇرا" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "ئاتى" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "فۇنكسىيە" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "چۈشەندۈرۈش" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "پارامېتىر" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "مىسال" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "قوشۇش" + +#~ msgid "Multiplication" +#~ msgstr "كۆپەيتىش" + +#~ msgid "Division" +#~ msgstr "تارماق" + +#~ msgid "Power" +#~ msgstr "توك مەنبە" + +#~ msgid "Cotangent" +#~ msgstr "كونتاگېنس" + +#~ msgid "Hyperbolic sine" +#~ msgstr "گىپېربولالىق سىنۇس" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "گىپېربولالىق كوسىنوس" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "گىپېربولالىق تانگېنس" + +#~ msgid "Arc sine" +#~ msgstr "ئارك سىنۇس" + +#~ msgid "Arc cosine" +#~ msgstr "ئارك كوسىنوس" + +#~ msgid "Arc tangent" +#~ msgstr "ئارك تانگېنس" + +#~ msgid "Minimum" +#~ msgstr "ئەڭ كىچىك" + +#~ msgid "Maximum" +#~ msgstr "ئەڭ چوڭ" + +#~ msgid "Root" +#~ msgstr "غول مۇندەرىجە" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr "، " + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "قىممەت" + +#~ msgid "Unexpected type" +#~ msgstr "كۈتۈلمىگەن تىپ" diff --git a/po/ug/plasma_applet_kalgebraplasmoid.po b/po/ug/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..df6b95f --- /dev/null +++ b/po/ug/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,33 @@ +# Uyghur translation for plasma_applet_kalgebra. +# 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: plasma_applet_kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\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" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "بىر نەچچە ئىپادە كىرگۈزۈڭ." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/uk/docs/kalgebra/commands.docbook b/po/uk/docs/kalgebra/commands.docbook new file mode 100644 index 0000000..8065f2c --- /dev/null +++ b/po/uk/docs/kalgebra/commands.docbook @@ -0,0 +1,1568 @@ + +Команди, що підтримуються KAlgebra + plus + Назва: plus + Опис: додавання + Параметри: plus(... параметри, ...) + Приклад: x->x+2 + + times + Назва: times + Опис: множення + Параметри: times(... параметри, ...) + Приклад: x->x*2 + + minus + Назва: minus + Опис: віднімання. Віднімає всі значення від першого. + Параметри: minus(... параметри, ...) + Приклад: x->x-2 + + divide + Назва: divide + Опис: ділення + Параметри: divide(параметр1, параметр2) + Приклад: x->x/2 + + quotient + Назва: quotient + Опис: ціла частина від ділення + Параметри: quotient(параметр1, параметр2) + Приклад: x->quotient(x, 2) + + power + Назва: power + Опис: степінь + Параметри: power(параметр1, параметр2) + Приклад: x->x^2 + + root + Назва: root + Опис: корінь + Параметри: root(параметр1, параметр2) + Приклад: x->root(x, 2) + + factorial + Назва: factorial + Опис: факторіал. factorial(n)=n! + Параметри: factorial(параметр1) + Приклад: x->factorial(x) + + and + Назва: and + Опис: булівське «ТА» + Параметри: and(... параметр, ...) + Приклад: x->piecewise { and(x>-2, x<2) ? 1, ? 0 } + + or + Назва: or + Опис: булівське «АБО» + Параметри: or(... параметр, ...) + Приклад: x->piecewise { or(x>2, x>-2) ? 1, ? 0 } + + xor + Назва: xor + Опис: булівське виключне «АБО» + Параметри: xor(... параметр, ...) + Приклад: x->piecewise { xor(x>0, x<3) ? 1, ? 0 } + + not + Назва: not + Опис: булівське «НІ» + Параметри: not(параметр1) + Приклад: x->piecewise { not(x>0) ? 1, ? 0 } + + gcd + Назва: gcd + Опис: найбільший спільний дільник + Параметри: gcd(... параметр, ...) + Приклад: x->gcd(x, 3) + + lcm + Назва: lcm + Опис: найменше спільне кратне + Параметри: lcm(... параметр, ...) + Приклад: x->lcm(x, 4) + + rem + Назва: rem + Опис: лишок від ділення + Параметри: rem(параметр1, параметр2) + Приклад: x->rem(x, 5) + + factorof + Назва: factorof + Опис: чи є число дільником + Параметри: factorof(параметр1, параметр2) + Приклад: x->factorof(x, 3) + + max + Назва: max + Опис: максимум + Параметри: max(... параметр, ...) + Приклад: x->max(x, 4) + + min + Назва: min + Опис: мінімум + Параметри: min(... параметр, ...) + Приклад: x->min(x, 4) + + lt + Назва: lt + Опис: менше. lt(a,b)=a<b + Параметри: lt(параметр1, параметр2) + Приклад: x->piecewise { x<4 ? 1, ? 0 } + + gt + Назва: gt + Опис: більше. gt(a,b)=a>b + Параметри: gt(параметр1, параметр2) + Приклад: x->piecewise { x>4 ? 1, ? 0 } + + eq + Назва: eq + Опис: дорівнює. eq(a,b) = a=b + Параметри: eq(параметр1, параметр2) + Приклад: x->piecewise { x=4 ? 1, ? 0 } + + neq + Назва: neq + Опис: не дорівнює. neq(a,b)=a≠b + Параметри: neq(параметр1, параметр2) + Приклад: x->piecewise { x!=4 ? 1, ? 0 } + + leq + Назва: leq + Опис: менше або дорівнює. leq(a,b) = a⩽b + Параметри: leq(параметр1, параметр2) + Приклад: x->piecewise { x<=4 ? 1, ? 0 } + + geq + Назва: geq + Опис: більше або дорівнює. geq(a,b)= a⩾b + Параметри: geq(параметр1, параметр2) + Приклад: x->piecewise { x>=4 ? 1, ? 0 } + + implies + Назва: implies + Опис: булівська імплікація (є наслідком) + Параметри: implies(параметр1, параметр2) + Приклад: x->piecewise { implies(x<0, x<3) ? 1, ? 0 } + + approx + Назва: approx + Опис: приблизно дорівнює. approx(a) = a±n + Параметри: approx(параметр1, параметр2) + Приклад: x->piecewise { approx(x, 4) ? 1, ? 0 } + + abs + Назва: abs + Опис: модуль. abs(n)=|n| + Параметри: abs(параметр1) + Приклад: x->abs(x) + + floor + Назва: floor + Опис: округлення до меншого цілого. floor(n) = ⌊n⌋ + Параметри: floor(параметр1) + Приклад: x->floor(x) + + ceiling + Назва: ceiling + Опис: Ceil value. ceil(n) = ⌈n⌉ + Параметри: ceiling(параметр1) + Приклад: x->ceiling(x) + + sin + Назва: sin + Опис: функція обчислення синуса вказаного кута + Параметри: sin(параметр1) + Приклад: x->sin(x) + + cos + Назва: cos + Опис: функція обчислення косинуса вказаного кута + Параметри: cos(параметр1) + Приклад: x->cos(x) + + tan + Назва: tan + Опис: функція обчислення тангенса вказаного кута + Параметри: tan(параметр1) + Приклад: x->tan(x) + + sec + Назва: sec + Опис: секанс + Параметри: sec(параметр1) + Приклад: x->sec(x) + + csc + Назва: csc + Опис: косеканс + Параметри: csc(параметр1) + Приклад: x->csc(x) + + cot + Назва: cot + Опис: котангенс + Параметри: cot(параметр1) + Приклад: x->cot(x) + + sinh + Назва: sinh + Опис: гіперболічний синус + Параметри: sinh(параметр1) + Приклад: x->sinh(x) + + cosh + Назва: cosh + Опис: гіперболічний косинус + Параметри: cosh(параметр1) + Приклад: x->cosh(x) + + tanh + Назва: tanh + Опис: гіперболічний тангенс + Параметри: tanh(параметр1) + Приклад: x->tanh(x) + + sech + Назва: sech + Опис: гіперболічний секанс + Параметри: sech(параметр1) + Приклад: x->sech(x) + + csch + Назва: csch + Опис: гіперболічний косеканс + Параметри: csch(параметр1) + Приклад: x->csch(x) + + coth + Назва: coth + Опис: гіперболічний котангенс + Параметри: coth(параметр1) + Приклад: x->coth(x) + + arcsin + Назва: arcsin + Опис: арксинус + Параметри: arcsin(параметр1) + Приклад: x->arcsin(x) + + arccos + Назва: arccos + Опис: арккосинус + Параметри: arccos(параметр1) + Приклад: x->arccos(x) + + arctan + Назва: arctan + Опис: арктангенс + Параметри: arctan(параметр1) + Приклад: x->arctan(x) + + arccot + Назва: arccot + Опис: арккотангенс + Параметри: arccot(параметр1) + Приклад: x->arccot(x) + + arccosh + Назва: arccosh + Опис: гіперболічний арккосинус + Параметри: arccosh(параметр1) + Приклад: x->arccosh(x) + + arccsc + Назва: arccsc + Опис: арккосеканс + Параметри: arccsc(параметр1) + Приклад: x->arccsc(x) + + arccsch + Назва: arccsch + Опис: гіперболічний арккосеканс + Параметри: arccsch(параметр1) + Приклад: x->arccsch(x) + + arcsec + Назва: arcsec + Опис: арксеканс + Параметри: arcsec(параметр1) + Приклад: x->arcsec(x) + + arcsech + Назва: arcsech + Опис: гіперболічний арксеканс + Параметри: arcsech(параметр1) + Приклад: x->arcsech(x) + + arcsinh + Назва: arcsinh + Опис: гіперболічний арксинус + Параметри: arcsinh(параметр1) + Приклад: x->arcsinh(x) + + arctanh + Назва: arctanh + Опис: гіперболічний арктангенс + Параметри: arctanh(параметр1) + Приклад: x->arctanh(x) + + exp + Назва: exp + Опис: експонента (ex) + Параметри: exp(параметр1) + Приклад: x->exp(x) + + ln + Назва: ln + Опис: натуральний логарифм + Параметри: ln(параметр1) + Приклад: x->ln(x) + + log + Назва: log + Опис: десятковий логарифм + Параметри: log(параметр1) + Приклад: x->log(x) + + conjugate + Назва: conjugate + Опис: спряження + Параметри: conjugate(параметр1) + Приклад: x->conjugate(x*i) + + arg + Назва: arg + Опис: аргумент + Параметри: arg(параметр1) + Приклад: x->arg(x*i) + + real + Назва: real + Опис: дійсна частина + Параметри: real(параметр1) + Приклад: x->real(x*i) + + imaginary + Назва: imaginary + Опис: уявна частина + Параметри: imaginary(параметр1) + Приклад: x->imaginary(x*i) + + sum + Назва: sum + Опис: суматор + Параметри: sum(параметр1:var=від..до) + Приклад: x->x*sum(t*t:t=0..3) + + product + Назва: product + Опис: добуток + Параметри: product(параметр1 : var=від..до) + Приклад: x->product(t+t:t=1..3) + + diff + Назва: diff + Опис: диференціювання + Параметри: diff(параметр1 : змінна) + Приклад: x->(diff(x^2:x))(x) + + card + Назва: card + Опис: потужність множини + Параметри: card(параметр1) + Приклад: x->card(vector { x, 1, 2 }) + + scalarproduct + Назва: scalarproduct + Опис: скалярний добуток + Параметри: scalarproduct(... параметр, ...) + Приклад: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + selector + Назва: selector + Опис: вибрати елемент параметр1 зі списку чи вектора параметр2 + Параметри: selector(параметр1, параметр2) + Приклад: x->scalarproduct(vector { 0, x }, vector { x, 0 })[1] + + union + Назва: union + Опис: з’єднує декілька елементів одного типу + Параметри: union(... параметр, ...) + Приклад: x->union(list { 1, 2, 3 }, list { 4, 5, 6 })[rem(floor(x), 5)+3] + + forall + Назва: forall + Опис: для всіх + Параметри: forall(par1 : var) + Приклад: x->piecewise { forall(t:t@list { true, false, false }) ? 1, ? 0 } + + exists + Назва: exists + Опис: існує + Параметри: exists(параметр1 : змінна) + Приклад: x->piecewise { exists(t:t@list { true, false, false }) ? 1, ? 0 } + + map + Назва: map + Опис: застосувати функцію до всіх елементів списку + Параметри: map(параметр1, параметр2) + Приклад: x->map(x->x+x, list { 1, 2, 3, 4, 5, 6 })[rem(floor(x), 5)+3] + + filter + Назва: filter + Опис: вилучити всі елементи, які не задовольняють умові + Параметри: filter(параметр1, параметр2) + Приклад: x->filter(u->rem(u, 2)=0, list { 2, 4, 3, 4, 8, 6 })[rem(floor(x), 5)+3] + + transpose + Назва: transpose + Опис: транспонування + Параметри: transpose(параметр1) + Приклад: x->transpose(matrix { matrixrow { 1, 2, 3, 4, 5, 6 } })[rem(floor(x), 5)+3][1] + + diff --git a/po/uk/docs/kalgebra/index.docbook b/po/uk/docs/kalgebra/index.docbook new file mode 100644 index 0000000..0acaeec --- /dev/null +++ b/po/uk/docs/kalgebra/index.docbook @@ -0,0 +1,707 @@ + + + + + + +]> + + + + +Підручник з &kalgebra; + + +Aleix Pol
&Aleix.Pol.mail;
+
+
+ЮрійЧорноіван
yurchor@ukr.net
Переклад українською
+
+ + +2007 +&Aleix.Pol; + + +&FDLNotice; + + +19 квітня 2016 року +0.10 (Програми 16.04) + + +&kalgebra; — програма, яка може замінити вам калькулятор з можливістю побудови графіків. У програмі передбачено числові, логічні, символічні та аналітичні можливості, за допомогою яких ви зможете виконувати обчислення за формулами у калькуляторі або будувати результати у форматі плоских кривих або просторових графіків. &kalgebra; засновано на мові математичної розмітки (Mathematical Markup Language і MathML). Втім, для користування &kalgebra; знати MathML не потрібно. + + + +KDE +kdeedu +графіка +математика +2D +3D +mathML + + +
+ + +Вступ + +У &kalgebra; передбачено численні можливості, за допомогою яких користувач здатен виконувати будь-які обчислення та будувати за результатами графіки. Певний час програму було зорієнтовано лише на розвиток і використання можливостей MathML. Поточною ж версією може користуватися будь-хто з мінімальними знаннями математики для розв’язування простих та складних задач. + +Серед можливостей програми: + + + +калькулятор для пришвидшення та спрощення обчислення за математичними формулами; +можливість створення скриптів для виконання послідовних обчислень; +можливості мови програмування, зокрема визначення функцій та автодоповнення синтаксичних конструкцій; +можливості числення, зокрема диференціювання, векторне числення та обробка списків; +креслення графіків функцій з інтерактивним курсором для пошуку коренів та виконання інших аналітичних дійґ; +креслення просторових поверхонь з метою візуалізації тривимірних даних. +вбудований словник операцій та операторів з довідковими можливостями щодо багатьох функцій, якими можна скористатися у програмі; + + +На цьому зображенні ви бачите головне вікно &kalgebra;: + + +На цьому зображенні ви бачите головне вікно &kalgebra; + + + + + + Головне вікно &kalgebra; + + + + +Після запуску користувачем сеансу &kalgebra; буде відкрито одне головне вікно, що складається з вкладки Калькулятор, вкладки двовимірних (плоских) графіків, вкладки тривимірних (просторових) графіків і вкладки Словника. Під цими вкладками знаходиться поле для введення ваших функцій і виконання обчислень та поле для показу результатів. + +Керувати сеансом можна за допомогою пунктів меню Сеанс: + + + + +&Ctrl; N СеансСтворити +Відкрити нове вікно &kalgebra;. + + + +&Ctrl;&Shift; F СеансПовноекранний режим +Увімкнути або вимкнути режим повноекранного показу вікна &kalgebra;. Повноекранний режим можна також увімкнути або вимкнути за допомогою кнопки , розташованої у правій верхній частині вікна &kalgebra;. + + + +&Ctrl; Q СеансВийти +Завершує роботу програми. + + + + + + + +Синтаксис +У &kalgebra; використовується інтуїтивно зрозумілий алгебраїчний синтаксис для функцій, визначених користувачем, подібний до використаного у більшості сучасних графічних калькуляторів. У цьому розділі наведено основні вбудовані оператори &kalgebra;. Синтаксичні конструкції автор &kalgebra; створив на основі синтаксичних конструкцій Maxima та maple для користувачів, які можуть бути обізнані з цими програмами. + +Для тих, хто цікавиться внутрішніми механізмами роботи &kalgebra;: введені користувачем вирази перетворюються на вирази мовою MathML сервером обробки. Початкове розуміння можливостей, що підтримуються MathML, виходить далеко за межі визначення внутрішніх можливостей &kalgebra;. + +Ось список доступних у цій версії дій: + ++ - * / : Додавання, віднімання, множення і ділення. +^, **: Піднесення до степеня, можна використовувати обидва позначення. Також можна використовувати символи unicode ². Степені також використовуються для позначення коренів, це можна зробити за допомогою формули на зразок: a**(1/b) +-> : лямбда. За допомогою цього виразу можна вказати одну або декілька вільних змінних, які буде пов’язано у функцію. Наприклад, у виразі length:=(x,y)->(x*x+y*y)^0.5, лямбда-оператор використовується для позначення того, що x і y буде пов’язано під час обчислення функції довжини. +x=a..b : Ця конструкція використовується, якщо ми змінюємо діапазон зміни змінної (обмежена зміна+обмеження згори+обмеження знизу). Це означає, що x пробігає значення від a до b. +() : Дужки використовуються для зазначення вищого пріоритету обчислень. +abc(параметри) : Функції. Коли обробник знаходить функцію, він перевіряє чи є abc оператором. Якщо це так, дії з ним буде виконано як з оператором, якщо ні — обробник поводитиметься з ним як з функцією. +:= : Визначення. Використовується для встановлення значення змінної. Ви можете писати x:=3, x:=y у випадках визначеності або невизначеності y, або perimeter:=r->2*pi*r. +? : Визначення кускової умови. Кускові умови — це спосіб визначення умовних розгалужень у &kalgebra;. Інакше кажучи, це спосіб визначення послідовності умов if, elseif, else. Якщо вказати умову перед знаком «?», значення буде використано, лише якщо умова справджується, якщо обробник знайде «?» без жодної умови, буде використано залишок після попередніх умов. Приклади: кускова функція { x=0 ? 0, x=1 ? x+1, ? x**2 } +{ } : Контейнер MathML. Його можна використовувати для визначення контейнера. Головним чином корисний для роботи з кусковими виразами. += > >= < <= : порівняння значень (рівність, більше, більше або дорівнює, менше та менше або дорівнює, відповідно) + + +Читач тепер може зауважити, а навіщо взагалі згадувати про MathML? Дуже просто. За його допомогою можна виконувати операції на зразок cos(), sin(), будь-які інші тригонометричні функції, sum() або product(). Характер самої функції не є важливим. Можна використовувати plus(), times() і будь-які інші функції, яким відповідає певний оператор. Також реалізовано булівські функції, отже, можна виконувати операції на зразок or(1,0,0,0,0). + + + + +Користування калькулятором +Калькулятор &kalgebra; — корисний калькулятор з додатковими можливостями. Користувач може вводити вирази для обчислення у режимах Обчислення та Визначення значення, залежно від вибраного у меню Калькулятор варіанта. +У режимі визначення значення &kalgebra; намагається спростити вираз, навіть якщо якусь з його змінних не визначено. У режимі обчислення &kalgebra; виконує обчислення всіх знайдених виразів, а якщо виявить невизначену змінну, покаже повідомлення про помилку. +Окрім показу введених користувачем рівнянь та результатів обчислень, на панелі калькулятора буде показано всі оголошені змінні (праворуч). Подвійним клацанням на пункті змінної можна буде викликати діалогове вікно, за допомогою якого ви зможете змінити значення змінної (якщо треба підкоригувати проміжні результати). + +Змінна «ans» є особливою. Кожного разу після введення виразу для обчислень значення «ans» замінюватиметься останнім результатом. + +Нижче наведено приклад функцій, які можна ввести до поля введення панелі калькулятора: + +sin(pi) +k:=33 +sum(k*x : x=0..10) +f:=p->p*k +f(pi) + + +Нижче наведено знімок панелі калькулятора після введення наведених вище прикладів виразів: + +Знімок вікна калькулятора &kalgebra; з прикладами виразів + + + + + + Вікно калькулятора &kalgebra; + + + + + +Користувач може керувати послідовністю обчислень за допомогою пунктів меню Калькулятор: + + + + +&Ctrl; L КалькуляторЗавантажити скрипт +Послідовно виконує інструкції з файла. Корисне для визначення деяких бібліотек або відновлення попередніх сеансів. + + + +&Ctrl; G КалькуляторЗберегти скрипт +Зберігає інструкції, які ви ввели з часу початку сеансу для подальшого повторного використання. Створює текстові файли, які буде просто виправити, за допомогою, наприклад, Kate. + + + +&Ctrl; S КалькуляторЕкспортувати журнал +Зберігає журнал з результатами та іншою інформацією до файла &HTML;, який можна надрукувати або оприлюднити у мережі. + + + + + + + +Двовимірні графіки +Щоб додати новий двовимірний графік у &kalgebra;, вам просто слід перейти до вкладки Двовимірні графіки і натиснути кнопку Додати, щоб додати нову функцію. Після цього фокус буде передано у поле для введення тексту, де ви зможете вказати вашу функцію. + + +Синтаксис +Якщо ви бажаєте використовувати звичайну функцію f(x), не потрібно окремо визначати її, але, якщо ви бажаєте визначити, скажімо, f(y) або функцію у полярних координатах, вам слід додати y-> і q-> як обмежені змінні. + +Приклади: + +sin(x) +x² +y->sin(y) +q->3*sin(7*q) +t->vector{sin t, t**2} + +Якщо ви ввели функцію, натисніть кнопку Гаразд, щоб побачити графік у головному вікні. + + + + +Можливості +Можна накреслити декілька графіків на одному малюнку. Просто скористайтеся кнопкою Додати, коли ви знаходитеся у режимі списку. Для кожного з графіків ви можете встановити його колір. + +Розмір та розташування області перегляду можна змінювати за допомогою миші. За допомогою коліщатка ви можете її збільшувати або зменшувати. Також ви можете вибрати область, утримуючи ліву кнопку миші, коли ви відпустите кнопку, область буде збільшено до розмірів області перегляду. Пересунути область перегляду можна за допомогою клавіш зі стрілочками. + + + Ви можете явно задати ділянку показу плоского графіка за допомогою вкладки Демонстраційне вікно вкладки Двовимірний графік. + + +За допомогою вкладки Список ви можете відкрити вкладку Редагування для редагування або вилучення функції: двічі клацніть на позначці функції у списку. Позначенням або зняттям позначки з пункту функції можна наказати програмі показувати або приховувати графік функції. +У меню Двовимірний графік ви знайдете такі пункти: + +Показати або сховати сітку +Зберігати співвідношення розмірів під час зміни масштабу +Збільшити (&Ctrl; +) і зменшити (&Ctrl; -) +Зберегти (&Ctrl; S) графік у файлі зображення +Оновити перегляд до початкового масштабу +Вибрати роздільну здатність для графіків + + +Нижче наведено знімок вікна, на якому вказівник користувача розташовано у позиції найправішого кореня функції sin(1/x). Для креслення графіка використано дуже малий масштаб, оскільки функція осцилює у околі початку координат. Також показано можливості інтерактивного курсора: у відповідь на наведення вказівника на точку графіка програма показує значення координат x та y у нижньому лівому куті екрана. Також на графіку показано інтерактивну лінію дотичної. + + +На цьому зображенні ви бачите вікно плоского графіка &kalgebra; + + + + + + Вікно плоских графіків &kalgebra; + + + + + + + + + + +Тривимірні графіки + +Щоб накреслити тривимірний графік за допомогою &kalgebra;, вам слід перейти до вкладки Тривимірні графіки, там внизу ви побачите поле для вводу, куди і слід ввести вашу функцію. Z поки що визначати не можна, у цій версії &kalgebra; підтримується лише явне задання поверхонь у вигляді залежності від x і y, наприклад (x,y)->x*y, де z=x*y. + +Приклади: + +(x,y)->sin(x)*sin(y) +(x,y)->x/y + + +Розмір та розташування області перегляду можна змінювати за допомогою миші. За допомогою коліщатка ви можете її збільшувати або зменшувати. Натисніть і утримуйте ліву кнопку миші, а потім пересуньте вказівник миші, щоб повернути графік. + + За допомогою клавіш зі стрілочками ліворуч і праворуч можна обертати графік навколо осі z, за допомогою клавіш зі стрілочками вгору і вниз можна обертати графік навколо горизонтальної осі перегляду. Натисканням клавіші W можна збільшити масштаб, а натисканням клавіші S — зменшити його. + +У меню Тривимірний графік ви знайдете такі пункти: + + +Зберегти (&Ctrl; S) графік у файлі зображення +Пункт відновлення початкового масштабу +У меню просторового графіка передбачено можливості малювати графік точками, лініями або суцільною поверхнею. + + +Нижче наведено знімок так званої поверхні «Сомбреро». Поверхню показано з використанням лінійчастого стилю просторових графіків. + + +На цьому зображенні ви бачите вікно просторового графіка &kalgebra; + + + + + + Вікно просторових графіків &kalgebra; + + + + + + + +Словник + +Словник є збіркою всіх доступних дій &kalgebra;. За його допомогою можна знайти визначення всіх операцій та параметрів, які слід вказати для виконання дій. Він корисним для ознайомлення з багатьма можливостями &kalgebra;. + + Нижче наведено знімок вікна з прикладом пошуку функції косинуса у словнику &kalgebra;. + + +На цьому зображенні ви бачите вікно словника &kalgebra; + + + + + + Вікно словника &kalgebra; + + + + + + + +&commands; + + +Подяки і ліцензія + + +Авторські права на програму належать &Aleix.Pol;, ©2005-2009 + + + +Авторські права на документацію до програми належать &Aleix.Pol; &Aleix.Pol.mail;, ©2007 + +Юрій Чорноіван yurchor@ukr.net +&underFDL; &underGPL; + +&documentation.index; +
+ + diff --git a/po/uk/docs/kalgebra/kalgebra-2dgraph-window.png b/po/uk/docs/kalgebra/kalgebra-2dgraph-window.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d499f23afedd06b3e78579f18c6e5b4b38d92f GIT binary patch literal 16499 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 literal 0 HcmV?d00001 diff --git a/po/uk/docs/kalgebra/kalgebra-3dgraph-window.png b/po/uk/docs/kalgebra/kalgebra-3dgraph-window.png new file mode 100644 index 0000000000000000000000000000000000000000..7febade04d9baba6689746f26e6d075a70d1bc5a GIT binary patch literal 19571 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 IM6N<$f(ggS=>Px# literal 0 HcmV?d00001 diff --git a/po/uk/docs/kalgebra/kalgebra-console-window.png b/po/uk/docs/kalgebra/kalgebra-console-window.png new file mode 100644 index 0000000000000000000000000000000000000000..89b14c2525dced9f8f8e4d2fec300f98da5153a1 GIT binary patch literal 15938 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

9-YvrCr|9vS~-j~)FAJ@U=r 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 P)j*JwQifDX7zh6!UVE+0 literal 0 HcmV?d00001 diff --git a/po/uk/docs/kalgebra/kalgebra-main-window.png b/po/uk/docs/kalgebra/kalgebra-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..9c79be733ec742f7dfac562c1135953617174c4c GIT binary patch literal 14995 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 Q--C8?P$fv2q@n+R1Db3{DgXcg literal 0 HcmV?d00001 diff --git a/po/uk/kalgebra.po b/po/uk/kalgebra.po new file mode 100644 index 0000000..e4c029b --- /dev/null +++ b/po/uk/kalgebra.po @@ -0,0 +1,1173 @@ +# Translation of kalgebra.po to Ukrainian +# Copyright (C) 2007-2018 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 , 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018. +# Ivan Petrouchtchak , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-26 08:15+0200\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 2.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" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "Параметри: %1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "Вставити «%1» у вхідні дані" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "Вставити до вхідних даних" + +#: consolemodel.cpp:88 +#, kde-format +msgid "

    Error: %1
  • %2
" +msgstr "
    Помилка: %1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "Імпортовано: %1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    Помилка: не вдалося завантажити %1.
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "Інформація" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "Додати / змінити функцію" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "Перегляд" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "Від:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "До:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "Параметри" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "Гаразд" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "Вилучити" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "Вами вказано некоректні параметри" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "Нижня межа не може бути більшою за верхню" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "Двовимірний графік" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "Тривимірний графік" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "Сеанс" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "Змінні" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&Калькулятор" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "К&алькулятор" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "&Завантажити скрипт…" + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "Нещодавні скрипти" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "&Зберегти скрипт…" + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "&Експортувати журнал…" + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "&Вставити відповідь…" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "Режим виконання" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "Обчислення" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "Визначення значення" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "Функції" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "Список" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "&Додати" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "Демонстраційне вікно" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "&Двовимірний графік" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "Дво&вимірний графік" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "&Сітка" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "&Зберігати співвідношення розмірів" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "Роздільна здатність" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "Низька" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "Звичайна" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "Висока" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "Дуже висока" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "&Тривимірний графік" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "Тривимірний &графік" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "&Оновити перегляд" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "Крапки" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "Лінії" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "Суцільна" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "Дії" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "&Словник" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "Шукати:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "&Редагування" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "Виберіть скрипт" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "Скрипт (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "Файл HTML (*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "Помилки: %1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "Виберіть місце для зображення графіка" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "файл зображення (*.png);;файл SVG (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "Готово" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "Додати змінну" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "Введіть назву нової змінної" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "Портативний калькулятор" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "© Aleix Pol i Gonzalez, 2006–2016" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Юрій Чорноіван" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "yurchor@ukr.net" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "Додати або редагувати змінну" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "Вилучити змінну" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "Змінити значення «%1»" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "недоступне" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "НЕПРАВИЛЬНО" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "Ліворуч:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "Згори:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "Ширина:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "Висота:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "Застосувати" + +#~ msgid "" +#~ "PNG File (*.png);;PDF Document(*.pdf);;X3D Document (*.x3d);;STL Document " +#~ "(*.stl)" +#~ msgstr "" +#~ "файл PNG (*.png);;документи PDF (*.pdf);;документ X3D (*.x3d);;документ " +#~ "STL (*.stl)" + +#~ msgid "C&onsole" +#~ msgstr "К&онсоль" + +#~ msgid "KAlgebra" +#~ msgstr "KAlgebra" + +#~ msgid "&Console" +#~ msgstr "&Консоль" + +#~ msgid "Aleix Pol Gonzalez" +#~ msgstr "Aleix Pol Gonzalez" + +#~ msgid "Percy Camilo Triveño Aucahuasi" +#~ msgstr "Percy Camilo Triveño Aucahuasi" + +#~ msgid "" +#~ "Developed feature for drawing implicit curves. Improvements for plotting " +#~ "functions." +#~ msgstr "" +#~ "Можливість побудови функцій, заданих неявно. Покращення у інструменті " +#~ "побудови функцій." + +#~ msgid "Formula" +#~ msgstr "Формула" + +#~ msgid "Error: Wrong type of function" +#~ msgstr "Помилка: помилковий тип функції" + +#~ msgctxt "3D graph done in x milliseconds" +#~ msgid "Done: %1ms" +#~ msgstr "Виконано: %1 мс" + +#~ msgid "Error: %1" +#~ msgstr "Помилка: %1" + +#~ msgctxt "@action:button" +#~ msgid "Clear" +#~ msgstr "Очистити" + +#~ msgid "*.png|PNG File" +#~ msgstr "*.png|Файл PNG" + +#~ msgctxt "text ellipsis" +#~ msgid "%1..." +#~ msgstr "%1..." + +#~ msgid "&Transparency" +#~ msgstr "&Прозорість" + +#~ msgid "Type" +#~ msgstr "Тип" + +#~ msgid "Result: %1" +#~ msgstr "Результат: %1" + +#~ msgid "To Expression" +#~ msgstr "До виразу" + +#~ msgid "To MathML" +#~ msgstr "У MathML" + +#~ msgid "Simplify" +#~ msgstr "Спростити" + +#~ msgid "Examples" +#~ msgstr "Приклади" + +#~ msgid "We can only draw Real results." +#~ msgstr "Можливий показ лише дійсної частини результату." + +#~ msgid "The expression is not correct" +#~ msgstr "Помилка у виразі" + +#~ msgid "Function type not recognized" +#~ msgstr "Не вдалося розпізнати тип функції" + +#~ msgid "Function type not correct for functions depending on %1" +#~ msgstr "Помилковий тип функції, залежної від %1" + +#~ msgctxt "" +#~ "This function can't be represented as a curve. To draw implicit curve, " +#~ "the function has to satisfy the implicit function theorem." +#~ msgid "Implicit function undefined in the plane" +#~ msgstr "Функція, задана неявно, є невизначеною на площині" + +#~ msgid "center" +#~ msgstr "центр" + +#~ msgctxt "@title:column" +#~ msgid "Name" +#~ msgstr "Назва" + +#~ msgctxt "@title:column" +#~ msgid "Function" +#~ msgstr "Функція" + +#~ msgid "%1 function added" +#~ msgstr "функцію %1 додано" + +#~ msgid "Hide '%1'" +#~ msgstr "Сховати «%1»" + +#~ msgid "Show '%1'" +#~ msgstr "Показати «%1»" + +#~ msgid "Selected viewport too small" +#~ msgstr "Вибрана ділянка перегляду замала" + +#~ msgctxt "@title:column" +#~ msgid "Description" +#~ msgstr "Опис" + +#~ msgctxt "@title:column" +#~ msgid "Parameters" +#~ msgstr "Параметри" + +#~ msgctxt "@title:column" +#~ msgid "Example" +#~ msgstr "Приклад" + +#~ msgctxt "Syntax for function bounding" +#~ msgid " : var" +#~ msgstr " : змінна" + +#~ msgctxt "Syntax for function bounding values" +#~ msgid "=from..to" +#~ msgstr "=від...до" + +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgid "%1... parameters, ...%2)" +#~ msgstr "%1... параметри, ...%2)" + +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgid "Addition" +#~ msgstr "Додавання" + +#~ msgid "Multiplication" +#~ msgstr "Множення" + +#~ msgid "Division" +#~ msgstr "Ділення" + +#~ msgid "Subtraction. Will remove all values from the first one." +#~ msgstr "Віднімання. Всі значення буде віднято від першого." + +#~ msgid "Power" +#~ msgstr "Степінь" + +#~ msgid "Remainder" +#~ msgstr "Залишок" + +#~ msgid "Quotient" +#~ msgstr "Частка" + +#~ msgid "The factor of" +#~ msgstr "Дільник" + +#~ msgid "Factorial. factorial(n)=n!" +#~ msgstr "Факторіал. factorial(n)=n!" + +#~ msgid "Function to calculate the sine of a given angle" +#~ msgstr "Функція для обчислення синуса за заданим кутом" + +#~ msgid "Function to calculate the cosine of a given angle" +#~ msgstr "Функція для обчислення косинуса за заданим кутом" + +#~ msgid "Function to calculate the tangent of a given angle" +#~ msgstr "Функція для обчислення тангенса за заданим кутом" + +#~ msgid "Secant" +#~ msgstr "Секанс" + +#~ msgid "Cosecant" +#~ msgstr "Косеканс" + +#~ msgid "Cotangent" +#~ msgstr "Котангенс" + +#~ msgid "Hyperbolic sine" +#~ msgstr "Гіперболічний синус" + +#~ msgid "Hyperbolic cosine" +#~ msgstr "Гіперболічний косинус" + +#~ msgid "Hyperbolic tangent" +#~ msgstr "Гіперболічний тангенс" + +#~ msgid "Hyperbolic secant" +#~ msgstr "Гіперболічний секанс" + +#~ msgid "Hyperbolic cosecant" +#~ msgstr "Гіперболічний косеканс" + +#~ msgid "Hyperbolic cotangent" +#~ msgstr "Гіперболічний котангенс" + +#~ msgid "Arc sine" +#~ msgstr "Обернений синус" + +#~ msgid "Arc cosine" +#~ msgstr "Обернений косинус" + +#~ msgid "Arc tangent" +#~ msgstr "Обернений тангенс" + +#~ msgid "Arc cotangent" +#~ msgstr "Обернений котангенс" + +#~ msgid "Hyperbolic arc tangent" +#~ msgstr "Обернений гіперболічний тангенс" + +#~ msgid "Summatory" +#~ msgstr "Суматор" + +#~ msgid "Productory" +#~ msgstr "Перемножувач" + +#~ msgid "For all" +#~ msgstr "Для всіх" + +#~ msgid "Exists" +#~ msgstr "Існує" + +#~ msgid "Differentiation" +#~ msgstr "Диференціювання" + +#~ msgid "Hyperbolic arc sine" +#~ msgstr "Обернений гіперболічний синус" + +#~ msgid "Hyperbolic arc cosine" +#~ msgstr "Обернений гіперболічний косинус" + +#~ msgid "Arc cosecant" +#~ msgstr "Обернений косеканс" + +#~ msgid "Hyperbolic arc cosecant" +#~ msgstr "Обернений гіперболічний косеканс" + +#~ msgid "Arc secant" +#~ msgstr "Обернений секанс" + +#~ msgid "Hyperbolic arc secant" +#~ msgstr "Обернений гіперболічний секанс" + +#~ msgid "Exponent (e^x)" +#~ msgstr "Експонента (e^x)" + +#~ msgid "Base-e logarithm" +#~ msgstr "Натуральний логарифм" + +#~ msgid "Base-10 logarithm" +#~ msgstr "Десятковий логарифм" + +#~ msgid "Absolute value. abs(n)=|n|" +#~ msgstr "Модуль числа. abs(n)=|n|" + +#~ msgid "Floor value. floor(n)=⌊n⌋" +#~ msgstr "Найближче менше ціле число. floor(n)=⌊n⌋" + +#~ msgid "Ceil value. ceil(n)=⌈n⌉" +#~ msgstr "Найближче більше ціле число. ceil(n)=⌈n⌉" + +#~ msgid "Minimum" +#~ msgstr "Мінімальний" + +#~ msgid "Maximum" +#~ msgstr "Максимальний" + +#~ msgid "Greater than. gt(a,b)=a>b" +#~ msgstr "Більше ніж. gt(a,b)=a>b" + +#~ msgid "Less than. lt(a,b)=a%1(..., par%2, ...)" +#~ msgstr "%1(..., par%2, ...)" + +#~ msgctxt "Function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "Parameter in function prototype" +#~ msgid "par%1" +#~ msgstr "par%1" + +#~ msgctxt "Current parameter in function prototype" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Function parameter separator" +#~ msgid ", " +#~ msgstr ", " + +#~ msgctxt "Current parameter is the bounding" +#~ msgid " : bounds" +#~ msgstr " : межі" + +#~ msgctxt "@title:column" +#~ msgid "Value" +#~ msgstr "Значення" + +#~ msgid "Must specify a correct operation" +#~ msgstr "Слід вказати правильний оператор" + +#~ msgctxt "identifier separator in error message" +#~ msgid "', '" +#~ msgstr "', '" + +#~ msgid "Unknown identifier: '%1'" +#~ msgstr "Невідомий ідентифікатор: «%1»" + +#~ msgctxt "Error message, no proper condition found." +#~ msgid "Could not find a proper choice for a condition statement." +#~ msgstr "Не вдалося знайти належного варіанта у умовному виразі." + +#~ msgid "Type not supported for bounding." +#~ msgstr "Цей тип не можна використовувати для визначення меж." + +#~ msgid "The downlimit is greater than the uplimit" +#~ msgstr "Нижня межа більша за верхню межу" + +#~ msgid "Incorrect uplimit or downlimit." +#~ msgstr "Некоректна верхня або нижня межа." + +#~ msgctxt "By a cycle i mean a variable that depends on itself" +#~ msgid "Defined a variable cycle" +#~ msgstr "Визначено цикл зі змінних" + +#~ msgid "The result is not a number" +#~ msgstr "Результат не є числом" + +#~ msgid "Unexpectedly arrived to the end of the input" +#~ msgstr "Виявлено несподіване завершення вхідних даних" + +#~ msgid "Unknown token %1" +#~ msgstr "Невідомий елемент %1" + +#~ msgid "%1 needs at least 2 parameters" +#~ msgstr "%1 потрібні принаймні 2 параметри" + +#~ msgid "%1 requires %2 parameters" +#~ msgstr "%1 потрібно %2 параметрів" + +#~ msgid "Missing boundary for '%1'" +#~ msgstr "У «%1» не вказано межу" + +#~ msgid "Unexpected bounding for '%1'" +#~ msgstr "Неочікуваний обмеження для «%1»" + +#~ msgid "%1 missing bounds on '%2'" +#~ msgstr "У %1 відсутні обмеження на «%2»" + +#~ msgid "Wrong declare" +#~ msgstr "Неправильне оголошення" + +#~ msgid "Empty container: %1" +#~ msgstr "Порожній контейнер: %1" + +#~ msgctxt "there was a conditional outside a condition structure" +#~ msgid "We can only have conditionals inside piecewise structures." +#~ msgstr "Умови можна вказувати лише в умовних конструкціях." + +#~ msgid "Cannot have two parameters with the same name like '%1'." +#~ msgstr "" +#~ "Не можна використовувати два параметри з однією назвою, наприклад «%1»." + +#~ msgctxt "" +#~ "this is an error message. otherwise is the else in a mathml condition" +#~ msgid "The otherwise parameter should be the last one" +#~ msgstr "Параметр otherwise слід вказувати останнім." + +#~ msgctxt "there was an element that was not a conditional inside a condition" +#~ msgid "%1 is not a proper condition inside the piecewise" +#~ msgstr "%1 не є належною умовою у конструкції умов" + +#~ msgid "We can only declare variables" +#~ msgstr "Можна визначати лише змінні" + +#~ msgid "We can only have bounded variables" +#~ msgstr "Можна лише обмежити змінні" + +#~ msgid "Error while parsing: %1" +#~ msgstr "Помилка під час обробки: %1" + +#~ msgctxt "An error message" +#~ msgid "Container unknown: %1" +#~ msgstr "Невідомий контейнер: %1" + +#~ msgid "Cannot codify the %1 value." +#~ msgstr "Не вдалося закодувати значення %1." + +#~ msgid "The %1 operator cannot have child contexts." +#~ msgstr "Оператор %1 не може мати дочірніх контекстів." + +#~ msgid "The element '%1' is not an operator." +#~ msgstr "Елемент «%1» не є оператором." + +#~ msgid "Do not want empty vectors" +#~ msgstr "Порожні вектори нам не потрібні" + +#~ msgctxt "Error message due to an unrecognized input" +#~ msgid "Not supported/unknown: %1" +#~ msgstr "Не підтримується/невідомий: %1" + +#~ msgctxt "error message" +#~ msgid "Expected %1 instead of '%2'" +#~ msgstr "Очікувалося %1, знайдено «%2»" + +#~ msgid "Missing right parenthesis" +#~ msgstr "Не вистачає правої дужки" + +#~ msgid "Unbalanced right parenthesis" +#~ msgstr "Незакрита права дужка" + +#~ msgid "Unexpected token identifier: %1" +#~ msgstr "Неочікуваний ідентифікатор елемента: %1" + +#~ msgid "Unexpected token %1" +#~ msgstr "Неочікуваний елемент %1" + +#~ msgid "Could not find a type that unifies '%1'" +#~ msgstr "Не вдалося знайти тип, який узагальнює «%1»" + +#~ msgid "The domain should be either a vector or a list" +#~ msgstr "Мало бути вказано вектор або список" + +#~ msgid "Invalid parameter count for '%2'. Should have 1 parameter." +#~ msgid_plural "Invalid parameter count for '%2'. Should have %1 parameters." +#~ msgstr[0] "Некоректна кількість параметрів «%2». Мав бути %1 параметр." +#~ msgstr[1] "Некоректна кількість параметрів «%2». Мало бути %1 параметри." +#~ msgstr[2] "Некоректна кількість параметрів «%2». Мало бути %1 параметрів." +#~ msgstr[3] "Некоректна кількість параметрів «%2». Мав бути один параметр." + +#~ msgid "Could not call '%1'" +#~ msgstr "Не вдалося викликати «%1»" + +#~ msgid "Could not solve '%1'" +#~ msgstr "Не вдалося розв’язати «%1»" + +#~ msgid "Incoherent type for the variable '%1'" +#~ msgstr "Невідповідний тип змінної «%1»" + +#~ msgid "Could not determine the type for piecewise" +#~ msgstr "Не вдалося визначити тип умови" + +#~ msgid "Unexpected type" +#~ msgstr "Неочікуваний тип" + +#~ msgid "Cannot convert '%1' to '%2'" +#~ msgstr "Не вдалося перетворити «%1» на «%2»" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "html representation of an operator" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "Error message" +#~ msgid "Unknown token %1" +#~ msgstr "Невідомий елемент %1" + +#~ msgid "Cannot calculate the remainder on 0." +#~ msgstr "Не вдалося залишок від 0." + +#~ msgid "Cannot calculate the factor on 0." +#~ msgstr "Не вдалося обчислити коефіцієнт при 0." + +#~ msgid "Cannot calculate the lcm of 0." +#~ msgstr "Не вдалося обчислити найменше спільне кратне для 0." + +#~ msgid "Could not calculate a value %1" +#~ msgstr "Не вдалося обчислити значення %1" + +#~ msgid "Invalid index for a container" +#~ msgstr "Некоректний індекс контейнера" + +#~ msgid "Cannot operate on different sized vectors." +#~ msgstr "Виконувати операції над векторами різної розмірності не можна." + +#~ msgid "Could not calculate a vector's %1" +#~ msgstr "Не вдалося обчислити %1 вектора" + +#~ msgid "Could not calculate a list's %1" +#~ msgstr "Не вдалося обчислити %1 списку" + +#~ msgid "Could not calculate the derivative for '%1'" +#~ msgstr "Не вдалося обчислити похідну «%1»" + +#~ msgid "Could not reduce '%1' and '%2'." +#~ msgstr "Не вдалося спростити «%1» і «%2»." + +#~ msgid "Incorrect domain." +#~ msgstr "Помилка у визначенні області." + +#~ msgctxt "Uncorrect function name in function prototype" +#~ msgid "%1(" +#~ msgstr "%1(" + +#~ msgctxt "if the specified function is not a vector" +#~ msgid "The parametric function does not return a vector" +#~ msgstr "Параметрична функція не повертає вектора" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "A two-dimensional vector is needed" +#~ msgstr "Слід вказати двовимірний вектор" + +#~ msgctxt "The vector has to be composed by integer members" +#~ msgid "The parametric function items should be scalars" +#~ msgstr "Параметрами параметричної функції мають бути скалярні значення" + +#~ msgid "The %1 derivative has not been implemented." +#~ msgstr "Знайти похідну від %1 неможливо." + +#~ msgctxt "Error message" +#~ msgid "Did not understand the real value: %1" +#~ msgstr "Не вдалося обробити дійсне значення: %1" + +#~ msgid "Subtraction" +#~ msgstr "Віднімання" + +#~ msgid "" +#~ "%1\n" +#~ "Error: %2" +#~ msgstr "" +#~ "%1\n" +#~ "Помилка: %2" + +#~ msgid "Select an element from a container" +#~ msgstr "Вибір елемента з контейнера" + +#~ msgid " Plot 3D" +#~ msgstr " Тривимірний графік" + +#~ msgid "Error: We need values to draw a graph" +#~ msgstr "Помилка: щоб побудувати графік, потрібні дані" + +#~ msgid "Generating... Please wait" +#~ msgstr "Створення... Будь ласка, зачекайте" + +#~ msgid "Wrong parameter count, had 1 parameter for '%2'" +#~ msgid_plural "Wrong parameter count, had %1 parameters for '%2'" +#~ msgstr[0] "Помилкова кількість параметрів, отримано %1 параметр для «%2»" +#~ msgstr[1] "Помилкова кількість параметрів, отримано %1 параметри для «%2»" +#~ msgstr[2] "Помилкова кількість параметрів, отримано %1 параметрів для «%2»" +#~ msgstr[3] "Помилкова кількість параметрів, отримано %1 параметр для «%2»" + +#~ msgctxt "@item:inmenu" +#~ msgid "&Save Log" +#~ msgstr "&Зберегти журнал" + +#~ msgid "File" +#~ msgstr "Файл" + +#~ msgid "We can only call functions" +#~ msgstr "Викликати можна лише функції" + +#~ msgid "Wrong parameter count" +#~ msgstr "Помилкова кількість параметрів" + +#~ msgctxt "" +#~ "html representation of a true. please don't translate the true for " +#~ "consistency" +#~ msgid "true" +#~ msgstr "true" + +#~ msgctxt "" +#~ "html representation of a false. please don't translate the false for " +#~ "consistency" +#~ msgid "false" +#~ msgstr "false" + +#~ msgctxt "html representation of a number" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "Invalid parameter count." +#~ msgstr "Помилкова кількість параметрів." + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Save the expression" +#~ msgstr "Зберегти вираз" + +#~ msgid "Calculate the expression" +#~ msgstr "Обчислити вираз" + +#~ msgid "%1:=%2" +#~ msgstr "%1:=%2" + +#~ msgid "Cannot apply '%1' to '%2'" +#~ msgstr "Не вдалося застосувати «%1» до «%2»" + +#~ msgid "Cannot operate '%1'" +#~ msgstr "Не вдалося обробити «%1»" + +#~ msgid "Cannot check '%1' type" +#~ msgstr "Не вдалося перевірити тип «%1»" + +#~ msgid "Wrong number of parameters when calling '%1'" +#~ msgstr "Помилкова кількість параметрів у виклику «%1»" + +#~ msgid "Cannot have downlimit ≥ uplimit" +#~ msgstr "Ситуація, коли нижня межа ≥ верхній межі, неможлива" + +#~ msgid "Trying to call an invalid function" +#~ msgstr "Спроба виклику некоректно заданої функції" + +#~ msgid "Unfulfilled dependencies for: '%1'" +#~ msgstr "Невиконані залежності «%1»" + +#~ msgctxt "If it is a vector but the wrong size. We work in R2 here" +#~ msgid "We want a 2 dimension vector" +#~ msgstr "Потрібен двовимірний вектор" + +#~ msgid "The function %1 does not exist" +#~ msgstr "Функції з назвою %1 не існує" + +#~ msgid "The variable %1 does not exist" +#~ msgstr "Змінної з назвою %1 не існує" + +#~ msgid "Need a var name and a value" +#~ msgstr "Потрібна назва змінної і значення" + +#~ msgid "We can only select a container's value with its integer index" +#~ msgstr "Можна вибирати значення контейнера лише за цілим індексом" + +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgid "The first parameter in a function should be the name" +#~ msgstr "Першим параметром у функції має бути назва." + +#~ msgctxt "Error message" +#~ msgid "Unknown bounded variable: %1" +#~ msgstr "Невідома обмежена змінна: %1" + +#~ msgid "From parser:" +#~ msgstr "Від обробника:" + +#~ msgid "" +#~ "Wrong parameter count in a selector, should have 2 parameters, the " +#~ "selected index and the container." +#~ msgstr "" +#~ "Неправильна кількість параметрів у інструменті вибору: має бути 2 " +#~ "параметри, — вибраний індекс і контейнер." + +#~ msgid "piece or otherwise in the wrong place" +#~ msgstr "piece або otherwise у неправильному місці" + +#~ msgid "No bounding variables for this sum" +#~ msgstr "Не вказано меж суми" + +#~ msgid "Missing bounding limits on a sum operation" +#~ msgstr "Не вказано меж для операції підсумовування" + +#~ msgctxt "Error message" +#~ msgid "Trying to codify an unknown value: %1" +#~ msgstr "Спроба кодифікації невідомого значення: %1" diff --git a/po/uk/kalgebramobile.po b/po/uk/kalgebramobile.po new file mode 100644 index 0000000..c5348fb --- /dev/null +++ b/po/uk/kalgebramobile.po @@ -0,0 +1,213 @@ +# Translation of kalgebramobile.po to Ukrainian +# Copyright (C) 2018-2019 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 , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebramobile\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-08 09:09+0200\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" +"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-Generator: Lokalize 19.03.70\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "Портативний калькулятор" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "© Aleix Pol i Gonzalez, 2006–2018" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Юрій Чорноіван" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "yurchor@ukr.net" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "Мобільна KAlgebra" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "Простий науковий калькулятор" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "Завантажити скрипт…" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "Скрипт (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "Зберегти скрипт…" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "Експортувати журнал…" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "Обчислити…" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "Обчислити…" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "Спорожнити журнал" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "Копіювати «%1»" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "Двовимірне креслення" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "Тривимірне креслення" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "Зберегти…" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "Перегляд ґратки" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "Відновити початковий стан панелі перегляду" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "Вилучити все" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "Помилка: крок не може дорівнювати 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "Помилка: початок і кінець є тотожними" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "Помилки: %1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "Вхідні дані:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "Від:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "До:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "Крок:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "Виконати" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "Результати:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "Вираз для обчислення…" + +#~ msgid "" +#~ "KAlgebra is brought to you by the lovely community of KDE and KDE Edu from a Free " +#~ "Software environment." +#~ msgstr "" +#~ "KAlgebra створено для вас чудовими спільнотами KDE та KDE Edu, які є " +#~ "частинами середовища вільного програмного забезпечення." + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information in the official site and in the users wiki.
If you have any problem with your " +#~ "software, please report it to our bug " +#~ "tracker." +#~ msgstr "" +#~ "Якщо ви хочете дізнатися більше про KAlgebra, зверніться до інформації на " +#~ "офіційному сайті та у вікі для користувачів.
Якщо у вас виникають проблеми " +#~ "із цим програмним забезпеченням, будь ласка, повідомте про них за " +#~ "допомогою нашої системи стеження за " +#~ "вадами." + +#~ msgid "Results" +#~ msgstr "Результати" + +#~ msgid "" +#~ "In case you want to learn more about KAlgebra, you can find more " +#~ "information " +#~ msgstr "" +#~ "Якщо ви хочете дізнатися більше про KAlgebra, знайти відповідні відомості " +#~ "можна тут: " diff --git a/po/uk/plasma_applet_kalgebraplasmoid.po b/po/uk/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..ef7e595 --- /dev/null +++ b/po/uk/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Translation of plasma_applet_kalgebraplasmoid.po to Ukrainian +# Copyright (C) 2014 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 , 2014. +msgid "" +msgstr "" +"Project-Id-Version: plasma_applet_kalgebraplasmoid\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2014-09-19 18:38+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" +"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-Generator: Lokalize 1.5\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "Введіть якийсь вираз." + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/zh_CN/kalgebra.po b/po/zh_CN/kalgebra.po new file mode 100644 index 0000000..ed7cf45 --- /dev/null +++ b/po/zh_CN/kalgebra.po @@ -0,0 +1,438 @@ +# translation of kalgebra.po to 简体中文 +# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. +# +# Ni Hui , 2007, 2008, 2009, 2010. +# Feng Chao , 2010, 2011. +# Lie Ex , 2009-2010. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2020-01-04 21:52\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\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-Crowdin-Project: kdeorg\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kdeedu/kalgebra.pot\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "选项:%1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "粘贴“%1”到输入内容" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "从剪贴板粘贴" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    错误:%1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "已导入:%1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    错误:无法装入 %1。
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "信息" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "添加/编辑一个函数" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "预览" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "从:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "到:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "选项" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "确定" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "删除" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "您指定的选项不正确" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "下限不能大于上限" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "二维图" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "三维图" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "会话" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "变量" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "&计算器" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "计算器(&A)" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "加载脚本(&L)..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "最近的脚本" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "保存脚本(&S)..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "导出日志(&E)..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "插入答案(&I)..." + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "执行模式" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "计算" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "估值" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "函数" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "列表" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "添加(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "视点" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "二维图像(&2)" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "二维图像(&D)" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "网格(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "保持长宽比(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "分辨率" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "低质量" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "普通" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "精细" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "非常精细" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "三维图像(&3)" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "三维图像(&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "重置视图(&R)" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "点" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "线" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "体" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "运算" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "字典(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "查找:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "编辑(&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "选择一个脚本" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "脚本 (*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML 文件(*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr ", " + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "错误:%1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "选择图表生成的位置" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "" +"*.png|图像文件\n" +"*.svg|SVG 矢量图像文件" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "就绪" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "添加变量" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "输入新变量名称" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "一个便携的计算器" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "KDE 中国" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde-china@kde.org" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "添加/编辑一个变量" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "删除变量" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "编辑“%1”的值" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "不可用" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "错误" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "左边:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "顶端:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "宽度:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "高度:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "应用" diff --git a/po/zh_CN/kalgebramobile.po b/po/zh_CN/kalgebramobile.po new file mode 100644 index 0000000..426c0bf --- /dev/null +++ b/po/zh_CN/kalgebramobile.po @@ -0,0 +1,178 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2020-01-04 21:52\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\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-Crowdin-Project: kdeorg\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kdeedu/kalgebramobile.pot\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "一个轻便的计算器" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "KDE 中国" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde-china@kde.org" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra 移动版" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "一个简单的科学计算器" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "载入脚本…" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "脚本 (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "保存脚本..." + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "导出日志..." + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "求值…" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "计算…" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "清除日志" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "复制“%1”" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D 绘图" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D 绘图" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "保存..." + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "查看网格" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "重置可视区域" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "清除全部" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "错误: 步长不能为0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "错误:起始和终止相同" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "错误:%1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "输入:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "从:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "到:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "步长:" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "执行" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "结果:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "要计算的表达式…" diff --git a/po/zh_CN/plasma_applet_kalgebraplasmoid.po b/po/zh_CN/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..eb7d1ce --- /dev/null +++ b/po/zh_CN/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,36 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Ni Hui , 2010. +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2020-01-04 21:52\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\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-Crowdin-Project: kdeorg\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kdeedu/plasma_applet_kalgebraplasmoid." +"pot\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "输入一些表达式。" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/po/zh_TW/kalgebra.po b/po/zh_TW/kalgebra.po new file mode 100644 index 0000000..77dc0e1 --- /dev/null +++ b/po/zh_TW/kalgebra.po @@ -0,0 +1,439 @@ +# translation of kalgebra.po to Chinese Traditional +# translation of kalgebra.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Franklin Weng , 2007, 2010, 2011, 2012, 2013, 2014, 2015, 2017. +# Frank Weng (a.k.a. Franklin) , 2009. +# Jeff Huang , 2016. +# pan93412 , 2018. +# +# Franklin Weng , 2007, 2008. +# Frank Weng (a.k.a. Franklin) , 2008, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-12-02 08:02+0100\n" +"PO-Revision-Date: 2018-12-26 18:23+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" +"X-Generator: Lokalize 18.12.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: consolehtml.cpp:167 +#, kde-format +msgid " %2" +msgstr " %2" + +#: consolehtml.cpp:172 +#, kde-format +msgid "Options: %1" +msgstr "選項:%1" + +#: consolehtml.cpp:221 +#, kde-format +msgid "Paste \"%1\" to input" +msgstr "貼上 %1 以輸入" + +#: consolemodel.cpp:86 +#, kde-format +msgid "Paste to Input" +msgstr "貼上以輸入" + +#: consolemodel.cpp:88 +#, kde-format +msgid "
    Error: %1
  • %2
" +msgstr "
    錯誤:%1
  • %2
" + +#: consolemodel.cpp:110 +#, kde-format +msgid "Imported: %1" +msgstr "已匯入:%1" + +#: consolemodel.cpp:112 +#, kde-format +msgid "
    Error: Could not load %1.
    %2
" +msgstr "
    錯誤:無法載入 %1。
    %2
" + +#: dictionary.cpp:44 +#, kde-format +msgid "Information" +msgstr "資訊" + +#: dictionary.cpp:67 dictionary.cpp:68 dictionary.cpp:69 dictionary.cpp:70 +#, kde-format +msgid "%1" +msgstr "%1" + +#: functionedit.cpp:49 +#, kde-format +msgid "Add/Edit a function" +msgstr "新增/編輯函數" + +#: functionedit.cpp:94 +#, kde-format +msgid "Preview" +msgstr "預覽" + +#: functionedit.cpp:101 +#, kde-format +msgid "From:" +msgstr "從:" + +#: functionedit.cpp:103 +#, kde-format +msgid "To:" +msgstr "到:" + +#: functionedit.cpp:106 +#, kde-format +msgid "Options" +msgstr "選項" + +#: functionedit.cpp:111 +#, kde-format +msgid "OK" +msgstr "確定" + +#: functionedit.cpp:113 +#, kde-format +msgctxt "@action:button" +msgid "Remove" +msgstr "移除" + +#: functionedit.cpp:240 +#, kde-format +msgid "The options you specified are not correct" +msgstr "您指定的選項不正確" + +#: functionedit.cpp:245 +#, kde-format +msgid "Downlimit cannot be greater than uplimit" +msgstr "下載限制不能大於上傳限制" + +#: kalgebra.cpp:73 +#, kde-format +msgid "Plot 2D" +msgstr "繪製平面圖" + +#: kalgebra.cpp:94 +#, kde-format +msgid "Plot 3D" +msgstr "繪製立體圖" + +#: kalgebra.cpp:117 +#, kde-format +msgid "Session" +msgstr "工作階段" + +#: kalgebra.cpp:136 kalgebra.cpp:235 +#, kde-format +msgid "Variables" +msgstr "變數" + +#: kalgebra.cpp:155 +#, kde-format +msgid "&Calculator" +msgstr "計算機(&C)" + +#: kalgebra.cpp:167 +#, kde-format +msgid "C&alculator" +msgstr "計算機(&A)" + +#: kalgebra.cpp:169 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Load Script..." +msgstr "載入文稿(&L)..." + +#: kalgebra.cpp:171 +#, kde-format +msgid "Recent Scripts" +msgstr "最近的文稿" + +#: kalgebra.cpp:175 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Save Script..." +msgstr "儲存文稿(&S)..." + +#: kalgebra.cpp:177 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Export Log..." +msgstr "匯出紀錄(&E)..." + +#: kalgebra.cpp:180 +#, kde-format +msgctxt "@item:inmenu" +msgid "&Insert ans..." +msgstr "插入 ans(&I)…" + +#: kalgebra.cpp:182 +#, kde-format +msgid "Execution Mode" +msgstr "執行模式" + +#: kalgebra.cpp:184 +#, kde-format +msgctxt "@item:inmenu" +msgid "Calculate" +msgstr "計算" + +#: kalgebra.cpp:185 +#, kde-format +msgctxt "@item:inmenu" +msgid "Evaluate" +msgstr "估算" + +#: kalgebra.cpp:205 +#, kde-format +msgid "Functions" +msgstr "函數" + +#: kalgebra.cpp:217 +#, kde-format +msgid "List" +msgstr "列表" + +#: kalgebra.cpp:223 kalgebra.cpp:455 +#, kde-format +msgid "&Add" +msgstr "新增(&A)" + +#: kalgebra.cpp:239 +#, kde-format +msgid "Viewport" +msgstr "檢視埠" + +#: kalgebra.cpp:243 +#, kde-format +msgid "&2D Graph" +msgstr "平面圖(&2)" + +#: kalgebra.cpp:255 +#, kde-format +msgid "2&D Graph" +msgstr "平面圖(&D)" + +#: kalgebra.cpp:257 +#, kde-format +msgid "&Grid" +msgstr "格線(&G)" + +#: kalgebra.cpp:258 +#, kde-format +msgid "&Keep Aspect Ratio" +msgstr "保持比例(&K)" + +#: kalgebra.cpp:266 +#, kde-format +msgid "Resolution" +msgstr "解析度" + +#: kalgebra.cpp:267 +#, kde-format +msgctxt "@item:inmenu" +msgid "Poor" +msgstr "低" + +#: kalgebra.cpp:268 +#, kde-format +msgctxt "@item:inmenu" +msgid "Normal" +msgstr "正常" + +#: kalgebra.cpp:269 +#, kde-format +msgctxt "@item:inmenu" +msgid "Fine" +msgstr "高" + +#: kalgebra.cpp:270 +#, kde-format +msgctxt "@item:inmenu" +msgid "Very Fine" +msgstr "非常高" + +#: kalgebra.cpp:304 +#, kde-format +msgid "&3D Graph" +msgstr "立體圖(&3)" + +#: kalgebra.cpp:312 +#, kde-format +msgid "3D &Graph" +msgstr "立體圖(&G)" + +#: kalgebra.cpp:315 +#, kde-format +msgid "&Reset View" +msgstr "重置檢視(&R)" + +#: kalgebra.cpp:317 +#, kde-format +msgid "Dots" +msgstr "點" + +#: kalgebra.cpp:318 +#, kde-format +msgid "Lines" +msgstr "線" + +#: kalgebra.cpp:319 +#, kde-format +msgid "Solid" +msgstr "立體" + +#: kalgebra.cpp:336 +#, kde-format +msgid "Operations" +msgstr "操作" + +#: kalgebra.cpp:340 +#, kde-format +msgid "&Dictionary" +msgstr "字典(&D)" + +#: kalgebra.cpp:351 +#, kde-format +msgid "Look for:" +msgstr "尋找:" + +#: kalgebra.cpp:444 +#, kde-format +msgid "&Editing" +msgstr "編輯(&E)" + +#: kalgebra.cpp:501 +#, kde-format +msgid "Choose a script" +msgstr "請選擇文稿" + +#: kalgebra.cpp:501 kalgebra.cpp:517 +#, kde-format +msgid "Script (*.kal)" +msgstr "文稿(*.kal)" + +#: kalgebra.cpp:528 +#, kde-format +msgid "HTML File (*.html)" +msgstr "HTML 檔(*.html)" + +#: kalgebra.cpp:551 +#, kde-format +msgid ", " +msgstr "," + +#: kalgebra.cpp:551 +#, kde-format +msgid "Errors: %1" +msgstr "錯誤:%1" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Select where to put the rendered plot" +msgstr "選擇要在哪裡放置已繪製之圖形" + +#: kalgebra.cpp:589 +#, kde-format +msgid "Image File (*.png);;SVG File (*.svg)" +msgstr "圖片檔 (*.png);;SVG 檔 (*.svg)" + +#: kalgebra.cpp:646 +#, kde-format +msgctxt "@info:status" +msgid "Ready" +msgstr "就緒" + +#: kalgebra.cpp:680 +#, kde-format +msgid "Add variable" +msgstr "新增/變數" + +#: kalgebra.cpp:684 +#, kde-format +msgid "Enter a name for the new variable" +msgstr "請輸入新變數名稱" + +#: main.cpp:30 +#, kde-format +msgid "A portable calculator" +msgstr "計算機" + +#: main.cpp:31 +#, kde-format +msgid "(C) 2006-2016 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2016 Aleix Pol i Gonzalez" + +#: main.cpp:33 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Franklin Weng" + +#: main.cpp:33 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "franklin@goodhorse.idv.tw" + +#: varedit.cpp:34 +#, kde-format +msgid "Add/Edit a variable" +msgstr "新增/編輯變數" + +#: varedit.cpp:39 +#, kde-format +msgid "Remove Variable" +msgstr "移除變數" + +#: varedit.cpp:64 +#, kde-format +msgid "Edit '%1' value" +msgstr "編輯 %1 數值" + +#: varedit.cpp:66 +#, kde-format +msgid "not available" +msgstr "N/A" + +#: varedit.cpp:99 +#, kde-format +msgid "%1 := %2" +msgstr "%1 := %2" + +#: varedit.cpp:102 +#, kde-format +msgid "WRONG" +msgstr "錯誤" + +#: viewportwidget.cpp:46 +#, kde-format +msgid "Left:" +msgstr "左:" + +#: viewportwidget.cpp:47 +#, kde-format +msgid "Top:" +msgstr "頂端:" + +#: viewportwidget.cpp:48 +#, kde-format +msgid "Width:" +msgstr "寬度:" + +#: viewportwidget.cpp:49 +#, kde-format +msgid "Height:" +msgstr "高度:" + +#: viewportwidget.cpp:51 +#, kde-format +msgid "Apply" +msgstr "套用" diff --git a/po/zh_TW/kalgebramobile.po b/po/zh_TW/kalgebramobile.po new file mode 100644 index 0000000..3773376 --- /dev/null +++ b/po/zh_TW/kalgebramobile.po @@ -0,0 +1,175 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kalgebra package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: kalgebra\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-06-23 02:57+0200\n" +"PO-Revision-Date: 2019-03-12 22: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 18.12.3\n" + +#: main.cpp:48 +#, kde-format +msgid "A portable calculator" +msgstr "可攜型計算機" + +#: main.cpp:49 +#, kde-format +msgid "(C) 2006-2018 Aleix Pol i Gonzalez" +msgstr "(C) 2006-2018 Aleix Pol i Gonzalez" + +#: main.cpp:51 +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "pan93412" + +#: main.cpp:51 +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "pan93412@gmail.com" + +#: plugins/About.qml:28 +#, kde-format +msgid "KAlgebra Mobile" +msgstr "KAlgebra 行動版" + +#: plugins/About.qml:31 +#, kde-format +msgid "A simple scientific calculator" +msgstr "簡單的科學計算機" + +#: plugins/Console.qml:58 +#, kde-format +msgid "Load Script..." +msgstr "載入指令碼…" + +#: plugins/Console.qml:62 plugins/Console.qml:72 +#, kde-format +msgid "Script (*.kal)" +msgstr "指令碼 (*.kal)" + +#: plugins/Console.qml:68 +#, kde-format +msgid "Save Script..." +msgstr "儲存指令碼…" + +#: plugins/Console.qml:79 +#, kde-format +msgid "Export Log..." +msgstr "匯出記錄…" + +#: plugins/Console.qml:83 +#, kde-format +msgid "HTML (*.html)" +msgstr "HTML (*.html)" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Evaluate..." +msgstr "估算…" + +#: plugins/Console.qml:90 +#, kde-format +msgid "Calculate..." +msgstr "計算…" + +#: plugins/Console.qml:96 +#, kde-format +msgid "Clear Log" +msgstr "清除記錄" + +#: plugins/Console.qml:111 +#, kde-format +msgid "Copy \"%1\"" +msgstr "複製「%1」" + +#: plugins/Console.qml:121 +#, kde-format +msgid "2D Plot" +msgstr "2D 圖形" + +#: plugins/Console.qml:128 +#, kde-format +msgid "3D Plot" +msgstr "3D 圖形" + +#: plugins/Plot2D.qml:47 plugins/Plot3D.qml:46 +#, kde-format +msgid "Save..." +msgstr "儲存…" + +#: plugins/Plot2D.qml:60 +#, kde-format +msgid "View Grid" +msgstr "顯示網格" + +#: plugins/Plot2D.qml:66 plugins/Plot3D.qml:59 +#, kde-format +msgid "Reset Viewport" +msgstr "重設檢視" + +#: plugins/Plot2D.qml:111 plugins/Plot3D.qml:107 +#, kde-format +msgid "Clear All" +msgstr "全部清除" + +#: plugins/Tables.qml:47 +#, kde-format +msgid "Errors: The step cannot be 0" +msgstr "錯誤:步驟數不得為 0" + +#: plugins/Tables.qml:49 +#, kde-format +msgid "Errors: The start and end are the same" +msgstr "錯誤:起點與終點值相同" + +#: plugins/Tables.qml:51 +#, kde-format +msgid "Errors: %1" +msgstr "錯誤:%1" + +#: plugins/Tables.qml:79 +#, kde-format +msgid "Input:" +msgstr "輸入:" + +#: plugins/Tables.qml:86 +#, kde-format +msgid "From:" +msgstr "起點:" + +#: plugins/Tables.qml:87 +#, kde-format +msgid "To:" +msgstr "終點:" + +#: plugins/Tables.qml:88 +#, kde-format +msgid "Step:" +msgstr "部署:1" + +#: plugins/Tables.qml:93 +#, kde-format +msgid "Run" +msgstr "執行" + +#: plugins/Tables.qml:110 +#, kde-format +msgid "Results:" +msgstr "結果:" + +#: plugins/widgets/qtcontrols/ExpressionInput.qml:73 +#, kde-format +msgid "Expression to calculate..." +msgstr "欲計算之表達式…" diff --git a/po/zh_TW/plasma_applet_kalgebraplasmoid.po b/po/zh_TW/plasma_applet_kalgebraplasmoid.po new file mode 100644 index 0000000..3e648d7 --- /dev/null +++ b/po/zh_TW/plasma_applet_kalgebraplasmoid.po @@ -0,0 +1,34 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Frank Weng (a.k.a. Franklin) , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2019-05-20 03:01+0200\n" +"PO-Revision-Date: 2010-04-19 17:11+0800\n" +"Last-Translator: Frank Weng (a.k.a. Franklin) \n" +"Language-Team: Chinese Traditional \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: kalgebraplasma.cpp:69 +#, kde-format +msgid "Enter some expression." +msgstr "輸入一些表示式。" + +#: kalgebraplasma.cpp:103 +#, kde-format +msgid "KAlgebra" +msgstr "KAlgebra" + +#: kalgebraplasma.cpp:104 +#, kde-format +msgid "%1 = %2" +msgstr "%1 = %2" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..144bee1 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,28 @@ +set(kalgebra_SRCS + kalgebra.cpp + dictionary.cpp + consolemodel.cpp + consolehtml.cpp + varedit.cpp + main.cpp + variablesdelegate.cpp + viewportwidget.cpp + functionedit.cpp +) + +file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../icons/*-apps-kalgebra.png") +ecm_add_app_icon(kalgebra_SRCS ICONS ${ICONS_SRCS}) + +add_executable(kalgebra ${kalgebra_SRCS}) +target_link_libraries(kalgebra Qt5::Widgets Qt5::PrintSupport Qt5::WebEngineWidgets KF5::I18n + KF5::CoreAddons KF5::WidgetsAddons KF5::ConfigWidgets + KF5::XmlGui # HelpMenu + KF5::KIOCore + KF5::I18n + KF5::Analitza KF5::AnalitzaWidgets KF5::AnalitzaGui KF5::AnalitzaPlot) + +install(TARGETS kalgebra ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) +install(PROGRAMS org.kde.kalgebra.desktop DESTINATION ${KDE_INSTALL_APPDIR} ) +install(FILES kalgebra.xml DESTINATION ${KDE_INSTALL_DATADIR}/katepart5/syntax ) +install(FILES org.kde.kalgebra.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) + diff --git a/src/Messages.sh b/src/Messages.sh new file mode 100755 index 0000000..77523eb --- /dev/null +++ b/src/Messages.sh @@ -0,0 +1,2 @@ +#! /bin/sh +$XGETTEXT *.cpp -o $podir/kalgebra.pot diff --git a/src/askname.h b/src/askname.h new file mode 100644 index 0000000..b12b2f2 --- /dev/null +++ b/src/askname.h @@ -0,0 +1,53 @@ +/************************************************************************************* + * Copyright (C) 2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef ASKNAME_H +#define ASKNAME_H + +#include +#include +#include +#include +#include +#include + +class AskName : public QDialog +{ + public: + AskName(const QString& text, QWidget* parent) : QDialog(parent) + { + edit=new QLineEdit(this); + edit->setValidator(new QRegExpValidator(QRegExp(QStringLiteral("[a-zA-Z][\\w]*")), edit)); + + QDialogButtonBox * buttonBox; + QVBoxLayout *items=new QVBoxLayout(this); + items->addWidget(new QLabel(text, this)); + items->addWidget(edit); +// items->addItem(new QSpacerItem()); + items->addWidget(buttonBox=new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok, Qt::Horizontal, this)); + + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + } + + QString name() const { return edit->text(); } + private: + QLineEdit *edit; +}; + +#endif diff --git a/src/consolehtml.cpp b/src/consolehtml.cpp new file mode 100644 index 0000000..eb01e5d --- /dev/null +++ b/src/consolehtml.cpp @@ -0,0 +1,250 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "consolehtml.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +static QUrl temporaryPath() +{ + QTemporaryFile temp(QStringLiteral("consolelog")); + temp.open(); + temp.close(); + temp.setAutoRemove(false); + return QUrl::fromLocalFile(temp.fileName()); +} + +static QUrl retrieve(const QUrl& remoteUrl) +{ + const QUrl path = temporaryPath(); + KIO::CopyJob* job=KIO::copyAs(remoteUrl, path); + + job->exec(); + + return path; +} + +class ConsolePage : public QWebEnginePage +{ +public: + ConsolePage(ConsoleHtml* parent) : QWebEnginePage(parent), m_console(parent) {} + + bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool /*isMainFrame*/) override { + if (url.scheme() == QLatin1String("data")) + return true; + qDebug() << "navigating to" << url << type; + m_console->openClickedUrl(url); + return false; + } + + ConsoleHtml* m_console; +}; + +ConsoleHtml::ConsoleHtml(QWidget *parent) + : QWebEngineView(parent) + , m_model(new ConsoleModel(this)) +{ + connect(m_model.data(), &ConsoleModel::updateView, this, &ConsoleHtml::updateView); + connect(m_model.data(), &ConsoleModel::operationSuccessful, this, &ConsoleHtml::includeOperation); + setPage(new ConsolePage(this)); +} + +ConsoleHtml::~ConsoleHtml() +{ + qDeleteAll(m_options); +} + +void ConsoleHtml::openClickedUrl(const QUrl& url) +{ + QUrlQuery query(url); + QString id =query.queryItemValue(QStringLiteral("id")); + QString exp=query.queryItemValue(QStringLiteral("func")); + + if(id==QLatin1String("copy")) { + emit paste(exp); + } else foreach(InlineOptions* opt, m_options) { + if(opt->id() == id) { + opt->triggerOption(Analitza::Expression(exp, false)); + } + } +} + +bool ConsoleHtml::addOperation(const Analitza::Expression& e, const QString& input) +{ + return m_model->addOperation(e, input); +} + +ConsoleModel::ConsoleMode ConsoleHtml::mode() const +{ + return m_model->mode(); +} + +void ConsoleHtml::setMode(ConsoleModel::ConsoleMode newMode) +{ + m_model->setMode(newMode); +} + +Analitza::Analyzer* ConsoleHtml::analitza() +{ + return m_model->analyzer(); +} + +bool ConsoleHtml::loadScript(const QUrl& path) +{ + return m_model->loadScript(path.isLocalFile() ? path : retrieve(path)); +} + +bool ConsoleHtml::saveScript(const QUrl & path) const +{ + const QUrl savePath=path.isLocalFile() ? path : temporaryPath(); + bool correct = m_model->saveScript(savePath); + if(!path.isLocalFile()) { + KIO::CopyJob* job=KIO::move(savePath, path); + correct=job->exec(); + } + return correct; +} + +bool ConsoleHtml::saveLog(const QUrl & path) const +{ + const QUrl savePath=path.isLocalFile() ? path : temporaryPath(); + bool correct = m_model->saveLog(savePath); + if(!path.isLocalFile()) { + KIO::CopyJob* job=KIO::move(savePath, path); + correct=job->exec(); + } + return correct; +} + +void ConsoleHtml::includeOperation(const Analitza::Expression& /*e*/, const Analitza::Expression& res) +{ + m_optionsString.clear(); + if (res.isCorrect()) { + Analitza::Analyzer lambdifier(m_model->variables()); + lambdifier.setExpression(res); + Analitza::Expression lambdaexp = lambdifier.dependenciesToLambda(); + lambdifier.setExpression(lambdaexp); + + foreach(InlineOptions* opt, m_options) { + if(opt->matchesExpression(lambdaexp)) { + QUrl url(QStringLiteral("/query")); + QUrlQuery query(url); + query.addQueryItem(QStringLiteral("id"), opt->id()); + query.addQueryItem(QStringLiteral("func"), lambdaexp.toString()); + url.setQuery(query); + + m_optionsString += i18n(" %2", url.toString(), opt->caption()); + } + } + + if(!m_optionsString.isEmpty()) { + m_optionsString = "
"+i18n("Options: %1", m_optionsString)+"
"; + } + } +} + +void ConsoleHtml::updateView() +{ + QByteArray code; + code += "\n"; + code += "\n\n\t :) \n"; + code += m_model->css(); + code += "\n\n"; + + auto log = m_model->htmlLog(); + if (!log.isEmpty()) { + const auto newEntry = log.takeLast(); + foreach(const QString &entry, log) + code += "

" + entry.toUtf8() + "

\n"; + + code += m_optionsString.toUtf8(); + if (newEntry.startsWith("
    ")) + code += newEntry; + else + code += "

    " + newEntry + "

    \n"; + } + code += ""; + + page()->setHtml(code); + + emit changed(); + + connect(this, &QWebEngineView::loadFinished, this, [this](bool ok){ + if (!ok) { + qWarning() << "error loading page" << url(); + } + page()->runJavaScript(QStringLiteral("window.scrollTo(0, document.body.scrollHeight);")); + }); +} + +void ConsoleHtml::copy() const +{ + QApplication::clipboard()->setText(selectedText()); +} + +void ConsoleHtml::contextMenuEvent(QContextMenuEvent* ev) +{ + QMenu popup; + if(hasSelection()) { + popup.addAction(KStandardAction::copy(this, SLOT(copy()), &popup)); + QAction *act=new QAction(QIcon::fromTheme(QStringLiteral("edit-paste")), i18n("Paste \"%1\" to input", selectedText().trimmed()), &popup); + connect(act, SIGNAL(triggered()), SLOT(paste())); + popup.addAction(act); + popup.addSeparator(); + } + popup.addAction(KStandardAction::clear(this, SLOT(clear()), &popup)); + + popup.exec(mapToGlobal(ev->pos())); +} + +void ConsoleHtml::clear() +{ + m_model->clear(); + updateView(); +} + +void ConsoleHtml::modifyVariable(const QString& name, const Analitza::Expression& exp) +{ + m_model->variables()->modify(name, exp); +} + +void ConsoleHtml::removeVariable(const QString & name) +{ + m_model->variables()->remove(name); +} + +void ConsoleHtml::paste() +{ + emit paste(selectedText().trimmed()); +} diff --git a/src/consolehtml.h b/src/consolehtml.h new file mode 100644 index 0000000..361551d --- /dev/null +++ b/src/consolehtml.h @@ -0,0 +1,115 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef CONSOLE_H +#define CONSOLE_H + +#include +#include + +#include "consolemodel.h" +#include + +class ConsoleModel; + +class InlineOptions +{ + public: + virtual ~InlineOptions() {} + + virtual QString id() const = 0; + virtual QString caption() const = 0; + virtual bool matchesExpression(const Analitza::Expression& exp) const = 0; + virtual void triggerOption(const Analitza::Expression& exp) = 0; +}; + +/** + * The Console widget is able to receive an operation, solve it and show the value. + * It also is able to load scripts and save logs. + * @author Aleix Pol Gonzalez + */ + +class ConsoleHtml : public QWebEngineView +{ + Q_OBJECT + public: + /** Constructor. Creates a console widget. */ + ConsoleHtml(QWidget *parent = 0); + + /** Destructor. */ + ~ConsoleHtml() override; + + /** Retrieves a pointer to the Analitza calculator associated. */ + Analitza::Analyzer* analitza(); + + /** Sets a @p newMode console mode. */ + void setMode(ConsoleModel::ConsoleMode newMode); + + /** Retrieves the console mode. */ + ConsoleModel::ConsoleMode mode() const; + + void addOptionsObserver(InlineOptions* opt) { m_options += opt; } + + void contextMenuEvent(QContextMenuEvent* ev) override; + + public Q_SLOTS: + /** Adds the operation defined by the expression @p e. */ + bool addOperation(const Analitza::Expression& e, const QString& input); + + /** Loads a script from @p path. */ + bool loadScript(const QUrl& path); + + /** Save a script yo @p path. */ + bool saveScript(const QUrl& path) const; + + /** Saves a log to @p path. */ + bool saveLog(const QUrl& path) const; + + /** Flushes the contents. */ + void clear(); + + /** Copies the selected text to the clipboard */ + void copy() const; + + void openClickedUrl(const QUrl& url); + + Q_SIGNALS: + /** Emits a notification that tells that the widget status. */ + void status(const QString &msg); + + /** Emits that something has changed. */ + void changed(); + + /** Emits the selected code to be pasted somewhere */ + void paste(const QString& code); + + private Q_SLOTS: + void modifyVariable(const QString& name, const Analitza::Expression& exp); + void removeVariable(const QString& name); + void paste(); + + private: + void includeOperation(const Analitza::Expression &expression, const Analitza::Expression &result); + void updateView(); + + QString m_optionsString; + QList m_options; + QScopedPointer m_model; +}; + +#endif diff --git a/src/consolemodel.cpp b/src/consolemodel.cpp new file mode 100644 index 0000000..98f9635 --- /dev/null +++ b/src/consolemodel.cpp @@ -0,0 +1,181 @@ +/************************************************************************************* + * Copyright (C) 2007-2017 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "consolemodel.h" + +#include +#include +#include +#include +#include +#include + +Q_GLOBAL_STATIC_WITH_ARGS(QByteArray, s_css, ( + "\n")) + +ConsoleModel::ConsoleModel(QObject* parent) + : QObject(parent) +{ +} + +bool ConsoleModel::addOperation(const QString& input) +{ + return addOperation(Analitza::Expression(input), input); +} + +bool ConsoleModel::addOperation(const Analitza::Expression& e, const QString& input) +{ + Analitza::Expression res; + + a.setExpression(e); + if(a.isCorrect()) { + if (m_mode==ConsoleModel::Evaluation) { + res=a.evaluate(); + } else { + res=a.calculate(); + } + } + + if(a.isCorrect()) { + a.insertVariable(QStringLiteral("ans"), res); + m_script += e; //Script won't have the errors + Q_EMIT operationSuccessful(e, res); + + const auto result = res.toHtml(); + addMessage(QStringLiteral("%3
    =%5") + .arg(i18n("Paste to Input"), e.toString(), e.toHtml(), res.toString(), result), e, res); + } else { + addMessage(i18n("
      Error: %1
    • %2
    ", input.toHtmlEscaped(), a.errors().join(QStringLiteral("\n
  • "))), {}, {}); + } + + return a.isCorrect(); +} + +bool ConsoleModel::loadScript(const QUrl& path) +{ + Q_ASSERT(!path.isEmpty() && path.isLocalFile()); + + //FIXME: We have expression-only script support + bool correct=false; + QFile file(path.toLocalFile()); + + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream stream(&file); + + a.importScript(&stream); + correct=a.isCorrect(); + } + + if(correct) + addMessage(i18n("Imported: %1", path.toDisplayString()), {}, {}); + else + addMessage(i18n("
      Error: Could not load %1.
      %2
    ", path.toDisplayString(), a.errors().join(QStringLiteral("
    "))), {}, {}); + + return correct; +} + +bool ConsoleModel::saveScript(const QUrl& savePath) +{ + Q_ASSERT(!savePath.isEmpty()); + + QFile file(savePath.toLocalFile()); + bool correct=file.open(QIODevice::WriteOnly | QIODevice::Text); + + if(correct) { + QTextStream out(&file); + foreach(const Analitza::Expression& exp, m_script) + out << exp.toString() << endl; + } + + return correct; +} + +void ConsoleModel::setMode(ConsoleMode mode) +{ + if (m_mode != mode) { + m_mode = mode; + Q_EMIT modeChanged(mode); + } +} + +void ConsoleModel::setVariables(const QSharedPointer& vars) +{ + a.setVariables(vars); +} + +void ConsoleModel::addMessage(const QString& msg, const Analitza::Expression& operation, const Analitza::Expression& result) +{ + m_htmlLog += msg.toUtf8(); + Q_EMIT updateView(); + Q_EMIT message(msg, operation, result); +} + +bool ConsoleModel::saveLog(const QUrl& savePath) const +{ + Q_ASSERT(savePath.isLocalFile()); + //FIXME: We have to choose between txt and html + QFile file(savePath.toLocalFile()); + bool correct = file.open(QIODevice::WriteOnly | QIODevice::Text); + + if(correct) { + QTextStream out(&file); + out << "\n" << *s_css << "" << endl; + out << "" << endl; + foreach(const QString &entry, m_htmlLog) + out << "

    " << entry << "

    " << endl; + out << "\n" << endl; + } + + return correct; +} + +void ConsoleModel::clear() +{ + m_script.clear(); + m_htmlLog.clear(); +} + +QByteArray ConsoleModel::css() const +{ + return *s_css; +} diff --git a/src/consolemodel.h b/src/consolemodel.h new file mode 100644 index 0000000..5dda599 --- /dev/null +++ b/src/consolemodel.h @@ -0,0 +1,75 @@ +/************************************************************************************* + * Copyright (C) 2007-2017 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef CONSOLEMODEL_H +#define CONSOLEMODEL_H + +#include +#include +#include + +class ConsoleModel : public QObject +{ + Q_OBJECT + Q_PROPERTY(ConsoleMode mode READ mode WRITE setMode NOTIFY modeChanged) + Q_PROPERTY(QSharedPointer variables READ variables WRITE setVariables) +public: + ConsoleModel(QObject* parent = nullptr); + + /** This enumeration controles the way the console will calculate and show his results. */ + enum ConsoleMode { + Evaluation, /**< Simplifies the expression, tries to simplify when sees a variable not defined. */ + Calculation /**< Calculates everything, if it finds a not defined variable shows an error. */ + }; + Q_ENUM(ConsoleMode) + + Q_SCRIPTABLE bool addOperation(const QString& input); + bool addOperation(const Analitza::Expression& e, const QString& input); + + Q_SCRIPTABLE bool loadScript(const QUrl &path); + Q_SCRIPTABLE bool saveScript(const QUrl &path); + Q_SCRIPTABLE void clear(); + Q_SCRIPTABLE bool saveLog(const QUrl& path) const; + + QByteArray css() const; + + ConsoleMode mode() const { return m_mode; } + void setMode(ConsoleMode mode); + + QSharedPointer variables() const { return a.variables(); } + void setVariables(const QSharedPointer &vars); + Analitza::Analyzer* analyzer() { return &a; } + + QList htmlLog() const { return m_htmlLog; } + +Q_SIGNALS: + void message(const QString &msg, const Analitza::Expression& operation, const Analitza::Expression& result); + void updateView(); + void modeChanged(ConsoleModel::ConsoleMode mode); + void operationSuccessful(const Analitza::Expression &expression, const Analitza::Expression &result); + +private: + void addMessage(const QString &msg, const Analitza::Expression& operation, const Analitza::Expression& result); + + QList m_htmlLog; + Analitza::Analyzer a; + ConsoleMode m_mode = Evaluation; + QVector m_script; +}; + +#endif diff --git a/src/dictionary.cpp b/src/dictionary.cpp new file mode 100644 index 0000000..4f0df0a --- /dev/null +++ b/src/dictionary.cpp @@ -0,0 +1,122 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "dictionary.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +Dictionary::Dictionary(QWidget *p) : QWidget(p) +{ + m_ops=new OperatorsModel(this); + m_sortProxy = new QSortFilterProxyModel(this); + m_sortProxy->setSourceModel(m_ops); + m_sortProxy->sort(2, Qt::AscendingOrder); + m_sortProxy->setFilterKeyColumn(2); + + m_vars = QSharedPointer(new Analitza::Variables); + + QGroupBox *descr=new QGroupBox(i18n("Information"), this); + descr->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + QFormLayout *descrLayo=new QFormLayout; + QVBoxLayout *graphLayo=new QVBoxLayout(this); + m_name=new QLabel(descr); + m_descr=new QLabel(descr); + m_sample=new QLabel(descr); + m_example=new QLabel(descr); + m_funcs=new Analitza::PlotsModel(descr); + m_graph=new Analitza::PlotsView2D(descr); + m_graph->setTicksShown(0); + m_graph->setModel(m_funcs); + m_graph->setReadOnly(true); + m_graph->setViewport(QRect(QPoint(-30, 7), QPoint(30, -7))); + m_graph->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + m_name->setIndent(10); + m_descr->setIndent(10); + m_sample->setIndent(10); + m_example->setIndent(10); + + m_example->setTextInteractionFlags(Qt::TextSelectableByMouse); + + descrLayo->addRow(i18n("%1", m_ops->headerData(0, Qt::Horizontal).toString()), m_name); + descrLayo->addRow(i18n("%1", m_ops->headerData(1, Qt::Horizontal).toString()), m_descr); + descrLayo->addRow(i18n("%1", m_ops->headerData(2, Qt::Horizontal).toString()), m_sample); + descrLayo->addRow(i18n("%1", m_ops->headerData(3, Qt::Horizontal).toString()), m_example); + descrLayo->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); + graphLayo->addWidget(descr); + graphLayo->addWidget(m_graph); + descr->setLayout(descrLayo); + + m_funcs->clear(); +// connect(m_list, SIGNAL(clicked(QModelIndex)), this, SLOT(activated(QModelIndex))); +} + +Dictionary::~Dictionary() +{ +} + +void Dictionary::activated(const QModelIndex& idx, const QModelIndex& prev) +{ + Q_UNUSED(prev); + + m_funcs->clear(); + if(idx.isValid()) { + QModelIndex nameIdx, descriptionIdx, sampleIdx, exampleIdx; + nameIdx = idx.sibling(idx.row(), 0); + descriptionIdx = idx.sibling(idx.row(), 1); + sampleIdx = idx.sibling(idx.row(), 2); + exampleIdx = idx.sibling(idx.row(), 3); + + QString name=m_sortProxy->data(nameIdx).toString(); + QString description=m_sortProxy->data(descriptionIdx).toString(); + QString sample=m_sortProxy->data(sampleIdx).toString(); + QString example=m_sortProxy->data(exampleIdx).toString(); + + Analitza::Expression e(example, false); + + m_name->setText(name); + m_descr->setText(description); + m_sample->setText(sample); + m_example->setText(example); + + m_funcs->addPlot(Analitza::PlotsFactory::self()->requestPlot(e, Analitza::Dim2D, m_vars).create(QColor(0,150,0), QStringLiteral("dict"))); + } else { + m_name->setText(QString()); + m_descr->setText(QString()); + m_sample->setText(QString()); + m_example->setText(QString()); + } +} + +void Dictionary::setFilter(const QString &filter) +{ + m_sortProxy->setFilterFixedString(filter); +} + + diff --git a/src/dictionary.h b/src/dictionary.h new file mode 100644 index 0000000..a42717e --- /dev/null +++ b/src/dictionary.h @@ -0,0 +1,65 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef DICTIONARY_H +#define DICTIONARY_H + +#include +#include + +namespace Analitza +{ +class Variables; +class PlotsView2D; +class PlotsModel; +} + +class QLabel; +class QModelIndex; +class OperatorsModel; + +/** + @author Aleix Pol +*/ +class Dictionary : public QWidget +{ +Q_OBJECT + public: + Dictionary(QWidget *p=0); + virtual ~Dictionary(); + + QSortFilterProxyModel* model() const { return m_sortProxy; } + + public Q_SLOTS: + void activated(const QModelIndex& prev, const QModelIndex& ); + void setFilter(const QString&); + + private: + QLabel *m_name; + QLabel *m_descr; + QLabel *m_sample; + QLabel *m_example; + + Analitza::PlotsView2D *m_graph; + Analitza::PlotsModel *m_funcs; + OperatorsModel *m_ops; + QSharedPointer m_vars; + QSortFilterProxyModel *m_sortProxy; +}; + +#endif diff --git a/src/functionedit.cpp b/src/functionedit.cpp new file mode 100644 index 0000000..d61b2da --- /dev/null +++ b/src/functionedit.cpp @@ -0,0 +1,321 @@ +/************************************************************************************* + * Copyright (C) 2007-2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "functionedit.h" + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Analitza; + +namespace { + static const int resolution = 200; +} + +FunctionEdit::FunctionEdit(QWidget *parent) + : QWidget(parent), m_calcUplimit(0), m_calcDownlimit(0), m_modmode(false) +{ + setWindowTitle(i18n("Add/Edit a function")); + + QVBoxLayout *topLayout = new QVBoxLayout(this); + topLayout->setContentsMargins(2, 2, 2, 2); + topLayout->setSpacing(5); + + m_name = new QLineEdit(this); + + m_func = new ExpressionEdit(this); + m_func->setExamples(PlotsFactory::self()->examples(Dim2D)); + m_func->setAns(QStringLiteral("x")); + connect(m_func, &QPlainTextEdit::textChanged, this, &FunctionEdit::edit); + connect(m_func, &ExpressionEdit::returnPressed, this, &FunctionEdit::ok); + + m_valid = new QLabel(this); + m_valid->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); + + QPalette p=palette(); + p.setColor(QPalette::Active, QPalette::Base, Qt::white); + m_valid->setPalette(p); + + m_validIcon = new QLabel(this); + m_validIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + QLayout* validLayout=new QHBoxLayout; + validLayout->addWidget(m_validIcon); + validLayout->addWidget(m_valid); + + m_color = new KColorCombo(this); + m_color->setColor(QColor(0,150,0)); + connect(m_color, SIGNAL(currentIndexChanged(int)), this, SLOT(colorChange(int))); + + m_funcsModel=new PlotsModel(this); + m_funcsModel->setResolution(resolution); + + m_viewTabs=new QTabWidget(this); + + m_graph = new PlotsView2D(m_viewTabs); + m_graph->setModel(m_funcsModel); + m_graph->setViewport(QRectF(QPointF(-10.0, 10.0), QSizeF(20.0, -20.0))); + m_graph->setFocusPolicy(Qt::NoFocus); + m_graph->setMouseTracking(false); + m_graph->setFramed(true); + m_graph->setReadOnly(true); + m_graph->setTicksShown(Qt::Orientation(0)); + + m_viewTabs->addTab(m_graph, QIcon::fromTheme(QStringLiteral("document-preview")), i18n("Preview")); + QWidget *options=new QWidget(m_viewTabs); + options->setLayout(new QVBoxLayout); + m_uplimit=new ExpressionEdit(options); + m_downlimit=new ExpressionEdit(options); + m_uplimit->setText(QStringLiteral("2*pi")); + m_downlimit->setText(QStringLiteral("0")); + options->layout()->addWidget(new QLabel(i18n("From:"), options)); + options->layout()->addWidget(m_downlimit); + options->layout()->addWidget(new QLabel(i18n("To:"), options)); + options->layout()->addWidget(m_uplimit); + options->layout()->addItem(new QSpacerItem(0,0, QSizePolicy::Expanding, QSizePolicy::Expanding)); + m_viewTabs->addTab(options, QIcon::fromTheme(QStringLiteral("configure")), i18n("Options")); + connect(m_uplimit, &QPlainTextEdit::textChanged, this, &FunctionEdit::updateUplimit); + connect(m_downlimit, &QPlainTextEdit::textChanged, this, &FunctionEdit::updateDownlimit); + + QHBoxLayout *m_butts = new QHBoxLayout; + m_ok = new QPushButton(i18n("OK"), this); + m_ok->setIcon(QIcon::fromTheme(QStringLiteral("dialog-ok"))); + m_remove = new QPushButton(i18nc("@action:button", "Remove"), this); + m_remove->setIcon(QIcon::fromTheme(QStringLiteral("list-remove"))); + connect(m_ok, &QAbstractButton::clicked, this, &FunctionEdit::ok); + connect(m_remove, &QAbstractButton::clicked, this, &FunctionEdit::removeEditingPlot); + + topLayout->addWidget(m_name); + topLayout->addWidget(m_func); + topLayout->addWidget(m_color); + topLayout->addLayout(validLayout); + topLayout->addWidget(m_viewTabs); + topLayout->addLayout(m_butts); + + m_name->hide(); //FIXME: Remove this when the name has any sense + + m_butts->addWidget(m_ok); + m_butts->addWidget(m_remove); + + m_func->setFocus(); + m_ok->setEnabled(false); + + QFont errorFont=m_valid->font(); + errorFont.setBold(true); + m_valid->setFont(errorFont); +} + +FunctionEdit::~FunctionEdit() +{} + +void FunctionEdit::clear() +{ + m_func->setText(QString()); + m_funcsModel->clear(); + edit(); +} + +void FunctionEdit::setFunction(const QString &newText) +{ + m_func->setText(newText); + m_func->document()->setModified(true); +} + +void FunctionEdit::setColor(const QColor &newColor) +{ + m_color->setColor(newColor); + if(m_funcsModel->rowCount()>0) + m_funcsModel->setData(m_funcsModel->index(0), newColor); +} + +void FunctionEdit::colorChange(int) +{ + setColor(m_color->color()); +} + +static double calcExp(const Analitza::Expression& exp, const QSharedPointer& v, bool* corr) +{ + Q_ASSERT(exp.isCorrect()); + Analitza::Analyzer d(v); + d.setExpression(exp); + Analitza::Expression r=d.calculate(); + + *corr=r.isCorrect() && r.isReal(); + + if(*corr) + return r.toReal().value(); + else + return 0.; +} + +void FunctionEdit::updateUplimit() +{ + bool corr = m_uplimit->isCorrect(); + if(corr) { + Analitza::Expression e=m_uplimit->expression(); + m_calcUplimit=calcExp(e, m_vars, &corr); + m_uplimit->setCorrect(corr); + if(corr) + edit(); + } +} + +void FunctionEdit::updateDownlimit() +{ + bool corr = m_downlimit->isCorrect(); + if(corr) { + Analitza::Expression e=m_downlimit->expression(); + m_calcDownlimit=calcExp(e, m_vars, &corr); + m_downlimit->setCorrect(corr); + if(corr) + edit(); + } +} + +void FunctionEdit::setState(const QString& text, bool negative) +{ + QFontMetrics fm(m_valid->font()); + m_valid->setText(fm.elidedText(text, Qt::ElideRight, m_valid->width())); + m_valid->setToolTip(text); + + KColorScheme scheme(QPalette::Normal); + KColorScheme::ForegroundRole role = negative? KColorScheme::NegativeText : KColorScheme::PositiveText; + + QPalette p=m_valid->palette(); + p.setColor(foregroundRole(), scheme.foreground(role).color()); + m_valid->setPalette(p); + + if(negative) + m_validIcon->setPixmap(QIcon::fromTheme(QStringLiteral("flag-red")).pixmap(QSize(16,16))); + else + m_validIcon->setPixmap(QIcon::fromTheme(QStringLiteral("flag-green")).pixmap(QSize(16,16))); +} + +///Let's see if the exp is correct +void FunctionEdit::edit() +{ + if(m_func->text().isEmpty()) { + m_func->setCorrect(true); + m_ok->setEnabled(false); + m_valid->clear(); + m_valid->setToolTip(QString()); + m_validIcon->setPixmap(QIcon::fromTheme(QStringLiteral("flag-yellow")).pixmap(QSize(16,16))); + + m_funcsModel->clear(); + m_graph->forceRepaint(); + return; + } + + if(!m_uplimit->isCorrect() || !m_downlimit->isCorrect()) { + setState(i18n("The options you specified are not correct"), true); + return; + } + + if(m_calcDownlimit>m_calcUplimit) { + setState(i18n("Downlimit cannot be greater than uplimit"), true); + return; + } + bool added = false; + + PlaneCurve* f = 0; + PlotBuilder req = PlotsFactory::self()->requestPlot(expression(), Dim2D, m_vars); + if(req.canDraw()) + f = createFunction(); + + if(f && f->isCorrect()) + f->update(QRect(-10, 10, 20, -20)); + + m_funcsModel->clear(); + if(f && f->isCorrect()) { + m_funcsModel->addPlot(f); + added=true; + setState(QStringLiteral("%1:=%2") + .arg(m_name->text(), f->expression().toString()), false); + } else { + QStringList errors = req.errors(); + if(f) + errors = f->errors(); + Q_ASSERT(!errors.isEmpty()); + + setState(errors.first(), true); + m_valid->setToolTip(errors.join(QStringLiteral("
    "))); + delete f; + } + m_func->setCorrect(added); + m_ok->setEnabled(added); +} + +void FunctionEdit::ok() +{ + if(m_ok->isEnabled()) + emit accept(); +} + +void FunctionEdit::focusInEvent(QFocusEvent *) +{ + m_func->setFocus(); +} + +PlaneCurve* FunctionEdit::createFunction() const +{ + PlotBuilder req = PlotsFactory::self()->requestPlot(expression(), Dim2D, m_vars); + PlaneCurve* curve = static_cast(req.create(color(), name())); + curve->setResolution(resolution); + if(m_calcUplimit != m_calcDownlimit) { + foreach(const QString& var, curve->parameters()) + curve->setInterval(var, m_calcUplimit, m_calcDownlimit); + } + return curve; +} + +Analitza::Expression FunctionEdit::expression() const +{ + return m_func->expression(); +} + +void FunctionEdit::setOptionsShown(bool shown) +{ + m_viewTabs->setVisible(shown); +} + +void FunctionEdit::resizeEvent(QResizeEvent*) +{ + QFontMetrics fm(m_valid->font()); + m_valid->setText(fm.elidedText(m_valid->toolTip(), Qt::ElideRight, m_valid->width())); +} + +void FunctionEdit::setEditing(bool m) +{ + m_modmode=m; + m_remove->setVisible(m); +} diff --git a/src/functionedit.h b/src/functionedit.h new file mode 100644 index 0000000..2402c15 --- /dev/null +++ b/src/functionedit.h @@ -0,0 +1,129 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef FUNCTIONEDIT_H +#define FUNCTIONEDIT_H + +#include +#include +#include +#include + +#include + +class QTabWidget; +namespace Analitza +{ +class Variables; +class Expression; +class PlotsView2D; +class PlotsModel; +class PlaneCurve; +class ExpressionEdit; +} + +/** + * The FunctionEdit dialog provides a way to specify functions. + * @author Aleix Pol i Gonzalez + */ + +class FunctionEdit : public QWidget +{ +Q_OBJECT +public: + /** Constructor. */ + explicit FunctionEdit(QWidget *parent=0); + + /** Destructor. */ + ~FunctionEdit(); + + /** Retrieves the resulting expression text. */ + Analitza::Expression expression() const; + + Analitza::PlaneCurve* createFunction() const; + + /** Sets an expression text to the ExpressionEdit widget. */ + void setFunction(const QString &newText); + + /** Retrieves the selected color for the function */ + QColor color() const { return m_color->color(); } + + /** Sets the selected color for the function.*/ + void setColor(const QColor &newColor); + + /** Returns whether we are editing or adding a function. */ + bool editing() const { return m_modmode; } + + /** Sets whether we are editing or adding a function. */ + void setEditing(bool m); + + /** Sets a name to the function. (Not used YET) */ + void setName(const QString& name) { m_name->setText(name); } + + /** Retrieves a name for the function. (Not used YET) */ + QString name() const { return m_name->text(); } + + /** Sets the variables class to be used with the graph functions*/ + void setVariables(const QSharedPointer &v) { m_vars=v; } + + QSharedPointer variables() const { return m_vars; } + + void setOptionsShown(bool shown); + + void resizeEvent(QResizeEvent* ev) Q_DECL_OVERRIDE; + +public Q_SLOTS: + /** Clears the dialog. */ + void clear(); + +Q_SIGNALS: + /** Tells that the result has been accepted. */ + void accept(); + + /** asks the currently edited plot to be removed. */ + void removeEditingPlot(); + +private Q_SLOTS: + void edit(); + void ok(); + void colorChange(int); + void updateUplimit(); + void updateDownlimit(); + +private: + void setState(const QString& text, bool negative); + void focusInEvent(QFocusEvent*) Q_DECL_OVERRIDE; + + Analitza::ExpressionEdit *m_func; + Analitza::ExpressionEdit *m_uplimit, *m_downlimit; + double m_calcUplimit, m_calcDownlimit; + QLineEdit *m_name; + QPushButton *m_ok; + QLabel *m_valid; + QLabel *m_validIcon; + Analitza::PlotsView2D *m_graph; + KColorCombo *m_color; + Analitza::PlotsModel *m_funcsModel; + QSharedPointer m_vars; + + bool m_modmode; + QTabWidget* m_viewTabs; + QPushButton* m_remove; +}; + +#endif diff --git a/src/kalgebra.cpp b/src/kalgebra.cpp new file mode 100644 index 0000000..b5ee17f --- /dev/null +++ b/src/kalgebra.cpp @@ -0,0 +1,721 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "kalgebra.h" +#include "varedit.h" +#include "consolehtml.h" +#include "dictionary.h" +#include "askname.h" +#include "variablesdelegate.h" +#include "viewportwidget.h" +#include "functionedit.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 +#include +#include +#include +#include +#include +#include + +class Add2DOption : public InlineOptions +{ + public: + Add2DOption(KAlgebra* c) + : m_kalgebra(c) + {} + + QString id() const Q_DECL_OVERRIDE { return QStringLiteral("add2d"); } + bool matchesExpression(const Analitza::Expression& exp) const Q_DECL_OVERRIDE { + return Analitza::PlotsFactory::self()->requestPlot(exp, Analitza::Dim2D).canDraw(); + } + + QString caption() const Q_DECL_OVERRIDE { return i18n("Plot 2D"); } + + void triggerOption(const Analitza::Expression& exp) Q_DECL_OVERRIDE { m_kalgebra->add2D(exp); } + + private: + KAlgebra* m_kalgebra; +}; + +class Add3DOption : public InlineOptions +{ + public: + Add3DOption(KAlgebra* c) + : m_kalgebra(c) + {} + + QString id() const Q_DECL_OVERRIDE { return QStringLiteral("add3d"); } + bool matchesExpression(const Analitza::Expression& exp) const Q_DECL_OVERRIDE + { + return Analitza::PlotsFactory::self()->requestPlot(exp, Analitza::Dim3D).canDraw(); + } + + QString caption() const Q_DECL_OVERRIDE { return i18n("Plot 3D"); } + + void triggerOption(const Analitza::Expression& exp) Q_DECL_OVERRIDE { m_kalgebra->add3D(exp); } + + private: + KAlgebra* m_kalgebra; +}; + +QColor randomFunctionColor() { return QColor::fromHsv(qrand()%255, 255, 255); } + +KAlgebra::KAlgebra(QWidget *parent) + : QMainWindow(parent) +{ + resize(900, 500); + + m_tabs = new QTabWidget; + setCentralWidget(m_tabs); + + setStatusBar(new QStatusBar(this)); + setMenuBar(new QMenuBar(this)); + + KToggleFullScreenAction* fullScreenAction = KStandardAction::fullScreen(this, SLOT(fullScreen(bool)), this, this); + + QMenu* g_menu = menuBar()->addMenu(i18n("Session")); + g_menu->addAction(KStandardAction::openNew(this, SLOT(newInstance()), this)); + g_menu->addAction(fullScreenAction); + g_menu->addSeparator(); + g_menu->addAction(KStandardAction::quit(this, SLOT(close()), this)); + + QToolButton* fullScreenButton = new QToolButton(this); + fullScreenButton->setDefaultAction(fullScreenAction); + m_tabs->setCornerWidget(fullScreenButton); + + m_status = new QLabel(this); + statusBar()->insertWidget(0, m_status); + menuBar()->addAction(QStringLiteral("|"))->setEnabled(false); + + ///////Console + QWidget *console = new QWidget(m_tabs); + QVBoxLayout *c_layo = new QVBoxLayout(console); + c_results = new ConsoleHtml(console); + c_results->setFocusPolicy(Qt::NoFocus); + c_dock_vars = new QDockWidget(i18n("Variables"), this); + c_dock_vars->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable); + addDockWidget(Qt::RightDockWidgetArea, c_dock_vars); + + c_varsModel=new Analitza::VariablesModel(c_results->analitza()->variables()); + c_varsModel->setEditable(false); + + c_variables = new QTreeView(c_dock_vars); + c_variables->setModel(c_varsModel); + c_variables->setRootIsDecorated(false); + c_variables->header()->setStretchLastSection(true); + c_variables->setSelectionBehavior(QAbstractItemView::SelectRows); + c_variables->setSelectionMode(QAbstractItemView::SingleSelection); + + c_exp = new Analitza::ExpressionEdit(console); + c_exp->setAnalitza(c_results->analitza()); + c_exp->setExamples(QStringList() << QStringLiteral("square:=x->x**2") << QStringLiteral("fib:=n->piecewise { eq(n,0)?0, eq(n,1)?1, ?fib(n-1)+fib(n-2) }")); + c_dock_vars->setWidget(c_variables); + + m_tabs->addTab(console, i18n("&Calculator")); + console->setLayout(c_layo); + c_layo->addWidget(c_results); + c_layo->addWidget(c_exp); + + connect(c_exp, &Analitza::ExpressionEdit::returnPressed, this, &KAlgebra::operate); + connect(c_results, &ConsoleHtml::status, this, &KAlgebra::changeStatusBar); + connect(c_results, &ConsoleHtml::changed, this, &KAlgebra::updateInformation); + connect(c_results, SIGNAL(changed()), c_exp, SLOT(updateCompleter())); + connect(c_results, SIGNAL(paste(QString)), c_exp, SLOT(insertText(QString))); + connect(c_variables, &QAbstractItemView::clicked, this, &KAlgebra::edit_var); + ////////menu + c_menu = menuBar()->addMenu(i18n("C&alculator")); + + c_menu->addAction(QIcon::fromTheme(QStringLiteral("document-open")), i18nc("@item:inmenu", "&Load Script..."), + this, SLOT(loadScript()), Qt::CTRL+Qt::Key_L); + c_recentScripts=new KRecentFilesAction(QIcon::fromTheme(QStringLiteral("document-open-recent")), i18n("Recent Scripts"), this); + connect(c_recentScripts, SIGNAL(urlSelected(QUrl)), this, SLOT(loadScript(QUrl))); + c_menu->addAction(c_recentScripts); + + c_menu->addAction(QIcon::fromTheme(QStringLiteral("document-save")), i18nc("@item:inmenu", "&Save Script..."), + this, &KAlgebra::saveScript, Qt::CTRL+Qt::Key_G); + c_menu->addAction(QIcon::fromTheme(QStringLiteral("document-save")), i18nc("@item:inmenu", "&Export Log..."), + this, &KAlgebra::saveLog, QKeySequence::Save); + c_menu->addSeparator(); + c_menu->addAction(i18nc("@item:inmenu", "&Insert ans..."), + this, &KAlgebra::insertAns, Qt::Key_F3); + c_menu->addSeparator()->setText(i18n("Execution Mode")); + QActionGroup *execGroup = new QActionGroup(c_menu); + QAction* calc = c_menu->addAction(i18nc("@item:inmenu", "Calculate"), this, &KAlgebra::consoleCalculate); + QAction* eval = c_menu->addAction(i18nc("@item:inmenu", "Evaluate"), this, &KAlgebra::consoleEvaluate); + + calc->setCheckable(true); + eval->setCheckable(true); + eval->setChecked(true); + execGroup->addAction(calc); + execGroup->addAction(eval); + c_menu->addSeparator(); + c_menu->addAction(KStandardAction::clear(c_results, SLOT(clear()), this)); + initializeRecentScripts(); + //////////// + //////EOConsola + + //////2D Graph + b_funcsModel=new Analitza::PlotsModel(this); + + m_graph2d = new Analitza::PlotsView2D(m_tabs); + m_graph2d->setTicksShown(0); + m_graph2d->setModel(b_funcsModel); + + b_dock_funcs = new QDockWidget(i18n("Functions"), this); + b_tools = new QTabWidget(b_dock_funcs); + b_tools->setTabPosition(QTabWidget::South); + addDockWidget(Qt::RightDockWidgetArea, b_dock_funcs); + + b_funcs = new QTreeView(b_tools); + b_funcs->setRootIsDecorated(false); + b_funcs->setModel(b_funcsModel); + b_funcs->header()->resizeSections(QHeaderView::ResizeToContents); + b_funcs->setSelectionMode(QAbstractItemView::SingleSelection); + m_graph2d->setSelectionModel(b_funcs->selectionModel()); + + b_tools->addTab(b_funcs, i18n("List")); + + b_funced = new FunctionEdit(b_tools); + b_funced->setVariables(c_varsModel->variables()); + connect(b_funced, &FunctionEdit::accept, this, &KAlgebra::new_func); + connect(b_funced, &FunctionEdit::removeEditingPlot, this, &KAlgebra::remove_func); + b_tools->addTab(b_funced, QIcon::fromTheme(QStringLiteral("list-add")), i18n("&Add")); + + QTableView* b_varsView=new QTableView(b_tools); + b_varsModel=new Analitza::VariablesModel(b_funced->variables()); + b_varsView->setModel(b_varsModel); + b_varsView->setShowGrid(false); + b_varsView->verticalHeader()->hide(); + b_varsView->horizontalHeader()->setStretchLastSection(true); + b_varsView->setSelectionBehavior(QAbstractItemView::SelectRows); + b_varsView->setContextMenuPolicy(Qt::CustomContextMenu); + VariablesDelegate* delegate=new VariablesDelegate(b_varsView); + b_varsView->setItemDelegate(delegate); + b_tools->addTab(b_varsView, i18n("Variables")); + + ViewportWidget* b_viewport = new ViewportWidget(this); + b_viewport->setViewport(m_graph2d->definedViewport()); + b_tools->addTab(b_viewport, i18n("Viewport")); + + b_dock_funcs->setWidget(b_tools); + b_dock_funcs->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); + m_tabs->addTab(m_graph2d, i18n("&2D Graph")); + c_results->addOptionsObserver(new Add2DOption(this)); + + connect(b_varsModel, &QAbstractItemModel::dataChanged, this, &KAlgebra::valueChanged); + connect(b_funcs, &QAbstractItemView::doubleClicked, this, &KAlgebra::edit_func); + connect(b_tools, &QTabWidget::currentChanged, this, &KAlgebra::functools); + connect(m_graph2d, &Analitza::PlotsView2D::status, this, &KAlgebra::changeStatusBar); + connect(m_graph2d, SIGNAL(viewportChanged(QRectF)), b_viewport, SLOT(setViewport(QRectF))); + connect(b_viewport, SIGNAL(viewportChange(QRectF)), m_graph2d, SLOT(changeViewport(QRectF))); + connect(b_varsView, &QWidget::customContextMenuRequested, this, &KAlgebra::varsContextMenu); + + ////////menu + b_menu = menuBar()->addMenu(i18n("2&D Graph")); + QAction* b_actions[6]; + b_actions[0] = b_menu->addAction(i18n("&Grid"), this, &KAlgebra::toggleSquares); + b_actions[1] = b_menu->addAction(i18n("&Keep Aspect Ratio"), this, &KAlgebra::toggleKeepAspect); + b_menu->addAction(KStandardAction::save(this, SLOT(saveGraph()), this)); + b_menu->addSeparator(); + b_menu->addAction(KStandardAction::zoomIn(m_graph2d, SLOT(zoomIn()), this)); + b_menu->addAction(KStandardAction::zoomOut(m_graph2d, SLOT(zoomOut()), this)); + QAction* ac=KStandardAction::actualSize(m_graph2d, SLOT(resetViewport()), this); + ac->setShortcut(Qt::ControlModifier + Qt::Key_0); + b_menu->addAction(ac); + b_menu->addSeparator()->setText(i18n("Resolution")); + b_actions[2] = b_menu->addAction(i18nc("@item:inmenu", "Poor"), this, &KAlgebra::set_res_low); + b_actions[3] = b_menu->addAction(i18nc("@item:inmenu", "Normal"), this, &KAlgebra::set_res_std); + b_actions[4] = b_menu->addAction(i18nc("@item:inmenu", "Fine"), this, &KAlgebra::set_res_fine); + b_actions[5] = b_menu->addAction(i18nc("@item:inmenu", "Very Fine"), this, &KAlgebra::set_res_vfine); + m_graph2d->setContextMenuPolicy(Qt::ActionsContextMenu); + m_graph2d->addActions(b_menu->actions()); + + QActionGroup *res = new QActionGroup(b_menu); + res->addAction(b_actions[2]); + res->addAction(b_actions[3]); + res->addAction(b_actions[4]); + res->addAction(b_actions[5]); + + b_actions[0]->setCheckable(true); + b_actions[0]->setChecked(true); + b_actions[1]->setCheckable(true); + b_actions[1]->setChecked(true); + b_actions[2]->setCheckable(true); + b_actions[3]->setCheckable(true); + b_actions[3]->setChecked(true); + b_actions[4]->setCheckable(true); + b_actions[5]->setCheckable(true); + set_res_std(); + //////EO2D Graph + + /////3DGraph + QWidget *tridim = new QWidget(m_tabs); + QVBoxLayout *t_layo = new QVBoxLayout(tridim); + t_exp = new Analitza::ExpressionEdit(tridim); + t_exp->setExamples(Analitza::PlotsFactory::self()->examples(Analitza::Dim3D)); + t_exp->setAns(QStringLiteral("x")); + t_model3d = new Analitza::PlotsModel(this); + m_graph3d = new Analitza::PlotsView3DES(tridim); + m_graph3d->setModel(t_model3d); + m_graph3d->setUseSimpleRotation(true); + + tridim->setLayout(t_layo); + m_tabs->addTab(tridim, i18n("&3D Graph")); + t_layo->addWidget(m_graph3d); + t_layo->addWidget(t_exp); + + connect(t_exp, &Analitza::ExpressionEdit::returnPressed, this, &KAlgebra::new_func3d); + c_results->addOptionsObserver(new Add3DOption(this)); + + ////////menu + t_menu = menuBar()->addMenu(i18n("3D &Graph")); + QAction* t_actions[5]; + t_menu->addAction(KStandardAction::save(this, SLOT(save3DGraph()), this)); + t_menu->addAction(QIcon::fromTheme(QStringLiteral("zoom-original")), i18n("&Reset View"), m_graph3d, [this]() { m_graph3d->resetViewport(); }); + t_menu->addSeparator(); + t_actions[2] = t_menu->addAction(i18n("Dots"), this, &KAlgebra::set_dots); + t_actions[3] = t_menu->addAction(i18n("Lines"), this, &KAlgebra::set_lines); + t_actions[4] = t_menu->addAction(i18n("Solid"), this, &KAlgebra::set_solid); + + QActionGroup *t_type = new QActionGroup(t_menu); + t_type->addAction(t_actions[2]); + t_type->addAction(t_actions[3]); + t_type->addAction(t_actions[4]); + + t_actions[2]->setCheckable(true); + t_actions[3]->setCheckable(true); + t_actions[4]->setCheckable(true); + t_actions[4]->setChecked(true); + + //////////// + //////EO3D Graph + menuBar()->addAction(QStringLiteral("|"))->setEnabled(false); + + //Dictionary tab + d_dock = new QDockWidget(i18n("Operations"), this); + d_dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable); + addDockWidget(Qt::RightDockWidgetArea, d_dock); + Dictionary *dic = new Dictionary(m_tabs); + m_tabs->addTab(dic, i18n("&Dictionary")); + + QWidget *w=new QWidget; + QLayout *leftLayo=new QVBoxLayout(w); + d_filter=new QLineEdit(w); + d_filter->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed)); + connect(d_filter, &QLineEdit::textChanged, dic, &Dictionary::setFilter); + connect(d_filter, &QLineEdit::textChanged, this, &KAlgebra::dictionaryFilterChanged); + d_list = new QListView(w); + d_list->setModel(dic->model()); + d_list->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding)); + leftLayo->addWidget(new QLabel(i18n("Look for:"), d_dock)); + leftLayo->addWidget(d_filter); + leftLayo->addWidget(d_list); + d_dock->setWidget(w); + + connect(d_list->selectionModel(), &QItemSelectionModel::currentChanged, + dic, &Dictionary::activated); + + //EODictionary + //Ego's reminder + KHelpMenu* help = new KHelpMenu(this); + menuBar()->addMenu(help->menu()); + +#pragma message("TODO: Port to PlotsModel") +// connect(b_funcsModel, SIGNAL(functionModified(QString,Analitza::Expression)), +// c_results, SLOT(modifyVariable(QString,Analitza::Expression))); +// connect(b_funcsModel, SIGNAL(functionRemoved(QString)), +// c_results, SLOT(removeVariable(QString))); + + connect(m_tabs, &QTabWidget::currentChanged, this, &KAlgebra::tabChanged); + tabChanged(0); +} + +KAlgebra::~KAlgebra() +{ + KConfig conf(QStringLiteral("kalgebrarc")); + KConfigGroup config(&conf, "Default"); + QStringList urls; + foreach(const QUrl& url, c_recentScripts->urls()) + urls += url.toDisplayString(); + + config.writeEntry("recent", urls); +} + +void KAlgebra::initializeRecentScripts() +{ + KConfig conf(QStringLiteral("kalgebrarc")); + KConfigGroup config(&conf, "Default"); + + QStringList urls=config.readEntry("recent", QStringList()); + foreach(const QString& url, urls) { + c_recentScripts->addUrl(QUrl(url)); + } +} + +void KAlgebra::newInstance() +{ + QProcess::startDetached(QApplication::applicationFilePath()); +} + +void KAlgebra::add2D(const Analitza::Expression& exp) +{ + qDebug() << "adding" << exp.toString(); + + Analitza::PlotBuilder req = Analitza::PlotsFactory::self()->requestPlot(exp, Analitza::Dim2D, c_results->analitza()->variables()); + Analitza::PlotItem* curve = req.create(randomFunctionColor(), b_funcsModel->freeId()); + b_funcsModel->addPlot(curve); + + m_tabs->setCurrentIndex(1); +} + +void KAlgebra::new_func() +{ + Analitza::FunctionGraph* f=b_funced->createFunction(); + + if(b_funced->editing()) { + QModelIndex idx = b_funcsModel->indexForName(f->name()); + b_funcsModel->updatePlot(idx.row(), f); + } else { + b_funcsModel->addPlot(f); + } + + b_funced->setEditing(false); + b_funced->clear(); + b_tools->setCurrentIndex(0); + b_funcs->setCurrentIndex(b_funcsModel->indexForName(f->name())); + m_graph2d->setFocus(); +} + +void KAlgebra::remove_func() +{ + Q_ASSERT(b_funced->editing()); + b_funcsModel->removeRow(b_funcs->currentIndex().row()); + + b_funced->setEditing(false); + b_funced->clear(); + b_tools->setCurrentIndex(0); + b_funcs->setCurrentIndex(QModelIndex()); + m_graph2d->setFocus(); +} + +void KAlgebra::edit_func(const QModelIndex &idx) +{ + b_tools->setTabText(1, i18n("&Editing")); + b_tools->setCurrentIndex(1); + b_funced->setName(b_funcsModel->data(idx.sibling(idx.row(), 0)).toString()); + b_funced->setFunction(b_funcsModel->data(idx.sibling(idx.row(), 1)).toString()); + b_funced->setEditing(true); + b_funced->setFocus(); +} + +void KAlgebra::functools(int i) +{ + if(i==0) + b_tools->setTabText(1, i18n("&Add")); + else { + b_funced->setName(b_funcsModel->freeId()); + b_funced->setColor(randomFunctionColor()); + b_funced->setEditing(false); + b_funced->setFocus(); + } +} + +void KAlgebra::edit_var(const QModelIndex &idx) +{ + if(idx.column()==0) { + c_exp->insertText(idx.data().toString()); + } else { + QModelIndex idxName=idx.sibling(idx.row(), 0); + + QPointer e(new VarEdit(this, false)); + QString var = c_variables->model()->data(idxName, Qt::DisplayRole).toString(); + + e->setAnalitza(c_results->analitza()); + e->setName(var); + + if(e->exec() == QDialog::Accepted) { + QString str=var+" := "+e->val().toString(); + c_results->addOperation(Analitza::Expression(str, false), str); + } + delete e; + } +} + +void KAlgebra::operate() +{ + if(!c_exp->text().isEmpty()){ + c_exp->setCorrect(c_results->addOperation(c_exp->expression(), c_exp->toPlainText())); + c_exp->selectAll(); + } +} + +void KAlgebra::changeStatusBar(const QString& msg) +{ +// statusBar()->showMessage(msg); + m_status->setText(msg); +} + +void KAlgebra::loadScript() +{ + QUrl path = QFileDialog::getOpenFileUrl(this, i18n("Choose a script"), QUrl(), i18n("Script (*.kal)")); + + if(!path.isEmpty()) + loadScript(path); +} + +void KAlgebra::loadScript(const QUrl& path) +{ + bool loaded=c_results->loadScript(path); + + if(loaded) + c_recentScripts->addUrl(path); +} + +void KAlgebra::saveScript() +{ + QUrl path = QFileDialog::getSaveFileUrl(this, QString(), QUrl(), i18n("Script (*.kal)")); + bool loaded=false; + if(!path.isEmpty()) + loaded=c_results->saveScript(path); + + if(loaded) + c_recentScripts->addUrl(path); +} + +void KAlgebra::saveLog() +{ + QUrl path = QFileDialog::getSaveFileUrl(this, QString(), QUrl(), i18n("HTML File (*.html)")); + if(!path.isEmpty()) + c_results->saveLog(path); +} + +void KAlgebra::insertAns() +{ + c_exp->insertText(QStringLiteral("ans")); +} + +void KAlgebra::set_res_low() { b_funcsModel->setResolution(416); } +void KAlgebra::set_res_std() { b_funcsModel->setResolution(832); } +void KAlgebra::set_res_fine() { b_funcsModel->setResolution(1664);} +void KAlgebra::set_res_vfine() { b_funcsModel->setResolution(3328);} + +void KAlgebra::new_func3d() +{ + Analitza::Expression exp = t_exp->expression(); + Analitza::PlotBuilder plot = Analitza::PlotsFactory::self()->requestPlot(exp, Analitza::Dim3D, c_results->analitza()->variables()); + if(plot.canDraw()) { + t_model3d->clear(); + t_model3d->addPlot(plot.create(Qt::yellow, QStringLiteral("func3d"))); + } else + changeStatusBar(i18n("Errors: %1", plot.errors().join(i18n(", ")))); +} + +void KAlgebra::set_dots() +{ + m_graph3d->setPlotStyle(Analitza::Dots); +} + +void KAlgebra::set_lines() +{ + m_graph3d->setPlotStyle(Analitza::Wired); +} + +void KAlgebra::set_solid() +{ + m_graph3d->setPlotStyle(Analitza::Solid); +} + +void KAlgebra::save3DGraph() +{ + QString path = QFileDialog::getSaveFileName(this, QString(), QString(), m_graph3d->filters().join(QStringLiteral(";;"))); + if(!path.isEmpty()) { + m_graph3d->save(QUrl::fromLocalFile(path)); + } +} + +void KAlgebra::toggleSquares() +{ + m_graph2d->setTicksShown(m_graph2d->ticksShown() ? (Qt::Horizontal|Qt::Vertical) : ~(Qt::Horizontal|Qt::Vertical)); +} + +void KAlgebra::toggleKeepAspect() +{ + m_graph2d->setKeepAspectRatio(!m_graph2d->keepAspectRatio()); +} + +void KAlgebra::saveGraph() +{ + QPointer dialog=new QFileDialog(this, i18n("Select where to put the rendered plot"), QString(), i18n("Image File (*.png);;SVG File (*.svg)")); + dialog->setOption(QFileDialog::DontConfirmOverwrite, false); + if(dialog->exec() && !dialog->selectedFiles().isEmpty()) { + QString filter = dialog->selectedNameFilter(); + QString filename = dialog->selectedFiles().first(); + + bool isSvg = filename.endsWith(QLatin1String(".svg")) || (!filename.endsWith(QLatin1String(".png")) && filter.mid(2, 3)==QLatin1String("svg")); + Analitza::PlotsView2D::Format f = isSvg ? Analitza::PlotsView2D::SVG : Analitza::PlotsView2D::PNG; + m_graph2d->toImage(filename, f); + } + delete dialog; +} + +void menuEnabledHelper(QMenu* m, bool enabled) +{ + m->setEnabled(enabled); + foreach(QAction* action, m->actions()) { + action->setEnabled(enabled); + } +} + +void KAlgebra::tabChanged(int n) +{ + c_dock_vars->hide(); + b_dock_funcs->hide(); + d_dock->hide(); + + menuEnabledHelper(c_menu, n==0); + menuEnabledHelper(b_menu, n==1); + menuEnabledHelper(t_menu, n==2); + + m_status->clear(); + + switch(n) { + case 0: + c_dock_vars->show(); + c_dock_vars->raise(); + c_exp->setFocus(); + break; + case 1: + b_dock_funcs->show(); + b_dock_funcs->raise(); + + if(b_funcsModel->rowCount()==0) + b_tools->setCurrentIndex(1); //We set the Add tab +// b_add->setFocus(); + break; + case 2: + t_exp->setFocus(); + break; + case 3: + d_filter->setFocus(); + d_dock->show(); + d_dock->raise(); + default: + break; + } + changeStatusBar(i18nc("@info:status", "Ready")); +} + +void KAlgebra::select(const QModelIndex & idx) +{ + b_funcs->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::ClearAndSelect); +} + +void KAlgebra::updateInformation() +{ + c_varsModel->updateInformation(); + c_variables->header()->resizeSections(QHeaderView::ResizeToContents); +} + +void KAlgebra::consoleCalculate() +{ + c_results->setMode(ConsoleModel::Calculation); +} + +void KAlgebra::consoleEvaluate() +{ + c_results->setMode(ConsoleModel::Evaluation); +} + +void KAlgebra::valueChanged() +{ + //FIXME: Should only repaint the affected ones. + if(b_funcsModel->rowCount()>0) + m_graph2d->updateFunctions(QModelIndex(), 0, b_funcsModel->rowCount()-1); +} + +void KAlgebra::varsContextMenu(const QPoint& p) +{ + QPointer m=new QMenu; + m->addAction(i18n("Add variable")); + QAction* ac=m->exec(b_dock_funcs->widget()->mapToGlobal(p)); + + if(ac) { + QPointer a=new AskName(i18n("Enter a name for the new variable"), 0); + + if(a->exec()==QDialog::Accepted) + b_varsModel->insertVariable(a->name(), Analitza::Expression(Analitza::Cn(0))); + delete a; + } + delete m; +} + +void KAlgebra::add3D(const Analitza::Expression& exp) +{ + t_model3d->clear(); + Analitza::PlotBuilder plot = Analitza::PlotsFactory::self()->requestPlot(exp, Analitza::Dim3D, c_results->analitza()->variables()); + Q_ASSERT(plot.canDraw()); + t_model3d->addPlot(plot.create(Qt::yellow, QStringLiteral("func3d_console"))); + m_tabs->setCurrentIndex(2); +} + +void KAlgebra::dictionaryFilterChanged(const QString&) +{ + if(d_list->model()->rowCount()==1) + d_list->setCurrentIndex(d_list->model()->index(0,0)); +} + +void KAlgebra::fullScreen(bool isFull) +{ + m_tabs->setDocumentMode(isFull); + m_tabs->setTabEnabled(3, !isFull); + if(isFull) { + hide(); + m_tabs->setParent(0); + setCentralWidget(0); + m_tabs->showFullScreen(); + } else { + setCentralWidget(m_tabs); + show(); + } +} diff --git a/src/kalgebra.h b/src/kalgebra.h new file mode 100644 index 0000000..01819fb --- /dev/null +++ b/src/kalgebra.h @@ -0,0 +1,130 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef KALGEBRA_H +#define KALGEBRA_H + +#include +#include +#include +#include +#include +#include + +namespace Analitza { +class PlotsView2D; +class PlotsView3DES; +class PlotsModel; +class VariablesModel; +class ExpressionEdit; +} + +class ConsoleHtml; +class FunctionEdit; +class KRecentFilesAction; + +namespace Analitza { class Expression; } + +class KAlgebra : public QMainWindow +{ + Q_OBJECT + public: + KAlgebra ( QWidget *parent=0 ); + ~KAlgebra(); + + void add2D(const Analitza::Expression& exp); + void add3D(const Analitza::Expression& exp); + private: + QLabel *m_status; + QTabWidget* m_tabs; + + //consoleeWidget + QMenu* c_menu; + KRecentFilesAction* c_recentScripts; + Analitza::ExpressionEdit *c_exp; + ConsoleHtml *c_results; + QTreeView *c_variables; + QDockWidget *c_dock_vars; + Analitza::VariablesModel* c_varsModel; + + //graf 2d + QMenu* b_menu; + Analitza::PlotsModel* b_funcsModel; + QTreeView *b_funcs; + QTabWidget *b_tools; + Analitza::PlotsView2D *m_graph2d; + QDockWidget *b_dock_funcs; + FunctionEdit *b_funced; + Analitza::VariablesModel* b_varsModel; + + //graph 3d + QMenu* t_menu; + Analitza::ExpressionEdit *t_exp; + Analitza::PlotsView3DES *m_graph3d; + Analitza::PlotsModel* t_model3d; + + //Dictionary + QDockWidget *d_dock; + QListView *d_list; + QLineEdit *d_filter; + + private Q_SLOTS: + void newInstance(); + void fullScreen(bool isFull); + + void initializeRecentScripts(); + void operate(); + void loadScript(); + void loadScript(const QUrl& path); + void saveScript(); + void saveLog(); + void updateInformation(); + void consoleCalculate(); + void consoleEvaluate(); + void insertAns(); + + void select(const QModelIndex& idx); + void new_func(); + void remove_func(); + void edit_func ( const QModelIndex & ); + void edit_var ( const QModelIndex & ); + void toggleSquares(); + void toggleKeepAspect(); + void set_res_low(); + void set_res_std(); + void set_res_fine(); + void set_res_vfine(); + void valueChanged(); + void varsContextMenu(const QPoint&); + + void new_func3d(); + void set_dots(); + void set_lines(); + void set_solid(); + void save3DGraph(); + + void saveGraph(); + void functools ( int ); + + void dictionaryFilterChanged(const QString& filter); + + void changeStatusBar ( const QString & ); + void tabChanged ( int ); +}; + +#endif diff --git a/src/kalgebra.xml b/src/kalgebra.xml new file mode 100644 index 0000000..d9b95c2 --- /dev/null +++ b/src/kalgebra.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + piecewise + list + vector + ? + + + + e + euler + false + pi + true + ans + + + + @ + abs + and + approx + arccos + arccosh + arccot + arcsc + arcsch + arcsec + arcsech + arcsin + arcsinh + arctan + arctanh + card + ceiling + cos + cosh + cot + coth + csc + csch + diff + divide + eq + exp + factorial + factorof + floor + fmod + gcd + geq + gt + implies + lcm + leq + ln + log + lt + max + min + minus + neq + not + or + plus + power + product + quotient + rem + root + scalarprod + sec + sech + selector + sin + sinh + sum em> + tan + tanh + times + union + xor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..de019b9 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,47 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include +#include +#include +#include +#include "kalgebra.h" +#include "kalgebra_version.h" + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + KLocalizedString::setApplicationDomain("kalgebra"); + KAboutData about(QStringLiteral("kalgebra"), QStringLiteral("KAlgebra"), QStringLiteral(KALGEBRA_VERSION_STRING), i18n("A portable calculator"), + KAboutLicense::GPL, i18n("(C) 2006-2016 Aleix Pol i Gonzalez")); + about.addAuthor( QStringLiteral("Aleix Pol i Gonzalez"), QString(), QStringLiteral("aleixpol@kde.org") ); + about.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails")); + KAboutData::setApplicationData(about); + + { + QCommandLineParser parser; + about.setupCommandLine(&parser); + parser.process(app); + about.processCommandLine(&parser); + } + + KAlgebra widget; + widget.show(); + + return app.exec(); +} diff --git a/src/org.kde.kalgebra.appdata.xml b/src/org.kde.kalgebra.appdata.xml new file mode 100644 index 0000000..d396f17 --- /dev/null +++ b/src/org.kde.kalgebra.appdata.xml @@ -0,0 +1,137 @@ + + + org.kde.kalgebra.desktop + CC0-1.0 + GPL-2.0+ + KAlgebra + Kalgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + KAlgebra + Kalgebra + KAlgebra + KAlgebra + xxKAlgebraxx + KAlgebra + 數學_KAlgebra + Graph Calculator + Graf kalkulator + Calculadora gràfica + Calculadora gràfica + Kalkulačka grafů + Graphenrechner + Graph Calculator + Calculadora gráfica + Graafide arvutaja + Graafinen laskin + Calculatrice graphique + Calculadora gráfica + Grafikus számológép + Kalkulator Grafik + Calcolatrice grafica + 그래핑 계산기 + Grafinis skaičiuotuvas + Funkschonenreekner + Rekenmachine met grafieken + Grafkalkulator + Kalkulator wykresów + Calculadora de Grafos + Calculadora gráfica + Калькулятор с функцией построения графиков + Grafická kalkulačka + Računalo z grafi + Grafräknare + Grafik Hesap Makinesi + Графічний калькулятор + xxGraph Calculatorxx + 图形计算器 + 圖形計算器 + +

    KAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D. KAlgebra is rooted in the Mathematical Markup Language (MathML); however, one does not need to know MathML to use KAlgebra.

    +

    KAlgebra és una aplicació que pot reemplaçar la vostra calculadora gràfica. Té capacitats numèriques, lògiques i d'anàlisi que us permetran calcular expressions matemàtiques en una consola i dibuixar una gràfica dels resultats en 2D o 3D. KAlgebra té les seves arrels en el Llenguatge de Marcat Matemàtic (MathML); tanmateix, no us caldrà tenir coneixements de MathML per emprar el KAlgebra.

    +

    KAlgebra és una aplicació que pot reemplaçar la vostra calculadora gràfica. Té capacitats numèriques, lògiques i d'anàlisi que vos permetran calcular expressions matemàtiques en una consola i dibuixar una gràfica dels resultats en 2D o 3D. KAlgebra té les seues arrels en el Llenguatge de Marcat Matemàtic (MathML); tanmateix, no vos caldrà tindre coneixements de MathML per emprar el KAlgebra.

    +

    KAlgebra ist eine Anwendung, die Ihren grafischen Taschenrechner ersetzt. KAlgebra hat numerische, logische, symbolische und analytische Fähigkeiten, mit denen Sie mathematische Ausdrücke in der Konsole auswerten und die Ergebnisse zwei- oder dreidimensional darstellen können. KAlgebra basiert auf der Sprache „Mathematical Markup Language“ (MathML), es sind jedoch keine Kenntnisse von MathML erforderlich, um KAlgebra erfolgreich einsetzen zu können.

    +

    KAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D. KAlgebra is rooted in the Mathematical Markup Language (MathML); however, one does not need to know MathML to use KAlgebra.

    +

    KAlgebra es una aplicación que puede sustituir su calculadora gráfica. Contiene funciones numéricas, lógicas, simbólicas y de análisis que le permiten calcular expresiones matemáticas en la consola y dibujar gráficamente su resultado en dos o tres dimensiones. KAlgebra se basa fuertemente en el «lenguaje de marcado matemático» (MathML); sin embargo, no es necesario saber MathML para usar KAlgebra.

    +

    KAlgebra on rakendus, mis võib asendada su senist graafikalkulaatorit Sel on arvulisi, loogilisi, sümbolilisi ja analüüsiomadusi, mis võimaldavad arvutada matemaatilisi avaldisi konsoolis ja lasta tulemusi kujutada graafiliselt nii tasapinnaliselt (2D) kui ka ruumiliselt (3D). KAlgebra juured on matemaatilises märkekeeles (MathML), kuid KAlgebra kasutamiseks ei ole MathML-i tundmine sugugi vajalik.

    +

    KAlgebralla voi korvata graafisen laskimen. Siinä on numeeriset, loogiset, symboliset ja analyysiominaisuudet, jotka tarvitaan matemaattisten lausekkeiden laskemiseen sekä tulosten piirtämiseen kaksi- tai kolmiulotteisesti. KAlgebra perustuu MathML:ään (Mathematical Markup Language), mutta sitä ei tarvitse osata käyttääkseen KAlgebraa.

    +

    KAlgebra est une application qui peut remplacer votre calculatrice graphique. Elle fournit des fonctions pour le calcul numérique, logique, symbolique et l'analyse qui vous permettent de calculer des expressions mathématiques dans la console et tracer graphiquement les résultats en 2D ou 3D. KAlgebra repose sur MathML, le langage de balise pour les mathématiques ; cependant, il n'est pas nécessaire de connaître MathML pour utiliser KAlgebra.

    +

    KAlgebra é unha aplicación que pode substituír as calculadoras gráficas. Ten funcionalidades numéricas, lóxicas, simbólicas e de análise que permiten calcular expresións matemáticas na consola e trazar graficamente os resultados en 2D ou 3D. KAlgebra ten o seu alicerce na linguaxe de etiquetas matemática (MathML); porén, non hai que saber nada do MathML para poder empregar KAlgebra.

    +

    A KAlgebra a grafikus számológépe helyébe léphet. Numerikus, logikai, szimbolikus és analízis képességei lehetővé teszik matematikai kifejezések kiértékelését a konzolon, majd grafikus ábrázolását 2D-ben vagy 3D-ben. A KAlgebra erősen épít a MathML matematikai leírónyelv használatára, ugyanakkor nem szükséges MathML ismeret a KAlgebra használatához.

    +

    KAlgebra adalah aplikasi yang dapat menggantikan kalkulator grafikmu. Ini memiliki fitur numerik, logis, simbolis, dan analisis yang memungkinkanmu menghitung ekspresi matematis pada konsol dan secara grafik memplot hasilnya dalam 2D atau 3D. KAlgebra berakar pada Mathematical Markup Language (MathML); namun, kita tidak perlu tahu MathML untuk menggunakan KAlgebra.

    +

    KAlgebra è un'applicazione che può sostituire la tua calcolatrice grafica. Ha funzionalità numeriche, logiche, simboliche e di analisi che ti permettono di calcolare espressioni matematiche sulla console e visualizzarne il grafico in 2D o 3D. KAlgebra si basa sul linguaggio a marcatori di matematica («Mathematical Markup Language», MathML); tuttavia, non è necessario conoscere MathML per usare KAlgebra.

    +

    KAlgebra kannst Du ansteed Dien Grafik-Taschenreekner bruken. Dat gifft numeersche, logische, symboolsche un Analysis-Funkschonen, mit de Du mathemaatsch Utdrück op de Konsool utreken un de Resultaten graafsch in 2- un 3-D utgeven kannst. KAlgebra buut op de Mathemaatsch Schriftsatzspraak („Mathematical Markup Language – MathML“); man Du kannst KAlgebra ok bruken, wenn Du nix vun MathML afweetst.

    +

    KAlgebra kan uw grafische rekenmachine vervangen. Het heeft numerieke, logische, symbolische en analytische functies waarmee u wiskundige uitdrukkingen kunt berekenen in de console, en de resultaten in 2D of 3D kunt plotten. KAlgebra is gebaseerd op de Mathematical Markup Language (MathML), maar kennis daarvan is niet nodig om KAlgebra te kunnen gebruiken.

    +

    KAlgebra jest programem, który może zastąpić twój kalkulator graficzny. Ma możliwość przeprowadzania analiz numerycznych, logicznych i symbolicznych, które umożliwiają obliczanie wyrażeń matematycznych w konsoli i rysowanie wyników w 2D lub 3D. KAlgebra jest zakorzeniona w Mathematical Markup Language (MathML); lecz nie trzeba znać MathML, aby używać KAlgebra.

    +

    O KAlgebra é uma aplicação que poderá substituir a sua calculadora gráfica. Ela tem funcionalidades numéricas, lógicas, simbólicas e de análise que lhe permitem calcular expressões matemáticas na consola e desenhar os resultados respectivos em 2D ou 3D. O KAlgebra baseia-se na Mathematical Markup Language (MathML); contudo, ninguém precisa de saber MathML para usar o KAlgebra.

    +

    KAlgebra é um aplicativo que pode substituir a sua calculadora gráfica. Ele tem funcionalidades numéricas, lógicas, simbólicas e analíticas que lhe permitem calcular expressões matemáticas no console e desenhar graficamente os resultados em 2D ou 3D. O KAlgebra é baseado na Mathematical Markup Language (MathML). Entretanto, não é preciso conhecer o MathML para usar o KAlgebra.

    +

    KAlgebra — программа-калькулятор с функцией построения графиков. Позволяет вычислять значения выражений и строить двумерные и трёхмерные графики функций. В основе KAlgebra лежит язык математической разметки MathML, однако его знания не требуется для использования программы.

    +

    KAlgebra je aplikácia, ktorá môže nahradiť vašu grafickú kalkulačku. Má numerické, logické, symbolické a analytické funkcie, ktoré vám umožnia vypočítať matematické výrazy na konzole a graficky zakresliť výsledky v 3D alebo 3D. KAlgebra je založená na jazyku MathML; avšak nemusíte poznať tento jazyk na používanie tohto programu.

    +

    KAlgebra je program, ki lahko zamenja vaše grafično računalo. Ima zmožnosti za obdelavo številk, logike, simbolov in omogoča izračun matematičnih izrazov v konzoli ter njihov izris v 2D ali 3D. KAlgebra temelji na Matematičnem označevalnem jeziku (MathML), vendar ga za uporabo KAlgebre ni potrebno poznati.

    +

    Kalgebra; är ett program som kan ersätta en grafisk miniräknare. Det har numeriska, logiska, symboliska och analytiska funktioner som gör det möjligt att beräkna matematiska uttryck i terminalen och rita upp resultatet grafiskt i två eller tre dimensioner. Kalgebra är grundat på det matematiska taggspråket (MathML), men man behöver dock inte känna till MathML för att använda Kalgebra.

    +

    KAlgebra, grafik hesap makinanızın yerine geçebilecek bir uygulamadır. Sayısal, mantıksal, sembolik ve analiz özellikleriyle, terminal üzerinden matematiksel ifadeleri hesaplayabilir ve sonuçları 2D veya 3D olarak olarak grafik olarak çizdirebilirsiniz. KAlgebra, Matematiksel İşaret Dili (MathML) üzerine inşa edilmiştir; ancak, KAlgebra kullanmak için MathML bilmek zorunda değilsiniz.

    +

    KAlgebra; — програма, яка може замінити вам калькулятор з можливістю побудови графіків У програмі передбачено числові, логічні, символічні та аналітичні можливості, за допомогою яких ви зможете виконувати обчислення за формулами у консолі або будувати результати у форматі плоских кривих або просторових графіків. KAlgebra засновано на мові математичної розмітки (Mathematical Markup Language і MathML). Втім, для користування KAlgebra знати MathML не потрібно.

    +

    xxKAlgebra is an application that can replace your graphing calculator. It has numerical, logical, symbolic, and analysis features that let you calculate mathematical expressions on the console and graphically plot the results in 2D or 3D. KAlgebra is rooted in the Mathematical Markup Language (MathML); however, one does not need to know MathML to use KAlgebra.xx

    +

    KAlgebra 是一个可以替代您的图形计算器的应用程序。它具有数字、逻辑、符号和分析功能,可让您在控制台上计算数学表达式,并将结果绘制成 2D 或 3D 图形。 KAlgebra 基于数学标记语言(MathML);但是,人们并不需要知道 MathML 就可以使用 KAlgebra。

    +

    KAlgebra 是一套可以取代您的圖形計算器的應用程式。它有數值、邏輯、符號與分析等功能,讓您計算您的數學式,並繪出平面或立體的圖形。KAlgebra 是基於 Mathematical Markup Language (MathML)。不過即使您不知道 MathML 也可以使用 KAlgebra。

    +
    + http://edu.kde.org/kalgebra/ + https://bugs.kde.org/enter_bug.cgi?format=guided&product=kalgebra + http://docs.kde.org/stable/en/kdeedu/kalgebra/index.html + https://www.kde.org/community/donations/?app=kalgebra&source=appdata + + + 2D plot in KAlgebra + Gràfic 2D al KAlgebra + Gràfic 2D al KAlgebra + 2D graf v KAlgebra + 2D plot in KAlgebra + Gráfico 2D en KAlgebra + Graphique en 2 dimensions sur KAlgebra + Gráfica 2D en KAlgebra + Plot 2D di KAlgebra + Grafico 2D in KAlgebra + 2D plot in KAlgebra + Wykres 2D w KAlgebra + Gráfico 2D no KAlgebra + Gráfico 2D no KAlgebra + 2D graf v KAlgebre + Tvådimensionellt diagram i Kalgebra + Графік у KAlgebra + xx2D plot in KAlgebraxx + KAlgebra 中的 2D 绘图 + KAlgebra 中 2D 繪圖 + https://cdn.kde.org/screenshots/kalgebra/kalgebra.png + + + KDE + + kalgebra + + + + + +
    diff --git a/src/org.kde.kalgebra.desktop b/src/org.kde.kalgebra.desktop new file mode 100755 index 0000000..5199bbe --- /dev/null +++ b/src/org.kde.kalgebra.desktop @@ -0,0 +1,174 @@ +[Desktop Entry] +Name=KAlgebra +Name[bg]=KAlgebra +Name[bs]=Kalgebra +Name[ca]=KAlgebra +Name[ca@valencia]=KAlgebra +Name[cs]=KAlgebra +Name[csb]=KAlgebra +Name[da]=KAlgebra +Name[de]=KAlgebra +Name[el]=KAlgebra +Name[en_GB]=KAlgebra +Name[eo]=KAlgebra +Name[es]=KAlgebra +Name[et]=KAlgebra +Name[eu]=KAlgebra +Name[fa]=KAlgebra +Name[fi]=KAlgebra +Name[fr]=KAlgebra +Name[ga]=KAlgebra +Name[gl]=KAlgebra +Name[gu]=KAlgebra +Name[he]=KAlgebra +Name[hi]=के-अलजेब्रा +Name[hne]=के-अलजेब्रा +Name[hr]=KAlgebra +Name[hu]=KAlgebra +Name[is]=KAlgebra +Name[it]=KAlgebra +Name[ja]=KAlgebra +Name[kk]=KAlgebra +Name[km]=KAlgebra +Name[ko]=KAlgebra +Name[lt]=KAlgebra +Name[lv]=KAlgebra +Name[ml]=കെ-ആള്‍ജിബ്ര +Name[mr]=के-एल्जिब्रा +Name[nb]=KAlgebra +Name[nds]=KAlgebra +Name[ne]=केडीई बीजगणित +Name[nl]=KAlgebra +Name[nn]=KAlgebra +Name[pa]=ਕੇ-ਐਲਜਬਰਾ +Name[pl]=KAlgebra +Name[pt]=KAlgebra +Name[pt_BR]=KAlgebra +Name[ro]=KAlgebra +Name[ru]=KAlgebra +Name[si]=KAlgebra +Name[sk]=KAlgebra +Name[sl]=KAlgebra +Name[sv]=Kalgebra +Name[te]=కె అల్జీబ్రా +Name[tr]=KAlgebra +Name[ug]=KAlgebra +Name[uk]=KАлгебра +Name[x-test]=xxKAlgebraxx +Name[zh_CN]=KAlgebra +Name[zh_TW]=數學_KAlgebra +GenericName=Graph Calculator +GenericName[bg]=Графичен калкулатор +GenericName[bs]=Graf kalkulator +GenericName[ca]=Calculadora gràfica +GenericName[ca@valencia]=Calculadora gràfica +GenericName[cs]=Kalkulačka grafů +GenericName[csb]=Kalkùlator +GenericName[da]=Diagramberegner +GenericName[de]=Graphenrechner +GenericName[el]=Γραφικός υπολογιστής +GenericName[en_GB]=Graph Calculator +GenericName[eo]=Kalkulilo de grafikaĵoj +GenericName[es]=Calculadora gráfica +GenericName[et]=Graafikute arvutaja +GenericName[eu]=Grafikoen kalkulagailua +GenericName[fa]=ماشین حساب گراف +GenericName[fi]=Graafinen laskin +GenericName[fr]=Calculatrice graphique +GenericName[ga]=Áireamhán Grafach +GenericName[gl]=Calculadora gráfica +GenericName[gu]=આલેખ કેલ્ક્યુલેટર +GenericName[he]=מחשבון גרפי +GenericName[hi]=ग्राफ गणक +GenericName[hne]=ग्राफ गनक +GenericName[hu]=Függvényszámító +GenericName[is]=Reiknivél fyrir gröf +GenericName[it]=Calcolatrice grafica +GenericName[ja]=グラフ計算機 +GenericName[kk]=График калькуляторы +GenericName[km]=ម៉ាស៊ីន​គិតលេខ​ក្រាហ្វិក​ +GenericName[ko]=그래핑 계산기 +GenericName[lt]=Grafinis skaičiuotuvas +GenericName[lv]=Grafiskais kalkulators +GenericName[ml]=ഗ്രാഫ് ഗണനി +GenericName[mr]=आलेख गणकयंत्र +GenericName[nb]=Grafikk-kalkulator +GenericName[nds]=Funkschonenreekner +GenericName[ne]=ग्राफ गणकयन्त्र +GenericName[nl]=Rekenmachine met grafieken +GenericName[nn]=Ein grafkalkulator +GenericName[pa]=ਗਰਾਫ਼ ਕੈਲਕੂਲੇਟਰ +GenericName[pl]=Kalkulator wykresów +GenericName[pt]=Calculadora Gráfica +GenericName[pt_BR]=Calculadora gráfica +GenericName[ru]=Графический калькулятор +GenericName[sk]=Grafická kalkulačka +GenericName[sl]=Računalo z grafi +GenericName[sv]=Grafräknare +GenericName[te]=రేఖాచిత్ర గనన యంత్రము +GenericName[tr]=Grafik Hesap Makinesi +GenericName[uk]=Графічний калькулятор +GenericName[x-test]=xxGraph Calculatorxx +GenericName[zh_CN]=图形计算器 +GenericName[zh_TW]=圖形計算器 +Comment=Math Expression Solver and Plotter +Comment[bg]=Решаване на математически задачи +Comment[bs]=Matematski Sistem za rješavanje i crtač +Comment[ca]=Soluciona i representa gràficament expressions matemàtiques +Comment[ca@valencia]=Soluciona i representa gràficament expressions matemàtiques +Comment[cs]=Řešitel a souřadnicový zapisovač matematických výrazů +Comment[csb]=Rozrzeszëwôcz matematicznëch równaniów ë rësowôcz grafów +Comment[da]=Løser og plotter til matematiske udtryk +Comment[de]=Mathematische Gleichungslösung und -zeichnung +Comment[el]=Σχεδιαστής και επιλυτής μαθηματικών εκφράσεων +Comment[en_GB]=Mathematical Expression Solver and Plotter +Comment[eo]=Solvilo kaj desegnilo de matematikaj esprimoj +Comment[es]=Resuelve y dibuja expresiones matemáticas +Comment[et]=Matemaatiliste avaldiste lahendaja ja joonistaja +Comment[eu]=Matematika adierazpenen ebazlea edo marrazlea +Comment[fa]=حل‌کننده عبارت ریاضی و رسام +Comment[fi]=Matemaattisten yhtälöiden ratkaisut ja kuvaajat +Comment[fr]=Traceur et résolveur d'expressions mathématiques +Comment[ga]=Réiteoir agus Breacaire Sloinn Mhatamaiticiúla +Comment[gl]=Ferramenta para resolver e debuxar expresións matemáticas +Comment[gu]=ગાણિતિક સૂત્રો ઉકેલનાર અને આલેખનાર +Comment[he]=פותר ומשרטט ביטויים מתמטיים +Comment[hi]=गणित एक्सप्रेशन सुलझाने वाला तथा प्लॉटर +Comment[hne]=गनित एक्सप्रेसन सुलझाने वाला अउ प्लाटर +Comment[hr]=Rješavač i crtač za matematičke izraze +Comment[hu]=Matematikai egyenletek megoldása, görberajzolás +Comment[is]=Stærðfræðilausnir og plottun +Comment[it]=Risolutore e disegnatore di espressioni matematiche +Comment[ja]=数式ソルバー&プロッタ +Comment[kk]=Математикалық өрнегін есептеп графигін салу +Comment[km]=ឧបករណ៍​គូស​ក្រាហ្វិក និង​កម្មវិធី​ដោះស្រាយ​កន្សោម​​​គណិត +Comment[ko]=수식 계산기와 그래핑 도구 +Comment[lt]=Matematinių reiškinių sprendikas ir grafikų braižiklis +Comment[lv]=Matemātisko izteiksmju risinātājs un attēlotājs +Comment[ml]=ഗണിതസൂത്ര പരിഹാരകനും പ്ലോട്ടറും +Comment[nb]=Matematisk uttrykksløser og plotter +Comment[nds]=Löser för mathemaatsche Utdrück un Bagenschriever +Comment[ne]=म्याथ अभिव्यक्ति समाधानकर्ता र प्लोटर +Comment[nl]=Oplossen en plotten van wiskundige expressies +Comment[nn]=Matteoppgåveløysar og grafplottar +Comment[pl]=Rozwiązywanie równań i rysowanie wykresów +Comment[pt]=Resolução e Desenho de Expressões Matemáticas +Comment[pt_BR]=Solucionador e visualizador de expressões matemáticas +Comment[ru]=Решение и построение графиков математических выражений +Comment[sk]=Riešiteľ a zapisovač matematických výrazov +Comment[sl]=Reševalnik matematičnih enačb in risalnik grafov +Comment[sv]=Lösning och uppritning av matematiska uttryck +Comment[tr]=Matematiksel İfade Çözücü ve Çizici +Comment[ug]=ماتېماتىكىلىق ئىپادىلەرنى يېشىش ۋە سىزىش قورالى +Comment[uk]=Розв’язувач математичних виразів та графопобудовник +Comment[x-test]=xxMath Expression Solver and Plotterxx +Comment[zh_CN]=解数学式与绘图的工具 +Comment[zh_TW]=數學解題與繪圖 +Exec=kalgebra %u +MimeType=application/x-kalgebra; +Icon=kalgebra +Type=Application +X-DocPath=kalgebra/index.html +Terminal=false +Categories=Qt;KDE;Education;Math;Science; +X-DBUS-ServiceName=org.kde.kalgebra diff --git a/src/varedit.cpp b/src/varedit.cpp new file mode 100644 index 0000000..1b754db --- /dev/null +++ b/src/varedit.cpp @@ -0,0 +1,132 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "varedit.h" +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +VarEdit::VarEdit(QWidget *parent, bool modal) + : QDialog(parent), vars(nullptr), m_correct(false) +{ + setWindowTitle(i18n("Add/Edit a variable")); + setModal(modal); + + m_buttonBox = new QDialogButtonBox(this); + m_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + m_removeBtn = m_buttonBox->addButton(i18n("Remove Variable"), QDialogButtonBox::DestructiveRole); + m_removeBtn->setIcon(QIcon::fromTheme(QStringLiteral("edit-table-delete-row"))); + + connect(m_removeBtn, &QAbstractButton::clicked, this, &VarEdit::removeVariable); + + connect( m_buttonBox, &QDialogButtonBox::accepted, this, &VarEdit::accept ); + connect( m_buttonBox, &QDialogButtonBox::rejected, this, &VarEdit::reject ); + + m_exp = new Analitza::ExpressionEdit(this); + connect(m_exp, &QPlainTextEdit::textChanged, this, &VarEdit::edit); + connect(m_exp, &Analitza::ExpressionEdit::returnPressed, this, &VarEdit::ok); + + m_valid = new QLabel(this); + + QVBoxLayout *topLayout = new QVBoxLayout(this); + topLayout->addWidget(m_exp); + topLayout->addWidget(m_valid); + topLayout->addWidget(m_buttonBox); + + m_exp->setFocus(); +} + +void VarEdit::setName(const QString& newVar) +{ + m_var=newVar; + setWindowTitle(i18n("Edit '%1' value", newVar)); + if(!vars) + m_exp->setText(i18n("not available")); + else { + m_exp->setExpression(Analitza::Expression(vars->value(newVar)->copy())); + } + m_removeBtn->setEnabled(vars && canRemove(newVar)); +} + +bool VarEdit::canRemove(const QString& name) const +{ + QHash::const_iterator it = vars->constBegin(), itEnd = vars->constEnd(); + for(; it!=itEnd; ++it) { + QStringList deps = AnalitzaUtils::dependencies(*it, QStringList()); + if(deps.contains(name)) { + return false; + } + } + return true; +} + +Analitza::Expression VarEdit::val() +{ + Analitza::Expression val; + Analitza::Analyzer a(vars); + + a.setExpression(m_exp->expression()); + + if(a.isCorrect()) { + a.simplify(); + val=a.expression(); + } + + m_correct = a.isCorrect(); + if(m_correct) { + m_valid->setText(i18n("%1 := %2", m_var, val.toString())); + m_valid->setToolTip(QString()); + } else { + m_valid->setText(i18n("WRONG")); + m_valid->setToolTip(a.errors().join(QStringLiteral("\n"))); + } + m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(m_correct); + m_exp->setCorrect(m_correct); + + return val; +} + +void VarEdit::edit() +{ + val(); +} + +void VarEdit::ok() +{ + if(m_correct) + accept(); +} + +void VarEdit::setAnalitza(Analitza::Analyzer * na) +{ + vars= na->variables(); + m_exp->setAnalitza(na); +} + +void VarEdit::removeVariable() +{ + vars->remove(m_var); + close(); +} diff --git a/src/varedit.h b/src/varedit.h new file mode 100644 index 0000000..113c370 --- /dev/null +++ b/src/varedit.h @@ -0,0 +1,73 @@ +/************************************************************************************* + * Copyright (C) 2007 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef VAREDIT_H +#define VAREDIT_H + +#include +#include + +class QDialogButtonBox; +namespace Analitza +{ +class Analyzer; +class Variables; +class Expression; +class ExpressionEdit; +} + +/** + * The VarEdit provides a dialog to allow users to edit/create a variable. + * @author Aleix Pol i Gonzalez + */ + +class VarEdit : public QDialog +{ + Q_OBJECT + public: + /** Constructor. Creates a variable editing dialog. */ + explicit VarEdit(QWidget *parent = 0, bool modal = false); + + /** Sets the editing variable name */ + void setName(const QString& newVar); + + /** Sets an Analitza which will evaluate it. It may be interesting because variables can change. */ + void setAnalitza(Analitza::Analyzer *na); + + /** Returns the resulting variable expression */ + Analitza::Expression val(); + + private: + bool canRemove(const QString& name) const; + + Analitza::ExpressionEdit *m_exp; + + QLabel *m_valid; + QSharedPointer vars; + bool m_correct; + QString m_var; + QDialogButtonBox* m_buttonBox; + QPushButton* m_removeBtn; + + private Q_SLOTS: + void edit(); + void ok(); + void removeVariable(); +}; + +#endif diff --git a/src/variablesdelegate.cpp b/src/variablesdelegate.cpp new file mode 100644 index 0000000..3173878 --- /dev/null +++ b/src/variablesdelegate.cpp @@ -0,0 +1,41 @@ +/************************************************************************************* + * Copyright (C) 2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "variablesdelegate.h" + +#include + +QWidget* VariablesDelegate::createEditor(QWidget* p, const QStyleOptionViewItem& opt, const QModelIndex& idx) const +{ + QVariant val=idx.model()->data(idx); + if(val.type()==QVariant::Double) { + QDoubleSpinBox* spin=new QDoubleSpinBox(p); + spin->setDecimals(10); + return spin; + } else + return QItemDelegate::createEditor(p, opt, idx); +} + +void VariablesDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const +{ + QDoubleSpinBox* spin=qobject_cast(editor); + if(spin) + spin->setValue(index.model()->data(index).value()); + else + QItemDelegate::setEditorData(editor, index); +} diff --git a/src/variablesdelegate.h b/src/variablesdelegate.h new file mode 100644 index 0000000..fb6fbb5 --- /dev/null +++ b/src/variablesdelegate.h @@ -0,0 +1,32 @@ +/************************************************************************************* + * Copyright (C) 2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef VARIABLESDELEGATE_H +#define VARIABLESDELEGATE_H + +#include + +class VariablesDelegate : public QItemDelegate +{ + public: + VariablesDelegate(QObject* parent=0) : QItemDelegate(parent) {} + QWidget* createEditor (QWidget*, const QStyleOptionViewItem&, const QModelIndex&) const Q_DECL_OVERRIDE; + void setEditorData(QWidget* editor, const QModelIndex& index) const Q_DECL_OVERRIDE; +}; + +#endif // VARIABLESDELEGATE_H diff --git a/src/viewportwidget.cpp b/src/viewportwidget.cpp new file mode 100644 index 0000000..9ef317a --- /dev/null +++ b/src/viewportwidget.cpp @@ -0,0 +1,76 @@ +/************************************************************************************* + * Copyright (C) 2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include "viewportwidget.h" + +#include +#include +#include +#include +#include + +ViewportWidget::ViewportWidget(QWidget * parent) + : QWidget (parent) +{ + m_top=new QDoubleSpinBox(this); + m_left=new QDoubleSpinBox(this); + m_width=new QDoubleSpinBox(this); + m_height=new QDoubleSpinBox(this); + +// const double LIMIT=std::numeric_limits::max(); + //Can't use limit, because otherwise Qt uses the value for the sizeHint and + //we get a huge window + const double LIMIT=5000; + m_top->setRange(-LIMIT, LIMIT); + m_left->setRange(-LIMIT, LIMIT); + m_width->setRange(0, LIMIT); + m_height->setRange(0, LIMIT); + + QVBoxLayout* upperLayout=new QVBoxLayout; + QFormLayout* layout=new QFormLayout; + layout->addRow(i18n("Left:"), m_left); + layout->addRow(i18n("Top:"), m_top); + layout->addRow(i18n("Width:"), m_width); + layout->addRow(i18n("Height:"), m_height); + + QPushButton *apply=new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok-apply")), i18n("Apply"), this); + connect(apply, &QAbstractButton::clicked, this, &ViewportWidget::emitViewport); + + upperLayout->addLayout(layout); + upperLayout->addWidget(apply); + setLayout(upperLayout); +} + +QRectF ViewportWidget::viewport() const +{ + return QRectF(m_left->value(), m_top->value(), + m_width->value(), -m_height->value()); +} + +void ViewportWidget::setViewport(const QRectF& current) +{ + m_top->setValue(current.top()); + m_left->setValue(current.left()); + m_width->setValue(current.width()); + m_height->setValue(-current.height()); +} + +void ViewportWidget::emitViewport () +{ + emit viewportChange(viewport()); +} diff --git a/src/viewportwidget.h b/src/viewportwidget.h new file mode 100644 index 0000000..b66a80f --- /dev/null +++ b/src/viewportwidget.h @@ -0,0 +1,49 @@ +/************************************************************************************* + * Copyright (C) 2009 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#ifndef VIEWPORTWIDGET_H +#define VIEWPORTWIDGET_H + +#include +class QDoubleSpinBox; + +class ViewportWidget : public QWidget +{ + Q_OBJECT + public: + explicit ViewportWidget(QWidget * parent = 0); + + QRectF viewport() const; + + public Q_SLOTS: + void setViewport(const QRectF& current); + + private Q_SLOTS: + void emitViewport(); + + Q_SIGNALS: + void viewportChange(const QRectF& newViewport); + + private: + QDoubleSpinBox* m_left; + QDoubleSpinBox* m_top; + QDoubleSpinBox* m_width; + QDoubleSpinBox* m_height; +}; + +#endif // VIEWPORTDIALOG_H diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 0000000..36236e4 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,2 @@ +add_executable(docbook_analitzacommands main.cpp) +target_link_libraries(docbook_analitzacommands KF5::AnalitzaGui Qt5::Widgets Qt5::Core) diff --git a/utils/main.cpp b/utils/main.cpp new file mode 100644 index 0000000..2c05397 --- /dev/null +++ b/utils/main.cpp @@ -0,0 +1,59 @@ +/************************************************************************************* + * Copyright (C) 2010 by Aleix Pol * + * * + * 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 * + *************************************************************************************/ + +#include +#include +#include +#include +#include + +int main(int argc, char** argv) +{ + QApplication app(argc, argv); + OperatorsModel m; + + QFile f(app.arguments().constLast()); + bool fileopened = f.open(QFile::WriteOnly); + Q_ASSERT(fileopened); + + QTextStream str(&f); + str.setCodec("UTF-8"); + + str << ""; + str << "\n" + "Commands supported by KAlgebra\n"; + + int rows = m.rowCount(), cols = m.columnCount(); + QStringList colHeaders; + for(int i=0; i" << id << "\n"; + for(int c=0; c%1: %2").arg(colHeaders[c], m.index(i,c).data().toString().toHtmlEscaped()) << '\n'; + + str << "\t\n"; + } + str << "\n"; + + return 0; +} -- 2.30.2