12 Commits

Author SHA1 Message Date
64da9e9327 fixed language settings 2024-12-05 14:53:20 +03:00
b7b7c054d3 fixed loading system locale from wrong place 2024-12-05 13:58:23 +03:00
c478dcf8d4 embeding translations into qrc 2024-12-05 03:48:20 +03:00
7959bc5492 added language combo box in preferences 2024-12-04 18:44:40 +03:00
031c1d5792 translations 2024-12-04 04:35:51 +03:00
cca20abbfd pretty-printing settings.json 2024-12-04 04:05:02 +03:00
988dc0e133 upload icons 2024-12-04 01:08:08 +03:00
888f658a9c added icon 2024-12-04 01:07:48 +03:00
17a03606c5 fixed wrong setting 2024-12-03 15:24:21 +03:00
83351698d6 readme & todo updated 2024-12-03 15:02:54 +03:00
2c99f422d3 appimage deployment 2024-12-03 03:45:58 +03:00
41463c7f87 packing ocr data and handling escape on chose files 2024-12-02 14:12:03 +03:00
24 changed files with 779 additions and 420 deletions

3
.gitignore vendored
View File

@@ -35,6 +35,8 @@ Thumbs.db
/.qmake.cache /.qmake.cache
/.qmake.stash /.qmake.stash
*.qrc.depends
# qtcreator generated files # qtcreator generated files
*.pro.user* *.pro.user*
CMakeLists.txt.user* CMakeLists.txt.user*
@@ -120,3 +122,4 @@ checks-parser_autogen
checks-parser checks-parser
deploy/appimage/AppDir/usr/share/doc/ deploy/appimage/AppDir/usr/share/doc/
deploy/appimage/AppDir/usr/share/

View File

@@ -55,6 +55,7 @@ else()
# Generate translation files for Qt 5 # Generate translation files for Qt 5
# QT5_ADD_TRANSLATION() # QT5_ADD_TRANSLATION()
qt5_create_translation(QM_FILES "${TRANSLATION_SOURCES}" translations/en_US.ts translations/ru_RU.ts) qt5_create_translation(QM_FILES "${TRANSLATION_SOURCES}" translations/en_US.ts translations/ru_RU.ts)
qt5_add_resources(TRANSLATIONQRC translations.qrc)
add_executable(checks-parser add_executable(checks-parser
${PROJECT_SOURCES} ${PROJECT_SOURCES}
goods/goods.h goods/goods.cpp goods/goods.h goods/goods.cpp
@@ -74,11 +75,11 @@ else()
image_redactor/imageredactor.h image_redactor/imageredactor.cpp image_redactor/imageredactor.h image_redactor/imageredactor.cpp
solvecaptchadialog.h solvecaptchadialog.cpp solvecaptchadialog.ui solvecaptchadialog.h solvecaptchadialog.cpp solvecaptchadialog.ui
exceptions/ofdrequestexception.h exceptions/ofdrequestexception.cpp exceptions/ofdrequestexception.h exceptions/ofdrequestexception.cpp
${QM_FILES} # ${QM_FILES}
# ${TS_FILES}
translations.qrc
${TRANSLATIONQRC}
) )
# configure_file(translations.qrc ${CMAKE_BINARY_DIR} COPYONLY) # configure_file(translations.qrc ${CMAKE_BINARY_DIR} COPYONLY)
# QT5_ADD_TRANSLATION(TRANSLATIONS ${CMAKE_SOURCE_DIR} translations/en_US.ts) # QT5_ADD_TRANSLATION(TRANSLATIONS ${CMAKE_SOURCE_DIR} translations/en_US.ts)
endif() endif()

View File

@@ -30,7 +30,7 @@ In general, you need to install following dependencies in order to build that ap
Please, do not hesitate to open an issue if you cannot build that. I will help and if you are building on a distro that is not listed there, we can append that list as soon as we will solve your problem! Please, do not hesitate to open an issue if you cannot build that. I will help and if you are building on a distro that is not listed there, we can append that list as soon as we will solve your problem!
### Linux ### Linux
##### Arch Linux ##### Arch Linux-based
I recommend using aur helper (I use yay) to install dependencies. Or, if you're masochist, you can build all by yourself /shrug I recommend using aur helper (I use yay) to install dependencies. Or, if you're masochist, you can build all by yourself /shrug
``` ```
#Install dependencies #Install dependencies
@@ -38,16 +38,31 @@ yay -S sudo cmake git coreutils base-devel eigen qt5-base mbedtls gtkglext openc
#Clone and compile an app #Clone and compile an app
git clone https://git.foxarmy.org/leca/checks-parser git clone https://git.foxarmy.org/leca/checks-parser
cd checks-parser cd checks-parser
mkdir build cmake .
cd build
cmake ..
make -j{nproc} make -j{nproc}
#If you wish to install that program system-wide, run #If you wish to install that program system-wide, run
sudo make install sudo make install
``` ```
##### Debian ##### Debian-based
apt install -y qtbase5-dev openssl libmbedtls-dev tesseract-ocr tesseract-ocr-rus libopencv-dev libzbar-dev qttools5-dev nlohmann-json-dev libcurl4-openssl-dev libtesseract-dev In debian-based distributions most, but not every, package names are the same.
TODO
Installation of dependencies for different debian-based distros:
###### Ubuntu 18.04
```apt install -y qtbase5-dev openssl libmbedtls-dev tesseract-ocr tesseract-ocr-rus libopencv-dev libzbar-dev qttools5-dev nlohmann-json-dev libcurl4-openssl-dev libtesseract-dev```
###### Ubuntu 20.04, LMDE (tested only 6), Debian (tested only 12)
```apt install -y qtbase5-dev openssl libmbedtls-dev tesseract-ocr tesseract-ocr-rus libopencv-dev libzbar-dev qttools5-dev nlohmann-json3-dev libcurl4-openssl-dev libtesseract-dev```
Next steps are identical for every debian-based distro
```
#Clone and compile an app
git clone https://git.foxarmy.org/leca/checks-parser
cd checks-parser
cmake .
make -j{nproc}
#If you wish to install that program system-wide, run
sudo make install
```
### Windows ### Windows
Maybe Maybe
### Mac OS ### Mac OS

4
TODO
View File

@@ -26,5 +26,5 @@ Build:
Issues: Issues:
Captcha is not showing when running in appimage [solved] Captcha is not showing when running in appimage [solved]
Stores modules are not being downloaded Stores modules are not being downloaded
I need to pack tesseract data for ru, en I need to pack tesseract data for ru, en [solved]

View File

@@ -1 +0,0 @@
checks-parser.png

View File

@@ -1 +0,0 @@
usr/bin/checks-parser

4
deploy/appimage/AppDir/AppRun Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
export TESSDATA_PREFIX=$APPDIR/usr/share/tesseract-ocr/4.00/tessdata
$APPDIR/usr/bin/checks-parser

View File

@@ -4,4 +4,3 @@ Exec=usr/bin/checks-parser
Icon=checks-parser Icon=checks-parser
Type=Application Type=Application
Categories=Utility; Categories=Utility;
X-AppImage-Version=7c021c9

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@@ -1,7 +0,0 @@
# Generated by linuxdeployqt
# https://github.com/probonopd/linuxdeployqt/
[Paths]
Prefix = ../
Plugins = plugins
Imports = qml
Qml2Imports = qml

View File

@@ -1,7 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
rm -rf AppDir
mkdir -p AppDir
mkdir -p AppDir/usr/bin mkdir -p AppDir/usr/bin
mkdir -p AppDir/usr/lib mkdir -p AppDir/usr/lib
mkdir -p AppDir/usr/share/tesseract-ocr/4.00/tessdata
cp -r /usr/share/tesseract-ocr/4.00/tessdata/* AppDir/usr/share/tesseract-ocr/4.00/tessdata
cp ../../checks-parser AppDir/usr/bin cp ../../checks-parser AppDir/usr/bin
echo \ echo \
"[Desktop Entry] "[Desktop Entry]
Name=Checks parser Name=Checks parser
@@ -11,4 +17,15 @@ Type=Application
Categories=Utility;" \ Categories=Utility;" \
> AppDir/checks-parser.desktop > AppDir/checks-parser.desktop
echo \
"#!/bin/bash
export TESSDATA_PREFIX=\$APPDIR/usr/share/tesseract-ocr/4.00/tessdata
\$APPDIR/usr/bin/checks-parser" \
> AppDir/AppRun
cp ../../icon.png AppDir/checks-parser.png
chmod +x AppDir/AppRun
cp ../../checks-parser AppDir/usr/bin
linuxdeployqt AppDir/usr/bin/checks-parser -no-copy-copyright-files -appimage linuxdeployqt AppDir/usr/bin/checks-parser -no-copy-copyright-files -appimage

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

116
icon.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 649 KiB

View File

@@ -1 +0,0 @@
2024/12/02 13:01:47 Micro started

View File

@@ -12,6 +12,8 @@
# include <filesystem> # include <filesystem>
using namespace std::filesystem; using namespace std::filesystem;
#endif #endif
#include <QFile>
#include <QTextStream>
#include <QTranslator> #include <QTranslator>
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
@@ -43,9 +45,17 @@ int main(int argc, char *argv[]) {
QApplication a(argc, argv); QApplication a(argc, argv);
QTranslator translator; QTranslator translator;
if(!translator.load(QLocale::system().name())) { QString lang = "en_US";
translator.load("en_US");
if (s.get_all_settings().contains("language")) {
lang = QString::fromStdString(s.get_all_settings()["language"]);
} else if (translator.load(":/translation/"+QLocale::system().name()+".qm")) {
lang = QLocale::system().name();
} else {
lang = QString::fromStdString("en_US");
} }
translator.load(":/translation/" + lang + ".qm");
a.installTranslator(&translator); a.installTranslator(&translator);
MainWindow w; MainWindow w;
w.update(); w.update();

View File

@@ -112,7 +112,11 @@ void MainWindow::on_parseButton_clicked() {
std::vector<Goods> c = parser.parse(check_plaintext); std::vector<Goods> c = parser.parse(check_plaintext);
if (c.size() == 0) { if (c.size() == 0) {
std::cerr << "An error has occured. Check was matched incorrectly. Vector sizes are different" << std::endl; QMessageBox infoDialog;
infoDialog.setText(tr("An error has occured. Check was matched incorrectly. Vector sizes are different. Please, contact the developer."));
infoDialog.setIcon(QMessageBox::Critical);
infoDialog.setWindowTitle(tr("Error in parsing"));
infoDialog.exec();
return; return;
} }
@@ -140,6 +144,15 @@ void MainWindow::on_preferencesButton_clicked() {
void MainWindow::on_chooseImageButton_ofd_clicked() { void MainWindow::on_chooseImageButton_ofd_clicked() {
QString filename = QFileDialog::getOpenFileName(); QString filename = QFileDialog::getOpenFileName();
if (filename == "") {
QMessageBox infoDialog;
infoDialog.setText(tr("Please, select a picture where QR code that contains info about check is present"));
infoDialog.setIcon(QMessageBox::Critical);
infoDialog.setWindowTitle(tr("Picture was not selected"));
infoDialog.exec();
return;
}
std::string new_text = "Selected: " + filename.toStdString(); std::string new_text = "Selected: " + filename.toStdString();
ui->pathLabel_ofd->setText(QString::fromStdString(new_text)); ui->pathLabel_ofd->setText(QString::fromStdString(new_text));
@@ -177,6 +190,15 @@ void MainWindow::on_chooseImageButton_ocr_clicked()
{ {
QString filename = QFileDialog::getOpenFileName(); QString filename = QFileDialog::getOpenFileName();
if (filename == "") {
QMessageBox infoDialog;
infoDialog.setText(tr("Please, select a picture to scan"));
infoDialog.setIcon(QMessageBox::Critical);
infoDialog.setWindowTitle(tr("Picture was not selected"));
infoDialog.exec();
return;
}
std::string new_text = "Selected: " + filename.toStdString(); std::string new_text = "Selected: " + filename.toStdString();
ui->pathLabel_ocr->setText(QString::fromStdString(new_text)); ui->pathLabel_ocr->setText(QString::fromStdString(new_text));

View File

@@ -110,7 +110,7 @@
<widget class="QPushButton" name="chooseImageButton_ocr"> <widget class="QPushButton" name="chooseImageButton_ocr">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>10</x>
<y>0</y> <y>0</y>
<width>80</width> <width>80</width>
<height>26</height> <height>26</height>

View File

@@ -85,7 +85,7 @@ std::vector<std::string> Parser::check_updates() {
std::cout << file.path().filename() << " detected store module" << std::endl; std::cout << file.path().filename() << " detected store module" << std::endl;
} }
Net n; Net n;
std::cerr << "Downloading modules list from: " << s.get_setting("stores_modules_url"); std::cerr << "Downloading modules list from: " << s.get_setting("stores_modules_url") << std::endl;
std::vector<std::string> remote_modules = n.get_all_modules(s.get_setting("stores_modules_url")); std::vector<std::string> remote_modules = n.get_all_modules(s.get_setting("stores_modules_url"));
if (stored_modules.empty()) { if (stored_modules.empty()) {
std::cout << "I need to download everything" << std::endl; std::cout << "I need to download everything" << std::endl;

View File

@@ -23,7 +23,7 @@ Settings::Settings(std::string path) {
"ofds_modules_dir":".local/share/checks_parser/modules/ofd", "ofds_modules_dir":".local/share/checks_parser/modules/ofd",
"stores_modules_dir":".local/share/checks_parser/modules/stores", "stores_modules_dir":".local/share/checks_parser/modules/stores",
"ofds_modules_url":"https://foxarmy.org/checks-parser/modules/ofd/", "ofds_modules_url":"https://foxarmy.org/checks-parser/modules/ofd/",
"stores_modules_url":"https://foxarmy.org/checks-parser/modules/modules/", "stores_modules_url":"https://foxarmy.org/checks-parser/modules/stores/",
"print_header": true, "print_header": true,
"print_total": true, "print_total": true,
"output_order": { "output_order": {
@@ -50,7 +50,7 @@ Settings::Settings(std::string path) {
} }
})"_json; })"_json;
output << settings; output << settings.dump(4);
output.flush(); output.flush();
output.close(); output.close();
this->settings = settings; this->settings = settings;
@@ -70,7 +70,7 @@ void Settings::write_setting(std::string setting, std::string value) {
this->settings[setting] = value; this->settings[setting] = value;
output << this->settings; output << this->settings.dump(4);
} }
std::string Settings::get_setting(std::string setting) { std::string Settings::get_setting(std::string setting) {
return this->settings[setting]; return this->settings[setting];
@@ -93,5 +93,5 @@ void Settings::alter_setting(std::string setting, std::string value) {
void Settings::flush() { void Settings::flush() {
std::ofstream output(this->settings_file_path, std::fstream::trunc); std::ofstream output(this->settings_file_path, std::fstream::trunc);
output << this->settings; output << this->settings.dump(4);
} }

View File

@@ -3,6 +3,8 @@
#include "ui_settingsdialog.h" #include "ui_settingsdialog.h"
#include "utils/utils.h" #include "utils/utils.h"
#include <QMessageBox>
SettingsDialog::SettingsDialog(QWidget *parent) SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent), ui(new Ui::settingsdialog), : QDialog(parent), ui(new Ui::settingsdialog),
settings(Settings(get_path_relative_to_home( settings(Settings(get_path_relative_to_home(
@@ -32,6 +34,19 @@ SettingsDialog::SettingsDialog(QWidget *parent)
ui->printHeaderCheckBox->setChecked(this->settings.get_all_settings()["print_header"]); ui->printHeaderCheckBox->setChecked(this->settings.get_all_settings()["print_header"]);
ui->printTotalCheckBox->setChecked(this->settings.get_all_settings()["print_total"]); ui->printTotalCheckBox->setChecked(this->settings.get_all_settings()["print_total"]);
int currentLanguageIndex = 0;
if (!this->settings.get_all_settings().contains("language")) {
currentLanguageIndex = ui->languageComboBox->findText(QLocale::system().name());
if (currentLanguageIndex < 0) {
currentLanguageIndex = ui->languageComboBox->findText("en_US");
}
} else {
currentLanguageIndex = ui->languageComboBox->findText(QString::fromStdString(this->settings.get_all_settings()["language"]));
}
ui->languageComboBox->setCurrentIndex(currentLanguageIndex);
} }
SettingsDialog::~SettingsDialog() { delete ui; } SettingsDialog::~SettingsDialog() { delete ui; }
@@ -121,4 +136,19 @@ void SettingsDialog::on_buttonBox_accepted() { this->settings.flush(); }
void SettingsDialog::on_buttonBox_rejected() { this->close(); } void SettingsDialog::on_buttonBox_rejected() { this->close(); }
void SettingsDialog::on_languageComboBox_currentTextChanged(const QString &changed) {
if (this->settings.get_all_settings().contains("language")) {
if (changed == QString::fromStdString(this->settings.get_all_settings()["language"])) return;
} else {
if (changed == QLocale::system().name()) return;
}
this->settings.get_all_settings()["language"] = changed.toStdString();
QMessageBox infoDialog;
infoDialog.setText(tr("You need to restart program to apply language changes"));
infoDialog.setIcon(QMessageBox::Information);
infoDialog.setWindowTitle(tr("Restart required"));
infoDialog.exec();
}

View File

@@ -52,6 +52,8 @@ private slots:
void on_buttonBox_rejected(); void on_buttonBox_rejected();
void on_languageComboBox_currentTextChanged(const QString &arg1);
private: private:
Ui::settingsdialog *ui; Ui::settingsdialog *ui;
}; };

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>599</width> <width>599</width>
<height>727</height> <height>799</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -17,16 +17,16 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>310</x> <x>310</x>
<y>690</y> <y>740</y>
<width>251</width> <width>251</width>
<height>32</height> <height>32</height>
</rect> </rect>
</property> </property>
<property name="orientation"> <property name="orientation">
<enum>Qt::Orientation::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Save</set> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
</property> </property>
</widget> </widget>
<widget class="QScrollArea" name="scrollArea"> <widget class="QScrollArea" name="scrollArea">
@@ -35,7 +35,7 @@
<x>10</x> <x>10</x>
<y>0</y> <y>0</y>
<width>541</width> <width>541</width>
<height>661</height> <height>741</height>
</rect> </rect>
</property> </property>
<property name="widgetResizable"> <property name="widgetResizable">
@@ -47,7 +47,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>539</width> <width>539</width>
<height>659</height> <height>739</height>
</rect> </rect>
</property> </property>
<widget class="QWidget" name="gridLayoutWidget"> <widget class="QWidget" name="gridLayoutWidget">
@@ -56,16 +56,126 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>531</width> <width>531</width>
<height>651</height> <height>731</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="11" column="1"> <item row="15" column="1">
<widget class="QLineEdit" name="goodsNetWeightAliasEdit"/> <widget class="QCheckBox" name="printTotalCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Goods net weight position</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="goodsNamePositionSpin"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Stores modules url</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Goods quantity position</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="OFDModulesDirEdit"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>OFD modules url</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Print header</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="storesModulesURLEdit"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Goods quantity alias</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>OFD modules directory</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="goodsNameAliasEdit"/>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Print total</string>
</property>
</widget>
</item>
<item row="13" column="1">
<widget class="QLineEdit" name="goodsTotalAliasEdit"/>
</item>
<item row="8" column="1">
<widget class="QSpinBox" name="goodsQuantityPositionSpin"/>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Goods net weight alias</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QSpinBox" name="goodsNetWeightPositionSpin"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="OFDModulesURLEdit"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Goods total alias</string>
</property>
</widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="storesModulesDirEdit"/> <widget class="QLineEdit" name="storesModulesDirEdit"/>
</item> </item>
<item row="7" column="1">
<widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="goodsQuantityAliasEdit"/>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="goodsNetWeightAliasEdit"/>
</item>
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_9"> <widget class="QLabel" name="label_9">
<property name="text"> <property name="text">
@@ -73,6 +183,51 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="14" column="1">
<widget class="QCheckBox" name="printHeaderCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Goods name alias</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Goods price per unit position</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Stores modules directory</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Goods total position</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="OFDModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QSpinBox" name="goodsTotalPositionSpin"/>
</item>
<item row="7" column="0"> <item row="7" column="0">
<widget class="QLabel" name="label_12"> <widget class="QLabel" name="label_12">
<property name="text"> <property name="text">
@@ -87,159 +242,25 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="13" column="1"> <item row="16" column="0">
<widget class="QLineEdit" name="goodsTotalAliasEdit"/> <widget class="QLabel" name="label_4">
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>Print header</string> <string>TextLabel</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="11" column="0"> <item row="16" column="1">
<widget class="QLabel" name="label_16"> <widget class="QComboBox" name="languageComboBox">
<property name="text"> <item>
<string>Goods net weight alias</string> <property name="text">
</property> <string>en_US</string>
</widget> </property>
</item> </item>
<item row="3" column="0"> <item>
<widget class="QLabel" name="label_8"> <property name="text">
<property name="text"> <string>ru_RU</string>
<string>Stores modules url</string> </property>
</property> </item>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="storesModulesURLEdit"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Goods total alias</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Goods name alias</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QSpinBox" name="goodsTotalPositionSpin"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Goods quantity alias</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Stores modules directory</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="goodsNameAliasEdit"/>
</item>
<item row="10" column="1">
<widget class="QSpinBox" name="goodsNetWeightPositionSpin"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>OFD modules directory</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="goodsNamePositionSpin"/>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="goodsQuantityAliasEdit"/>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="goodsPricePerUnitAliasEdit"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Goods price per unit position</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Goods net weight position</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>OFD modules url</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="OFDModulesDirEdit"/>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Goods total position</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Goods quantity position</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="OFDModulesURLEdit"/>
</item>
<item row="8" column="1">
<widget class="QSpinBox" name="goodsQuantityPositionSpin"/>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="OFDModulesDirChooseButton">
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="goodsPricePerUnitPositionSpin"/>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Print total</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QCheckBox" name="printHeaderCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QCheckBox" name="printTotalCheckBox">
<property name="text">
<string/>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>

7
translations.qrc Normal file
View File

@@ -0,0 +1,7 @@
<RCC>
<qresource prefix="/translation">
<file>en_US.qm</file>
<file>ru_RU.qm</file>
</qresource>
<qresource prefix="/translations"/>
</RCC>

View File

@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.1"> <TS version="2.1" language="en_US">
<context> <context>
<name>AdjustPictureDialog</name> <name>AdjustPictureDialog</name>
<message> <message>
<location filename="../adjustpicturedialog.ui" line="14"/> <location filename="../adjustpicturedialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Dialog</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.ui" line="58"/> <location filename="../adjustpicturedialog.ui" line="58"/>
<source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source> <source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source>
<translation type="unfinished"></translation> <translation>Please, zoom to qr code and adjust contrast so that qr code looks sharp</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.cpp" line="39"/> <location filename="../adjustpicturedialog.cpp" line="39"/>
<source>QR code was not detected on that image. Please edit it again or enter data manually</source> <source>QR code was not detected on that image. Please edit it again or enter data manually</source>
<translation type="unfinished"></translation> <translation>QR code was not detected on that image. Please edit it again or enter data manually</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.cpp" line="41"/> <location filename="../adjustpicturedialog.cpp" line="41"/>
<source>No QR code</source> <source>No QR code</source>
<translation type="unfinished"></translation> <translation>No QR code</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -29,135 +29,170 @@
<message> <message>
<location filename="../mainwindow.ui" line="14"/> <location filename="../mainwindow.ui" line="14"/>
<source>MainWindow</source> <source>MainWindow</source>
<translation type="unfinished"></translation> <translation>Главное окно</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="37"/> <location filename="../mainwindow.ui" line="37"/>
<source>Store type</source> <source>Store type</source>
<translation type="unfinished"></translation> <translation>Store type</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="50"/> <location filename="../mainwindow.ui" line="50"/>
<source>Parse</source> <source>Parse</source>
<translation type="unfinished"></translation> <translation>Parse</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="63"/> <location filename="../mainwindow.ui" line="63"/>
<source>Preferences</source> <source>Preferences</source>
<translation type="unfinished"></translation> <translation>Preferences</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="80"/> <location filename="../mainwindow.ui" line="80"/>
<source>Text</source> <source>Text</source>
<translation type="unfinished"></translation> <translation>Text</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="92"/> <location filename="../mainwindow.ui" line="92"/>
<source>Check content</source> <source>Check content</source>
<translation type="unfinished"></translation> <translation>Check content</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="108"/> <location filename="../mainwindow.ui" line="108"/>
<source>OCR</source> <source>OCR</source>
<translation type="unfinished"></translation> <translatorcomment>OCR = Optical Character Recognition</translatorcomment>
<translation>OCR</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="120"/> <location filename="../mainwindow.ui" line="120"/>
<location filename="../mainwindow.ui" line="213"/> <location filename="../mainwindow.ui" line="213"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Choose</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="143"/> <location filename="../mainwindow.ui" line="143"/>
<location filename="../mainwindow.ui" line="200"/> <location filename="../mainwindow.ui" line="200"/>
<source>Path to image: </source> <source>Path to image: </source>
<translation type="unfinished"></translation> <translation>Path to image: </translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="156"/> <location filename="../mainwindow.ui" line="156"/>
<source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source> <source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source>
<translation type="unfinished"></translation> <translation>Here is recognised check text. Please, edit it if something&apos;s wrong:</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="175"/> <location filename="../mainwindow.ui" line="175"/>
<source>OFD</source> <source>OFD</source>
<translation type="unfinished"></translation> <translatorcomment>OFD = Оператор Фискальных Данных</translatorcomment>
<translation>OFD</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="226"/> <location filename="../mainwindow.ui" line="226"/>
<source>0000000000000000</source> <source>0000000000000000</source>
<translation type="unfinished"></translation> <translation>0000000000000000</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="245"/> <location filename="../mainwindow.ui" line="245"/>
<source>FN (Fiscal Number)</source> <source>FN (Fiscal Number)</source>
<translation type="unfinished"></translation> <translatorcomment>FN = Фискальный Номер</translatorcomment>
<translation>FN (Fiscal Number)</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="264"/> <location filename="../mainwindow.ui" line="264"/>
<source>FD (Fiscal Document)</source> <source>FD (Fiscal Document)</source>
<translation type="unfinished"></translation> <translatorcomment>FD = Фискальный Документ</translatorcomment>
<translation>FD (Fiscal Document)</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="277"/> <location filename="../mainwindow.ui" line="277"/>
<location filename="../mainwindow.ui" line="309"/> <location filename="../mainwindow.ui" line="309"/>
<source>0000000000</source> <source>0000000000</source>
<translation type="unfinished"></translation> <translation>000000000</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="296"/> <location filename="../mainwindow.ui" line="296"/>
<source>FI (Fiscal Identifier)</source> <source>FI (Fiscal Identifier)</source>
<translation type="unfinished"></translation> <translatorcomment>FI = Фискальный Признак</translatorcomment>
<translation>FI (Fiscal Identifier)</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="333"/> <location filename="../mainwindow.ui" line="333"/>
<source>Funds income</source> <source>Funds income</source>
<translation type="unfinished"></translation> <translatorcomment>Приход средств</translatorcomment>
<translation>Funds incode</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="338"/> <location filename="../mainwindow.ui" line="338"/>
<source>Funds return</source> <source>Funds return</source>
<translation type="unfinished"></translation> <translatorcomment>Возврат средств</translatorcomment>
<translation>Funds return</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="343"/> <location filename="../mainwindow.ui" line="343"/>
<source>Funds spend</source> <source>Funds spend</source>
<translation type="unfinished"></translation> <translatorcomment>Расход средств</translatorcomment>
<translation>Funds spend</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="348"/> <location filename="../mainwindow.ui" line="348"/>
<source>Spends return</source> <source>Spends return</source>
<translation type="unfinished"></translation> <translatorcomment>Возврат расхода</translatorcomment>
<translation>Spends return</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="375"/> <location filename="../mainwindow.ui" line="375"/>
<source>Total</source> <source>Total</source>
<translation type="unfinished"></translation> <translation>Total</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="392"/> <location filename="../mainwindow.ui" line="392"/>
<source>checks parser</source> <source>checks parser</source>
<translation type="unfinished"></translation> <translation>checks parser</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="85"/> <location filename="../mainwindow.cpp" line="85"/>
<source>Captcha was not solved correctly!</source> <source>Captcha was not solved correctly!</source>
<translation type="unfinished"></translation> <translation>Captcha was not solved correctly!</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="87"/> <location filename="../mainwindow.cpp" line="87"/>
<source>Captcha is incorrect</source> <source>Captcha is incorrect</source>
<translation type="unfinished"></translation> <translation>Captcha is incorrect</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="92"/> <location filename="../mainwindow.cpp" line="92"/>
<source>Check not found. Please, ensure correctness of entered data.</source> <source>Check not found. Please, ensure correctness of entered data.</source>
<translation type="unfinished"></translation> <translation>Check not found. Please, ensure correctness of entered data.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="94"/> <location filename="../mainwindow.cpp" line="94"/>
<source>Check was not found</source> <source>Check was not found</source>
<translation type="unfinished"></translation> <translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="116"/>
<source>An error has occured. Check was matched incorrectly. Vector sizes are different. Please, contact the developer.</source>
<translation>An error has occured. Check was matched incorrectly. Vector sizes are different. Please, contact the developer.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="118"/>
<source>Error in parsing</source>
<translation>Error in parsing</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="149"/>
<source>Please, select a picture where QR code that contains info about check is present</source>
<translation>Please, select a picture where QR code that contains info about check is present</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="151"/>
<location filename="../mainwindow.cpp" line="197"/>
<source>Picture was not selected</source>
<translation>Picture was not selected</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="195"/>
<source>Please, select a picture to scan</source>
<translation>Please, select a picture to scan</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -165,112 +200,125 @@
<message> <message>
<location filename="../outputdialog.ui" line="14"/> <location filename="../outputdialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Dialog</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="42"/> <location filename="../outputdialog.ui" line="42"/>
<source>Path to export: </source> <source>Path to export: </source>
<translation type="unfinished"></translation> <translation>Path to export: </translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="55"/> <location filename="../outputdialog.ui" line="55"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Choose</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="68"/> <location filename="../outputdialog.ui" line="68"/>
<source>Print header</source> <source>Print header</source>
<translation type="unfinished"></translation> <translation>Print header</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="82"/> <location filename="../outputdialog.ui" line="82"/>
<source>Goods name</source> <source>Goods name</source>
<translation type="unfinished"></translation> <translation>Goods name</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="87"/> <location filename="../outputdialog.ui" line="87"/>
<source>Goods price</source> <source>Goods price</source>
<translation type="unfinished"></translation> <translation>Goods price</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="92"/> <location filename="../outputdialog.ui" line="92"/>
<source>Goods quantity</source> <source>Goods quantity</source>
<translation type="unfinished"></translation> <translation>Goods quality</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="97"/> <location filename="../outputdialog.ui" line="97"/>
<source>Goods net weight</source> <source>Goods net weight</source>
<translation type="unfinished"></translation> <translation>Goods net weight</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="102"/> <location filename="../outputdialog.ui" line="102"/>
<source>Goods total</source> <source>Goods total</source>
<translation type="unfinished"></translation> <translation>Goods total</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="107"/> <location filename="../outputdialog.ui" line="107"/>
<source>position</source> <source>position</source>
<translation type="unfinished"></translation> <translation>position</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="112"/> <location filename="../outputdialog.ui" line="112"/>
<source>name</source> <source>name</source>
<translation type="unfinished"></translation> <translation>name</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="117"/> <location filename="../outputdialog.ui" line="117"/>
<source>1</source> <source>1</source>
<translation type="unfinished"></translation> <translation>1</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="122"/> <location filename="../outputdialog.ui" line="122"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"></translation> <translation>Name</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="127"/> <location filename="../outputdialog.ui" line="127"/>
<source>2</source> <source>2</source>
<translation type="unfinished"></translation> <translation>2</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="132"/> <location filename="../outputdialog.ui" line="132"/>
<source>Price</source> <source>Price</source>
<translation type="unfinished"></translation> <translation>Price</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="137"/> <location filename="../outputdialog.ui" line="137"/>
<source>3</source> <source>3</source>
<translation type="unfinished"></translation> <translation>3</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="142"/> <location filename="../outputdialog.ui" line="142"/>
<source>Quantity</source> <source>Quantity</source>
<translation type="unfinished"></translation> <translation>Quantity</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="147"/> <location filename="../outputdialog.ui" line="147"/>
<source>4</source> <source>4</source>
<translation type="unfinished"></translation> <translation>4</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="152"/> <location filename="../outputdialog.ui" line="152"/>
<source>Net weight</source> <source>Net weight</source>
<translation type="unfinished"></translation> <translation>Net Weight</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="157"/> <location filename="../outputdialog.ui" line="157"/>
<source>5</source> <source>5</source>
<translation type="unfinished"></translation> <translation>5</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="162"/> <location filename="../outputdialog.ui" line="162"/>
<source>Total price</source> <source>Total price</source>
<translation type="unfinished"></translation> <translation>Total price</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="176"/> <location filename="../outputdialog.ui" line="176"/>
<source>Print total</source> <source>Print total</source>
<translation type="unfinished"></translation> <translation>Print total</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="149"/>
<source>You need to restart program to apply language changes</source>
<translation>You need to restart program to apply language changes</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="151"/>
<source>Restart required</source>
<translation>Restart required</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -278,17 +326,17 @@
<message> <message>
<location filename="../solvecaptchadialog.ui" line="14"/> <location filename="../solvecaptchadialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Dialog</translation>
</message> </message>
<message> <message>
<location filename="../solvecaptchadialog.cpp" line="23"/> <location filename="../solvecaptchadialog.cpp" line="23"/>
<source>Please, enter a valid captcha</source> <source>Please, enter a valid captcha</source>
<translation type="unfinished"></translation> <translation>Please, enter a valid captcha</translation>
</message> </message>
<message> <message>
<location filename="../solvecaptchadialog.cpp" line="25"/> <location filename="../solvecaptchadialog.cpp" line="25"/>
<source>No captcha</source> <source>No captcha</source>
<translation type="unfinished"></translation> <translation>No captcha</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -296,93 +344,108 @@
<message> <message>
<location filename="../settingsdialog.ui" line="14"/> <location filename="../settingsdialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Dialog</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="72"/> <location filename="../settingsdialog.ui" line="182"/>
<source>Goods name position</source> <source>Goods name position</source>
<translation type="unfinished"></translation> <translation>Goods name position</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="79"/> <location filename="../settingsdialog.ui" line="234"/>
<source>Goods price per unit alias</source> <source>Goods price per unit alias</source>
<translation type="unfinished"></translation> <translation>Goods price per unit alias</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="86"/> <location filename="../settingsdialog.ui" line="248"/>
<location filename="../settingsdialog.ui" line="217"/> <source>TextLabel</source>
<translation>Language</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="256"/>
<source>en_US</source>
<translation>en_US</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="261"/>
<source>ru_RU</source>
<translation>ru_RU</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="224"/>
<location filename="../settingsdialog.ui" line="241"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Choose</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="96"/> <location filename="../settingsdialog.ui" line="107"/>
<source>Print header</source> <source>Print header</source>
<translation type="unfinished"></translation> <translation>Print header</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="103"/> <location filename="../settingsdialog.ui" line="150"/>
<source>Goods net weight alias</source> <source>Goods net weight alias</source>
<translation type="unfinished"></translation> <translation>Goods net weight alias</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="110"/> <location filename="../settingsdialog.ui" line="83"/>
<source>Stores modules url</source> <source>Stores modules url</source>
<translation type="unfinished"></translation> <translation>Stores modules url</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="163"/>
<source>Goods total alias</source>
<translation>Goods total alias</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="196"/>
<source>Goods name alias</source>
<translation>Goods name alias</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="120"/> <location filename="../settingsdialog.ui" line="120"/>
<source>Goods total alias</source> <source>Goods quantity alias</source>
<translation type="unfinished"></translation> <translation>Goods quantity alias</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="210"/>
<source>Stores modules directory</source>
<translation>Stores modules directory</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="127"/> <location filename="../settingsdialog.ui" line="127"/>
<source>Goods name alias</source> <source>OFD modules directory</source>
<translation type="unfinished"></translation> <translation>OFD modules directory</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="203"/>
<source>Goods price per unit position</source>
<translation>Goods price per unit position</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="73"/>
<source>Goods net weight position</source>
<translation>Goods net weight position</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="100"/>
<source>OFD modules url</source>
<translation>OFD modules url</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="217"/>
<source>Goods total position</source>
<translation>Goods total position</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="90"/>
<source>Goods quantity position</source>
<translation>Goods quantity position</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="137"/> <location filename="../settingsdialog.ui" line="137"/>
<source>Goods quantity alias</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="144"/>
<source>Stores modules directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="157"/>
<source>OFD modules directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="173"/>
<source>Goods price per unit position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="180"/>
<source>Goods net weight position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="187"/>
<source>OFD modules url</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="197"/>
<source>Goods total position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="204"/>
<source>Goods quantity position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="227"/>
<source>Print total</source> <source>Print total</source>
<translation type="unfinished"></translation> <translation>Print total</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@@ -6,22 +6,22 @@
<message> <message>
<location filename="../adjustpicturedialog.ui" line="14"/> <location filename="../adjustpicturedialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Диалог</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.ui" line="58"/> <location filename="../adjustpicturedialog.ui" line="58"/>
<source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source> <source>Please, zoom to qr code and adjust contrast so that qr code looks sharp</source>
<translation type="unfinished"></translation> <translation>Пожалуйста, приблизьте QR код и настройте контраст, чтобы он читался</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.cpp" line="39"/> <location filename="../adjustpicturedialog.cpp" line="39"/>
<source>QR code was not detected on that image. Please edit it again or enter data manually</source> <source>QR code was not detected on that image. Please edit it again or enter data manually</source>
<translation type="unfinished"></translation> <translation>QR код не найден на этом изображении. Пожалуйста, попытайтесь снова или введите данные вручную</translation>
</message> </message>
<message> <message>
<location filename="../adjustpicturedialog.cpp" line="41"/> <location filename="../adjustpicturedialog.cpp" line="41"/>
<source>No QR code</source> <source>No QR code</source>
<translation type="unfinished"></translation> <translation>QR код не найден</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -29,135 +29,166 @@
<message> <message>
<location filename="../mainwindow.ui" line="14"/> <location filename="../mainwindow.ui" line="14"/>
<source>MainWindow</source> <source>MainWindow</source>
<translation type="unfinished"></translation> <translation>ГлавноеОкно</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="37"/> <location filename="../mainwindow.ui" line="37"/>
<source>Store type</source> <source>Store type</source>
<translation type="unfinished"></translation> <translation>Магазин</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="50"/> <location filename="../mainwindow.ui" line="50"/>
<source>Parse</source> <source>Parse</source>
<translation type="unfinished"></translation> <translation>Парсить</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="63"/> <location filename="../mainwindow.ui" line="63"/>
<source>Preferences</source> <source>Preferences</source>
<translation type="unfinished"></translation> <translation>Настройки</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="80"/> <location filename="../mainwindow.ui" line="80"/>
<source>Text</source> <source>Text</source>
<translation type="unfinished"></translation> <translation>Текст</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="92"/> <location filename="../mainwindow.ui" line="92"/>
<source>Check content</source> <source>Check content</source>
<translation type="unfinished"></translation> <translation>Контент чека</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="108"/> <location filename="../mainwindow.ui" line="108"/>
<source>OCR</source> <source>OCR</source>
<translation type="unfinished"></translation> <translatorcomment>Оптическое Распознавание Символов</translatorcomment>
<translation>ОСР</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="120"/> <location filename="../mainwindow.ui" line="120"/>
<location filename="../mainwindow.ui" line="213"/> <location filename="../mainwindow.ui" line="213"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Выбрать</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="143"/> <location filename="../mainwindow.ui" line="143"/>
<location filename="../mainwindow.ui" line="200"/> <location filename="../mainwindow.ui" line="200"/>
<source>Path to image: </source> <source>Path to image: </source>
<translation type="unfinished"></translation> <translation>Путь к изображению: </translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="156"/> <location filename="../mainwindow.ui" line="156"/>
<source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source> <source>Here is recognised check text. Please, edit it if something&apos;s wrong:</source>
<translation type="unfinished"></translation> <translation>Ниже приведён распознанный текст. Пожалуйста, отредактируйте его:</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="175"/> <location filename="../mainwindow.ui" line="175"/>
<source>OFD</source> <source>OFD</source>
<translation type="unfinished"></translation> <translatorcomment>Оператор Фискальных Данных</translatorcomment>
<translation>ОФД</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="226"/> <location filename="../mainwindow.ui" line="226"/>
<source>0000000000000000</source> <source>0000000000000000</source>
<translation type="unfinished"></translation> <translation>0000000000000000</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="245"/> <location filename="../mainwindow.ui" line="245"/>
<source>FN (Fiscal Number)</source> <source>FN (Fiscal Number)</source>
<translation type="unfinished"></translation> <translatorcomment>Фискальный Норма</translatorcomment>
<translation>ФН</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="264"/> <location filename="../mainwindow.ui" line="264"/>
<source>FD (Fiscal Document)</source> <source>FD (Fiscal Document)</source>
<translation type="unfinished"></translation> <translatorcomment>Фискальный Документ</translatorcomment>
<translation>ФД</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="277"/> <location filename="../mainwindow.ui" line="277"/>
<location filename="../mainwindow.ui" line="309"/> <location filename="../mainwindow.ui" line="309"/>
<source>0000000000</source> <source>0000000000</source>
<translation type="unfinished"></translation> <translation>000000000</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="296"/> <location filename="../mainwindow.ui" line="296"/>
<source>FI (Fiscal Identifier)</source> <source>FI (Fiscal Identifier)</source>
<translation type="unfinished"></translation> <translatorcomment>Фискальный Признак</translatorcomment>
<translation>ФП</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="333"/> <location filename="../mainwindow.ui" line="333"/>
<source>Funds income</source> <source>Funds income</source>
<translation type="unfinished"></translation> <translation>Приход средств</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="338"/> <location filename="../mainwindow.ui" line="338"/>
<source>Funds return</source> <source>Funds return</source>
<translation type="unfinished"></translation> <translation>Возврат средств</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="343"/> <location filename="../mainwindow.ui" line="343"/>
<source>Funds spend</source> <source>Funds spend</source>
<translation type="unfinished"></translation> <translation>Расход средств</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="348"/> <location filename="../mainwindow.ui" line="348"/>
<source>Spends return</source> <source>Spends return</source>
<translation type="unfinished"></translation> <translation>Возврат расхода</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="375"/> <location filename="../mainwindow.ui" line="375"/>
<source>Total</source> <source>Total</source>
<translation type="unfinished"></translation> <translation>Итого</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.ui" line="392"/> <location filename="../mainwindow.ui" line="392"/>
<source>checks parser</source> <source>checks parser</source>
<translation type="unfinished"></translation> <translation>Парсер чеков</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="85"/> <location filename="../mainwindow.cpp" line="85"/>
<source>Captcha was not solved correctly!</source> <source>Captcha was not solved correctly!</source>
<translation type="unfinished"></translation> <translation>Капча была решена неверно!</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="87"/> <location filename="../mainwindow.cpp" line="87"/>
<source>Captcha is incorrect</source> <source>Captcha is incorrect</source>
<translation type="unfinished"></translation> <translation>Капча введена неверно</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="92"/> <location filename="../mainwindow.cpp" line="92"/>
<source>Check not found. Please, ensure correctness of entered data.</source> <source>Check not found. Please, ensure correctness of entered data.</source>
<translation type="unfinished"></translation> <translation>Чек не найден. Пожалуйста, убедитесь в правильности введённых данных.</translation>
</message> </message>
<message> <message>
<location filename="../mainwindow.cpp" line="94"/> <location filename="../mainwindow.cpp" line="94"/>
<source>Check was not found</source> <source>Check was not found</source>
<translation type="unfinished"></translation> <translation>Чек не найден</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="116"/>
<source>An error has occured. Check was matched incorrectly. Vector sizes are different. Please, contact the developer.</source>
<translation>Произошла ошибка. Чек был прочитан неверно. Размеры векторов различаются. Пожалуйста, сообщите об этом разработчику.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="118"/>
<source>Error in parsing</source>
<translation>Ошибка в парсинге</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="149"/>
<source>Please, select a picture where QR code that contains info about check is present</source>
<translation>Пожалуйста, выберете изображение, содержащее QR код с информацией о чеке</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="151"/>
<location filename="../mainwindow.cpp" line="197"/>
<source>Picture was not selected</source>
<translation>Изображение не было выбрано</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="195"/>
<source>Please, select a picture to scan</source>
<translation>Пожалуйста, выберете изображение для сканирования</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -165,112 +196,125 @@
<message> <message>
<location filename="../outputdialog.ui" line="14"/> <location filename="../outputdialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Диалог</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="42"/> <location filename="../outputdialog.ui" line="42"/>
<source>Path to export: </source> <source>Path to export: </source>
<translation type="unfinished"></translation> <translation>Путь для экспорта: </translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="55"/> <location filename="../outputdialog.ui" line="55"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Выбрать</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="68"/> <location filename="../outputdialog.ui" line="68"/>
<source>Print header</source> <source>Print header</source>
<translation type="unfinished"></translation> <translation>Печатать заголовок</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="82"/> <location filename="../outputdialog.ui" line="82"/>
<source>Goods name</source> <source>Goods name</source>
<translation type="unfinished"></translation> <translation>Имя товара</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="87"/> <location filename="../outputdialog.ui" line="87"/>
<source>Goods price</source> <source>Goods price</source>
<translation type="unfinished"></translation> <translation>Цена товара</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="92"/> <location filename="../outputdialog.ui" line="92"/>
<source>Goods quantity</source> <source>Goods quantity</source>
<translation type="unfinished"></translation> <translation>Количество товара</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="97"/> <location filename="../outputdialog.ui" line="97"/>
<source>Goods net weight</source> <source>Goods net weight</source>
<translation type="unfinished"></translation> <translation>Масса нетто товара</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="102"/> <location filename="../outputdialog.ui" line="102"/>
<source>Goods total</source> <source>Goods total</source>
<translation type="unfinished"></translation> <translation>Всего за товар</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="107"/> <location filename="../outputdialog.ui" line="107"/>
<source>position</source> <source>position</source>
<translation type="unfinished"></translation> <translation>позиция</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="112"/> <location filename="../outputdialog.ui" line="112"/>
<source>name</source> <source>name</source>
<translation type="unfinished"></translation> <translation>алиас</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="117"/> <location filename="../outputdialog.ui" line="117"/>
<source>1</source> <source>1</source>
<translation type="unfinished"></translation> <translation>1</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="122"/> <location filename="../outputdialog.ui" line="122"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"></translation> <translation>Имя</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="127"/> <location filename="../outputdialog.ui" line="127"/>
<source>2</source> <source>2</source>
<translation type="unfinished"></translation> <translation>2</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="132"/> <location filename="../outputdialog.ui" line="132"/>
<source>Price</source> <source>Price</source>
<translation type="unfinished"></translation> <translation>Цена</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="137"/> <location filename="../outputdialog.ui" line="137"/>
<source>3</source> <source>3</source>
<translation type="unfinished"></translation> <translation>3</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="142"/> <location filename="../outputdialog.ui" line="142"/>
<source>Quantity</source> <source>Quantity</source>
<translation type="unfinished"></translation> <translation>Количество</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="147"/> <location filename="../outputdialog.ui" line="147"/>
<source>4</source> <source>4</source>
<translation type="unfinished"></translation> <translation>4</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="152"/> <location filename="../outputdialog.ui" line="152"/>
<source>Net weight</source> <source>Net weight</source>
<translation type="unfinished"></translation> <translation>Масса нетто</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="157"/> <location filename="../outputdialog.ui" line="157"/>
<source>5</source> <source>5</source>
<translation type="unfinished"></translation> <translation>5</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="162"/> <location filename="../outputdialog.ui" line="162"/>
<source>Total price</source> <source>Total price</source>
<translation type="unfinished"></translation> <translation>Всего</translation>
</message> </message>
<message> <message>
<location filename="../outputdialog.ui" line="176"/> <location filename="../outputdialog.ui" line="176"/>
<source>Print total</source> <source>Print total</source>
<translation type="unfinished"></translation> <translation>Печатать Итого</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../settingsdialog.cpp" line="149"/>
<source>You need to restart program to apply language changes</source>
<translation>Требуется перезагрузить программу, чтобы применить изменения языка</translation>
</message>
<message>
<location filename="../settingsdialog.cpp" line="151"/>
<source>Restart required</source>
<translation>Требуется перезагрузка</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -278,17 +322,17 @@
<message> <message>
<location filename="../solvecaptchadialog.ui" line="14"/> <location filename="../solvecaptchadialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Диалог</translation>
</message> </message>
<message> <message>
<location filename="../solvecaptchadialog.cpp" line="23"/> <location filename="../solvecaptchadialog.cpp" line="23"/>
<source>Please, enter a valid captcha</source> <source>Please, enter a valid captcha</source>
<translation type="unfinished"></translation> <translation>Пожалуйста, введите верную капчу</translation>
</message> </message>
<message> <message>
<location filename="../solvecaptchadialog.cpp" line="25"/> <location filename="../solvecaptchadialog.cpp" line="25"/>
<source>No captcha</source> <source>No captcha</source>
<translation type="unfinished"></translation> <translation>Нет капчи</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -296,93 +340,108 @@
<message> <message>
<location filename="../settingsdialog.ui" line="14"/> <location filename="../settingsdialog.ui" line="14"/>
<source>Dialog</source> <source>Dialog</source>
<translation type="unfinished"></translation> <translation>Диалог</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="72"/> <location filename="../settingsdialog.ui" line="182"/>
<source>Goods name position</source> <source>Goods name position</source>
<translation type="unfinished"></translation> <translation>Позиция имени товара</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="79"/> <location filename="../settingsdialog.ui" line="234"/>
<source>Goods price per unit alias</source> <source>Goods price per unit alias</source>
<translation type="unfinished"></translation> <translation>Алиас цены товара</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="86"/> <location filename="../settingsdialog.ui" line="248"/>
<location filename="../settingsdialog.ui" line="217"/> <source>TextLabel</source>
<translation>Язык</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="256"/>
<source>en_US</source>
<translation>en_US</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="261"/>
<source>ru_RU</source>
<translation>ru_RU</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="224"/>
<location filename="../settingsdialog.ui" line="241"/>
<source>Choose</source> <source>Choose</source>
<translation type="unfinished"></translation> <translation>Выбрать</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="96"/> <location filename="../settingsdialog.ui" line="107"/>
<source>Print header</source> <source>Print header</source>
<translation type="unfinished"></translation> <translation>Печатать заголовок</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="103"/> <location filename="../settingsdialog.ui" line="150"/>
<source>Goods net weight alias</source> <source>Goods net weight alias</source>
<translation type="unfinished"></translation> <translation>Алиас массы нетто товара</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="110"/> <location filename="../settingsdialog.ui" line="83"/>
<source>Stores modules url</source> <source>Stores modules url</source>
<translation type="unfinished"></translation> <translation>URL модулей магазина</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="163"/>
<source>Goods total alias</source>
<translation>Алиас всего за продукт</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="196"/>
<source>Goods name alias</source>
<translation>Алиас имени товара</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="120"/> <location filename="../settingsdialog.ui" line="120"/>
<source>Goods total alias</source> <source>Goods quantity alias</source>
<translation type="unfinished"></translation> <translation>Алиас количества товара</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="210"/>
<source>Stores modules directory</source>
<translation>Директория модулей магазина</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="127"/> <location filename="../settingsdialog.ui" line="127"/>
<source>Goods name alias</source> <source>OFD modules directory</source>
<translation type="unfinished"></translation> <translation>Директория модулей ОФД</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="203"/>
<source>Goods price per unit position</source>
<translation>Позиция центы товара</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="73"/>
<source>Goods net weight position</source>
<translation>Позиция массы нетто товара</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="100"/>
<source>OFD modules url</source>
<translation>URL модулей ОФД</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="217"/>
<source>Goods total position</source>
<translation>Позиция всего за товар</translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="90"/>
<source>Goods quantity position</source>
<translation>Позиция количества товара</translation>
</message> </message>
<message> <message>
<location filename="../settingsdialog.ui" line="137"/> <location filename="../settingsdialog.ui" line="137"/>
<source>Goods quantity alias</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="144"/>
<source>Stores modules directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="157"/>
<source>OFD modules directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="173"/>
<source>Goods price per unit position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="180"/>
<source>Goods net weight position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="187"/>
<source>OFD modules url</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="197"/>
<source>Goods total position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="204"/>
<source>Goods quantity position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsdialog.ui" line="227"/>
<source>Print total</source> <source>Print total</source>
<translation type="unfinished"></translation> <translation>Печатать Итого</translation>
</message> </message>
</context> </context>
</TS> </TS>