diff -Nru kylin-scanner-3.2.1/debian/changelog kylin-scanner-3.2.1/debian/changelog --- kylin-scanner-3.2.1/debian/changelog 2024-12-18 10:41:33.000000000 +0800 +++ kylin-scanner-3.2.1/debian/changelog 2025-02-21 15:14:02.000000000 +0800 @@ -1,3 +1,53 @@ +kylin-scanner (3.2.1-ok2.28) nile; urgency=medium + + * BUG号: #IA6U8R 【扫描】【次要】断开扫描仪与查询扫描仪提示语不规范 + * 需求号:无 + * 任务号: 无 + * 其他改动说明: + * 其他改动影响域:无 + + -- fanyuchen <fanyuchen@kylinos.cn> Fri, 21 Feb 2025 15:14:02 +0800 + +kylin-scanner (3.2.1-ok2.27) nile; urgency=medium + + * BUG号: #I9RNO0 【扫描】焦点不在窗口上时不显示tooltips(期望:期望与windows保持一致,焦点不在所在窗口上时鼠标悬浮可显示tooltips) + * 需求号:无 + * 任务号: 无 + * 其他改动说明: + * 其他改动影响域:无 + + -- fanyuchen <fanyuchen@kylinos.cn> Wed, 19 Feb 2025 16:57:11 +0800 + +kylin-scanner (3.2.1-ok2.26) nile; urgency=medium + + * BUG号: 无 + * 需求号:无 + * 任务号: 无 + * 其他改动说明: 删除无用库,重新触发编译 + * 其他改动影响域:无 + + -- fanyuchen <fanyuchen@kylinos.cn> Wed, 19 Feb 2025 16:25:01 +0800 + +kylin-scanner (3.2.1-ok2.25) nile; urgency=medium + + * BUG号: 无 + * 需求号:无 + * 任务号: 无 + * 其他改动说明: 更新翻译,重新触发编译 + * 其他改动影响域:无 + + -- fanyuchen <fanyuchen@kylinos.cn> Wed, 19 Feb 2025 15:53:33 +0800 + +kylin-scanner (3.2.1-ok2.24) nile; urgency=medium + + * BUG号: #IA6TSW 【扫描】【次要】正在扫描弹窗位置不居中 + * 需求号:无 + * 任务号: 无 + * 其他改动说明: 无 + * 其他改动影响域:无 + + -- fanyuchen <fanyuchen@kylinos.cn> Wed, 19 Feb 2025 13:59:34 +0800 + kylin-scanner (3.2.1-ok2.23) nile; urgency=medium * BUG号: 无 diff -Nru kylin-scanner-3.2.1/debian/control kylin-scanner-3.2.1/debian/control --- kylin-scanner-3.2.1/debian/control 2024-12-18 10:41:33.000000000 +0800 +++ kylin-scanner-3.2.1/debian/control 2025-02-21 15:14:02.000000000 +0800 @@ -42,6 +42,7 @@ libgraphicsmagick1-dev, libgraphicsmagick-q16-3, libkysdk-datacollect-dev, + libzip-dev, Standards-Version: 4.5.0 Rules-Requires-Root: no Homepage: https://github.com/ubuntukylin/kylin-scanner diff -Nru kylin-scanner-3.2.1/debian/patches/0032-Added-translation-using-Weblate-Arabic.patch kylin-scanner-3.2.1/debian/patches/0032-Added-translation-using-Weblate-Arabic.patch --- kylin-scanner-3.2.1/debian/patches/0032-Added-translation-using-Weblate-Arabic.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0032-Added-translation-using-Weblate-Arabic.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,1575 @@ +From: KevinDuan <duankaiwen@kylinos.cn> +Date: Mon, 17 Feb 2025 09:34:42 +0800 +Subject: Added translation using Weblate (Arabic) + +--- + translations/kylin-scanner_ar.ts | 1560 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 1560 insertions(+) + create mode 100644 translations/kylin-scanner_ar.ts + +diff --git a/translations/kylin-scanner_ar.ts b/translations/kylin-scanner_ar.ts +new file mode 100644 +index 0000000..6452381 +--- /dev/null ++++ b/translations/kylin-scanner_ar.ts +@@ -0,0 +1,1560 @@ ++<?xml version="1.0" encoding="utf-8"?> ++<!DOCTYPE TS> ++<TS version="2.1" language="ar"> ++<context> ++ <name>AboutDialog</name> ++ <message> ++ <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> ++ <translation type="vanished">扫描是一款可用于普通扫描、一键美化、智能纠偏和文字识别的界面友好扫描仪软件。</translation> ++ </message> ++ <message> ++ <source>Service & Support : </source> ++ <translation type="vanished">服务与支持团队:</translation> ++ </message> ++ <message> ++ <source>About</source> ++ <translation type="vanished">关于</translation> ++ </message> ++ <message> ++ <source>Version: </source> ++ <translation type="vanished">版本</translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectFailedPageWidget</name> ++ <message> ++ <source>Not detect scanners, please connect scanners firstly!</source> ++ <translation type="vanished">未检测到可用扫描设备,请先连接扫描设备</translation> ++ </message> ++ <message> ++ <source>Connect</source> ++ <translation type="vanished">连接扫描仪</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectSuccessPageLeftWidget</name> ++ <message> ++ <source>Connect scanners, please click scan button to start scanning.</source> ++ <translation type="vanished">已连接扫描设备,点击按钮开始扫描</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectSuccessPageRightWidget</name> ++ <message> ++ <source>Begin Scan</source> ++ <translation type="vanished">开始扫描</translation> ++ </message> ++ <message> ++ <source>Device</source> ++ <translation type="vanished">设备</translation> ++ </message> ++ <message> ++ <source>Scanner device</source> ++ <translation type="vanished">扫描仪设备</translation> ++ </message> ++ <message> ++ <source>Time</source> ++ <translation type="vanished">延时</translation> ++ </message> ++ <message> ++ <source>File settings</source> ++ <translation type="vanished">文件预设</translation> ++ </message> ++ <message> ++ <source>Pages</source> ++ <translation type="vanished">页数</translation> ++ </message> ++ <message> ++ <source>Type</source> ++ <translation type="vanished">类型</translation> ++ </message> ++ <message> ++ <source>Color</source> ++ <translation type="vanished">色彩</translation> ++ </message> ++ <message> ++ <source>Resolution</source> ++ <translation type="vanished">分辨率</translation> ++ </message> ++ <message> ++ <source>Size</source> ++ <translation type="vanished">尺寸</translation> ++ </message> ++ <message> ++ <source>Format</source> ++ <translation type="vanished">格式</translation> ++ </message> ++ <message> ++ <source>Name</source> ++ <translation type="vanished">名称</translation> ++ </message> ++ <message> ++ <source>Save</source> ++ <translation type="vanished">扫描至</translation> ++ </message> ++ <message> ++ <source>Send email</source> ++ <translation type="vanished">发送至邮箱</translation> ++ </message> ++ <message> ++ <source>Save as</source> ++ <translation type="vanished">另存为</translation> ++ </message> ++</context> ++<context> ++ <name>DetectPageWidget</name> ++ <message> ++ <source>Detect scanners, please waiting ...</source> ++ <translation type="vanished">检测扫描设备中,请稍后 ……</translation> ++ </message> ++ <message> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> ++ <source>Detect scanners, please waiting</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>FailedPageWidget</name> ++ <message> ++ <source>Not detect scanners, please connect scanners firstly!</source> ++ <translation type="vanished">未检测到可用扫描设备,请先连接扫描设备</translation> ++ </message> ++ <message> ++ <location filename="../src/failedpagewidget.cpp" line="65"/> ++ <source>No available scan devices</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/failedpagewidget.cpp" line="69"/> ++ <source>Connect</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ImageOperationOCR</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++ <message> ++ <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> ++ <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> ++ <source>Unable to read text, please retrey</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>KYCAboutDialog</name> ++ <message> ++ <location filename="../src/about/about.ui" line="26"/> ++ <source>Dialog</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> ++ <translation type="vanished">扫描是一款可用于普通扫描、一键美化、智能纠偏和文字识别的界面友好扫描仪软件。</translation> ++ </message> ++ <message> ++ <source>Service & Support : </source> ++ <translation type="vanished">服务与支持团队:</translation> ++ </message> ++ <message> ++ <source>About</source> ++ <translation type="vanished">关于</translation> ++ </message> ++ <message> ++ <source>Version: </source> ++ <translation type="vanished">版本</translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++</context> ++<context> ++ <name>LeftSuccessPageWidget</name> ++ <message> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> ++ <source>Connect scanners, please click scan button to start scanning.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> ++ <source>No scanner detected, plug in a new scanner to refresh the device list.</source> ++ <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>MainWidget</name> ++ <message> ++ <source>kylin-scanner</source> ++ <translation type="vanished">麒麟扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="70"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Yes</source> ++ <translation type="vanished">是</translation> ++ </message> ++ <message> ++ <source>There is a new scanner connect, please restart this application manually. </source> ++ <translation type="vanished">存在新设备连接,请手动重启应用使用该新设备。</translation> ++ </message> ++ <message> ++ <source>There is a new scanner connect, redetect all scanners, please wait a moment. </source> ++ <translation type="vanished">存在新设备连接,正在重新检测所有扫描设备,请稍等。</translation> ++ </message> ++ <message> ++ <source>No available device</source> ++ <translation type="vanished">无可用设备</translation> ++ </message> ++ <message> ++ <source>device </source> ++ <translation type="vanished">设备 </translation> ++ </message> ++ <message> ++ <source> has been disconnect.</source> ++ <translation type="vanished"> 已经断开连接!</translation> ++ </message> ++ <message> ++ <source>Single</source> ++ <translation type="vanished">单页扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="474"/> ++ <source>Invalid argument, please change arguments or switch other scanners.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>error code:</source> ++ <translation type="vanished">错误码:</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="537"/> ++ <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> ++ <translation type="vanished">检测到用户手动休眠。请检查扫描仪状态。如果扫描无法继续,则需要手动单击“取消”或刷新列表以恢复设备扫描功能。</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="619"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="619"/> ++ <source>A new Scanner has been connected.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>error code: </source> ++ <translation type="vanished">错误码:</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="172"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="506"/> ++ <source>Device busy, please wait or switch other scanners.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="510"/> ++ <source>Document feeder out of documents, please place papers and scan again.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="514"/> ++ <source>Scan operation has been cancelled.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="518"/> ++ <source>Scan failed, operation is not supported.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="521"/> ++ <source>Scan failed, Document fedder jammed.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="524"/> ++ <source>Scan failed, Error during device I/O.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="527"/> ++ <source>Scan failed, Out of memory.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="530"/> ++ <source>Scan failed, Access to resource has been denied.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="533"/> ++ <source>Scan failed, Scanner cover is open.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="584"/> ++ <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="589"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="590"/> ++ <source>Restart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scan failed, please check your scanner or switch other scanners.</source> ++ <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="660"/> ++ <source>Running beauty ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="682"/> ++ <source>Running rectify ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>NoDeviceWidget</name> ++ <message> ++ <location filename="../src/nodevicewidget.cpp" line="43"/> ++ <source>Scanner not detected</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>NoMailDialog</name> ++ <message> ++ <location filename="../src/sendmail.cpp" line="54"/> ++ <location filename="../src/sendmail.cpp" line="77"/> ++ <location filename="../src/sendmail.cpp" line="78"/> ++ <source>No email client</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="61"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="89"/> ++ <source>Not find email client in the system, please install email client firstly.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="103"/> ++ <source>Install</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="101"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>OcrObject</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++</context> ++<context> ++ <name>OcrThread</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++</context> ++<context> ++ <name>QApplication</name> ++ <message> ++ <location filename="../src/main.cpp" line="176"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/saneobject.cpp" line="327"/> ++ <location filename="../src/saneobject.cpp" line="450"/> ++ <location filename="../src/saneobject.cpp" line="511"/> ++ <location filename="../src/scansettingswidget.cpp" line="531"/> ++ <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Fail to open the scanner, error code </source> ++ <translation type="vanished">打开扫描仪失败,错误代码</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="588"/> ++ <source>Fail to open the scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2085"/> ++ <source>Auto</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="450"/> ++ <location filename="../src/saneobject.cpp" line="511"/> ++ <location filename="../src/scansettingswidget.cpp" line="210"/> ++ <location filename="../src/scansettingswidget.cpp" line="531"/> ++ <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="59"/> ++ <source>Refreshing list. Please wait for the refresh success information...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="65"/> ++ <source>Scanner is on detecting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <source>Single</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>QObject</name> ++ <message> ++ <source>User </source> ++ <translation type="vanished">用户</translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="287"/> ++ <source>Question</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="284"/> ++ <source>Current </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="284"/> ++ <source> User</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="285"/> ++ <source> has already opened kylin-scanner, open will close </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="286"/> ++ <source>'s operations. Are you continue?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="660"/> ++ <source>Color</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="667"/> ++ <source>Gray</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="673"/> ++ <source>Lineart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="738"/> ++ <source>Default Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="817"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="827"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="836"/> ++ <source>ADF Front</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="845"/> ++ <source>ADF Back</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="854"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="904"/> ++ <location filename="../src/saneobject.cpp" line="968"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="907"/> ++ <location filename="../src/saneobject.cpp" line="972"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="910"/> ++ <location filename="../src/saneobject.cpp" line="976"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="913"/> ++ <location filename="../src/saneobject.cpp" line="980"/> ++ <source>600 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="916"/> ++ <location filename="../src/saneobject.cpp" line="984"/> ++ <source>300 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="919"/> ++ <location filename="../src/saneobject.cpp" line="988"/> ++ <source>200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="922"/> ++ <location filename="../src/saneobject.cpp" line="992"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="925"/> ++ <location filename="../src/saneobject.cpp" line="996"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="928"/> ++ <location filename="../src/saneobject.cpp" line="1000"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="946"/> ++ <location filename="../src/saneobject.cpp" line="1016"/> ++ <source>Auto</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>RunningDialog</name> ++ <message> ++ <location filename="../src/runningdialog.cpp" line="55"/> ++ <location filename="../src/runningdialog.cpp" line="141"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/runningdialog.cpp" line="84"/> ++ <location filename="../src/runningdialog.cpp" line="170"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>SaneObject</name> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2011"/> ++ <source>Default Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2003"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="416"/> ++ <source>Refresh list complete.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2005"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2007"/> ++ <source>ADF Front</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2009"/> ++ <source>ADF Back</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Lineart</source> ++ <translation type="vanished">黑白</translation> ++ </message> ++ <message> ++ <source>Gray</source> ++ <translation type="vanished">灰度</translation> ++ </message> ++ <message> ++ <source>Color</source> ++ <translation type="vanished">彩色</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2013"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Auto</source> ++ <translation type="vanished">自动</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2089"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2091"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2093"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2095"/> ++ <source>200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2097"/> ++ <source>300 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2099"/> ++ <source>600 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2101"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2103"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2105"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Multiple</source> ++ <translation type="vanished">多页扫描</translation> ++ </message> ++</context> ++<context> ++ <name>ScanDialog</name> ++ <message> ++ <location filename="../src/scandialog.cpp" line="47"/> ++ <location filename="../src/scandialog.cpp" line="62"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="66"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="184"/> ++ <source>Number of pages scanning: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Number of pages being scanned: </source> ++ <translation type="vanished">正在扫描页数:</translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="98"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="153"/> ++ <source>Canceling scan,please wait a moment!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="182"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ScanSettingsWidget</name> ++ <message> ++ <source>Begin Scan</source> ++ <translation type="vanished">开始扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <source>Scanner device</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Time</source> ++ <translation type="vanished">延时</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <source>File settings</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <source>Device</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <source>Select a directory</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <source>Currently user has no permission to modify directory </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <source>Flatbed scan mode not support multiple scan.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="217"/> ++ <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <source>This resolution will take a long time to scan, please choose carelly.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <source>Pages</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <source>Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="281"/> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Color</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <source>Resolution</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <source>Size</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <source>Format</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <source>Name</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <source>scanner01</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <source>Save</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="617"/> ++ <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <source>Mail to</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Send email</source> ++ <translation type="vanished">发送至邮箱</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="796"/> ++ <location filename="../src/scansettingswidget.cpp" line="1148"/> ++ <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <source>Save as</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>No available scanners</source> ++ <translation type="vanished">无可用设备</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> ++ <location filename="../src/scansettingswidget.cpp" line="238"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <source>Single</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>This resolution will take a loog time to scan, please choose carelly.</source> ++ <translation type="vanished">该分辨率将会花费很长时间扫描,请谨慎选择!</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <source>cannot contain '/' character.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="332"/> ++ <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <source>cannot save as hidden file.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <source>Save As</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <source>Path without access rights: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <source>File path that does not exist: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <source>Start Scan</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1139"/> ++ <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <source>Store text</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Save as dialog</source> ++ <translation type="vanished">另存为</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <source>The file </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source> already exists, do you want to overwrite it?</source> ++ <translation type="vanished">已存在,您想覆盖它吗?</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <source>tips</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <source>Colour</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>3s</source> ++ <translation type="vanished">3 秒</translation> ++ </message> ++ <message> ++ <source>5s</source> ++ <translation type="vanished">5 秒</translation> ++ </message> ++ <message> ++ <source>7s</source> ++ <translation type="vanished">7 秒</translation> ++ </message> ++ <message> ++ <source>10s</source> ++ <translation type="vanished">10 秒</translation> ++ </message> ++ <message> ++ <source>15s</source> ++ <translation type="vanished">15 秒</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="269"/> ++ <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Gray</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Cancel</source> ++ <translation type="vanished">取消</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="283"/> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Lineart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <source>Resolution is empty!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <source>A4</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <source>A5</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanning images's length cannot be large than 252</source> ++ <translation type="vanished">扫描文档名称的长度不能超过252。</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1365"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <source>Yes</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ScanThread</name> ++ <message> ++ <source>Multiple</source> ++ <translation type="vanished">多页扫描</translation> ++ </message> ++ <message> ++ <source>3s</source> ++ <translation type="vanished">3 秒</translation> ++ </message> ++ <message> ++ <source>5s</source> ++ <translation type="vanished">5 秒</translation> ++ </message> ++ <message> ++ <source>7s</source> ++ <translation type="vanished">7 秒</translation> ++ </message> ++ <message> ++ <source>10s</source> ++ <translation type="vanished">10 秒</translation> ++ </message> ++ <message> ++ <source>15s</source> ++ <translation type="vanished">15 秒</translation> ++ </message> ++</context> ++<context> ++ <name>SendMailDialog</name> ++ <message> ++ <location filename="../src/sendmail.cpp" line="198"/> ++ <location filename="../src/sendmail.cpp" line="222"/> ++ <source>Select email client</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="204"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="207"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="240"/> ++ <location filename="../src/sendmail.cpp" line="241"/> ++ <source>Confirm</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ShowImageWidget</name> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="66"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="74"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <source>Canceling...Please waiting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <source>Running beauty ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <source>Running rectify ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>TitleBar</name> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="29"/> ++ <source>Form</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="107"/> ++ <source>kylin-scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="110"/> ++ <location filename="../src/titlebar/titlebar.cpp" line="194"/> ++ <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="173"/> ++ <source>Option</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="176"/> ++ <source>...</source> ++ <translation></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="217"/> ++ <source>Minimize</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="258"/> ++ <location filename="../src/titlebar/titlebar.cpp" line="145"/> ++ <source>Maximize</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="305"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Maxmize</source> ++ <translation type="vanished">最大化</translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="53"/> ++ <source>Refresh List</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="70"/> ++ <source>Help</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="74"/> ++ <source>About</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="76"/> ++ <source>Version: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="77"/> ++ <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="87"/> ++ <source>Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="142"/> ++ <source>Restore</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="192"/> ++ <source>The current file is not saved. Do you want to save it?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>The current document is not saved. Do you want to save it?</source> ++ <translation type="vanished">当前文档未保存,是否保存?</translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="196"/> ++ <source>Straight &Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="197"/> ++ <source>&Save Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ToolBarWidget</name> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="64"/> ++ <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <source>Beauty</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="70"/> ++ <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <source>Rectify</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="76"/> ++ <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <source>OCR</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="84"/> ++ <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <source>Crop</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="90"/> ++ <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <source>Rotate</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="96"/> ++ <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <source>Mirror</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="102"/> ++ <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <source>Watermark</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="121"/> ++ <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <source>ZoomIn</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="115"/> ++ <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <source>ZoomOut</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>UsbHotplugThread</name> ++ <message> ++ <source>device </source> ++ <translation type="vanished">设备 </translation> ++ </message> ++ <message> ++ <source> has been disconnect.</source> ++ <translation type="vanished"> 已经断开连接!</translation> ++ </message> ++ <message> ++ <source>device has been disconnect.</source> ++ <translation type="vanished">设备已断开!</translation> ++ </message> ++ <message> ++ <source>Scanner has been disconnect.</source> ++ <translation type="vanished">扫描仪已断开连接!</translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="95"/> ++ <source>Querying scanner device. Please waitting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="119"/> ++ <source>New Scanner has been Connected.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="129"/> ++ <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="135"/> ++ <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="150"/> ++ <source>Scanner list refresh complete.</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>WaittingDialog</name> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="46"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="59"/> ++ <source>Searching for scanner...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>WatermarkDialog</name> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <source>Add watermark</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <source>Confirm</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>main</name> ++ <message> ++ <location filename="../src/main.cpp" line="200"/> ++ <source>Open file <filename></source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/main.cpp" line="201"/> ++ <source>Filename</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/main.cpp" line="205"/> ++ <source>Hide scan settings widget</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>newDeviceListPage</name> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Name</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Symbol</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="62"/> ++ <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="62"/> ++ <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="71"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="84"/> ++ <source>Device List</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="97"/> ++ <location filename="../src/newdevicelistpage.cpp" line="117"/> ++ <location filename="../src/newdevicelistpage.cpp" line="309"/> ++ <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="98"/> ++ <source>Next</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="118"/> ++ <source>Before</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="119"/> ++ <source>Install</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <source>Printer</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <source>Device Name:</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <source>Driver Name:</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <source>This driver is from third party, may cause some unmetable result.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <source>No available drivers, do you want to manually add drivers?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <source>Add</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="344"/> ++ <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <source>Installing driver...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Installation successful. Do you want to use this scanner now?</source> ++ <translation type="vanished">安装成功。你想现在使用这个扫描仪吗?</translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <source>Use</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <source>Installation failed.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <source>Select a directory</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>showOcrWidget</name> ++ <message> ++ <location filename="../src/showocrwidget.cpp" line="48"/> ++ <location filename="../src/showocrwidget.cpp" line="157"/> ++ <location filename="../src/showocrwidget.cpp" line="165"/> ++ <source>The document is in character recognition ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++</TS> diff -Nru kylin-scanner-3.2.1/debian/patches/0033-Added-translation-using-Weblate-Vietnamese.patch kylin-scanner-3.2.1/debian/patches/0033-Added-translation-using-Weblate-Vietnamese.patch --- kylin-scanner-3.2.1/debian/patches/0033-Added-translation-using-Weblate-Vietnamese.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0033-Added-translation-using-Weblate-Vietnamese.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,1580 @@ +From: KevinDuan <duankaiwen@kylinos.cn> +Date: Mon, 17 Feb 2025 14:59:44 +0800 +Subject: Added translation using Weblate (Vietnamese) + +--- + translations/kylin-scanner_vi.ts | 1565 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 1565 insertions(+) + create mode 100644 translations/kylin-scanner_vi.ts + +diff --git a/translations/kylin-scanner_vi.ts b/translations/kylin-scanner_vi.ts +new file mode 100644 +index 0000000..11ec94d +--- /dev/null ++++ b/translations/kylin-scanner_vi.ts +@@ -0,0 +1,1565 @@ ++<?xml version="1.0" encoding="utf-8"?> ++<!DOCTYPE TS> ++<TS version="2.1" language="vi"> ++<context> ++ <name>AboutDialog</name> ++ <message> ++ <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> ++ <translation type="vanished">扫描是一款可用于普通扫描、一键美化、智能纠偏和文字识别的界面友好扫描仪软件。</translation> ++ </message> ++ <message> ++ <source>Service & Support : </source> ++ <translation type="vanished">服务与支持团队:</translation> ++ </message> ++ <message> ++ <source>About</source> ++ <translation type="vanished">关于</translation> ++ </message> ++ <message> ++ <source>Version: </source> ++ <translation type="vanished">版本</translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectFailedPageWidget</name> ++ <message> ++ <source>Not detect scanners, please connect scanners firstly!</source> ++ <translation type="vanished">未检测到可用扫描设备,请先连接扫描设备</translation> ++ </message> ++ <message> ++ <source>Connect</source> ++ <translation type="vanished">连接扫描仪</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectSuccessPageLeftWidget</name> ++ <message> ++ <source>Connect scanners, please click scan button to start scanning.</source> ++ <translation type="vanished">已连接扫描设备,点击按钮开始扫描</translation> ++ </message> ++</context> ++<context> ++ <name>DefaultConnectSuccessPageRightWidget</name> ++ <message> ++ <source>Begin Scan</source> ++ <translation type="vanished">开始扫描</translation> ++ </message> ++ <message> ++ <source>Device</source> ++ <translation type="vanished">设备</translation> ++ </message> ++ <message> ++ <source>Scanner device</source> ++ <translation type="vanished">扫描仪设备</translation> ++ </message> ++ <message> ++ <source>Time</source> ++ <translation type="vanished">延时</translation> ++ </message> ++ <message> ++ <source>File settings</source> ++ <translation type="vanished">文件预设</translation> ++ </message> ++ <message> ++ <source>Pages</source> ++ <translation type="vanished">页数</translation> ++ </message> ++ <message> ++ <source>Type</source> ++ <translation type="vanished">类型</translation> ++ </message> ++ <message> ++ <source>Color</source> ++ <translation type="vanished">色彩</translation> ++ </message> ++ <message> ++ <source>Resolution</source> ++ <translation type="vanished">分辨率</translation> ++ </message> ++ <message> ++ <source>Size</source> ++ <translation type="vanished">尺寸</translation> ++ </message> ++ <message> ++ <source>Format</source> ++ <translation type="vanished">格式</translation> ++ </message> ++ <message> ++ <source>Name</source> ++ <translation type="vanished">名称</translation> ++ </message> ++ <message> ++ <source>Save</source> ++ <translation type="vanished">扫描至</translation> ++ </message> ++ <message> ++ <source>Send email</source> ++ <translation type="vanished">发送至邮箱</translation> ++ </message> ++ <message> ++ <source>Save as</source> ++ <translation type="vanished">另存为</translation> ++ </message> ++</context> ++<context> ++ <name>DetectPageWidget</name> ++ <message> ++ <source>Detect scanners, please waiting ...</source> ++ <translation type="vanished">检测扫描设备中,请稍后 ……</translation> ++ </message> ++ <message> ++ <location filename="../src/detectpagewidget.cpp" line="33"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <source>Detect scanners, please waiting</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>FailedPageWidget</name> ++ <message> ++ <source>Not detect scanners, please connect scanners firstly!</source> ++ <translation type="vanished">未检测到可用扫描设备,请先连接扫描设备</translation> ++ </message> ++ <message> ++ <location filename="../src/failedpagewidget.cpp" line="65"/> ++ <source>No available scan devices</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/failedpagewidget.cpp" line="69"/> ++ <source>Connect</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ImageOperationOCR</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++ <message> ++ <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> ++ <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> ++ <source>Unable to read text, please retrey</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>KYCAboutDialog</name> ++ <message> ++ <location filename="../src/about/about.ui" line="26"/> ++ <source>Dialog</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> ++ <translation type="vanished">扫描是一款可用于普通扫描、一键美化、智能纠偏和文字识别的界面友好扫描仪软件。</translation> ++ </message> ++ <message> ++ <source>Service & Support : </source> ++ <translation type="vanished">服务与支持团队:</translation> ++ </message> ++ <message> ++ <source>About</source> ++ <translation type="vanished">关于</translation> ++ </message> ++ <message> ++ <source>Version: </source> ++ <translation type="vanished">版本</translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++</context> ++<context> ++ <name>LeftSuccessPageWidget</name> ++ <message> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> ++ <source>Connect scanners, please click scan button to start scanning.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> ++ <source>No scanner detected, plug in a new scanner to refresh the device list.</source> ++ <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>MainWidget</name> ++ <message> ++ <source>kylin-scanner</source> ++ <translation type="vanished">麒麟扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="70"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Yes</source> ++ <translation type="vanished">是</translation> ++ </message> ++ <message> ++ <source>There is a new scanner connect, please restart this application manually. </source> ++ <translation type="vanished">存在新设备连接,请手动重启应用使用该新设备。</translation> ++ </message> ++ <message> ++ <source>There is a new scanner connect, redetect all scanners, please wait a moment. </source> ++ <translation type="vanished">存在新设备连接,正在重新检测所有扫描设备,请稍等。</translation> ++ </message> ++ <message> ++ <source>No available device</source> ++ <translation type="vanished">无可用设备</translation> ++ </message> ++ <message> ++ <source>device </source> ++ <translation type="vanished">设备 </translation> ++ </message> ++ <message> ++ <source> has been disconnect.</source> ++ <translation type="vanished"> 已经断开连接!</translation> ++ </message> ++ <message> ++ <source>Single</source> ++ <translation type="vanished">单页扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="474"/> ++ <source>Invalid argument, please change arguments or switch other scanners.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>error code:</source> ++ <translation type="vanished">错误码:</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="537"/> ++ <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> ++ <translation type="vanished">检测到用户手动休眠。请检查扫描仪状态。如果扫描无法继续,则需要手动单击“取消”或刷新列表以恢复设备扫描功能。</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="619"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="619"/> ++ <source>A new Scanner has been connected.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>error code: </source> ++ <translation type="vanished">错误码:</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="172"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="506"/> ++ <source>Device busy, please wait or switch other scanners.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="510"/> ++ <source>Document feeder out of documents, please place papers and scan again.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="514"/> ++ <source>Scan operation has been cancelled.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="518"/> ++ <source>Scan failed, operation is not supported.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="521"/> ++ <source>Scan failed, Document fedder jammed.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="524"/> ++ <source>Scan failed, Error during device I/O.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="527"/> ++ <source>Scan failed, Out of memory.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="530"/> ++ <source>Scan failed, Access to resource has been denied.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="533"/> ++ <source>Scan failed, Scanner cover is open.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="584"/> ++ <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="589"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="590"/> ++ <source>Restart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scan failed, please check your scanner or switch other scanners.</source> ++ <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="660"/> ++ <source>Running beauty ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/mainwidget.cpp" line="682"/> ++ <source>Running rectify ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>NoDeviceWidget</name> ++ <message> ++ <location filename="../src/nodevicewidget.cpp" line="43"/> ++ <source>Scanner not detected</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>NoMailDialog</name> ++ <message> ++ <location filename="../src/sendmail.cpp" line="54"/> ++ <location filename="../src/sendmail.cpp" line="77"/> ++ <location filename="../src/sendmail.cpp" line="78"/> ++ <source>No email client</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation type="vanished">扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="61"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="89"/> ++ <source>Not find email client in the system, please install email client firstly.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="103"/> ++ <source>Install</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="101"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>OcrObject</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++</context> ++<context> ++ <name>OcrThread</name> ++ <message> ++ <source>Unable to read text</source> ++ <translation type="vanished">不能识别到文本。</translation> ++ </message> ++</context> ++<context> ++ <name>QApplication</name> ++ <message> ++ <location filename="../src/main.cpp" line="176"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/saneobject.cpp" line="327"/> ++ <location filename="../src/saneobject.cpp" line="450"/> ++ <location filename="../src/saneobject.cpp" line="511"/> ++ <location filename="../src/scansettingswidget.cpp" line="531"/> ++ <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Fail to open the scanner, error code </source> ++ <translation type="vanished">打开扫描仪失败,错误代码</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="588"/> ++ <source>Fail to open the scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2085"/> ++ <source>Auto</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="450"/> ++ <location filename="../src/saneobject.cpp" line="511"/> ++ <location filename="../src/scansettingswidget.cpp" line="210"/> ++ <location filename="../src/scansettingswidget.cpp" line="531"/> ++ <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="59"/> ++ <source>Refreshing list. Please wait for the refresh success information...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="65"/> ++ <source>Scanner is on detecting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <source>Single</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>QObject</name> ++ <message> ++ <source>User </source> ++ <translation type="vanished">用户</translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="287"/> ++ <source>Question</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="284"/> ++ <source>Current </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="284"/> ++ <source> User</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="285"/> ++ <source> has already opened kylin-scanner, open will close </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/singleapplication.cpp" line="286"/> ++ <source>'s operations. Are you continue?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="660"/> ++ <source>Color</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="667"/> ++ <source>Gray</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="673"/> ++ <source>Lineart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="738"/> ++ <source>Default Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="817"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="827"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="836"/> ++ <source>ADF Front</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="845"/> ++ <source>ADF Back</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="854"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="904"/> ++ <location filename="../src/saneobject.cpp" line="968"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="907"/> ++ <location filename="../src/saneobject.cpp" line="972"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="910"/> ++ <location filename="../src/saneobject.cpp" line="976"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="913"/> ++ <location filename="../src/saneobject.cpp" line="980"/> ++ <source>600 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="916"/> ++ <location filename="../src/saneobject.cpp" line="984"/> ++ <source>300 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="919"/> ++ <location filename="../src/saneobject.cpp" line="988"/> ++ <source>200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="922"/> ++ <location filename="../src/saneobject.cpp" line="992"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="925"/> ++ <location filename="../src/saneobject.cpp" line="996"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="928"/> ++ <location filename="../src/saneobject.cpp" line="1000"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="946"/> ++ <location filename="../src/saneobject.cpp" line="1016"/> ++ <source>Auto</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>RunningDialog</name> ++ <message> ++ <location filename="../src/runningdialog.cpp" line="55"/> ++ <location filename="../src/runningdialog.cpp" line="141"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/runningdialog.cpp" line="84"/> ++ <location filename="../src/runningdialog.cpp" line="170"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>SaneObject</name> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2011"/> ++ <source>Default Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2003"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="416"/> ++ <source>Refresh list complete.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2005"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2007"/> ++ <source>ADF Front</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2009"/> ++ <source>ADF Back</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Lineart</source> ++ <translation type="vanished">黑白</translation> ++ </message> ++ <message> ++ <source>Gray</source> ++ <translation type="vanished">灰度</translation> ++ </message> ++ <message> ++ <source>Color</source> ++ <translation type="vanished">彩色</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2013"/> ++ <source>ADF Duplex</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Auto</source> ++ <translation type="vanished">自动</translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2089"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2091"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2093"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2095"/> ++ <source>200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2097"/> ++ <source>300 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2099"/> ++ <source>600 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2101"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2103"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/saneobject.cpp" line="2105"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Multiple</source> ++ <translation type="vanished">多页扫描</translation> ++ </message> ++</context> ++<context> ++ <name>ScanDialog</name> ++ <message> ++ <location filename="../src/scandialog.cpp" line="47"/> ++ <location filename="../src/scandialog.cpp" line="62"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="66"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="184"/> ++ <source>Number of pages scanning: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Number of pages being scanned: </source> ++ <translation type="vanished">正在扫描页数:</translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="98"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="153"/> ++ <source>Canceling scan,please wait a moment!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scandialog.cpp" line="182"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ScanSettingsWidget</name> ++ <message> ++ <source>Begin Scan</source> ++ <translation type="vanished">开始扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <source>Scanner device</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Time</source> ++ <translation type="vanished">延时</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <source>File settings</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <source>Device</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <source>Select a directory</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <source>Currently user has no permission to modify directory </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <source>Flatbed scan mode not support multiple scan.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="217"/> ++ <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <source>Multiple</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <source>This resolution will take a long time to scan, please choose carelly.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <source>Pages</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <source>Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="281"/> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Color</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <source>Resolution</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <source>Size</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <source>Format</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <source>Name</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <source>scanner01</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <source>Save</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="617"/> ++ <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <source>Mail to</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Send email</source> ++ <translation type="vanished">发送至邮箱</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="796"/> ++ <location filename="../src/scansettingswidget.cpp" line="1148"/> ++ <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <source>Save as</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>No available scanners</source> ++ <translation type="vanished">无可用设备</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> ++ <location filename="../src/scansettingswidget.cpp" line="238"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <source>Single</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <source>4800 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <source>2400 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <source>1200 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>This resolution will take a loog time to scan, please choose carelly.</source> ++ <translation type="vanished">该分辨率将会花费很长时间扫描,请谨慎选择!</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <source>cannot contain '/' character.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="332"/> ++ <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <source>cannot save as hidden file.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <source>Save As</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <source>Path without access rights: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <source>File path that does not exist: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <source>Start Scan</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1139"/> ++ <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <source>Store text</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Save as dialog</source> ++ <translation type="vanished">另存为</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <source>The file </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source> already exists, do you want to overwrite it?</source> ++ <translation type="vanished">已存在,您想覆盖它吗?</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <source>tips</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <source>Colour</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>3s</source> ++ <translation type="vanished">3 秒</translation> ++ </message> ++ <message> ++ <source>5s</source> ++ <translation type="vanished">5 秒</translation> ++ </message> ++ <message> ++ <source>7s</source> ++ <translation type="vanished">7 秒</translation> ++ </message> ++ <message> ++ <source>10s</source> ++ <translation type="vanished">10 秒</translation> ++ </message> ++ <message> ++ <source>15s</source> ++ <translation type="vanished">15 秒</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="269"/> ++ <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <source>Flatbed</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <source>ADF</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Gray</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Cancel</source> ++ <translation type="vanished">取消</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="283"/> ++ <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <source>Lineart</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>75 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>100 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <source>150 dpi</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <source>Resolution is empty!</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <source>A4</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <source>A5</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Scanning images's length cannot be large than 252</source> ++ <translation type="vanished">扫描文档名称的长度不能超过252。</translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1365"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <source>Yes</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ScanThread</name> ++ <message> ++ <source>Multiple</source> ++ <translation type="vanished">多页扫描</translation> ++ </message> ++ <message> ++ <source>3s</source> ++ <translation type="vanished">3 秒</translation> ++ </message> ++ <message> ++ <source>5s</source> ++ <translation type="vanished">5 秒</translation> ++ </message> ++ <message> ++ <source>7s</source> ++ <translation type="vanished">7 秒</translation> ++ </message> ++ <message> ++ <source>10s</source> ++ <translation type="vanished">10 秒</translation> ++ </message> ++ <message> ++ <source>15s</source> ++ <translation type="vanished">15 秒</translation> ++ </message> ++</context> ++<context> ++ <name>SendMailDialog</name> ++ <message> ++ <location filename="../src/sendmail.cpp" line="198"/> ++ <location filename="../src/sendmail.cpp" line="222"/> ++ <source>Select email client</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="204"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="207"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/sendmail.cpp" line="240"/> ++ <location filename="../src/sendmail.cpp" line="241"/> ++ <source>Confirm</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ShowImageWidget</name> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="66"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="74"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <source>Canceling...Please waiting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <source>Running beauty ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <source>Running rectify ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>TitleBar</name> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="29"/> ++ <source>Form</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="107"/> ++ <source>kylin-scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="110"/> ++ <location filename="../src/titlebar/titlebar.cpp" line="194"/> ++ <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="176"/> ++ <source>Option</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="179"/> ++ <source>...</source> ++ <translation></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="220"/> ++ <source>Minimize</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="261"/> ++ <location filename="../src/titlebar/titlebar.cpp" line="145"/> ++ <source>Maximize</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.ui" line="308"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Maxmize</source> ++ <translation type="vanished">最大化</translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="53"/> ++ <source>Refresh List</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="70"/> ++ <source>Help</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="74"/> ++ <source>About</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="76"/> ++ <source>Version: </source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="77"/> ++ <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="87"/> ++ <source>Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="142"/> ++ <source>Restore</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="192"/> ++ <source>The current file is not saved. Do you want to save it?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>The current document is not saved. Do you want to save it?</source> ++ <translation type="vanished">当前文档未保存,是否保存?</translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="196"/> ++ <source>Straight &Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/titlebar/titlebar.cpp" line="197"/> ++ <source>&Save Exit</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>ToolBarWidget</name> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="64"/> ++ <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <source>Beauty</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="70"/> ++ <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <source>Rectify</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="76"/> ++ <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <source>OCR</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="84"/> ++ <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <source>Crop</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="90"/> ++ <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <source>Rotate</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="96"/> ++ <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <source>Mirror</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="102"/> ++ <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <source>Watermark</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="121"/> ++ <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <source>ZoomIn</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/toolbarwidget.cpp" line="115"/> ++ <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <source>ZoomOut</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>UsbHotplugThread</name> ++ <message> ++ <source>device </source> ++ <translation type="vanished">设备 </translation> ++ </message> ++ <message> ++ <source> has been disconnect.</source> ++ <translation type="vanished"> 已经断开连接!</translation> ++ </message> ++ <message> ++ <source>device has been disconnect.</source> ++ <translation type="vanished">设备已断开!</translation> ++ </message> ++ <message> ++ <source>Scanner has been disconnect.</source> ++ <translation type="vanished">扫描仪已断开连接!</translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="95"/> ++ <source>Querying scanner device. Please waitting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="119"/> ++ <source>New Scanner has been Connected.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="129"/> ++ <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="135"/> ++ <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/usbhotplugthread.cpp" line="150"/> ++ <source>Scanner list refresh complete.</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>WaittingDialog</name> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="46"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="59"/> ++ <source>Searching for scanner...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>WatermarkDialog</name> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <source>Add watermark</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <source>Confirm</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>main</name> ++ <message> ++ <location filename="../src/main.cpp" line="200"/> ++ <source>Open file <filename></source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/main.cpp" line="201"/> ++ <source>Filename</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/main.cpp" line="205"/> ++ <source>Hide scan settings widget</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>newDeviceListPage</name> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Name</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Symbol</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="54"/> ++ <source>Type</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="62"/> ++ <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <source>Alert</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="62"/> ++ <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="71"/> ++ <source>Close</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="84"/> ++ <source>Device List</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="97"/> ++ <location filename="../src/newdevicelistpage.cpp" line="117"/> ++ <location filename="../src/newdevicelistpage.cpp" line="309"/> ++ <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <source>Cancel</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="98"/> ++ <source>Next</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="118"/> ++ <source>Before</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="119"/> ++ <source>Install</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <source>Scanner</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <source>Printer</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <source>Device Name:</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <source>Driver Name:</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <source>This driver is from third party, may cause some unmetable result.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <source>No available drivers, do you want to manually add drivers?</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <source>Add</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="344"/> ++ <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <source>Installing driver...</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <source>Installation successful. Do you want to use this scanner now?</source> ++ <translation type="vanished">安装成功。你想现在使用这个扫描仪吗?</translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <source>Use</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <source>Installation failed.</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <source>Ok</source> ++ <translation type="unfinished"></translation> ++ </message> ++ <message> ++ <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <source>Select a directory</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++<context> ++ <name>showOcrWidget</name> ++ <message> ++ <location filename="../src/showocrwidget.cpp" line="48"/> ++ <location filename="../src/showocrwidget.cpp" line="157"/> ++ <location filename="../src/showocrwidget.cpp" line="165"/> ++ <source>The document is in character recognition ...</source> ++ <translation type="unfinished"></translation> ++ </message> ++</context> ++</TS> diff -Nru kylin-scanner-3.2.1/debian/patches/0034-33-fix.patch kylin-scanner-3.2.1/debian/patches/0034-33-fix.patch --- kylin-scanner-3.2.1/debian/patches/0034-33-fix.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0034-33-fix.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,17985 @@ +From: =?utf-8?b?6IyD5pix6L6w?= <fanyuchen@kylinos.cn> +Date: Wed, 19 Feb 2025 07:46:56 +0000 +Subject: =?utf-8?b?ITMzIGZpeOe/u+ivkSBNZXJnZSBwdWxsIHJlcXVlc3QgITMzIGZyb20g?= + =?utf-8?b?6IyD5pix6L6wL29wZW5reWxpbi9uaWxl?= + +--- + kylin-scanner.pro | 70 +-- + kylin-scanner.pro.user | 314 +++++++++++ + src/crop.cpp | 4 +- + src/customtablewidget.cpp | 1 + + src/detectpagewidget.cpp | 1 - + src/detectpagewidget.h | 2 +- + src/device/common.cpp | 139 ----- + src/device/common.h | 18 - + src/device/deviceFinder.cpp | 8 +- + src/device/device_information.cpp | 1 + + src/device/device_information.h | 2 + + src/device/network_device_detector.cpp | 196 ------- + src/device/network_device_detector.h | 67 --- + src/device/snmpFinder.cpp | 49 +- + src/device/snmpFinder.h | 4 + + src/device/snmpwalk_browser.cpp | 201 ------- + src/device/snmpwalk_browser.h | 62 --- + src/device/ukui_apt.cpp | 16 +- + src/device/ukui_apt.h | 7 +- + src/device/usbFinder.cpp | 40 +- + src/displaywidget.cpp | 2 +- + src/failedpagewidget.cpp | 2 +- + src/failedpagewidget.h | 1 - + src/globalsignal.cpp | 6 +- + src/imageBaseOP/createofd.cpp | 166 ++++++ + src/imageBaseOP/createofd.h | 31 ++ + src/imageBaseOP/imageconverter.cpp | 19 - + src/imageBaseOP/imageconverter.h | 19 - + src/imageBaseOP/loadimage.cpp | 5 + + src/imageBaseOP/pngsaver.cpp | 38 -- + src/imageBaseOP/pngsaver.h | 40 -- + src/imageBaseOP/savefilebase.cpp | 48 +- + src/imageBaseOP/savefilebase.h | 5 +- + src/imageOp/imageoperationbeauty.h | 2 - + src/imageOp/imageoperationmirror.h | 1 - + src/imageOp/imageoperationocr.h | 1 - + src/imageOp/imageoperationrotate.cpp | 34 -- + src/imageOp/imageoperationrotate.h | 31 -- + src/imageOp/imageoperationwatermark.cpp | 85 --- + src/imageOp/imageoperationwatermark.h | 35 -- + src/include/common.h | 2 +- + src/include/customlabel.h | 5 +- + src/kabase/Qt/windowmanage.hpp | 8 +- + src/leftimagehandlesuccesspagewidget.cpp | 2 +- + src/main.cpp | 49 +- + src/mainwidget.cpp | 110 ++-- + src/mainwidget.h | 12 +- + src/newdevicelistpage.cpp | 9 + + src/newdevicelistpage.h | 4 +- + src/rectify.cpp | 2 +- + src/runningdialog.cpp | 86 --- + src/runningdialog.h | 4 +- + src/saneobject.cpp | 927 +++++++++++++++---------------- + src/saneobject.h | 2 +- + src/scandialog.cpp | 8 +- + src/scansettingswidget.cpp | 183 +++--- + src/scansettingswidget.h | 2 +- + src/sendmail.cpp | 73 +-- + src/sendmail.h | 9 +- + src/showimagewidget.cpp | 157 ++---- + src/showimagewidget.h | 5 +- + src/showocrwidget.cpp | 8 +- + src/singleapplication.cpp | 46 +- + src/successpagewidget.cpp | 2 +- + src/svghandler.cpp | 2 +- + src/thumbnailwidget.cpp | 17 +- + src/thumbnailwidget.h | 1 - + src/titlebar/titlebar.cpp | 14 +- + src/titlebar/titlebar.h | 1 - + src/titlebar/titlebar.ui | 32 +- + src/toolbarwidget.cpp | 33 +- + src/toolbarwidget.h | 2 +- + src/usbhotplugthread.cpp | 12 +- + src/utils/copyoperation.cpp | 30 - + src/utils/copyoperation.h | 34 -- + src/utils/daemondbus.cpp | 57 -- + src/utils/daemondbus.h | 57 -- + src/utils/login1_dbus.cpp | 210 ------- + src/utils/login1_dbus.h | 63 --- + src/utils/xatom-helper.cpp | 209 ------- + src/utils/xatom-helper.h | 114 ---- + src/waittingdialog.cpp | 6 +- + src/watermarkdialog.cpp | 28 +- + src/watermarkdialog.h | 5 +- + translations/kylin-scanner_ar.qm | Bin 0 -> 86 bytes + translations/kylin-scanner_bo_CN.qm | Bin 17595 -> 25486 bytes + translations/kylin-scanner_bo_CN.ts | 124 +++-- + translations/kylin-scanner_kk.qm | Bin 25049 -> 22895 bytes + translations/kylin-scanner_kk.ts | 892 +++++++++++++++-------------- + translations/kylin-scanner_ky.qm | Bin 25689 -> 23287 bytes + translations/kylin-scanner_ky.ts | 896 +++++++++++++++-------------- + translations/kylin-scanner_mn.qm | Bin 21749 -> 27301 bytes + translations/kylin-scanner_mn.ts | 546 +++++++++--------- + translations/kylin-scanner_ug.qm | Bin 25223 -> 24349 bytes + translations/kylin-scanner_ug.ts | 618 ++++++++++----------- + translations/kylin-scanner_vi.qm | Bin 0 -> 66 bytes + translations/kylin-scanner_zh_CN.qm | Bin 17192 -> 16738 bytes + translations/kylin-scanner_zh_CN.ts | 464 ++++++++-------- + translations/kylin-scanner_zh_HK.qm | Bin 13911 -> 16620 bytes + translations/kylin-scanner_zh_HK.ts | 544 +++++++++--------- + 100 files changed, 3528 insertions(+), 4971 deletions(-) + create mode 100644 kylin-scanner.pro.user + delete mode 100644 src/device/network_device_detector.cpp + delete mode 100644 src/device/network_device_detector.h + delete mode 100644 src/device/snmpwalk_browser.cpp + delete mode 100644 src/device/snmpwalk_browser.h + create mode 100644 src/imageBaseOP/createofd.cpp + create mode 100644 src/imageBaseOP/createofd.h + delete mode 100644 src/imageBaseOP/imageconverter.cpp + delete mode 100644 src/imageBaseOP/imageconverter.h + delete mode 100644 src/imageBaseOP/pngsaver.cpp + delete mode 100644 src/imageBaseOP/pngsaver.h + delete mode 100644 src/imageOp/imageoperationrotate.cpp + delete mode 100644 src/imageOp/imageoperationrotate.h + delete mode 100644 src/imageOp/imageoperationwatermark.cpp + delete mode 100644 src/imageOp/imageoperationwatermark.h + delete mode 100644 src/utils/copyoperation.cpp + delete mode 100644 src/utils/copyoperation.h + delete mode 100644 src/utils/daemondbus.cpp + delete mode 100644 src/utils/daemondbus.h + delete mode 100644 src/utils/login1_dbus.cpp + delete mode 100644 src/utils/login1_dbus.h + delete mode 100644 src/utils/xatom-helper.cpp + delete mode 100644 src/utils/xatom-helper.h + create mode 100644 translations/kylin-scanner_ar.qm + create mode 100644 translations/kylin-scanner_vi.qm + +diff --git a/kylin-scanner.pro b/kylin-scanner.pro +index 6c96371..797818a 100644 +--- a/kylin-scanner.pro ++++ b/kylin-scanner.pro +@@ -8,14 +8,14 @@ QT += \ + network \ + printsupport \ + concurrent \ +- svg ++ svg \ ++ widgets + + # 配置kysdk + PKGCONFIG += kysdk-alm kysdk-qtwidgets kysdk-ukenv kysdk-diagnostics kysdk-datacollect kysdk-powermanagement kysdk-waylandhelper kysdk-kabase + INCLUDEPATH += /usr/include/kysdk/applications/kabase/ + INCLUDEPATH += ./src/kabase/ + INCLUDEPATH += ./src/kabase/Qt/ +-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + + INCLUDEPATH += \ + $$PWD/src/device/avahi_qt/ \ +@@ -38,25 +38,29 @@ PKGCONFIG += \ + gsettings-qt \ + libudev \ + +-LIBS += \ +- -lpthread \ ++LIBS += -lpthread \ + -lX11 \ +- -L/usr/lib/libukui-log4qt.so.1.0.0 -lukui-log4qt\ + -ltiff \ +- -lGraphicsMagick \ + -ljpeg \ ++ -lpng \ + -ltesseract \ +- -lleptonica +- +-INCLUDEPATH += /usr/include/GraphicsMagick +- +-#freeimage +-LIBS += -lfreeimage \ +- ++ -lleptonica \ ++ -lfreeimage \ ++ -lusb-1.0 \ ++ -ludev \ ++ -lbsd \ ++ -lpthread \ ++ -lavahi-common \ ++ -lavahi-client \ ++ -lnetsnmp \ ++ -lnetsnmpagent \ ++ -lnetsnmpmibs \ ++ -lsane \ ++ -lzip \ ++ -lboundscheck \ + + INCLUDEPATH += /usr/include/CImg.h +-unix:!macx: LIBS += -L$$PWD/../../../usr/lib/x86_64-linux-gnu/ -lsane +- ++unix:!macx: LIBS += -L$$PWD/../../../usr/lib/x86_64-linux-gnu/ + INCLUDEPATH += $$PWD/../../../usr/lib/x86_64-linux-gnu + DEPENDPATH += $$PWD/../../../usr/lib/x86_64-linux-gnu + +@@ -65,7 +69,6 @@ DEPENDPATH += $$PWD/../../../usr/lib/x86_64-linux-gnu + # depend on your compiler). Please consult the documentation of the + # deprecated API in order to know how to port your code away from it. + DEFINES += QT_DEPRECATED_WARNINGS +-# MY_IMAGE_DEBUG + + # You can also make your code fail to compile if it uses deprecated APIs. + # In order to do so, uncomment the following line. +@@ -80,17 +83,14 @@ SOURCES += \ + src/failedpagewidget.cpp \ + src/global.cpp \ + src/globalsignal.cpp \ +- src/imageBaseOP/imageconverter.cpp \ + src/imageBaseOP/loadimage.cpp \ +- src/imageBaseOP/pngsaver.cpp \ + src/imageBaseOP/savefilebase.cpp \ ++ src/imageBaseOP/createofd.cpp \ + src/imageOp/imageoperationbase.cpp \ + src/imageOp/imageoperationbeauty.cpp \ + src/imageOp/imageoperationmirror.cpp \ + src/imageOp/imageoperationocr.cpp \ + src/imageOp/imageoperationrectify.cpp \ +- src/imageOp/imageoperationrotate.cpp \ +- src/imageOp/imageoperationwatermark.cpp \ + src/leftimagehandlesuccesspagewidget.cpp \ + src/leftsuccesspagewidget.cpp \ + src/main.cpp \ +@@ -105,7 +105,6 @@ SOURCES += \ + src/sendmail.cpp \ + src/showimagewidget.cpp \ + src/showocrwidget.cpp \ +- src/singleapplication.cpp \ + src/successpagewidget.cpp \ + src/svghandler.cpp \ + src/thumbnaildelegate.cpp \ +@@ -115,11 +114,7 @@ SOURCES += \ + src/usb.cpp \ + src/usbhotplugthread.cpp \ + src/utils/HorizontalOrVerticalMode.cpp \ +- src/utils/copyoperation.cpp \ +- src/utils/daemondbus.cpp \ +- src/utils/login1_dbus.cpp \ + src/utils/rotatechangeinfo.cpp \ +- src/utils/xatom-helper.cpp \ + src/waittingdialog.cpp \ + src/watermarkdialog.cpp \ + src/custom_push_button.cpp \ +@@ -134,17 +129,14 @@ HEADERS += \ + src/failedpagewidget.h \ + src/global.h \ + src/globalsignal.h \ +- src/imageBaseOP/imageconverter.h \ + src/imageBaseOP/loadimage.h \ +- src/imageBaseOP/pngsaver.h \ + src/imageBaseOP/savefilebase.h \ ++ src/imageBaseOP/createofd.h \ + src/imageOp/imageoperationbase.h \ + src/imageOp/imageoperationbeauty.h \ + src/imageOp/imageoperationmirror.h \ + src/imageOp/imageoperationocr.h \ + src/imageOp/imageoperationrectify.h \ +- src/imageOp/imageoperationrotate.h \ +- src/imageOp/imageoperationwatermark.h \ + src/include/common.h \ + src/include/theme.h \ + src/leftimagehandlesuccesspagewidget.h \ +@@ -160,7 +152,6 @@ HEADERS += \ + src/sendmail.h \ + src/showimagewidget.h \ + src/showocrwidget.h \ +- src/singleapplication.h \ + src/successpagewidget.h \ + src/svghandler.h \ + src/thumbnaildelegate.h \ +@@ -170,16 +161,13 @@ HEADERS += \ + src/usb.h \ + src/usbhotplugthread.h \ + src/utils/HorizontalOrVerticalMode.h \ +- src/utils/copyoperation.h \ +- src/utils/daemondbus.h \ +- src/utils/login1_dbus.h \ + src/utils/rotatechangeinfo.h \ +- src/utils/xatom-helper.h \ + src/waittingdialog.h \ + src/watermarkdialog.h \ + src/custom_push_button.h \ + src/navigator.h \ + src/kabase/buriedpoint.hpp \ ++ src/kabase/windowmanage.hpp \ + src/include/customlabel.h \ + + # Manual +@@ -193,16 +181,7 @@ DISTFILES += \ + src/icons/waiting/loading6.svg \ + src/icons/waiting/loading7.svg + +-LIBS += \ +- -lusb-1.0 \ +- -ludev \ +- -lbsd \ +- -lpthread \ +- -lavahi-common -lavahi-client \ +- -lnetsnmp -lnetsnmpagent -lnetsnmpmibs +- + HEADERS += \ +- $$PWD/src/device/snmpwalk_browser.h \ + $$PWD/src/device/avahi_qt/qt_watch.h \ + $$PWD/src/device/ukui_apt.h \ + $$PWD/src/device/qt_zeroconf/zconfservicebrowser.h \ +@@ -210,7 +189,6 @@ HEADERS += \ + $$PWD/src/device/qt_zeroconf/zconfservice.h \ + $$PWD/src/device/device_information.h \ + $$PWD/src/device/base_info.h \ +- $$PWD/src/device/network_device_detector.h \ + $$PWD/src/device/common.h \ + $$PWD/src/device/usbFinder.h \ + $$PWD/src/device/singleton.h \ +@@ -222,9 +200,7 @@ HEADERS += \ + SOURCES += \ + $$PWD/src/device/device_information.cpp \ + $$PWD/src/device/avahi_qt/qt_watch.cpp \ +- $$PWD/src/device/network_device_detector.cpp \ + $$PWD/src/device/common.cpp \ +- $$PWD/src/device/snmpwalk_browser.cpp \ + $$PWD/src/device/ukui_apt.cpp \ + $$PWD/src/device/base_info.cpp \ + $$PWD/src/device/qt_zeroconf/zconfserviceclient.cpp \ +@@ -280,8 +256,6 @@ schemes.files += \ + + schemes.path = /usr/share/glib-2.0/schemas/ + +- +- + # Install file in system + INSTALLS += target desktop icons qm_files help_files schemes + +diff --git a/kylin-scanner.pro.user b/kylin-scanner.pro.user +new file mode 100644 +index 0000000..4c08ad2 +--- /dev/null ++++ b/kylin-scanner.pro.user +@@ -0,0 +1,314 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<!DOCTYPE QtCreatorProject> ++<!-- Written by QtCreator 4.11.0, 2025-02-19T15:42:25. --> ++<qtcreator> ++ <data> ++ <variable>EnvironmentId</variable> ++ <value type="QByteArray">{63d5dbf4-beb7-43a0-8fc1-27ae31184926}</value> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.ActiveTarget</variable> ++ <value type="int">0</value> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.EditorSettings</variable> ++ <valuemap type="QVariantMap"> ++ <value type="bool" key="EditorConfiguration.AutoIndent">true</value> ++ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value> ++ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value> ++ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> ++ <value type="QString" key="language">Cpp</value> ++ <valuemap type="QVariantMap" key="value"> ++ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value> ++ </valuemap> ++ </valuemap> ++ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> ++ <value type="QString" key="language">QmlJS</value> ++ <valuemap type="QVariantMap" key="value"> ++ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> ++ </valuemap> ++ </valuemap> ++ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> ++ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value> ++ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value> ++ <value type="int" key="EditorConfiguration.IndentSize">4</value> ++ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value> ++ <value type="int" key="EditorConfiguration.MarginColumn">80</value> ++ <value type="bool" key="EditorConfiguration.MouseHiding">true</value> ++ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value> ++ <value type="int" key="EditorConfiguration.PaddingMode">1</value> ++ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> ++ <value type="bool" key="EditorConfiguration.ShowMargin">false</value> ++ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value> ++ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> ++ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> ++ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> ++ <value type="int" key="EditorConfiguration.TabSize">8</value> ++ <value type="bool" key="EditorConfiguration.UseGlobal">true</value> ++ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value> ++ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value> ++ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value> ++ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> ++ <value type="bool" key="EditorConfiguration.inEntireDocument">false</value> ++ </valuemap> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.PluginSettings</variable> ++ <valuemap type="QVariantMap"/> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.Target.0</variable> ++ <valuemap type="QVariantMap"> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">未命名</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">未命名</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{a5d23c53-3dde-487d-b122-af4df0247ac0}</value> ++ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> ++ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> ++ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> ++ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Debug</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> ++ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> ++ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> ++ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> ++ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> ++ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Release</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value> ++ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> ++ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> ++ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> ++ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> ++ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Profile</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> ++ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value> ++ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> ++ </valuemap> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> ++ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> ++ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> ++ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> ++ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> ++ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> ++ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> ++ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> ++ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> ++ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> ++ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> ++ <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value> ++ <valuelist type="QVariantList" key="Analyzer.Perf.Events"> ++ <value type="QString">cpu-cycles</value> ++ </valuelist> ++ <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/> ++ <value type="int" key="Analyzer.Perf.Frequency">250</value> ++ <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments"> ++ <value type="QString">-e</value> ++ <value type="QString">cpu-cycles</value> ++ <value type="QString">--call-graph</value> ++ <value type="QString">dwarf,4096</value> ++ <value type="QString">-F</value> ++ <value type="QString">250</value> ++ </valuelist> ++ <value type="QString" key="Analyzer.Perf.SampleMode">-F</value> ++ <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value> ++ <value type="int" key="Analyzer.Perf.StackSize">4096</value> ++ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> ++ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> ++ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> ++ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> ++ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> ++ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> ++ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> ++ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> ++ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> ++ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> ++ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> ++ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> ++ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> ++ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> ++ <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value> ++ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> ++ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> ++ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> ++ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> ++ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> ++ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> ++ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> ++ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> ++ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> ++ <value type="int">0</value> ++ <value type="int">1</value> ++ <value type="int">2</value> ++ <value type="int">3</value> ++ <value type="int">4</value> ++ <value type="int">5</value> ++ <value type="int">6</value> ++ <value type="int">7</value> ++ <value type="int">8</value> ++ <value type="int">9</value> ++ <value type="int">10</value> ++ <value type="int">11</value> ++ <value type="int">12</value> ++ <value type="int">13</value> ++ <value type="int">14</value> ++ </valuelist> ++ <value type="int" key="PE.EnvironmentAspect.Base">2</value> ++ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> ++ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/fanyuchen/openkylin-scanner/kylin-scanner/kylin-scanner.pro</value> ++ <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/fanyuchen/openkylin-scanner/kylin-scanner/kylin-scanner.pro</value> ++ <value type="QString" key="RunConfiguration.Arguments"></value> ++ <value type="bool" key="RunConfiguration.Arguments.multi">false</value> ++ <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value> ++ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> ++ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> ++ <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value> ++ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> ++ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> ++ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> ++ <value type="QString" key="RunConfiguration.WorkingDirectory"></value> ++ <value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Debug</value> ++ </valuemap> ++ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> ++ </valuemap> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.TargetCount</variable> ++ <value type="int">1</value> ++ </data> ++ <data> ++ <variable>ProjectExplorer.Project.Updater.FileVersion</variable> ++ <value type="int">22</value> ++ </data> ++ <data> ++ <variable>Version</variable> ++ <value type="int">22</value> ++ </data> ++</qtcreator> +diff --git a/src/crop.cpp b/src/crop.cpp +index 9fbbd71..91bfaa2 100644 +--- a/src/crop.cpp ++++ b/src/crop.cpp +@@ -18,7 +18,7 @@ + + #include "crop.h" + +-#include <ukui-log4qt.h> ++#include <QDebug> + + /** + * 拉伸裁剪框todo list +@@ -295,7 +295,7 @@ void CropLabel::mouseMoveEvent(QMouseEvent *event) + + int CropLabel::judgePosition(int origin, int min, int max) + { +- KyInfo() << "origin = " << origin ++ qDebug() << "origin = " << origin + << "min = " << min + << "max = " << max; + +diff --git a/src/customtablewidget.cpp b/src/customtablewidget.cpp +index 41082ef..1675687 100644 +--- a/src/customtablewidget.cpp ++++ b/src/customtablewidget.cpp +@@ -46,6 +46,7 @@ void CustomTableWidget::insertItem(int i, QStringList content) + QWidget *widget = new QWidget; + widget->setFixedHeight(40); + QTreeWidgetItem *item = new QTreeWidgetItem(content); ++ item->setToolTip(0, content[0]); + item->setSizeHint(i, QSize(260, 40)); + item->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + this->insertTopLevelItem(i, item); +diff --git a/src/detectpagewidget.cpp b/src/detectpagewidget.cpp +index 0b29052..61bd98f 100644 +--- a/src/detectpagewidget.cpp ++++ b/src/detectpagewidget.cpp +@@ -30,7 +30,6 @@ DetectPageWidget::DetectPageWidget(QWidget *parent) : QWidget(parent), + } + setupGui(); + initConnect(); +- this->setWindowTitle(tr("Scanner")); + } + + void DetectPageWidget::setupGui() +diff --git a/src/detectpagewidget.h b/src/detectpagewidget.h +index 6c31fce..625372a 100644 +--- a/src/detectpagewidget.h ++++ b/src/detectpagewidget.h +@@ -33,7 +33,7 @@ + #include <QDir> + #include <QMovie> + #include <QGSettings> +-#include <ukui-log4qt.h> ++#include <QDebug> + #include "globalsignal.h" + #include "svghandler.h" + +diff --git a/src/device/common.cpp b/src/device/common.cpp +index d655e95..511ac69 100644 +--- a/src/device/common.cpp ++++ b/src/device/common.cpp +@@ -27,25 +27,6 @@ + + #include "common.h" + +-CheckRes checkCommand(const QStringList &command) +-{ +- if (command.isEmpty()) +- return MAINWINDOW; +- else if(command.at(0).compare("debug")==0) +- return DEBUG; +- else if(command.at(0).compare("show")==0) +- return MAINWINDOW; +- else if (command.size() != 2) { +- return CHECK_FALSE; +- } +- else if (command.at(0).compare("add")==0 +- || command.at(0).compare("remove")==0 +- || command.at(0).compare("add_uri")==0 ) { +- +- return POPWINDOW; +- } +- return CHECK_FALSE; +-} + + QString getRetFromCommand(const QStringList &command) + { +@@ -63,17 +44,6 @@ QString getRetFromCommand(const QStringList &command) + return res; + } + +-void runCommand(const QStringList &command) +-{ +- QProcess proc; +- QStringList options; +- options << "-c"<< command.join(" "); +- proc.closeWriteChannel(); +- proc.startDetached("bash", options); +- +- return ; +-} +- + QByteArray qstringTochar(const QString &qstr) + { + if (qstr.isEmpty()) +@@ -82,43 +52,6 @@ QByteArray qstringTochar(const QString &qstr) + return ba; + } + +-QString getUserName() +-{ +- uid_t uid; +- uid_t NO_UID = -1; +- struct passwd *pw; +- +- errno = 0; +- uid = geteuid (); +- if (uid == -1 && errno) { +- qDebug () << "get uid error"; +- return ""; +- } +- pw = getpwuid (uid); +- if (!pw) { +- qDebug ("cannot find name for user ID %lu", (unsigned long int) uid); +- return ""; +- } +- return QString(pw->pw_name); +-} +- +-bool isAdministratorUser() +-{ +- static gid_t list[100]; +- int n_gp = getgroups(100,list); +- struct group *gp; +- for(int i = 0;i < n_gp; i++) { +- gp = getgrgid(list[i]); +- if (!gp) { +- continue; +- } +- if(QString(gp->gr_name) == "lpadmin") { +- return true; +- } +- } +- return false; +-} +- + void specialDeviceCheck(QString &vendor, QString &model) + { + QMap<QString, QString>::const_iterator iter = mfgConvertMap.begin(); +@@ -142,61 +75,6 @@ void specialDeviceCheck(QString &vendor, QString &model) + } + } + +-QString devicePathCheck(const QString &path) +-{ +- QString ppath = path; +- if (ppath.contains("unbind@")) +- ppath.remove("unbind@"); +- if (ppath.contains("bind@")) +- ppath.remove("bind@"); +- return ppath; +-} +- +-bool ipIsValid(const QString &ipAddr) +-{ +- QRegExp rx2("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"); +- if (!rx2.exactMatch(ipAddr)) { +- return false; +- } else { +- QStringList pieces = ipAddr.split("."); +- bool ok = true; +- for (int i = 0; i < 4; i++) { +- int num = pieces.value(i).toInt(&ok, 10); //合理性判断 +- if (!ok) { +- return false; +- } +- if (num > 255) { +- return false; +- } +- } +- } +- return true; +-} +- +-bool printerNameIsLegal(const QString &printerName) +-{ +- if (printerName.contains(" ") +- || printerName.contains("/") +- || printerName.contains("\\") +- || printerName.contains("'") +- || printerName.contains('"') +- || printerName.contains("?") +- || printerName.contains("#") +- || printerName.toLocal8Bit().size() > 127) { +- +- return false; +- } +- return true; +-} +- +-bool processCheck(const QString &processName) { +- QString cmd = QString("ps -ef | grep %1 | grep -v grep | awk '{print $2}'").arg(processName); +- QString res = getRetFromCommand(cmd.split(" ")); +- if (res != "" && res.toInt() > 0) { +- return true; +- } +- return false; +-} + + QString getPackageVersion(const QString &packageName) + { +@@ -210,20 +88,3 @@ QString getPackageVersion(const QString &packageName) + } + + +-QString getDebVersion(const QString &debName) +-{ +- QString deb(debName); +- if (!deb.contains("_")) { +- return ""; +- } +- +- deb.remove(0, deb.indexOf("_") + 1); +- +- if (!deb.contains("_")) { +- return ""; +- } +- +- QString debVersion = deb.left(deb.indexOf("_")); +- return debVersion; +-} +- +diff --git a/src/device/common.h b/src/device/common.h +index 11761d5..40bc8b3 100644 +--- a/src/device/common.h ++++ b/src/device/common.h +@@ -41,18 +41,10 @@ enum class PopWinStatus : int + INSTALL_FAIL, + }; + +-CheckRes checkCommand(const QStringList &command); +- + QString getRetFromCommand(const QStringList &command); + +-void runCommand(const QStringList &command); +- + QByteArray qstringTochar(const QString &qstr); + +-QString getUserName(); +- +-bool isAdministratorUser(); +- + const QMap<QString, QString> mfgConvertMap = { + std::map<QString, QString>::value_type("Lenovo Image", "Lenovo"), + std::map<QString, QString>::value_type("Fuji Xerox", "Fuji-Xerox"), +@@ -63,12 +55,6 @@ const QMap<QString, QString> mfgConvertMap = { + + void specialDeviceCheck(QString &vendor, QString &model); + +-extern QString devicePathCheck(const QString &path); +- +-extern bool ipIsValid(const QString &ipAddr); +- +-extern bool printerNameIsLegal(const QString &printerName); +- + enum class CommonStatusFlag : int + { + NONE = 0, +@@ -83,11 +69,7 @@ struct CommonStatus { + QString message{QString()}; + }; + +-extern bool processCheck(const QString &processName); +- + extern QString getPackageVersion(const QString &packageName); + +-extern QString getDebVersion(const QString &debName); +- + + #endif // KYLIN_PRINTER_COMMON_H +diff --git a/src/device/deviceFinder.cpp b/src/device/deviceFinder.cpp +index 8888303..b022950 100644 +--- a/src/device/deviceFinder.cpp ++++ b/src/device/deviceFinder.cpp +@@ -67,9 +67,9 @@ bool packageIsInstalled(const QString &debName, const QString &packageName) + if (debVersion.isEmpty()) { + return false; + } +- if (debVersion != packageVersion) { +- return false; +- } ++// if (debVersion != packageVersion) { ++// return false; ++// } + return true; + } + +@@ -135,12 +135,12 @@ void deviceFinder::dowork() + property[cursor].value = strdup(iter.value().toLocal8Bit().data()); + cursor++; + } ++ + KTrackData *node = kdk_dia_data_init(KEVENTSOURCE_DESKTOP, KEVENT_CUSTOM); + kdk_dia_append_custom_property(node, property, buried_data.size()); + kdk_dia_upload_default(node, "address_connect", const_cast<char *>("mainPage")); + kdk_dia_data_free(node); + +- + m_isServerAddressConnected = false; + qDebug() << "cannot connect to server address!"; + } else { +diff --git a/src/device/device_information.cpp b/src/device/device_information.cpp +index 0eb6127..75fc47b 100644 +--- a/src/device/device_information.cpp ++++ b/src/device/device_information.cpp +@@ -200,6 +200,7 @@ QStringList getPackagesNameFromHttp(DeviceInformation &device) + for (int i = 0; i < device.debNameList.size(); i++) { + QString name = device.debNameList.at(i); + device.packageNameList.append(name.left(name.indexOf("_"))); ++ device.packageVersion.append(name.remove(name.right(name.indexOf("_"))).remove(name.left(name.indexOf("_"))).remove("_")); + } + + return device.packageNameList; +diff --git a/src/device/device_information.h b/src/device/device_information.h +index 8a28f58..1bb37c9 100644 +--- a/src/device/device_information.h ++++ b/src/device/device_information.h +@@ -73,6 +73,8 @@ public: + QString uri{QString()}; // 设备uri + QStringList debNameList{QStringList()}; + QStringList packageNameList{QStringList()}; // 包名 ++ QStringList packageVersion{QStringList{}}; // 包版本 ++ + int packageLevel{int(-1)}; + QString makeAndModel{QString()}; // make-and-model + QString uuid{QString()}; +diff --git a/src/device/network_device_detector.cpp b/src/device/network_device_detector.cpp +deleted file mode 100644 +index 8ab029d..0000000 +--- a/src/device/network_device_detector.cpp ++++ /dev/null +@@ -1,196 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include <QThread> +- +-#include "network_device_detector.h" +-#include "zconfservicebrowser.h" +-#include "snmpwalk_browser.h" +-#include "common.h" +- +-QString getValueBySnmpwalk(const QString &name, const QString &key) +-{ +- std::string sname = name.toStdString(); +- std::string skey = key.toStdString(); +- +- const char * cname = sname.c_str(); +- const char * ckey = skey.c_str(); +- +- std::vector<OidNode> oids = { +- { ckey }, +- }; +- +- +- std::vector<HostNode> hosts = { +- { cname, "public" }, +- }; +- +- std::vector<std::string> buf; +- +- if (::snmpwalkBrowser_initialize(oids) != STAT_SUCCESS) { +- return QString ("error"); +- } +- int ans = ::snmpwalkBrowser_synchronous(buf, hosts, oids); +- if (ans != STAT_SUCCESS) { +- return QString("error"); +- } +- if (!buf.size()) { +- return QString("error"); +- } +- QString res = QString(buf.at(0).c_str()); +- +- if (res.contains("IpAddress") +- || res.contains("STRING")) { +- +- res = res.split(":").at(1); +- res.remove(0,1); +- res.remove("\""); +- return res; +- } +- return ""; +-} +- +-// ***************************************************** +-// NetworkDeviceDetector start +-NetworkDeviceDetector::~NetworkDeviceDetector() +-{ +- +-} +- +-NetworkDeviceDetector::NetworkDeviceDetector(/* args */) +-{ +- /** +- * @brief zconfserver循环事件 +- * +- */ +- connect(ZConfServiceBrowser::getInstance(), &ZConfServiceBrowser::serviceEntryAdded, +- this, &NetworkDeviceDetector::zconfPreSet, +- Qt::QueuedConnection); +- +- connect (this, &NetworkDeviceDetector::autoDetectStart, [=](){ +- +- +- ZConfServiceBrowser::getInstance()->browse(); +- }); +- +- connect (this, &NetworkDeviceDetector::autoDetectStop, [=](){ +- +-// m_thread->deleteLater(); +- }); +- +- connect (this, &NetworkDeviceDetector::newDeviceSend, +- this, &NetworkDeviceDetector::newDeviceGet, +- Qt::QueuedConnection); +-} +- +-DetectResult NetworkDeviceDetector::detectNetWorkNode(DeviceInformation &deviceInfo) +-{ +- deviceInfo.networkNode = ::getValueBySnmpwalk(deviceInfo.host, "1.3.6.1.2.1.1.5"); +- if (deviceInfo.networkNode.isEmpty()) { +- return DetectResult::DETECT_ERROR; +- } +- return DetectResult::DETECT_OK; +-} +- +-DetectResult NetworkDeviceDetector::detectVendorAndModel(DeviceInformation &deviceInfo) +-{ +- +- QString res = ::getValueBySnmpwalk(deviceInfo.host, "1.3.6.1.2.1.25.3.2.1.3"); +- +- if (res.isEmpty() || res == "error") { +- return DetectResult::DETECT_ERROR; +- } +- // Brother ADS-3600W +- if (res.contains(' ')) { +- deviceInfo.vendor = res.left(res.indexOf(' ')); +- deviceInfo.model = res.right(res.size() - 1 - res.indexOf(' ')); +- } else { +- deviceInfo.vendor = res; +- } +- +- +- return DetectResult::DETECT_OK; +-} +- +-DetectResult NetworkDeviceDetector::detectSerial(DeviceInformation &deviceInfo) +-{ +- deviceInfo.serial = ::getValueBySnmpwalk(deviceInfo.host, "1.3.6.1.2.1.43.5.1.1.17"); +- if (deviceInfo.serial.isEmpty()) { +- return DetectResult::DETECT_ERROR; +- } +- return DetectResult::DETECT_OK; +-} +- +- +-DeviceInformation NetworkDeviceDetector::newDeviceGet(DeviceInformation &deviceInfo) +-{ +- +- if (deviceInfo.host.isEmpty()) +- return DeviceInformation(); +- +- +- if (deviceInfo.host == "error") { +- deviceInfo.connectType = ConnectType::InfoFrom_Invalid; +- return DeviceInformation(); +- } +- +- if (deviceInfo.host.isEmpty()) { +- deviceInfo.connectType = ConnectType::InfoFrom_Invalid; +- return DeviceInformation(); +- } +- +- if (!ipIsValid(deviceInfo.host)) { +- deviceInfo.connectType = ConnectType::InfoFrom_Invalid; +- return DeviceInformation(); +- } +- +- this->detectVendorAndModel (deviceInfo); +- this->detectSerial (deviceInfo); +- +- if (deviceInfo.vendor.isEmpty() +- || deviceInfo.model.isEmpty() ) { +- +- deviceInfo.connectType = ConnectType::InfoFrom_Invalid; +- } +- +- +- switch (deviceInfo.connectType) +- { +- case (ConnectType::InfoFrom_Invalid): +- case (ConnectType::InfoFrom_USB): +- return DeviceInformation(); +- +- case (ConnectType::InfoFrom_NETWORK_DETECT): +- emit this->findNetworkConnect(deviceInfo); +- return DeviceInformation(); +- case (ConnectType::InfoFrom_PRINTER_IP): +- return deviceInfo; +- } +- +- return DeviceInformation(); +-} +- +-void NetworkDeviceDetector::zconfPreSet(QString name) { +- DeviceInformation deviceInfo; +- qDebug() << name; +- deviceInfo.connectType = ConnectType::InfoFrom_NETWORK_DETECT; +- deviceInfo.host = ZConfServiceBrowser::getInstance()->serviceEntry(name).ip; +- +- emit this->newDeviceSend(deviceInfo); +- return ; +-} +diff --git a/src/device/network_device_detector.h b/src/device/network_device_detector.h +deleted file mode 100644 +index d26f8c5..0000000 +--- a/src/device/network_device_detector.h ++++ /dev/null +@@ -1,67 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef NETWORK_DEVICE_DETECTOR_H +-#define NETWORK_DEVICE_DETECTOR_H +- +-#include <QObject> +- +-#include "device_information.h" +-#include "zconfservicebrowser.h" +- +-enum class DetectResult : int +-{ +- DETECT_OK = 0, +- DETECT_ERROR, +-}; +- +-enum class SetResult : int +-{ +- SET_OK = 0, +- SET_ERROR, +-}; +- +-class NetworkDeviceDetector: public QObject +-{ +- Q_OBJECT +-public: +- NetworkDeviceDetector(); +- ~NetworkDeviceDetector(); +-private: +- QMap<QString, DeviceInformation> m_mpDevInfo; +- +- +- DetectResult detectNetWorkNode (DeviceInformation &); +- +- DetectResult detectVendorAndModel (DeviceInformation &); +- +- DetectResult detectSerial (DeviceInformation &); +- +- +- DeviceInformation newDeviceGet(DeviceInformation &); +- +- void zconfPreSet(QString name); +- +-Q_SIGNALS: +- void autoDetectStart(); +- void autoDetectStop(); +- void newDeviceSend(DeviceInformation &); +- void findNetworkConnect(DeviceInformation &); +-}; +- +-#endif // NETWORK_DEVICE_DETECTOR_H +diff --git a/src/device/snmpFinder.cpp b/src/device/snmpFinder.cpp +index 5b25c68..60c19e0 100644 +--- a/src/device/snmpFinder.cpp ++++ b/src/device/snmpFinder.cpp +@@ -19,30 +19,6 @@ + #include "snmpFinder.h" + #include "common.h" + +- +-bool uriCheck(const QString &uri, const QString &scheme) +-{ +- const QString uriSplit = "://"; +- if (uri.isEmpty() || scheme.isEmpty()) { +- return false; +- } +- +- if (!uri.contains(uriSplit)) { +- return false; +- } +- +- QString uriScheme = uri.left(uri.indexOf(uriSplit)); +- if (scheme != uriScheme) { +- return false; +- } +- +- if (uri.rightRef(uri.size() - uriSplit.size() - uri.indexOf(uriSplit)).isEmpty()) { +- return false; +- } +- +- return true; +-} +- + snmpFinder::snmpFinder() + { + +@@ -71,6 +47,31 @@ QList<DeviceInformation> snmpFinder::getList() + return m_snmpInfoList; + } + ++bool snmpFinder::uriCheck(const QString &uri, const QString &scheme) ++{ ++ ++ const QString uriSplit = "://"; ++ if (uri.isEmpty() || scheme.isEmpty()) { ++ return false; ++ } ++ ++ if (!uri.contains(uriSplit)) { ++ return false; ++ } ++ ++ QString uriScheme = uri.left(uri.indexOf(uriSplit)); ++ if (scheme != uriScheme) { ++ return false; ++ } ++ ++ if (uri.rightRef(uri.size() - uriSplit.size() - uri.indexOf(uriSplit)).isEmpty()) { ++ return false; ++ } ++ ++ return true; ++ ++} ++ + void snmpFinder::parseSnmpInfo(QString &info) + { + qDebug() << info; +diff --git a/src/device/snmpFinder.h b/src/device/snmpFinder.h +index 51db491..0ee64de 100644 +--- a/src/device/snmpFinder.h ++++ b/src/device/snmpFinder.h +@@ -20,6 +20,7 @@ + #define DEVICE_SNMPFINDER_H + #include "device_information.h" + ++ + class snmpFinder { + public: + snmpFinder(); +@@ -27,6 +28,9 @@ public: + void dowork(); + QList<DeviceInformation> getList(); + ++ ++ static bool uriCheck(const QString &uri, const QString &scheme); ++ + private: + QList<DeviceInformation> m_snmpInfoList; + void parseSnmpInfo(QString &info); +diff --git a/src/device/snmpwalk_browser.cpp b/src/device/snmpwalk_browser.cpp +deleted file mode 100644 +index 347b11e..0000000 +--- a/src/device/snmpwalk_browser.cpp ++++ /dev/null +@@ -1,201 +0,0 @@ +-/* +- * NET-SNMP demo +- * +- * This program demonstrates different ways to query a list of hosts +- * for a list of variables. +- * +- * It would of course be faster just to send one query for all variables, +- * but the intention is to demonstrate the difference between synchronous +- * and asynchronous operation. +- * +- * Niels Baggesen (Niels.Baggesen@uni-c.dk), 1999. +- */ +- +-#include <QDebug> +- +-#include "snmpwalk_browser.h" +- +-int find_first_oid(netsnmp_session *ss, oid *base, int base_length) +-{ +- netsnmp_pdu *response; +- netsnmp_pdu *pdu; +- int running = 1; +- int status; +- int length = 0; +- pdu = snmp_pdu_create(SNMP_MSG_GETNEXT); +- snmp_add_null_var(pdu, base, base_length); +- while (running) +- { +- // 这一句在一些情况下会报 “corrupted size vs. prev_size“ +- // 导致程序段错误,但是概率较低,之前会在输出错误的ip地址偶尔复现, +- // 暂时没有可以稳定复现的方法,也没有定位到问题的原因,怀疑和网络环境有关 +- status = snmp_synch_response(ss, pdu, &response); +- if (status != STAT_SUCCESS || !response) +- { +- snmp_sess_perror("snmp_synch_response", ss); +- return -1; +- } +- if (response->errstat != SNMP_ERR_NOERROR) +- { +- fprintf(stderr, "snmp: Error in packet: %s\n", snmp_errstring(response->errstat)); +- return -1; +- } +- if (response && snmp_oid_compare(response->variables->name, SNMP_MIN(base_length, response->variables->name_length), base, base_length) != 0) +- running = 0; +- else +- { +- memcpy(base, response->variables->name, response->variables->name_length * sizeof(oid)); +- length = response->variables->name_length; +- pdu = snmp_pdu_create(SNMP_MSG_GETNEXT); +- snmp_add_null_var(pdu, response->variables->name, response->variables->name_length); +- running = 0; +- } +- snmp_free_pdu(response); +- } +- return length; +-} +- +-/* +- * initialize +- */ +-int initialize(std::vector<OidNode> &oids) +-{ +- /* Win32: init winsock */ +- SOCK_STARTUP; +- +- /* initialize library */ +- init_snmp("asynchapp"); +- +- /* parse the oids */ +- for (size_t i = 0; i < oids.size(); i++) { +- OidNode *op = &oids[i]; +- op->OidLen = sizeof(op->Oid) / sizeof(op->Oid[0]); +- if (!read_objid(op->Name, op->Oid, (size_t *)&(op->OidLen))) { +- snmp_perror("read_objid"); +- return 1; +- } +- } +- return 0; +-} +- +-/* +- * simple printing of returned data +- */ +-int print_result(std::vector<std::string> &output, +- int status, +- struct snmp_session *sp, +- struct snmp_pdu *pdu, +- int &res) +-{ +- char buf[1024]; +- struct variable_list *vp; +- +- res = status; +- switch (status) +- { +- case STAT_SUCCESS: +- res = int(pdu->errstat); +- vp = pdu->variables; +- if (pdu->errstat == SNMP_ERR_NOERROR) { +- while (vp) { +- snprint_variable(buf, sizeof(buf), vp->name, vp->name_length, vp); +- // snprintf(buf, sizeof(buf), "%s", buf); +- // fprintf(stdout, "%s: %s\n", sp->peername, buf); +- output.push_back(buf); +- vp = vp->next_variable; +- } +- } +- else if (pdu->errstat == SNMP_ERR_NOSUCHNAME) { +- qDebug("%s: %s: %s\n", +- sp->peername, buf, snmp_errstring(pdu->errstat)); +- return 0; +- } +- else { +- for (int ix = 1; vp && ix != pdu->errindex; vp = vp->next_variable, ix++) +- ; +- if (vp) +- snprint_objid(buf, sizeof(buf), vp->name, vp->name_length); +- else +- strcpy(buf, "(none)"); +- qDebug("%s: %s: %s\n", +- sp->peername, buf, snmp_errstring(pdu->errstat)); +- } +- return 1; +- case STAT_TIMEOUT: +- qDebug("%s: Timeout\n", sp->peername); +- return 0; +- case STAT_ERROR: +- snmp_perror(sp->peername); +- return 0; +- } +- return 0; +-} +- +-/*****************************************************************************/ +- +-/* +- * simple synchronous loop +- */ +-void synchronous(std::vector<std::string> &buf, +- const std::vector<HostNode> &hosts, +- std::vector<OidNode> &oids, +- int &res) +-{ +- for (size_t i = 0; i < hosts.size(); i++) +- { +- const HostNode *hp = &hosts[i]; +- struct snmp_session ss, *sp; +- +- snmp_sess_init(&ss); /* initialize session */ +- ss.version = SNMP_VERSION_1; +- ss.peername = strdup(hp->name); +- ss.community = (u_char *)strdup(hp->community); +- ss.community_len = strlen((char *)(ss.community)); +- if (!(sp = snmp_open(&ss))) +- { +- snmp_perror("snmp_open"); +- continue; +- } +- for (size_t j = 0; j < oids.size(); j++) +- { +- OidNode *op = &oids[j]; +- struct snmp_pdu *req, *resp; +- int status; +- // printf("%s %d\n",op->Name, op->OidLen); +- int new_length = find_first_oid(sp, op->Oid, op->OidLen); +- if (new_length == -1) { +- res = STAT_ERROR; +- return; +- } +- req = snmp_pdu_create(SNMP_MSG_GET); +- snmp_add_null_var(req, op->Oid, new_length); +- status = snmp_synch_response(sp, req, &resp); +- if (!print_result(buf, status, sp, resp, res)) +- break; +- snmp_free_pdu(resp); +- } +- snmp_close(sp); +- } +-} +- +-/*****************************************************************************/ +- +-int snmpwalkBrowser_initialize(std::vector<OidNode> &oids) +-{ +- return initialize(oids); +-} +- +-int snmpwalkBrowser_synchronous(std::vector<std::string> &buf, +- const std::vector<HostNode> &hosts, +- std::vector<OidNode> &oids) +-{ +- if (hosts.size() != 1) { +- return -1; +- } +- int res = 0; +- // std::cout << hosts[0].name << ' ' <<oids[0].Name << std::endl; +- synchronous(buf, hosts, oids, res); +- // std::cout << hosts[0].name << ' ' <<oids[0].Name << std::endl; +- // std::cout << buf[0] << std::endl; +- return res; +-} +diff --git a/src/device/snmpwalk_browser.h b/src/device/snmpwalk_browser.h +deleted file mode 100644 +index 8311887..0000000 +--- a/src/device/snmpwalk_browser.h ++++ /dev/null +@@ -1,62 +0,0 @@ +-/* +- * NET-SNMP demo +- * +- * This program demonstrates different ways to query a list of hosts +- * for a list of variables. +- * +- * It would of course be faster just to send one query for all variables, +- * but the intention is to demonstrate the difference between synchronous +- * and asynchronous operation. +- * +- * Niels Baggesen (Niels.Baggesen@uni-c.dk), 1999. +- */ +- +-#ifndef SNMPWALK_BROWSER_H +-#define SNMPWALK_BROWSER_H +- +-#include <string> +-#include <vector> +-#include <net-snmp/net-snmp-config.h> +-#include <net-snmp/net-snmp-includes.h> +- +-/* +- * a list of hosts to query +- */ +-struct HostNode +-{ +- const char *name; +- const char *community; +-}; +-// HostNode hosts[] = { +-// { "192.168.17.90", "public" }, +-// { NULL } +-// }; +- +-/* +- * a list of variables to query for +- */ +-struct OidNode +-{ +- const char *Name; +- oid Oid[MAX_OID_LEN]; +- int OidLen; +-}; +-// struct OidNode oids[] = { +-// { "1.3.6.1.2.1.4.20.1.1" }, +-// { "1.3.6.1.2.1.4.20.1.3" }, +-// { "1.3.6.1.2.1.1.5" }, +-// { "1.3.6.1.2.1.43.9.2.1.8" }, +-// { "1.3.6.1.2.1.25.3.2.1.3" }, +-// { "1.3.6.1.2.1.43.5.1.1.17" }, +-// { NULL } +-// }; +- +- +- +-int snmpwalkBrowser_initialize(std::vector<OidNode> &oids); +- +-int snmpwalkBrowser_synchronous(std::vector<std::string> &buf, +- const std::vector<HostNode> &hosts, +- std::vector<OidNode> &oids); +- +-#endif // SNMPWALK_BROWSER_H +diff --git a/src/device/ukui_apt.cpp b/src/device/ukui_apt.cpp +index 08385da..b82d1d5 100644 +--- a/src/device/ukui_apt.cpp ++++ b/src/device/ukui_apt.cpp +@@ -46,6 +46,7 @@ AptUtilHelper::AptUtilHelper(DeviceInformation device,QObject *parent) : QObject + + AptUtilHelper::~AptUtilHelper() + { ++ emit this->finished(); + qDebug() << "~~~~~~~~destroy..."; + } + +@@ -63,12 +64,19 @@ void AptUtilHelper::processPkg() + if (m_device.packageNameList.isEmpty()){ + getPackagesNameFromHttp(m_device); + } +- m_packages = m_device.packageNameList; +- ++ //安装对应版本 ++ if(m_device.packageNameList.length() == m_device.packageVersion.length()){ ++ for (int i = 0; i < m_device.packageNameList.length(); ++i) { ++ QString package = m_device.packageNameList[i] + "=" + m_device.packageVersion[i]; ++ m_packages.append(package); ++ } ++ }else{ ++ m_packages = m_device.packageNameList; ++ } + qDebug() << m_packages; + installPackage(m_packages); + m_timer = new QTimer(this); +- connect(m_timer, &QTimer::timeout, [=](){emit failed("Install timeout.");}); ++ connect(m_timer, &QTimer::timeout, [=](){emit failed(QObject::tr("Install timeout."));}); + m_timer->start(240000); + qDebug("Worker Ended!"); + } +@@ -149,7 +157,7 @@ void DebUtilHelper::processDeb() + qDebug() << m_debName; + installLocalDeb(m_debName); + m_timer = new QTimer(this); +- connect(m_timer, &QTimer::timeout, [=](){emit failed("Install timeout.");}); ++ connect(m_timer, &QTimer::timeout, [=](){emit failed(QObject::tr("Install timeout."));}); + m_timer->start(60000); + qDebug("Deb Worker Ended!"); + } +diff --git a/src/device/ukui_apt.h b/src/device/ukui_apt.h +index 2a96092..0818390 100644 +--- a/src/device/ukui_apt.h ++++ b/src/device/ukui_apt.h +@@ -63,7 +63,7 @@ Q_SIGNALS: + void error(QString err); + //暂时还没发出来 + void alreadyInstalled(); +-private slots: ++public slots: + void onInstalldebStatusChanged(int, QString, QString); + void onRecvApt(bool, QStringList, QString, QString); + public: +@@ -71,7 +71,6 @@ public: + if(m_thread!=nullptr) + m_thread->start(); + } +-private: + void processPkg(); + void installPackage(QStringList packageName); + QThread *m_thread{nullptr}; +@@ -96,7 +95,7 @@ Q_SIGNALS: + void error(QString err); + //暂时还没发出来 + void alreadyInstalled(); +-private slots: ++public slots: + void onInstalldebStatusChanged(int, QString, QString); + void onRecvApt(bool, QString, QString); + public: +@@ -104,7 +103,7 @@ public: + if(m_thread!=nullptr) + m_thread->start(); + } +-private: ++ + void processDeb(); + void installLocalDeb(QString debFilePath); + //工作线程 +diff --git a/src/device/usbFinder.cpp b/src/device/usbFinder.cpp +index 6b21b55..e11a1c5 100644 +--- a/src/device/usbFinder.cpp ++++ b/src/device/usbFinder.cpp +@@ -28,7 +28,7 @@ + + void + parse_device_id (const char *device_id, +- struct device_id_s *id) ++ struct device_id_s *id) + { + QString s = QString(device_id); + +@@ -45,8 +45,8 @@ parse_device_id (const char *device_id, + + for (auto ss : ls) { + if (id->mfg.isEmpty() +- && (ss.indexOf("MANUFACTURER") == 0 || ss.indexOf("MFG") == 0) +- && (ss.contains(":"))) { ++ && (ss.indexOf("MANUFACTURER") == 0 || ss.indexOf("MFG") == 0) ++ && (ss.contains(":"))) { + + id->mfg = ss.split(":").at(1); + } +@@ -106,7 +106,7 @@ get_ieee1284_id_from_child (struct udev *udev, struct udev_device *parent) + udev_list_entry_foreach (item, first) { + const char *ieee1284_id = NULL; + struct udev_device *dev; +-// qDebug() << udev_list_entry_get_name (item); ++ // qDebug() << udev_list_entry_get_name (item); + dev = udev_device_new_from_syspath (udev, + udev_list_entry_get_name (item)); + if (dev == NULL) +@@ -204,22 +204,22 @@ devpath_from_usb_devaddr (const QString &devaddr, DeviceInformation &info) + + + +-// qDebug() << get_ieee1284_id_from_child (udev, device); +-// qDebug() << udev_device_get_devpath (device); +-// qDebug() << udev_device_get_property_value(device, "SUBSYSTEM"); +-// qDebug() << udev_device_get_property_value(device, "DEVNAME"); +-// qDebug() << udev_device_get_property_value(device, "ID_VENDOR"); +-// qDebug() << udev_device_get_property_value(device, "ID_MODEL"); +-// qDebug() << udev_device_get_property_value(device, "ID_SERIAL"); +-// qDebug() << udev_device_get_property_value(device, "ID_BUS"); +-// qDebug() << udev_device_get_property_value(device, "ID_PATH"); +-// qDebug() << udev_device_get_property_value(device, "ID_USB_DRIVER"); +-// qDebug() << udev_device_get_sysattr_value (device, "serial"); +-// qDebug() << udev_device_get_sysattr_value (device, "ieee1284_id"); +-// qDebug() << udev_device_get_sysattr_value (device, "idVendor"); +-// qDebug() << udev_device_get_sysattr_value (device, "idProduct"); +-// qDebug() << udev_device_get_sysattr_value (device, "manufacturer"); +-// qDebug() << udev_device_get_sysattr_value (device, "product"); ++ // qDebug() << get_ieee1284_id_from_child (udev, device); ++ // qDebug() << udev_device_get_devpath (device); ++ // qDebug() << udev_device_get_property_value(device, "SUBSYSTEM"); ++ // qDebug() << udev_device_get_property_value(device, "DEVNAME"); ++ // qDebug() << udev_device_get_property_value(device, "ID_VENDOR"); ++ // qDebug() << udev_device_get_property_value(device, "ID_MODEL"); ++ // qDebug() << udev_device_get_property_value(device, "ID_SERIAL"); ++ // qDebug() << udev_device_get_property_value(device, "ID_BUS"); ++ // qDebug() << udev_device_get_property_value(device, "ID_PATH"); ++ // qDebug() << udev_device_get_property_value(device, "ID_USB_DRIVER"); ++ // qDebug() << udev_device_get_sysattr_value (device, "serial"); ++ // qDebug() << udev_device_get_sysattr_value (device, "ieee1284_id"); ++ // qDebug() << udev_device_get_sysattr_value (device, "idVendor"); ++ // qDebug() << udev_device_get_sysattr_value (device, "idProduct"); ++ // qDebug() << udev_device_get_sysattr_value (device, "manufacturer"); ++ // qDebug() << udev_device_get_sysattr_value (device, "product"); + } + + +diff --git a/src/displaywidget.cpp b/src/displaywidget.cpp +index b8749c1..ac234b0 100644 +--- a/src/displaywidget.cpp ++++ b/src/displaywidget.cpp +@@ -16,7 +16,7 @@ + * + */ + #include "displaywidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + + DisplayWidget::DisplayWidget(QWidget *parent) : + QWidget(parent), +diff --git a/src/failedpagewidget.cpp b/src/failedpagewidget.cpp +index 83b9f55..7845657 100644 +--- a/src/failedpagewidget.cpp ++++ b/src/failedpagewidget.cpp +@@ -17,7 +17,7 @@ + */ + + #include "failedpagewidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <kysdk/applications/gsettingmonitor.h> + + #include <QPainter> +diff --git a/src/failedpagewidget.h b/src/failedpagewidget.h +index dce0544..d9b7e01 100644 +--- a/src/failedpagewidget.h ++++ b/src/failedpagewidget.h +@@ -63,7 +63,6 @@ private: + public slots: + void fontSizeChanged(); + void clickfiledPageButton(); +-private slots: + void initTheme(); + void rotateChangedSlot(bool isPCMode); + }; +diff --git a/src/globalsignal.cpp b/src/globalsignal.cpp +index 6259159..1c3e3c6 100644 +--- a/src/globalsignal.cpp ++++ b/src/globalsignal.cpp +@@ -17,7 +17,7 @@ + */ + #include "globalsignal.h" + +-#include <ukui-log4qt.h> ++#include <QDebug> + #define KYLINSCANNER "org.kylin-scanner-data.settings" + + GlobalUserSignal* GlobalUserSignal::instance = new GlobalUserSignal; +@@ -308,10 +308,10 @@ GlobalConfigSignal::GlobalConfigSignal(QObject *parent) + QLocale locale = QLocale::system().name(); + if(locale.language() == QLocale::Chinese){ + m_scannerImagePath = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).at(0) + "/扫描图像"; ++ }else if(locale.language() == QLocale::English){ ++ m_scannerImagePath = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).at(0) + "/kylin-scanner-images"; + }else if(locale.language() == QLocale::Tibetan){ + m_scannerImagePath = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).at(0) + "/བཤར་འབེབས་འབུར་ཐོན་"; +- }else{ +- m_scannerImagePath = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).at(0) + "/kylin-scanner-images"; + } + } + +diff --git a/src/imageBaseOP/createofd.cpp b/src/imageBaseOP/createofd.cpp +new file mode 100644 +index 0000000..d9390a3 +--- /dev/null ++++ b/src/imageBaseOP/createofd.cpp +@@ -0,0 +1,166 @@ ++#include "createofd.h" ++ ++#include <QUuid> ++#include <QDebug> ++#include <QFile> ++#include <QFileInfo> ++#include <QDateTime> ++#include <zip.h> ++ ++QString OFD::m_OFD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ++ "<ofd:OFD xmlns:ofd=\"http://www.ofdspec.org/2016\" Version=\"1.1\" DocType=\"OFD\">" ++ "<ofd:DocBody>" ++ "<ofd:DocInfo>" ++ "<ofd:DocID>%1</ofd:DocID>" ++ "<ofd:Title>%2</ofd:Title>" ++ "<ofd:Creator>%3</ofd:Creator>" ++ "<ofd:CreationDate>%4</ofd:CreationDate>" ++ "</ofd:DocInfo>" ++ "<ofd:DocRoot>Doc/doc.xml</ofd:DocRoot>" ++ "</ofd:DocBody>" ++ "</ofd:OFD>"; ++QString OFD::m_OFDDoc = "<ofd:Document xmlns:ofd=\"http://www.ofdspec.org/2016\">" ++ "<ofd:Pages>" ++ "%1" ++ "</ofd:Pages>" ++ "<ofd:CommonData>" ++ "<ofd:MaxUnitID>%2</ofd:MaxUnitID>" ++ "<ofd:PublicRes>PublicRes.xml</ofd:PublicRes>" ++ "</ofd:CommonData>" ++ "</ofd:Document>"; ++QString OFD::m_OFDContent = "<ofd:Page xmlns:ofd=\"http://www.ofdspec.org/2016\">" ++ "<ofd:Area>" ++ "<ofd:PhysicalBox>0 0 210 297</ofd:PhysicalBox>" ++ "</ofd:Area>" ++ "<ofd:Content>" ++ "<ofd:Layer ID=\"%1\">" ++ "<ofd:ImageObject ID=\"%2\" CTM=\"210 0 0 297 0 0\" Boundary=\"0 0 210 297\" ResourceID=\"%3\"/>" ++ "</ofd:Layer>" ++ "</ofd:Content>" ++ "</ofd:Page>"; ++QString OFD::m_OFDPublicRes = "<ofd:Res xmlns:ofd=\"http://www.ofdspec.org/2016\" BaseLoc=\"Res\">" ++ "<ofd:MultiMedias>" ++ "%1" ++ "</ofd:MultiMedias>" ++ "</ofd:Res>"; ++QString OFD::m_docTitle = "扫描文件"; ++QString OFD::m_docCreator = "麒麟扫描"; ++zip *OFD::m_zipHandle = nullptr; ++int OFD::m_docID = 0; ++QList<char *> OFD::m_imageData; ++ ++bool OFD::createOFD(QString fileName, QStringList imageList) ++{ ++ //创建文档id ++ QString uuid = QUuid::createUuid().toString(); ++ uuid = uuid.mid(1); ++ uuid.chop(1); ++ uuid.replace("-",""); ++ uuid = uuid.toUpper(); ++ ++ //创建ZIP压缩包 ++ int err; ++ m_zipHandle = zip_open(fileName.toLocal8Bit().data(), ZIP_CREATE | ZIP_TRUNCATE, &err); ++ if (m_zipHandle == nullptr) { ++ qDebug()<<"zip_open failed :" << err; ++ return false; ++ } ++ ++ //添加文件 ++ m_docID = 0; ++ clearImageData(); ++ QByteArray data; ++ QString pages; ++ QString multiMedias; ++ for (int i = 1 ; i <= imageList.length() ; i++) { ++ QString orig = imageList.at(i - 1); ++ QString suffix = QFileInfo(orig).suffix(); ++ ++ QString index = QString::number(i); ++ ++ QString page = getMaxIDAndAdd(); ++ pages += QString("<ofd:Page BaseLoc=\"Pages/%1/Content.xml\" ID=\"%2\"/>").arg(index , page); ++ ++ QString resourceID = getMaxIDAndAdd(); ++ data = m_OFDContent.arg(getMaxIDAndAdd() , getMaxIDAndAdd() , resourceID).toLocal8Bit(); ++ ++ addFileFromData(QString("Doc/Pages/%1/Content.xml").arg(i) , data); ++ ++ multiMedias += QString("<ofd:MultiMedia ID=\"%1\" Type=\"Image\"><ofd:MediaFile>%2.%3</ofd:MediaFile></ofd:MultiMedia>").arg(resourceID , index , suffix); ++ ++ addFileFromFile(QString("Doc/Res/%1.%2").arg(index,suffix) , orig); ++ } ++ ++ data = m_OFD.arg(uuid,m_docTitle,m_docCreator,QDateTime::currentDateTime().toString("yyyy-MM-dd")).toLocal8Bit(); ++ addFileFromData("OFD.xml",data); ++ ++ data = m_OFDDoc.arg(pages , getMaxIDAndAdd()).toLocal8Bit(); ++ addFileFromData("Doc/doc.xml",data); ++ ++ data = m_OFDPublicRes.arg(multiMedias).toLocal8Bit(); ++ addFileFromData("Doc/PublicRes.xml",data); ++ ++ //关闭ZIP句柄 ++ if (zip_close(m_zipHandle) == -1) { ++ qDebug()<<"zip_close failed"; ++ return false; ++ } ++ clearImageData(); ++ return true; ++} ++ ++void OFD::setOFDTitle(QString value) ++{ ++ m_docTitle = value; ++} ++ ++void OFD::setOFDCreator(QString value) ++{ ++ m_docCreator = value; ++} ++ ++void OFD::addFileFromData(QString fileName, QByteArray data) ++{ ++ char *fileData = (char*)malloc(data.size()); ++ memcpy(fileData, data.data(), data.size()); ++ m_imageData.append(fileData); ++ struct zip_source *source = zip_source_buffer(m_zipHandle, fileData, data.size(), 0); ++ if (source == nullptr) { ++ qDebug()<<"zip_source_buffer failed :" << fileName; ++ return; ++ } ++ if (zip_file_add(m_zipHandle, fileName.toLocal8Bit().data(), source, ZIP_FL_OVERWRITE) < 0) { ++ qDebug()<<"zip_file_add failed :" << fileName; ++ return; ++ } ++} ++ ++void OFD::addFileFromFile(QString fileName, QString origFileName) ++{ ++ QFile file(origFileName); ++ if (!file.open(QIODevice::ReadOnly)) { ++ qDebug()<<"QFile::open failed :" << origFileName; ++ return; ++ } ++ QByteArray data = file.readAll(); ++ addFileFromData(fileName, data); ++ file.close(); ++} ++ ++QString OFD::getMaxIDAndAdd() ++{ ++ m_docID++; ++ return QString::number(m_docID); ++} ++ ++void OFD::clearImageData() ++{ ++ for (char* img : m_imageData) { ++ if (img) { ++ free(img); ++ } ++ } ++ m_imageData.clear(); ++} ++ ++ +diff --git a/src/imageBaseOP/createofd.h b/src/imageBaseOP/createofd.h +new file mode 100644 +index 0000000..b3e9788 +--- /dev/null ++++ b/src/imageBaseOP/createofd.h +@@ -0,0 +1,31 @@ ++#ifndef CREATOFD_H ++#define CREATOFD_H ++ ++#include <QString> ++#include <QList> ++ ++struct zip; ++class OFD ++{ ++public: ++ OFD(){} ++ static bool createOFD(QString fileName, QStringList imageList); ++ static void setOFDTitle(QString value); ++ static void setOFDCreator(QString value); ++private: ++ static void addFileFromData(QString fileName, QByteArray data); ++ static void addFileFromFile(QString fileName, QString origFileName); ++ static QString getMaxIDAndAdd(); ++ static void clearImageData(); ++ static QString m_OFD; ++ static QString m_OFDDoc; ++ static QString m_OFDContent; ++ static QString m_OFDPublicRes; ++ static QString m_docTitle; ++ static QString m_docCreator; ++ static zip *m_zipHandle; ++ static int m_docID; ++ static QList<char *> m_imageData; ++}; ++ ++#endif // CREATOFD_H +diff --git a/src/imageBaseOP/imageconverter.cpp b/src/imageBaseOP/imageconverter.cpp +deleted file mode 100644 +index 138d378..0000000 +--- a/src/imageBaseOP/imageconverter.cpp ++++ /dev/null +@@ -1,19 +0,0 @@ +-#include "imageconverter.h" +- +-ImageConverter::ImageConverter(QObject *parent) : QObject(parent) { +- +-} +- +-void ImageConverter::convertImage(QString pnmpath, QString jpgpath) +-{ +- char *exec_argv[5]; +- exec_argv[0] = "gm"; +- exec_argv[1] = "convert"; +- exec_argv[2] = pnmpath.toUtf8().data(); +- exec_argv[3] = jpgpath.toUtf8().data(); +- exec_argv[4] = NULL; +- +- qDebug()<< "start"; +- qDebug() << "图片转换结果:" << GMCommand(4,exec_argv); +- qDebug()<< "finish"; +-} +diff --git a/src/imageBaseOP/imageconverter.h b/src/imageBaseOP/imageconverter.h +deleted file mode 100644 +index 6a83fb5..0000000 +--- a/src/imageBaseOP/imageconverter.h ++++ /dev/null +@@ -1,19 +0,0 @@ +-#ifndef IMAGECONVERTER_H +-#define IMAGECONVERTER_H +- +-#include <QObject> +-#include <QString> +-#include <QDebug> +-#include <magick/api.h> +- +-class ImageConverter : public QObject { +- Q_OBJECT +- +-public: +- ImageConverter(QObject *parent = nullptr); +- +-public slots: +- void convertImage(QString pnmpath, QString jpgpath); +-}; +- +-#endif // IMAGECONVERTER_H +diff --git a/src/imageBaseOP/loadimage.cpp b/src/imageBaseOP/loadimage.cpp +index c3a5239..c1d81b4 100644 +--- a/src/imageBaseOP/loadimage.cpp ++++ b/src/imageBaseOP/loadimage.cpp +@@ -20,6 +20,7 @@ + #include <QDebug> + #include <QPixmap> + #include <QThread> ++#include "../saneobject.h" + LoadImage::LoadImage(QObject *parent) : QObject(parent) + { + m_flag = false; +@@ -82,6 +83,10 @@ void LoadImage::loadImageToWidget(QString loadPath, QString save_path, QImage *i + return; + } + emit finished(save_path, proportion, image); ++ ++ if (g_sane_object->ocrFlag != 0) { ++ g_user_signal->toolbarOcrOperationStart(); ++ } + } + + +diff --git a/src/imageBaseOP/pngsaver.cpp b/src/imageBaseOP/pngsaver.cpp +deleted file mode 100644 +index 2bde6af..0000000 +--- a/src/imageBaseOP/pngsaver.cpp ++++ /dev/null +@@ -1,38 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include "pngsaver.h" +- +-PngSaver::PngSaver(QObject *parent) +-{ +- +-} +- +-PngSaver::PngSaver(QString name, QString oldpath) +- : m_oldpath(oldpath), +- m_name(name) +-{ +- +-} +- +-void PngSaver::doSave() +-{ +- QImage img; +- img.load(m_oldpath); +- img.save(m_name); +-} +diff --git a/src/imageBaseOP/pngsaver.h b/src/imageBaseOP/pngsaver.h +deleted file mode 100644 +index b20f5d6..0000000 +--- a/src/imageBaseOP/pngsaver.h ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef PNGSAVER_H +-#define PNGSAVER_H +- +-#include <QObject> +-#include <QImage> +-#include <QString> +- +-class PngSaver : public QObject +-{ +- Q_OBJECT +-public: +- explicit PngSaver(QObject *parent = nullptr); +- PngSaver(QString name, QString oldpath); +- QString m_oldpath; +- QString m_name; +- +-public slots: +- void doSave(); +- +-}; +- +-#endif // PNGSAVER_H +diff --git a/src/imageBaseOP/savefilebase.cpp b/src/imageBaseOP/savefilebase.cpp +index 5e75278..1803e97 100644 +--- a/src/imageBaseOP/savefilebase.cpp ++++ b/src/imageBaseOP/savefilebase.cpp +@@ -24,8 +24,8 @@ + #include <QDebug> + #include <QFile> + #include <QThread> +-#include "pngsaver.h" + #include <QApplication> ++#include "createofd.h" + + constexpr inline int U(const char *str) + { +@@ -57,15 +57,37 @@ bool SaveFileBase::imageSave(QImage *imgOP) + if (m_fileName.endsWith(".tiff")){ + saveAsTiff(tmp, m_fileName); + } +- if(m_fileName.endsWith(".png")){ ++ if(m_fileName.endsWith(".png") || m_fileName.endsWith(".ofd")){ + QString oldpath = "/tmp/kylin-scanner/images/" + QFileInfo(m_fileName).baseName() + ".jpg"; +- PngSaver *saver = new PngSaver(m_fileName, oldpath); +- QThread *thread = new QThread(); +- saver->moveToThread(thread); +- connect(thread, &QThread::started, saver, &PngSaver::doSave); +- connect(thread, &QThread::finished, thread, &QThread::deleteLater); +- connect(thread, &QThread::finished, saver, &PngSaver::deleteLater); +- thread->start(); ++ if(m_fileName.endsWith(".ofd")){ ++ m_ofdName.append(m_fileName); ++ m_fileName.replace(".ofd", ".png"); ++ m_pngName.append(m_fileName); ++ m_ofdCount++; ++ } ++ QImage img; ++ img.load(oldpath); ++ img.save(m_fileName); ++ ++ if(m_ofdCount == g_sane_object->scanPageNumber){ ++ if(g_sane_object->scanPageNumber==1){ ++ bool result = OFD::createOFD(m_ofdName.at(0), m_pngName); ++ if(result){ ++ QFile::remove(m_pngName[0]); ++ } ++ }else{ ++ QString ofdname = QString(m_ofdName[0]).remove("[1]"); ++ bool result = OFD::createOFD(ofdname, m_pngName); ++ if(result){ ++ for (int var = 0; var < m_pngName.length(); ++var) { ++ QFile::remove(m_pngName[var]); ++ } ++ } ++ } ++ m_ofdCount = 0; ++ m_ofdName.clear(); ++ m_pngName.clear(); ++ } + } + } else { + if (!m_fileName.endsWith(".txt")) +@@ -82,11 +104,10 @@ bool SaveFileBase::imageSave(QImage *imgOP) + void SaveFileBase::saveToPdf(QImage *imgOP) + { + QImage tmp = imgOP->copy(); +- + QFile pdfFile(m_fileName); + pdfFile.open(QIODevice::WriteOnly); + QPdfWriter *pdfWriter = new QPdfWriter(&pdfFile); +- setPdfSize(pdfWriter, g_sane_object->userInfo.size); ++ setPdfSize(&tmp, pdfWriter, g_sane_object->userInfo.size); + + int resolution = g_sane_object->resolutionValue; + pdfWriter->setResolution(resolution); +@@ -118,11 +139,12 @@ void SaveFileBase::saveToPdf(QImage *imgOP) + QFileInfo a = QFileInfo(m_fileName); + + QString outputName = a.absolutePath() + "/" + a.baseName().split("[")[0] + ".pdf"; +- QString str = QString("gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=%1 ").arg(outputName); ++ QString str = QString("pdfunite "); + for(int i = 0; i < m_pdfName.length(); i++){ + str += m_pdfName[i]; + str += " "; + } ++ str += outputName; + qDebug() << str; + QProcess *process = new QProcess(); + process->start(str); +@@ -144,7 +166,7 @@ void SaveFileBase::saveToPdf(QImage *imgOP) + } + } + +-void SaveFileBase::setPdfSize(QPdfWriter *pdfWriter, QString size) ++void SaveFileBase::setPdfSize(QImage *tmp, QPdfWriter *pdfWriter, QString size) + { + switch (toUnicode(size)) { + case U("A0"): +diff --git a/src/imageBaseOP/savefilebase.h b/src/imageBaseOP/savefilebase.h +index 0e1f1ad..af6c60b 100644 +--- a/src/imageBaseOP/savefilebase.h ++++ b/src/imageBaseOP/savefilebase.h +@@ -37,7 +37,7 @@ public: + bool imageSave(QImage *imgOP); + void saveToPdf(QImage *img); + int toUnicode(QString str); +- void setPdfSize(QPdfWriter *pdfWriter, QString size); ++ void setPdfSize(QImage *tmp, QPdfWriter *pdfWriter, QString size); + void saveAsTiff(QImage image, QString file_name); + + private: +@@ -46,6 +46,9 @@ private: + QStringList m_fileImages; + QList<FIBITMAP*> m_filist; + int m_pdfCount = 0; ++ int m_ofdCount = 0; ++ QStringList m_ofdName; ++ QStringList m_pngName; + QStringList m_pdfName; + signals: + +diff --git a/src/imageOp/imageoperationbeauty.h b/src/imageOp/imageoperationbeauty.h +index 5fad0cd..7157158 100644 +--- a/src/imageOp/imageoperationbeauty.h ++++ b/src/imageOp/imageoperationbeauty.h +@@ -28,9 +28,7 @@ class ImageOperationBeauty : public ImageOperationBase + public: + ImageOperationBeauty(QImage *origin, QStack<QImage> *stackImage); + virtual void ImageOP(); +-private: + void beauty(const QImage inputImage); +- void showBeautyRunningDialog(); + + }; + +diff --git a/src/imageOp/imageoperationmirror.h b/src/imageOp/imageoperationmirror.h +index 38dd1dd..24dac1b 100644 +--- a/src/imageOp/imageoperationmirror.h ++++ b/src/imageOp/imageoperationmirror.h +@@ -26,7 +26,6 @@ class ImageOperationMirror : public ImageOperationBase + public: + ImageOperationMirror(QImage *origin, QStack<QImage> *stackImage); + virtual void ImageOP(); +-private: + void mirror(QImage *img); + + }; +diff --git a/src/imageOp/imageoperationocr.h b/src/imageOp/imageoperationocr.h +index ce0d936..00ccd55 100644 +--- a/src/imageOp/imageoperationocr.h ++++ b/src/imageOp/imageoperationocr.h +@@ -26,7 +26,6 @@ class ImageOperationOCR : public ImageOperationBase + public: + ImageOperationOCR(QImage *origin); + virtual void ImageOP(); +-private: + void ocr(); + }; + +diff --git a/src/imageOp/imageoperationrotate.cpp b/src/imageOp/imageoperationrotate.cpp +deleted file mode 100644 +index a4138e0..0000000 +--- a/src/imageOp/imageoperationrotate.cpp ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include "imageoperationrotate.h" +-#include "../include/common.h" +- +-ImageOperationRotate::ImageOperationRotate(QImage *origin, QStack<QImage> *stackImage) +-{ +- m_origin = origin; +- m_stackImage = stackImage; +-} +-void ImageOperationRotate::ImageOP(){ +- QImage opImage = imageCopy(m_origin,m_stackImage); +- QMatrix matrix; +- matrix.rotate(270); +- opImage = opImage.transformed(matrix); +- opImage.save(ScanningPicture); +- emit finished(); +-} +diff --git a/src/imageOp/imageoperationrotate.h b/src/imageOp/imageoperationrotate.h +deleted file mode 100644 +index af973f5..0000000 +--- a/src/imageOp/imageoperationrotate.h ++++ /dev/null +@@ -1,31 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef IMAGEOPERATIONROTATE_H +-#define IMAGEOPERATIONROTATE_H +- +-#include "imageoperationbase.h" +- +-class ImageOperationRotate : public ImageOperationBase +-{ +-public: +- ImageOperationRotate(QImage *origin, QStack<QImage> *stackImage); +- virtual void ImageOP(); +-}; +- +-#endif // IMAGEOPERATIONROTATE_H +diff --git a/src/imageOp/imageoperationwatermark.cpp b/src/imageOp/imageoperationwatermark.cpp +deleted file mode 100644 +index a949240..0000000 +--- a/src/imageOp/imageoperationwatermark.cpp ++++ /dev/null +@@ -1,85 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include "imageoperationwatermark.h" +-#include <QPixmap> +-#include <QFont> +-#include <QPainter> +-#include <cmath> +-#include "../include/common.h" +-#include <QDebug> +- +-imageOperationWaterMark::imageOperationWaterMark(QImage *origin, QStack<QImage> *stackImage) +-{ +- m_origin = origin; +- m_stackImage = stackImage; +-} +-void imageOperationWaterMark::ImageOP(){ +- QImage opImage = imageCopy(m_origin,m_stackImage); +- waterMark(&opImage); +-} +-void imageOperationWaterMark::waterMark(QImage *opImage){ +- QPixmap pix; +- pix = QPixmap::fromImage(*opImage); +- +- qDebug() << "pix size: " << pix.size(); +- +- +- int spacing = 5; +- int fontSize = pix.width()/30; +- +- QFont font; +- font.setFamily("NotoSansCJKsc-Regular, NotoSansCJKsc;"); +- font.setPointSize(fontSize); +- font.setWeight(400); +- font.setLetterSpacing(QFont::AbsoluteSpacing, spacing); +- +- QColor color; +- color.setRed(0); +- color.setGreen(0); +- color.setBlue(0); +- color.setAlphaF(0.2); +- +- QPainter painter(&pix); +- painter.setFont(font); +- painter.setPen(color); +- painter.rotate(15); +- +- int squareEdgeSize = opImage->width() * sin(45) + opImage->height() * sin( 45); +- int hCount = squareEdgeSize / ((fontSize + spacing) * (m_text.size() + 1)) + 1; +- int x = squareEdgeSize / hCount + (fontSize + spacing) * 3; +- int y = x / 2; +- +- qDebug() << "hcount = " << hCount +- << "squareEdgeSize = " << squareEdgeSize +- << "(x,y) = " << x << y; +- +- for (int i = 0; i < hCount; ++i) { +- for (int j = 0; j < hCount * 2; ++j) { +- painter.drawText(x * i, y * j, m_text); +-// KyInfo() << "drawtext: " << text; +- } +- } +- +- QImage transformImg = pix.toImage(); +- transformImg.save(ScanningPicture); +- painter.end(); +-} +-void imageOperationWaterMark::setText(QString text){ +- m_text = text; +-} +diff --git a/src/imageOp/imageoperationwatermark.h b/src/imageOp/imageoperationwatermark.h +deleted file mode 100644 +index 7b0078b..0000000 +--- a/src/imageOp/imageoperationwatermark.h ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef IMAGEOPERATIONWATERMARK_H +-#define IMAGEOPERATIONWATERMARK_H +- +-#include "imageoperationbase.h" +- +-class imageOperationWaterMark : public ImageOperationBase +-{ +-public: +- imageOperationWaterMark(QImage *origin, QStack<QImage> *stackImage); +- virtual void ImageOP(); +- void setText(QString); +-private: +- QString m_text; +- void waterMark(QImage *opImage); +-}; +- +-#endif // IMAGEOPERATIONWATERMARK_H +diff --git a/src/include/common.h b/src/include/common.h +index 0bf8961..58c0690 100644 +--- a/src/include/common.h ++++ b/src/include/common.h +@@ -63,7 +63,7 @@ + + /******** ThumbnailWidget ********/ + #define ThumbnailWidgetMinimumWidth 68 +-#define ThumbnailWidgetTabletMinimumWidth 78 ++#define ThumbnailWidgetTabletMinimumWidth 78 // 平板模式下的宽度 + #define ThumbnailIconSize QSize(40, 40) + #define ThumbnailShadowColor QColor(5,15,25,133) + #define ThumbnailShadowRadiu 20 +diff --git a/src/include/customlabel.h b/src/include/customlabel.h +index e1d14de..029a997 100644 +--- a/src/include/customlabel.h ++++ b/src/include/customlabel.h +@@ -14,11 +14,10 @@ public: + void setTextLimitShrink(const QString &text, int width); + void setTextLimitExpand(const QString &text); + QString fullText() const; ++ void elideText(); ++ + protected: + void paintEvent(QPaintEvent *); +- +-private: +- void elideText(); + private: + QString m_fullText; + }; +diff --git a/src/kabase/Qt/windowmanage.hpp b/src/kabase/Qt/windowmanage.hpp +index 6894e24..372a991 100644 +--- a/src/kabase/Qt/windowmanage.hpp ++++ b/src/kabase/Qt/windowmanage.hpp +@@ -54,23 +54,23 @@ public: + }; + + /* id 的初始值必须为 0 */ +- static void getWindowId(quint32 *id) { ++ static void getWindowId(kdk::WindowId *id) { + connect(kdk::WindowManager::self(), &kdk::WindowManager::windowAdded, [=](const kdk::WindowId &windowId) { + if (getpid() == (int)kdk::WindowManager::getPid(windowId) && *id == 0) { +- *id = windowId.toLongLong(); ++ *id = windowId; + } + }); + + return; + }; + +- static void keepWindowAbove(const quint32 id) { ++ static void keepWindowAbove(const kdk::WindowId id) { + kdk::WindowManager::keepWindowAbove(id); + + return; + }; + +- static void activateWindow(const quint32 id) { ++ static void activateWindow(const kdk::WindowId id) { + kdk::WindowManager::activateWindow(id); + + return; +diff --git a/src/leftimagehandlesuccesspagewidget.cpp b/src/leftimagehandlesuccesspagewidget.cpp +index a31e202..3222bc8 100644 +--- a/src/leftimagehandlesuccesspagewidget.cpp ++++ b/src/leftimagehandlesuccesspagewidget.cpp +@@ -60,7 +60,7 @@ void LeftImageHandleSuccessPageWidget::showOcrWidgetSlot() + { + if (g_sane_object->ocrFlag == 0) { + m_showImageOrOcrStackWidget->setCurrentWidget(m_showOcrWidget); +- KyInfo() << "After switch to ocr page, ocrFlag = " << g_sane_object->ocrFlag; ++ qDebug() << "After switch to ocr page, ocrFlag = " << g_sane_object->ocrFlag; + } else { + m_showImageOrOcrStackWidget->setCurrentWidget(m_showImageWidget); + g_user_signal->stopOcrTimer(); +diff --git a/src/main.cpp b/src/main.cpp +index e61ad89..6ae4ec8 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -79,7 +79,7 @@ static QString getCurrentUserName() + process->waitForFinished(); + QString userNow = QString::fromLocal8Bit(process->readAllStandardOutput().trimmed()); + +- KyInfo() << "Exist user: " << userNow; ++ qDebug() << "Exist user: " << userNow; + + return userNow; + } +@@ -88,7 +88,7 @@ static void doWrite(QString userNow, int pidNow) + { + QFile file(UserExistFile); + if (!file.open(QIODevice::ReadWrite | QIODevice::Truncate)) { +- KyInfo() << "open this file error!"; ++ qDebug() << "open this file error!"; + return; + } + +@@ -99,7 +99,7 @@ static void doWrite(QString userNow, int pidNow) + | QFileDevice::ReadOther | QFileDevice::WriteOther); + + QString message = userNow + "," + QString::number(pidNow); +- KyInfo() << "doWrite: message= " << message; ++ qDebug() << "doWrite: message= " << message; + + QTextStream text_stream(&file); + text_stream << message << "\r\n"; +@@ -107,30 +107,15 @@ static void doWrite(QString userNow, int pidNow) + file.close(); + } + +-int getScreenWidth() +-{ +- Display *disp = XOpenDisplay(NULL); +- Screen *scrn = DefaultScreenOfDisplay(disp); +- if (NULL == scrn) +- return 0; +- +- int width = scrn->width; +- +- if (NULL != disp) +- XCloseDisplay(disp); +- +- return width; +-} +- + static QString execCmd(QString cmd) + { +- KyInfo() << "cmd = " << cmd; ++ qDebug() << "cmd = " << cmd; + QProcess process; + process.start(QString(cmd)); + process.waitForFinished(); + QByteArray result = process.readAllStandardOutput(); + result = result.left(result.length()-1); +- KyInfo() << "arch = " << result; ++ qDebug() << "arch = " << result; + return result; + } + static QString getSystemArchitecture() +@@ -217,7 +202,7 @@ int main(int argc, char *argv[]) + bool hide = parser.isSet(hideOption); + g_config_signal->m_hideScanSettingsWidget = hide; + +- KyInfo() << "args = " << parser.positionalArguments() ++ qDebug() << "args = " << parser.positionalArguments() + << "hide = " << hide + << "openFile = " << g_config_signal->m_openFileName; + } +@@ -265,6 +250,7 @@ int main(int argc, char *argv[]) + QApplication::installTranslator(&trans_SDK); + } + ++ + if (! app.isRunning()) { + QString userNow = getCurrentUserName(); + int pidNow = app.applicationPid(); +@@ -276,30 +262,29 @@ int main(int argc, char *argv[]) + app.setActivationWindow(w); + + /* wayland最小化拉起 */ +- quint32 mainWidgetWindowId = w->getWindowId(); +- qDebug() << "mainWidgetWindowId: " << mainWidgetWindowId; ++ kabase::WindowManage::getWindowId(&w->windowId); ++ qDebug() << "mainWidgetWindowId: " << w->windowId; ++ qDebug() << "platformName: " << QGuiApplication::platformName(); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { + QObject::connect(&app, &kdk::QtSingleApplication::messageReceived, [=](){ +- printf("mainWidgetWindowId: %d",mainWidgetWindowId); +- qDebug() << "mainWidgetWindowId: " << mainWidgetWindowId; +- ::kabase::WindowManage::activateWindow(mainWidgetWindowId); ++ qDebug() << "wayland下 拉起kylin-scanner 窗口"; ++ qDebug() << "mainWidgetWindowId: " << w->windowId; ++ kabase::WindowManage::activateWindow(w->windowId); + }); + } + + /* 移除标题栏 */ + kabase::WindowManage::removeHeader(w); + ++ qputenv("LD_LIBRARY_PATH", "/opt/compatibility_layer/lib/sane"); ++ qputenv("QT_WAYLAND_SHELL_INTEGRATION", "ukui-shell"); ++ + /* 解决置顶失效 */ +- kabase::WindowManage::keepWindowAbove(w->windowId); ++ kabase::WindowManage::keepWindowAbove(w->winId()); + +- w->setWindowFlags(w->windowFlags() | Qt::WindowStaysOnTopHint); + + w->show(); + +- /* 居中显示 */ +- kabase::WindowManage::setMiddleOfScreen(w); +- +- + return app.exec(); + } + } +diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp +index c694251..4972c8f 100644 +--- a/src/mainwidget.cpp ++++ b/src/mainwidget.cpp +@@ -18,6 +18,7 @@ + + #include "mainwidget.h" + #define cimg_use_jpeg ++#define cimg_use_png + + #include <QMessageBox> + #include <QWidgetList> +@@ -54,8 +55,6 @@ MainWidget::MainWidget(QWidget *parent) + MainWidget::~MainWidget() + { + g_sane_object->stopSaneRead(true); +- +- exit(0); + } + void MainWidget::rotationChanged(bool isPCMode,int width,int height){ + GlobalUserSignal::getInstance()->setCurrentMode(isPCMode); +@@ -67,7 +66,7 @@ void MainWidget::setupGui() + kabase::WindowManage::removeHeader(this); + + this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); +- this->setWindowTitle(tr("Scanner")); ++ this->setWindowTitle(QApplication::tr("Scanner")); + this->setMouseTracking(true); + this->setAcceptDrops(true); + +@@ -148,7 +147,7 @@ void MainWidget::resizeDisplayWidget() + void MainWidget::fontSizeChange() + { + float fontSize = kdk::GsettingMonitor::getSystemFontSize().toFloat(); +- KyInfo() << "fontSize = " << fontSize; ++ qDebug() << "fontSize = " << fontSize; + } + + void MainWidget::transparencyChange() +@@ -160,34 +159,18 @@ void MainWidget::transparencyChange() + + void MainWidget::warnMsg(QString msg) + { +- QMessageBox *msgBox = new QMessageBox(); ++ QMessageBox *msgBox = new QMessageBox(this); + m_msgBoxList.append(msgBox); + msgBox->setWindowModality(Qt::ApplicationModal); +- msgBox->setAttribute(Qt::WA_ShowModal, true); + + msgBox->setText(msg); + msgBox->setIcon(QMessageBox::Warning); +- msgBox->setWindowTitle(tr("Scanner")); ++ msgBox->setWindowTitle(QApplication::tr("Scanner")); + QPushButton *okBtn = new QPushButton(msgBox); + okBtn->setText(tr("Ok")); + msgBox->addButton(okBtn, QMessageBox::YesRole); + msgBox->setContextMenuPolicy(Qt::NoContextMenu); + +- QWidget *widget = nullptr; +- QWidgetList widgetList = QApplication::allWidgets(); +- for (int i=0; i<widgetList.length(); ++i) { +- if (widgetList.at(i)->objectName() == "MainWindow") { +- widget = widgetList.at(i); +- } +- } +- if (widget) { +- msgBox->setParent(widget); +- QRect rect = widget->geometry(); +- int x = rect.x() + rect.width()/2 - msgBox->width()/2; +- int y = rect.y() + rect.height()/2 - msgBox->height()/2; +- msgBox->move(x,y); +- } +- + QTimer* timer = new QTimer(); + timer->start(20000); + timer->setSingleShot(true); +@@ -206,6 +189,8 @@ void MainWidget::warnMsg(QString msg) + } + } + } ++ ++ + msgBox->exec(); + } + +@@ -230,35 +215,7 @@ void MainWidget::resizeEvent(QResizeEvent *event) + QWidget::resizeEvent(event); + } + +-//void MainWidget::paintEvent(QPaintEvent *event) +-//{ +-// Q_UNUSED(event); +- +-// /* 反锯齿 */ +-// QPainter p(this); +-// p.setRenderHint(QPainter::Antialiasing); +- +-// QPainterPath rectPath; +-// rectPath.addRoundedRect(this->rect(), 0, 0); +-// /* 开启背景模糊效果(毛玻璃) */ +-// KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(rectPath.toFillPolygon().toPolygon())); +- +-// QStyleOption opt; +-// opt.init(this); +- +-// p.setPen(Qt::NoPen); +-// QColor color = palette().color(QPalette::Window); +-// color.setAlpha(g_config_signal->m_transparency); +-// QPalette pal(this->palette()); +-// pal.setColor(QPalette::Window,QColor(color)); +-// this->setPalette(pal); +-// QBrush brush =QBrush(color); +-// p.setBrush(brush); +-// p.drawRoundedRect(opt.rect,0,0); +-// style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +-// p.fillPath(rectPath, brush); +-// return; +-//} ++ + void MainWidget::keyPressEvent(QKeyEvent *event) + { + switch (event->key()) { +@@ -278,7 +235,7 @@ void MainWidget::keyPressEvent(QKeyEvent *event) + + case Qt::Key_Z: + if (event->modifiers() == Qt::ControlModifier) { +- KyInfo() << "pressed key(ctrl+z): " << event->key(); ++ qDebug() << "pressed key(ctrl+z): " << event->key(); + } + break; + case Qt::Key_Escape: +@@ -301,7 +258,7 @@ void MainWidget::keyReleaseEvent(QKeyEvent *event) + { + switch (event->key()) { + case Qt::Key_F1: +- KyInfo() << "F1 =========="; ++ qDebug() << "F1 =========="; + showHelpDialog(); + break; + default: +@@ -330,12 +287,15 @@ void MainWidget::loadAndSave(QStringList loadPath) + for(int i = 0; i < loadPath.length(); i++){ + QFileInfo loadPathInfo(loadPath[i]); + QString newLoadPath = loadPathInfo.absolutePath() + "/" + loadPathInfo.baseName() + ".jpg"; ++ QString newPNGLoadPath = loadPathInfo.absolutePath() + "/" + loadPathInfo.baseName() + ".png"; + cimg_library::CImg<unsigned char> img(QString(loadPath[i]).toLocal8Bit().data()); + if(!QFile(newLoadPath).exists()){ + img.save_jpeg(newLoadPath.toLocal8Bit().data()); ++ img.save_png(newPNGLoadPath.toLocal8Bit().data()); + }else{ + QFile(newLoadPath).remove(); + img.save_jpeg(newLoadPath.toLocal8Bit().data()); ++ img.save_png(newPNGLoadPath.toLocal8Bit().data()); + } + } + } +@@ -368,7 +328,8 @@ void MainWidget::maximizeWindowSlot() + } + } + } +-quint32 MainWidget::getWindowId(){ ++kdk::WindowId MainWidget::getWindowId(){ ++ windowId = this->winId(); + return windowId; + } + void MainWidget::closeWindowSlot() +@@ -379,7 +340,7 @@ void MainWidget::closeWindowSlot() + void MainWidget::detectScanDevicesSlot() + { + if (! m_detectScanDevicesThread.isRunning()) { +- KyInfo() << "Not running detect scan devices thread. Let's detect ..."; ++ qDebug() << "Not running detect scan devices thread. Let's detect ..."; + m_detectScanDevicesThread.start(); + g_user_signal->detectPageWaitTimerStart(); + } +@@ -399,6 +360,10 @@ void MainWidget::detectScanDeviceThreadFinishedSlot(bool isDetected) + m_devFinder = new deviceFinder(); + QObject::connect(m_devFinder, &deviceFinder::succeed, this, &MainWidget::showNewDeviceListPageSuccessSlot); + QObject::connect(m_devFinder, &deviceFinder::succeed, this, &MainWidget::showNewDeviceListPageFailSlot); ++ QObject::connect(m_devFinder, &deviceFinder::succeed, [=](){g_sane_object->onDetection = false;}); ++ QObject::connect(m_devFinder, &deviceFinder::failed, [=](){g_sane_object->onDetection = false;}); ++ ++ g_sane_object->onDetection = true; + m_devFinder->startWorker(); + } + } +@@ -406,7 +371,7 @@ void MainWidget::detectScanDeviceThreadFinishedSlot(bool isDetected) + static int getSubStringNumber(QString src, QString sub) + { + QStringList srclist = src.split(sub); +- KyInfo() << "srclist = " << srclist ++ qDebug() << "srclist = " << srclist + << "srclist.size = " << srclist.size(); + return srclist.size()-1; + } +@@ -423,7 +388,7 @@ void MainWidget::startScanOperationSlot() + + if (m_scanThread.isRunning()) { + // complicate click scan button, will be crashed +- KyInfo() << "complicate click scan button."; ++ qDebug() << "complicate click scan button."; + return; + } + m_scanThread.start(); +@@ -436,7 +401,6 @@ void MainWidget::showScanDialogSlot() + m_scanDialog = new ScanDialog(); + m_scanDialog->setAttribute(Qt::WA_DeleteOnClose); + +- + QWidget *widget = nullptr; + QWidgetList widgetList = QApplication::allWidgets(); + for (int i=0; i<widgetList.length(); ++i) { +@@ -450,11 +414,6 @@ void MainWidget::showScanDialogSlot() + int y = rect.y() + rect.height()/2 - m_scanDialog->height()/2; + m_scanDialog->move(x,y); + } +- +-// QPoint globalPos = this->mapToGlobal(QPoint(0, 0)); +-// m_scanDialog->move(globalPos.x() + (this->width() - m_scanDialog->width())/2, +-// globalPos.y() + (this->height() - m_scanDialog->height())/2); +- + m_scanDialog->exec(); + } + +@@ -467,7 +426,7 @@ void MainWidget::closeScanDialogSlot() + + void MainWidget::scanThreadFinishedSlot(int saneStatus) + { +- KyInfo() << "saneStatus: " << saneStatus; ++ qDebug() << "saneStatus: " << saneStatus; + + if (saneStatus != SANE_STATUS_GOOD) { + if (saneStatus == SANE_STATUS_INVAL) { +@@ -668,7 +627,6 @@ void MainWidget::showBeautyRunningDialog() + m_beautyRunningDialog->exec(); + + +-// g_user_signal->doBeautyOperation(); + } + + void MainWidget::hideBeautyRunningDialog() +@@ -697,16 +655,12 @@ void MainWidget::showRectifyRunningDialog() + + void MainWidget::startRectifyOperationSlot() + { +-// QEventLoop eventLoop; + m_rectifyThread.start(); +-// connect(&m_rectifyThread, SIGNAL(finished()), &eventLoop, SLOT(quit())); +-// m_rectifyThread.wait(); +- // eventLoop.exec(); + } + + void MainWidget::isRejectedRectifySlot() + { +- KyInfo() << "rectify is reject."; ++ qDebug() << "rectify is reject."; + if (! m_rectifyRunningDialog->isHidden()) { + m_rectifyRunningDialog->hide(); + m_rectifyRunningDialog->reject(); +@@ -715,27 +669,26 @@ void MainWidget::isRejectedRectifySlot() + + void MainWidget::hideRectifyRunningDialog(bool isTrue) + { +- KyInfo() << "hide rectify dialog"; ++ qDebug() << "hide rectify dialog"; + if (! m_rectifyRunningDialog->isHidden()) { + m_rectifyRunningDialog->hide(); + m_rectifyRunningDialog->reject(); + } + } + +- + void DetectScanDevicesThread::run() + { +- KyInfo() << "FindScanDevicesThread begin"; ++ qDebug() << "FindScanDevicesThread begin"; + + bool res = g_sane_object->detectSaneDevices(); + + if (! res) { + emit detectScanDevicesFinishedSignal(false); + emit g_user_signal->closeUsbHotPlugThreadSignal(); +- KyInfo() << "detect scan devices finished: false."; ++ qDebug() << "detect scan devices finished: false."; + } else { + emit detectScanDevicesFinishedSignal(true); +- KyInfo() << "detect scan devices finished: true."; ++ qDebug() << "detect scan devices finished: true."; + emit g_user_signal->startUsbHotPlugThreadSignal(); + } + } +@@ -745,7 +698,6 @@ void ScanThread::run() + { + g_sane_object->isOnScanning = true; + int ret = 0; +- + g_sane_object->scanPageNumber = 0; + g_sane_object->loadFullScanFileNames.clear(); + g_sane_object->saveFullScanFileNames.clear(); +@@ -754,9 +706,9 @@ void ScanThread::run() + + emit g_user_signal->dbusInhabitSignal(); // 阻止扫描过程中睡眠 + +- KyInfo() << "start_scanning start"; ++ qDebug() << "start_scanning start"; + ret = g_sane_object->startScanning(g_sane_object->userInfo); +- KyInfo() << "start_scanning end, status = " << ret; ++ qDebug() << "start_scanning end, status = " << ret; + + int saneStatus = ret; + +@@ -773,7 +725,7 @@ void ScanThread::run() + RectifyThread::RectifyThread(QObject *parent) + : QThread(parent) + { +- KyInfo() << "Create rectify thread."; ++ qDebug() << "Create rectify thread."; + } + + RectifyThread::~RectifyThread() +diff --git a/src/mainwidget.h b/src/mainwidget.h +index 0d3d1cd..a20787b 100644 +--- a/src/mainwidget.h ++++ b/src/mainwidget.h +@@ -44,18 +44,12 @@ + #include <QInputDialog> + #include <qmath.h> + #include "utils/HorizontalOrVerticalMode.h" +- +-#include "utils/login1_dbus.h" +- +-#include <ukui-log4qt.h> +- + //#include "ocrobject.h" + #include "runningdialog.h" + #include "scandialog.h" + #include "displaywidget.h" + #include "include/common.h" + #include "include/theme.h" +-#include "utils/xatom-helper.h" + #include "titlebar/titlebar.h" + #include "globalsignal.h" + #include "usb.h" +@@ -65,6 +59,7 @@ + #include "waittingdialog.h" + #include "deviceFinder.h" + #include "newdevicelistpage.h" ++#include "Qt/windowmanage.hpp" + + class ScanThread : public QThread + { +@@ -121,11 +116,11 @@ public: + void fontSizeChange(); + void transparencyChange(); + +- quint32 getWindowId(); ++ kdk::WindowId getWindowId(); + void reboot(); + + static int const EXIT_CODE_REBOOT; +- quint32 windowId = 0; ++ kdk::WindowId windowId = 0; + + protected: + void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; +@@ -137,7 +132,6 @@ private: + QDBusInterface *server = nullptr; + QDBusMessage serverReturnValue; + +- login1dbusManager *m_dbus = nullptr; + quint32 flag; + + TitleBar *m_titleBar = nullptr; +diff --git a/src/newdevicelistpage.cpp b/src/newdevicelistpage.cpp +index b29c70d..01e6e70 100644 +--- a/src/newdevicelistpage.cpp ++++ b/src/newdevicelistpage.cpp +@@ -143,6 +143,14 @@ void newDeviceListPage::init() + + this->setLayout(m_VLayout); + this->setFixedSize(560, 420); ++ if(m_nextStepButton->isEnabled()){ ++ m_nextStepButton->setFocus(); ++ m_nextStepButton->setDefault(true); ++ }else{ ++ m_cancelButton->setFocus(); ++ m_cancelButton->setDefault(true); ++ } ++ + } + + void newDeviceListPage::initConnect() +@@ -262,6 +270,7 @@ void newDeviceListPage::nextButtonClickSlot() + // 找到了对应驱动 + m_selectedDriverName->setText(driverName); + m_mainWidget->setCurrentIndex(1); ++ m_installButton->setFocus(); + this->setFixedSize(425, 210); + + QWidget *widget = nullptr; +diff --git a/src/newdevicelistpage.h b/src/newdevicelistpage.h +index 5ab5b35..afe77aa 100644 +--- a/src/newdevicelistpage.h ++++ b/src/newdevicelistpage.h +@@ -85,7 +85,7 @@ private: + QList<DeviceInformation> m_devInfoList; + QMap<QString, QString> m_nameToLever; + DeviceInformation m_waitForInstallOne; +- AptUtilHelper* m_aptHelper = nullptr; ++ AptUtilHelper *m_aptHelper = nullptr; + DebUtilHelper *m_debHelper = nullptr; + QMessageBox *m_msg; + +@@ -93,7 +93,7 @@ private: + void initConnect(); + void handleData(); + +-private Q_SLOTS: ++public Q_SLOTS: + void nextButtonClickSlot(); + void installDriverSlot(); + +diff --git a/src/rectify.cpp b/src/rectify.cpp +index d7968cd..2c29e1c 100644 +--- a/src/rectify.cpp ++++ b/src/rectify.cpp +@@ -18,7 +18,7 @@ + + #include "rectify.h" + +-#include <ukui-log4qt.h> ++#include <QDebug> + + int ImageRectify(QImage *src) + { +diff --git a/src/runningdialog.cpp b/src/runningdialog.cpp +index 2b294f0..bff1cd2 100644 +--- a/src/runningdialog.cpp ++++ b/src/runningdialog.cpp +@@ -20,92 +20,6 @@ + #include <kysdk/applications/gsettingmonitor.h> + #include "Qt/windowmanage.hpp" + +-RunningDialog::RunningDialog(QWidget *parent) +- : QDialog(parent) +- , svghandler (new SVGHandler()) +- , time (new QTimer()) +- , m_closeButton(new QPushButton()) +- , m_titleHBoxLayout(new QHBoxLayout()) +- , waitImage (new QLabel()) +- , waitText (new QLabel()) +- , hLayoutInfo (new QHBoxLayout()) +- , btnCancel (new CustomPushButton()) +- , hLayoutCancel (new QHBoxLayout()) +- , vLayout (new QVBoxLayout()) +-{ +- setWindowModality(Qt::ApplicationModal); +- kabase::WindowManage::removeHeader(this); +- +- +- setFixedSize(WINDOW_WIDTH, WINDOW_HEIGHT); +- +- if (isDarkTheme()) { +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(0, 0, 0)); +- setAutoFillBackground(true); +- setPalette(pal); +- } else { +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(255, 255, 255)); +- setAutoFillBackground(true); +- setPalette(pal); +- } +- +- m_closeButton->setIcon(QIcon::fromTheme ("window-close-symbolic")); +- m_closeButton->setToolTip(tr("Close")); +- m_closeButton->setFixedSize(30, 30); +- m_closeButton->setIconSize (QSize(16, 16)); +- m_closeButton->setProperty("isWindowButton", 0x2); +- m_closeButton->setProperty("useIconHighlightEffect", 0x8); +- m_closeButton->setFlat(true); +- +- m_titleHBoxLayout->setSpacing(0); +- m_titleHBoxLayout->addStretch(); +- m_titleHBoxLayout->addWidget(m_closeButton); +- m_titleHBoxLayout->setContentsMargins(0, 4, 4, 4); +- m_titleHBoxLayout->setAlignment(Qt::AlignCenter); +- +- +- getFileListNum(); +- waitImage->show(); +- time->start(200); +- count = 0; +- +- waitImage->setFixedSize(20, 20); +- waitText->setText(waitMsgText); +- hLayoutInfo->setSpacing(0); +- hLayoutInfo->addWidget(waitImage); +- hLayoutInfo->addSpacing(8); +- hLayoutInfo->addWidget(waitText); +- hLayoutInfo->setAlignment(Qt::AlignLeft); +- hLayoutInfo->setContentsMargins(24, 0, 0, 0); +- +- btnCancel->setFixedSize(100, 36); +- btnCancel->setText(tr("Cancel")); +- hLayoutCancel->setSpacing(0); +- hLayoutCancel->addStretch(); +- hLayoutCancel->addWidget(btnCancel); +- hLayoutCancel->setAlignment(Qt::AlignCenter); +- hLayoutCancel->setContentsMargins(248, 0, 24, 0); +- +- vLayout->setSpacing(0); +- vLayout->addLayout(m_titleHBoxLayout); +- vLayout->addStretch(); +- vLayout->addLayout(hLayoutInfo); +- vLayout->addSpacing(32); +- vLayout->addStretch(); +- vLayout->addLayout(hLayoutCancel); +- vLayout->addSpacing(24); +- vLayout->setContentsMargins(0, 0, 0, 0); +- +- setLayout(vLayout); +- +- connect(time, SIGNAL(timeout()), this, SLOT(showPictures())); +- connect(m_closeButton, &QPushButton::clicked, this, &RunningDialog::accept); +-// connect(btnCancel, SIGNAL(clicked()), this, SLOT(accepted())); +- connect(kdk::GsettingMonitor::getInstance(), &kdk::GsettingMonitor::systemThemeChange, this, &RunningDialog::runningDialogStyleChanged); +-} +- + RunningDialog::RunningDialog(QWidget *parent, QString text) + : QDialog(parent) + , svghandler (new SVGHandler()) +diff --git a/src/runningdialog.h b/src/runningdialog.h +index 37f438f..0b8a9a1 100644 +--- a/src/runningdialog.h ++++ b/src/runningdialog.h +@@ -31,7 +31,6 @@ + #include <QTimer> + #include <QDir> + +-#include "utils/xatom-helper.h" + #include "include/common.h" + #include "include/theme.h" + #include "svghandler.h" +@@ -46,7 +45,6 @@ class RunningDialog : public QDialog + public: + CustomPushButton *btnCancel = nullptr; + QPushButton *m_closeButton = nullptr; +- explicit RunningDialog(QWidget *parent = nullptr); + explicit RunningDialog(QWidget *parent = nullptr, QString text=""); + + void getFileListNum(); +@@ -54,6 +52,7 @@ public: + void setWaitText(QString text); + void disconnectCancelButton(); + void hideCancelButton(); ++ bool isDarkTheme(); + + private: + int num = 0; +@@ -77,7 +76,6 @@ private: + + QVBoxLayout *vLayout = nullptr; + +- bool isDarkTheme(); + + + public slots: +diff --git a/src/saneobject.cpp b/src/saneobject.cpp +index cbb256e..28171ac 100644 +--- a/src/saneobject.cpp ++++ b/src/saneobject.cpp +@@ -16,7 +16,7 @@ + * + */ + #include "saneobject.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <QApplication> + + SaneObject * SaneObject::instance = new SaneObject; +@@ -74,18 +74,18 @@ static void writePnmHeader (SANE_Frame format, int width, int height, int depth, + case SANE_FRAME_RGB: + fprintf(ofp, "P6\n# SANE data follows\n%d %d\n%d\n", + width, height, (depth <= 8) ? 255 : 65535); +- KyInfo() << "#P6 SANE data follows width = " << width << "height = " << height +- << "depth = " << ((depth <= 8) ? 255 : 65535); ++ qDebug() << "#P6 SANE data follows width = " << width << "height = " << height ++ << "depth = " << ((depth <= 8) ? 255 : 65535); + break; + default: + if (depth == 1) { + fprintf(ofp, "P4\n# SANE data follows\n%d %d\n", width, height); +- KyInfo() << "#P4 SANE data follows width = " << width << "height = " << height; ++ qDebug() << "#P4 SANE data follows width = " << width << "height = " << height; + } else { + fprintf(ofp, "P5\n# SANE data follows\n%d %d\n%d\n", + width, height, (depth <= 8) ? 255 : 65535); +- KyInfo() << "#P5 SANE data follows width = " << width << "height = " << height +- << "depth = " << ((depth <= 8) ? 255 : 65535); ++ qDebug() << "#P5 SANE data follows width = " << width << "height = " << height ++ << "depth = " << ((depth <= 8) ? 255 : 65535); + } + break; + } +@@ -116,8 +116,8 @@ static void *advance (ScanImage *image) + } + + if (!image->data) { +- KyInfo() << "Can't allocate image buffer, width = " << image->width +- << "height = " << image->height; ++ qDebug() << "Can't allocate image buffer, width = " << image->width ++ << "height = " << image->height; + } + + return image->data; +@@ -126,263 +126,263 @@ static void *advance (ScanImage *image) + static SANE_Status onScanning(FILE *ofp) + { + int i = 0, offset = 0, must_buffer = 0, hundred_percent = 1; +- SANE_Int len; +- bool first_frame = true; +- SANE_Byte min = 0xff, max = 0; +- SANE_Parameters parm; +- SANE_Status status; +- ScanImage image = { nullptr, 0, 0, 0, 0 }; +- SANE_Word total_bytes = 0; +- SANE_Int hang_over = -1; +- do { +- if (!first_frame) { +- qDebug() << "sane start!"; +- status = sane_start(g_device); +- if (status != SANE_STATUS_GOOD) +- goto cleanup; +- } +- +- qDebug()<<"sane get parameter"; +- status = sane_get_parameters(g_device, &parm); +- KyInfo() << "Parm : status = " << sane_strstatus(status) +- << "format = " << parm.format +- << "last_frame = " << parm.last_frame +- << "bytes_per_line = " << parm.bytes_per_line +- << "pixels_per_line = " << parm.pixels_per_line +- << "lines = " << parm.lines +- << "depth = " << parm.depth; +- +- if (status != SANE_STATUS_GOOD) +- goto cleanup; +- +- if (first_frame) { +- if (parm.lines >= 0) { +- KyInfo() << "ScanImage's size(pixels): " << parm.pixels_per_line << parm.lines +- << "Bits/pixel: " << parm.depth * (SANE_FRAME_RGB == parm.format ? 3 : 1); +- } else { +- KyInfo() << "ScanImage's wide pixels: " << parm.pixels_per_line +- << "Height for bits/pixel: " << parm.depth * (SANE_FRAME_RGB == parm.format ? 3 : 1); +- } +- +- switch (parm.format) { +- case SANE_FRAME_RED: +- case SANE_FRAME_GREEN: +- case SANE_FRAME_BLUE: +- assert (parm.depth == 8); +- must_buffer = 1; +- offset = parm.format - SANE_FRAME_RED; +- break; +- +- case SANE_FRAME_RGB: +- case SANE_FRAME_GRAY: +- assert ((parm.depth == 1) || (parm.depth == 8) || (parm.depth == 16)); +- if (parm.lines < 0) { +- must_buffer = 1; +- offset = 0; +- } else { +- switch(g_sane_object->output_format) +- { +- case OUTPUT_PNM: +- qDebug()<<"start write file!"; +- writePnmHeader(parm.format, parm.pixels_per_line, parm.lines, parm.depth, ofp); +- break; +- } +- } +- break; +- default: +- break; +- } +- +- if (must_buffer) { +- /** ++ SANE_Int len; ++ bool first_frame = true; ++ SANE_Byte min = 0xff, max = 0; ++ SANE_Parameters parm; ++ SANE_Status status; ++ ScanImage image = { nullptr, 0, 0, 0, 0 }; ++ SANE_Word total_bytes = 0; ++ SANE_Int hang_over = -1; ++ do { ++ if (!first_frame) { ++ qDebug() << "sane start!"; ++ status = sane_start(g_device); ++ if (status != SANE_STATUS_GOOD) ++ goto cleanup; ++ } ++ ++ qDebug()<<"sane get parameter"; ++ status = sane_get_parameters(g_device, &parm); ++ qDebug() << "Parm : status = " << sane_strstatus(status) ++ << "format = " << parm.format ++ << "last_frame = " << parm.last_frame ++ << "bytes_per_line = " << parm.bytes_per_line ++ << "pixels_per_line = " << parm.pixels_per_line ++ << "lines = " << parm.lines ++ << "depth = " << parm.depth; ++ ++ if (status != SANE_STATUS_GOOD) ++ goto cleanup; ++ ++ if (first_frame) { ++ if (parm.lines >= 0) { ++ qDebug() << "ScanImage's size(pixels): " << parm.pixels_per_line << parm.lines ++ << "Bits/pixel: " << parm.depth * (SANE_FRAME_RGB == parm.format ? 3 : 1); ++ } else { ++ qDebug() << "ScanImage's wide pixels: " << parm.pixels_per_line ++ << "Height for bits/pixel: " << parm.depth * (SANE_FRAME_RGB == parm.format ? 3 : 1); ++ } ++ ++ switch (parm.format) { ++ case SANE_FRAME_RED: ++ case SANE_FRAME_GREEN: ++ case SANE_FRAME_BLUE: ++ assert (parm.depth == 8); ++ must_buffer = 1; ++ offset = parm.format - SANE_FRAME_RED; ++ break; ++ ++ case SANE_FRAME_RGB: ++ case SANE_FRAME_GRAY: ++ assert ((parm.depth == 1) || (parm.depth == 8) || (parm.depth == 16)); ++ if (parm.lines < 0) { ++ must_buffer = 1; ++ offset = 0; ++ } else { ++ switch(g_sane_object->output_format) ++ { ++ case OUTPUT_PNM: ++ qDebug()<<"start write file!"; ++ writePnmHeader(parm.format, parm.pixels_per_line, parm.lines, parm.depth, ofp); ++ break; ++ } ++ } ++ break; ++ default: ++ break; ++ } ++ ++ if (must_buffer) { ++ /** + * We're either scanning a multi-frame image or the + * scanner doesn't know what the eventual image height + * will be (common for hand-held scanners). In either + * case, we need to buffer all data before we can write + * the image. + */ +- image.width = parm.bytes_per_line; +- if (parm.lines >= 0) { +- image.height = parm.lines - STRIP_HEIGHT + 1; +- } else { +- image.height = 0; +- } +- +- image.x = image.width - 1; +- image.y = -1; +- if (!advance (&image)) { +- status = SANE_STATUS_NO_MEM; +- goto cleanup; +- } +- } +- } else { +- assert (parm.format >= SANE_FRAME_RED && parm.format <= SANE_FRAME_BLUE); +- offset = parm.format - SANE_FRAME_RED; +- image.x = image.y = 0; +- } +- +- hundred_percent = parm.bytes_per_line * parm.lines * ((parm.format == SANE_FRAME_RGB || parm.format == SANE_FRAME_GRAY) ? 1 : 3); +- while (status == SANE_STATUS_GOOD) { +- static int i =0; +- double progr; +- qDebug()<< "read file!" << i++; +- status = sane_read(g_device, g_buf, g_BufSize, &len); +- +- total_bytes += (SANE_Word) len; +- if(hundred_percent == 0){ +- hundred_percent = 1; +- } +- progr = ((total_bytes * 100.) / (double) hundred_percent); +- if (progr > 100.) +- progr = 100.; +- +- +- if (status != SANE_STATUS_GOOD) { +- if (status != SANE_STATUS_EOF) { +- goto cleanup; +- } +- break; +- } +- +- if (must_buffer) { +- KyInfo() << "must_buffer = " << must_buffer; +- switch (parm.format) { +- case SANE_FRAME_RED: +- case SANE_FRAME_GREEN: +- case SANE_FRAME_BLUE: +- for (i = 0; i < len; ++i) { +- image.data[offset + 3 * i] = g_buf[i]; +- if (!advance (&image)) { +- status = SANE_STATUS_NO_MEM; +- goto cleanup; +- } +- } +- offset += 3 * len; +- break; +- case SANE_FRAME_RGB: +- for (i = 0; i < len; ++i) { +- image.data[offset + i] = g_buf[i]; +- if (!advance (&image)) { +- status = SANE_STATUS_NO_MEM; +- goto cleanup; +- } +- } +- offset += len; +- break; +- case SANE_FRAME_GRAY: +- for (i = 0; i < len; ++i) { +- image.data[offset + i] = g_buf[i]; +- if (!advance (&image)) { +- status = SANE_STATUS_NO_MEM; +- goto cleanup; +- } +- } +- offset += len; +- break; +- default: +- break; +- } +- } else { /* ! must_buffer */ +- if ((parm.depth != 16)) { +- fwrite (g_buf, 1, len, ofp); +- } else { +- #if !defined(WORDS_BIGENDIAN) +- int start = 0; +- /* check if we have saved one byte from the last sane_read */ +- if (hang_over > -1) { +- if (len > 0) { +- fwrite (g_buf, 1, 1, ofp); +- g_buf[0] = (SANE_Byte) hang_over; +- hang_over = -1; +- start = 1; +- } +- } +- /* now do the byte-swapping */ +- for (i = start; i < (len - 1); i += 2) { +- unsigned char LSB; +- LSB = g_buf[i]; +- g_buf[i] = g_buf[i + 1]; +- g_buf[i + 1] = LSB; +- } +- /* check if we have an odd number of bytes */ +- if (((len - start) % 2) != 0) { +- hang_over = g_buf[len - 1]; +- len--; +- } +- #endif +- fwrite (g_buf, 1, len, ofp); +- } +- } +- +- if (g_verbose && parm.depth == 8) { +- for (i = 0; i < len; ++i) +- if (g_buf[i] >= max) { +- max = g_buf[i]; +- } else if (g_buf[i] < min) { +- min = g_buf[i]; +- } +- } +- } +- if(g_sane_object->stopSaneReadFlag == true){ +- if(g_sane_object->userInfo.type.compare(QApplication::tr("ADF Duplex"), Qt::CaseInsensitive) == 0){ +- status = status = sane_start(g_device); +- while(status == SANE_STATUS_GOOD){ +- status = sane_read(g_device, g_buf, g_BufSize, &len); +- } +- } +- +- status = SANE_STATUS_CANCELLED; +- goto cleanup; +- } +- fflush(ofp); +- first_frame = 0; +- qDebug() << "0531info: first_frame value has changed:" << first_frame; +- qDebug() << "0531info: parm.last_frame value:" << parm.last_frame; +- } while (!parm.last_frame); +- +- if (must_buffer) { +- KyInfo() << "must_buffer = " << must_buffer; +- image.height = image.y; +- +- switch(g_sane_object->output_format) { +- case OUTPUT_PNM: +- writePnmHeader(parm.format, parm.pixels_per_line, +- image.height, parm.depth, ofp); +- break; +- } +- +- writePnmHeader (parm.format, parm.pixels_per_line, image.height, parm.depth, ofp); +- +- #if !defined(WORDS_BIGENDIAN) +- if (parm.depth == 16) { +- for (i = 0; i < image.height * image.width; i += 2) { +- unsigned char LSB; +- LSB = image.data[i]; +- image.data[i] = image.data[i + 1]; +- image.data[i + 1] = LSB; +- } +- } +- #endif +- KyInfo() << "end scanning status: " << status; +- fwrite (image.data, 1, image.height * image.width, ofp); +- } +- +- +- KyInfo() << "end scanning status: " << status; +- +- cleanup: +- if (image.data) { +- KyInfo() << "free image data!"; +- free (image.data); +- } +- KyInfo() << "end scanning status: " << sane_strstatus(status); +- return status; ++ image.width = parm.bytes_per_line; ++ if (parm.lines >= 0) { ++ image.height = parm.lines - STRIP_HEIGHT + 1; ++ } else { ++ image.height = 0; ++ } ++ ++ image.x = image.width - 1; ++ image.y = -1; ++ if (!advance (&image)) { ++ status = SANE_STATUS_NO_MEM; ++ goto cleanup; ++ } ++ } ++ } else { ++ assert (parm.format >= SANE_FRAME_RED && parm.format <= SANE_FRAME_BLUE); ++ offset = parm.format - SANE_FRAME_RED; ++ image.x = image.y = 0; ++ } ++ ++ hundred_percent = parm.bytes_per_line * parm.lines * ((parm.format == SANE_FRAME_RGB || parm.format == SANE_FRAME_GRAY) ? 1 : 3); ++ while (status == SANE_STATUS_GOOD) { ++ static int i =0; ++ double progr; ++ qDebug()<< "read file!" << i++; ++ status = sane_read(g_device, g_buf, g_BufSize, &len); ++ ++ total_bytes += (SANE_Word) len; ++ if(hundred_percent == 0){ ++ hundred_percent = 1; ++ } ++ progr = ((total_bytes * 100.) / (double) hundred_percent); ++ if (progr > 100.) ++ progr = 100.; ++ ++ ++ if (status != SANE_STATUS_GOOD) { ++ if (status != SANE_STATUS_EOF) { ++ goto cleanup; ++ } ++ break; ++ } ++ ++ if (must_buffer) { ++ qDebug() << "must_buffer = " << must_buffer; ++ switch (parm.format) { ++ case SANE_FRAME_RED: ++ case SANE_FRAME_GREEN: ++ case SANE_FRAME_BLUE: ++ for (i = 0; i < len; ++i) { ++ image.data[offset + 3 * i] = g_buf[i]; ++ if (!advance (&image)) { ++ status = SANE_STATUS_NO_MEM; ++ goto cleanup; ++ } ++ } ++ offset += 3 * len; ++ break; ++ case SANE_FRAME_RGB: ++ for (i = 0; i < len; ++i) { ++ image.data[offset + i] = g_buf[i]; ++ if (!advance (&image)) { ++ status = SANE_STATUS_NO_MEM; ++ goto cleanup; ++ } ++ } ++ offset += len; ++ break; ++ case SANE_FRAME_GRAY: ++ for (i = 0; i < len; ++i) { ++ image.data[offset + i] = g_buf[i]; ++ if (!advance (&image)) { ++ status = SANE_STATUS_NO_MEM; ++ goto cleanup; ++ } ++ } ++ offset += len; ++ break; ++ default: ++ break; ++ } ++ } else { /* ! must_buffer */ ++ if ((parm.depth != 16)) { ++ fwrite (g_buf, 1, len, ofp); ++ } else { ++#if !defined(WORDS_BIGENDIAN) ++ int start = 0; ++ /* check if we have saved one byte from the last sane_read */ ++ if (hang_over > -1) { ++ if (len > 0) { ++ fwrite (g_buf, 1, 1, ofp); ++ g_buf[0] = (SANE_Byte) hang_over; ++ hang_over = -1; ++ start = 1; ++ } ++ } ++ /* now do the byte-swapping */ ++ for (i = start; i < (len - 1); i += 2) { ++ unsigned char LSB; ++ LSB = g_buf[i]; ++ g_buf[i] = g_buf[i + 1]; ++ g_buf[i + 1] = LSB; ++ } ++ /* check if we have an odd number of bytes */ ++ if (((len - start) % 2) != 0) { ++ hang_over = g_buf[len - 1]; ++ len--; ++ } ++#endif ++ fwrite (g_buf, 1, len, ofp); ++ } ++ } ++ ++ if (g_verbose && parm.depth == 8) { ++ for (i = 0; i < len; ++i) ++ if (g_buf[i] >= max) { ++ max = g_buf[i]; ++ } else if (g_buf[i] < min) { ++ min = g_buf[i]; ++ } ++ } ++ } ++ if(g_sane_object->stopSaneReadFlag == true){ ++ if(g_sane_object->userInfo.type.compare(QApplication::tr("ADF Duplex"), Qt::CaseInsensitive) == 0){ ++ status = status = sane_start(g_device); ++ while(status == SANE_STATUS_GOOD){ ++ status = sane_read(g_device, g_buf, g_BufSize, &len); ++ } ++ } ++ ++ status = SANE_STATUS_CANCELLED; ++ goto cleanup; ++ } ++ fflush(ofp); ++ first_frame = 0; ++ qDebug() << "0531info: first_frame value has changed:" << first_frame; ++ qDebug() << "0531info: parm.last_frame value:" << parm.last_frame; ++ } while (!parm.last_frame); ++ ++ if (must_buffer) { ++ qDebug() << "must_buffer = " << must_buffer; ++ image.height = image.y; ++ ++ switch(g_sane_object->output_format) { ++ case OUTPUT_PNM: ++ writePnmHeader(parm.format, parm.pixels_per_line, ++ image.height, parm.depth, ofp); ++ break; ++ } ++ ++ writePnmHeader (parm.format, parm.pixels_per_line, image.height, parm.depth, ofp); ++ ++#if !defined(WORDS_BIGENDIAN) ++ if (parm.depth == 16) { ++ for (i = 0; i < image.height * image.width; i += 2) { ++ unsigned char LSB; ++ LSB = image.data[i]; ++ image.data[i] = image.data[i + 1]; ++ image.data[i + 1] = LSB; ++ } ++ } ++#endif ++ qDebug() << "end scanning status: " << status; ++ fwrite (image.data, 1, image.height * image.width, ofp); ++ } ++ ++ ++ qDebug() << "end scanning status: " << status; ++ ++cleanup: ++ if (image.data) { ++ qDebug() << "free image data!"; ++ free (image.data); ++ } ++ qDebug() << "end scanning status: " << sane_strstatus(status); ++ return status; + + } + + static void authCallback (SANE_String_Const resource, SANE_Char *username, SANE_Char *password) + { +-// KyInfo() << "auth_callback" << resource << username << password; ++ // qDebug() << "auth_callback" << resource << username << password; + } + + void SaneObject::refreshListSlots() +@@ -398,7 +398,7 @@ void SaneObject::refreshListSlots() + GlobalUserSignal::getInstance()->setDeviceList(g_deviceList); + + for (int i = 0; g_deviceList[i]; ++i) { +- KyInfo() << "mark-Name-usb: " << g_deviceList[i]->name ++ qDebug() << "mark-Name-usb: " << g_deviceList[i]->name + << "mark-Vendor-usb: " << g_deviceList[i]->vendor + << "mark-Model-usb: " << g_deviceList[i]->model + << "mark-Type-usb: " << g_deviceList[i]->type; +@@ -417,12 +417,6 @@ void SaneObject::refreshListSlots() + g_user_signal->warnMsg(msg); + } + +-void converPnmToJpg(QString pnmPath, QString jpgPath) +-{ +- ImageConverter converter; +- converter.convertImage(pnmPath, jpgPath); +-} +- + SANE_Status doScan(const char *fileName) + { + SANE_Status status = SANE_STATUS_GOOD; +@@ -464,7 +458,7 @@ SANE_Status doScan(const char *fileName) + g_sane_object->loadFullScanFileNames.append(path); + g_sane_object->saveFullScanFileNames.append(save_path); + } +- KyInfo() << "part_path = " << part_path; ++ qDebug() << "part_path = " << part_path; + status = sane_start(g_device); + + if(status == SANE_STATUS_NO_DOCS){ +@@ -478,9 +472,9 @@ SANE_Status doScan(const char *fileName) + g_sane_object->scanPageNumber += 1; + } + +- KyInfo() << "`sane_start` status: " << sane_strstatus(status); ++ qDebug() << "`sane_start` status: " << sane_strstatus(status); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "Cannot start scan devices, sane_status = " << status; ++ qDebug() << "Cannot start scan devices, sane_status = " << status; + g_user_signal->closeScanDialog(); + break; + } +@@ -495,6 +489,7 @@ SANE_Status doScan(const char *fileName) + } + + status = onScanning(ofp); ++ + switch(status) { + case SANE_STATUS_GOOD: + case SANE_STATUS_EOF: { +@@ -504,7 +499,7 @@ SANE_Status doScan(const char *fileName) + } + } + } +- break; ++ break; + default: + break; + } +@@ -522,15 +517,15 @@ SANE_Status doScan(const char *fileName) + status = SANE_STATUS_EOF; + } + +- KyInfo() << "sane_cancel"; ++ qDebug() << "sane_cancel"; + if (ofp) { +- fclose (ofp); +- ofp = nullptr; ++ fclose (ofp); ++ ofp = nullptr; + } + + if (g_buf) { +- free (g_buf); +- g_buf = nullptr; ++ free (g_buf); ++ g_buf = nullptr; + } + sane_cancel(g_device); + return status; +@@ -542,12 +537,12 @@ static void saneInit() + + sane_init(&version_code, authCallback); + +- KyInfo() << "version_code = " << version_code; ++ qDebug() << "version_code = " << version_code; + } + + static SANE_Status saneGetDevices(const SANE_Device ***device_list) + { +- KyInfo() << "Get all scan devices, please waiting ..."; ++ qDebug() << "Get all scan devices, please waiting ..."; + + /// This will be crashed unexpectedly, samples can be followed: + /// 1. Caused by specific drives, such as `lenovo-image-g-series_1.0-16_arm64`, so we need Vendor developers to handle it +@@ -558,7 +553,7 @@ static SANE_Status saneGetDevices(const SANE_Device ***device_list) + SANE_Status status = sane_get_devices(device_list, SANE_FALSE); + + if (status) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + } + return status; + } +@@ -567,29 +562,27 @@ SANE_Status saneOpen(SANE_Device *device, SANE_Handle *sane_handle) + { + SANE_Status status = SANE_STATUS_INVAL; + +- KyInfo() << "name = " << device->name +- << "model = " << device->model +- << "vendor = " << device->vendor +- << "type = " << device->type; ++ qDebug() << "name = " << device->name ++ << "model = " << device->model ++ << "vendor = " << device->vendor ++ << "type = " << device->type; + + // For usbRemoved + char name[512] = {0}; + snprintf(name, 512, "%s %s", device->vendor, device->model); + g_sane_object->openSaneName = QString(name); +- +- KyInfo() << "Open device name: " <<g_sane_object->openSaneName; ++ qDebug() << "Open device name: " << g_sane_object->openSaneName; + + status = sane_open(device->name, sane_handle); +- + if (status) { + /// status = Error during device I/O: can be this scanner connected by usb is error, + /// so check usb connected. +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + QString message = QApplication::tr("Fail to open the scanner") ; + qDebug() << "Fail to open the scanner, error code" << QString::number(status); + QTimer::singleShot(1000, [=](){g_user_signal->warnMsg(message);}); + }else{ +- KyInfo() << "Open scanner success"; ++ qDebug() << "Open scanner success"; + } + + return status; +@@ -637,14 +630,13 @@ SANE_Status getOptionColors(SANE_Handle sane_handle, int optnum) + const SANE_Option_Descriptor *opt; + SANE_Status status = SANE_STATUS_INVAL; + +- KyInfo() << "Get colors option = " << optnum; ++ qDebug() << "Get colors option = " << optnum; + + opt = sane_get_option_descriptor(sane_handle, optnum); + + g_sane_object->colorModesMap.clear(); + + for (int i = 0; opt->constraint.string_list[i] != nullptr; ++i) { +-// KyInfo() << "color strings = " << *(opt->constraint.string_list + i); + + const char *tmp = *(opt->constraint.string_list + i); + QVector<std::string>::iterator it; +@@ -674,10 +666,10 @@ SANE_Status getOptionColors(SANE_Handle sane_handle, int optnum) + } + } + +- KyInfo() << "colors: " << colors; ++ qDebug() << "colors: " << colors; + QMap<QString, QString>::iterator itMap; + for (itMap=g_sane_object->colorModesMap.begin(); itMap != g_sane_object->colorModesMap.end(); ++itMap ) { +- KyInfo() << "Iterator for colorModesMap: " <<itMap.key() << itMap.value(); ++ qDebug() << "Iterator for colorModesMap: " <<itMap.key() << itMap.value(); + } + g_sane_object->setSaneColors(colors); + return status; +@@ -685,16 +677,16 @@ SANE_Status getOptionColors(SANE_Handle sane_handle, int optnum) + + SANE_Status setOptionPages(SANE_Handle sane_handle, SANE_Int pages){ + SANE_Status status; +- KyInfo() << "options: " << g_optDesc.numPageCount +- << "Set page option = " << pages; ++ qDebug() << "options: " << g_optDesc.numPageCount ++ << "Set page option = " << pages; + status = sane_control_option(sane_handle, static_cast<SANE_Int>(g_optDesc.numPageCount), + SANE_ACTION_SET_VALUE, &pages, nullptr); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << status << "desc: " << sane_strstatus(status); ++ qDebug() << "status = " << status << "desc: " << sane_strstatus(status); + return status; + } + +- KyInfo() << "Set countpage success."; ++ qDebug() << "Set countpage success."; + + return status; + } +@@ -703,29 +695,29 @@ SANE_Status setOptionColors(SANE_Handle sane_handle, SANE_String val_color) + { + SANE_Status status = SANE_STATUS_INVAL; + +- KyInfo() << "option: " << g_optDesc.numColorMode +- << "Set color option = " << val_color; ++ qDebug() << "option: " << g_optDesc.numColorMode ++ << "Set color option = " << val_color; + int i = 0; + const SANE_Option_Descriptor *opt; + + +- KyInfo() << "color handle: " << sane_handle; ++ qDebug() << "color handle: " << sane_handle; + opt = sane_get_option_descriptor(sane_handle, g_optDesc.numColorMode); + for (int i = 0; opt->constraint.string_list[i] != nullptr; ++i) { + const char *tmp = *(opt->constraint.string_list + i); + status = SANE_STATUS_GOOD; +- KyInfo() << "color strings = " << *(opt->constraint.string_list + i); ++ qDebug() << "color strings = " << *(opt->constraint.string_list + i); + } + + status = sane_control_option(sane_handle, static_cast<SANE_Int>(g_optDesc.numColorMode), + SANE_ACTION_SET_VALUE, val_color, nullptr); + + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << status << "desc: " << sane_strstatus(status); ++ qDebug() << "status = " << status << "desc: " << sane_strstatus(status); + return status; + } + +- KyInfo() << "Set color success."; ++ qDebug() << "Set color success."; + + return status; + } +@@ -739,7 +731,7 @@ SANE_Status getOptionSourcesDefaultFailed() + + g_sane_object->haveSourceFlag = 0; + +- KyInfo() << "Default Type: " << typeStringList; ++ qDebug() << "Default Type: " << typeStringList; + + g_sane_object->setSaneTypes(typeStringList); + +@@ -794,7 +786,7 @@ SANE_Status getOptionSources(SANE_Handle sane_handle, int optnum) + adfDuplexSources.push_back("Automatic Document Feeder(left aligned,Duplex)"); + + +- KyInfo() << "GetOptionSource: " << optnum; ++ qDebug() << "GetOptionSource: " << optnum; + + opt = sane_get_option_descriptor(sane_handle, optnum); + +@@ -807,7 +799,7 @@ SANE_Status getOptionSources(SANE_Handle sane_handle, int optnum) + + status = SANE_STATUS_GOOD; + +-// KyInfo() << "Sources: " << tmp; ++// qDebug() << "Sources: " << tmp; + + it = find(flatbedSources.begin(), flatbedSources.end(), tmp); + +@@ -858,10 +850,10 @@ SANE_Status getOptionSources(SANE_Handle sane_handle, int optnum) + } + } + +- KyInfo() << "Type: " << typeStringList; ++ qDebug() << "Type: " << typeStringList; + QMap<QString, QString>::iterator itMap; + for (itMap=g_sane_object->sourceModesMap.begin(); itMap != g_sane_object->sourceModesMap.end(); ++itMap ) { +- KyInfo() << "Iterator for sourceModesMap: " <<itMap.key() << itMap.value(); ++ qDebug() << "Iterator for sourceModesMap: " <<itMap.key() << itMap.value(); + } + + g_sane_object->setSaneTypes(typeStringList); +@@ -873,12 +865,12 @@ SANE_Status setOptionSources(SANE_Handle sane_handle, int optnum, SANE_String va + { + SANE_Status status = SANE_STATUS_GOOD; + +- KyInfo() << "Set source option = " << val_source; ++ qDebug() << "Set source option = " << val_source; + + status = sane_control_option(sane_handle, optnum, + SANE_ACTION_SET_VALUE, val_source, nullptr); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << status << "desc: " << sane_strstatus(status); ++ qDebug() << "status = " << status << "desc: " << sane_strstatus(status); + return status; + } + return status; +@@ -890,14 +882,14 @@ static SANE_Status getOptionResolutions(SANE_Handle sane_handle, int optnum) + SANE_Status status = SANE_STATUS_INVAL; + const SANE_Option_Descriptor *opt; + +- KyInfo() << "Get resolution option = " << optnum; ++ qDebug() << "Get resolution option = " << optnum; + + opt = sane_get_option_descriptor(sane_handle, optnum); + int count = *(opt->constraint.word_list); + for (int i = 1; i <= count; ++i) { + int res = *(opt->constraint.word_list + i); + status = SANE_STATUS_GOOD; +-// KyInfo() << "resolution int = " << res; ++// qDebug() << "resolution int = " << res; + + switch (res) { + case 4800: +@@ -959,72 +951,12 @@ static bool isInRange(int min, int max, int val) + return false; + } + } +-static SANE_Status getOptionResolutionsRange(int min, int max) +-{ +- QStringList resolutions; +- SANE_Status status = SANE_STATUS_GOOD; +- +- if (isInRange(min, max, 4800)) { +- resolutions << QObject::tr("4800 dpi"); +- } +- +- if (isInRange(min, max, 2400)) { +- resolutions << QObject::tr("2400 dpi"); +- } +- +- if (isInRange(min, max, 1200)) { +- resolutions << QObject::tr("1200 dpi"); +- } +- +- if (isInRange(min, max, 600)) { +- resolutions << QObject::tr("600 dpi"); +- } +- +- if (isInRange(min, max, 300)) { +- resolutions << QObject::tr("300 dpi"); +- } +- +- if (isInRange(min, max, 200)) { +- resolutions << QObject::tr("200 dpi"); +- } +- +- if (isInRange(min, max, 150)) { +- resolutions << QObject::tr("150 dpi"); +- } +- +- if (isInRange(min, max, 100)) { +- resolutions << QObject::tr("100 dpi"); +- } +- +- if (isInRange(min, max, 75)) { +- resolutions << QObject::tr("75 dpi"); +- } +- +- KyInfo() << "resolutions = " << resolutions; +- +- // reverse sort +- qSort(resolutions.begin(), resolutions.end(), [](const QString & s1, const QString & s2) { +- // Get numbers from QString, and then sort +- +- int numberS1 = g_sane_object->getNumbersFromQString(s1); +- int numberS2 = g_sane_object->getNumbersFromQString(s2); +- +- return numberS1 < numberS2; +- }); +- +- // Default resolution +- resolutions.insert(0, QObject::tr("Auto")); +- +- g_sane_object->setSaneResolutions(resolutions); +- +- return status; +-} + + SANE_Status setOptionResolutions(SANE_Handle sane_handle, SANE_Int val_resolution) + { + SANE_Status status = SANE_STATUS_GOOD; + +- KyInfo() << "Set resolution option = " << val_resolution; ++ qDebug() << "Set resolution option = " << val_resolution; + + int index = -1; + if(!g_sane_object->getSaneOptIndex(SANE_NAME_SCAN_RESOLUTION,index)){ +@@ -1034,7 +966,7 @@ SANE_Status setOptionResolutions(SANE_Handle sane_handle, SANE_Int val_resolutio + status = sane_control_option(sane_handle,index,SANE_ACTION_SET_VALUE, &val_resolution, nullptr); + } + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << status << "desc: " << sane_strstatus(status); ++ qDebug() << "status = " << status << "desc: " << sane_strstatus(status); + return status; + } + +@@ -1061,12 +993,12 @@ SANE_Status getOptionSizes(SANE_Handle sane_handle, int optnum) + const SANE_Option_Descriptor *opt; + SANE_Status status = SANE_STATUS_GOOD; + +- KyInfo() << "Get size option = " << optnum; ++ qDebug() << "Get size option = " << optnum; + + opt = sane_get_option_descriptor(sane_handle, optnum); + + for (int i = 0; opt->constraint.word_list[i]; ++i) { +- KyInfo() << "sizes = " << *(opt->constraint.word_list + i); ++ qDebug() << "sizes = " << *(opt->constraint.word_list + i); + } + return status; + } +@@ -1075,13 +1007,13 @@ SANE_Status setOptionSizes(SANE_Handle sane_handle, int optnum, SANE_Int val_siz + { + SANE_Status status = SANE_STATUS_GOOD; + +- KyInfo() << "Set size option = "<< optnum << val_size; ++ qDebug() << "Set size option = "<< optnum << val_size; + + status = sane_control_option(sane_handle, optnum, + SANE_ACTION_SET_VALUE, &val_size, nullptr); + + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << status << "desc: " << sane_strstatus(status); ++ qDebug() << "status = " << status << "desc: " << sane_strstatus(status); + return status; + } + +@@ -1097,14 +1029,14 @@ static const SANE_Option_Descriptor *getOptdescByName(SANE_Handle device, const + status = sane_control_option (device, 0, + SANE_ACTION_GET_VALUE, &num_dev_options, nullptr); + +- KyInfo() << "\n\n\nGet Option name: " << name << status; ++ qDebug() << "\n\n\nGet Option name: " << name << status; + + for (*option_num = 0; *option_num < num_dev_options; (*option_num)++) { + const SANE_Option_Descriptor *opt; + + opt = sane_get_option_descriptor (device, *option_num); + if (opt->name && strcmp(opt->name, name) == 0) { +- KyInfo() << "Get option desc for " << *option_num << "opt->name = " << opt->name << "name" << name; ++ qDebug() << "Get option desc for " << *option_num << "opt->name = " << opt->name << "name" << name; + return (opt); + } + } +@@ -1115,7 +1047,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + SANE_Int val_size_br_y) + { + SANE_Status status = SANE_STATUS_GOOD; +- KyInfo() << "Size bottom-right location(xy) = " << val_size_br_x << val_size_br_y; ++ qDebug() << "Size bottom-right location(xy) = " << val_size_br_x << val_size_br_y; + int index = -1; + const SANE_Option_Descriptor *opt; + int optnum; +@@ -1128,7 +1060,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + } + + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1142,7 +1074,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + status = setOptionSizes(sane_handle, index, SANE_FIX(val_size_br_y)); + } + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1150,7 +1082,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + if(g_sane_object->getSaneOptIndex(SANE_NAME_SCAN_TL_X,index)){ + status = setOptionSizes(sane_handle, index, SANE_FIX(0)); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1158,7 +1090,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + if(g_sane_object->getSaneOptIndex(SANE_NAME_SCAN_TL_Y,index)){ + status = setOptionSizes(sane_handle, index, SANE_FIX(0)); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1166,7 +1098,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + if(g_sane_object->getSaneOptIndex(SANE_NAME_PAGE_WIDTH,index)){ + status = setOptionSizes(sane_handle, index, SANE_FIX(val_size_br_x - 0)); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1174,7 +1106,7 @@ SANE_Status setOptionSizesReal(SANE_Handle sane_handle, SANE_Int val_size_br_x, + if(g_sane_object->getSaneOptIndex(SANE_NAME_PAGE_HEIGHT,index)){ + status = setOptionSizes(sane_handle, index, SANE_FIX(val_size_br_y - 0)); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + return status; + } + index = -1; +@@ -1238,7 +1170,7 @@ void displayOptionValue(SANE_Handle device, int optnum) + + opt = sane_get_option_descriptor(device, optnum); + +- KyInfo() << "Get options: optnum = " << optnum ++ qDebug() << "Get options: optnum = " << optnum + << "name = " << opt->name + << "title = " << opt->title + << "type = " << opt->type +@@ -1272,13 +1204,13 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + status = sane_control_option (device, optnum, SANE_ACTION_GET_VALUE, optval, nullptr); + + if (opt->desc) { +- KyInfo() << opt->desc; ++ qDebug() << opt->desc; + } + +- KyInfo() << "opt->type = " << opt->type; ++ qDebug() << "opt->type = " << opt->type; + switch (opt->type) { + case SANE_TYPE_INT: +- KyInfo() << "type = int" << "size = " << opt->size; ++ qDebug() << "type = int" << "size = " << opt->size; + + if (!strcmp(option_name, SANE_NAME_SCAN_RESOLUTION)) { + val_resolution = *(SANE_Word *)optval; +@@ -1291,27 +1223,27 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + int minResolution = 0; + int maxResolution = 0; + if (opt->type == SANE_TYPE_FIXED) { +- KyInfo() << "min = " << SANE_UNFIX(opt->constraint.range->min) \ ++ qDebug() << "min = " << SANE_UNFIX(opt->constraint.range->min) \ + << "max = " << SANE_UNFIX(opt->constraint.range->max) \ + << "quant = " << opt->constraint.range->quant; + + minResolution = SANE_UNFIX(opt->constraint.range->min); + maxResolution = SANE_UNFIX(opt->constraint.range->max); + } else { +- KyInfo() << "min = " << opt->constraint.range->min \ ++ qDebug() << "min = " << opt->constraint.range->min \ + << "max = " << opt->constraint.range->max \ + << "quant = " << SANE_UNFIX(opt->constraint.range->quant); + + minResolution = opt->constraint.range->min; + maxResolution = opt->constraint.range->max; + } +- KyInfo() << "minResolution = " << minResolution ++ qDebug() << "minResolution = " << minResolution + << "maxResolution = " << maxResolution; + +- status = getOptionResolutionsRange(minResolution, maxResolution); ++ status = g_sane_object->getOptionResolutionsRange(minResolution, maxResolution); + } + +- KyInfo() << "optnum = " << g_optDesc.numResolution ++ qDebug() << "optnum = " << g_optDesc.numResolution + << "resolution = " << val_resolution + << "constraint_type = " << opt->constraint_type; + } +@@ -1323,7 +1255,7 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + g_optDesc.numSizeBrX = optnum; + // Via br_x to decide scan sizes + int size_range = static_cast<int>( opt->constraint.range->max - opt->constraint.range->min); +- KyInfo() << "min = " << opt->constraint.range->min ++ qDebug() << "min = " << opt->constraint.range->min + << "max = " << opt->constraint.range->max + << "size_range = " << size_range; + if (val_size >= 420) +@@ -1338,7 +1270,7 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + sizes << "A6"; + + g_sane_object->setSaneSizes(sizes); +- KyInfo() << "size optnum = " << g_optDesc.numSizeBrX ++ qDebug() << "size optnum = " << g_optDesc.numSizeBrX + << "br_x" << val_size + << "constraint_type = " << opt->constraint_type; + } +@@ -1348,17 +1280,17 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + int size_range = static_cast<int>(opt->constraint.range->max - opt->constraint.range->min); + double min = opt->constraint.range->min; + double max = opt->constraint.range->max; +- KyInfo() << "min = " << min ++ qDebug() << "min = " << min + << "max = " << max + << "size_range = " << size_range; + // Judge max(296.926) less than A4BRY(297) + if ((qCeil(max) == A4BRY) && (qFloor(max) == A4BRY - 1)) { +- KyInfo() << "A4 br_y max = " << max; ++ qDebug() << "A4 br_y max = " << max; + g_saneSizeA4BrY = max; + } else { + g_saneSizeA4BrY = A4BRY; + } +- KyInfo() << "size optnum = " << g_optDesc.numSizeBrY ++ qDebug() << "size optnum = " << g_optDesc.numSizeBrY + << "br_y" << val_size + << "g_saneSizeA4Bry = " <<g_saneSizeA4BrY + << "constraint_type = " << opt->constraint_type; +@@ -1370,34 +1302,34 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + } else { + strcpy(str, "TRUE"); + } +- KyInfo() << "type = bool" << "size = " << opt->size << str; ++ qDebug() << "type = bool" << "size = " << opt->size << str; + break; + case SANE_TYPE_FIXED: +- KyInfo() << "type = fixed" << "size = " << opt->size; ++ qDebug() << "type = fixed" << "size = " << opt->size; + + val_size = SANE_UNFIX(*(SANE_Word *) optval); + if (opt->constraint_type == SANE_CONSTRAINT_RANGE) + status = getOptionSizes(device, optnum); + +- KyInfo() << "str_status = " << sane_strstatus(status); ++ qDebug() << "str_status = " << sane_strstatus(status); + + if (!strcmp(option_name, SANE_NAME_SCAN_TL_X)) { +- KyInfo() << "size tl_x = " << val_size << "constraint_type = " << opt->constraint_type; ++ qDebug() << "size tl_x = " << val_size << "constraint_type = " << opt->constraint_type; + g_optDesc.numSizeTlX = optnum; + } else if (!strcmp(option_name, SANE_NAME_SCAN_TL_Y)) { +- KyInfo() << "size tl_y = " << val_size << "constraint_type = " << opt->constraint_type; ++ qDebug() << "size tl_y = " << val_size << "constraint_type = " << opt->constraint_type; + g_optDesc.numSizeTlY = optnum; + } else if (!strcmp(option_name, SANE_NAME_PAGE_WIDTH)) { +- KyInfo() << "size page width = " << val_size << "constraint_type = " << opt->constraint_type; ++ qDebug() << "size page width = " << val_size << "constraint_type = " << opt->constraint_type; + g_optDesc.numPageWidth = optnum; + } else if (!strcmp(option_name, SANE_NAME_PAGE_HEIGHT)) { +- KyInfo() << "size page height = " << val_size << "constraint_type = " << opt->constraint_type; ++ qDebug() << "size page height = " << val_size << "constraint_type = " << opt->constraint_type; + g_optDesc.numPageHeight = optnum; + }else if (!strcmp(option_name, SANE_NAME_SCAN_BR_X)) { + g_optDesc.numSizeBrX = optnum; + // Via br_x to decide scan sizes + int size_range = static_cast<int>SANE_UNFIX(opt->constraint.range->max); +- KyInfo() << "min = " << SANE_UNFIX(opt->constraint.range->min) ++ qDebug() << "min = " << SANE_UNFIX(opt->constraint.range->min) + << "max = " << SANE_UNFIX(opt->constraint.range->max) + << "size_range = " << size_range; + { +@@ -1413,7 +1345,7 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + sizes << "A6"; + } + g_sane_object->setSaneSizes(sizes); +- KyInfo() << "size optnum = " << g_optDesc.numSizeBrX ++ qDebug() << "size optnum = " << g_optDesc.numSizeBrX + << "br_x" << val_size + << "constraint_type = " << opt->constraint_type; + } else if (!strcmp(option_name, SANE_NAME_SCAN_BR_Y)) { +@@ -1423,17 +1355,17 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + - SANE_UNFIX(opt->constraint.range->min)); + double min = SANE_UNFIX(opt->constraint.range->min); + double max = SANE_UNFIX(opt->constraint.range->max); +- KyInfo() << "min = " << min ++ qDebug() << "min = " << min + << "max = " << max + << "size_range = " << size_range; + // Judge max(296.926) less than A4BRY(297) + if ((qCeil(max) == A4BRY) && (qFloor(max) == A4BRY - 1)) { +- KyInfo() << "A4 br_y max = " << max; ++ qDebug() << "A4 br_y max = " << max; + g_saneSizeA4BrY = max; + } else { + g_saneSizeA4BrY = A4BRY; + } +- KyInfo() << "size optnum = " << g_optDesc.numSizeBrY ++ qDebug() << "size optnum = " << g_optDesc.numSizeBrY + << "br_y" << val_size + << "g_saneSizeA4Bry = " <<g_saneSizeA4BrY + << "constraint_type = " << opt->constraint_type; +@@ -1441,20 +1373,20 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + + break; + case SANE_TYPE_STRING: +- KyInfo() << "type = string" << "size = " << opt->size; ++ qDebug() << "type = string" << "size = " << opt->size; + + if (!strcmp(option_name, SANE_NAME_SCAN_MODE)) { + val_string_color = static_cast<SANE_String>(optval); + g_optDesc.numColorMode = optnum; + status = getOptionColors(device, optnum); +- KyInfo() << "Default optnum = " << g_optDesc.numColorMode ++ qDebug() << "Default optnum = " << g_optDesc.numColorMode + << "color = " << val_string_color + << "constraint_type = " << opt->constraint_type; + } else if (!strcmp(option_name, SANE_NAME_SCAN_SOURCE)) { + val_string_source = static_cast<SANE_String>(optval); + g_optDesc.numSource = optnum; + status = getOptionSources(device, optnum); +- KyInfo() << "Default optnum = " << g_optDesc.numSource ++ qDebug() << "Default optnum = " << g_optDesc.numSource + << "source = " << val_string_source + << "constraint_type = " << opt->constraint_type; + } else if(!strcmp(option_name, "paper-size")){ +@@ -1467,51 +1399,51 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + } + break; + case SANE_TYPE_BUTTON: +- KyInfo() << "type = button" << "size = " << opt->size; ++ qDebug() << "type = button" << "size = " << opt->size; + break; + case SANE_TYPE_GROUP: +- KyInfo() << "type = button" << "size = " << opt->size; ++ qDebug() << "type = button" << "size = " << opt->size; + break; + default: +- KyInfo() << "type = %d" << opt->type << "size = " << opt->size; ++ qDebug() << "type = %d" << opt->type << "size = " << opt->size; + break; + } + + switch (opt->unit) { + case SANE_UNIT_NONE: +- KyInfo() << "unit = none"; ++ qDebug() << "unit = none"; + break; + case SANE_UNIT_PIXEL: +- KyInfo() << "unit = pixel"; ++ qDebug() << "unit = pixel"; + break; + case SANE_UNIT_BIT: +- KyInfo() << "unit = bit"; ++ qDebug() << "unit = bit"; + break; + case SANE_UNIT_MM: +- KyInfo() << "unit = mm"; ++ qDebug() << "unit = mm"; + break; + case SANE_UNIT_DPI: +- KyInfo() << "unit = dpi"; ++ qDebug() << "unit = dpi"; + break; + case SANE_UNIT_PERCENT: +- KyInfo() << "unit = percent"; ++ qDebug() << "unit = percent"; + break; + case SANE_UNIT_MICROSECOND: +- KyInfo() << "unit = microsecond"; ++ qDebug() << "unit = microsecond"; + break; + default: +- KyInfo() << "unit = " << opt->unit; ++ qDebug() << "unit = " << opt->unit; + break; + } + + switch (opt->constraint_type) { + case SANE_CONSTRAINT_RANGE: + if (opt->type == SANE_TYPE_FIXED) { +- KyInfo() << "min = " << SANE_UNFIX(opt->constraint.range->min) \ ++ qDebug() << "min = " << SANE_UNFIX(opt->constraint.range->min) \ + << "max = " << SANE_UNFIX(opt->constraint.range->max) \ + << "quant = " << opt->constraint.range->quant; + } else { +- KyInfo() << "min = " << opt->constraint.range->min \ ++ qDebug() << "min = " << opt->constraint.range->min \ + << "max = " << opt->constraint.range->max \ + << "quant = " << SANE_UNFIX(opt->constraint.range->quant); + } +@@ -1519,19 +1451,19 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + case SANE_CONSTRAINT_WORD_LIST: + for (int i = 0; i < opt->constraint.word_list[0]; ++i) { + if (opt->type == SANE_TYPE_INT) { +- KyInfo() << opt->constraint.word_list[i + 1]; ++ qDebug() << opt->constraint.word_list[i + 1]; + } else { +- KyInfo() << SANE_UNFIX(opt->constraint.word_list[i + 1]); ++ qDebug() << SANE_UNFIX(opt->constraint.word_list[i + 1]); + } + } + break; + case SANE_CONSTRAINT_STRING_LIST: + for (int i = 0; opt->constraint.string_list[i] != NULL; ++i) { +- KyInfo() << opt->constraint.string_list[i]; ++ qDebug() << opt->constraint.string_list[i]; + } + break; + default: +- KyInfo() << "case = %d not found" ; ++ qDebug() << "case = %d not found" ; + break; + } + +@@ -1540,14 +1472,14 @@ static SANE_Status getOptionValue(SANE_Handle device, const char *option_name) + /* The option does not exists. */ + strcpy(str, "backend default"); + +- KyInfo() << "option_name = " << option_name << "str = " << str; ++ qDebug() << "option_name = " << option_name << "str = " << str; + if ((strcmp(str, "backend default") == 0) + && (strcmp(option_name, SANE_NAME_SCAN_SOURCE) == 0)) { + getOptionSourcesDefaultFailed(); + } + } + +- KyInfo() << "option_name = " << option_name << "str = " << str; ++ qDebug() << "option_name = " << option_name << "str = " << str; + + return status; + } +@@ -1564,21 +1496,21 @@ static SANE_Status showAllSaneParameters(SANE_Handle device) + status = getOptionValue(device, SANE_NAME_SCAN_SOURCE); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "source parameters error!"; ++ qDebug() << "source parameters error!"; + return status; + } + + status = getOptionValue(device, SANE_NAME_SCAN_MODE); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "color mode parameters error!"; ++ qDebug() << "color mode parameters error!"; + return status; + } + + status = getOptionValue(device, SANE_NAME_SCAN_RESOLUTION); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "resolution parameters error!"; ++ qDebug() << "resolution parameters error!"; + return status; + } + +@@ -1588,28 +1520,28 @@ static SANE_Status showAllSaneParameters(SANE_Handle device) + getOptionValue(device, SANE_NAME_SCAN_TL_X); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "tl_x parameters error!"; ++ qDebug() << "tl_x parameters error!"; + return status; + } + + getOptionValue(device, SANE_NAME_SCAN_TL_Y); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "tl_y parameters error!"; ++ qDebug() << "tl_y parameters error!"; + return status; + } + + getOptionValue(device, SANE_NAME_PAGE_WIDTH); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "tl_y parameters error!"; ++ qDebug() << "tl_y parameters error!"; + return status; + } + + getOptionValue(device, SANE_NAME_PAGE_HEIGHT); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "tl_y parameters error!"; ++ qDebug() << "tl_y parameters error!"; + return status; + } + /* Default size coordination, botton_right(x, y) +@@ -1621,14 +1553,14 @@ static SANE_Status showAllSaneParameters(SANE_Handle device) + getOptionValue(device, SANE_NAME_SCAN_BR_X); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "br_x parameters error!"; ++ qDebug() << "br_x parameters error!"; + return status; + } + + status = getOptionValue(device, SANE_NAME_SCAN_BR_Y); + if (status != SANE_STATUS_GOOD) { + status = SANE_STATUS_INVAL; +- KyInfo() << "br_y parameters error!"; ++ qDebug() << "br_y parameters error!"; + return status; + } + +@@ -1637,12 +1569,12 @@ static SANE_Status showAllSaneParameters(SANE_Handle device) + + void SaneObject::saneCancel(SANE_Handle sane_handle) + { +- KyInfo() << "saneCancel()"; ++ qDebug() << "saneCancel()"; + + if (g_sane_object->getSaneHaveHandle()) { + g_sane_object->setSaneHaveHandle(false); + +- KyInfo() << "sane_cancel and sane_close"; ++ qDebug() << "sane_cancel and sane_close"; + + sane_cancel(sane_handle); + } +@@ -1654,7 +1586,7 @@ bool SaneObject::detectSaneDevices() + if(saneHaveStart == true){ + sane_exit(); + } +- KyInfo() << "detectSaneDevices();"; ++ qDebug() << "detectSaneDevices();"; + QStringList names; + SANE_Status sane_status; + QString name; +@@ -1665,12 +1597,12 @@ bool SaneObject::detectSaneDevices() + sane_status = saneGetDevices(&g_deviceList); + GlobalUserSignal::getInstance()->setDeviceList(g_deviceList); + if (sane_status) { +- KyInfo() << "Cannot get scan devices, sane_status = " << sane_status; ++ qDebug() << "Cannot get scan devices, sane_status = " << sane_status; + g_sane_object->setSaneStatus(false); + return false; + } + for (int i = 0; g_deviceList[i]; ++i) { +- KyInfo() << "mark-Name: " << g_deviceList[i]->name ++ qDebug() << "mark-Name: " << g_deviceList[i]->name + << "mark-Vendor: " << g_deviceList[i]->vendor + << "mark-Model: " << g_deviceList[i]->model + << "mark-Type: " << g_deviceList[i]->type; +@@ -1679,7 +1611,7 @@ bool SaneObject::detectSaneDevices() + + names << name; + } +- KyInfo() << names; ++ qDebug() << names; + g_sane_object->setSaneNames(names); + + if (g_deviceList[0]) { +@@ -1688,7 +1620,7 @@ bool SaneObject::detectSaneDevices() + return true; + }else{ + g_sane_object->setSaneStatus(false); +- KyInfo() << "find device set status false"; ++ qDebug() << "find device set status false"; + onDetection = false; + return false; + } +@@ -1696,7 +1628,7 @@ bool SaneObject::detectSaneDevices() + + void SaneObject::openSaneDevice(int index) + { +- KyInfo() << "openSaneDevice"; ++ qDebug() << "openSaneDevice"; + + QStringList names; + SANE_Status sane_status; +@@ -1708,7 +1640,7 @@ void SaneObject::openSaneDevice(int index) + */ + if (g_sane_object->getSaneHaveHandle()) { + // Avoid SANE_STATUS_BUSY status +- KyInfo() << "begin to sane_close()"; ++ qDebug() << "begin to sane_close()"; + g_sane_object->setSaneHaveHandle(false); + sane_close(g_sane_object->handle); + } +@@ -1718,23 +1650,23 @@ void SaneObject::openSaneDevice(int index) + } + + if (names.isEmpty()) { +- KyInfo() << "No scan devices !"; ++ qDebug() << "No scan devices !"; + } +- KyInfo() << names; ++ qDebug() << names; + g_sane_object->setSaneNames(names); + + if (!g_deviceList[0]) { +- KyInfo() << "No scan devices !"; ++ qDebug() << "No scan devices !"; + sane_status = SANE_STATUS_UNSUPPORTED; + break; + } + +- KyInfo() << "Open a scan device, plese waiting ..."; ++ qDebug() << "Open a scan device, plese waiting ..."; + SANE_Handle sane_handle; + g_saneDevice = const_cast<SANE_Device *>(*(g_deviceList + index)); + g_sane_object->devicemodel = g_saneDevice->model; + if (!g_saneDevice) { +- KyInfo() << "No device connected!"; ++ qDebug() << "No device connected!"; + sane_status = SANE_STATUS_UNSUPPORTED; + break; + } +@@ -1747,7 +1679,7 @@ void SaneObject::openSaneDevice(int index) + + sane_status = saneOpen(g_saneDevice, &sane_handle); + if (sane_status) { +- KyInfo() << "First open a device failed!"; ++ qDebug() << "First open a device failed!"; + g_sane_object->setSaneHaveHandle(false); + break; + } +@@ -1760,7 +1692,7 @@ void SaneObject::openSaneDevice(int index) + + if (sane_status) { + g_sane_object->setSaneStatus(false); +- KyInfo() << "open device set status false"; ++ qDebug() << "open device set status false"; + } else { + g_sane_object->setSaneStatus(true); + } +@@ -1985,7 +1917,7 @@ void SaneObject::setSaneTypeByUser() + it = g_sane_object->sourceModesMap.find(type); + if (it != g_sane_object->sourceModesMap.end()) { + // `type` is the key of `sourceModesMap`, we need to get the value of `sourceModesMap`, +- KyInfo() << "sourceModesMap value: " << it.value(); ++ qDebug() << "sourceModesMap value: " << it.value(); + strType = it.value().toStdString(); + } + +@@ -1993,7 +1925,7 @@ void SaneObject::setSaneTypeByUser() + + status = setOptionSources(g_sane_object->handle, g_optDesc.numSource, s_type); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "Failed to set option color: " << type ++ qDebug() << "Failed to set option color: " << type + << "status = " << sane_strstatus(status); + } + } +@@ -2027,7 +1959,7 @@ void SaneObject::setSaneColorByUser() + QString userColor = g_sane_object->userInfo.color; + + QString color = getSaneColorByUser(userColor); +- KyInfo() << "userColor: " << color; ++ qDebug() << "userColor: " << color; + if(color == "NULL"){ + qDebug() << "can not set color!"; + return; +@@ -2042,7 +1974,7 @@ void SaneObject::setSaneColorByUser() + + status = setOptionColors(g_sane_object->handle, s_color); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "Failed to set option color: " << color ++ qDebug() << "Failed to set option color: " << color + << "status = " << sane_strstatus(status); + } + } +@@ -2069,13 +2001,13 @@ void SaneObject::setSaneResolutionByUser() + SANE_Status status = SANE_STATUS_GOOD; + QString resolution = g_sane_object->userInfo.resolution; + SANE_Int i_resolution; +- KyInfo() << "resolution = " << resolution; ++ qDebug() << "resolution = " << resolution; + resolutionValue = getSaneResolutionByUser(resolution); + i_resolution = static_cast<SANE_Int>(resolutionValue); + resolution_value = i_resolution; + status = setOptionResolutions(g_sane_object->handle, i_resolution); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "Failed to set option resolution: " << resolution ++ qDebug() << "Failed to set option resolution: " << resolution + << "status = " << sane_strstatus(status); + } + } +@@ -2131,7 +2063,7 @@ void SaneObject::setSaneSizeByUser() + } + status = setOptionSizesAll(g_sane_object->handle, type); + if (status != SANE_STATUS_GOOD) { +- KyInfo() << "Failed to set option size: " << s_size ++ qDebug() << "Failed to set option size: " << s_size + << "status = " << sane_strstatus(status); + } + } +@@ -2193,7 +2125,7 @@ QString SaneObject::getFullScanFileNameExceptFormatForSave() + QString saveFullName_tmp = fileNameOperation(); + + QString saveFullName = saveDirectory + "/" + saveFullName_tmp; +- KyInfo() << "saveFullName = " << saveFullName; ++ qDebug() << "saveFullName = " << saveFullName; + + return saveFullName; + } +@@ -2205,7 +2137,7 @@ QString SaneObject::getFullScanFileNameExceptFormatForPnmLoad() + QString loadFullName_tmp = fileNameOperation(); + + QString loadFullName = tmpSaveDirectory + "/" + loadFullName_tmp; +- KyInfo() << "loadFullName = " << loadFullName; ++ qDebug() << "loadFullName = " << loadFullName; + + return loadFullName; + } +@@ -2223,7 +2155,7 @@ int SaneObject::startScanning(UserSelectedInfo info) + { + SANE_Status status = SANE_STATUS_GOOD; + if(!g_sane_object->m_ParametersHaveSeted){ +- KyInfo() << "Setting Parameter..."; ++ qDebug() << "Setting Parameter..."; + setSaneAllParametersByUser(); + g_sane_object->m_ParametersHaveSeted = true; + } +@@ -2231,20 +2163,20 @@ int SaneObject::startScanning(UserSelectedInfo info) + saveFullScanFileName = getFullScanFileNameExceptFormatForSave(); + loadFullScanFileName = getFullScanFileNameExceptFormatForPnmLoad(); + +- KyInfo() << "Start scanning, please waiting ..."; ++ qDebug() << "Start scanning, please waiting ..."; + g_device = g_sane_object->handle; + status = doScan(loadFullScanFileName.toStdString().c_str()); + +- KyInfo() << "Scan Finish, check status: " << status; ++ qDebug() << "Scan Finish, check status: " << status; + +- KyInfo() << "saveText nowSaveName = " << nowSaveName; ++ qDebug() << "saveText nowSaveName = " << nowSaveName; + + return status; + } + + bool SaneObject::testScannerIsAlive(QString deviceName) + { +- KyInfo() << "deviceName= " << deviceName; ++ qDebug() << "deviceName= " << deviceName; + return true; + } + +@@ -2254,6 +2186,67 @@ void SaneObject::hotPlugScanCompleteSlot() + usbRemoveSlotIsRunning = false; + } + ++SANE_Status SaneObject::getOptionResolutionsRange(int min, int max) ++{ ++ QStringList resolutions; ++ SANE_Status status = SANE_STATUS_GOOD; ++ ++ if (isInRange(min, max, 4800)) { ++ resolutions << QObject::tr("4800 dpi"); ++ } ++ ++ if (isInRange(min, max, 2400)) { ++ resolutions << QObject::tr("2400 dpi"); ++ } ++ ++ if (isInRange(min, max, 1200)) { ++ resolutions << QObject::tr("1200 dpi"); ++ } ++ ++ if (isInRange(min, max, 600)) { ++ resolutions << QObject::tr("600 dpi"); ++ } ++ ++ if (isInRange(min, max, 300)) { ++ resolutions << QObject::tr("300 dpi"); ++ } ++ ++ if (isInRange(min, max, 200)) { ++ resolutions << QObject::tr("200 dpi"); ++ } ++ ++ if (isInRange(min, max, 150)) { ++ resolutions << QObject::tr("150 dpi"); ++ } ++ ++ if (isInRange(min, max, 100)) { ++ resolutions << QObject::tr("100 dpi"); ++ } ++ ++ if (isInRange(min, max, 75)) { ++ resolutions << QObject::tr("75 dpi"); ++ } ++ ++ qDebug() << "resolutions = " << resolutions; ++ ++ // reverse sort ++ qSort(resolutions.begin(), resolutions.end(), [](const QString & s1, const QString & s2) { ++ // Get numbers from QString, and then sort ++ ++ int numberS1 = g_sane_object->getNumbersFromQString(s1); ++ int numberS2 = g_sane_object->getNumbersFromQString(s2); ++ ++ return numberS1 < numberS2; ++ }); ++ ++ // Default resolution ++ resolutions.insert(0, QObject::tr("Auto")); ++ ++ g_sane_object->setSaneResolutions(resolutions); ++ ++ return status; ++} ++ + bool SaneObject::getSaneOptIndex(QString desc,int &index) + { + auto k = m_saneOptions.find(desc); +diff --git a/src/saneobject.h b/src/saneobject.h +index 7751a54..fd759e9 100644 +--- a/src/saneobject.h ++++ b/src/saneobject.h +@@ -39,7 +39,6 @@ + #include <QDateTime> + #include <QTimer> + #include <QFileInfo> +-#include "imageBaseOP/imageconverter.h" + + #ifdef __cplusplus + extern "C" { +@@ -160,6 +159,7 @@ public: + int startScanning(UserSelectedInfo info); + bool testScannerIsAlive(QString deviceName); + void hotPlugScanCompleteSlot(); ++ static SANE_Status getOptionResolutionsRange(int min, int max); + + bool m_ParametersHaveSeted = false; + +diff --git a/src/scandialog.cpp b/src/scandialog.cpp +index 3711f2f..f66131c 100644 +--- a/src/scandialog.cpp ++++ b/src/scandialog.cpp +@@ -18,7 +18,6 @@ + #include "scandialog.h" + #include <kysdk/applications/gsettingmonitor.h> + #include "Qt/windowmanage.hpp" +-#include "./utils/xatom-helper.h" + #include "globalsignal.h" + #include "include/theme.h" + +@@ -44,7 +43,7 @@ void ScanDialog::setupGui() + { + kabase::WindowManage::removeHeader(this); + setWindowModality(Qt::ApplicationModal); +- this->setWindowTitle(tr("Scanner")); ++ this->setWindowTitle(QApplication::tr("Scanner")); + this->setFixedSize(ScanDialogWindowSize); + + if(isDarkTheme()){ +@@ -102,8 +101,7 @@ void ScanDialog::setupGui() + + m_cancelHBoxLayout->addSpacing(220); + m_cancelHBoxLayout->addWidget(m_cancelButton); +- m_cancelWidget->setLayout(m_cancelHBoxLayout); +- ++ m_cancelWidget->setLayout(m_cancelHBoxLayout); + m_mainVBoxLayout->addWidget(m_titleWidget); + m_mainVBoxLayout->addStretch(); + m_mainVBoxLayout->addWidget(m_msgWidget); +@@ -115,6 +113,8 @@ void ScanDialog::setupGui() + + + this->setLayout(m_mainVBoxLayout); ++ m_cancelButton->setDefault(true); ++ m_cancelButton->setFocus(); + } + + bool ScanDialog::isDarkTheme() +diff --git a/src/scansettingswidget.cpp b/src/scansettingswidget.cpp +index 6994733..69ffb68 100644 +--- a/src/scansettingswidget.cpp ++++ b/src/scansettingswidget.cpp +@@ -18,7 +18,7 @@ + #include "scansettingswidget.h" + #include "include/common.h" + +-#include <ukui-log4qt.h> ++#include <QDebug> + + #include <QFileInfo> + #include <QFileDialog> +@@ -38,6 +38,8 @@ + #include <libkydatacollect.h> + + #define KYLINSCANNER "org.kylin-scanner-data.settings" ++inline int realLength(const char* str); ++std::string truncateToWidth(const std::string& utf8Str, int maxWidth); + + ScanSettingsWidget::ScanSettingsWidget(QWidget *parent) : + QWidget(parent), +@@ -125,26 +127,26 @@ void ScanSettingsWidget::selectSaveDirectorySlot() + QString midPath = currentSaveDirectory; + QString dlgTitle = tr("Select a directory"); + QString selectedDir = QFileDialog::getExistingDirectory(this, dlgTitle, currentSaveDirectory, QFileDialog::ShowDirsOnly); +- KyInfo() << "selected directory: " << selectedDir; ++ qDebug() << "selected directory: " << selectedDir; + + if (!selectedDir.isEmpty()) { + QFileInfo file(selectedDir); + if (file.permission(QFileDevice::WriteUser)) { +- KyInfo() << "The user could read and write " << selectedDir; ++ qDebug() << "The user could read and write " << selectedDir; + + currentSaveDirectory = selectedDir; + m_data->set("scannerpath", currentSaveDirectory); + setSaveButtonLabelAttributes(m_saveDirectoryButtonLabel, currentSaveDirectory, ScanSettingsButtonElideWidth); + } else { + if (file.isWritable()) { +- KyInfo() << "The user can read and write " << selectedDir; ++ qDebug() << "The user can read and write " << selectedDir; + + currentSaveDirectory = selectedDir; + setSaveButtonLabelAttributes(m_saveDirectoryButtonLabel, currentSaveDirectory, ScanSettingsButtonElideWidth); + + return; + } +- KyInfo() << "The user can't read and write " << selectedDir; ++ qDebug() << "The user can't read and write " << selectedDir; + + QString msg = tr("Currently user has no permission to modify directory ") + selectedDir; + warnMsg(msg); +@@ -152,7 +154,7 @@ void ScanSettingsWidget::selectSaveDirectorySlot() + } + g_sane_object->userInfo.saveDirectory = currentSaveDirectory; + +- KyInfo() << "saveDirectory = " << currentSaveAsDirectory; ++ qDebug() << "saveDirectory = " << currentSaveAsDirectory; + } + + void ScanSettingsWidget::deviceCurrentTextChangedSlot(QString text) +@@ -160,15 +162,15 @@ void ScanSettingsWidget::deviceCurrentTextChangedSlot(QString text) + if(text == ""){ + return; + } +- KyInfo() << "Sane device name: " << g_sane_object->userInfo.name << "current deviece name: " << m_deviceComboBox->currentText(); ++ qDebug() << "Sane device name: " << g_sane_object->userInfo.name << "current deviece name: " << m_deviceComboBox->currentText(); + + if (g_sane_object->userInfo.name.isEmpty()) { + g_sane_object->userInfo.name = text; + +- KyInfo() << "We do not need open device again."; ++ qDebug() << "We do not need open device again."; + return; + } else { +- KyInfo() << "Device changed, therefore, we need open device again."; ++ qDebug() << "Device changed, therefore, we need open device again."; + g_sane_object->userInfo.name = text; + } + +@@ -236,7 +238,6 @@ void ScanSettingsWidget::pageNumberCurrentTextChangedSlot(QString text) + kdk_dia_data_free(node); + } else { + g_sane_object->userInfo.pageNumber = tr("Single"); +-// m_saveNameEdit->setMaxLength(237); + + QMap<QString, QString> buried_data; + buried_data.insert("functionName", QString::fromStdString(kabase::BuriedPoint::convertPTtoString(kabase::BuriedPoint::PT::KylinScannerSinglePageScan))); +@@ -261,7 +262,7 @@ void ScanSettingsWidget::timeCurrentTextChangedSlot(QString text) + { + g_sane_object->userInfo.time = text; + +- KyInfo() << "userInfo.time = " << text; ++ qDebug() << "userInfo.time = " << text; + } + + void ScanSettingsWidget::typeCurrentTextChangedSlot(QString text) +@@ -272,7 +273,7 @@ void ScanSettingsWidget::typeCurrentTextChangedSlot(QString text) + + g_sane_object->m_ParametersHaveSeted = false; + g_sane_object->userInfo.type = text; +- KyInfo() << "userInfo.type = " << text; ++ qDebug() << "userInfo.type = " << text; + } + + void ScanSettingsWidget::colorCurrentTextChangedSlot(QString text) +@@ -286,38 +287,38 @@ void ScanSettingsWidget::colorCurrentTextChangedSlot(QString text) + g_sane_object->userInfo.color = "Gray"; + } + +- KyInfo() << "userInfo.color = " << text; ++ qDebug() << "userInfo.color = " << text; + } + + void ScanSettingsWidget::resolutionCurrentTextChangedSlot(QString text) + { + g_sane_object->m_ParametersHaveSeted = false; + if ((0 == text.compare(tr("4800 dpi"), Qt::CaseInsensitive)) +- || (0 == text.compare(tr("2400 dpi"), Qt::CaseInsensitive)) +- || (0 == text.compare(tr("1200 dpi"), Qt::CaseInsensitive))) { ++ || (0 == text.compare(tr("2400 dpi"), Qt::CaseInsensitive)) ++ || (0 == text.compare(tr("1200 dpi"), Qt::CaseInsensitive))) { + + QString msg = tr("This resolution will take a long time to scan, please choose carelly."); +- QMessageBox::information(this, tr("Alert"), msg); +-// warnMsg(msg); ++// QMessageBox::information(this, tr("Alert"), msg); ++ warnMsg(msg); + } + + g_sane_object->userInfo.resolution = text; + +- KyInfo() << "userInfo.resolution = " << text; ++ qDebug() << "userInfo.resolution = " << text; + } + + void ScanSettingsWidget::sizeCurrentTextChangedSlot(QString text) + { + g_sane_object->m_ParametersHaveSeted = false; + g_sane_object->userInfo.size = text; +- KyInfo() << "userInfo.size = " << text; ++ qDebug() << "userInfo.size = " << text; + } + + void ScanSettingsWidget::formatCurrentTextChangedSlot(QString text) + { + g_sane_object->m_ParametersHaveSeted = false; + g_sane_object->userInfo.format = text; +- KyInfo() << "userInfo.format = " << text; ++ qDebug() << "userInfo.format = " << text; + } + + void ScanSettingsWidget::nameCurrentTextChangedSlot(QString text) +@@ -325,7 +326,7 @@ void ScanSettingsWidget::nameCurrentTextChangedSlot(QString text) + QString msg; + if (m_saveNameEdit->text().contains(QChar('/'), Qt::CaseInsensitive)) { + msg = tr("cannot contain '/' character."); +- warnMsg(msg); ++ warnMsg(msg); + m_saveNameEdit->setText(m_saveNameEdit->text().remove("/")); + } + if (m_saveNameEdit->text().startsWith(QChar('.'), Qt::CaseInsensitive)) { +@@ -336,18 +337,14 @@ void ScanSettingsWidget::nameCurrentTextChangedSlot(QString text) + } + + QString saveNameEditStr = m_saveNameEdit->text(); +- long length = g_utf8_strlen(saveNameEditStr.toUtf8().data(), -1); // 当前内容长度 +- if (length > 236) { +- char *buff = new char[236 * 4 +1]; +- memset(buff, '\0', 236 * 4 +1); +- g_utf8_strncpy(buff, saveNameEditStr.toUtf8().data(), 236); // 截取指定长度 +- saveNameEditStr = QString::fromUtf8(buff); +- delete buff; ++ long length = realLength(saveNameEditStr.toUtf8().data()); // 当前内容长度 ++ if (length > 120) { ++ saveNameEditStr = QString::fromStdString(truncateToWidth(saveNameEditStr.toUtf8().data(), 120)); + m_saveNameEdit->setText(saveNameEditStr); + } + + g_sane_object->userInfo.saveName = m_saveNameEdit->text(); +- KyInfo() << "saveName = " << g_sane_object->userInfo.saveName; ++ qDebug() << "saveName = " << g_sane_object->userInfo.saveName; + + setNameEditTooltip(); + } +@@ -376,7 +373,6 @@ void ScanSettingsWidget::sendMailButtonClickedSlot() + AppList *maillist = getAppIdList(MailType); + + if (! maillist) { +- NoMailDialog *dialog = new NoMailDialog(); + + QWidget *widget = nullptr; + QWidgetList widgetList = QApplication::allWidgets(); +@@ -385,6 +381,11 @@ void ScanSettingsWidget::sendMailButtonClickedSlot() + widget = widgetList.at(i); + } + } ++ ++ NoMailDialog *dialog = new NoMailDialog(widget); ++ dialog->setAttribute(Qt::WA_DeleteOnClose); ++ ++ + if (widget) { + QRect rect = widget->geometry(); + int x = rect.x() + rect.width()/2 - dialog->width()/2; +@@ -392,14 +393,9 @@ void ScanSettingsWidget::sendMailButtonClickedSlot() + dialog->move(x,y); + } + +- retDialog = dialog->exec(); +- if (retDialog == QDialog::Accepted) { +- QProcess *process = new QProcess(); +- process->start("/usr/bin/kylin-software-center"); +- } +- delete dialog; ++ + } else { +- KyInfo() << "Get mail client list success."; ++ qDebug() << "Get mail client list success."; + + dialog->setMailSelectComboboxItems(); + +@@ -437,15 +433,17 @@ void ScanSettingsWidget::saveAsButtonClickedSlot(bool exitApp) + filter = QLatin1String("*.txt"); + } else { + if (fileFormat == "jpg") { +- filter = QLatin1String("*.jpg;;*.png;;*.pdf;;*.bmp;;*.tiff"); ++ filter = QLatin1String("*.jpg;;*.png;;*.pdf;;*.bmp;;*.tiff;;*.ofd"); + } else if (fileFormat == "png") { +- filter = QLatin1String("*.png;;*.jpg;;*.pdf;;*.bmp;;*.tiff"); ++ filter = QLatin1String("*.png;;*.jpg;;*.pdf;;*.bmp;;*.tiff;;*.ofd"); + } else if (fileFormat == "pdf") { +- filter = QLatin1String("*.pdf;;*.jpg;;*.png;;*.bmp;;*.tiff"); ++ filter = QLatin1String("*.pdf;;*.jpg;;*.png;;*.bmp;;*.tiff;;*.ofd"); + } else if (fileFormat == "bmp"){ +- filter = QLatin1String("*.bmp;;*.jpg;;*.png;;*.pdf;;*.tiff"); +- } else { +- filter = QLatin1String("*.tiff;;*.bmp;;*.jpg;;*.png;;*.pdf"); ++ filter = QLatin1String("*.bmp;;*.jpg;;*.png;;*.pdf;;*.tiff;;*.ofd"); ++ } else if (fileFormat == "tiff"){ ++ filter = QLatin1String("*.tiff;;*.bmp;;*.jpg;;*.png;;*.pdf;;*.ofd"); ++ } else{ ++ filter = QLatin1String("*.ofd;;*.jpg;;*.png;;*.pdf;;*.bmp;;*.tiff"); + } + } + QFileDialog fileDialog; +@@ -502,26 +500,13 @@ void ScanSettingsWidget::saveAsButtonClickedSlot(bool exitApp) + path = path.append(fileType); + } + } +-// //已有文件的判断 +-// QFile file(path); +-// if(file.exists()){ +-// QMessageBox::StandardButton box; +-// QString tipsStr1 = tr("The file "); +-// QString tipsStr2 = tr(" already exists, do you want to overwrite it?"); +-// QString tipsStr = tipsStr1 + path1 + fileType + tipsStr2; +-// box = QMessageBox::question(this->parentWidget(),tr("tips"),tipsStr,QMessageBox::Yes|QMessageBox::No); +-// if(box == QMessageBox::Yes){ +-// qDebug() << "file already exists,user choose overwrite it."; +-// }else{ +-// return; +-// } +-// } + g_user_signal->saveAsButtonClicked(path); + g_user_signal->exitWindowWithSaveFlag = false; + if(exitApp){ + g_user_signal->exitApplication(); + } + } ++ + bool ScanSettingsWidget::showRunningDialog() + { + QString fileName = m_saveNameEdit->text(); +@@ -790,7 +775,7 @@ void ScanSettingsWidget::setupGui() + + g_sane_object->userInfo.saveDirectory = currentSaveDirectory; + +- KyInfo() << "saveDirectory = " << currentSaveDirectory; ++ qDebug() << "saveDirectory = " << currentSaveDirectory; + } + + currentSaveAsDirectory = tr("Save as"); +@@ -821,9 +806,17 @@ void ScanSettingsWidget::setupGui() + m_settingsFormLayout->addRow(m_formatLabel, m_formatComboBox); + m_settingsFormLayout->addRow(m_saveNameLabel, m_saveNameEdit); + m_settingsFormLayout->addRow(m_saveDirectoryLabel, m_saveDirectoryButton); +-// m_settingsFormLayout->setLabelAlignment(Qt::AlignLeft | Qt::AlignRight); +-// m_settingsFormLayout->setFormAlignment(Qt::AlignLeft); + m_settingsFormLayout->setContentsMargins(24, 0, 24, 0); ++ m_settingsFormLayout->setObjectName("m_settingsFormLayout"); ++ ++ m_pageNumberComboBox->setObjectName("m_pageNumberComboBox"); ++ m_typeComboBox->setObjectName("m_typeComboBox"); ++ m_colorComboBox->setObjectName("m_colorComboBox"); ++ m_resolutionComboBox->setObjectName("m_resolutionComboBox"); ++ m_sizeComboBox->setObjectName("m_sizeComboBox"); ++ m_formatComboBox->setObjectName("m_formatComboBox"); ++ m_saveNameEdit->setObjectName("m_saveNameEdit"); ++ m_saveDirectoryButton->setObjectName("m_saveDirectoryButton"); + + m_sendMailButton->setMinimumSize(ScanSettingsWidgetButtonSize); + m_SaveAsButton->setMinimumSize(ScanSettingsWidgetButtonSize); +@@ -843,6 +836,7 @@ void ScanSettingsWidget::setupGui() + m_mainVLayout->addLayout(m_buttonsHLayout); + m_mainVLayout->addSpacing(24); + m_mainVLayout->setContentsMargins(0, 0, 0, 0); ++ m_mainVLayout->setObjectName("m_mainVLayout"); + + setLayout(m_mainVLayout); + bool isPCMode = GlobalUserSignal::getInstance()->getCurrentMode(); +@@ -944,7 +938,7 @@ void ScanSettingsWidget::updateDeviceSettings() + + m_deviceComboBox->setEnabled(true); + +- KyInfo() << "Devices : " << deviceStringList; ++ qDebug() << "Devices : " << deviceStringList; + setComboboxAttributes(m_deviceComboBox, deviceStringList); + } + +@@ -966,7 +960,7 @@ void ScanSettingsWidget::updatePageNumberSettings() + + pageNumberStringList << tr("Single") << tr("Multiple"); + +- KyInfo() << "PageNumber : " << pageNumberStringList; ++ qDebug() << "PageNumber : " << pageNumberStringList; + + m_pageNumberComboBox->setEnabled(saneStatus); + setComboboxAttributes(m_pageNumberComboBox, pageNumberStringList); +@@ -991,7 +985,7 @@ void ScanSettingsWidget::updateTypeSettings() + m_typeComboBox->setEnabled(saneStatus); + + if (! typeStringList.isEmpty()) { +- KyInfo() << "Type : " << typeStringList; ++ qDebug() << "Type : " << typeStringList; + } else { + m_typeComboBox->setEnabled(false); + } +@@ -1019,7 +1013,7 @@ void ScanSettingsWidget::updateColorSettings() + + // Avoid segmentation fault + if (! colorStringList.isEmpty()) { +- KyInfo() << "Color: " << colorStringList; ++ qDebug() << "Color: " << colorStringList; + }else{ + m_colorComboBox->setEnabled(false); + } +@@ -1039,14 +1033,14 @@ void ScanSettingsWidget::updateResolutionSettings(bool DetectedDevices) + } + + if (! resolutionStringList.isEmpty()) { +- KyInfo() << "resolution: " << resolutionStringList; ++ qDebug() << "resolution: " << resolutionStringList; + + m_resolutionComboBox->setEnabled(saneStatus); + setComboboxAttributes(m_resolutionComboBox, resolutionStringList); + } else { + /// Cannot get resolution from scanner: FUJITSU fi-7140 + resolutionStringList.clear(); +- KyInfo() << "resolution is empty! "; ++ qDebug() << "resolution is empty! "; + m_resolutionComboBox->setEnabled(false); + + if (DetectedDevices) { +@@ -1086,7 +1080,7 @@ void ScanSettingsWidget::updateFormatSettings() + + bool saneStatus = g_sane_object->getSaneStatus(); + +- formatStringList << "jpg" << "png" << "pdf" << "bmp" << "tiff"; ++ formatStringList << "jpg" << "png" << "pdf" << "bmp" << "tiff" << "ofd"; + + m_formatComboBox->setEnabled(saneStatus); + +@@ -1103,10 +1097,10 @@ void ScanSettingsWidget::updateSaveNameTextSettings() + bool saneStatus = g_sane_object->getSaneStatus(); + + QDateTime currentTime = QDateTime::currentDateTime(); +- KyInfo() << "current time: " <<currentTime; ++ qDebug() << "current time: " <<currentTime; + + QString currentTimeString = currentTime.toString("yyyy_MM_dd-hh_mm_ss_zzz"); +- KyInfo() << currentTimeString; ++ qDebug() << currentTimeString; + + m_saveNameEdit->setText(currentTimeString); + m_saveNameEdit->setAlignment(Qt::AlignLeft); +@@ -1139,12 +1133,12 @@ void ScanSettingsWidget::updateSaveAsTextStore() + m_SaveAsButton->setText(tr("Store text")); + m_SaveAsButton->setToolTip(tr("Store text")); + } +- KyInfo() << "m_SaveAsButton text: " << m_SaveAsButton->text(); ++ qDebug() << "m_SaveAsButton text: " << m_SaveAsButton->text(); + } + + void ScanSettingsWidget::updateSaveAsTextRecover() + { +- KyInfo() << "m_SaveAsButton text: " << m_SaveAsButton->text(); ++ qDebug() << "m_SaveAsButton text: " << m_SaveAsButton->text(); + m_SaveAsButton->setText(tr("Save as")); + m_SaveAsButton->setToolTip(tr("Save as")); + } +@@ -1213,7 +1207,7 @@ void ScanSettingsWidget::updateSettingsStatusForStartScan() + + void ScanSettingsWidget::updateSettingsStatusForEndScan(int saneStatus) + { +- KyInfo() << "status: " << saneStatus; ++ qDebug() << "status: " << saneStatus; + m_deviceComboBox->setEnabled(true); + + if (saneStatus == SANE_STATUS_NO_DOCS +@@ -1358,11 +1352,11 @@ void ScanSettingsWidget::setNameEditTooltip() + } + void ScanSettingsWidget::warnMsg(QString msg) + { +- QMessageBox *msgBox = new QMessageBox(); +- ++ QMessageBox *msgBox = new QMessageBox(this); ++ msgBox->setObjectName("warnMsgBox"); + msgBox->setText(msg); + msgBox->setIcon(QMessageBox::Warning); +- msgBox->setWindowTitle(tr("Scanner")); ++ msgBox->setWindowTitle(QApplication::tr("Scanner")); + msgBox->setStandardButtons(QMessageBox::Yes); + msgBox->setContextMenuPolicy(Qt::NoContextMenu); + msgBox->button(QMessageBox::Yes)->setText(tr("Yes")); +@@ -1385,3 +1379,42 @@ void ScanSettingsWidget::warnMsg(QString msg) + msgBox->exec(); + } + ++inline int realLength(const char* str) { ++ // 设置当前程序的区域(locale),以支持宽字符处理 ++ setlocale(LC_ALL, ""); ++ ++ // 将多字节字符串转换为宽字符字符串 ++ wchar_t wstr[1024]; ++ mbstowcs(wstr, str, sizeof(wstr) / sizeof(wchar_t)); ++ ++ // 计算宽字符字符串的显示宽度 ++ return wcswidth(wstr, wcslen(wstr)); ++} ++ ++// 截取指定显示宽度的字符串 ++std::string truncateToWidth(const std::string& utf8Str, int maxWidth) { ++ setlocale(LC_ALL, ""); // 设置区域以支持多字节字符 ++ ++ // 将 UTF-8 转为宽字符 ++ wchar_t wstr[1024]; ++ mbstowcs(wstr, utf8Str.c_str(), sizeof(wstr) / sizeof(wchar_t)); ++ ++ std::wstring truncated; ++ int currentWidth = 0; ++ ++ // 遍历宽字符,累加显示宽度,直到超过 maxWidth ++ for (size_t i = 0; wstr[i] != L'\0'; ++i) { ++ int charWidth = wcwidth(wstr[i]); ++ if (charWidth < 0) charWidth = 0; // 避免负值 ++ if (currentWidth + charWidth > maxWidth) { ++ break; // 超过最大宽度,停止截取 ++ } ++ truncated += wstr[i]; ++ currentWidth += charWidth; ++ } ++ ++ // 将截取结果转回 UTF-8 ++ char result[1024]; ++ wcstombs(result, truncated.c_str(), sizeof(result)); ++ return std::string(result); ++} +diff --git a/src/scansettingswidget.h b/src/scansettingswidget.h +index 123bf6b..78cf958 100644 +--- a/src/scansettingswidget.h ++++ b/src/scansettingswidget.h +@@ -194,7 +194,7 @@ private: + bool isDarkTheme(); + bool showRunningDialog(); + +-private slots: ++public slots: + void setScanIconDisable(); + void showNewDeviceListPageSuccessSlot(); + void showNewDeviceListPageFailSlot(); +diff --git a/src/sendmail.cpp b/src/sendmail.cpp +index 3d4286f..0d113b5 100644 +--- a/src/sendmail.cpp ++++ b/src/sendmail.cpp +@@ -40,6 +40,9 @@ NoMailDialog::NoMailDialog(QWidget *parent) : QDialog(parent) + initLayout(); + + initConnect(); ++ ++ this->show(); ++ + } + + NoMailDialog::~NoMailDialog() +@@ -50,6 +53,7 @@ NoMailDialog::~NoMailDialog() + void NoMailDialog::initWindow() + { + kabase::WindowManage::removeHeader(this); ++ this->setWindowModality(Qt::ApplicationModal); + + setWindowTitle(tr("No email client")); + setFixedSize(NoMailWindowWidth, NoMainWindowHeight); +@@ -57,7 +61,7 @@ void NoMailDialog::initWindow() + + void NoMailDialog::initLayout() + { +- m_noMailCloseButton->setIcon (QIcon::fromTheme (ICON_THEME_CLOSE)); ++ m_noMailCloseButton->setIcon(QIcon::fromTheme(ICON_THEME_CLOSE)); + m_noMailCloseButton->setToolTip(tr("Close")); + m_noMailCloseButton->setFixedSize(30, 30); + m_noMailCloseButton->setIconSize (QSize(16, 16)); +@@ -122,36 +126,19 @@ void NoMailDialog::initLayout() + m_mainVBoxLayout->addLayout(m_noMailButtonsHBoxLayout); + m_mainVBoxLayout->setContentsMargins(0, 0, 0, 0); + setLayout(m_mainVBoxLayout); ++ ++ m_installButton->setFocus(); ++ m_installButton->setDefault(true); + } + + void NoMailDialog::initConnect() + { +- connect(m_installButton, &QPushButton::clicked, this, &NoMailDialog::accept); ++ connect(m_installButton, &QPushButton::clicked, this, &NoMailDialog::installMailApp); + connect(m_cancelButton, &QPushButton::clicked, this, &NoMailDialog::closeNoMailWindow); + connect(m_noMailCloseButton, &QPushButton::clicked, this, &NoMailDialog::closeNoMailWindow); + connect(m_themeData, &QGSettings::changed, this, &NoMailDialog::fontSizeChangedSlot); + } + +-void NoMailDialog::themeChangedWhite() +-{ +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(255, 255, 255)); +- setAutoFillBackground(true); +- setPalette(pal); +- +- m_noMailtitleLabel->setStyleSheet("color:#D9FFFFFF"); // 85% => D9, 255,255,255 => FFFFFF +-} +- +-void NoMailDialog::themeChangedBlack() +-{ +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(47, 44, 43)); +- setAutoFillBackground(true); +- setPalette(pal); +- +- m_noMailtitleLabel->setStyleSheet("color:#D9000000"); // 85% => D9, 255,255,255 => FFFFFF +-} +- + void NoMailDialog::closeNoMailWindow() + { + reject(); +@@ -167,6 +154,15 @@ void NoMailDialog::fontSizeChangedSlot() + m_installButton->setFont(font); + } + ++void NoMailDialog::installMailApp() ++{ ++ QProcess *process = new QProcess(); ++ process->start("/usr/bin/kylin-software-center"); ++ process->waitForFinished(); ++ process->close(); ++ this->close(); ++} ++ + SendMailDialog::SendMailDialog(QWidget *parent) : QDialog(parent) + , m_titleTextLabel(new QLabel()) + , m_closeButton (new QPushButton()) +@@ -271,7 +267,7 @@ void SendMailDialog::initConnect() + connect(m_confirmButton, &QPushButton::clicked, [this](){ + + int currentIndex = m_mailSelectCombobox->currentIndex(); +- KyInfo() << "current index = " << currentIndex; ++ qDebug() << "current index = " << currentIndex; + + openSelectMailClientSlot(m_desktopName[currentIndex]); + this->accept(); +@@ -340,11 +336,11 @@ void SendMailDialog::setMailSelectComboboxItems() + + AppList *maillist = getAppIdList(MailType); + if (maillist) { +- KyInfo() << "mail list = " << maillist; ++ qDebug() << "mail list = " << maillist; + + for (i = 0; maillist[i].appid != NULL; ++i) { + QString single(maillist[i].appid); +- KyInfo() << "maillist desktopName = " << single; ++ qDebug() << "maillist desktopName = " << single; + + m_desktopName.append(single); + QByteArray ba = QString(DesktopFilePath + single).toUtf8(); +@@ -402,10 +398,10 @@ void SendMailDialog::openSelectMailClientSlot(QString name) + QString mailPicture(MailPicturePath); + + if (!aFile.exists()) { +- KyInfo() << DesktopFilePath << name << " no exists!"; ++ qDebug() << DesktopFilePath << name << " no exists!"; + } + if (!aFile.open(QIODevice::ReadOnly | QIODevice::Text)) { +- KyInfo() << DesktopFilePath << name << " open false!"; ++ qDebug() << DesktopFilePath << name << " open false!"; + } + + QTextStream aStream(&aFile); +@@ -417,12 +413,12 @@ void SendMailDialog::openSelectMailClientSlot(QString name) + } + str = str.section("Exec=", 1, 1); + str = str.section(" ", 0, 0); +- KyInfo() << "exec str = " << str; ++ qDebug() << "exec str = " << str; + QProcess *process = new QProcess(); + + arglists << "-c"; + arglists << str; +- KyInfo() << "str = " << str; ++ qDebug() << "str = " << str; + if (str == "thunderbird") { + arglists << "-compose" << "attachment='/tmp/scanner/present_image.jpg'"; + } else if (str == "claws-mail") { +@@ -435,7 +431,7 @@ void SendMailDialog::openSelectMailClientSlot(QString name) + } else { + arglists << " "; + } +- KyInfo() << "cmd = " << cmd << arglists; ++ qDebug() << "cmd = " << cmd << arglists; + + if (str == "evolution") { + process->start("evolution", arglists); +@@ -446,20 +442,3 @@ void SendMailDialog::openSelectMailClientSlot(QString name) + this->reject(); + } + +-void SendMailDialog::themeChangedWhite() +-{ +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(255, 255, 255)); +- setAutoFillBackground(true); +- setPalette(pal); +- +-} +- +-void SendMailDialog::themeChangedBlack() +-{ +- QPalette pal(palette()); +- pal.setColor(QPalette::Background, QColor(47, 44, 43)); +- setAutoFillBackground(true); +- setPalette(pal); +-} +- +diff --git a/src/sendmail.h b/src/sendmail.h +index 522226f..f0b952c 100644 +--- a/src/sendmail.h ++++ b/src/sendmail.h +@@ -43,7 +43,6 @@ + #include <qmath.h> + #include <QTextBrowser> + #include <ukui-log4qt.h> +-#include "utils/xatom-helper.h" + #include "globalsignal.h" + #include "include/common.h" + #include "include/theme.h" +@@ -111,13 +110,11 @@ private: + Q_SIGNALS: + void noMailWindowClose(); + +-private slots: +- +- void themeChangedWhite(); +- void themeChangedBlack(); ++public slots: + + void closeNoMailWindow(); + void fontSizeChangedSlot(); ++ void installMailApp(); + }; + + class SendMailDialog : public QDialog +@@ -161,8 +158,6 @@ public slots: + void closeSendMailWindowSlot(); + void openSelectMailClientSlot(QString name); + +- void themeChangedWhite(); +- void themeChangedBlack(); + }; + + +diff --git a/src/showimagewidget.cpp b/src/showimagewidget.cpp +index ca2646f..5041875 100644 +--- a/src/showimagewidget.cpp ++++ b/src/showimagewidget.cpp +@@ -16,16 +16,14 @@ + * + */ + #include "showimagewidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <KWindowEffects> + #include <kysdk/applications/gsettingmonitor.h> +-#include "utils/copyoperation.h" ++ + #include "imageOp/imageoperationbeauty.h" + #include "imageOp/imageoperationmirror.h" + #include "imageOp/imageoperationocr.h" + #include "imageOp/imageoperationrectify.h" +-#include "imageOp/imageoperationwatermark.h" +-#include "imageOp/imageoperationrotate.h" + + ShowImageWidget::ShowImageWidget(QWidget *parent) : QWidget(parent) + , m_stackImage (new QImage()) +@@ -204,15 +202,6 @@ void ShowImageWidget::setPdfSize(QPdfWriter *pdfWriter, QString size) + case U("A6"): + pdfWriter->setPageSize(QPageSize(QPageSize::A6)); + break; +- case U("A7"): +- pdfWriter->setPageSize(QPageSize(QPageSize::A7)); +- break; +- case U("A8"): +- pdfWriter->setPageSize(QPageSize(QPageSize::A8)); +- break; +- case U("A9"): +- pdfWriter->setPageSize(QPageSize(QPageSize::A9)); +- break; + default: + pdfWriter->setPageSize(QPageSize(QPageSize::A4)); + break; +@@ -249,7 +238,7 @@ void ShowImageWidget::saveToPdf(QImage img, QString pathname) + + QImage *ShowImageWidget::imageSave(QString filename) + { +- KyInfo() << "save image: " << filename; ++ qDebug() << "save image: " << filename; + if (g_sane_object->ocrFlag == 0) { + /*****************mark***************************/ + *m_editImage = m_normalImage->copy(); +@@ -273,7 +262,7 @@ QImage *ShowImageWidget::imageSave(QString filename) + QString ShowImageWidget::setPixmapScaled(QImage img, QLabel *lab, double scale) + { + if (img.isNull()) { +- KyWarning() << "image is null."; ++ qWarning() << "image is null."; + return ""; + } + double labWidth = this->width() - 2*ShowImageWidgetSpacing - AddWidthForLargeFontSize; +@@ -282,9 +271,6 @@ QString ShowImageWidget::setPixmapScaled(QImage img, QLabel *lab, double scale) + double imgWidth = img.width(); + double imgHeight = img.height(); + +-// if(rotationFlag){ +-// swap(imgWidth,imgHeight); +-// } + + qDebug() << "label size: " << lab->size() + << "this size: " << this->size() +@@ -324,14 +310,14 @@ QString ShowImageWidget::setPixmapScaled(QImage img, QLabel *lab, double scale) + lab->setAlignment(Qt::AlignCenter | Qt::AlignCenter | Qt::AlignCenter); + m_navigator->hide(); + +- KyInfo() << "proportion: " << proportion << "proportionForPercentage: " << proportionForPercentage; ++ qDebug() << "proportion: " << proportion << "proportionForPercentage: " << proportionForPercentage; + + int proportionInt = qRound(proportionForPercentage * 100); + +- KyInfo() << "proportionInt: " << proportionInt; ++ qDebug() << "proportionInt: " << proportionInt; + QString proportionString = QString("%1").arg(proportionInt) + "%"; + +- KyInfo() << "proportionString: " << proportionString; ++ qDebug() << "proportionString: " << proportionString; + g_sane_object->percentage = proportionString; + + g_user_signal->toolbarPercentageChanged(); +@@ -343,7 +329,7 @@ QString ShowImageWidget::setPixmapScaled(QImage img, QLabel *lab, double scale) + QString ShowImageWidget::setCropPixmapScaled(QImage img, QLabel *lab, double scale) + { + if (img.isNull()) { +- KyWarning() << "image is null."; ++ qWarning() << "image is null."; + return ""; + } + double labWidth = this->width() - 2*ShowImageWidgetSpacing - AddWidthForLargeFontSize; +@@ -379,25 +365,23 @@ QString ShowImageWidget::setCropPixmapScaled(QImage img, QLabel *lab, double sca + QPixmap pixmap = QPixmap::fromImage(img); + QPixmap fitpixmap = pixmap.scaled(img.size()*proportion, Qt::KeepAspectRatio, Qt::SmoothTransformation); + +- lab->setPixmap(fitpixmap); +- lab->setFixedSize(QSize(fitpixmap.size())); +- lab->setScaledContents(true); +- lab->setAlignment(Qt::AlignCenter | Qt::AlignVCenter | Qt::AlignHCenter); +- ++ lab->setPixmap(fitpixmap); ++ lab->setFixedSize(QSize(fitpixmap.size())); ++ lab->setScaledContents(true); ++ lab->setAlignment(Qt::AlignCenter | Qt::AlignVCenter | Qt::AlignHCenter); + +- KyInfo() << "proportion: " << proportion +- << "proportionForPercentage: " << proportionForPercentage; ++ qDebug() << "proportion: " << proportion ++ << "proportionForPercentage: " << proportionForPercentage; + +-// int proportionInt = static_cast<int>(proportionForPercentage * 100); +- int proportionInt = qRound(proportionForPercentage * 100); ++ int proportionInt = qRound(proportionForPercentage * 100); + +- KyInfo() << "proportionInt: " << proportionInt; +- QString proportionString = QString("%1").arg(proportionInt) + "%"; ++ qDebug() << "proportionInt: " << proportionInt; ++ QString proportionString = QString("%1").arg(proportionInt) + "%"; + +- KyInfo() << "proportionString: " << proportionString; +- g_sane_object->percentage = proportionString; ++ qDebug() << "proportionString: " << proportionString; ++ g_sane_object->percentage = proportionString; + +- g_user_signal->toolbarPercentageChanged(); ++ g_user_signal->toolbarPercentageChanged(); + + return proportionString; + +@@ -492,7 +476,7 @@ void ShowImageWidget::setPixmapScaledByProportion(double scaledNumber) + int scaledWidth = static_cast<int>(m_showImageLabel->width() * scaledNumber); + int scaledHeight = static_cast<int>(m_showImageLabel->height() * scaledNumber); + +- KyInfo() << "scaledNumber = " << scaledNumber ++ qDebug() << "scaledNumber = " << scaledNumber + << "scaleWidth = " << scaledWidth + << "scaleHeight = " << scaledHeight; + +@@ -531,10 +515,10 @@ double ShowImageWidget::getCurrentPercentage() + double percentageDouble; + + percentageDouble = proportionNoPercentage.toDouble() / 100; +- KyInfo() << "percentageDouble = " << percentageDouble ++ qDebug() << "percentageDouble = " << percentageDouble + << "proportionNoPercentage = " << proportionNoPercentage; + +- KyInfo() << "percentageDouble = " << percentageDouble; ++ qDebug() << "percentageDouble = " << percentageDouble; + + + return percentageDouble; +@@ -552,21 +536,21 @@ double ShowImageWidget::getRealPercentage(ShowImageWidget::ZoomStatus zoomType) + } else { + percentageDouble = proportionNoPercentage.toDouble() / 100 + 0.05; + } +- KyInfo() << "percentageDouble = " << percentageDouble ++ qDebug() << "percentageDouble = " << percentageDouble + << "proportionNoPercentage = " << proportionNoPercentage; + +- KyInfo() << "percentageDouble = " << percentageDouble; ++ qDebug() << "percentageDouble = " << percentageDouble; + + if (zoomType == ZoomStatus::ZoomOut) { + if (percentageDouble < 0.05) { + percentageDouble = 0.05; + } +- KyInfo() << "percentageDouble = " << percentageDouble; ++ qDebug() << "percentageDouble = " << percentageDouble; + } else if (zoomType == ZoomStatus::ZoomIn) { + if (percentageDouble > 2) { + percentageDouble = 2; + } +- KyInfo() << "percentageDouble = " << percentageDouble; ++ qDebug() << "percentageDouble = " << percentageDouble; + } + + return percentageDouble; +@@ -577,7 +561,7 @@ void ShowImageWidget::updatePercentageByZoom(double scale) + int percentageInt = qRound(scale * 100.0); + + QString percentageString = QString::number(percentageInt) + "%"; +- KyInfo() << "percentage: " << percentageString; ++ qDebug() << "percentage: " << percentageString; + + g_sane_object->percentage = percentageString; + +@@ -587,9 +571,6 @@ void ShowImageWidget::updatePercentageByZoom(double scale) + + void ShowImageWidget::resizeEvent(QResizeEvent *event) + { +- // Must override, otherwise, m_showImageLabel will not auto resize +-// m_showImageLabel->setMinimumSize(QSize(387*0.2, 536*0.2)); +- + setPixmapScaled(*m_normalImage, m_showImageLabel); + + if(!m_cancelOkWidget->isHidden()){ +@@ -634,22 +615,23 @@ void ShowImageWidget::keyPressEvent(QKeyEvent *event) + case Qt::Key_Space: + + if (m_showImageAndCropWidget->currentWidget() == m_cropLabel) { +- KyInfo() << "pressed key(Enter): " << event->key(); ++ qDebug() << "pressed key(Enter): " << event->key(); + +- int x1, y1, x2, y2; +- getCropArea(x1, y1, x2, y2); ++ int x1, y1, x2, y2; ++ getCropArea(x1, y1, x2, y2); + +- QImage cropImage = m_normalImage->copy(x1/proportion, y1/proportion, (x2-x1)/proportion, (y2-y1)/proportion); ++ QImage cropImage = m_normalImage->copy(x1/proportion, y1/proportion, (x2-x1)/proportion, (y2-y1)/proportion); + +- *m_editImage = cropImage; +- setPixmapScaled(*m_editImage, m_cropLabel, proportion); ++ *m_editImage = cropImage; ++ setPixmapScaled(*m_editImage, m_cropLabel, proportion); + +- *m_normalImage = m_editImage->copy(); +- setPixmapScaled(*m_normalImage, m_showImageLabel, proportion); ++ *m_normalImage = m_editImage->copy(); ++ setPixmapScaled(*m_normalImage, m_showImageLabel, proportion); + +- m_cropLabel->initCropSettings(); ++ m_cropLabel->initCropSettings(); + +- m_showImageAndCropWidget->setCurrentWidget(m_labelWidget); ++ ++ m_showImageAndCropWidget->setCurrentWidget(m_labelWidget); + + g_sane_object->cropFlag = 0; + m_cancelOkWidget->hide(); +@@ -658,14 +640,14 @@ void ShowImageWidget::keyPressEvent(QKeyEvent *event) + + case Qt::Key_Z: + if (event->modifiers() == Qt::ControlModifier) { +- KyInfo() << "pressed key(ctrl+z): " << event->key(); ++ qDebug() << "pressed key(ctrl+z): " << event->key(); + rollBackOperation(); + m_cancelOkWidget->hide(); + } + break; + + default: +- KyInfo() << "pressed key: " << event->key(); ++ qDebug() << "pressed key: " << event->key(); + break; + } + } +@@ -696,7 +678,6 @@ void ShowImageWidget::showNormalImageAfterScan(QStringList loadFileName, QString + + m_showImageAndCropWidget->setCurrentWidget(m_labelWidget); + +- + imageNUll(true); + + double labWidth = this->width() - 2*ShowImageWidgetSpacing - AddWidthForLargeFontSize; +@@ -825,14 +806,14 @@ void ShowImageWidget::clickNavigation(const QPoint &point) + m_showImageLabel->setScaledContents(true); + m_showImageLabel->setAlignment(Qt::AlignCenter | Qt::AlignCenter | Qt::AlignCenter); + +- KyInfo() << "proportion: " << proportion << "proportionForPercentage: " << proportionForPercentage; ++ qDebug() << "proportion: " << proportion << "proportionForPercentage: " << proportionForPercentage; + + int proportionInt = qRound(proportionForPercentage * 100); + +- KyInfo() << "proportionInt: " << proportionInt; ++ qDebug() << "proportionInt: " << proportionInt; + QString proportionString = QString("%1").arg(proportionInt) + "%"; + +- KyInfo() << "proportionString: " << proportionString; ++ qDebug() << "proportionString: " << proportionString; + g_sane_object->percentage = proportionString; + } + +@@ -852,7 +833,7 @@ void ShowImageWidget::showImageAfterClickedThumbnail(QString loadPath) + m_imageStack.clear(); + proportionForPercentage = 1.0; + +- KyInfo() << "loadPath = " << loadPath; ++ qDebug() << "loadPath = " << loadPath; + + rotationFlag = false; + imageNUll(true); +@@ -863,31 +844,25 @@ void ShowImageWidget::showImageAfterClickedThumbnail(QString loadPath) + + emit loadImgSignal(loadPath, NULL, m_normalImage, m_showImageLabel, 1, false, labSize); + +-// *m_normalImage = QImage(loadPath); +- +- +- +- +-// QString percentagedouble = setPixmapScaled(*m_normalImage, m_showImageLabel); +- + g_sane_object->normalImagePath = loadPath; + + if (g_sane_object->ocrFlag != 0) { + g_user_signal->toolbarOcrOperationStart(); + } + } ++ + void ShowImageWidget::loadImageFinishedSlot(QString save_path, double proportion, QImage image){ + if(showImageAfterClickedThumbnailFlag){ + showImageAfterClickedThumbnailFlag = false; + }else{ + if(save_path != NULL){ + QString savePath = save_path; +- KyInfo() << "savePath = " << savePath; ++ qDebug() << "savePath = " << savePath; + g_sane_object->normalImagePath = savePath; + m_saveFileBase.saveFileOP(savePath, &image); + }else{ + QString savePath = m_savePathDelayUpdate; +- KyInfo() << "savePath = " << savePath; ++ qDebug() << "savePath = " << savePath; + g_sane_object->normalImagePath = savePath; + m_saveFileBase.saveFileOP(savePath, m_normalImage); + } +@@ -895,10 +870,10 @@ void ShowImageWidget::loadImageFinishedSlot(QString save_path, double proportion + proportionForPercentage = proportion; + int proportionInt = qRound(proportionForPercentage * 100); + +- KyInfo() << "proportionInt: " << proportionInt; ++ qDebug() << "proportionInt: " << proportionInt; + QString proportionString = QString("%1").arg(proportionInt) + "%"; + +- KyInfo() << "proportionString: " << proportionString; ++ qDebug() << "proportionString: " << proportionString; + g_sane_object->percentage = proportionString; + + g_user_signal->toolbarPercentageChanged(); +@@ -927,7 +902,7 @@ void ShowImageWidget::saveImage(QString filename) + + void ShowImageWidget::cropSlot() + { +- KyInfo() << "Crop begin"; ++ qDebug() << "Crop begin"; + + if (g_sane_object->cropFlag == 0) { + g_sane_object->cropFlag = 1; +@@ -951,7 +926,7 @@ void ShowImageWidget::cropSlot() + + void ShowImageWidget::rotateSlot() + { +- KyInfo() << "Rotate begin"; ++ qDebug() << "Rotate begin"; + *m_stackImage = m_normalImage->copy(); + m_imageStack.push(*m_stackImage); + QMatrix matrix; +@@ -959,13 +934,6 @@ void ShowImageWidget::rotateSlot() + *m_normalImage = m_normalImage->transformed(matrix); + rotationFlag = !rotationFlag; + setPixmapScaled(*m_normalImage, m_showImageLabel); +-// imageOp = new ImageOperationRotate(&(*m_normalImage),&m_imageStack); +-// imageOpThread = new QThread; +-// imageOp->moveToThread(imageOpThread); +-// imageOpThread->start(); +-// connect(this,&ShowImageWidget::rotateSignal,imageOp,&ImageOperationBase::ImageOP); +-// connect(imageOp,&ImageOperationBase::finished,this,&ShowImageWidget::rotateFinished); +-// emit rotateSignal(); + } + void ShowImageWidget::rotateFinished(){ + m_normalImage->load(ScanningPicture); +@@ -979,8 +947,6 @@ void ShowImageWidget::mirrorSlot() + + *m_editImage = m_normalImage->mirrored(true, false); + +-// setPixmapScaled(*m_editImage, m_showImageLabel); +- + *m_normalImage = m_editImage->copy(); + setPixmapScaled(*m_normalImage, m_showImageLabel); + +@@ -988,10 +954,9 @@ void ShowImageWidget::mirrorSlot() + + void ShowImageWidget::watermarkSlot() + { +- KyInfo() << "Watermark begin"; ++ qDebug() << "Watermark begin"; + + WatermarkDialog *dialog = new WatermarkDialog(); +-// dialog->setWindowModality(Qt::ApplicationModal); + + QWidget *widget = nullptr; + QWidgetList widgetList = QApplication::allWidgets(); +@@ -1008,11 +973,11 @@ void ShowImageWidget::watermarkSlot() + } + + int ret = dialog->exec(); +- KyInfo() << "ret = " << ret; ++ qDebug() << "ret = " << ret; + + if (ret == QDialog::Accepted) { + QString text = dialog->getLineEditText(); +- KyInfo() << text; ++ qDebug() << text; + + *m_stackImage= m_normalImage->copy(); + m_imageStack.push(*m_stackImage); +@@ -1022,7 +987,7 @@ void ShowImageWidget::watermarkSlot() + QPixmap pix; + pix = QPixmap::fromImage(*m_editImage); + +- KyInfo() << "pix size: " << pix.size(); ++ qDebug() << "pix size: " << pix.size(); + + + int spacing = 5; +@@ -1050,14 +1015,14 @@ void ShowImageWidget::watermarkSlot() + int x = squareEdgeSize / hCount + (fontSize + spacing) * 3; + int y = x / 2; + +- KyInfo() << "hcount = " << hCount ++ qDebug() << "hcount = " << hCount + << "squareEdgeSize = " << squareEdgeSize + << "(x,y) = " << x << y; + + for (int i = 0; i < hCount; ++i) { + for (int j = 0; j < hCount * 2; ++j) { + painter.drawText(x * i, y * j, text); +-// KyInfo() << "drawtext: " << text; ++// qDebug() << "drawtext: " << text; + } + } + +@@ -1200,7 +1165,7 @@ void ShowImageWidget::rectifyStartSlot() + } + void ShowImageWidget::rectifyStopSlot(bool isTrue) + { +- KyInfo() << "rectify: " << isTrue; ++ qDebug() << "rectify: " << isTrue; + + if (isTrue) { + loadAfterBROPicture(); +@@ -1242,14 +1207,14 @@ void ShowImageWidget::loadAfterBROPicture() + + void ShowImageWidget::cropCancelSlot() + { +- KyInfo() << "pressed cancel: " ; ++ qDebug() << "pressed cancel: " ; + rollBackOperation(); + m_cancelOkWidget->hide(); + } + + void ShowImageWidget::cropCompleteSlot() + { +- KyInfo() << "pressed OK: "; ++ qDebug() << "pressed OK: "; + + int x1, y1, x2, y2; + getCropArea(x1, y1, x2, y2); +diff --git a/src/showimagewidget.h b/src/showimagewidget.h +index 237f713..b6218ea 100644 +--- a/src/showimagewidget.h ++++ b/src/showimagewidget.h +@@ -47,7 +47,6 @@ + #include "crop.h" + #include "rectify.h" + #include "include/common.h" +-#include "utils/copyoperation.h" + #include "imageOp/imageoperationbase.h" + #include "imageBaseOP/savefilebase.h" + #include <kborderlessbutton.h> +@@ -151,6 +150,7 @@ public slots: + + void naviChange(); //改变导航栏位置 + void resetNavigator(); ++ void createNavigation(); + + private: + QString m_loadPathDelayUpdate; +@@ -180,8 +180,6 @@ private: + + ToolBarWidget *m_toolbarWidget = nullptr; + +- CopyOperation *toolObject = nullptr; +- + QVBoxLayout *m_mainVLayout = nullptr; + ImageOperationBase *imageOp = nullptr; + QThread *imageOpThread = nullptr; +@@ -199,7 +197,6 @@ private: + + void setCancelWidgetPositon(); + void drawShadow(); +- void createNavigation(); + void clickNavigation(const QPoint &point = QPoint(-1, -1)); + QPixmap localAmplification(const QPixmap &orgPix, QSize showSize, QPoint local, QSize widSize); + +diff --git a/src/showocrwidget.cpp b/src/showocrwidget.cpp +index af2515f..8489c19 100644 +--- a/src/showocrwidget.cpp ++++ b/src/showocrwidget.cpp +@@ -16,7 +16,7 @@ + * + */ + #include "showocrwidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <kysdk/applications/gsettingmonitor.h> + #include <QStackedWidget> + +@@ -118,7 +118,7 @@ void showOcrWidget::resizeEvent(QResizeEvent *event) + } + void showOcrWidget::showScanLine() + { +-// KyInfo() << "showScanLine"; ++// qDebug() << "showScanLine"; + scanHeight += 1; + + if (scanHeight >=m_ocrImageLabel->height()) { +@@ -153,7 +153,7 @@ void showOcrWidget::startScanSlot(QString pic_path) + return; + } + pixFileName = pic_path; +- KyInfo() << "start ocr scan"; ++ qDebug() << "start ocr scan"; + m_ocrTextEdit->setText(tr("The document is in character recognition ...")); + timer->start(10); + scanHeight = 0; +@@ -171,7 +171,7 @@ void showOcrWidget::stopScanStop() + + void showOcrWidget::updateOcrTextEdit() + { +- KyInfo() << "ocrTextEdit = " << g_sane_object->ocrOutputText; ++ qDebug() << "ocrTextEdit = " << g_sane_object->ocrOutputText; + timer->stop(); + scanHeight = 0; + +diff --git a/src/singleapplication.cpp b/src/singleapplication.cpp +index 5668ba6..b4b0664 100644 +--- a/src/singleapplication.cpp ++++ b/src/singleapplication.cpp +@@ -18,7 +18,7 @@ + + #include "singleapplication.h" + #include "include/common.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <QtNetwork/QLocalSocket> + #include <QFileInfo> + #include <QLatin1String> +@@ -67,7 +67,7 @@ static bool checkStarted() + getline(in, s); + comm = QString::fromStdString(s); + if (comm == "kylin-scanner") { +- KyInfo() << "exist pid = " << f.baseName(); ++ qDebug() << "exist pid = " << f.baseName(); + return true; + } + } +@@ -91,7 +91,7 @@ static QString getCurrentUserName() + process->waitForFinished(); + QString userNow = QString::fromLocal8Bit(process->readAllStandardOutput().trimmed()); + //QString userNow = QString::fromStdString(process->readAllStandardOutput().toStdString()); +- KyInfo() << "Exist user: " << userNow; ++ qDebug() << "Exist user: " << userNow; + + return userNow; + } +@@ -102,7 +102,7 @@ static void doRead() + + QFile file(UserExistFile); + if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { +- KyInfo() << "file read error!"; ++ qDebug() << "file read error!"; + return; + } + +@@ -110,12 +110,12 @@ static void doRead() + while (!in.atEnd()) { + line = in.readLine(); + } +- KyInfo() << "line: " << line; ++ qDebug() << "line: " << line; + + QStringList list = line.split(',', QString::SkipEmptyParts); + uuap.usedUsername = list.at(0); + uuap.usedPid = list.at(1); +- KyInfo() << "uuap.usedUsername = " << uuap.usedUsername ++ qDebug() << "uuap.usedUsername = " << uuap.usedUsername + << "uuap.usedPid = " << uuap.usedPid; + + file.close(); +@@ -143,7 +143,7 @@ static int doKill() + process->start(cmd, arglists); + process->waitForFinished(-1); + +- KyInfo() << "exitCode: " << process->exitCode() ++ qDebug() << "exitCode: " << process->exitCode() + << ", exitStatus: " << process->exitStatus() + << ", error: " << process->error() + << ", result err: " << process->readAllStandardError() +@@ -169,7 +169,7 @@ static bool pidIsNotExist() + process->start(cmd, arglists); + process->waitForFinished(); + QString strOutput = QString::fromLocal8Bit(process->readAllStandardOutput().trimmed()); +- KyInfo() << "strOutput = " << strOutput; ++ qDebug() << "strOutput = " << strOutput; + + return strOutput.isEmpty(); + } +@@ -201,7 +201,7 @@ SingleApplication::SingleApplication(int &argc, char **argv) + qDebug() << "Chinese"; + } + +- KyInfo() << "DISPLAY: " << QLatin1String(getenv ("DISPLAY")); ++ qDebug() << "DISPLAY: " << QLatin1String(getenv ("DISPLAY")); + _serverName = QFileInfo(QCoreApplication::applicationFilePath()).fileName() + + QLatin1String(getenv("DISPLAY")); + +@@ -250,7 +250,7 @@ void SingleApplication::_initLocalConnection() + + _isRunning = checkStarted(); + if (_isRunning) { +- KyInfo() << "App is running, What's your choice ?"; ++ qDebug() << "App is running, What's your choice ?"; + + doRead(); + QString userUsed = uuap.usedUsername; +@@ -258,7 +258,7 @@ void SingleApplication::_initLocalConnection() + + // current user straight return + if (userUsed.compare(userNow) == 0) { +- KyInfo() << "user: " << userNow << " " << userUsed; ++ qDebug() << "user: " << userNow << " " << userUsed; + + QLocalSocket socket; + socket.connectToServer(_serverName); +@@ -267,12 +267,12 @@ void SingleApplication::_initLocalConnection() + fprintf(stderr, "%s already running.\n", + _serverName.toLocal8Bit().constData()); + _isRunning = true; +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + + // Other handles, such as send start arguments to server + return; + } else { +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + } + + _newLocalServer(); +@@ -289,14 +289,14 @@ void SingleApplication::_initLocalConnection() + if (msgBox == QMessageBox::Yes) { + int retKill = doKill(); + if (FAIL == retKill) { +- KyInfo() << "Maybe you close this messagebox or choose cancel button!"; ++ qDebug() << "Maybe you close this messagebox or choose cancel button!"; + _isExitWindow = true; + _isRunning = true; + return; + } else { + // retKill value (0,1) are not fixed, it's reasonable for us to judge whether exist's pid has been killed. + if (pidIsNotExist()) { +- KyInfo() << "kill " << uuap.usedPid << " success, congratulations!"; ++ qDebug() << "kill " << uuap.usedPid << " success, congratulations!"; + _isRunning = false; + + QLocalSocket socket; +@@ -306,33 +306,33 @@ void SingleApplication::_initLocalConnection() + fprintf(stderr, "%s already running.\n", + _serverName.toLocal8Bit().constData()); + _isRunning = true; +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + + // Other handles, such as send start arguments to server + + return; + } else { +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + } + + // Cannot to connect to server, so create it + _newLocalServer(); + } else { +- KyInfo() << "kill " << uuap.usedPid << " error!"; ++ qDebug() << "kill " << uuap.usedPid << " error!"; + _isExitWindow = true; + _isRunning = true; + return; + } + } + } else { +- KyInfo() << "You choose not open again, so directly close!"; ++ qDebug() << "You choose not open again, so directly close!"; + _isExitWindow = true; + _isRunning = true; + return; + } + } + } else { +- KyInfo() << "App is not running, let's start it!"; ++ qDebug() << "App is not running, let's start it!"; + _isRunning = false; + + QLocalSocket socket; +@@ -342,13 +342,13 @@ void SingleApplication::_initLocalConnection() + fprintf(stderr, "%s already running.\n", + _serverName.toLocal8Bit().constData()); + _isRunning = true; +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + + // Other handles, such as send start arguments to server + + return; + } else { +- KyInfo() << "isRunnig = " << _isRunning; ++ qDebug() << "isRunnig = " << _isRunning; + } + + _newLocalServer(); +@@ -381,7 +381,7 @@ void SingleApplication::_newLocalServer() + void SingleApplication::_activateWindow() + { + if (w) { +- KyInfo() << "activateWindow"; ++ qDebug() << "activateWindow"; + w->show(); + w->raise(); + +diff --git a/src/successpagewidget.cpp b/src/successpagewidget.cpp +index 5cd0a9a..f736b7a 100644 +--- a/src/successpagewidget.cpp ++++ b/src/successpagewidget.cpp +@@ -16,7 +16,7 @@ + * + */ + #include "successpagewidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + + SuccessPageWidget::SuccessPageWidget(QWidget *parent) : + QWidget(parent), +diff --git a/src/svghandler.cpp b/src/svghandler.cpp +index 2b6e4aa..773a89a 100644 +--- a/src/svghandler.cpp ++++ b/src/svghandler.cpp +@@ -18,7 +18,7 @@ + #include "svghandler.h" + #include <QApplication> + +-#include <ukui-log4qt.h> ++#include <QDebug> + + const QPixmap SVGHandler::loadSvgColor(const QString &path, const QString &color, int size) + { +diff --git a/src/thumbnailwidget.cpp b/src/thumbnailwidget.cpp +index 06b2613..40e299f 100644 +--- a/src/thumbnailwidget.cpp ++++ b/src/thumbnailwidget.cpp +@@ -16,12 +16,11 @@ + * + */ + #include "thumbnailwidget.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <kysdk/applications/gsettingmonitor.h> + #include <CImg.h> + #include "include/theme.h" + #include <QProcess> +-#include "imageBaseOP/imageconverter.h" + + int ThumbnailWidget::scanPictureCount = 0; + bool ThumbnailWidget::scanPictureIsEmpty = true; +@@ -87,12 +86,6 @@ bool ThumbnailWidget::isDarkTheme() + } + } + +-void ThumbnailWidget::converPnmToJpg(QString pnmPath, QString jpgPath) +-{ +- ImageConverter converter; +- converter.convertImage(pnmPath, jpgPath); +-} +- + void ThumbnailWidget::resizeEvent(QResizeEvent *event) + { + bool isPCMode = GlobalUserSignal::getInstance()->getCurrentMode(); +@@ -132,7 +125,7 @@ void ThumbnailWidget::showNormalImageAfterScan(QString loadPath, QString savePat + QString tooltipName = scanFullNameFileInfo.baseName(); + + int rowcount = m_thumbnailItemModel->rowCount(); +- KyInfo() << "rowcount = " << rowcount ++ qDebug() << "rowcount = " << rowcount + << "scanFullName = " << scanFullName; + + QString newScanFullName = QFileInfo(scanFullName).absolutePath() + "/" + QFileInfo(scanFullName).baseName() + ".jpg"; +@@ -174,10 +167,10 @@ void ThumbnailWidget::clickedItemSlot(const QModelIndex &index) + + ScanStandardItem *item = dynamic_cast<ScanStandardItem *>(m_thumbnailItemModel->itemFromIndex(index)); + if (item) { +- int scanIconNumber = item->getRowCountLocation(); +- QString loadPath = item->getPath(); ++ int scanIconNumber = item->getRowCountLocation(); ++ QString loadPath = item->getPath(); + +- KyInfo() << "scanIconPath = " << scanIconNumber << loadPath; ++ qDebug() << "scanIconPath = " << scanIconNumber << loadPath; + + g_user_signal->showImageAfterClickedThumbnail(loadPath); + g_user_signal->resetNavigatorsignal(); +diff --git a/src/thumbnailwidget.h b/src/thumbnailwidget.h +index 8389236..da9ddbc 100644 +--- a/src/thumbnailwidget.h ++++ b/src/thumbnailwidget.h +@@ -83,7 +83,6 @@ private: + ThumbnailDelegate *m_thumbnailDelegate = nullptr; + QStandardItemModel *m_thumbnailItemModel = nullptr; + +- void converPnmToJpg(QString pnmPath, QString jpgPath); + public slots: + void showThumbnailIcon(); + +diff --git a/src/titlebar/titlebar.cpp b/src/titlebar/titlebar.cpp +index 375cb6f..fe443ca 100644 +--- a/src/titlebar/titlebar.cpp ++++ b/src/titlebar/titlebar.cpp +@@ -85,11 +85,11 @@ TitleBar::TitleBar(QWidget *parent) : + }); + + m_menu->addAction(tr("Exit"), [=]() { +- KyInfo() << "window close."; ++ qDebug() << "window close."; + if (g_user_signal->exitWindowWithSaveFlag) { + int saveFlag = warnCloseWindow(); + if (saveFlag == 1) { +- KyInfo() << "close window save as"; ++ qDebug() << "close window save as"; + g_user_signal->closeWindowSaveAs(true); + } + } +@@ -153,18 +153,18 @@ void TitleBar::on_m_minBtn_clicked() + + void TitleBar::on_m_maxBtn_clicked(bool checked) + { +- KyInfo() << "checked: " << checked; ++ qDebug() << "checked: " << checked; + + g_user_signal->maximumWindowSignal(); + } + + void TitleBar::on_m_closeBtn_clicked() + { +- KyInfo() << "window close."; ++ qDebug() << "window close."; + if (g_user_signal->exitWindowWithSaveFlag) { + int saveFlag = warnCloseWindow(); + if (saveFlag == 1) { +- KyInfo() << "close window save as"; ++ qDebug() << "close window save as"; + g_user_signal->closeWindowSaveAs(true); + } + }else{ +@@ -217,12 +217,12 @@ int TitleBar::warnCloseWindow() + + if (msgBox->clickedButton() == yesButton) { + msgBox->deleteLater(); +- KyInfo() << "Accepeted !"; ++ qDebug() << "Accepeted !"; + return 1; + } else if (msgBox->clickedButton() == noButton) { + g_user_signal->exitApplication(); + msgBox->deleteLater(); +- KyInfo() << "Rejected !"; ++ qDebug() << "Rejected !"; + return 0; + } + return 0; +diff --git a/src/titlebar/titlebar.h b/src/titlebar/titlebar.h +index 4cbde79..6c267de 100644 +--- a/src/titlebar/titlebar.h ++++ b/src/titlebar/titlebar.h +@@ -46,7 +46,6 @@ class TitleBar; + #define TitlebarHeight 40 + #define UKUI_THEME_GSETTING_PATH "org.ukui.style" + +-#include "src/utils/daemondbus.h" + #include "../globalsignal.h" + + class TitleBar : public QWidget +diff --git a/src/titlebar/titlebar.ui b/src/titlebar/titlebar.ui +index 8f108c6..5742e1b 100644 +--- a/src/titlebar/titlebar.ui ++++ b/src/titlebar/titlebar.ui +@@ -159,14 +159,14 @@ + </property> + <property name="minimumSize"> + <size> +- <width>32</width> +- <height>32</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="maximumSize"> + <size> +- <width>48</width> +- <height>48</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="focusPolicy"> +@@ -200,14 +200,14 @@ + <widget class="QPushButton" name="m_minBtn"> + <property name="minimumSize"> + <size> +- <width>32</width> +- <height>32</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="maximumSize"> + <size> +- <width>48</width> +- <height>48</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="mouseTracking"> +@@ -241,14 +241,14 @@ + <widget class="QPushButton" name="m_maxBtn"> + <property name="minimumSize"> + <size> +- <width>32</width> +- <height>32</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="maximumSize"> + <size> +- <width>48</width> +- <height>48</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="mouseTracking"> +@@ -288,14 +288,14 @@ + <widget class="QPushButton" name="m_closeBtn"> + <property name="minimumSize"> + <size> +- <width>32</width> +- <height>32</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="maximumSize"> + <size> +- <width>48</width> +- <height>48</height> ++ <width>30</width> ++ <height>30</height> + </size> + </property> + <property name="mouseTracking"> +diff --git a/src/toolbarwidget.cpp b/src/toolbarwidget.cpp +index 186a84c..36351b6 100644 +--- a/src/toolbarwidget.cpp ++++ b/src/toolbarwidget.cpp +@@ -49,6 +49,16 @@ ToolBarWidget::ToolBarWidget(QWidget *parent) : QWidget(parent), + + void ToolBarWidget::setupGui() + { ++ m_beautyButton->setObjectName("m_beautyButton"); ++ m_rectifyButton->setObjectName("m_rectifyButton"); ++ m_ocrButton->setObjectName("m_ocrButton"); ++ m_leftFrame->setObjectName("m_leftFrame"); ++ m_cropButton->setObjectName("m_cropButton"); ++ m_rotateButton->setObjectName("m_rotateButton"); ++ m_mirrorButton->setObjectName("m_mirrorButton"); ++ m_watermarkButton->setObjectName("m_watermarkButton"); ++ m_zoomOutButton->setObjectName("m_zoomOutButton"); ++ m_zoomInButton->setObjectName("m_zoomInButton"); + this->setAttribute(Qt::WA_TranslucentBackground); // set background translucent,combine with overriding paintEvent to let setStyleSheet work + this->setWindowFlags(Qt::FramelessWindowHint); // set frameless window + setAutoFillBackground(true); +@@ -246,8 +256,7 @@ void ToolBarWidget::setupGui() + } + + drawFrame(); +- +- KyInfo() << "toolbarwidget size: " << this->size(); ++ qDebug() << "toolbarwidget size: " << this->size(); + } + + void ToolBarWidget::initConnect() +@@ -405,13 +414,13 @@ void ToolBarWidget::keyReleaseEvent(QKeyEvent *event) + + void ToolBarWidget::percentageChangedSlot() + { +- KyInfo() << "percentage = " << g_sane_object->percentage; ++ qDebug() << "percentage = " << g_sane_object->percentage; + + m_percentageLabel->setText(g_sane_object->percentage); + } + void ToolBarWidget::beautyButtonClickedSlot() + { +- KyInfo() << "click beaty button."; ++ qDebug() << "click beaty button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit beauty!"; +@@ -443,7 +452,7 @@ void ToolBarWidget::beautyButtonClickedSlot() + void ToolBarWidget::rectifyButtonClickedSlot() + { + m_rectifyButton->setEnabled(false); +- KyInfo() << "click rectify button."; ++ qDebug() << "click rectify button."; + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit rectify!"; + return; +@@ -472,7 +481,7 @@ void ToolBarWidget::rectifyButtonClickedSlot() + + void ToolBarWidget::ocrButtonClickedSlot() + { +- KyInfo() << "click ocr button."; ++ qDebug() << "click ocr button."; + + if(g_sane_object->cropFlag){ + qDebug() << "do nothing,exit ocr!"; +@@ -512,7 +521,7 @@ void ToolBarWidget::ocrButtonClickedSlot() + + void ToolBarWidget::cropButtonClickedSlot() + { +- KyInfo() << "click crop button."; ++ qDebug() << "click crop button."; + + if(g_sane_object->ocrFlag){ + qDebug() << "do nothing,exit crop!"; +@@ -548,7 +557,7 @@ void ToolBarWidget::cropDoubleClickedSlot() + + void ToolBarWidget::rotateButtonClickedSlot() + { +- KyInfo() << "click rotate button."; ++ qDebug() << "click rotate button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit rotate!"; +@@ -578,7 +587,7 @@ void ToolBarWidget::rotateButtonClickedSlot() + + void ToolBarWidget::mirrorButtonClickedSlot() + { +- KyInfo() << "click mirror button."; ++ qDebug() << "click mirror button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit mirror!"; +@@ -608,7 +617,7 @@ void ToolBarWidget::mirrorButtonClickedSlot() + + void ToolBarWidget::watermarkButtonClickedSlot() + { +- KyInfo() << "click watermark button."; ++ qDebug() << "click watermark button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit watermark!"; +@@ -639,7 +648,7 @@ void ToolBarWidget::watermarkButtonClickedSlot() + + void ToolBarWidget::zoomoutButtonClickedSlot() + { +- KyInfo() << "click zoomout button."; ++ qDebug() << "click zoomout button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit zooout!"; +@@ -651,7 +660,7 @@ void ToolBarWidget::zoomoutButtonClickedSlot() + + void ToolBarWidget::zoominButtonClickedSlot() + { +- KyInfo() << "click zoomin button."; ++ qDebug() << "click zoomin button."; + + if(g_sane_object->ocrFlag || g_sane_object->cropFlag){ + qDebug() << "do nothing,exit zoomin!"; +diff --git a/src/toolbarwidget.h b/src/toolbarwidget.h +index ae4bf56..102516f 100644 +--- a/src/toolbarwidget.h ++++ b/src/toolbarwidget.h +@@ -22,7 +22,7 @@ + #include "svghandler.h" + #include "saneobject.h" + +-#include <ukui-log4qt.h> ++#include <QDebug> + + #include <QWidget> + #include <QPushButton> +diff --git a/src/usbhotplugthread.cpp b/src/usbhotplugthread.cpp +index c103448..b031586 100644 +--- a/src/usbhotplugthread.cpp ++++ b/src/usbhotplugthread.cpp +@@ -17,7 +17,7 @@ + */ + #include "usbhotplugthread.h" + #include "usb.h" +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <libudev.h> + #include "globalsignal.h" + #include <QList> +@@ -331,7 +331,7 @@ bool UsbHotplugThread::isRemoveScanner(QString path) + + static void authCallback (SANE_String_Const resource, SANE_Char *username, SANE_Char *password) + { +- // KyInfo() << "auth_callback" << resource << username << password; ++ // qDebug() << "auth_callback" << resource << username << password; + } + + static SANE_Status saneGetDevices(const SANE_Device ***device_list) +@@ -345,13 +345,13 @@ static SANE_Status saneGetDevices(const SANE_Device ***device_list) + + sane_init(&version_code, authCallback); + +- KyInfo() << "Get all scan devices, please waiting ..."; ++ qDebug() << "Get all scan devices, please waiting ..."; + + memset(device_list, 0x00, sizeof(device_list)); + status = sane_get_devices(device_list, SANE_FALSE); + + if (status) { +- KyInfo() << "status = " << sane_strstatus(status); ++ qDebug() << "status = " << sane_strstatus(status); + } + + return status; +@@ -367,13 +367,13 @@ void UsbHotplugThread::initSane(){ + GlobalUserSignal::getInstance()->setDeviceList(g_deviceListusb); + g_sane_object->g_deviceList = g_deviceListusb; + if (sane_status) { +- KyInfo() << "Cannot get scan devices, sane_status = " << sane_status; ++ qDebug() << "Cannot get scan devices, sane_status = " << sane_status; + return; + } + + qDebug() << "scan device tag!"; + for (int i = 0; g_deviceListusb[i]; ++i) { +- KyInfo() << "mark-Name-usb: " << g_deviceListusb[i]->name ++ qDebug() << "mark-Name-usb: " << g_deviceListusb[i]->name + << "mark-Vendor-usb: " << g_deviceListusb[i]->vendor + << "mark-Model-usb: " << g_deviceListusb[i]->model + << "mark-Type-usb: " << g_deviceListusb[i]->type; +diff --git a/src/utils/copyoperation.cpp b/src/utils/copyoperation.cpp +deleted file mode 100644 +index fc7e657..0000000 +--- a/src/utils/copyoperation.cpp ++++ /dev/null +@@ -1,30 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include "copyoperation.h" +-#include <QMatrix> +-#include <QPdfWriter> +-#include <QImage> +-#include "../saneobject.h" +- +-#include <QDebug> +- +-CopyOperation::CopyOperation(QObject *parent) : QObject(parent) +-{ +- +-} +diff --git a/src/utils/copyoperation.h b/src/utils/copyoperation.h +deleted file mode 100644 +index 5e8a660..0000000 +--- a/src/utils/copyoperation.h ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef COPYOPERATION_H +-#define COPYOPERATION_H +- +-#include <QObject> +- +-class CopyOperation : public QObject +-{ +- Q_OBJECT +-public: +- explicit CopyOperation(QObject *parent = nullptr); +- +-signals: +- +-}; +- +-#endif // COPYOPERATION_H +diff --git a/src/utils/daemondbus.cpp b/src/utils/daemondbus.cpp +deleted file mode 100644 +index 3843620..0000000 +--- a/src/utils/daemondbus.cpp ++++ /dev/null +@@ -1,57 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include "daemondbus.h" +- +-int KYCDaemonDbusObject::daemonIsNotRunning() +-{ +- char service_name[SERVICE_NAME_SIZE]; +- memset(service_name, 0, SERVICE_NAME_SIZE); +- snprintf(service_name, SERVICE_NAME_SIZE, "%s_%d", KYLIN_USER_GUIDE_SERVICE, getuid()); +- QDBusConnection conn = QDBusConnection::sessionBus(); +- if (!conn.isConnected()) +- return -1; +- +- QDBusReply<QString> reply = conn.interface()->call("GetNameOwner", service_name); +- return reply.value() == ""; +-} +- +-void KYCDaemonDbusObject::showGuide(QString appName) +-{ +- KyInfo() << Q_FUNC_INFO << appName; +- bool bRet = false; +- +- char service_name[SERVICE_NAME_SIZE]; +- memset(service_name, 0, SERVICE_NAME_SIZE); +- snprintf(service_name, SERVICE_NAME_SIZE, "%s_%d", KYLIN_USER_GUIDE_SERVICE, getuid()); +- +- KyInfo() << "service_name " << service_name; +- QDBusMessage msg = QDBusMessage::createMethodCall(QString(service_name), KYLIN_USER_GUIDE_PATH, +- KYLIN_USER_GUIDE_INTERFACE, "showGuide"); +- msg << appName; +- +- QDBusMessage response = QDBusConnection::sessionBus().call(msg); +- if (response.type() == QDBusMessage::ReplyMessage) { +- //bRet = response.arguments().at(0).toBool(); +- KyInfo() << "showGuide is success!\n"; +- } else { +- KyInfo() << "showGuide is fail!\n"; +- } +- +- KyInfo() << "bRet:" << bRet; +-} +diff --git a/src/utils/daemondbus.h b/src/utils/daemondbus.h +deleted file mode 100644 +index 95237ac..0000000 +--- a/src/utils/daemondbus.h ++++ /dev/null +@@ -1,57 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef DAEMONDBUS_H +-#define DAEMONDBUS_H +- +-#define KYLIN_USER_GUIDE_PATH "/" +- +-#define KYLIN_USER_GUIDE_SERVICE "com.kylinUserGuide.hotel" +- +-#define KYLIN_USER_GUIDE_INTERFACE "com.guide.hotel" +- +-#define SERVICE_NAME_SIZE 40 +- +-#include <QObject> +-#include <QApplication> +-#include <QCoreApplication> +-#include <QtDBus/QDBusConnection> +-#include <QtDBus/QDBusConnectionInterface> +-#include <QtDBus/QDBusMessage> +-#include <QtDBus/QDBusReply> +-#include <unistd.h> +-#include <sys/types.h> +- +-#include <ukui-log4qt.h> +- +-class KYCDaemonDbusObject : public QObject +-{ +- Q_OBJECT +- // Q_CLASSINFO("D-Bus Interface", "com.scorpio.test.value") +-public: +- +- KYCDaemonDbusObject() {} +- +-public slots: +- +- int daemonIsNotRunning(); +- void showGuide(QString appName); +- +-}; +- +-#endif // DAEMONDBUS_H +diff --git a/src/utils/login1_dbus.cpp b/src/utils/login1_dbus.cpp +deleted file mode 100644 +index 7493d7c..0000000 +--- a/src/utils/login1_dbus.cpp ++++ /dev/null +@@ -1,210 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#include <QDebug> +- +-#include "login1_dbus.h" +-#include "src/globalsignal.h" +- +-static const QString LOGIND_DEST = "org.freedesktop.login1"; +-static const QString LOGIND_PATH = "/org/freedesktop/login1"; +-static const QString LOGIND_IFACE = "org.freedesktop.login1.Manager"; +-static const QString login1SessionInterface = QStringLiteral("org.freedesktop.login1.Session"); +- +-static const QString SCREENSAVER_DEST = "org.ukui.ScreenSaver"; +-static const QString SCREENSAVER_IFACE = "org.ukui.ScreenSaver"; +- +-static const QString LOGOUT_DEST = "org.gnome.SessionManager"; +-static const QString LOGOUT_IFACE = "org.gnome.SessionManager"; +- +- +- +-static const QString INHIBIT_WHO = "Kylin Camera"; +-static const QString INHIBIT_WHY = "Stop Recording when system is shutdown or sleep"; +-static const QString INHIBIT_MODE = "block"; +- +- +- +-login1dbusManager::login1dbusManager() : +- m_inhibitShutdownFD(QDBusUnixFileDescriptor()), +- m_inhibitSleepFD(QDBusUnixFileDescriptor()) +-{ +- auto sysBus = QDBusConnection::systemBus(); +- sysBus.connect(LOGIND_DEST, LOGIND_PATH,LOGIND_IFACE, +- QString("PrepareForShutdown"), this, SLOT(login1PrepareForShutdown(bool))); +- sysBus.connect(LOGIND_DEST, LOGIND_PATH,LOGIND_IFACE, +- QString("PrepareForSleep"), this, SLOT(login1PrepareForSleep(bool))); +- +- //切换用户信号操作 +- QDBusInterface loginInterface(LOGIND_DEST,LOGIND_PATH,LOGIND_IFACE,QDBusConnection::systemBus()); +- QDBusReply<QDBusObjectPath> sessionPath = loginInterface.call("GetSessionByPID",(quint32)QCoreApplication::applicationPid()); +- QString session = sessionPath.value().path(); +- QDBusConnection::systemBus().connect(LOGIND_DEST,session,login1SessionInterface,QStringLiteral("Lock"),this,SLOT(changeUserLock())); +- QDBusConnection::systemBus().connect(LOGIND_DEST,session,login1SessionInterface,QStringLiteral("Unlock"),this,SLOT(changeUserUnLock())); +- +- auto sesBus = QDBusConnection::sessionBus(); +- sesBus.connect(SCREENSAVER_DEST,QString("/"),QString(SCREENSAVER_IFACE), +- QString("lock"),this,SLOT(screenSaverLocked())); +- sesBus.connect(SCREENSAVER_DEST,QString("/"),QString(SCREENSAVER_IFACE), +- QString("unlock"),this,SLOT(screenSaverUnlocked())); +- auto sesLogoutBus = QDBusConnection::sessionBus(); +- sesLogoutBus.connect(LOGOUT_DEST,QString("/org/gnome/SessionManager"),QString(LOGOUT_IFACE), +- QString("StartLogout"),this,SLOT(logoutSig())); +- +-} +- +-login1dbusManager::~login1dbusManager() +-{ +- +-} +-//Call this method when start record ... +-bool login1dbusManager::inhibit(INHIBIT_TYPE type) +-{ +- qDebug() << "inhibit"; +- QString what; +- if(type == INHIBIT_SLEEP){ +- what = "sleep"; +- }else if(type == INHIBIT_SHUTDOWN){ +- what = "shutdown"; +- }else{ +- return false; +- } +- QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.login1", +- "/org/freedesktop/login1", +- "org.freedesktop.login1.Manager", +- QStringLiteral("Inhibit")); +- message.setArguments(QVariantList({what, +- "Kylin Scanner", +- INHIBIT_WHY, +- QStringLiteral("delay")})); +- QDBusPendingReply<QDBusUnixFileDescriptor> reply = QDBusConnection::systemBus().call(message); +- qDebug() << "xx" << reply.value().isValid(); +- if(type == INHIBIT_SLEEP){ +- reply.value().swap(m_inhibitSleepFD); +- }else if(type == INHIBIT_SHUTDOWN){ +- reply.value().swap(m_inhibitShutdownFD); +- }else{ +- return false; +- } +- +- return reply.value().isValid(); +-} +- +-//Call this method when stop recording ... +-void login1dbusManager::unInhibit() +-{ +- qDebug() << "uninhibit"; +- if(m_inhibitSleepFD.isValid() == true) +- { +- m_inhibitSleepFD = QDBusUnixFileDescriptor(); +- } +- if(m_inhibitShutdownFD.isValid() == true) +- { +- m_inhibitShutdownFD = QDBusUnixFileDescriptor(); +- } +-} +-void login1dbusManager::login1PrepareForSleep(bool in) +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__<< +- " "<< in; +- if(in){ +- if(isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = true; +- emit g_user_signal->saneCancelSignal(); +- }else{ +- if(!isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = false; +- emit g_user_signal->saneRestartSignal(); +- } +-} +-void login1dbusManager::login1PrepareForShutdown(bool in) +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__<< +- " "<< in; +- if(in){ +- if(isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = true; +- emit g_user_signal->saneCancelSignal(); +- }else{ +- if(!isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = false; +- emit g_user_signal->saneRestartSignal(); +- } +-} +-void login1dbusManager::logoutSig() +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__; +- if(isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = true; +- emit g_user_signal->saneCancelSignal(); +-} +-void login1dbusManager::screenSaverLocked() +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__; +- if(isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = true; +- emit g_user_signal->saneCancelSignal(); +-} +-void login1dbusManager::screenSaverUnlocked() +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__; +- if(!isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = false; +- emit g_user_signal->saneRestartSignal(); +-} +-void login1dbusManager::changeUserLock() +-{ +- qDebug()<<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__; +- if(isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = true; +- emit g_user_signal->saneCancelSignal(); +-} +-void login1dbusManager::changeUserUnLock() +-{ +- qDebug() <<__FILE__<<":"<<__LINE__<<","<<__FUNCTION__; +- if(!isLockFlag){ +- qDebug() << __FILE__<<":"<<__LINE__<<","<<__FUNCTION__ << "do nothing , and return!" << "isLockFlag:"<< isLockFlag; +- return; +- } +- isLockFlag = false; +- emit g_user_signal->saneRestartSignal(); +-} +diff --git a/src/utils/login1_dbus.h b/src/utils/login1_dbus.h +deleted file mode 100644 +index 001d13b..0000000 +--- a/src/utils/login1_dbus.h ++++ /dev/null +@@ -1,63 +0,0 @@ +-/* +-* Copyright (C) 2021, KylinSoft Co., Ltd. +-* +-* This program is free software; you can redistribute it and/or modify +-* it under the terms of the GNU General Public License as published by +-* the Free Software Foundation; either version 3, or (at your option) +-* any later version. +-* +-* This program is distributed in the hope that it will be useful, +-* but WITHOUT ANY WARRANTY; without even the implied warranty of +-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-* GNU General Public License for more details. +-* +-* You should have received a copy of the GNU General Public License +-* along with this program; if not, see <http://www.gnu.org/licenses/>. +-* +-*/ +- +-#ifndef __LOGIN1_DBUS_H__ +-#define __LOGIN1_DBUS_H__ +-#include <QtDBus/QDBusConnection> +-#include <QtDBus/QDBusConnectionInterface> +-#include <QtDBus/QDBusMessage> +-#include <QtDBus/QDBusReply> +-#include <QCoreApplication> +-#include <QDBusInterface> +-#include <QTime> +-#include <QDBusUnixFileDescriptor> +- +-enum INHIBIT_TYPE +-{ +- INHIBIT_SLEEP = 0, +- INHIBIT_SHUTDOWN = 1 +-}; +- +-class login1dbusManager: public QObject +-{ +- Q_OBJECT +-public: +- +- login1dbusManager(); +- bool inhibit(INHIBIT_TYPE type); +- void unInhibit(); +- ~login1dbusManager(); +-signals: +- void goingToSleep(bool); +- void shuttingDown(bool); +- void locking(); +- void changeUserLocking(bool); +-private slots: +- void changeUserLock(); +- void changeUserUnLock(); +- void login1PrepareForSleep(bool); +- void login1PrepareForShutdown(bool); +- void screenSaverLocked(); +- void logoutSig(); +- void screenSaverUnlocked(); +-private: +- bool isLockFlag = false; +- QDBusUnixFileDescriptor m_inhibitShutdownFD; +- QDBusUnixFileDescriptor m_inhibitSleepFD; +-}; +-#endif +diff --git a/src/utils/xatom-helper.cpp b/src/utils/xatom-helper.cpp +deleted file mode 100644 +index 180adca..0000000 +--- a/src/utils/xatom-helper.cpp ++++ /dev/null +@@ -1,209 +0,0 @@ +-/* +- * KWin Style UKUI +- * +- * Copyright (C) 2021, KylinSoft Co., Ltd. +- * +- * This program is free software: you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation, either version 3 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see <https://www.gnu.org/licenses/>. +- * +- * Authors: Yue Lan <lanyue@kylinos.cn> +- * +- */ +- +-#include "xatom-helper.h" +- +-#include <X11/Xlib.h> +- +-static XAtomHelper *global_instance = nullptr; +- +-XAtomHelper *XAtomHelper::getInstance() +-{ +- if (! global_instance) +- global_instance = new XAtomHelper; +- return global_instance; +-} +- +-bool XAtomHelper::isFrameLessWindow(int winId) +-{ +- auto hints = getInstance()->getWindowMotifHint(winId); +- if (hints.flags == MWM_HINTS_DECORATIONS && hints.functions == 1) { +- return true; +- } +- return false; +-} +- +-bool XAtomHelper::isWindowDecorateBorderOnly(int winId) +-{ +- return isWindowMotifHintDecorateBorderOnly(getInstance()->getWindowMotifHint(winId)); +-} +- +-bool XAtomHelper::isWindowMotifHintDecorateBorderOnly(const MotifWmHints &hint) +-{ +- bool isDeco = false; +- if (hint.flags & MWM_HINTS_DECORATIONS && hint.flags != MWM_HINTS_DECORATIONS) { +- if (hint.decorations == MWM_DECOR_BORDER) +- isDeco = true; +- } +- return isDeco; +-} +- +-bool XAtomHelper::isUKUICsdSupported() +-{ +- // fixme: +- return false; +-} +- +-bool XAtomHelper::isUKUIDecorationWindow(int winId) +-{ +- if (m_ukuiDecorationAtion == None) +- return false; +- +- unsigned long type; +- int format; +- ulong nitems; +- ulong bytes_after; +- uchar *data; +- +- bool isUKUIDecoration = false; +- +- XGetWindowProperty(QX11Info::display(), winId, m_ukuiDecorationAtion, +- 0, LONG_MAX, false, +- m_ukuiDecorationAtion, &type, +- &format, &nitems, +- &bytes_after, &data); +- +- if (type == m_ukuiDecorationAtion) { +- if (nitems == 1) { +- isUKUIDecoration = data[0]; +- } +- } +- +- return isUKUIDecoration; +-} +- +-UnityCorners XAtomHelper::getWindowBorderRadius(int winId) +-{ +- UnityCorners corners; +- +- Atom type; +- int format; +- ulong nitems; +- ulong bytes_after; +- uchar *data; +- +- if (m_unityBorderRadiusAtom != None) { +- XGetWindowProperty(QX11Info::display(), winId, m_unityBorderRadiusAtom, +- 0, LONG_MAX, false, +- XA_CARDINAL, &type, +- &format, &nitems, +- &bytes_after, &data); +- +- if (type == XA_CARDINAL) { +- if (nitems == 4) { +- corners.topLeft = static_cast<ulong>(data[0]); +- corners.topRight = static_cast<ulong>(data[1*sizeof (ulong)]); +- corners.bottomLeft = static_cast<ulong>(data[2*sizeof (ulong)]); +- corners.bottomRight = static_cast<ulong>(data[3*sizeof (ulong)]); +- } +- XFree(data); +- } +- } +- +- return corners; +-} +- +-void XAtomHelper::setWindowBorderRadius(int winId, const UnityCorners &data) +-{ +- if (m_unityBorderRadiusAtom == None) +- return; +- +- ulong corners[4] = {data.topLeft, data.topRight, data.bottomLeft, data.bottomRight}; +- +- XChangeProperty(QX11Info::display(), winId, m_unityBorderRadiusAtom, XA_CARDINAL, +- 32, XCB_PROP_MODE_REPLACE, (const unsigned char *) &corners, sizeof (corners)/sizeof (corners[0])); +-} +- +-void XAtomHelper::setWindowBorderRadius(int winId, int topLeft, int topRight, int bottomLeft, int bottomRight) +-{ +- if (m_unityBorderRadiusAtom == None) +- return; +- +- ulong corners[4] = {(ulong)topLeft, (ulong)topRight, (ulong)bottomLeft, (ulong)bottomRight}; +- +- XChangeProperty(QX11Info::display(), winId, m_unityBorderRadiusAtom, XA_CARDINAL, +- 32, XCB_PROP_MODE_REPLACE, (const unsigned char *) &corners, sizeof (corners)/sizeof (corners[0])); +-} +- +-void XAtomHelper::setUKUIDecoraiontHint(int winId, bool set) +-{ +- if (m_ukuiDecorationAtion == None) +- return; +- +- XChangeProperty(QX11Info::display(), winId, m_ukuiDecorationAtion, m_ukuiDecorationAtion, 32, XCB_PROP_MODE_REPLACE, (const unsigned char *) &set, 1); +-} +- +-void XAtomHelper::setWindowMotifHint(int winId, const MotifWmHints &hints) +-{ +- if (m_unityBorderRadiusAtom == None) +- return; +- +- XChangeProperty(QX11Info::display(), winId, m_motifWMHintsAtom, m_motifWMHintsAtom, +- 32, XCB_PROP_MODE_REPLACE, (const unsigned char *)&hints, sizeof (MotifWmHints)/ sizeof (ulong)); +-} +- +-MotifWmHints XAtomHelper::getWindowMotifHint(int winId) +-{ +- MotifWmHints hints; +- +- if (m_unityBorderRadiusAtom == None) +- return hints; +- +- uchar *data; +- Atom type; +- int format; +- ulong nitems; +- ulong bytes_after; +- +- XGetWindowProperty(QX11Info::display(), winId, m_motifWMHintsAtom, +- 0, sizeof (MotifWmHints)/sizeof (long), false, AnyPropertyType, &type, +- &format, &nitems, &bytes_after, &data); +- +- if (type == None) { +- return hints; +- } else { +- hints = *(MotifWmHints *)data; +- XFree(data); +- } +- return hints; +-} +- +-XAtomHelper::XAtomHelper(QObject *parent) : QObject(parent) +-{ +- if (!QX11Info::isPlatformX11()) +- return; +- +- m_motifWMHintsAtom = XInternAtom(QX11Info::display(), "_MOTIF_WM_HINTS", true); +- m_unityBorderRadiusAtom = XInternAtom(QX11Info::display(), "_UNITY_GTK_BORDER_RADIUS", false); +- m_ukuiDecorationAtion = XInternAtom(QX11Info::display(), "_KWIN_UKUI_DECORAION", false); +-} +- +-Atom XAtomHelper::registerUKUICsdNetWmSupportAtom() +-{ +- // fixme: +- return None; +-} +- +-void XAtomHelper::unregisterUKUICsdNetWmSupportAtom() +-{ +- // fixme: +-} +diff --git a/src/utils/xatom-helper.h b/src/utils/xatom-helper.h +deleted file mode 100644 +index bb51c13..0000000 +--- a/src/utils/xatom-helper.h ++++ /dev/null +@@ -1,114 +0,0 @@ +-/* +- * KWin Style UKUI +- * +- * Copyright (C) 2021, KylinSoft Co., Ltd. +- * +- * This program is free software: you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation, either version 3 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see <https://www.gnu.org/licenses/>. +- * +- * Authors: Yue Lan <lanyue@kylinos.cn> +- * +- */ +- +-#ifndef XATOMHELPER_H +-#define XATOMHELPER_H +- +-#include <QObject> +-#include <QX11Info> +- +-#include <limits.h> +-#include <NETWM> +-//#include <X11/X.h> +-#include <X11/Xatom.h> +- +-struct UnityCorners { +- ulong topLeft = 0; +- ulong topRight = 0; +- ulong bottomLeft = 0; +- ulong bottomRight = 0; +-}; +- +-typedef struct { +- ulong flags = 0; +- ulong functions = 0; +- ulong decorations = 0; +- long input_mode = 0; +- ulong status = 0; +-} MotifWmHints, MwmHints; +- +-#define MWM_HINTS_FUNCTIONS (1L << 0) +-#define MWM_HINTS_DECORATIONS (1L << 1) +-#define MWM_HINTS_INPUT_MODE (1L << 2) +-#define MWM_HINTS_STATUS (1L << 3) +- +-#define MWM_FUNC_ALL (1L << 0) +-#define MWM_FUNC_RESIZE (1L << 1) +-#define MWM_FUNC_MOVE (1L << 2) +-#define MWM_FUNC_MINIMIZE (1L << 3) +-#define MWM_FUNC_MAXIMIZE (1L << 4) +-#define MWM_FUNC_CLOSE (1L << 5) +- +-#define MWM_DECOR_ALL (1L << 0) +-#define MWM_DECOR_BORDER (1L << 1) +-#define MWM_DECOR_RESIZEH (1L << 2) +-#define MWM_DECOR_TITLE (1L << 3) +-#define MWM_DECOR_MENU (1L << 4) +-#define MWM_DECOR_MINIMIZE (1L << 5) +-#define MWM_DECOR_MAXIMIZE (1L << 6) +- +-#define MWM_INPUT_MODELESS 0 +-#define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1 +-#define MWM_INPUT_SYSTEM_MODAL 2 +-#define MWM_INPUT_FULL_APPLICATION_MODAL 3 +-#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL +- +-#define MWM_TEAROFF_WINDOW (1L<<0) +- +-namespace UKUI { +-class Decoration; +-} +- +-class XAtomHelper : public QObject +-{ +- friend class UKUI::Decoration; +- Q_OBJECT +-public: +- static XAtomHelper *getInstance(); +- +- static bool isFrameLessWindow(int winId); +- +- bool isWindowDecorateBorderOnly(int winId); +- bool isWindowMotifHintDecorateBorderOnly(const MotifWmHints &hint); +- bool isUKUICsdSupported(); +- bool isUKUIDecorationWindow(int winId); +- +- UnityCorners getWindowBorderRadius(int winId); +- void setWindowBorderRadius(int winId, const UnityCorners &data); +- void setWindowBorderRadius(int winId, int topLeft, int topRight, int bottomLeft, int bottomRight); +- void setUKUIDecoraiontHint(int winId, bool set = true); +- +- void setWindowMotifHint(int winId, const MotifWmHints &hints); +- MotifWmHints getWindowMotifHint(int winId); +- +-private: +- explicit XAtomHelper(QObject *parent = nullptr); +- +- unsigned long registerUKUICsdNetWmSupportAtom(); +- void unregisterUKUICsdNetWmSupportAtom(); +- +- unsigned long m_motifWMHintsAtom = 0; +- unsigned long m_unityBorderRadiusAtom = 0; +- unsigned long m_ukuiDecorationAtion = 0; +-}; +- +-#endif // XATOMHELPER_H +diff --git a/src/waittingdialog.cpp b/src/waittingdialog.cpp +index ef61bc6..923d7ce 100644 +--- a/src/waittingdialog.cpp ++++ b/src/waittingdialog.cpp +@@ -17,6 +17,8 @@ + */ + #include "waittingdialog.h" + #include "Qt/windowmanage.hpp" ++#include <windowmanager/windowmanager.h> ++#include <QDebug> + + WaittingDialog::WaittingDialog(QWidget *parent) + : QDialog(parent), +@@ -33,6 +35,8 @@ WaittingDialog::WaittingDialog(QWidget *parent) + initConnect(); + this->setWindowModality(Qt::ApplicationModal); + kabase::WindowManage::removeHeader(this); ++ setWindowTitle(tr("Scanner")); ++ + } + + void WaittingDialog::init() +@@ -50,7 +54,6 @@ void WaittingDialog::init() + m_closeButton->setProperty("useIconHighlightEffect", 0x8); + m_closeButton->setFlat(true); + +- m_titleHBoxLayout->setSpacing(0); + m_titleHBoxLayout->addStretch(); + m_titleHBoxLayout->addWidget(m_closeButton); + m_titleHBoxLayout->setContentsMargins(0, 4, 4, 4); +@@ -70,6 +73,7 @@ void WaittingDialog::init() + + this->setLayout(m_layout); + this->setFixedSize(450, 170); ++ m_progress->setFocus(); + } + + void WaittingDialog::initConnect() +diff --git a/src/watermarkdialog.cpp b/src/watermarkdialog.cpp +index 9a854d7..7f7712e 100644 +--- a/src/watermarkdialog.cpp ++++ b/src/watermarkdialog.cpp +@@ -32,6 +32,7 @@ WatermarkDialog::WatermarkDialog(QWidget *parent) : QDialog(parent) + { + m_themeData = new QGSettings(UKUI_THEME_GSETTING_PATH); + ++ installEventFilter(this); + initWindow(); + + initLayout(); +@@ -43,14 +44,14 @@ void WatermarkDialog::initWindow() + { + kabase::WindowManage::removeHeader(this); + +- setWindowTitle (tr("Scanner")); ++ setWindowTitle(tr("Scanner")); + setFixedSize(QSize(380, 176)); + } + + void WatermarkDialog::initLayout() + { + +- m_closeButton->setIcon (QIcon::fromTheme (ICON_THEME_CLOSE)); ++ m_closeButton->setIcon(QIcon::fromTheme(ICON_THEME_CLOSE)); + m_closeButton->setToolTip(tr("Close")); + m_closeButton->setFixedSize(30, 30); + m_closeButton->setIconSize (QSize(16, 16)); +@@ -102,12 +103,18 @@ void WatermarkDialog::initLayout() + m_mainVBoxLayout->setContentsMargins(0, 0, 0, 0); + + this->setLayout(m_mainVBoxLayout); ++ m_confirmButton->setDefault(true); ++ + } + + void WatermarkDialog::initConnect() + { +- connect(m_closeButton, &QPushButton::clicked, this, &WatermarkDialog::close); +- connect(m_cancelButton, &QPushButton::clicked, this, &WatermarkDialog::reject); ++ connect(m_closeButton, &QPushButton::clicked, [=](){ ++ this->close(); ++ }); ++ connect(m_cancelButton, &QPushButton::clicked, [=](){ ++ this->close(); ++ }); + connect(m_confirmButton, &QPushButton::clicked, this, &WatermarkDialog::confirmButtonClickedSlot); + connect(m_themeData, &QGSettings::changed, this, &WatermarkDialog::fontSizeChangedSlot); + +@@ -135,6 +142,19 @@ void WatermarkDialog::paintEvent(QPaintEvent *event) + p.end(); + } + ++void WatermarkDialog::keyPressEvent(QKeyEvent *event) ++{ ++ switch (event->key()) { ++ case Qt::Key_Enter: ++ case Qt::Key_Return: ++ m_confirmButton->click(); ++ break; ++ case Qt::Key_Escape: ++ m_cancelButton->click(); ++ break; ++ } ++} ++ + void WatermarkDialog::confirmButtonClickedSlot() + { + if (m_watermarkLineEdit->text() == "") { +diff --git a/src/watermarkdialog.h b/src/watermarkdialog.h +index ceeafa5..be37558 100644 +--- a/src/watermarkdialog.h ++++ b/src/watermarkdialog.h +@@ -36,9 +36,8 @@ + #include <QFileInfo> + #include <QFileIconProvider> + +-#include <ukui-log4qt.h> ++#include <QDebug> + #include <kpushbutton.h> +-#include "utils/xatom-helper.h" + #include "globalsignal.h" + #include "include/common.h" + #include "include/theme.h" +@@ -58,7 +57,7 @@ public: + + protected: + void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; +- ++ void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + public slots: + void confirmButtonClickedSlot(); + void fontSizeChangedSlot(); +diff --git a/translations/kylin-scanner_ar.qm b/translations/kylin-scanner_ar.qm +new file mode 100644 +index 0000000..de1e405 +--- /dev/null ++++ b/translations/kylin-scanner_ar.qm +@@ -0,0 +1,2 @@ ++<�d��!�`���B�����1����i��� �����������...���TitleBar��������$ ++�* +\ No newline at end of file +diff --git a/translations/kylin-scanner_bo_CN.qm b/translations/kylin-scanner_bo_CN.qm +index 8b4089f..d14e50a 100644 +--- a/translations/kylin-scanner_bo_CN.qm ++++ b/translations/kylin-scanner_bo_CN.qm +@@ -1,26 +1,35 @@ +-<�d��!�`���B��`��D��;��E��h��1��/H��E���_��E������E������S���4���_���*�����T��������`��4J����/��֍��01���������#���0��0^�H5��$��H5��>c�����&�����(���e��)���s��+��%������,D���<��G����/n�H,�����H,�����H,���=��J6��� ��J6���|�J6�����J6���,�J6���/��J6���;��Jcb����Jcb�� /�PFE��1��V}���$��Z�|�� +-7�Z�|��>�]����7�aҤ�� +-������� �f&���6x$^�����3��"+�u0��0���"����������#�J����>�d�.�������$&�ki��1�ki��b�ki������&(2kY���2kY���2kY���ky���!��kY���kY��$�kY��H�����4�I��� ��I���@�I�����I���+��I���-M�I���;��6��� e�ϕ��!v��W�����JH���JH����JH��&֓���#x"����2h)���2h)���2h)�� 2kY��62kY��X@�b��4|g�^��2-�����5L�n��*=�N%����N%��(h�^��9�F���=la���5�2kY���2kY���9$���%�[����������^����8o2h9��g2h9���2h9���L����l����)��6���Έ���Έ�����`����M����0M����mT����+Er���)?�����������������4�ʶ���2��F5��0� #?���,� 2kY��� 2kY��. `3���(� �t���&� �v���'& �T��� � �T��� � �T���� �T���'v �T���,� �T���3 �T���<N ����3� +-d����,U +-d����< ++<�d��!�`���B�����D��)x��E��)���[�����[��8���[��T���1��:]��E������E���!���E���)���G���Kc��S���@���\���YC��_���4��h��� ++���������������`��@2����;�֍��;F���������-���0��;s�H5��.��H5��S,�L���S`�����0�����2l��e��4���e��Y��s��6j�,D���J�G����:��H,���>�H,���K��I�~����I����>��J6���s�J6�����J6���$��J6���6��J6���:��J6���G��J6���IN�J6���LU�Jcb����Jcb��*0�PFE��<��V}���.��Z�|����Z�|��M��]����_�aҤ����f�~���������N<��\n�� �������*� �J��M5f&���A�x$^�� �z�.��M���3��,,�u0��%U0���,�����8����-�J����\Bd�.�������.'�ki��n�ki��!��ki��)?����0)����L�2kY���2kY���2kY��( ++ky���+��kY��B�kY�� a�kY��(������?��օ��K��I���r�I���8�I���}�I���$�I���6��I���8.�I���I�I���L�6���*f�ϕ��+w��W�� �JH����JH��)�JH��"c������֓���-y"����2h)��2h)�� *2h)��(F2kY��s2kY�� �@�b��@dg�^��=BuJ>�����^��WM�����A4�n��5�N%����N%��2+�^��E��9\��U�F���J�a���A�2kY���2kY��!�9$���/�@Kb��d����������������DW��^��b��n�������3���.��V(2h9���2h9�� �2h9��(�L����l����3Mp�>��G�Z���T��6����Έ���Έ���#�`���M����mM����"�T����6&r���3�����������"&�����@�ʨ����ʶ���=��F5��;��m��� #?���7� 2kY��= 2kY��!k ?�T��L� JV���Y� `3���2� �t���0� �v���1' �T���� �T���%� �T���7� �T���> �T���G� �T���I� �T���U? ����?v ++d����76 ++d����I� + eK����� +-�U���3� +-����%0 +-�e��5� +-� ���0�O~��*�2h���2h���2h���E�9��(ʫ�������<����R1d��2r;e���;e���;e��$�vx���.��������N�� ��� (���� (����� (����f (���� (����"� c�^��9 oEK��;) �7T��35 ����� ����.'����g�����.��-�)�E��'�e�� +-�f۾��Vf۾��.���n��6Xi��?A���f^rVVdzba|V�Qc^rVQT�QZQczSV�fSff�tBb|Bf �������Detect scanners, please waiting���DetectPageWidget���"f��zcXPtQV�zQT�������Connect���FailedPageWidget���B�zDf��|X �������Dialog���KYCAboutDialog����`V�zcXPtQVdzbFfc^rVVdzbV�zQb|Bf � ^rVVdzbB�rXPzVBEtfVb��VSf^rVVdzbV�zQ`B|ZtBf �������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget���:Vdb`VzVfFfBfbT`V�zca|Q �������!A new Scanner has been connected.��� ++t�.��HF ++�U���?� ++����/1 ++�e��A� ++� ���< O~��5�/����R�2h�� 2h��!42h��)�E�9��1�E�9��U�����JPƞ��&���#�1d��=�;e���;e��% ;e��.�vx���9�x������N�� (���& (����� (����o (����#U (����,� c�^��D� oEK��H� ��/��S� �7T��>J ���� ����91'����g����$I�.��8r)�E��1we��gf۾�� zf۾��9���n��B@i��\����f^rVVdzba|V�Qc^rVQT�QZQczSV�fSff�tBb|Bf �������Detect scanners, please waiting���DetectPageWidget���"f��zcXPtQV�zQT�������Connect���FailedPageWidget���TVzQf��|QF|BT`rVdb`VzVff��rBFfXzQ �������No available scan devices���FailedPageWidget���NarBF@�|BXrPtVTf Vf��bQtVf��bQt�������"Unable to read text, please retrey���ImageOperationOCR���B�zDf��|X �������Dialog���KYCAboutDialog����`V�zcXPtQVdzbFfc^rVVdzbV�zQb|Bf � ^rVVdzbB�rXPzVBEtfVb��VSf^rVVdzbV�zQ`B|ZtBf �������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����Vdb`VzVfFf^rVVdzbXV�fTf Vdb`VzVfFfBfbV^rBVf�bSff��rBFfBfbQtVf��tbV`rbz`tXrBV�zQ �������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���:Vdb`VzVfFfBfbT`V�zca|Q �������!A new Scanner has been connected.��� + MainWidget���IzS_|S�������Alert��� ++MainWidget���XzQTbV_|V �������Cancel��� + MainWidget����f��rBFfV�zcVFzVfA�zQ@�rff�tBT`XaDSB^ST`rVdzbFfVb�zb|Bf �������2Device busy, please wait or switch other scanners.��� + MainWidget����arBF`rSDSfarBF`Q|Sf��|QV�zQXASB�rfarBFV^BSfaDVf��b^rVVdzbBSDb|Bf �������EDocument feeder out of documents, please place papers and scan again.��� + MainWidget����StfTXzQT`rf��tVV�zQcb�|QB�zDVb�zV`XaDSVdzbFfB^SQBVb�zb|Bf �������CInvalid argument, please change arguments or switch other scanners.��� ++MainWidget���a|DD �������Ok��� ++MainWidget���*Vf��bQt`B|`[tBfT �������Restart��� + MainWidget���0b��tBT`rX[zff�tB� �.�.�.�������Running beauty ...��� + MainWidget���,`A|bf��|QQBPzb� �.�.�.�������Running rectify ...��� ++MainWidget���jVdb`VzVfUXf|D P|SAtDf@�rc�f��|QQDczSXV�f �������0Scan failed, Access to resource has been denied.��� ++MainWidget���RVdb`VzVfUXf|D arBFf��zcFf`BB`QtB�������$Scan failed, Document fedder jammed.��� ++MainWidget���zVdb`VzVfUXf|D f��rBFf�I�/�OarB|brXA�|QS|b`A�tcV�tD �������%Scan failed, Error during device I/O.��� ++MainWidget���DVdb`VzVfUXf|D SDBf|BXr`QD �������Scan failed, Out of memory.��� ++MainWidget���nVdb`VzVfUXf|D Vdb`VzVf`U�tcFf@�rAczVU�z`QtB�������#Scan failed, Scanner cover is open.��� ++MainWidget���dVdb`VzVfUXf|D V@|cf��|Qcb��Vf��|bXrV�zQ �������(Scan failed, operation is not supported.��� + MainWidget���Vdb`VzVfUXTf A�zQ@�rVdb`VzVfa|FffXaDSB^ST`rVdb`VzVfa|FfVb�zb|Bf � BcOzXtXPtQQtVdb`VzVfFfV@|cQB|fS `QzXV�DXSSQB|f BfbVf��tbbz`tXrBBrfaDVf��bf��rBFfV@|cQB|f ��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� + MainWidget���L^rVVdzbB�rV�f��|QXzQTbV_|f_rS �������"Scan operation has been cancelled.��� +-MainWidget���VdzbFf �������Scanner��� +-MainWidget���U�rb`PzS �������Cancel���NoMailDialog���f�|b��BT �������Close���NoMailDialog���$f��rBf��|bV�zQT�������Install���NoMailDialog���<B�|Bb�tcarB_XB�rXDBfVE|c�������No email client���NoMailDialog����XcBSDQtB�|Bb�tcarB_XB�rXDBfVE|cV�zQXASXb�zQS � f�|ScB�|Bb�tcarB_XB�r�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� B|IrfF|Q������� +-ADF Duplex���QApplication���bD`BtcES �������Auto���QApplication���czVb�X �������Flatbed���QApplication���f�XD �������Multiple���QApplication���zBfbf��tbbz`tXrB� b��cA`rF`U�rSBfbQtBO|QTbf�tBb|Bf �������CRefreshing list. Please wait for the refresh success information...���QApplication���Vdb`VzVfFf�������Scanner���QApplication���RVdb`VzVfFf@�rf^rVVdzbV�zQV^rSa|Q �������Scanner is on detecting...���QApplication���Azbb��D �������Single���QApplication���f��|QXAS ������� User���QObject���tXIzSFf`QrV@|cf��|QV�zQV^rSa|Q AU�zSf�|b��BDzf �������3 has already opened kylin-scanner, open will close ���QObject����f��|QXASB�rfQc�V@|cf��|QV�zQV^rSa|QTfXtXPtQQtV�zQQX ������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject���4QXDfBY|`rXS`XPtSZ|BfT�������ADF���QObject����A�D�FU�rbc|B�������ADF Back���QObject����A�D�F� B|IrfF|Q������� +-ADF Duplex���QObject���0�A�D�F� `PVU�|BfBErBB�tb ������� ADF Front���QObject���bD`Btc �������Auto���QObject���AXQ|B�������Color���QObject���XrBf�b �������Current ���QObject���(AFQQD`BcV`rbrBf�������Default Type���QObject���czVb�X �������Flatbed���QObject���f��ZQ �������Gray���QObject���"f��tb�cPrBbrf �������Lineart���QObject���BSQQ|S �������Question���QObject���U�rb`PzS �������Cancel��� RunningDialog���f�|b��BT �������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� ++MainWidget���XcBBIrQT�/BIrQT`r^rVVdzbV�f � Vdb`VzVf`U�tcFfb��tSc�SQtV@|cf��|QV�zQTbABPzBV�zQFzQ aDVf��bf�|U�zSfVdb`VzVf`U�tcFf@�rIzbf��|QB|brXaDVf��bf�|U�zb|Bf � BcOzA�|Q@�rfXtXPtQQtVdb`VzVfV�fT`r`Q�brfV@|cf��|QV�zQ`Q|QS XzQTbV_|QB|fX|Q `|S@�DVdb`VzVf`V�zca|Q@�rV�zQStfV@B`B|BV�fSfaDVf��bf�|U�zb�zfStfTP|Sf�rQ ������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� ++MainWidget���FVdb`VzVf`U�tcFf^rVVdzbXV�zQ �������Scanner not detected���NoDeviceWidget���U�rb`PzS �������Cancel���NoMailDialog���f�|b��BT �������Close���NoMailDialog���$f��rBf��|bV�zQT�������Install���NoMailDialog���<B�|Bb�tcarB_XB�rXDBfVE|c�������No email client���NoMailDialog����XcBSDQtB�|Bb�tcarB_XB�rXDBfVE|cV�zQXASXb�zQS � f�|ScB�|Bb�tcarB_XB�r�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� B|IrfF|Q������� ++ADF Duplex���QApplication���bD`BtcES �������Auto���QApplication���FVdb`VzVf`U�tcFf@�rAU�zXPtV �������Fail to open the scanner���QApplication���czVb�X �������Flatbed���QApplication���f�XD �������Multiple���QApplication���zBfbf��tbbz`tXrB� b��cA`rF`U�rSBfbQtBO|QTbf�tBb|Bf �������CRefreshing list. Please wait for the refresh success information...���QApplication���Vdb`VzVfFf�������Scanner���QApplication���RVdb`VzVfFf@�rf^rVVdzbV�zQV^rSa|Q �������Scanner is on detecting...���QApplication���Azbb��D �������Single���QApplication����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject���4QXDfBY|`rXS`XPtSZ|BfT�������ADF���QObject����A�D�FU�rbc|B�������ADF Back���QObject����A�D�F� B|IrfF|Q������� ++ADF Duplex���QObject���0�A�D�F� `PVU�|BfBErBB�tb ������� ADF Front���QObject���bD`Btc �������Auto���QObject���AXQ|B�������Color���QObject���(AFQQD`BcV`rbrBf�������Default Type���QObject���czVb�X �������Flatbed���QObject���f��ZQ �������Gray���QObject���<f��rBf��|bQtfZ|QcfVb�cV �������Install timeout.���QObject���"f��tb�cPrBbrf �������Lineart���QObject���U�rb`PzS �������Cancel��� RunningDialog���f�|b��BT �������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� + SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� + SaneObject����1�5�0� �d�p�i�������150 dpi��� + SaneObject����2�0�0� �d�p�i�������200 dpi��� +@@ -43,12 +52,14 @@ ScanDialog���f + ScanDialog���f�XD �������Multiple��� + ScanDialog���Z^rVVdzbV�fT`rd|BD|f@�rB�Df@BdXBfc � �������Number of pages scanning: ��� + ScanDialog���VdzbFf �������Scanner��� +-ScanDialog��,Qc�BSfa|QTbzQ QzV@VQB|ffX � BcOzA�zQ@�rfd|BD|fXDV|bV�Vf`VzVfcBVf�bV�zQV^rSa|QS UcFzbarBFXDT|^rBcV@Vf�rQ � fzXfFtDV�|f �������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget���4QXDfBY|`rXS`XPtSZ|BfT�������ADF���ScanSettingsWidget���IzS_|S�������Alert���ScanSettingsWidget��� ++ScanDialog��,Qc�BSfa|QTbzQ QzV@VQB|ffX � BcOzA�zQ@�rfd|BD|fXDV|bV�Vf`VzVfcBVf�bV�zQV^rSa|QS UcFzbarBFXDT|^rBcV@Vf�rQ � fzXfFtDV�|f �������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget���4QXDfBY|`rXS`XPtSZ|BfT�������ADF���ScanSettingsWidget��� + AQ|B�������Color���ScanSettingsWidget��� + AQ|B�������Colour���ScanSettingsWidget���~XrBf�bf��|QXASB�rfQ@bFBcV_|VE|fb��BT`rF|BXFSXzQ � �������5Currently user has no permission to modify directory ���ScanSettingsWidget���f��rBFf �������Device���ScanSettingsWidget���0arBF`r`B�|cXBSfXzQ �������File path that does not exist: ���ScanSettingsWidget���&arBF`rf��rBV@|Q ������� File settings���ScanSettingsWidget���D|fXIXT �������Flatbed���ScanSettingsWidget���^D|fczVVdb`VzVfPzDfXDcb��Vf��|bXrV�zQ �������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���b�XB^B�������Format���ScanSettingsWidget���f��V| �������Gray���ScanSettingsWidget���cXPrB�������Lineart���ScanSettingsWidget���.f��BP|BSfVf�tbb��t �������Mail to���ScanSettingsWidget���f�XD �������Multiple���ScanSettingsWidget��� + XrD �������Name���ScanSettingsWidget���d|BD|f �������Pages���ScanSettingsWidget���rVQXfT`rPVfcXA�zQbDc`ZXf`Q�rV�zQT`rQVDZQXzQ �������Path without access rights: ���ScanSettingsWidget���B�|fF|Q ������� +-Resolution���ScanSettingsWidget���6B�|fF|QSrf�|DT^rBbzQ �������Resolution is empty!���ScanSettingsWidget���&B�|SFtDV�zQQB|f �������Save���ScanSettingsWidget���B^SIb�������Save As���ScanSettingsWidget���"B�|SFtDV�b��t �������Save as���ScanSettingsWidget���VdzbFf �������Scanner���ScanSettingsWidget���"VdzbFff��rBFf �������Scanner device���ScanSettingsWidget���$Q@bFBErBVQXfT �������Select a directory���ScanSettingsWidget���Azbb��D �������Single���ScanSettingsWidget���FzFtD �������Size���ScanSettingsWidget���*Vdb`VzVfXB|Vb�Xf ������� ++Resolution���ScanSettingsWidget���6B�|fF|QSrf�|DT^rBbzQ �������Resolution is empty!���ScanSettingsWidget���&B�|SFtDV�zQQB|f �������Save���ScanSettingsWidget���B^SIb�������Save As���ScanSettingsWidget���"B�|SFtDV�b��t �������Save as���ScanSettingsWidget���"VdzbFff��rBFf �������Scanner device���ScanSettingsWidget���$Q@bFBErBVQXfT �������Select a directory���ScanSettingsWidget���Azbb��D �������Single���ScanSettingsWidget���FzFtD �������Size���ScanSettingsWidget���*Vdb`VzVfXB|Vb�Xf ������� + Start Scan���ScanSettingsWidget���Bf|BIbarBz������� +-Store text���ScanSettingsWidget���arBF � ������� The file ���ScanSettingsWidget���brBfQV�rVf�������Type���ScanSettingsWidget���bzQ �������Yes���ScanSettingsWidget���4�'�/�'arBdrf@`QtfXrbtD �������cannot contain '/' character.���ScanSettingsWidget���Nf�ff�tDV�fT`rarBFc�bIbZBfV�zQ�������cannot save as hidden file.���ScanSettingsWidget���VdzbFf�0�1������� scanner01���ScanSettingsWidget���&Bfc`QzVfV�zQPVf �������tips���ScanSettingsWidget���U�rb`PzS �������Cancel���SendMailDialog���f�|b��BT �������Close���SendMailDialog���"BOS`AzcV�QB|f �������Confirm���SendMailDialog���VdzbFf �������Scanner���SendMailDialog���<B�|Bb�tcarB_XB�rXDBfVE|c�������Select email client���SendMailDialog���XzQTbV_|V�������Cancel���ShowImageWidget���JXrQB|fTV_|V O|BYXf�tBBSDb|Bf �������Canceling...Please waiting...���ShowImageWidget���0b��tBT`rX[zff�tB� �.�.�.�������Running beauty ...���ShowImageWidget���,`A|bf��|QQBPzb� �.�.�.�������Running rectify ...���ShowImageWidget���<�&U�rb`PzSV�zQTbf��|VQB|f ������� +-&Save Exit���TitleBar����.�.�.�������...���TitleBar���&`V�zca|Q@�rf�|b �������About���TitleBar���f�|b��BT �������Close���TitleBar���"U�rb`PzSV�zQT �������Exit���TitleBar���b�XT �������Form���TitleBar���b|BfbXV�zQT �������Help���TitleBar���2ZQB^rXP|d|f@�rf�|Sf�������Maximize���TitleBar������������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���6ItDQtBO|DBDPtVV�QB|f �������Minimize���TitleBar���"Vfc`QzXf@�rQVD�������Option���TitleBar���$Bfbf��tbbz`tXrB�������Refresh List���TitleBar���f�bBf|V�zQT �������Restore���TitleBar���VdzbFf �������Scanner���TitleBar���.PQ@bU�rb`PzSV�zQT �������Straight &Exit���TitleBar���TbB^r ������� Version: ���TitleBar���(FrcrSVdb`VzVfFf������� kylin-scanner���TitleBar���X[zfT �������Beauty��� ToolBarWidget���c|O|B�������Crop��� ToolBarWidget���Xzc|D �������Mirror��� ToolBarWidget���h|frA�tcra �������OCR��� ToolBarWidget���,QBPzba|Vf�DV�zQT �������Rectify��� ToolBarWidget���$`A|bf��|QV�zQT �������Rotate��� ToolBarWidget���Ftb�Bf ������� Watermark��� ToolBarWidget���FzbtBO|DV �������ZoomIn��� ToolBarWidget���FzbtBO|DV �������ZoomOut��� ToolBarWidget��dVdb`VzVfFf@�r`V�zcPBVEQ_rS � BcOz`V�zcXPtQV�fS Vdb`VzVfFf@�rfVdb`VzVfV�zQV^rSa|QTf Vdb`VzVfXzQTbV_|V`XVdb`VzVfFf@�rff�S^tS|b`A�tcEScf�tBb|Bf ��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���ZVdb`VzVfFfBfbT_rS`V�zcXPtQV�fTbzQ �������New Scanner has been Connected.���UsbHotplugThread����Vdb`VzVfFf@�rf��rBFf`Z|cV^rSa|Q � A�zQbDBrff�tBb|BfBSD �������+Querying scanner device. Please waitting...���UsbHotplugThread����Vdb`VzVfFf@�r`V�zcPBVEQTfVdb`VzVfFf@�rbz`tXrBBfb`Q|SV�zQV^rSa|Q � A�zQbDBrff�tBb|BfBSD �������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���*Ftb�BfAf�|SV�zQT������� Add watermark���WatermarkDialog���U�rb`PzS �������Cancel���WatermarkDialog���f�|b��BT �������Close���WatermarkDialog���"BOS`AzcV�QB|f �������Confirm���WatermarkDialog���VdzbFf �������Scanner���WatermarkDialog���arBF`rXrD �������Filename���main���vf�ff�tDV�fSf^rVVdzbV�zQT`rf��rBFf@�rf��rBFfFtD�������Hide scan settings widget���main���>AU�zV`rarBF �<arBF`rXrD �>�������Open file <filename>���main���IzS_|S�������Alert���newDeviceListPage���$f��rBf��|bV�zQT�������Install���newDeviceListPage��� +-XrD �������Name���newDeviceListPage���\arBFQzSrBdrf@bD|f`[rSV�zQT`rA�|QQt�������,The document is in character recognition ...��� showOcrWidget +\ No newline at end of file ++Store text���ScanSettingsWidget���arBF � ������� The file ���ScanSettingsWidget����QV�z`V�zQZQ`QrcQtfatSbrDT|^rBQB|fSVdb`VzVfV�zQQB|f B_VSSB�rf`QzXfb|Bf �������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���brBfQV�rVf�������Type���ScanSettingsWidget���bzQ �������Yes���ScanSettingsWidget���4�'�/�'arBdrf@`QtfXrbtD �������cannot contain '/' character.���ScanSettingsWidget���Nf�ff�tDV�fT`rarBFc�bIbZBfV�zQ�������cannot save as hidden file.���ScanSettingsWidget���VdzbFf�0�1������� scanner01���ScanSettingsWidget���&Bfc`QzVfV�zQPVf �������tips���ScanSettingsWidget���U�rb`PzS �������Cancel���SendMailDialog���f�|b��BT �������Close���SendMailDialog���"BOS`AzcV�QB|f �������Confirm���SendMailDialog���VdzbFf �������Scanner���SendMailDialog���<B�|Bb�tcarB_XB�rXDBfVE|c�������Select email client���SendMailDialog���XzQTbV_|V�������Cancel���ShowImageWidget���JXrQB|fTV_|V O|BYXf�tBBSDb|Bf �������Canceling...Please waiting...���ShowImageWidget���a|DD �������Ok���ShowImageWidget���0b��tBT`rX[zff�tB� �.�.�.�������Running beauty ...���ShowImageWidget���,`A|bf��|QQBPzb� �.�.�.�������Running rectify ...���ShowImageWidget���<�&U�rb`PzSV�zQTbf��|VQB|f ������� ++&Save Exit���TitleBar����.�.�.�������...���TitleBar���&`V�zca|Q@�rf�|b �������About���TitleBar���f�|b��BT �������Close���TitleBar���"U�rb`PzSV�zQT �������Exit���TitleBar���b�XT �������Form���TitleBar���b|BfbXV�zQT �������Help���TitleBar���2ZQB^rXP|d|f@�rf�|Sf�������Maximize���TitleBar������������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���6ItDQtBO|DBDPtVV�QB|f �������Minimize���TitleBar���"Vfc`QzXf@�rQVD�������Option���TitleBar���$Bfbf��tbbz`tXrB�������Refresh List���TitleBar���f�bBf|V�zQT �������Restore���TitleBar���VdzbFf �������Scanner���TitleBar���.PQ@bU�rb`PzSV�zQT �������Straight &Exit���TitleBar����XrBf�`rarBFIbZBfV�fXzQ � A�|Q@�rfQzIbZBfV�zQ`Q|QQX �������6The current file is not saved. Do you want to save it?���TitleBar���TbB^r ������� Version: ���TitleBar���(FrcrSVdb`VzVfFf������� kylin-scanner���TitleBar���X[zfT �������Beauty��� ToolBarWidget���c|O|B�������Crop��� ToolBarWidget���Xzc|D �������Mirror��� ToolBarWidget���h|frA�tcra �������OCR��� ToolBarWidget���,QBPzba|Vf�DV�zQT �������Rectify��� ToolBarWidget���$`A|bf��|QV�zQT �������Rotate��� ToolBarWidget���Ftb�Bf ������� Watermark��� ToolBarWidget���FzbtBO|DV �������ZoomIn��� ToolBarWidget���FzbtBO|DV �������ZoomOut��� ToolBarWidget��dVdb`VzVfFf@�r`V�zcPBVEQ_rS � BcOz`V�zcXPtQV�fS Vdb`VzVfFf@�rfVdb`VzVfV�zQV^rSa|QTf Vdb`VzVfXzQTbV_|V`XVdb`VzVfFf@�rff�S^tS|b`A�tcEScf�tBb|Bf ��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���ZVdb`VzVfFfBfbT_rS`V�zcXPtQV�fTbzQ �������New Scanner has been Connected.���UsbHotplugThread����Vdb`VzVfFf@�rf��rBFf`Z|cV^rSa|Q � A�zQbDBrff�tBb|BfBSD �������+Querying scanner device. Please waitting...���UsbHotplugThread����Vdb`VzVfFf@�r`V�zcPBVEQTfVdb`VzVfFf@�rbz`tXrBBfb`Q|SV�zQV^rSa|Q � A�zQbDBrff�tBb|BfBSD �������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���pVdb`VzVf`U�tcFf@�rbz`tXrBBfbV_|czBfB�tVV�tD �������Scanner list refresh complete.���UsbHotplugThread��� ++IzV�������Close���WaittingDialog���&Vdb`VzVf`U�tcFf�������Scanner���WaittingDialog���4Vdb`VzVf`U�tcFf`Z|cV �������Searching for scanner...���WaittingDialog���*Ftb�BfAf�|SV�zQT������� Add watermark���WatermarkDialog���U�rb`PzS �������Cancel���WatermarkDialog���f�|b��BT �������Close���WatermarkDialog���"BOS`AzcV�QB|f �������Confirm���WatermarkDialog���VdzbFf �������Scanner���WatermarkDialog���arBF`rXrD �������Filename���main���vf�ff�tDV�fSf^rVVdzbV�zQT`rf��rBFf@�rf��rBFfFtD�������Hide scan settings widget���main���>AU�zV`rarBF �<arBF`rXrD �>�������Open file <filename>���main���f�|ST �������Add���newDeviceListPage���IzS_|S�������Alert���newDeviceListPage���f�|Sc �������Before���newDeviceListPage���XzQTbV_|V �������Cancel���newDeviceListPage��� ++IzV�������Close���newDeviceListPage���$f��rBFfbz`tXrB�������Device List���newDeviceListPage���$f��rBFf@�rXrD �������Device Name:���newDeviceListPage���"f�tcFf@�rXrD �������Driver Name:���newDeviceListPage���$f��rBf��|bV�zQT�������Install���newDeviceListPage���(f��rBf��|bUXf|D �������Installation failed.���newDeviceListPage��f��rBf��|bczBf`B�tVV�tD � A�|Q@�rfQc�Vdb`VzVfFf`QrV@|c`Q|QQX � VzQf��|QXSSS�u�d�e�v�(Q|QXT`rBfDB�DfQB|fT�)Vf��bQtV@|Qf��rBV�fSfVdb`VzVfIzbf��|QB|brXVf��bQtf�|U�zSff��rBFf@�rbz`tXrBBfbQtVf��tb � BcOzA�|Q@�rff�bV^rSXtXPtQQtVdb`VzVfV�fT`r`Q�brfV@|cf��|QV�zQ`Q|QS A�|Q@�rfcBf�tcVf��bQtf�|U�zQB|fTX_QVdb`VzVfV�zQStfV@|cQB|f ������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���Df�tcf�tcB|brXf��rBf��|bV�zQ �������Installing driver...���newDeviceListPage��� ++XrD �������Name���newDeviceListPage���b�zfX �������Next���newDeviceListPage����V@|cf��|QV�zQF|BT`rf�tcf�tcB|brXXzQ A�|Q@�rfcBf�tcf�tcf�tcB|brXf�|S`Q|QQX �������:No available drivers, do you want to manually add drivers?���newDeviceListPage���a|DD �������Ok���newDeviceListPage���(Tb`QzVf`U�tc`A|b�������Printer���newDeviceListPage���&Vdb`VzVf`U�tcFf�������Scanner���newDeviceListPage���Q@bFB`QzXfT �������Select a directory���newDeviceListPage���b�Bfb�Bf �������Symbol���newDeviceListPage����f�tcf�tcV�zQf�|`QrU�|BfBftXTSfa|DVarSTf ZQ`GcXrPtVT`rXGtB`V�f`B``V�tDf�rQ �������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage��f�tcf�tc`QrV_|B��arfXA|`Q|SV�fTarS � f��rBFf@�rQzQDXPtST`rV_|f��tSZ|DTQD`V�zcVV�fSff�tcf�tcB|brXP|Vb|Bf ��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���brBfQV�z �������Type���newDeviceListPage���VzQf��|Q �������Use���newDeviceListPage���A�zQbDBrcBf�tcB�rfbz`tXrBSDBrTb`QzVf`U�tcFf@�rf��rBFfVdb`VzVfQDTb`QzVf@�ra|Dfb�|Bf`U�tcFfarSXrSBOS`AzcV�zQQB|f � BcOzQzQBVdb`VzVfQDTb`QzVf@�ra|Dfb�|Bf`U�tcFfXrSS QzQBf�DXzQQt`G|BQB|f ��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���\arBFQzSrBdrf@bD|f`[rSV�zQT`rA�|QQt�������,The document is in character recognition ...��� showOcrWidget +\ No newline at end of file +diff --git a/translations/kylin-scanner_bo_CN.ts b/translations/kylin-scanner_bo_CN.ts +index a18a26f..b6cd037 100644 +--- a/translations/kylin-scanner_bo_CN.ts ++++ b/translations/kylin-scanner_bo_CN.ts +@@ -30,10 +30,6 @@ + <source>Detect scanners, please waiting</source> + <translation>ཞིབ་བཤེར་ཡོ་བྱད་ལ་ཞིབ་དཔྱད་ཚད་ལེན་བྱས་ནས་སྒུག་རོགས།</translation> + </message> +- <message> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> + </context> + <context> + <name>FailedPageWidget</name> +@@ -47,7 +43,7 @@ + </message> + <message> + <source>No available scan devices</source> +- <translation type="unfinished"></translation> ++ <translation>བེད་སྤྱོད་ཆོག་པའི་བཤར་འབེབས་སྒྲིག་ཆས་མེད་།</translation> + </message> + </context> + <context> +@@ -58,7 +54,7 @@ + </message> + <message> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>ཡིག་ཆ་ཀློག་མི་ཐུབ་པས།བསྐྱར་དུ་བསྐྱར་དུ་</translation> + </message> + </context> + <context> +@@ -418,7 +414,7 @@ + </message> + <message> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཆས་ཞིབ་བཤེར་མ་བྱས་པས།བཤར་འབེབས་ཆས་གསར་བ་ཞིག་བསྒར་ནས་སྒྲིག་ཆས་གསར་དུ་བསྒྱུར་བའི་རེའུ་མིག་བྱེད།</translation> + </message> + </context> + <context> +@@ -429,7 +425,7 @@ + </message> + <message> + <source>Scanner</source> +- <translation>བཤེར་ཆས།</translation> ++ <translation type="vanished">བཤེར་ཆས།</translation> + </message> + <message> + <source>Yes</source> +@@ -501,50 +497,50 @@ + </message> + <message> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>ཡོང་ང་།</translation> + </message> + <message> + <source>Scan failed, operation is not supported.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།བཀོལ་སྤྱོད་ལ་རྒྱབ་སྐྱོར་མི་བྱེད།</translation> + </message> + <message> + <source>Scan failed, Document fedder jammed.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།ཡིག་ཆ་སྐྱེལ་ཆས་འགག་འདུག</translation> + </message> + <message> + <source>Scan failed, Error during device I/O.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།སྒྲིག་ཆས་I/Oཡི་གོ་རིམ་ཁྲོད་ནོར་འཁྲུལ་བྱུང་།</translation> + </message> + <message> + <source>Scan failed, Out of memory.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།ནང་གསོག་མི་འདང་།</translation> + </message> + <message> + <source>Scan failed, Access to resource has been denied.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།ཐོན་ཁུངས་ཀྱི་ལྟ་སྤྱོད་དང་ལེན་མ་བྱས།</translation> + </message> + <message> + <source>Scan failed, Scanner cover is open.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་ཕམ་སོང་།བཤར་འབེབས་འཕྲུལ་ཆས་ཀྱི་ཁ་ལེབ་ཕྱེ་འདུག</translation> + </message> + <message> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation type="unfinished"></translation> ++ <translation>མ་ལག་གཉིད་པ/གཉིད་པའི་ཞིབ་བཤེར་བྱས། བཤར་འབེབས་འཕྲུལ་ཆས་རྒྱུན་ལྡན་དུ་བཀོལ་སྤྱོད་བྱེད་པར་ཁག་ཐེག་བྱེད་ཆེད།ཡང་བསྐྱར་སྒོ་ཕྱེ་ནས་བཤར་འབེབས་འཕྲུལ་ཆས་ཀྱི་ཉེར་སྤྱོད་གོ་རིམ་ཡང་བསྐྱར་སྒོ་ཕྱེ་རོགས། གལ་ཏེ་ཁྱོད་ཀྱིས་མུ་མཐུད་དུ་བཤར་འབེབས་བྱས་པའི་འདྲ་རིས་བཀོལ་སྤྱོད་བྱེད་འདོད་ན།མེད་པར་བཟོ་དགོས་མོད།འོན་ཀྱང་བཤར་འབེབས་འབྲེལ་ཡོད་ཀྱི་བྱེད་ནུས་བཀག་འགོག་བྱས་ནས་ཡང་བསྐྱར་སྒོ་ཕྱེ་རྗེས་ནུས་པ་ཐོན་སྲིད།</translation> + </message> + <message> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>མེད་པར་བཟོ་བ།</translation> + </message> + <message> + <source>Restart</source> +- <translation type="unfinished"></translation> ++ <translation>བསྐྱར་དུ་འགོ་འཛུགས་པ།</translation> + </message> + </context> + <context> + <name>NoDeviceWidget</name> + <message> + <source>Scanner not detected</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་ཞིབ་བཤེར་མ་བྱེད།</translation> + </message> + </context> + <context> +@@ -616,15 +612,15 @@ + </message> + <message> + <source>Single</source> +- <translation type="unfinished">ཁེར་རྐྱང་།</translation> ++ <translation>ཁེར་རྐྱང་།</translation> + </message> + <message> + <source>ADF Duplex</source> +- <translation type="unfinished">ADF གོ་ཉིས་ཆོད་</translation> ++ <translation>ADF གོ་ཉིས་ཆོད་</translation> + </message> + <message> + <source>Fail to open the scanner</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་ཀྱི་ཁ་ཕྱེ་མ་ཐུབ།</translation> + </message> + </context> + <context> +@@ -639,7 +635,7 @@ + </message> + <message> + <source> User</source> +- <translation>སྤྱོད་མཁན།</translation> ++ <translation type="vanished">སྤྱོད་མཁན།</translation> + </message> + <message> + <source>Color</source> +@@ -655,7 +651,7 @@ + </message> + <message> + <source>'s operations. Are you continue?</source> +- <translation>སྤྱོད་མཁན་གྱིས་ད་ལྟ་བཀོལ་སྤྱོད་བྱེད་བཞིན་ཡོད་པས་མུ་མཐུད་དུ་བྱེད་དམ།</translation> ++ <translation type="vanished">སྤྱོད་མཁན་གྱིས་ད་ལྟ་བཀོལ་སྤྱོད་བྱེད་བཞིན་ཡོད་པས་མུ་མཐུད་དུ་བྱེད་དམ།</translation> + </message> + <message> + <source>Transparency Adapter</source> +@@ -667,15 +663,15 @@ + </message> + <message> + <source>Question</source> +- <translation>གནད་དོན།</translation> ++ <translation type="vanished">གནད་དོན།</translation> + </message> + <message> + <source>Current </source> +- <translation>མིག་སྔར།</translation> ++ <translation type="vanished">མིག་སྔར།</translation> + </message> + <message> + <source> has already opened kylin-scanner, open will close </source> +- <translation>མཉེན་ཆས་འདི་བཀོལ་སྤྱོད་བྱེད་བཞིན་ཡོད།ཁ་ཕྱེ་ན་སྒོ་རྒྱག་ངེས།</translation> ++ <translation type="vanished">མཉེན་ཆས་འདི་བཀོལ་སྤྱོད་བྱེད་བཞིན་ཡོད།ཁ་ཕྱེ་ན་སྒོ་རྒྱག་ངེས།</translation> + </message> + <message> + <source>Flatbed</source> +@@ -745,6 +741,10 @@ + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> ++ <message> ++ <source>Install timeout.</source> ++ <translation>སྒྲིག་སྦྱོར་དུས་ཚོད་ལས་བརྒལ་བ།</translation> ++ </message> + </context> + <context> + <name>RunningDialog</name> +@@ -1047,7 +1047,7 @@ + </message> + <message> + <source>Scanner</source> +- <translation>བཤེར་ཆས།</translation> ++ <translation type="vanished">བཤེར་ཆས།</translation> + </message> + <message> + <source>Yes</source> +@@ -1095,11 +1095,11 @@ + </message> + <message> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation type="unfinished"></translation> ++ <translation>དབྱེ་འབྱེད་ཚད་འདི་ལ་དུས་ཡུན་རིང་པོ་ཞིག་དགོས་ན་བཤར་འབེབས་བྱེད་དགོས།གཟབ་ནན་གྱིས་འདེམས་རོགས།</translation> + </message> + <message> + <source>Alert</source> +- <translation type="unfinished">ཉེན་ཟོན་</translation> ++ <translation type="obsolete">ཉེན་ཟོན་</translation> + </message> + </context> + <context> +@@ -1172,7 +1172,7 @@ + </message> + <message> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>ཡོང་ང་།</translation> + </message> + </context> + <context> +@@ -1251,7 +1251,7 @@ + </message> + <message> + <source>The current file is not saved. Do you want to save it?</source> +- <translation type="unfinished"></translation> ++ <translation>མིག་སྔའི་ཡིག་ཆ་ཉར་ཚགས་བྱས་མེད། ཁྱོད་ཀྱིས་དེ་ཉར་ཚགས་བྱེད་འདོད་དམ།</translation> + </message> + </context> + <context> +@@ -1317,18 +1317,22 @@ + </message> + <message> + <source>Scanner list refresh complete.</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་ཀྱི་རེའུ་མིག་གསར་བཟོ་ལེགས་གྲུབ་བྱུང་།</translation> + </message> + </context> + <context> + <name>WaittingDialog</name> + <message> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>ཉེ་བ་</translation> + </message> + <message> + <source>Searching for scanner...</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་འཚོལ་བ།</translation> ++ </message> ++ <message> ++ <source>Scanner</source> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་</translation> + </message> + </context> + <context> +@@ -1373,103 +1377,103 @@ + <name>newDeviceListPage</name> + <message> + <source>Name</source> +- <translation type="unfinished">མིང་།</translation> ++ <translation>མིང་།</translation> + </message> + <message> + <source>Symbol</source> +- <translation type="unfinished"></translation> ++ <translation>རྟགས་རྟགས།</translation> + </message> + <message> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>ཉེ་བ་</translation> + </message> + <message> + <source>Device List</source> +- <translation type="unfinished"></translation> ++ <translation>སྒྲིག་ཆས་རེའུ་མིག་</translation> + </message> + <message> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>མེད་པར་བཟོ་བ།</translation> + </message> + <message> + <source>Next</source> +- <translation type="unfinished"></translation> ++ <translation>རྗེས་མ་།</translation> + </message> + <message> + <source>Before</source> +- <translation type="unfinished"></translation> ++ <translation>སྔོན་ལ།</translation> + </message> + <message> + <source>Install</source> +- <translation type="unfinished">སྒྲིག་སྦྱོར་བྱེད་པ</translation> ++ <translation>སྒྲིག་སྦྱོར་བྱེད་པ</translation> + </message> + <message> + <source>Device Name:</source> +- <translation type="unfinished"></translation> ++ <translation>སྒྲིག་ཆས་ཀྱི་མིང་།</translation> + </message> + <message> + <source>Driver Name:</source> +- <translation type="unfinished"></translation> ++ <translation>སྐུལ་ཆས་ཀྱི་མིང་།</translation> + </message> + <message> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation type="unfinished"></translation> ++ <translation>བཀོལ་སྤྱོད་བྱེད་ཆོག་པའི་སྐུལ་སྒུལ་གོ་རིམ་མེད།ཁྱོད་ཀྱིས་ལག་སྒུལ་སྐུལ་སྒུལ་གོ་རིམ་སྣོན་འདོད་དམ།</translation> + </message> + <message> + <source>Add</source> +- <translation type="unfinished"></translation> ++ <translation>སྣོན་པ།</translation> + </message> + <message> + <source>Installing driver...</source> +- <translation type="unfinished"></translation> ++ <translation>སྐུལ་སྒུལ་གོ་རིམ་སྒྲིག་སྦྱོར་བྱེད།</translation> + </message> + <message> + <source>Use</source> +- <translation type="unfinished"></translation> ++ <translation>བེད་སྤྱོད་།</translation> + </message> + <message> + <source>Installation failed.</source> +- <translation type="unfinished"></translation> ++ <translation>སྒྲིག་སྦྱོར་ཕམ་སོང་།</translation> + </message> + <message> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>ཡོང་ང་།</translation> + </message> + <message> + <source>Select a directory</source> +- <translation type="unfinished"></translation> ++ <translation>དཀར་ཆག་འདེམས་པ།</translation> + </message> + <message> + <source>Type</source> +- <translation type="unfinished"></translation> ++ <translation>རིགས་དབྱེ།</translation> + </message> + <message> + <source>Alert</source> +- <translation type="unfinished">ཉེན་ཟོན་</translation> ++ <translation>ཉེན་ཟོན་</translation> + </message> + <message> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation type="unfinished"></translation> ++ <translation>ཁྱེད་རང་གི་ལག་སྒུལ་གྱིས་རེའུ་མིག་ནང་གི་པར་འདེབས་འཕྲུལ་ཆས་ཀྱི་སྒྲིག་ཆས་བཤར་འབེབས་དང་པར་འདེབས་ཀྱི་ཡོངས་རྫོགས་འཕྲུལ་ཆས་ཡིན་མིན་གཏན་འཁེལ་བྱེད་དགོས། གལ་ཏེ་དེ་དག་བཤར་འབེབས་དང་པར་འདེབས་ཀྱི་ཡོངས་རྫོགས་འཕྲུལ་ཆས་མིན་ན།དེ་དག་སྣང་མེད་དུ་འཇོག་དགོས།</translation> + </message> + <message> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>བཤར་འབེབས་འཕྲུལ་ཆས་</translation> + </message> + <message> + <source>Printer</source> +- <translation type="unfinished"></translation> ++ <translation>པར་འདེབས་འཕྲུལ་འཁོར་</translation> + </message> + <message> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation type="unfinished"></translation> ++ <translation>སྐུལ་སྒུལ་བྱེད་སྒོ་འདི་ཕྱོགས་གསུམ་པ་ནས་ཡོང་བ་ཡིན་པས།ཚད་འཇལ་མི་ཐུབ་པའི་མཇུག་འབྲས་འགའ་འབྱུང་སྲིད།</translation> + </message> + <message> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation type="unfinished"></translation> ++ <translation>སྐུལ་སྒུལ་འདི་བཟོ་གྲྭ་ཡིས་མཁོ་འདོན་བྱས་པ་ཡིན། སྒྲིག་ཆས་ཀྱི་དེ་དང་མཐུན་པའི་བཟོ་སྐྲུན་ཚོང་པ་དང་འབྲེལ་བ་བྱས་ནས་སྐུལ་སྒུལ་གོ་རིམ་ཐོབ་རོགས།</translation> + </message> + <message> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation type="unfinished"></translation> ++ <translation>སྒྲིག་སྦྱོར་ལེགས་འགྲུབ་བྱུང་། ཁྱོད་ཀྱིས་ད་ལྟ་བཤར་འབེབས་ཆས་འདི་བཀོལ་འདོད་དམ། བེད་སྤྱོད་མནན་ན་udev(དོ་དམ་པའི་གསང་གྲངས་དགོས་པ)བསྐྱར་དུ་བཀོད་སྒྲིག་བྱས་ནས་བཤར་འབེབས་ཉེར་སྤྱོད་གོ་རིམ་བསྐྱར་དུ་སྒོ་ཕྱེ་ནས་སྒྲིག་ཆས་ཀྱི་རེའུ་མིག་གསར་དུ་བསྒྱུར། གལ་ཏེ་ཁྱོད་ཀྱིས་སྔར་བཞིན་མུ་མཐུད་དུ་བཤར་འབེབས་བྱས་པའི་འདྲ་རིས་བཀོལ་སྤྱོད་བྱེད་འདོད་ན།ཁྱོད་ཀྱིས་ལག་སྒུལ་བསྐྱར་དུ་སྒོ་ཕྱེ་དགོས་པ་མ་ཟད་བཤར་འབེབས་བྱེད་ནུས་བཀོལ་དགོས།</translation> + </message> + </context> + <context> +diff --git a/translations/kylin-scanner_kk.qm b/translations/kylin-scanner_kk.qm +index 4fd2fde..3459051 100644 +--- a/translations/kylin-scanner_kk.qm ++++ b/translations/kylin-scanner_kk.qm +@@ -1,65 +1,64 @@ +-<�d��!�`���B�����D��(���E��)��[��h��[��8i��[��S\��1��9���E������E���!���E���).��G���J��S���@���\���Wg��_���46�h��� e�����V�����`��`��@d����:?�֍��:t���������-H��0��:��H5��.`�H5��Q��L���R�����/�����1���e��4��e��W5��s��5��%����U�,D���I�G����9��H,����H,���)^�H,���JP�I�~����I����>��J6���+�J6���w�J6���$T�J6���6\�J6���:�J6���G�J6���HZ�J6���K�Jcb����Jcb��)��PFE��=�V}���.��Z�|��_�Z�|��L]�]������aҤ����f�~���������M���\n���������)� �J��K�f&���A�x$^���z�.��L���3��+|�u0��$�0���,4���������-J����Zvd�.��^����-��ki��f�ki��!U�ki��(�����/�����K�2kY���2kY���2kY��'fky���*��kY��:�kY�� �kY��'������@"�օ��J��I���L�I�����I���1�I���#r�I���6�I���7��I���H�I���J��6���)��ϕ��*���W��h�JH���JH����JH��!�֓���- "���Z2h)��2h)���2h)��'�2kY��k2kY�� K@�b��@�g�^��=�uJ>�� +-���^��U������AH�n��4l�N%���N%��1��^��EU�9\��TdF���I�a���A�2kY���2kY�� �9$���/D@Kb���[����Md����������������D%��^��n����3��.��T�2h9���2h9�� 2h9��(L���yl����2�p�>��Fm�Z���S��6����Έ����Έ���"^�`���M����+M����"&T����5�r���2������������!������Aʨ����ʶ���>4�F5��:��m���* #?���7 2kY��5 2kY��!! ?�T��KT JV���W� `3���2/ �t���05 �v���0o �T���� �T���g �T���%$ �T���0� �T���6� �T���>~ �T���H� �T���S� ����?� +-d����6� +-d����H� +-eK����� +-t�.��GR +-�U���?� +-����.� +-�e��A� +-� ���;O~��4�/����QN2h��2h�� �2h��(\E�9��1DE�9��T +-ʫ�������IBƞ�� +-���#1d��=�;e��J;e��$�;e��.+vx���9vx������������N��� ���� (���%\ (����� (����5 (����"� (����+� c�^��D� oEK��G� ��/��R\ �7T��>� ����� ����8�'����g����#��.��7�)�E��0�e���f۾��2f۾��8���n��BFi��[���`C�3CIF/��� '~~'1'*IF� *�C3�1x~� CH1I�I2� 3'B*'~� *�1�������Detect scanners, please waiting���DetectPageWidget���,'D9'F��������Connect���FailedPageWidget���Lx3*�*C�Dx� (HD'*xF� C�3CIF/��� '3~'(x� ,HB�������No available scan devices���FailedPageWidget����'BI*� H2��1*��������Dialog���KYCAboutDialog����C�3CIF/��FI� ,'D9'�Dx� C�3CIF/��FI� ('3*'�� w4xF� C�3CIF/��� CIFH~C'3IF� *'D/'�.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����C�3CIF/��� ('JB'DE'/x� ,'�'� C�3CIF/��� CI1��2�~� '3('(x*x�� *x2xE/xC/x� ,'�'D'��.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���0,'�'� C�3CIF/��� ,'D9'F/x�.�������!A new Scanner has been connected.��� +-MainWidget����3C�1*��������Alert��� +-MainWidget���C�4IF�F� B'D/I1��������Cancel��� +-MainWidget���z'3('(� B'1('D'3� 3'B*'~� *�1� J'CJ� ('3B'� 3C'FF�1D'1FI� &'DE'4*�1�.�������2Device busy, please wait or switch other scanners.��� +-MainWidget����-�,'*� E�F�F� t/'E/�IF� -�,'**IF� �IBI1I��*3I�I2� -�,'*D�1FI� BHJI~� B'*�� 3C'FI1D'�I2�.�������EDocument feeder out of documents, please place papers and scan again.��� +-MainWidget����C�4C�� J�� �E�3� E�D'�I2ID�1� /'D�D�-x3~'**'1/x� H2��1*� J'CJ� ('3B'� 3C'FF�1D'1FI� 'DE'3*x1�.�������CInvalid argument, please change arguments or switch other scanners.��� +-MainWidget��� +-E'B�D�������Ok��� +-MainWidget���B'*�� BH29'D*��������Restart��� +-MainWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...��� +-MainWidget���B��2�DD�4*�1�4FI� *'1*I~C�� 3'D�� �.�.�.�������Running rectify ...��� +-MainWidget���pC�3CIF/��� ,��IDI~� B'D/I� ('JDIB*I� �3IF3� �*�� 1�*� BIDIF/I�.�������0Scan failed, Access to resource has been denied.��� +-MainWidget���^3C'FF�1DI4I� ,��IDI~� B'D/I� -�,'*� � *HB*'~� B'D/I�.�������$Scan failed, Document fedder jammed.��� +-MainWidget����3C'FF�1DI:'F/'� ,��IDI~� B'D/I� B�1IDE'� �I�/�O� ('1I3IF/'� B'*�DIC� CH1ID/I�.�������%Scan failed, Error during device I/O.��� +-MainWidget���b3C'FF�1DI:'F/'� ,��IDI~� B'D/I� �3*�� 3'BDI:�3I� ,HB�.�������Scan failed, Out of memory.��� +-MainWidget���zC�3CIF/��� ,��IDI~� B'D/I� C�3CIF/��I4*I�� B'~BIBI� '4'Dx~� B'D/I�.�������#Scan failed, Scanner cover is open.��� +-MainWidget���TC�3CIF/��� ,��IDI~� B'D/I� ,H('D'�� BHD/'JE'�.�������(Scan failed, operation is not supported.��� +-MainWidget���C�3CIF/��I4� ,��IDI~� B'D/I� � ,'JE'D'�I4FI� *�C3�1x~� CH1� J'CJ� ('3B'� 3C'FF�1:'� 'DE'3*x1�.� BJ3xB� ,'JE'D'�I4FI� ,'D9'3*I� x3*�*~�C4x� (HD3'B� *'D/'�� *�1IF� *'D/'� *x2xE/xC/x� ,'�'D'~� '3('(xF� B'*�� BH29'D*�.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� +-MainWidget���LC�3CIF/��� ,H('D'�I� C�4IF�F� B'D/I1ID/I�.�������"Scan operation has been cancelled.��� +-MainWidget���C�3CIF/���������Scanner��� +-MainWidget���3�3*JE'� �JB*I'�� �JB*I'�� *�C3�1ID/I�.� C�3CIF/��I4*I�� FH1E'D� 3*�*D���� C�~ID/IC� �*�� w4xF� B'*�� BH29'D*�/I� *�1*I~� C�3CIF/��I4*I�� BHD/'FID�IF� B'*�� BH2:I*I�D'1�.� BJ3xB� C�3CIF/�~� BHD/'F'*IF� 3�1�**I� ,'D9'3*I� ,H('D'�� H1IF/'E'B4I� (HD3'�x2� (x1'B� C�3CIF/�~� x3*x*���� B'*I3*I� 1HD/'1� *HB*'*xDx~� B'*�� BH29'9'FF'F� C�JIF� C�4C�� J�� (HD'/x�.������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� +-MainWidget���*C�3CIF/��� ('JB'DE'/x�.�������Scanner not detected���NoDeviceWidget���C�4IF�F� B'D/I1��������Cancel���NoMailDialog���*I9F/'��������Close���NoMailDialog���*�3I1��������Install���NoMailDialog���8�D�C*1HF/xB� -'*� B'1J/'1I� ,HB�������No email client���NoMailDialog����3�3*'E'/'� �D�C*1HF/xB� -'*� B'1J/'1/I� *'(DE'J� 'D/xE�F� �D�C*1HF/xB� -'*� B'1J/'1/I� *�3I1I�I2�.�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QApplication���'�*HE'**I�������Auto���QApplication���&C�3CIF/��� '4'� 'D'E'�������Fail to open the scanner���QApplication���6(I1C�DCI� *'B*'DxB� C�3CIF/���������Flatbed���QApplication���CH~�������Multiple���QApplication����B'2I1� *x2xE/xC/x� ,'�'D'FI~� ,'*I1�.� �'CID� -'('1/x�� ,'�'D'F�I� C�*I�I2�.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���C�3CIF/���������Scanner���QApplication���6C�3CIF/��� *�C3�1I~� ,'*I1�.�.�.�������Scanner is on detecting...���QApplication���,�C�� C�3CIF/���������Single���QApplication���� ~'J/'D'F�4x������� User���QObject���p� 'D/�B'4'F� �K�y�l�i�n�-�s�c�a�n�n�e�r� FI� 3xF'�� B'D/I� �o�p�e�n� FI� ,'('/I� �������3 has already opened kylin-scanner, open will close ���QObject���L�'FI�� ,H('D'�I�.� t3I2� /'�'ED'4*�1'Et3I2������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� '1*IF'�������ADF Back���QObject����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QObject����A�D�F� 'D/I������� ADF Front���QObject���'�*HE'**I�������Auto���QObject���1���������Color���QObject���C�2�C*��I� �������Current ���QObject���CH�ID/��I� *�1I�������Default Type���QObject���6(I1C�DCI� *'B*'DxB� C�3CIF/���������Flatbed���QObject���3�11���������Gray���QObject���$3I2IB*IB� C�3CIF/���������Lineart���QObject���E'3�D��������Question���QObject���C�4IF�F� B'D/I1��������Cancel��� RunningDialog���*I9F/'��������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� +-SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� +-SaneObject����1�5�0� �d�p�i�������150 dpi��� +-SaneObject����2�0�0� �d�p�i�������200 dpi��� +-SaneObject����2�4�0�0� �d�p�i�������2400 dpi��� +-SaneObject����3�0�0� �d�p�i�������300 dpi��� +-SaneObject����4�8�0�0� �d�p�i�������4800 dpi��� +-SaneObject����6�0�0� �d�p�i�������600 dpi��� +-SaneObject����7�5� �d�p�i�������75 dpi��� ++<�d��!�`���B�����D��$���E��$���[�����[��2���[��K���1��3���E������E������E���$���G���C=��S���:���\���Ou��_���.��h��� ���������������`��:"����4�֍��4F���������(z��0��4q�H5��)l�H5��JT�L���J������*�����,���e��.���e��OC��s��0N�,D���BG�G����3��H,���p�H,���Cn�I�~����I����8��J6�����J6���i�J6��� v�J6���0��J6���3��J6���@N�J6���A��J6���D�Jcb����Jcb��%�PFE��7e�V}���)��Z�|����Z�|��E;�]���� �aҤ��-�f�~��������E���\n���������%m �J��D�f&���;�x$^���z�.��Et��3��&��u0�� �0���'~���������(�J����R d�.�������(��ki����ki����ki��$_����*�����D�2kY���2kY���2kY��#vky���&��kY����kY����kY��#������9��օ��C��I�����I�����I���/�I�����I���0��I���1��I���Al�I���C��6���%:�ϕ��&E��W����JH����JH��C�JH��S�����:֓���(?"����2h)���2h)���2h)��#�2kY��2kY��@�b��:Xg�^��7�uJ>����^��M������:��n��/�N%��v�N%��,m�^��>��9\��L�F���B�a���;a2kY��Z2kY��X9$���*F@Kb��5d���������������=���^�����n�������-���.��L�2h9��62h9��12h9��$L���l����-}p�>��?��Z���K��6����Έ���Έ�����`���4M����M�����T����0r���-0���������������:�ʨ����ʶ���8 ++�F5��4��m���2 #?���1` 2kY��� 2kY��� ?�T��DH JV���O� `3���,� �t���+' �v���+q �T���� �T���!D �T���1* �T���8L �T���@~ �T���B �T���K� ����9v ++d����0� ++d����A� ++eK����~ ++t�.��@� ++�U���9� ++����)� ++�e��;" ++� ���4�O~��/�/����I�2h��}2h��~2h��$0E�9��,E�9��L8����Bxƞ�� ++8���O1d��7�;e���;e�� �;e��)/vx���3rx����7�N�� (���!v (����� (����Q (���� (����'8 c�^��> oEK��A ��/��J� �7T��8| ���� ����2�'����g������.��2)�E��+�e���f۾��pf۾��3��n��;�i��R����:=K�B0?� :�@C� A:0=5@;5@V�,� :�BC�������Detect scanners, please waiting���DetectPageWidget����>AK;C�������Connect���FailedPageWidget���F�>;65BV<4V� A:0=5@;V:� ��@K;�K;0@� 6>��������No available scan devices���FailedPageWidget���V�BV=� >�K;<04K�,� �09B0� 5<45;CV�V74V� �BV=5<V=�������"Unable to read text, please retrey���ImageOperationOCR���80;>3�������Dialog���KYCAboutDialog�����01K;40C4K� �>AK�K7�,� A:0=5@;5C4V� 10AB0C� �HV=� A:0=5@;5C� B�9<5AV=� 10AK�K7�.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget������@K;�K� BV7V<V=� �09B0@C� �HV=� 60�0� A:0=5@35� �>AK;0BK=� A:0=5@;5@� 0=K�B0;<04K�.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���(60�0� A:0=5@� �>AK;4K�.�������!A new Scanner has been connected.��� ++MainWidget���5A:5@BC�������Alert��� ++MainWidget���10A� B0@BC�������Cancel��� ++MainWidget���~��@K;�K� 1>A� 5<5A�,� :�BV�V7� =5<5A5� 10A�0� A:0=5@;5@4V� 0CKABK@K�K7�.�������2Device busy, please wait or switch other scanners.��� ++MainWidget������60BB0@4K� 15@3VH� ��60BB0@40=� HK�K?�,� �0�0740@4K� �>9K?�,� �09B040=� A:0=5@;5�V7�.�������EDocument feeder out of documents, please place papers and scan again.��� ++MainWidget����60@0<AK7� 0@3C<5=B�,� 0@3C<5=BB5@4V� �735@BV�V7� =5<5A5� 10A�0� A:0=5@;5@4V� 0CKABK@K�K7�.�������CInvalid argument, please change arguments or switch other scanners.��� ++MainWidget���0@094K�������Ok��� ++MainWidget����09B0� VA:5� �>AC�������Restart��� ++MainWidget���$6�3V@C� A�;C;K�K�.�.�.�������Running beauty ...��� ++MainWidget���&B�75BC� 6�<KAB0@K�.�.�.�������Running rectify ...��� ++MainWidget���|A:0=5@;5C� A�BAV7� 0O�B0;4K�,� @5AC@A�0� �>;� 65B:V7C45=� 10A� B0@BBK�.�������0Scan failed, Access to resource has been denied.��� ++MainWidget���bA:0=5@;5C� A�BAV7� 0O�B0;4K�,� ��60B� 15@3VH� :5?B5;4V�.�������$Scan failed, Document fedder jammed.��� ++MainWidget����A:0=5@;5C� A�BAV7� 0O�B0;4K�,� ��@K;�K=K�� 5=3V7C�/HK�0@C� :57V=453V� �0B5�.�������%Scan failed, Error during device I/O.��� ++MainWidget���VA:0=5@;5C� A�BAV7� 0O�B0;4K�,� 604� 65B:V;V:AV7�.�������Scan failed, Out of memory.��� ++MainWidget���^A:0=5@;5C� A�BAV7� 0O�B0;4K�,� A:0=5@� �0�?0�K� 0HK��.�������#Scan failed, Scanner cover is open.��� ++MainWidget���rA:0=5@;5C� A�BAV7� 0O�B0;4K�,� >?5@0F8O� �>;40C� :�@A5BV;<594V�.�������(Scan failed, operation is not supported.��� ++MainWidget���A:0=5@;5C� A�BAV7� 0O�B0;4K�,� A:0=5@4V� B5:A5@V�V7� =5<5A5� 10A�0� A:0=5@;5@4V� 0CKABK@K�K7�.� A:0=5@4V� ?0940;0=C4K� 60;�0ABK@�K�K7� :5;A5�,� >?F8O;0@4K� 10AK?�,� ��@K;�K=K� �09B0� VA:5� �>AC� �HV=� BV7V<4V� 60�0@BK�K7�.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� ++MainWidget���@A:0=5@;5C� >?5@0F8OAK� B>�B0BK;4K�.�������"Scan operation has been cancelled.��� ++MainWidget��H�95� B070@BK;�0=�/B070@BK;�0=�.�01K;40C� �>;40=10AK=� �09B0� 10AB0C� �HV=� A:0=5@4V� �0;K?BK� ?0940;0=C�0� :5?V;4V:� 15@V�V7�.� 35@� AV7� A:0=5@;5=35=� :5A:V=4V� 6�<KAB0=� HK�0@�K�K7� :5;A5�,� 10A� B0@BC4K� 10AK�K7�,� 1V@0�� A:0=5@<5=� 109;0=KABK� DC=:F8O;0@� B070@BK;0BK=� 1>;04K� 6�=5� �09B0� 10AB0�0==0=� :59V=� �A5@� 5B54V�.������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� ++MainWidget���$A:0=5@� 0=K�B0;<04K�������Scanner not detected���NoDeviceWidget���10A� B0@BC�������Cancel���NoMailDialog���601C�������Close���NoMailDialog���>@=0BC�������Install���NoMailDialog���:M;5:B@>=4K�� ?>HB0� :;85=BV� 6>��������No email client���NoMailDialog����6�9545� M;5:B@>=4K�� ?>HB0� :;85=BV=� B010� 0;<09<K=�,� 0;4K<5=� M;5:B@>=4K�� ?>HB0� :;85=BV=� >@=0BK�K7�.�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�d�f� 4C?;5:A������� ++ADF Duplex���QApplication���02B><0BBK�������Auto���QApplication���A:0=5@4V� 0H?0C�������Fail to open the scanner���QApplication���60;?0�� B�A5:�������Flatbed���QApplication���1V@=5H5�������Multiple���QApplication���z60�0@BC� BV7V<V�.� 60�0@BC� A�BBV;V3V� BC@0;K� 0�?0@0BBK� :�BV�V7�.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���A:0=5@�������Scanner���QApplication���(A:0=5@� 0=K�B0;C40�.�.�.�������Scanner is on detecting...���QApplication���60;�K7�������Single���QApplication�����������100 dpi���QObject�����������1200 dpi���QObject�����������150 dpi���QObject�����������200 dpi���QObject�����������2400 dpi���QObject�����������300 dpi���QObject�����������4800 dpi���QObject�����������600 dpi���QObject�����������75 dpi���QObject����A�D�F�������ADF���QObject����A�d�f� �09BK?�������ADF Back���QObject����A�d�f� 4C?;5:A������� ++ADF Duplex���QObject����A�d�f� 0;4K��K������� ADF Front���QObject���02B><0BBK�������Auto���QObject���B�A�������Color���QObject����45?:V� B�@V�������Default Type���QObject���60;?0�� B�A5:�������Flatbed���QObject���A�@�������Gray���QObject���#0�KBBK� >@=0BC�.�������Install timeout.���QObject���AK7K�BK��������Lineart���QObject���10A� B0@BC�������Cancel��� RunningDialog���601C�������Close��� RunningDialog�����������100 dpi��� ++SaneObject�����������1200 dpi��� ++SaneObject�����������150 dpi��� ++SaneObject�����������200 dpi��� ++SaneObject�����������2400 dpi��� ++SaneObject�����������300 dpi��� ++SaneObject�����������4800 dpi��� ++SaneObject�����������600 dpi��� ++SaneObject�����������75 dpi��� + SaneObject����A�D�F�������ADF��� +-SaneObject����A�D�F� '1*IF'�������ADF Back��� +-SaneObject����A�D�F� �D�u�p�l�e�x������� ++SaneObject����A�d�f� �09BK?�������ADF Back��� ++SaneObject����A�d�f� 4C?;5:A������� + ADF Duplex��� +-SaneObject����A�D�F� 'D/I������� ADF Front��� +-SaneObject���CH�ID/��I� *�1I�������Default Type��� +-SaneObject���6(I1C�DCI� *'B*'DxB� C�3CIF/���������Flatbed��� +-SaneObject���<*x2xE/xC/x� ,'�'D'�� *'E'E/'D/x�.�������Refresh list complete.��� +-SaneObject���C�4IF�F� B'D/I1��������Cancel��� +-ScanDialog���ZC�3CIF/��� C�4IF�F� B'D/I1ID/I� 3�D� 3'B*'~� *�1�!�������&Canceling scan,please wait a moment!��� +-ScanDialog���*I9F/'��������Close��� +-ScanDialog���CH~�������Multiple��� +-ScanDialog���84'1'~'*� C�3CIF/��� 3'F/'1/I�:� �������Number of pages scanning: ��� +-ScanDialog���C�3CIF/���������Scanner��� +-ScanDialog��J� '4'Dx~� *�19I2IDI~� ,'*I1� � HFI� ,'(I~� BHJ'E/�B� BJ3xB� CH~� (�**xC� 3IC'FF�1D'4FI� '*B'1� H1IF/'3'� ('DCxE� CH~� -�,'**'1/I�� B'~DIFI4IFI� C�*I1I~� 4x9�x� E�EC'F�.� 3'B*'F�� I3*���!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget����3C�1*��������Alert���ScanSettingsWidget���1���������Color���ScanSettingsWidget���1���������Colour���ScanSettingsWidget���hC�2�C*�� x3*�*�4xFx�� ('3E'2E�F/I� H2��1*�� 1�-3'*I� ,HB� �������5Currently user has no permission to modify directory ���ScanSettingsWidget��� +-'3('(�������Device���ScanSettingsWidget���>3'B*'D9'F� (HDE'9'F� -�,'*� ,HDI�:� �������File path that does not exist: ���ScanSettingsWidget��� -�,'*� *��4��D�1I������� File settings���ScanSettingsWidget���6(I1C�DCI� *'B*'DxB� C�3CIF/���������Flatbed���ScanSettingsWidget����(I1C�DCI� *'B*'DxB� C�3CIF/��� AH1E'3I� CH~� 1�*� C�3CIF/��FI� BHD/'E'J/I�.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���t~I4IFI�������Format���ScanSettingsWidget���3�11���������Gray���ScanSettingsWidget���$3I2IB*IB� C�3CIF/���������Lineart���ScanSettingsWidget���,�D�C*1HF/xB� -'*� '1BIDI�������Mail to���ScanSettingsWidget���CH~�������Multiple���ScanSettingsWidget���'*�-A'EJDJ'�������Name���ScanSettingsWidget���(�**�1�������Pages���ScanSettingsWidget���*�3IF3� �BI9I� ,HB� ,HD�:� �������Path without access rights: ���ScanSettingsWidget���*�FIB*I9I������� +-Resolution���ScanSettingsWidget���<4�4IE� �*�� �*�� C�J1�**I� B�19'B�!�������Resolution is empty!���ScanSettingsWidget���3'B*'��������Save���ScanSettingsWidget���3'B*'��������Save As���ScanSettingsWidget������ 3'B*'��������Save as���ScanSettingsWidget���C�3CIF/���������Scanner���ScanSettingsWidget��� C�3CIF/��� '3~'(x�������Scanner device���ScanSettingsWidget���"('3� E'2E�F� *'D/'��������Select a directory���ScanSettingsWidget���,�C�� C�3CIF/���������Single���ScanSettingsWidget����DC�F� �-� C4ID�I�������Size���ScanSettingsWidget���(3IC'FF�1D'4FI� ('3*'�������� +-Start Scan���ScanSettingsWidget���*�CI3*IF� 3'B*'�������� +-Store text���ScanSettingsWidget���-�,'*� ������� The file ���ScanSettingsWidget����F�� ~'1IB*'F/I1�� B'*IF'3I� H*�� �2IF� �'BI*� C�*�/I� CH�ID� BHJI~� *'D/'�.�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���*�1I�������Type���ScanSettingsWidget���3HF/'J�������Yes���ScanSettingsWidget���J�'�/�'� .'1'C*�1IFI� v2� I4IF�� 'D'� 'DE'J/I�.�������cannot contain '/' character.���ScanSettingsWidget���V,'3I1IF� -�,'*� 3'~'3IF/'� 3'B*'9'DI� (HDE'J/I�.�������cannot save as hidden file.���ScanSettingsWidget���C�3CIF/���0�1������� scanner01���ScanSettingsWidget����3C�1*~���������tips���ScanSettingsWidget���C�4IF�F� B'D/I1��������Cancel���SendMailDialog���*I9F/'��������Close���SendMailDialog���*�1'B*'F/I1��������Confirm���SendMailDialog���C�3CIF/���������Scanner���SendMailDialog���@�D�C*1HF/xB� -'*� B'1J/'1/I� *'D/'��������Select email client���SendMailDialog���C�4IF�F� B'D/I1��������Cancel���ShowImageWidget���ZC�4IF�F� B'D/�1�D��'*I/��.�.�.� 3�D� 3'(x1� I3*���.�.�.�������Canceling...Please waiting...���ShowImageWidget��� +-E'B�D�������Ok���ShowImageWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...���ShowImageWidget���B��2�DD�4*�1�4FI� *'1*I~C�� 3'D�� �.�.�.�������Running rectify ...���ShowImageWidget���"4I9�� '�2IF� 3'B*'�������� +-&Save Exit���TitleBar�����������...���TitleBar���,'JxF/'�������About���TitleBar���*I9F/'��������Close���TitleBar���4I9�� '�x2x�������Exit���TitleBar����F�o�r�m�������Form���TitleBar���,'1/�E�������Help���TitleBar������ �DC�F� 4�CC��������Maximize���TitleBar���-'('1� �L�A�N� /'� BI3B'� '��IE�D�3�� �'� -�,'*� ,H*C��� 1HD/'1x� E�F�F� B'E/'D'/x�.� BI2IE�*� H*��I� B�1�/I�� B',�*I� ,HB�.� HD� CH~� '/'EFI�� (x1��� �'BI**'� ��EC'1DI4I��DI4IFI� �'� ~'1'DD�D� ,HD/'�� �'� B'(ID/'�� H1IF/'�/I� BHD/'J/I�.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���CI41�J*��������Minimize���TitleBar���*'D/'F('�������Option���TitleBar���$*x2xE/xC/x� ,'�'D'��������Refresh List���TitleBar���&B'D~IF'� C�D*I1ID��F�������Restore���TitleBar���C�3CIF/���������Scanner���TitleBar���*�2�&4I9��������Straight &Exit���TitleBar���`C�2�C*��I� -�,'*� 3'B*'DE/I�.� t3I2� HFI� 3'B*'E'B4E'�������6The current file is not saved. Do you want to save it?���TitleBar���F�3B'3I�:� ������� Version: ���TitleBar����k�y�l�i�n�-C�3CIF/��������� kylin-scanner���TitleBar�����2�DD�4*�1�4�������Beauty��� ToolBarWidget���2I1'&�*D�1�������Crop��� ToolBarWidget���'JF'� BxJ'D�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���*'1*I~C�� 3'D��������Rectify��� ToolBarWidget���'JF'D/I1��������Rotate��� ToolBarWidget���3�� (�D�I������� Watermark��� ToolBarWidget����DC�J*��������ZoomIn��� ToolBarWidget���*AHCI3� '1'DI9IF� *��4���������ZoomOut��� ToolBarWidget��,C�3CIF/��� w2xDx~� C�**I�.� BJ3xB� C�3CIF/��FI�� H1F'D'3x�x� �2ID3�� 3IC'FF�1D'4FI� C�4IF�F� B'D/I1I�� J'CJ� 3IC'FI1DI:��FI�� B'*�� -'('1/I� /HCD'*� H1IF/'�IF� 3'B*'�.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���0,'�'� C�3CIF/��� ,'D9'F/x�.�������New Scanner has been Connected.���UsbHotplugThread���lC�3CIF/��� '3('(xF� *�C3�1I~� ,'*I1�.� 3�D� 3'(x1� I3*���.� �.� �.�������+Querying scanner device. Please waitting...���UsbHotplugThread����C�3CIF/��� B'2I1� w2xDx~� ,'*x1� C�3CIF/��� *x2xE/xC/x� ,'�'D'FI~� ,'*I1�.� 3�D� 3'(x1� I3*���.� �.� �.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���lC�3CIF/��� ~I1H�I1'EE'3I� *x2xE/xC/x� ,'�'D'�� *'E'E/'D/x�.�������Scanner list refresh complete.���UsbHotplugThread���*I9F/'��������Close���WaittingDialog���6,'JE'D'�I4FI� x2/�~� ,'*x1�.�.�.�������Searching for scanner...���WaittingDialog���3�� (�D�I3I� BH3�������� Add watermark���WatermarkDialog���C�4IF�F� B'D/I1��������Cancel���WatermarkDialog���*I9F/'��������Close���WatermarkDialog���*�1'B*'F/I1��������Confirm���WatermarkDialog���C�3CIF/���������Scanner���WatermarkDialog���-�,'*� EI�������Filename���main���RC�3CIF/��� *��4��D�1/x� �ICI~�/IJ�FI� ,'3I1��������Hide scan settings widget���main���,-�,'**I� �<�f�i�l�e�n�a�m�e�>x4x��������Open file <filename>���main���BH3��������Add���newDeviceListPage����3C�1*��������Alert���newDeviceListPage���'D/x�9x� ('3BI4�������Before���newDeviceListPage���C�4IF�F� B'D/I1��������Cancel���newDeviceListPage���*I9F/'��������Close���newDeviceListPage���'3('(� *x2xE/x�x�������Device List���newDeviceListPage���'3('(� '*x�:�������Device Name:���newDeviceListPage���BBH29'D*�� '3('(I� ~I1H�I1'EE'3I� EI�:�������Driver Name:���newDeviceListPage���*�3I1��������Install���newDeviceListPage���0B�1'3*I1�� ,��IDI~� B'D/I�.�������Installation failed.���newDeviceListPage���B�1'3*I1�� F'*J,�DI� B'D/I�.� B'2I1� F�� ,'JE'D'�I4FI� x3*x*���� ('1E'� ��x3*�*���� FI� *�1*I~� �U�d�e�v� �(� ('3B'1�4x3x� B�~J'� FHE�1I� t3H23I2� �)� FI� B'*�� H1F'D'3*19'F� H1IF/'~� C�3CIF/��� B�D/'FID�IF� B'*�� BH29'D*I~� '3('(� *x2xE/xC/x� ,'�'D'�I2�.� BJ3xB� ,'F�/�� C�3CIF/�~� B�D/'F'*IF� 3�1�**I� ,'D9'3*I� ,H('D'�� H1IF/'E'B4I� (HD3'�x2� B�D� E�F�F� B'*�� BH2:I*IDI4I� HFI�� �3*IF�� C�3CIF/��� B'(xD�**x� x3*�*�I�I2� C�1�C�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���PBH29'D*�� ~I1H�I1'EE'3I� *�3I1ID~� ,'*I1�.�.�.�������Installing driver...���newDeviceListPage���'*�-A'EJDJ'�������Name���newDeviceListPage���C�JIF�I� ('3BI4�������Next���newDeviceListPage����x3*�*C�Dx� (HD'*xF� BH29'D*�� ~I1H�I1'EE'3I� ,HB� BH29'D*�� '3('(IF� BHD/'� BH3'3I2� ('�������:No available drivers, do you want to manually add drivers?���newDeviceListPage��� +-E'B�D�������Ok���newDeviceListPage���~I1IF*�1�������Printer���newDeviceListPage���C�3CIF/���������Scanner���newDeviceListPage���"('3� E'2E�F� *'D/'��������Select a directory���newDeviceListPage���*IF4� (�D�I�������Symbol���newDeviceListPage����F�� 4H~�1� w4xF4x� ,'B*'F� C�D� (HDI~� ('1x� HD4����� (HDE'J*xF� F'*J,�� ~'J/'� H1IF/'�I� E�EC'F�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage����F�� 4H~�1FI� 2'�H*� B'E/'D'/x�.� '3('(x*x�� �JD�3IE/I� 2'�H*I� E�F�F� ,'('1D'3I~� 4H~�1D�B� ~1v�1'EE'3F'� BHD� ,�*Cx2�.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���*�1I�������Type���newDeviceListPage���x3*�*��������Use���newDeviceListPage���*x2xE/xCC�� CI1�I2ID��F� ~I1IF*�1� '3~'(IFI�� (x1� ���/ID�4C�F� E'4JF'FI� C�3CIF/�~� (�3I�'*B'F�-('3x~� 4I9'1I~� ,'*B'F�-('3x~� 4I9'1I~� ,'*B'F�-,'1J'D'�� J'CJ� �E�3*I�IF� B�D� E�F�F� ,�2ED�4*�1�4I�I2� C�1�C�.� BJ3xB� �D'1� (x1� ���/ID�4C�F� E'4JF'FI� 3IC'FI1DIEI3'� 3�D� B'1'�.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���D-�,'*� .'1'C*�1IFI� ~'1B*'F/1�/'� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file ++SaneObject����A�d�f� 0;4K��K������� ADF Front��� ++SaneObject����45?:V� B�@V�������Default Type��� ++SaneObject���60;?0�� B�A5:�������Flatbed��� ++SaneObject���060�0@BC� BV7V<V� 0O�B0;4K�.�������Refresh list complete.��� ++SaneObject���10A� B0@BC�������Cancel��� ++ScanDialog���FA:0=5@;5C4V� B>�B0BC�,� 1V@07� :�BV�V7�!�������&Canceling scan,please wait a moment!��� ++ScanDialog���601C�������Close��� ++ScanDialog���1V@=5H5�������Multiple��� ++ScanDialog���4A:0=5@;5C� 15BB5@V=V�� A0=K�:�������Number of pages scanning: ��� ++ScanDialog���A:0=5@�������Scanner��� ++ScanDialog��@�07V@4V�� �7V=45� 10@�,� >=K� �09B0� 607�K�K7� :5;5� <5�?� 535@� AV7� :�?� 15BBV:� A:0=5@;5C4V� >@K=40A0�K7�,� >;� 1V@=5H5� D09;40@4K�� �09B0� 607K;CK=0� �:5;CV� <�<:V=�.� 0109� 1>;K�K7�!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget�����������100 dpi���ScanSettingsWidget�����������1200 dpi���ScanSettingsWidget�����������150 dpi���ScanSettingsWidget�����������2400 dpi���ScanSettingsWidget�����������4800 dpi���ScanSettingsWidget�����������75 dpi���ScanSettingsWidget�����������A4���ScanSettingsWidget�����������A5���ScanSettingsWidget�����������ADF���ScanSettingsWidget���B�A�������Color���ScanSettingsWidget���B�A�������Colour���ScanSettingsWidget���|�07V@3V� C0�KBB0� ?0940;0=CHK=K�� :0B0;>3BK� �735@BC35� @��A0BK� 6>��������5Currently user has no permission to modify directory ���ScanSettingsWidget�����@K;�K�������Device���ScanSettingsWidget���6>�� D09;� 6>;K�:�������File path that does not exist: ���ScanSettingsWidget���"D09;� ?0@0<5B@;5@V������� File settings���ScanSettingsWidget���60;?0�� B�A5:�������Flatbed���ScanSettingsWidget���n60;?0�� A:0=5@;5C� @568<V� 1V@=5H5� A:0=5@;5C4V� �>;40<094K�.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���D>@<0BK�������Format���ScanSettingsWidget���A�@�������Gray���ScanSettingsWidget���AK7K�BK��������Lineart���ScanSettingsWidget���?>HB0� 0@�K;K�������Mail to���ScanSettingsWidget���1V@=5H5�������Multiple���ScanSettingsWidget���0BK�������Name���ScanSettingsWidget���15BB5@�������Pages���ScanSettingsWidget���.:V@C� ���K�B0@K� 6>�� 6>;�:�������Path without access rights: ���ScanSettingsWidget���06K@0BK<4K;K�������� ++Resolution���ScanSettingsWidget���$06K@0BK<4K;K�� 1>A�!�������Resolution is empty!���ScanSettingsWidget���A0�B0C�������Save���ScanSettingsWidget���@5BV=45� A0�B0C�������Save As���ScanSettingsWidget���@5BV=45� A0�B0C�������Save as���ScanSettingsWidget��� A:0=5@� ��@K;�KAK�������Scanner device���ScanSettingsWidget���$:0B0;>3BK� B0�40�K7�������Select a directory���ScanSettingsWidget���60;�K7�������Single���ScanSettingsWidget��� ++�;H5<�������Size���ScanSettingsWidget���$A:0=5@;5C4V� 10AB0C������� ++Start Scan���ScanSettingsWidget���<�BV=4V� A0�B0C������� ++Store text���ScanSettingsWidget���D09;������� The file ���ScanSettingsWidget����1�;� 06K@0BK<4K;K�BK� A:0=5@;5C� �HV=� :�?� C0�KB� :5B54V�,� <��8OB� B0�40�K7�.�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���B�@V�������Type���ScanSettingsWidget�����������Yes���ScanSettingsWidget���<�'�/�'� B0�10AK=� �0<BC�0� 1>;<094K�.�������cannot contain '/' character.���ScanSettingsWidget���P60AK@K=� D09;� @5BV=45� A0�B0C� <�<:V=� 5<5A�.�������cannot save as hidden file.���ScanSettingsWidget����������� scanner01���ScanSettingsWidget���:5�5AB5@�������tips���ScanSettingsWidget���10A� B0@BC�������Cancel���SendMailDialog���601C�������Close���SendMailDialog���@0AB0C�������Confirm���SendMailDialog���A:0=5@�������Scanner���SendMailDialog���FM;5:B@>=4K�� ?>HB0� :;85=BV=� B0�40�K7�������Select email client���SendMailDialog���10A� B0@BC�������Cancel���ShowImageWidget���.10A� B0@BC�.�.�.� :�BV�V7�.�.�.�������Canceling...Please waiting...���ShowImageWidget���0@094K�������Ok���ShowImageWidget���$6�3V@C� A�;C;K�K�.�.�.�������Running beauty ...���ShowImageWidget���&B�75BC� 6�<KAB0@K�.�.�.�������Running rectify ...���ShowImageWidget����&� (K�C������� ++&Save Exit���TitleBar�����������...���TitleBar���BC@0;K�������About���TitleBar���601C�������Close���TitleBar���HK�C�������Exit���TitleBar��� ++?VHV=�������Form���TitleBar��� ++:�<5:�������Help���TitleBar���<0:A8<0;4K�������Maximize���TitleBar���E010@;0<0� �l�a�n� 6�95AV=45� <�BV=4V:� G0B� 6�=5� D09;� 15@C� DC=:F8O;0@K=� �0<B0<0AK7� 5B54V�.� A5@25@� ��@C4K�� �065BV� 6>��.� >;� 1V@=5H5� 040<=K�� 1V@� C0�KBB0� �70@0� �@5:5BB5ACV=� 6�=5� ?0@0;;5;L� 6V15@C� <5=� �01K;40C� �HV=� �>;40C� :�@A5B54V�.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���0709BC�������Minimize���TitleBar��� ++>?F8O�������Option���TitleBar���BV7V<V=� 60�0@BC�������Refresh List���TitleBar����0;?K=0� :5;BV@C�������Restore���TitleBar���A:0=5@�������Scanner���TitleBar���BV:5;59� HK�C�������Straight &Exit���TitleBar���d0�K<40�K� D09;� A0�B0;<094K�.� >=K� A0�B0�K�K7� :5;5� <5�?�������6The current file is not saved. Do you want to save it?���TitleBar���=�A�0�:������� Version: ���TitleBar����K�y�l�i�n� A:0=5@V������� kylin-scanner���TitleBar���A�;C;K��������Beauty��� ToolBarWidget���40�K;40@�������Crop��� ToolBarWidget���09=0�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���B�75BC�������Rectify��� ToolBarWidget���09=0;4K@C�������Rotate��� ToolBarWidget���AC� B0�10AK������� Watermark��� ToolBarWidget����;:59BC�������ZoomIn��� ToolBarWidget����;:59BC�������ZoomOut��� ToolBarWidget��"A:0=5@� 06K@0BK;�0=�.� A:0=5@4V�� �>AK;CK=� 06K@0BA0�K7�,� A:0=5@;5C4V� B>�B0BC� B�9<5AV=� 10AK�K7� =5<5A5� A:0=5@4V�� �0B5� BC@0;K� E010@K=� E010@;0CK=� :�BV�V7�.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���(60�0� A:0=5@� �>AK;4K�.�������New Scanner has been Connected.���UsbHotplugThread���fA�@0C� A:0=5@;V:� ��@K;�KAK�.� �BV=5<V=� :�B5� B�@K�K7�.�.�.�������+Querying scanner device. Please waitting...���UsbHotplugThread����A:0=5@� 06K@0BC�,� A:0=5@� BV7V<V=� 60�0@BC� 1>;K?� B01K;04K�.� �BV=5<V=� :�B5� B�@K�K7�.�.�.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���@A:0=5@� BV7V<V=� 60�0@BC� 0O�B0;4K�.�������Scanner list refresh complete.���UsbHotplugThread���601C�������Close���WaittingDialog���!:0=5@�������Scanner���WaittingDialog���&A:0=5@4V� V74594V�.�.�.�������Searching for scanner...���WaittingDialog���&AC� B0�10AK=� �>AK�K7������� Add watermark���WatermarkDialog���10A� B0@BC�������Cancel���WatermarkDialog���601C�������Close���WatermarkDialog���@0AB0C�������Confirm���WatermarkDialog���A:0=5@�������Scanner���WatermarkDialog���D09;� 0BK�������Filename���main���LA:0=5@;5C� ?0@0<5B@;5@V� 28465BV=� 60AK@C�������Hide scan settings widget���main���D09;4K� 0HK�K7�������Open file <filename>���main����>AC�������Add���newDeviceListPage����>AC�������Alert���newDeviceListPage��� ++1�@K=�������Before���newDeviceListPage���10A� B0@BC�������Cancel���newDeviceListPage���601C�������Close���newDeviceListPage���"��@K;�K;0@� BV7V<V�������Device List���newDeviceListPage�����@K;�K� 0B0CK�:�������Device Name:���newDeviceListPage��� 6�@3V7CHV� 0B0CK�:�������Driver Name:���newDeviceListPage���>@=0BC�������Install���newDeviceListPage���.>@=0BC� A�BAV7� 0O�B0;4K�.�������Installation failed.���newDeviceListPage���>@=0BC� A�BBV�.� >AK� A:0=5@4V� �07V@� ?0940;0=�K�K7� :5;5� <5�?� �U�d�e�v� �0;?K=0� :5;BV@C� �HV=� ��?0940;0=C��� B�9<5AV=� 10AK�K7� �(�:V<HV� ��?8O� A�7V� �065B�)� 6�=5� ��@K;�K� BV7V<V=� 60�0@BC� �HV=� A:0=5@;5C� �>;40=10AK=� �09B0� VA:5� �>AK�K7�.� 535@� AV7� �;V� 45� A:0=5@;5=35=� :5A:V=4V� 6�<KABK� 60;�0ABK@�K�K7� :5;A5�,� �>;<5=� �09B0� VA:5� �>AK?�,� A:0=5@;5C� DC=:F8OAK=� ?0940;0=C� �065B� 1>;04K�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���&4@0925@4V� >@=0BC�.�.�.�������Installing driver...���newDeviceListPage���0BK�������Name���newDeviceListPage���:5;5AV�������Next���newDeviceListPage�����>;� 65BV<4V� 4@0925@;5@� 6>��,� 4@0925@;5@4V� �>;<5=� �>A�K�K7� :5;5� <5�?�������:No available drivers, do you want to manually add drivers?���newDeviceListPage�����������Ok���newDeviceListPage���?@8=B5@�������Printer���newDeviceListPage���A:0=5@�������Scanner���newDeviceListPage���$:0B0;>3BK� B0�40�K7�������Select a directory���newDeviceListPage���A8<2>;�������Symbol���newDeviceListPage����1�;� 4@0925@� �HV=HV� B0@0?B0=�,� �0=409� 40� 1V@� �;H5CAV7� =�B865� BC4K@CK� <�<:V=�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage����1�;� 4@0925@4V� �=4V@CHV� �0<B0<0AK7� 5B54V�.� 4@0925@4V� 0;C� �HV=� ��@K;�K=K�� B8VABV� �=4V@CHVAV=5� E010@;0AK�K7�.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���B�@V�������Type���newDeviceListPage���?0940;0=C�������Use���newDeviceListPage���BV7V<35� 5=3V7V;35=� ?@8=B5@� ��@K;�K;0@K=K�� 10@;K�K=� 1V@� <0H8=0;0@4K� A:0=5@;5?�,� 10AK?� HK�0@�0=K=� �>;<5=� @0AB0C� :5@5:�.� 535@� >;0@� 10@;K�K=� 1V@� <0H8=0;0@4K� A:0=5@;5?�,� 10AK?� HK�0@<0A0�,� >;0@4K� 5;5<5�V7�.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���X�T�h�e� �d�o�c�u�m�e�n�t� �i�s� �i�n� �c�h�a�r�a�c�t�e�r� �r�e�c�o�g�n�i�t�i�o�n� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file +diff --git a/translations/kylin-scanner_kk.ts b/translations/kylin-scanner_kk.ts +index a12ff58..11d8510 100644 +--- a/translations/kylin-scanner_kk.ts ++++ b/translations/kylin-scanner_kk.ts +@@ -112,14 +112,9 @@ + <translation type="vanished">检测扫描设备中,请稍后 ……</translation> + </message> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> +- <translation>كەسكىندەۋ اپپاراتىن تەكسەرٸپ كورىڭىز، ساقتاپ تۇر</translation> ++ <translation>Анықтап көру сканерлері, күту</translation> + </message> + </context> + <context> +@@ -131,12 +126,12 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation>ٸستەتكەلٸ بولاتٸن كەسكىندەۋ اسپابٸ جوق</translation> ++ <translation>Қолжетімді сканерлік құрылғылар жоқ</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> + <source>Connect</source> +- <translation>جالعانۋ</translation> ++ <translation>Қосылу</translation> + </message> + </context> + <context> +@@ -149,7 +144,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>Мәтін оқылмады, қайта емделуіңізді өтінемін</translation> + </message> + </context> + <context> +@@ -157,7 +152,7 @@ + <message> + <location filename="../src/about/about.ui" line="26"/> + <source>Dialog</source> +- <translation>ۋاقىت وزگەرتۋ</translation> ++ <translation>Диалог</translation> + </message> + <message> + <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> +@@ -186,13 +181,13 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> + <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> + <source>Connect scanners, please click scan button to start scanning.</source> +- <translation>كەسكىندەۋنى جالعاۋلٸ، كەسكىندەۋنى باستاۋ ٷشٸن كەسكىندەۋ كىنوپكاسىن تالدا.</translation> ++ <translation>Қабылдауды қосыңыз, сканерлеуді бастау үшін сканерлеу түймесін басыңыз.</translation> + </message> + <message> + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> +- <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> +- <translation>كەسكىندەۋ بايقالمادٸ، جاڭا كەسكىندەۋ كىرەۈزۈپ اسبابٸتٸڭ تٸزٸمدٸكدٸ جاڭالاڭ.</translation> ++ <translatorcomment>Құрылғы тізімін қайтару үшін жаңа сканерге қосылатын сканерлер анықталмады.</translatorcomment> ++ <translation>Құрылғы тізімін қайтару үшін жаңа сканерге қосылатын сканерлер анықталмады.</translation> + </message> + </context> + <context> +@@ -202,10 +197,8 @@ + <translation type="vanished">麒麟扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation type="vanished">сканер</translation> + </message> + <message> + <source>Yes</source> +@@ -236,115 +229,107 @@ + <translation type="vanished">单页扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> +- <translation>كۇشكە يە ەمەس مۇلاھىزىلەر، دالەل-ٸسپاتتاردٸ وزگەرت ياكي باسقا سكاننېرلارنى الماستٸر.</translation> +- </message> +- <message> +- <source>error code:</source> +- <translation type="vanished">错误码:</translation> ++ <translation>жарамсыз аргумент, аргументтерді өзгертіңіз немесе басқа сканерлерді ауыстырыңыз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> +- <translation>كەسكىندەۋىش جەڭىلىپ قالدى، جايمالاۋىشنى تەكسەرٸپ كور ياكي باسقا سكاننېرغا الماستٸر. قيسٸق جايمالاۋىشنى جالعاستى ٸستەتپەكشٸ بولساق، تالداۋ تۇرىن تالدا، تٸزٸمدٸكدٸ جاڭالاپ اسبابٸن قاتە قوزعالت.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, сканерді тексеріңіз немесе басқа сканерлерді ауыстырыңыз. сканерді пайдалануды жалғастырғыңыз келсе, опцияларды басып, құрылғыны қайта іске қосу үшін тізімді жаңартыңыз.</translation> + </message> + <message> +- <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> +- <translation type="vanished">检测到用户手动休眠。请检查扫描仪状态。如果扫描无法继续,则需要手动单击“取消”或刷新列表以恢复设备扫描功能。</translation> +- </message> +- <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> +- <translation>ەسكەرتۋ</translation> ++ <translation>ескерту</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> +- <translation>جاڭا كەسكىندەۋ جالعاندٸ.</translation> ++ <translation>жаңа сканер қосылды.</translation> + </message> + <message> + <source>error code: </source> + <translation type="vanished">错误码:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>Жарайды</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> +- <translation>اسباب قاربالاس، ساقتاپ تۇر ياكي باسقا سكاننېرلارنى ئالماشتۇر.</translation> ++ <translation>құрылғы бос емес, күтіңіз немесе басқа сканерлерді ауыстырыңыз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> +- <translation>حۇجات مەنەن ٴدامدگىن حۇجاتتىن چىقىرىۋەتسىڭىز، حۇجاتلەرنى قويىپ قاتە سكانىرلاڭىز.</translation> ++ <translation>құжаттарды бергіш құжаттардан шығып, қағаздарды қойып, қайтадан сканерлеңіз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> +- <translation>كەسكىندەۋ جوبالاۋى كۇشىنەن قالدىرىلدى.</translation> ++ <translation>сканерлеу операциясы тоқтатылды.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> +- <translation>كەسكىندەۋ جەڭىلىپ قالدى، جوبالاۋ قولدايما.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, операция қолдау көрсетілмейді.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation>سكاننېرلىشى جەڭىلىپ قالدى، حۇجات توقتاپ قالدى.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, құжат бергіш кептелді.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> +- <translation>سكاننېرلىغاندا جەڭىلىپ قالدى، قۇرىلما I/O بارىسىندا قاتەلىك كورىلدى.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, құрылғының енгізу/шығару кезіндегі қате.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> +- <translation>سكاننېرلىغاندا جەڭىلىپ قالدى، ەستە ساقلىغۇسى جوق.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, жад жеткіліксіз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation>كەسكىندەۋ جەڭىلىپ قالدى، بايلىقتى ۇسىنس ەتۋ رەت قىلىندى.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, ресурсқа қол жеткізуден бас тартты.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation>كەسكىندەۋ جەڭىلىپ قالدى، كەسكىندەۋىشتىڭ قاپقىقى اشالٸپ قالدى.</translation> ++ <translation>сканерлеу сәтсіз аяқталды, сканер қақпағы ашық.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation>سەستيما ۇيقتىاۋ، ۇيقتىاۋ تەكسەرىلدى. كەسكىندەۋىشتىڭ نورمال ستەتلۋگە كەپىلدىك ەتۋ ٷشٸن، قاتە قوزعالتۋدى تۇرتىپ كەسكىندەۋىشتىڭ قولدانىلۋىن قاتە قوزغىتىڭلار. قيسٸق كەسكىندەپ قولداناتىن سۋرەتتى جالعاستى جوبالاۋ ورىنداماقشى بولساڭٸز، بٸراق كەسكىندەپ ٸستٸتۋگە قاتىستى رولدار توقتاتٸلٸپ، قاتە قوزعاعاننان كەيىن كۇشكە يە بولادٸ.</translation> ++ <translation>Жүйе тазартылған/тазартылған.Қабылдау қолданбасын қайта бастау үшін сканерді қалыпты пайдалануға кепілдік беріңіз. Егер сіз сканерленген кескінді жұмыстан шығарғыңыз келсе, бас тартуды басыңыз, бірақ сканермен байланысты функциялар тазартылатын болады және қайта бастағаннан кейін әсер етеді.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> +- <translation>قاتە قوزعالتۋ</translation> ++ <translation>қайта іске қосу</translation> + </message> + <message> + <source>Scan failed, please check your scanner or switch other scanners.</source> + <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>жүгіру сұлулығы...</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تارتىپكە سالۋ ...</translation> ++ <translation>түзету жұмыстары...</translation> + </message> + </context> + <context> +@@ -352,41 +337,41 @@ + <message> + <location filename="../src/nodevicewidget.cpp" line="43"/> + <source>Scanner not detected</source> +- <translation>كەسكىندەۋ بايقالمادٸ.</translation> ++ <translation>сканер анықталмады</translation> + </message> + </context> + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> +- <translation>ەلەكتروندٸق حات قاريدارى جوق</translation> ++ <translation>электрондық пошта клиенті жоқ</translation> + </message> + <message> + <source>Scanner</source> + <translation type="vanished">扫描</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> +- <translation>سەستامادا ەلەكتروندٸق حات قاريداردى تابلماي، الدٸمەن ەلەكتروندٸق حات قاريداردى تۇسىرىڭىز.</translation> ++ <translation>жүйеде электрондық пошта клиентін таба алмаймын, алдымен электрондық пошта клиентін орнатыңыз.</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> +- <translation>تۇسىرۋ</translation> ++ <translation>орнату</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + </context> + <context> +@@ -406,62 +391,62 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> +- </message> +- <message> +- <source>Fail to open the scanner, error code </source> +- <translation type="vanished">打开扫描仪失败,错误代码</translation> ++ <translation>Adf дуплекс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> +- <translation>كەسكىندەۋ اشا الاما</translation> ++ <translation>сканерді ашпау</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> +- <translation>اۆتوماتتى</translation> ++ <translation>автоматты</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> +- <translation>كوپ</translation> ++ <translation>бірнеше</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> +- <translation>بىركەلكى تاقتالٸق كەسكىندەۋ</translation> ++ <translation>жалпақ төсек</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="59"/> + <source>Refreshing list. Please wait for the refresh success information...</source> +- <translation>قازىر تٸزٸمدٸكدٸ جاڭالانىپ جاتىر. ۋاكىل حاباردٸڭ جاڭالانۋى كۇتىڭىز...</translation> ++ <translation>жаңарту тізімі. жаңарту сәттілігі туралы ақпаратты күтіңіз...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="65"/> + <source>Scanner is on detecting...</source> +- <translation>كەسكىندەۋ تەكسەرىپ جاتىر...</translation> ++ <translation>сканер анықталуда...</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> +- <translation>جەكە كەسكىندەۋ</translation> ++ <translation>жалғыз</translation> + </message> + </context> + <context> +@@ -471,182 +456,181 @@ + <translation type="vanished">用户</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation>ماسەلە</translation> ++ <translation type="vanished">сұрақ</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation>كەزەكتەگى </translation> ++ <translation type="vanished">ағымдағы</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation> پايدالانۋشٸ</translation> ++ <translation type="vanished">пайдаланушы</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation> الدەقاشان Kylin-scanner نى سٸناۋ قالدى، open نى جابادى </translation> ++ <translation type="vanished">Kylin-сканер ашылды, ашық жабылады</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation>'نىڭ جوبالاۋى. ٴسىز داۋاملاشتۇرامٴسىز؟</translation> ++ <translation type="vanished">операциялары. жалғастырасың ба?</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> +- <translation>رەڭ</translation> ++ <translation>түс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> +- <translation>سۇررەڭ</translation> ++ <translation>сұр</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> +- <translation>سىزىقتىق كەسكىندەۋ</translation> ++ <translation>сызықтық</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> +- <translation>كوڭىلدەگى تۇرى</translation> ++ <translation>әдепкі түрі</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> +- <translation>بىركەلكى تاقتالٸق كەسكىندەۋ</translation> ++ <translation>жалпақ төсек</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> +- <translation>ADF الدى</translation> ++ <translation>Adf алдыңғы</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> +- <translation>ADF ارتىنا</translation> ++ <translation>Adf қайтып</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> ++ <translation>Adf дуплекс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> +- <translation>600 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> +- <translation>300 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> +- <translation>200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> +- <translation>اۆتوماتتى</translation> ++ <translation>автоматты</translation> ++ </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>Уақытты орнату.</translation> + </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + </context> + <context> + <name>SaneObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> +- <translation>كوڭىلدەگى تۇرى</translation> ++ <translation>әдепкі түрі</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> +- <translation>بىركەلكى تاقتالٸق كەسكىندەۋ</translation> ++ <translation>жалпақ төсек</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="416"/> + <source>Refresh list complete.</source> +- <translation>تٸزٸمدٸكدٸ جاڭالاۋ تامامدالدٸ.</translation> ++ <translation>жаңарту тізімі аяқталды.</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> +- <translation>ADF الدى</translation> ++ <translation>Adf алдыңғы</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> +- <translation>ADF ارتىنا</translation> ++ <translation>Adf қайтып</translation> + </message> + <message> + <source>Lineart</source> +@@ -661,58 +645,58 @@ + <translation type="vanished">彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> ++ <translation>Adf дуплекс</translation> + </message> + <message> + <source>Auto</source> + <translation type="vanished">自动</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> +- <translation>200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> +- <translation>300 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> +- <translation>600 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> + <source>Multiple</source> +@@ -722,40 +706,39 @@ + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> +- <translation>شاراپات كەسكىندەۋ سانداردى: </translation> ++ <translation>сканерлеу беттерінің саны:</translation> + </message> + <message> + <source>Number of pages being scanned: </source> + <translation type="vanished">正在扫描页数:</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="153"/> + <source>Canceling scan,please wait a moment!</source> +- <translation>كەسكىندەۋ كۇشىنەن قالدىرىلدى، سەل ساقتاپ تۇر!</translation> ++ <translation>сканерлеуді тоқтату, біраз күтіңіз!</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="182"/> + <source>Multiple</source> +- <translation>كوپ</translation> ++ <translation>бірнеше</translation> + </message> + </context> + <context> +@@ -765,213 +748,208 @@ + <translation type="vanished">开始扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> +- <translation>كەسكىندەۋ اسپابٸ</translation> ++ <translation>сканер құрылғысы</translation> + </message> + <message> + <source>Time</source> + <translation type="vanished">延时</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> +- <translation>حۇجات تەڭشەۋلەرى</translation> ++ <translation>файл параметрлері</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> +- <translation>اسباب</translation> ++ <translation>құрылғы</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> +- <translation>باس مازمۇن تالداۋ</translation> ++ <translation>каталогты таңдаңыз</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> +- <translation>كەزەكتە ٸستەتۋشٸنٸڭ باسمازمۇندى وزگەرتۋ رۇحساتى جوق </translation> ++ <translation>қазіргі уақытта пайдаланушының каталогты өзгертуге рұқсаты жоқ</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> +- <translation>بىركەلكى تاقتالٸق كەسكىندەۋ فورماسى كوپ رەت كەسكىندەۋنى قولدامايدى.</translation> ++ <translation>жалпақ сканерлеу режимі бірнеше сканерлеуді қолдамайды.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> +- <translation>كوپ</translation> ++ <translation>бірнеше</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation>نۇ پارىقتاندىرۋ قاتىناسى وتە ۇزىن ۋاقىت كەتەدى، كوڭىل قويىپ تالدا.</translation> ++ <translation>бұл ажыратымдылықты сканерлеу үшін көп уақыт кетеді, мұқият таңдаңыз.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation>ەسكەرتۋ</translation> ++ <translation type="vanished">ескерту</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> +- <translation>بەتتەر</translation> ++ <translation>беттер</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> +- <translation>تۇرى</translation> ++ <translation>түрі</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> +- <translation>رەڭ</translation> ++ <translation>түс</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> +- <translation>تۇنىقتىعى</translation> ++ <translation>ажыратымдылық</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> +- <translation>ۇلكەن - كشىلگى</translation> ++ <translation>өлшем</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> +- <translation>ٴپىشىنى</translation> ++ <translation>форматы</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> +- <translation>ات-فاميليا</translation> ++ <translation>аты</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> +- <translation>كەسكىندەۋ01</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> +- <translation>ساقتاۋ</translation> ++ <translation>сақтау</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> +- <translation>ەلەكتروندٸق حات ارقىلى</translation> ++ <translation>пошта арқылы</translation> + </message> + <message> + <source>Send email</source> + <translation type="vanished">发送至邮箱</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> +- <translation>گە ساقتاۋ</translation> ++ <translation>ретінде сақтау</translation> + </message> + <message> + <source>No available scanners</source> + <translation type="vanished">无可用设备</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> +- <translation>جەكە كەسكىندەۋ</translation> ++ <translation>жалғыз</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> +- </message> +- <message> +- <source>This resolution will take a loog time to scan, please choose carelly.</source> +- <translation type="vanished">该分辨率将会花费很长时间扫描,请谨慎选择!</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> +- <translation>'/' خاراكتېرىنى ٶز ىشىنە الا المايدى.</translation> ++ <translation>'/' таңбасын қамтуға болмайды.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> +- <translation>جاسىرىن حۇجات ساپاسىندا ساقتاعالى بولمايدى.</translation> ++ <translation>жасырын файл ретінде сақтау мүмкін емес.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> +- <translation>ساقتاۋ</translation> ++ <translation>ретінде сақтау</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> +- <translation>ۇسىنس ۇقىعى جوق جول: </translation> ++ <translation>кіру құқықтары жоқ жол:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> +- <translation>ساقتالعان بولماعان حۇجات جولى: </translation> ++ <translation>жоқ файл жолы:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> +- <translation> اشالٸپ تۇرعىزىلىپ جاتىر، ونى جابىپ قويامدۇق؟ قيسٸق كوپ بەتتٸك سىكاننېرلاشنى اتقار ورىنداسا، بالكٸم كوپ حۇجاتتاردىڭ قاپلىنىشىنى كەتىرىپ شٸعۋٸ مۇمكان. ساقتانۋ ىستەڭ!</translation> ++ <translation>қазірдің өзінде бар, оны қайта жазғыңыз келе ме? егер сіз көп беттік сканерлеуді орындасаңыз, ол бірнеше файлдардың қайта жазылуына әкелуі мүмкін. абай болыңыз!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> +- <translation>سىكاننېرلاشنى باستاۋ</translation> ++ <translation>сканерлеуді бастау</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> +- <translation>تەكىستىن ساقتاۋ</translation> ++ <translation>мәтінді сақтау</translation> + </message> + <message> + <source>Save as dialog</source> + <translation type="vanished">另存为</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> +- <translation>حۇجات </translation> ++ <translation>файл</translation> + </message> + <message> + <source> already exists, do you want to overwrite it?</source> + <translation type="vanished">已存在,您想覆盖它吗?</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> +- <translation>ەسكەرتپەۋ</translation> ++ <translation>кеңестер</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> +- <translation>رەڭ</translation> ++ <translation>түс</translation> + </message> + <message> + <source>3s</source> +@@ -994,74 +972,73 @@ + <translation type="vanished">15 秒</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> +- <translation>بىركەلكى تاقتالٸق كەسكىندەۋ</translation> ++ <translation>жалпақ төсек</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> +- <translation>ADF</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> +- <translation>سۇررەڭ</translation> ++ <translation>сұр</translation> + </message> + <message> + <source>Cancel</source> + <translation type="vanished">取消</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> +- <translation>سىزىقتىق كەسكىندەۋ</translation> ++ <translation>сызықтық</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> +- <translation>شەشىم ەتۋ ەتۋ كۇيرەتتى قۇرعاق!</translation> ++ <translation>ажыратымдылық бос!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> +- <translation>A4</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> +- <translation>A5</translation> ++ <translation></translation> + </message> + <message> + <source>Scanning images's length cannot be large than 252</source> + <translation type="vanished">扫描文档名称的长度不能超过252。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation type="vanished">сканер</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> +- <translation>سونداي</translation> ++ <translation>Иә</translation> + </message> + </context> + <context> +@@ -1094,60 +1071,60 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> +- <translation>ەلەكتروندٸق حات قاريداردى تالداۋ</translation> ++ <translation>электрондық пошта клиентін таңдаңыз</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> +- <translation>تۇراقتاندىرۋ</translation> ++ <translation>растау</translation> + </message> + </context> + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>Жарайды</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> +- <translation>كۇشىنەن قالدۇرۇلۇۋاتىدۇ... سەل سابٸر ىستەڭ...</translation> ++ <translation>бас тарту... күтіңіз...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>жүгіру сұлулығы...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تارتىپكە سالۋ ...</translation> ++ <translation>түзету жұмыстары...</translation> + </message> + </context> + <context> +@@ -1155,24 +1132,24 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="29"/> + <source>Form</source> +- <translation>Form</translation> ++ <translation>пішін</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation>kylin-كەسكىندەۋ</translation> ++ <translation>Kylin сканері</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="176"/> + <source>Option</source> +- <translation>تالدانبا</translation> ++ <translation>опция</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="179"/> +@@ -1182,18 +1159,18 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="220"/> + <source>Minimize</source> +- <translation>كىشرەيتۋ</translation> ++ <translation>азайту</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="261"/> + <location filename="../src/titlebar/titlebar.cpp" line="145"/> + <source>Maximize</source> +- <translation>ەڭ ۇلكەن شەككە</translation> ++ <translation>максималды</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="308"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> + <source>Maxmize</source> +@@ -1202,42 +1179,42 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="53"/> + <source>Refresh List</source> +- <translation>تٸزٸمدٸكدٸ جاڭالاۋ</translation> ++ <translation>тізімін жаңарту</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="70"/> + <source>Help</source> +- <translation>جاردەم</translation> ++ <translation>көмек</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="74"/> + <source>About</source> +- <translation>جايٸندا</translation> ++ <translation>туралы</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="76"/> + <source>Version: </source> +- <translation>نۇسقاسى: </translation> ++ <translation>нұсқа:</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="77"/> + <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> +- <translation>حابار LAN دا قىسقا اڭگىمەلەسۋ ۋا حۇجات جوتكەۋ رولدارٸ مەنەن قامدالادٸ. قىزىمەت وتەۋى قۇرۋدىڭ قاجەتى جوق. ول كوپ ادامنىڭ بٸرەۋ ۋاقىتتا ھەمكارلىشىۋېلىشىنى ۋا پاراللەل جولداۋ ۋا قابىلداۋ ورىنداۋدى قولدايدى.</translation> ++ <translation>хабарлама lan жүйесінде мәтіндік чат және файл беру функцияларын қамтамасыз етеді. сервер құрудың қажеті жоқ. ол бірнеше адамның бір уақытта өзара әрекеттесуін және параллель жіберу мен қабылдау үшін қолдау көрсетеді.</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="87"/> + <source>Exit</source> +- <translation>شىعۋ اۋٸزٸ</translation> ++ <translation>шығу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="142"/> + <source>Restore</source> +- <translation>قالپىنا كەلتىرىلگەن</translation> ++ <translation>қалпына келтіру</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="192"/> + <source>The current file is not saved. Do you want to save it?</source> +- <translation>كەزەكتەگى حۇجات ساقتالمدى. ٴسىز ونى ساقتاماقشما؟</translation> ++ <translation>ағымдағы файл сақталмайды. оны сақтағыңыз келе ме?</translation> + </message> + <message> + <source>The current document is not saved. Do you want to save it?</source> +@@ -1246,69 +1223,69 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="196"/> + <source>Straight &Exit</source> +- <translation>تۇز&شىعۋ</translation> ++ <translation>тікелей шығу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="197"/> + <source>&Save Exit</source> +- <translation>شىعۋ اۋزىن ساقتاۋ</translation> ++ <translation>& Шығу</translation> + </message> + </context> + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> +- <translation>گۈزەللەشتۈرۈش</translation> ++ <translation>сұлулық</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> +- <translation>تارتىپكە سالۋ</translation> ++ <translation>түзету</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> + <translation>OCR</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> +- <translation>زىرائەتلەر</translation> ++ <translation>дақылдар</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> +- <translation>اينالدىرۋ</translation> ++ <translation>айналдыру</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> +- <translation>اينا قٸيال</translation> ++ <translation>айна</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> +- <translation>سۋ بەلگى</translation> ++ <translation>су таңбасы</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> +- <translation>ۇلكەيتۋ</translation> ++ <translation>үлкейту</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> +- <translation>فوكىس ارالىعىن تەڭشەۋ</translation> ++ <translation>үлкейту</translation> + </message> + </context> + <context> +@@ -1332,86 +1309,91 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="95"/> + <source>Querying scanner device. Please waitting...</source> +- <translation>كەسكىندەۋ اسبابٸن تەكسەرىپ جاتىر. سەل سابٸر ىستەڭ. . .</translation> ++ <translation>сұрау сканерлік құрылғысы. өтінемін күте тұрыңыз...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="119"/> + <source>New Scanner has been Connected.</source> +- <translation>جاڭا كەسكىندەۋ جالعاندٸ.</translation> ++ <translation>жаңа сканер қосылды.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="129"/> + <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> +- <translation>كەسكىندەۋ ٷزٸلٸپ كەتتى. قيسٸق كەسكىندەۋنىڭ ورنالاسٸۋٸ ۇزىلسە، سىكاننېرلاشنى كۇشىنەن قالدىرىڭ ياكي سىكانىرلىغۇچنىڭ قاتە حاباردى دوكلات ورىنداۋىن ساقتا.</translation> ++ <translation>сканер ажыратылған. сканердің қосылуын ажыратсаңыз, сканерлеуді тоқтату түймесін басыңыз немесе сканердің қате туралы хабарын хабарлауын күтіңіз.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="135"/> + <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> +- <translation>كەسكىندەۋ قازىر ٷزٸلٸپ جاتٸر، كەسكىندەۋ تٸزٸمدٸكدٸ جاڭالانىپ جاتىر. سەل سابٸر ىستەڭ. . .</translation> ++ <translation>сканер ажырату, сканер тізімін жаңарту болып табылады. өтінемін күте тұрыңыз...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="150"/> + <source>Scanner list refresh complete.</source> +- <translation>كەسكىندەۋ پىروگىرامماسى تٸزٸمدٸكدٸ جاڭالاۋ تامامدالدٸ.</translation> ++ <translation>сканер тізімін жаңарту аяқталды.</translation> + </message> + </context> + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>Сканер</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> +- <translation>جايمالاۋىشنى ٸزدەپ جاتٸر...</translation> ++ <translation>сканерді іздейді...</translation> + </message> + </context> + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> +- <translation>سۋ بەلگىسى قوسۋ</translation> ++ <translation>су таңбасын қосыңыз</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> +- <translation>تۇراقتاندىرۋ</translation> ++ <translation>растау</translation> + </message> + </context> + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> +- <translation>حۇجاتتى <filename>ٸشٸۋ</translation> ++ <translation>файлды ашыңыз</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> +- <translation>حۇجات مى</translation> ++ <translation>файл аты</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> +- <translation>كەسكىندەۋ تەڭشەۋلەردٸ ۋىكىپېدىيەنى جاسىرۋ</translation> ++ <translation>сканерлеу параметрлері виджетін жасыру</translation> + </message> + </context> + <context> +@@ -1419,137 +1401,133 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Name</source> +- <translation>ات-فاميليا</translation> ++ <translation>аты</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Symbol</source> +- <translation>تىنش بەلگى</translation> ++ <translation>символ</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation>تۇرى</translation> ++ <translation>түрі</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> +- <translation>ەسكەرتۋ</translation> ++ <translation>қосу</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation>تٸزٸمدٸككە كىرگىزىلگەن پىرىنتېر اسپابىنىڭ بٸر گەۋدىلەشكەن ماشينانى كەسكىندەپ بېسىۋاتقان-باسٸپ شىعارىپ جاتقان-باسٸپ شىعارىپ جاتقان-جاريالاۋ ياكي ەمەستىگىن قۇل مەنەن جەزملەشتۈرۈشىڭىز كەرەك. قيسٸق ۇلار بٸر گەۋدىلەشكەن ماشينانى سىكانىرلىمىسا، سەل قارا.</translation> ++ <translation>тізімге енгізілген принтер құрылғыларының барлығын бір машиналарды сканерлеп, басып шығарғанын қолмен растау керек. егер олар барлығын бір машиналарды сканерлеп, басып шығармаса, оларды елемеңіз.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> + <source>Close</source> +- <translation>تىعنداۋ</translation> ++ <translation>жабу</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="84"/> + <source>Device List</source> +- <translation>اسباب تٸزٸمدٸگٸ</translation> ++ <translation>құрылғылар тізімі</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> +- <translation>كۇشىنەن قالدىرۋ</translation> ++ <translation>бас тарту</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="98"/> + <source>Next</source> +- <translation>كەيىنگى باسقىش</translation> ++ <translation>келесі</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="118"/> + <source>Before</source> +- <translation>الدٸڭعٸ باسقىش</translation> ++ <translation>бұрын</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="119"/> + <source>Install</source> +- <translation>تۇسىرۋ</translation> ++ <translation>орнату</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> +- <translation>كەسكىندەۋ</translation> ++ <translation>сканер</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> +- <translation>پىرىنتېر</translation> ++ <translation>принтер</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> +- <translation>اسباب اتٸ:</translation> ++ <translation>құрылғы атауы:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> +- <translation>قوزعالتۋ اسبابى پىروگىرامماسى مى:</translation> ++ <translation>жүргізуші атауы:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation>نۇ شوپەر ٷشٸنشٸ جاقتان كەل بولىپ، بارٸ ولشەۋگە بولمايتٸن ناتيجە پايدا ورىنداۋى مۇمكان.</translation> ++ <translation>бұл драйвер үшінші тараптан, қандай да бір өлшеусіз нәтиже тудыруы мүмкін.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation>نۇ شوپۇرنى زاۆوت قامدالادٸ. اسبابٸتٸڭ ۇيلەسىمدى زاۆوتى مەنەن جابارلاسىپ شوپۇرلۇق پرٶگرامماسنا قول جەتكٸز.</translation> ++ <translation>бұл драйверді өндіруші қамтамасыз етеді. драйверді алу үшін құрылғының тиісті өндірушісіне хабарласыңыз.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation>ٸستەتكەلٸ بولاتٸن قوزعالتۋ پىروگىرامماسى جوق، قوزعالتۋ اسبابىن قولدا قوساسىز با؟</translation> ++ <translation>қол жетімді драйверлер жоқ, драйверлерді қолмен қосқыңыз келе ме?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> +- <translation>قوسۋ</translation> ++ <translation>қосу</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> +- <translation>قوزعالتۋ پىروگىرامماسى تۇسىرىلپ جاتىر...</translation> ++ <translation>драйверді орнату...</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation>قۇراستىرۋ ناتيجەلى قالدى. قازىر نۇ جايمالاۋىشنى ٸستٸتۋگە بارما؟ «ٸستەتۋ» نى تۇرتىپ Udev ( باسقارۋشٸسٸ قۇپيا نومەرى ٴسوزسىز ) نى قاتە ورنالاسترعان ورىنداپ، كەسكىندەۋ قۇلدانىلۋىن قاتە قوزعالتىپ اسباب تٸزٸمدٸكدٸ جاڭالاڭىز. قيسٸق جانەدە كەسكىندەپ قۇلداناتىن سۋرەتتى جالعاستى جوبالاۋ ورىنداماقشى بولساڭٸز، قۇل مەنەن قاتە قوزغىتىلىشى ونىڭ ۇستىنە كەسكىندەۋ قابٸلەتتٸ ٸستەتۋىڭىز كەرەك.</translation> +- </message> +- <message> +- <source>Installation successful. Do you want to use this scanner now?</source> +- <translation type="vanished">安装成功。你想现在使用这个扫描仪吗?</translation> ++ <translation>орнату сәтті. осы сканерді қазір пайдаланғыңыз келе ме? Udev қалпына келтіру үшін «пайдалану» түймесін басыңыз (әкімші құпия сөзі қажет) және құрылғы тізімін жаңарту үшін сканерлеу қолданбасын қайта іске қосыңыз. егер сіз әлі де сканерленген кескінді жұмысты жалғастырғыңыз келсе, қолмен қайта іске қосып, сканерлеу функциясын пайдалану қажет болады.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> +- <translation>ٸستەتۋ</translation> ++ <translation>пайдалану</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> +- <translation>قۇراستىرۋ جەڭىلىپ قالدى.</translation> ++ <translation>орнату сәтсіз аяқталды.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> +- <translation>باس مازمۇن تالداۋ</translation> ++ <translation>каталогты таңдаңыз</translation> + </message> + </context> + <context> +@@ -1559,7 +1537,7 @@ + <location filename="../src/showocrwidget.cpp" line="157"/> + <location filename="../src/showocrwidget.cpp" line="165"/> + <source>The document is in character recognition ...</source> +- <translation>حۇجات خاراكتېرىنى پارقتاندرۋدا ...</translation> ++ <translation>The document is in character recognition ...</translation> + </message> + </context> + </TS> +diff --git a/translations/kylin-scanner_ky.qm b/translations/kylin-scanner_ky.qm +index f66e24c..cf92276 100644 +--- a/translations/kylin-scanner_ky.qm ++++ b/translations/kylin-scanner_ky.qm +@@ -1,72 +1,78 @@ +-<�d��!�`���B�����D��)���E��*��[�����[��9���[��U���1��;S��E������E���"���E���*L��G���L��S���B���\���Y���_���5��h��� ������|�����t��`��B����;��֍��<���������.|��0��<9�H5��/��H5��T�L���TJ�����1h����3V��e��5���e��Y���s��7X�%����i�,D���J��G����;s�H,���2�H,���*|�H,���L6�I�~��}�I����@��J6���/�J6��� ��J6���%~�J6���7��J6���;��J6���H��J6���JD�J6���M�Jcb����Jcb��*��PFE��?)�V}���/��Z�|��_�Z�|��NG�]������aҤ����f�~���������N���\n���������+ �J��M�f&���C�x$^�� Uz�.��N���3��,��u0��%�0���-`���������.�J����\�d�.�������/�ki��z�ki��"g�ki��)�����0�����M�2kY���2kY�� �2kY��(�ky���,&�kY��N�kY��!)�kY��(������A��օ��Lq�I���f�I�����I��� C�I���$��I���7��I���9�I���I��I���L��6���*��ϕ��+���W����JH��=�JH���JH��"�֓���.A"����2h)��2h)�� �2h)��(�2kY��2kY��!]@�b��BTg�^��?buJ>��H��^��W������C�n��5��N%��"�N%��3 �^��G+�9\��V�F���K�a���C2kY���2kY��!�9$���0�@Kb���[����ad����������������F��^�������4���.��V�2h9���2h9��!�2h9��);L����l����4Ip�>��H9�Z���U��6����Έ���Έ���#p�`����M����?M����#8T����7r���3������������"������B�ʨ����ʶ���?��F5��<f�m���� #?���8� 2kY��I 2kY��"3 ?�T��M< JV���Y� `3���3� �t���1� �v���1� �T���I �T���� �T���&D �T���2 �T���8H �T���@* �T���J� �T���U� ����A\ +-d����8 +-d����Jw +-eK����� +-t�.��I( +-�U���A� +-����0 +-�e��C@ +-� ���<�O~��6z/����S�2h��2h��!�2h��)zE�9��2�E�9��V8ʫ��� ����Kƞ�� +-x���$1d��?�;e��h;e��%�;e��/ovx���:�x������������N��� ���� (���&x (���� (����K (����#� (����-� c�^��Fq oEK��I� ��/��T� �7T��@\ ���� ����:'����g����$��.��9P)�E��2Ue��f۾��rf۾��:���n��Di��]����jI3C'FFI1/HH� ,'(/I9IF� *�C4�1I~� � � � C�1��� 3'B*'~� � *�1���������Detect scanners, please waiting���DetectPageWidget����D'F���������Connect���FailedPageWidget���\I4*�*C�DI� � (HDH*�19'F� I3C'FFI1/HH� ,'(/��3�� ,HB�������No available scan devices���FailedPageWidget����('BI*� �2��1*�4�������Dialog���KYCAboutDialog����I3C'FFI1/HHFI� �D'�� I3C'FFI1/HHFI� ('4*HH� ���F� � I3C'FFI1/HH� C�F�~C'3IF� ���I��.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����3C'FF�1� ('JB'D('/I� ,'�I� 3C'FF�1� CIJI1I~� � ,'(/��3�F�F� *I2IE/I�IF� � ,'�ID'��.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���(,'�I� 3C'FF�1� �D'F/I�.�������!A new Scanner has been connected.��� +-MainWidget����3C�1*���������Alert��� +-MainWidget���"'19'/'F� � B'D*I1I4�������Cancel��� +-MainWidget����4'JE'F� 'D/I1'4� 3'B*'~� � *�1��� C�1�F�4*�1�� ('4B'� 3C'FF�1D'1FI� 'DE'4*I1I��.�������2Device busy, please wait or switch other scanners.��� +-MainWidget�����,�*� E�F�F� B'E/HH��F�� �,�**IF� �I9'1/I�I2� �,�*D�1FI� BHJ�~� B'J1'� I3C'FFI1/'��.�������EDocument feeder out of documents, please place papers and scan again.��� +-MainWidget�����3�~� �E�3� E�D'�I2ID�1� /'DID�-/'DID/�1/I� � � �2��1*��� C�1�F�4*�1�� ('4B'� 3C'FF�1D'1FI� 'DE'4*I1I��.�������CInvalid argument, please change arguments or switch other scanners.��� ++<�d��!�`���B�����D��%���E��%���[����[��3���[��L���1��4���E������E������E���%���G���D��S���;���\���Q��_���/��h��� ������������x��`��;8����5S�֍��5~����D����)���0��5��H5��*j�H5��Kj�L���K������+�����-���e��/���e��P���s��1R�,D���C'�G����4��H,�����H,���DR�I�~����I����9��J6���G�J6���7�J6���!\�J6���1��J6���5'�J6���A&�J6���B��J6���E �Jcb����Jcb��&(�PFE��8q�V}���*��Z�|��w�Z�|��F%�]���� �aҤ����f�~�� ++������F���\n�� $������&� �J��E�f&���<�x$^���z�.��F`��3��'��u0��!�0���(����������)�J����S�d�.������)��ki����ki����ki��%y����+�����E�2kY��k2kY��h2kY��$�ky���'��kY����kY����kY��$������;��օ��D��I�����I����I�����I��� ��I���1��I���2��I���B<�I���D��6���&Z�ϕ��'W��W����JH��O�JH���JH��!�����B֓���)U"����2h)���2h)���2h)��$�2kY���2kY���@�b��;lg�^��8�uJ>��6��^��O-�����;��n��0"�N%��8�N%��-Q�^��?��9\��M�F���C�a���<g2kY��2kY��(9$���+f@Kb���d�����������$����>{��^�����n��l����.���.��N2h9���2h9��2h9��%L����l����.cp�>��@��Z���M�6���Έ����Έ�����`���VM����?M����`T����1"r���.�����������������;�ʨ���;ʶ���9 �F5��5��m���\ #?���2t 2kY��c 2kY��u ?�T��E> JV���QD `3���-� �t���,/ �v���,m �T���� �T���"& �T���2> �T���9f �T���AX �T���B� �T���M? ����:� ++d����2 ++d����B� ++eK����� ++t�.��A� ++�U���:� ++����*� ++�e��<* ++� ���6O~��0�/����K2h��?2h��N2h��%JE�9��,�E�9��Mx����CXƞ�� ++���� 1d��8�;e��l;e��!�;e��*5vx���4�x������N��� (���"X (����( (���� (����� (����(J c�^��>� oEK��A� ��/��K� �7T��9� ����{ ����3�'����g���� ��.��3,)�E��,�e��f۾���f۾��4=��n��<�i��TN���F!:0=5@;5@48� 0=K:B>>�,� AC@0=KG�,� :�B���������Detect scanners, please waiting���DetectPageWidget���"CB0HCC�������Connect���FailedPageWidget���@5B:8;8:B��� A:0=5@;5C� B�7<�:B�@��������No available scan devices���FailedPageWidget���J"5:ABB8� >:C9� 0;109� :0;4K�,� :09@0� :09@0�������"Unable to read text, please retrey���ImageOperationOCR���80;>3�������Dialog���KYCAboutDialog����!:0=5@;5@48� BCB0HBK@K�K7�,� A:0=5@;5C48� 10HB>>� �G�=� A:0=5@;5C� 10A:KGK=� 10AK�K7�.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����-G� :0=409� A:0=5@� B01K;30=� 6>:�,� 0??0@0B� B87<5A8=� A5@38B��� �G�=� 60�K� A:0=5@� BCB0HBK@CC�.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���40�K� !:0==5@� BCB0HBK@K;4K�.�������!A new Scanner has been connected.��� ++MainWidget���-A:5@B���������Alert��� ++MainWidget���>::>� GK30@CC�������Cancel��� ++MainWidget���|@=>B<>� <5=5=� 0;5:�,� :�B:�;�� 65� 10H:0� A:0=5@;5@48� 0;<0HBK@K�K7�.�������2Device busy, please wait or switch other scanners.��� ++MainWidget����>:C<5=BB5@45=� 07K:B0=4K@CCGC=C� 4>:C<5=BB5HB8@8�87�,� :030740@4K� 60930HBK@K�K7� 60=0� :09@040=� A:0=5@;5C8�87�.�������EDocument feeder out of documents, please place papers and scan again.��� ++MainWidget����0@0:AK7� 0@3C<5=B�,� AC@0=KG�,� 0@3C<5=BB5@48� �73�@B��� 65� 10H:0� A:0=5@;5@48� :>B>@CC�.�������CInvalid argument, please change arguments or switch other scanners.��� + MainWidget��� +-E'B�D�������Ok��� +-MainWidget���B'J1'� BH29H*���������Restart��� +-MainWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...��� +-MainWidget���F��2�DD�4*�1�4FI� *'1*I~C�� 3'D��� � �.�.�.�������Running rectify ...��� +-MainWidget����I3C'FFI1/HH� ,��ID��� (HD/�� � ('JDI9IF� 2IJ'1'*� ,'3HH� '*B'1��� � B'*'1� '*B'1ID/I� �.�������0Scan failed, Access to resource has been denied.��� +-MainWidget���`3C'FF�1DI4I� ,��ID��� (HD/�� � �,�*� � � *HB*H~� B'D/I�.�������$Scan failed, Document fedder jammed.��� +-MainWidget����3C'FF�1DI:'F/'� ,��ID��� (HD/�� � B�1�DE'� �I�/�O� ('1I4F/'� B'*''DIB� � C�1�D/��.�������%Scan failed, Error during device I/O.��� +-MainWidget���h3C'FF�1DI:'F/'� ,��ID��� (HD/�� � /ID/�� � 3'BDI:�3I� ,HB�.�������Scan failed, Out of memory.��� +-MainWidget���|I3C'FFI1/HH� ,��ID��� (HD/�� � 3C'FF�1FI�� B'~BIBI� '�IDI~� � (HD/�� �.�������#Scan failed, Scanner cover is open.��� +-MainWidget���fI3C'FFI1/HH� ,��ID��� (HD/�� � E'4B�D/'F��� � BHD/H(H/��.�������(Scan failed, operation is not supported.��� +-MainWidget���I3C'FFI1/HH� ,��ID��� (HD/�� � � I3C'FI1/I� *�C4�1I~� � ('9I�� C�1�F�4*�1�� ('4B'� 3C'FF�1:'� 'DE'4*I1I��.� ���1� � I3C'FI1/I� ,'D9'4*��� � I4*�*E�C�I� (HD3HB� *'F/'4� � *�1�F� ���I�� *I2IE/IC*I� � ,'�ID'~� '3~'~*I� B'J1'� � � BH29H*���.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� +-MainWidget���TI3C'FFI1/HH� E'49�D'*I� '19'/'F� � B'D*I1ID/I�.�������"Scan operation has been cancelled.��� +-MainWidget���3C'FF�1�������Scanner��� +-MainWidget���3''E'DIB� � �B*HH� �B*HH� *�C4�1ID/I�.� 3C'FF�1FI�� FH1E''D� � I4*�*IDI4IF�� ��(HD��� � ,'3HH� '*B'1��� � ���F� � B'J1'� BH29H*�4*�� � ���I~� 3C'FF�1FI�� BHD/HF��3�F� B'J1'� BH2:I*I�D'1�.� ���1� � 3IC'FF�1D'~� I4*�*ID�*�19'F� � 3�1�**�� ,'D9'4*��� � E'4B�D/'F��� � BIDE'B�I� (HD3H��2� (I1HB� 3IC'FF�1D'~� I4*�*I4C�� � ('JD'FI4*��� ,�F/�E/�1� *HB*HD�~� B'J1'� BH29H9HF/HF� CIJIF� C���F�� ��� (HDEHB� � (HDH*� �.������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� +-MainWidget���&3C'FF�1� ('JB'D('/I�.�������Scanner not detected���NoDeviceWidget���"'19'/'F� � B'D*I1I4�������Cancel���NoMailDialog��� +-,'(���������Close���NoMailDialog���B'�'DHH�������Install���NoMailDialog���F�D�C*I1HF/�B� ,HD/HFEH� � .�1I/'1I� ,HB�������No email client���NoMailDialog����3�3*IE'/'� �D�C*I1HF/�B� ,HD/HFEH� � 'D'1E'FIF� *'~'DE'J� 'D/IF� �D�C*I1HF/�B� ,HD/HFEH� � 'D'1E'FIF� B'�'D'��.�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QApplication���'~*HE'**IC�������Auto���QApplication��� 3C'FF�1� '�'D('/I�������Fail to open the scanner���QApplication���2(I1/�J� � � *'B*'DIB� 3C'FF�1�������Flatbed���QApplication���C�~�������Multiple���QApplication����'2I1� *I2IE/IC*I� � ,'�I1*I~� ,'*'*�.� ,��I4� ���1�F�F� ,'�ID'F�3�� C�*���.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���3C'FF�1�������Scanner���QApplication���03C'FF�1� *�C4�1I~� '*'*�.�.�.�������Scanner is on detecting...���QApplication��� ,�C�� I3C'FFI1/HH�������Single���QApplication���� I4*�*����������� User���QObject���t� *��� E�1/'� � �K�y�l�i�n�-�s�c�a�n�n�e�r� FI� '�I~� (HD/�� � �o�p�e�n� FI� (�CI*�*� �������3 has already opened kylin-scanner, open will close ���QObject���L�'FI�� � E'49�D'*I�.� 3I2� � ,'D9'4*I1'3I2(I������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� '1*IF'�������ADF Back���QObject����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QObject����A�D�F� 'D/I������� ADF Front���QObject���'~*HE'**IC�������Auto���QObject���*�3�������Color���QObject�����2�C*�CI� �������Current ���QObject���HJ�F/'BI� � *�1��������Default Type���QObject���2(I1/�J� � � *'B*'DIB� 3C'FF�1�������Flatbed���QObject���3�1�������Gray���QObject���*3I2IB*��� � I3C'FFI1/HH�������Lineart���QObject���C�4�D��������Question���QObject���"'19'/'F� � B'D*I1I4�������Cancel��� RunningDialog��� +-,'(���������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� +-SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� +-SaneObject����1�5�0� �d�p�i�������150 dpi��� +-SaneObject����2�0�0� �d�p�i�������200 dpi��� +-SaneObject����2�4�0�0� �d�p�i�������2400 dpi��� +-SaneObject����3�0�0� �d�p�i�������300 dpi��� +-SaneObject����4�8�0�0� �d�p�i�������4800 dpi��� +-SaneObject����6�0�0� �d�p�i�������600 dpi��� +-SaneObject����7�5� �d�p�i�������75 dpi��� +-SaneObject����A�D�F�������ADF��� +-SaneObject����A�D�F� '1*IF'�������ADF Back��� +-SaneObject����A�D�F� �D�u�p�l�e�x������� ++0:C;�������Ok��� ++MainWidget���09@0� 8HB5B���������Restart��� ++MainWidget���&'C@:0?� AC;CC;C:� �.�.�.�������Running beauty ...��� ++MainWidget��� 'C@:>>� >�4>?� �.�.�.�������Running rectify ...��� ++MainWidget���`�S�c�a�n� �f�a�i�l�e�d�,� �A�c�c�e�s�s� �t�o� �r�e�s�o�u�r�c�e� �h�a�s� �b�e�e�n� �d�e�n�i�e�d�.�������0Scan failed, Access to resource has been denied.��� ++MainWidget���l!:0=5@;5C� 8H:5� 0H?04K�,� >:C<5=B� D545@0;� BK3K;K?� :0;4K�.�������$Scan failed, Document fedder jammed.��� ++MainWidget���p!:0=5@;5C� 8H:5� 0H?04K�,� �I�/�O� >@=>B<>AC=C=� CGC@C=403K� :0B0�.�������%Scan failed, Error during device I/O.��� ++MainWidget���R!:0=5@;5C� 8H:5� 0H?04K�,� MA� BCBC<40=� GK3K?�.�������Scan failed, Out of memory.��� ++MainWidget���X!:0=5@;5C� 8H:5� 0H?04K�,� !:0=5@� <C:010AK� 0GK:�.�������#Scan failed, Scanner cover is open.��� ++MainWidget���V!:0=5@;5C� 8H:5� 0H?04K�,� >?5@0F8O� :>;4>;1>9B�.�������(Scan failed, operation is not supported.��� ++MainWidget���!:0=5@;5C� 8H:5� 0H?04K�,� AC@0=KG�,� A8748=� A:0=5@� B5:H5@��� 65� 10H:0� A:0=5@;5@48� :>B>@CC�.� -35@� A:0=5@48� :>;4>=CC=C� C;0=BCC=C� :00;0A0�K7�,� ?0@0<5B@;5@48� GK:K;40BK?�,� 0??0@0BBK� :09@0� 8HB5B��� �G�=� B87<5=8� 60�K@BK�K7�.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� ++MainWidget���L!:0=5@;5C� >?5@0F8OAK� 6>::>� GK30@K;30=�.�������"Scan operation has been cancelled.��� ++MainWidget���!8AB5<0� C9:C� �/� C9:C� 0=K:B0;4K�.� !:0=5@48=� =>@<0;4CC� :>;4>=C;CHC=� :0<AK7� :K;CC� �G�=�,� A:0=5@48:� B8@:5<5=8� :09@0� 8HB5B��� �G�=� :09@0� 8HB5B��=�� 10AK�K7�.� -35@� A:0=5@;5=35=� A�@�BB�� 8HB5B��=�� C;0=BCC=C� :00;0A0�K7�,� 10AK�K7� 6>::>� GK30@K�K7�,� 18@>:� A:0=5@;5C� <5=5=� 109;0=KH:0=� DC=:F8O;0@� �G�@�;�B� 60=0� :09@0� 8HB5B:5=45=� :898=� :�G�=�� :8@5B�.������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� ++MainWidget���&!:0=5@� B01K;30=� 6>:�������Scanner not detected���NoDeviceWidget���>::>� GK30@CC�������Cancel���NoMailDialog��� ++01CC�������Close���NoMailDialog���@=>BCC�������Install���NoMailDialog���8-;5:B@>=4C:� ?>GB0� :0@40@� 6>:�������No email client���NoMailDialog����!8AB5<040� M;5:B@>=4C:� ?>GB0� :0@40@� B01K;104K�,� AC@0=KG�,� 18@8=G8� :575:B5� M;5:B@>=4C:� ?>GB0� :0@40@� >@=>BCC�.�������INot find email client in the system, please install email client firstly.���NoMailDialog���$� C?;5:A������� ++ADF Duplex���QApplication���2B>�������Auto���QApplication���2!:0=5@48� 0GCC� <�<:�=� M<5A�������Fail to open the scanner���QApplication���0;?0:� B�1�=4��������Flatbed���QApplication����?�������Multiple���QApplication����!5@38B��� B87<5A8�.� !C@0=KG�,� A5@38B5@;8:� 8938;8:� BCC@0;CC� <00;K<0BBK� :�B:�;��.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���!:0=5@�������Scanner���QApplication���0!:0=5@� 0=K:B>>� 1>N=G0�.�.�.�������Scanner is on detecting...���QApplication���>94>:�������Single���QApplication�����������100 dpi���QObject�����������1200 dpi���QObject�����������150 dpi���QObject�����������200 dpi���QObject�����������2400 dpi���QObject�����������300 dpi���QObject�����������4800 dpi���QObject�����������600 dpi���QObject�����������75 dpi���QObject����A�D�F�������ADF���QObject���$� 0@B:0�������ADF Back���QObject���$� C?;5:A������� ++ADF Duplex���QObject���$� D@>=BC������� ADF Front���QObject���2B>�������Auto���QObject���"�A�������Color���QObject���5D>;B� B�@��������Default Type���QObject���0;?0:� B�1�=4��������Flatbed���QObject���@59�������Gray���QObject���,@=>BCC� :�B��� C10:KBK�.�������Install timeout.���QObject���09=5@B�������Lineart���QObject���>::>� GK30@CC�������Cancel��� RunningDialog��� ++01CC�������Close��� RunningDialog�����������100 dpi��� ++SaneObject�����������1200 dpi��� ++SaneObject�����������150 dpi��� ++SaneObject�����������200 dpi��� ++SaneObject�����������2400 dpi��� ++SaneObject�����������300 dpi��� ++SaneObject�����������4800 dpi��� ++SaneObject�����������600 dpi��� ++SaneObject�����������75 dpi��� ++SaneObject���$�������ADF��� ++SaneObject���$� 0@B:0�������ADF Back��� ++SaneObject���$� C?;5:A������� + ADF Duplex��� +-SaneObject����A�D�F� 'D/I������� ADF Front��� +-SaneObject���HJ�F/'BI� � *�1��������Default Type��� +-SaneObject���2(I1/�J� � � *'B*'DIB� 3C'FF�1�������Flatbed��� +-SaneObject���H*I2IE/IC*I� � ,'�IDHH� � (�*�1/�� /IBB'*�.�������Refresh list complete.��� +-SaneObject���"'19'/'F� � B'D*I1I4�������Cancel��� +-ScanDialog���fI3C'FFI1/HH� '19'/'F� � B'D*I1ID/I� 3�D� 3'B*'~� � *�1���!�������&Canceling scan,please wait a moment!��� ++SaneObject���$� D@>=BC������� ADF Front��� ++SaneObject���5D>;B� B�@��������Default Type��� ++SaneObject���0;?0:� B�1�=4��������Flatbed��� ++SaneObject���2!5@38B��� B87<5A8� 0O:B04K�.�������Refresh list complete.��� ++SaneObject���>::>� GK30@CC�������Cancel��� ++ScanDialog���R!:0=5@;5C48� 6>::>� GK30@CC�,18@� 07� :�B:�;��!�������&Canceling scan,please wait a moment!��� + ScanDialog��� +-,'(���������Close��� +-ScanDialog���C�~�������Multiple��� +-ScanDialog���2(�*� I3C'FFI1/HH� 3'FDI1I�:� �������Number of pages scanning: ��� +-ScanDialog���3C'FF�1�������Scanner��� +-ScanDialog��L� '�IDI~� � *�1�~� ,'*'*� � 'FI� � ,''~� BHJ'E/�B� ���1� � C�~� (�**IC� 3IC'FF�1D'4FI� '*B'1E'B� � BID3'� ('DCIE� C�~� � �,�**�1/�F� B'~DIFI4IFI� C�DI*1I~� �F/�1�4�� � E�EC�F�.� �*IJ'*� BIDI��!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget����3C�1*���������Alert���ScanSettingsWidget���*�3�������Color���ScanSettingsWidget���*�3�������Colour���ScanSettingsWidget���t��2�C*�� � I4*�*C����F�F� � E'2E��F/�� � �2��1*�4� � �1�B3'*I� ,HB� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���4'JE'F�������Device���ScanSettingsWidget���B('1(HD��3�� � (HD(H9HF� � �,�*� ,HD��:� �������File path that does not exist: ���ScanSettingsWidget����,�*� *��4�C*�1I������� File settings���ScanSettingsWidget���2(I1/�J� � � *'B*'DIB� 3C'FF�1�������Flatbed���ScanSettingsWidget����(I1/�J� � � *'B*'DIB� I3C'FFI1/HH� �D��3�� C�~� I1�*� � I3C'FFI1/HHFI� BHD/H(HJ*�.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���AH1E'*I�������Format���ScanSettingsWidget���3�1�������Gray���ScanSettingsWidget���*3I2IB*��� � I3C'FFI1/HH�������Lineart���ScanSettingsWidget���<�D�C*I1HF/�B� ,HD/HFEH� � '1BID���������Mail to���ScanSettingsWidget���C�~�������Multiple���ScanSettingsWidget���'*�-*�C� '*I�������Name���ScanSettingsWidget���(�**�1�������Pages���ScanSettingsWidget���.2IJ'1'*� �B�9�� ,HB� ,HD�:� �������Path without access rights: ���ScanSettingsWidget���*�F�B*�9�������� +-Resolution���ScanSettingsWidget���^(I1� *'1'~� BID��� ,'3HH� '*B'1��� � B���I*I� C��/�J�!�������Resolution is empty!���ScanSettingsWidget���3'B*HH�������Save���ScanSettingsWidget���3'B*HH�������Save As���ScanSettingsWidget������ 3'B*HH�������Save as���ScanSettingsWidget���3C'FF�1�������Scanner���ScanSettingsWidget���(I3C'FFI1/HH� ,'(/��3��������Scanner device���ScanSettingsWidget���*I2IE/IC� *'F/'4�������Select a directory���ScanSettingsWidget��� ,�C�� I3C'FFI1/HH�������Single���ScanSettingsWidget����H�� �-� CI�IC*I�I�������Size���ScanSettingsWidget���(3IC'FF�1D'4FI� ('4*HH������� +-Start Scan���ScanSettingsWidget��� *�CI3**I� � 3'B*HH������� ++01CC�������Close��� ++ScanDialog����?�������Multiple��� ++ScanDialog���60@0:B0@4K� A:0=5@;5C� A0=K�:� �������Number of pages scanning: ��� ++ScanDialog���!:0=5@�������Scanner��� ++ScanDialog��x� 1C30� G598=� 10@�,� A87� 0=K� 0HK:G0� 607CC=C� :00;09AK71K�?� -35@� A87� :�?� 15BB��� A:0=5@;5C48� 0B:0@K?� 60BA0�K7�,� 0=40� 0;� 18@� =5G5� D09;4K=� 0HK:G0� 607K;KHK=0� A515?� 1>;CHC� <�<:�=�.� !C@0=KG�,� A0:� 1>;3C;0�!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget�����������100 dpi���ScanSettingsWidget�����������1200 dpi���ScanSettingsWidget�����������150 dpi���ScanSettingsWidget�����������2400 dpi���ScanSettingsWidget�����������4800 dpi���ScanSettingsWidget�����������75 dpi���ScanSettingsWidget�����������A4���ScanSettingsWidget�����������A5���ScanSettingsWidget���$�������ADF���ScanSettingsWidget���"�A�������Color���ScanSettingsWidget���"�A�������Colour���ScanSettingsWidget���n#GC@40� :>;4>=CCGC=C=� :0B0;>34C� �73�@B��3�� C@C:A0BK� 6>:� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���"�7<�:�������Device���ScanSettingsWidget���>:� D09;� 6>;C�:� �������File path that does not exist: ���ScanSettingsWidget���"$09;� ?0@0<5B@;5@8������� File settings���ScanSettingsWidget���0;?0:� B�1�=4��������Flatbed���ScanSettingsWidget���n0;?0:� A:0=5@;5C� @568<8� 18@� =5G5� A:0=5@;5C48� :>;4>1>9B�.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���$>@<0B�������Format���ScanSettingsWidget���@59�������Gray���ScanSettingsWidget���09=5@B�������Lineart���ScanSettingsWidget��� ++>GB0�������Mail to���ScanSettingsWidget����?�������Multiple���ScanSettingsWidget���BK�-6�=��������Name���ScanSettingsWidget���0@0:B0@�������Pages���ScanSettingsWidget���B5B:8;8:B��;�:� C:C:B0@K� 6>:� 6>;�:� �������Path without access rights: ���ScanSettingsWidget��� 57>;NF8O������� ++Resolution���ScanSettingsWidget���'5G8<� 1>H�!�������Resolution is empty!���ScanSettingsWidget���!0:B>>�������Save���ScanSettingsWidget���CB:0@CC�������Save As���ScanSettingsWidget����=�<4���������Save as���ScanSettingsWidget���!:0=5@� B�7<�:�������Scanner device���ScanSettingsWidget��� 0B0;>34C� B0=4>>�������Select a directory���ScanSettingsWidget���>94>:�������Single���ScanSettingsWidget����;�<��������Size���ScanSettingsWidget���$!:0=5@;5C48� 10HB>>������� ++Start Scan���ScanSettingsWidget���"5:ABB8� A0:B>>������� + Store text���ScanSettingsWidget��� +-�,�*� ������� The file ���ScanSettingsWidget����(�D� 'JI1E'D'F/I1I4� � B'*I4I� �1�C��� �2�F� � �('BI*� C�*�*� C���D� BHJ�~� *'F/'��.�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���*�1��������Type���ScanSettingsWidget���H4HF/HJ�������Yes���ScanSettingsWidget���J�'�/�'� .'1'C*�1IFI� �2� I�IF�� � 'D'� 'D('J*�.�������cannot contain '/' character.���ScanSettingsWidget���Z,'4I1IF� �,�*� 3'~'*IF/'� � � 3'B*'9'DI� � (HD(HJ*� �.�������cannot save as hidden file.���ScanSettingsWidget���3C'FF�1�0�1������� scanner01���ScanSettingsWidget����3C�1*���������tips���ScanSettingsWidget���"'19'/'F� � B'D*I1I4�������Cancel���SendMailDialog��� +-,'(���������Close���SendMailDialog���(�CI*���������Confirm���SendMailDialog���3C'FF�1�������Scanner���SendMailDialog���N�D�C*I1HF/�B� ,HD/HFEH� � 'D'1E'FIF� *'F/'4�������Select email client���SendMailDialog���"'19'/'F� � B'D*I1I4�������Cancel���ShowImageWidget���\'19'/'F� � B'D/�1�D��'*I/��.�.�.� 3�D� *'BI1� BIDI��.�.�.�������Canceling...Please waiting...���ShowImageWidget��� +-E'B�D�������Ok���ShowImageWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...���ShowImageWidget���F��2�DD�4*�1�4FI� *'1*I~C�� 3'D��� � �.�.�.�������Running rectify ...���ShowImageWidget���.3IF/I1��� � HH2�F� � 3'B*HH������� +-&Save Exit���TitleBar�����������...���TitleBar���*�1'3IF/'�������About���TitleBar��� +-,'(���������Close���TitleBar���3IF/I1��� � HH2��������Exit���TitleBar����F�o�r�m�������Form���TitleBar���,�1DIC�������Help���TitleBar������ �H�� ��CC��������Maximize���TitleBar������1� �L�A�N� /'� BI3B'� E'J�C*�4��� ,'F'� �,�*� � ,�*C��� B�1('*I� � E�F�F� � B'E/'J*�.� � E�D'2IE�*I1� B�1�F�F� *'D'(I� ,HB�.� 'D� � C�~� '/'E/IF� � (I1� �D�� �('BI**'� ��EC'1DI4I��DI4IFI� ,'F'� ~'1'D�D� ,HD/HH� ,'F'� � B'(ID/HH� � ,'3HHF�� � BHD/HJ*� �.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���CI�I1�J*���������Minimize���TitleBar���*'F/'DE'�������Option���TitleBar���&*I2IE/IC*I� � ,'�IDHH�������Refresh List���TitleBar���"'D9'�IF'� C�D*I1���������Restore���TitleBar���3C'FF�1�������Scanner���TitleBar���*�2� �&3IF/I1���������Straight &Exit���TitleBar���h��2�C*�CI� � �,�*� � 3'B*'D('/I�.� 3I2� 'FI� � � 3'B*'E'B�I(I�������6The current file is not saved. Do you want to save it?���TitleBar����D��3�� �:� ������� Version: ���TitleBar����k�y�l�i�n�-3C'FF�1������� kylin-scanner���TitleBar�����2�DD�4*�1�4�������Beauty��� ToolBarWidget���2I1'&�*D�1�������Crop��� ToolBarWidget���'JF�C� 3�1�*��������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���*'1*I~C�� 3'D���������Rectify��� ToolBarWidget�����1�IDI*I4�������Rotate��� ToolBarWidget���3��� � (�D��������� Watermark��� ToolBarWidget����H�HJ*�4�������ZoomIn��� ToolBarWidget���,AHC�3� '1'DI9IF� � *��4���������ZoomOut��� ToolBarWidget��F3C'FF�1� �2�D�~� C�**I�.� ���1� � 3C'FF�1FI�� �D'F��3�� &�2�D3�� 3IC'FF�1D'4FI� '19'/'F� � B'D*I1I�� C�1�F�4*�1�� 3IC'FI1DI:��FI�� B'*''� ���1/�� ('J'F/'E'� (�1��� � BID��F�� � 3'B*'��.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���(,'�I� 3C'FF�1� �D'F/I�.�������New Scanner has been Connected.���UsbHotplugThread���j3C'FF�1� ,'(/��3�F� *�C4�1I~� '*'*�.� 3�D� *'BI1� BIDI��.� �.� �.�������+Querying scanner device. Please waitting...���UsbHotplugThread����3C'FF�1� '2I1� &�2�D��'*I/�� 3C'FF�1� *I2IE/I�IF� � ,'�I1*I~� ,'*'*�.� 3�D� *'BI1� BIDI��.� �.� �.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���zI3C'FFI1/HH� � ~1'�1'EE'3I� *I2IE/I�IF� � ,'�IDHH� � (�*�1/�� /IBB'*�.�������Scanner list refresh complete.���UsbHotplugThread��� +-,'(���������Close���WaittingDialog���0I3C'FI1/I� I2/�~� ,'*'*�.�.�.�������Searching for scanner...���WaittingDialog���43��� � �FI� � *'E9'3I� � � BH4��������� Add watermark���WatermarkDialog���"'19'/'F� � B'D*I1I4�������Cancel���WatermarkDialog��� +-,'(���������Close���WatermarkDialog���(�CI*���������Confirm���WatermarkDialog���3C'FF�1�������Scanner���WatermarkDialog����,�*� F''EI�������Filename���main���\I3C'FFI1/HH� � *��4�C*�1IF� � �ICI~�/IJ�FI� ,'4I1���������Hide scan settings widget���main���*�,�*�F� �<�f�i�l�e�n�a�m�e�>'����������Open file <filename>���main��� +-BH4���������Add���newDeviceListPage����3C�1*���������Alert���newDeviceListPage���ID��1CI� ('3BI��������Before���newDeviceListPage���"'19'/'F� � B'D*I1I4�������Cancel���newDeviceListPage��� +-,'(���������Close���newDeviceListPage��� 4'JE'F� *I2IE/I�I�������Device List���newDeviceListPage���4'JE'F� '*I� �:�������Device Name:���newDeviceListPage���>BH29H*B��� � � ~1'�1'EE'3I� F''EI� �:�������Driver Name:���newDeviceListPage���B'�'DHH�������Install���newDeviceListPage���4B�1'4*I1��� ,��ID��� (HD/�� �.�������Installation failed.���newDeviceListPage��6B�1'4*I1��� ,��I4*��� (HD/�� �.� '2I1� (�D� I3C'FI1/I� I4*�*I4C�� � ('1(I� ��I4*�*I4� ��� FI� ���I~� �U�d�e�v� �(� ('4B'19����� ,'4I1��F� � FHE�1�� � 2'1ID� � �)� FI� B'J1'� B�1��� � '���� � ('4*HH� � ,'3'~� � I3C'FFI1/HH� BHD� /HF��3�F� B'J1'� � � BH29H*�~� 4'JE'F� *I2IE/I�IF� � ,'�I1*I��.� ���1� � /'9I� �D�� 3IC'FF�1D'~� I4*�*ID�*�19'F� � 3�1�**�� ,'D9'4*��� � E'4B�D/'F��� � BIDE'B�I� (HD3H��2� BHD� � E�F�F� B'J1'� BH2:I*IDI4I� /'9I� I3C'FFI1/HH� B�1('*IF� � I4*�*I4� I�I2� C�1�C�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���PBH29H*��� � ~1'�1'EE'3I� B'�'D'FI~� ,'*'*�.�.�.�������Installing driver...���newDeviceListPage���'*�-*�C� '*I�������Name���newDeviceListPage���CIJIFCI� � ('3BI��������Next���newDeviceListPage����I4*�*C�DI� � (HDH*�19'F� BH29H*��� � ~1'�1'EE'3I� ,HB� BH29H*B��*�� � BHD/H� � BH4H3�2(��������:No available drivers, do you want to manually add drivers?���newDeviceListPage��� +-E'B�D�������Ok���newDeviceListPage���~1IF*I1�������Printer���newDeviceListPage���3C'FF�1�������Scanner���newDeviceListPage���*I2IE/IC� *'F/'4�������Select a directory���newDeviceListPage���*IFI�� � (�D���������Symbol���newDeviceListPage����(�D� 4H~�1� ���F��� � ,'9IF'F� � ��D��F� � (HD�~� ���(I1� �D��4C�� (HD(HJ*�19'F� F'*IF,'� � ~'J/'� � BID��� E�EC�F�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage����(�D� 4H~�1FI� 2'�H*� � � B'E/'J*�.� � ,'(/��3�F�F� /'D� � ID'JIB� � 2'�H*� I� E�F�F� ('JD'FI4I~� 4H~�1D�B� ~I1H�I1'EE'3IF'� ��� (HD���.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���*�1��������Type���newDeviceListPage���I4*�*I4�������Use���newDeviceListPage��*I2IE/IC�� � CI1�I2ID��F� ~1IF*I1� 4'JE'FIFIF� (I1� � � ���/ID�4C�F� E'4IF'FI� 3IC'FF�1D'~� (�3I�'*B'F�-('3I~� �I9'1I~� ,'*B'F�-('3I~� �I9'1I~� ,'*B'F�-�F/�1�4� � C�1�F�4*�1�� �E�3*I�IF� � BHD� � E�F�F� ,�2ED�4*�1�4I�I2� C�1�C�.� ���1� � 'D'1� (I1� � � ���/ID�4C�F� E'4IF'FI� 3IC'FI1DIEI3'� 3�D� B'1'��.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���F�,�*� .'1'C*�1IFI� ~�1BD�F/�1�4*�� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file ++$09;� ������� The file ���ScanSettingsWidget����C;� @57>;NF8O� A:0=5@;5C� �G�=� :�?� C10:KB� B0;0?� :K;K=0B�,� AC@0=KG�,� :0<:>@4C:� B0=40?� 0;K�K7�.�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���"�@��������Type���ScanSettingsWidget���!:0=5@�������Yes���ScanSettingsWidget���4�'�/�'� <�=�7�=� :0<BK9� 0;109B�.�������cannot contain '/' character.���ScanSettingsWidget���F60HK@CC=� D09;� :0B0@K� A0:B09� 0;109B�.�������cannot save as hidden file.���ScanSettingsWidget����������� scanner01���ScanSettingsWidget���:5�5HB5@�������tips���ScanSettingsWidget���>::>� GK30@CC�������Cancel���SendMailDialog��� ++01CC�������Close���SendMailDialog���+@0AB>>AC�������Confirm���SendMailDialog���!:0=5@�������Scanner���SendMailDialog���>-;5:B@>=4C:� ?>GB0� :0@40@� B0=4>>�������Select email client���SendMailDialog���>::>� GK30@CC�������Cancel���ShowImageWidget���D>::>� GK30@CC�.�.�.� !C@0=KG�,� :�B���.�.�.�������Canceling...Please waiting...���ShowImageWidget��� ++0:C;�������Ok���ShowImageWidget���&'C@:0?� AC;CC;C:� �.�.�.�������Running beauty ...���ShowImageWidget��� 'C@:>>� >�4>?� �.�.�.�������Running rectify ...���ShowImageWidget���'K3CC=C� A0:B>>������� ++&Save Exit���TitleBar�����������...���TitleBar����=�=4��������About���TitleBar��� ++01CC�������Close���TitleBar��� ++'K3CC�������Exit���TitleBar��� ++$>@<0�������Form���TitleBar���0@40<�������Help���TitleBar���0:A8<0;4CC�������Maximize���TitleBar���8;48@��� � B5:ABB8:� G0B� 60=0� D09;� :>B>@CC� <8;45BB5@8=� 15@5B�.� !5@25@� :C@CC=C=� 70@K;4K3K� 6>:�.� ;� 18@� M;5� CGC@40� �7� 0@0� 0@0:5BB5=��� 60=0� ?0@0;;5;L� 6�=�B��� 60=0� 0;CC� �G�=� 18@� =5G5� 040<4K� :>;4>9B�.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���8=8<0;4CC�������Minimize���TitleBar��� ++?F8O�������Option���TitleBar��� !5@38B��� B87<5A8�������Refresh List���TitleBar���"0;K1K=0� :5;B8@���������Restore���TitleBar���!:0=5@�������Scanner���TitleBar���"�7� �&�,� GK3CC�������Straight &Exit���TitleBar���^#GC@403K� D09;� A0:B0;109B�.� !87� 0=K� A0:B0?� :5;5B�?�������6The current file is not saved. Do you want to save it?���TitleBar���5@A8OAK�:� ������� Version: ���TitleBar���$>@<0� �.�.�.������� kylin-scanner���TitleBar���!C;CC;C:�������Beauty��� ToolBarWidget����A�<4�:�������Crop��� ToolBarWidget�����������Mirror��� ToolBarWidget��� �������OCR��� ToolBarWidget��� ++�4>>�������Rectify��� ToolBarWidget���9;0=BCC�������Rotate��� ToolBarWidget���0B5@<0@:������� Watermark��� ToolBarWidget���>><8=�������ZoomIn��� ToolBarWidget���'>�>9BCC�������ZoomOut��� ToolBarWidget����!:0=5@� 06K@0BK;0B�.� -35@� A:0=5@48� �G�@��� A:0=5@;5C45� 1>;A>�,� !:0=5@48� 10AK�K7� 65� A:0=5@48=� :0B0� BCC@0;CC� 18;48@��=�� :�B:�;��.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���40�K� !:0=5@� BCB0HBK@K;30=�.�������New Scanner has been Connected.���UsbHotplugThread���b!:0=5@48:� 0??0@0BBK� AC@0?� 0;CC�.� !C@0=KG�,� :�B���.�.�.�������+Querying scanner device. Please waitting...���UsbHotplugThread����!:0=5@� 06K@0BCC�,A5@38B5@;8:� A:0=5@� B87<5A8� 1>;C?� A0=0;0B�.� !C@0=KG�,� :�B���.�.�.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���@!:0=5@� B87<5A8� A5@38B��� 0O:B04K�.�������Scanner list refresh complete.���UsbHotplugThread��� ++01CC�������Close���WaittingDialog���!:0=5@�������Scanner���WaittingDialog���!:0=5@� 874���.�.�.�������Searching for scanner...���WaittingDialog���$!CC� 15;38A8=� :>HCC������� Add watermark���WatermarkDialog���>::>� GK30@CC�������Cancel���WatermarkDialog��� ++01CC�������Close���WatermarkDialog���+@0AB>>AC�������Confirm���WatermarkDialog���!:0=5@�������Scanner���WatermarkDialog���$09;� 0BK�������Filename���main���P!:0=5@;5C� ?0@0<5B@;5@8=� 28465BB8� 60HK@CC�������Hide scan settings widget���main���$09;4K� 0GCC� �������Open file <filename>���main��� ++>HCC�������Add���newDeviceListPage���-A:5@B���������Alert���newDeviceListPage��� ++C@C=�������Before���newDeviceListPage���>::>� GK30@CC�������Cancel���newDeviceListPage��� ++01CC�������Close���newDeviceListPage���"�7<�:� B87<5A8�������Device List���newDeviceListPage���@=>B<>� 0BK�:�������Device Name:���newDeviceListPage���@0925@48=� 0BK�:�������Driver Name:���newDeviceListPage���@=>BCC�������Install���newDeviceListPage���(@=>BCC� 8H:5� 0H?04K�.�������Installation failed.���newDeviceListPage���@=>BCC� 8938;8:B���.� !87� 07K@� 1C;� A:0=5@� :>;4>=CC=C� :00;09AK71K�?� #452B8� �(04<8=8AB@0B>@� AK@A�7� B0;0?� :K;K=0B�)� :0;K1K=0� :5;B8@��� �G�=� �':>;4>=CC=C�"� 10AK�K7� 60=0� 0??0@0B� B87<5A8=� 60�K@BCC� �G�=� A:0=5@;5C� B8@:5<5A8=� :09@0� 8HB5B8�87�.� -35@45� A87� 403K� M;5� A:0=5@;5=35=� A�@�BB�� :>;4>=CC=C� C;0=BCC=C� :00;0A0�K7�,� 0=40� :>;� <5=5=� :09@0� 10HB>>� 60=0� A:0=5@;5C� <8;45B8=� :>;4>=CC� 70@K;� 1>;>B�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���(@0925@48� >@=>BCC�.�.�.�������Installing driver...���newDeviceListPage���BK�-6�=��������Name���newDeviceListPage���898=:8�������Next���newDeviceListPage����5B:8;8:B��� 094>>GC;0@� 6>:�,� A87� :>;� <5=5=� 094>>GC;0@4K� :>HCC=C� :00;09AK71K�?�������:No available drivers, do you want to manually add drivers?���newDeviceListPage��� ++0:C;�������Ok���newDeviceListPage���@8=B5@�������Printer���newDeviceListPage���!:0=5@�������Scanner���newDeviceListPage��� 0B0;>34C� B0=4>>�������Select a directory���newDeviceListPage���!8<2>;�������Symbol���newDeviceListPage����C;� 094>>GC� �G�=G�� B0@0?B0=� 1>;C?� A0=0;0B�,� :0=4094K@� 18@� BK=K<AK7� =0BK96030� 0;K?� :5;8H8� <�<:�=�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage���C;� 4@0925@� �=4�@��G�� B0@01K=0=� 15@8;5B�.� @0925@48:� ?@>3@0<<0=K� 0;CC� �G�=� 0??0@0BBK=� B85H5;��� �=4�@��G�A�� <5=5=� 109;0=KHK�K740@�.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���"�@��������Type���newDeviceListPage���>;4>=CC�������Use���newDeviceListPage���"87<535� :8@35=� ?@8=B5@� B�7<�:B�@�� 10@4K:� <0H8=0;0@4K� A:0=5@;5?�,� 10AK?� GK30@K?� 60B:0=�-60B?030=K=� :>;� <5=5=� B0ABK:B>>� :5@5:�.� -35@45� 0;0@� 10@4K:� <0H8=0;0@4K� A:0=5@;5?�,� 10AK?� GK30@10A0�,� 0;0@4K� G5B:5� :0::K;0�.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���<>:C<5=B� <�=�7�� B00=K;CC40� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file +diff --git a/translations/kylin-scanner_ky.ts b/translations/kylin-scanner_ky.ts +index 03494a2..aadf30e 100644 +--- a/translations/kylin-scanner_ky.ts ++++ b/translations/kylin-scanner_ky.ts +@@ -112,14 +112,9 @@ + <translation type="vanished">检测扫描设备中,请稍后 ……</translation> + </message> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> +- <translation>ىسكاننىردوو جابدىعىن تەكشەرىپ كۅرۉڭ، ساقتاپ تۇرۇڭ</translation> ++ <translation>Сканерлерди аныктоо, сураныч, күтүү</translation> + </message> + </context> + <context> +@@ -131,12 +126,12 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation>ىشتەتكەلى بولوتۇرعان ىسكاننىردوو جابدۇۇسۇ جوق</translation> ++ <translation>Жеткиликтүү сканерлеу түзмөктөрү</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> + <source>Connect</source> +- <translation>ۇلانۇۇ</translation> ++ <translation>Туташуу</translation> + </message> + </context> + <context> +@@ -149,7 +144,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>Текстти окуй албай калды, кайра кайра</translation> + </message> + </context> + <context> +@@ -157,7 +152,7 @@ + <message> + <location filename="../src/about/about.ui" line="26"/> + <source>Dialog</source> +- <translation>ۇباقىت ۅزگۅرتۉش</translation> ++ <translation>Диалог</translation> + </message> + <message> + <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> +@@ -186,13 +181,13 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> + <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> + <source>Connect scanners, please click scan button to start scanning.</source> +- <translation>ىسكاننىردوونى ۇلاڭ، ىسكاننىردوونى باشتوو ۉچۉن ىسكاننىردوو كۇنۇپكاسىن چەگىڭ.</translation> ++ <translation>Сканерлерди туташтырыңыз, сканерлеуди баштоо үчүн сканерлеу баскычын басыңыз.</translation> + </message> + <message> + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> +- <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> +- <translation>سكاننېر بايقالبادى، جاڭى سكاننېر كىيىرىپ جابدۇۇسۇنۇن تىزىمدىگىن جاڭىلاڭ.</translation> ++ <translatorcomment>Эч кандай сканер табылган жок, аппарат тизмесин сергитүү үчүн жаңы сканер туташтыруу.</translatorcomment> ++ <translation>Эч кандай сканер табылган жок, аппарат тизмесин сергитүү үчүн жаңы сканер туташтыруу.</translation> + </message> + </context> + <context> +@@ -202,10 +197,8 @@ + <translation type="vanished">麒麟扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation type="vanished">Сканер</translation> + </message> + <message> + <source>Yes</source> +@@ -236,115 +229,107 @@ + <translation type="vanished">单页扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> +- <translation>ەسەپ ەمەس مۇلاھىزىلەر، دالىل-دالىلدەردى ۅزگۅرتۉڭ كۅرۉنۉشتۅرۉ باشقا سكاننېرلارنى الماشتىرىڭ.</translation> +- </message> +- <message> +- <source>error code:</source> +- <translation type="vanished">错误码:</translation> ++ <translation>Жараксыз аргумент, сураныч, аргументтерди өзгөртүү же башка сканерлерди которуу.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> +- <translation>ىسكاننىردوو جەڭىلۉۉ بولدۇ ، ىسكانىردى تەكشەرىپ باعىڭ كۅرۉنۉشتۅرۉ باشقا سكاننېرغا الماشتىرىڭ. ەگەر ىسكانىردى جالعاشتۇۇ ىشتەتمەكچى بولسوق، تانداش تۉرۉن چەگىڭ، تىزىمدىكتى جاڭىلاپ اسپاپتى قايرا قوزعوتۇڭ.</translation> ++ <translation>Сканерлеу ишке ашпады, сураныч, сиздин сканер текшерүү же башка сканерлерди которуу. Эгер сканерди колдонууну улантууну кааласаңыз, параметрлерди чыкылдатып, аппаратты кайра иштетүү үчүн тизмени жаңыртыңыз.</translation> + </message> + <message> +- <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> +- <translation type="vanished">检测到用户手动休眠。请检查扫描仪状态。如果扫描无法继续,则需要手动单击“取消”或刷新列表以恢复设备扫描功能。</translation> +- </message> +- <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> +- <translation>ەسكەرتۉۉ</translation> ++ <translation>Эскертүү</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> +- <translation>جاڭى سكاننېر ۇلاندى.</translation> ++ <translation>Жаңы Сканнер туташтырылды.</translation> + </message> + <message> + <source>error code: </source> + <translation type="vanished">错误码:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>Макул</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> +- <translation>شايمان الدىراش، ساقتاپ تۇرۇڭ كۅرۉنۉشتۅرۉ باشقا سكاننېرلارنى الماشتىرىڭ.</translation> ++ <translation>Орнотмо менен алек, күткүлө же башка сканерлерди алмаштырыңыз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> +- <translation>ۅجۅت مەنەن قامدووچۇنۇ ۅجۅتتىن چىعاردىڭىز، ۅجۅتلەرنى قويۇپ قايرا ىسكاننىرداڭ.</translation> ++ <translation>Документтерден азыктандыруучуну документтештириңиз, кагаздарды жайгаштырыңыз жана кайрадан сканерлеуиңиз.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> +- <translation>ىسكاننىردوو ماشعۇلاتى ارعادان قالتىرىلدى.</translation> ++ <translation>Сканерлеу операциясы жокко чыгарылган.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> +- <translation>ىسكاننىردوو جەڭىلۉۉ بولدۇ ، ماشقۇلدانۇۇ قولدوبودۇ.</translation> ++ <translation>Сканерлеу ишке ашпады, операция колдолбойт.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation>سكاننېرلىشى جەڭىلۉۉ بولدۇ ، ۅجۅت توقتوپ قالدى.</translation> ++ <translation>Сканерлеу ишке ашпады, Документ федерал тыгылып калды.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> +- <translation>سكاننېرلىغاندا جەڭىلۉۉ بولدۇ ، قۇرۇلما I/O بارىشندا قاتاالىق كۅرۉلدۉ.</translation> ++ <translation>Сканерлеу ишке ашпады, I/O орнотмосунун учурундагы ката.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> +- <translation>سكاننېرلىغاندا جەڭىلۉۉ بولدۇ ، دىلدە ساقلىغۇسى جوق.</translation> ++ <translation>Сканерлеу ишке ашпады, эс тутумдан чыгып.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation>ىسكاننىردوو جەڭىلۉۉ بولدۇ ، بايلىعىن زىيارات جاسوو ،اتقارۇۇ قاتار اتقارىلدى .</translation> ++ <translation>Scan failed, Access to resource has been denied.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation>ىسكاننىردوو جەڭىلۉۉ بولدۇ ، سكاننېرنىڭ قاپقىقى اچىلىپ بولدۇ .</translation> ++ <translation>Сканерлеу ишке ашпады, Сканер мукабасы ачык.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation>ساامالىق ۇقتوو، ۇقتوو تەكشەرىلدى. سكاننېرنىڭ نورماال ىشتەتىلىشىنە ەەبولۇۇ جاسوو ،اتقارۇۇ ۉچۉن ، قايرا قوزعوتۇشتۇ چەگىپ سكاننېرنىڭ قولدونۇۇسۇن قايرا قوزغىتىڭلار. ەگەر سىكاننېرلاپ ىشتەتىلەتۇرعان سۉرۅتتۉ جالعاشتۇۇ ماشقۇلدانۇۇ قىلماقچى بولسوڭۇز، بىروق سىكاننېرلاپ ىشتەتىشكە بايلانىشتۇۇ جۅندۅمدۅر توقتولۇپ، قايرا قوزعوعوندون كىيىن كۉچۉنۅ ەە بولموق بولوت .</translation> ++ <translation>Система уйку / уйку аныкталды. Сканердин нормалдуу колдонулушун камсыз кылуу үчүн, сканердик тиркемени кайра иштетүү үчүн кайра иштетүүнү басыңыз. Эгер сканерленген сүрөттү иштетүүнү улантууну кааласаңыз, басыңыз жокко чыгарыңыз, бирок сканерлеу менен байланышкан функциялар өчүрүлөт жана кайра иштеткенден кийин күчүнө кирет.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> +- <translation>قايرا قوزعوتۇۇ</translation> ++ <translation>Кайра иштетүү</translation> + </message> + <message> + <source>Scan failed, please check your scanner or switch other scanners.</source> + <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>Чуркап сулуулук ...</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تارتىپكە سالۇۇ ...</translation> ++ <translation>Чуркоо оңдоп ...</translation> + </message> + </context> + <context> +@@ -352,41 +337,41 @@ + <message> + <location filename="../src/nodevicewidget.cpp" line="43"/> + <source>Scanner not detected</source> +- <translation>سكاننېر بايقالبادى.</translation> ++ <translation>Сканер табылган жок</translation> + </message> + </context> + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> +- <translation>ەلەكتىروندۇق جولدونمو خېرىدارى جوق</translation> ++ <translation>Электрондук почта кардар жок</translation> + </message> + <message> + <source>Scanner</source> + <translation type="vanished">扫描</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> +- <translation>سەستىمادا ەلەكتىروندۇق جولدونمو الارمانىن تاپالماي، الدىن ەلەكتىروندۇق جولدونمو الارمانىن قاچالاڭ.</translation> ++ <translation>Системада электрондук почта кардар табылбады, сураныч, биринчи кезекте электрондук почта кардар орнотуу.</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> +- <translation>قاچالوو</translation> ++ <translation>Орнотуу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + </context> + <context> +@@ -406,62 +391,62 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> +- </message> +- <message> +- <source>Fail to open the scanner, error code </source> +- <translation type="vanished">打开扫描仪失败,错误代码</translation> ++ <translation>АДФ Дуплекс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> +- <translation>سكاننېر اچالبادى</translation> ++ <translation>Сканерди ачуу мүмкүн эмес</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> +- <translation>اپتوماتتىك</translation> ++ <translation>Авто</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> +- <translation>كۅپ</translation> ++ <translation>Көп</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> +- <translation>بىردەي تاقتالىق سكاننېر</translation> ++ <translation>Жалпак түбүндө</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="59"/> + <source>Refreshing list. Please wait for the refresh success information...</source> +- <translation>ازىر تىزىمدىكتى جاڭىرتىپ جاتات. جەڭىش ۇچۇرۇنۇن جاڭىلانۇسۇ كۉتۉڭ...</translation> ++ <translation>Сергитүү тизмеси. Сураныч, сергитерлик ийгилик тууралуу маалыматты күткүлө...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="65"/> + <source>Scanner is on detecting...</source> +- <translation>سكاننېر تەكشەرىپ اتات...</translation> ++ <translation>Сканер аныктоо боюнча...</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> +- <translation>جەكە ىسكاننىردوو</translation> ++ <translation>Бойдок</translation> + </message> + </context> + <context> +@@ -471,182 +456,181 @@ + <translation type="vanished">用户</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation>كەشەلە</translation> ++ <translation type="vanished">Суроо</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation>گەزەكتەكى </translation> ++ <translation type="vanished">Учурдагы</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation> ىشتەتۉۉچۉ</translation> ++ <translation type="vanished">Колдонуучу</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation> تەە مۇردا Kylin-scanner نى اچىپ بولدۇ ، open نى بەكىتەت </translation> ++ <translation type="vanished"> буга чейин кайлин-сканер ачылган, ачык жабылат</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation>'نىڭ ماشعۇلاتى. سىز جالعاشتىراسىزبى؟</translation> ++ <translation type="vanished">"Операциялар. Сиз улантуудасызбы?</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> +- <translation>تۉس</translation> ++ <translation>Түс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> +- <translation>سۇر</translation> ++ <translation>Грей</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> +- <translation>سىزىقتۇۇ ىسكاننىردوو</translation> ++ <translation>Лайнерт</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> +- <translation>ويۇنداقى تۉرۉ</translation> ++ <translation>Дефолт түрү</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> +- <translation>بىردەي تاقتالىق سكاننېر</translation> ++ <translation>Жалпак түбүндө</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> +- <translation>ADF الدى</translation> ++ <translation>АДФ фронту</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> +- <translation>ADF ارتىنا</translation> ++ <translation>АДФ артка</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> ++ <translation>АДФ Дуплекс</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> +- <translation>600 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> +- <translation>300 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> +- <translation>200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> +- <translation>اپتوماتتىك</translation> ++ <translation>Авто</translation> ++ </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>Орнотуу күтүү убакыты.</translation> + </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + </context> + <context> + <name>SaneObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> +- <translation>ويۇنداقى تۉرۉ</translation> ++ <translation>Дефолт түрү</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> +- <translation>بىردەي تاقتالىق سكاننېر</translation> ++ <translation>Жалпак түбүндө</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="416"/> + <source>Refresh list complete.</source> +- <translation>تىزىمدىكتى جاڭىلوو بۉتۉردۉ دىققات.</translation> ++ <translation>Сергитүү тизмеси аяктады.</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> +- <translation>ADF</translation> ++ <translation>АДФ</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> +- <translation>ADF الدى</translation> ++ <translation>АДФ фронту</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> +- <translation>ADF ارتىنا</translation> ++ <translation>АДФ артка</translation> + </message> + <message> + <source>Lineart</source> +@@ -661,58 +645,58 @@ + <translation type="vanished">彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> +- <translation>ADF Duplex</translation> ++ <translation>АДФ Дуплекс</translation> + </message> + <message> + <source>Auto</source> + <translation type="vanished">自动</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> +- <translation>200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> +- <translation>300 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> +- <translation>600 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> + <source>Multiple</source> +@@ -722,40 +706,39 @@ + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> +- <translation>بەت ىسكاننىردوو سانلىرى: </translation> ++ <translation>Барактарды сканерлеу саны: </translation> + </message> + <message> + <source>Number of pages being scanned: </source> + <translation type="vanished">正在扫描页数:</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="153"/> + <source>Canceling scan,please wait a moment!</source> +- <translation>ىسكاننىردوو ارعادان قالتىرىلدى، سەل ساقتاپ تۇرۇڭ!</translation> ++ <translation>Сканерлеуди жокко чыгаруу,бир аз күткүлө!</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="182"/> + <source>Multiple</source> +- <translation>كۅپ</translation> ++ <translation>Көп</translation> + </message> + </context> + <context> +@@ -765,213 +748,208 @@ + <translation type="vanished">开始扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> +- <translation>ىسكاننىردوو جابدۇۇسۇ</translation> ++ <translation>Сканер түзмөк</translation> + </message> + <message> + <source>Time</source> + <translation type="vanished">延时</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> +- <translation>ۅجۅت تەڭشەكتەرى</translation> ++ <translation>Файл параметрлери</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> +- <translation>شايمان</translation> ++ <translation>Түзмөк</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> +- <translation>تىزىمدىك تانداش</translation> ++ <translation>Каталогду тандоо</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> +- <translation>گەزەكتە ىشتەتكۉۉچۉنۉن مازمۇۇندۇ ۅزگۅرتۉش ۇرۇقساتى جوق </translation> ++ <translation>Учурда колдонуучунун каталогду өзгөртүүгө уруксаты жок </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> +- <translation>بىردەي تاقتالىق ىسكاننىردوو ۉلگۉسۉ كۅپ ىرەت ىسكاننىردوونى قولدوبويت.</translation> ++ <translation>Жалпак сканерлеу режими бир нече сканерлеуди колдобойт.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> +- <translation>كۅپ</translation> ++ <translation>Көп</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation>بۇل ايىرمالاندىرىش قاتىشى ەرەكچە ۇزۇن ۇباقىت كەتەت، كۅڭۉل قويۇپ تانداڭ.</translation> ++ <translation>Бул резолюция сканерлеу үчүн көп убакыт талап кылынат, сураныч, камкордук тандап алыңыз.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation>ەسكەرتۉۉ</translation> ++ <translation type="vanished">Эскертүү</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> +- <translation>بەتتەر</translation> ++ <translation>Барактар</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> +- <translation>تۉرۉ</translation> ++ <translation>Түрү</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> +- <translation>تۉس</translation> ++ <translation>Түс</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> +- <translation>تۇنۇقتۇعۇ</translation> ++ <translation>Резолюция</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> +- <translation>چوڭ - كىچىكتىگى</translation> ++ <translation>Көлөмү</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> +- <translation>فورماتى</translation> ++ <translation>Формат</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> +- <translation>ات-تەك اتى</translation> ++ <translation>Аты-жөнү</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> +- <translation>سكاننېر01</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> +- <translation>ساقتوو</translation> ++ <translation>Сактоо</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> +- <translation>ەلەكتىروندۇق جولدونمو ارقىلۇۇ</translation> ++ <translation>Почта</translation> + </message> + <message> + <source>Send email</source> + <translation type="vanished">发送至邮箱</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> +- <translation>گە ساقتوو</translation> ++ <translation>Үнөмдөө</translation> + </message> + <message> + <source>No available scanners</source> + <translation type="vanished">无可用设备</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> +- <translation>جەكە ىسكاننىردوو</translation> ++ <translation>Бойдок</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> +- <translation>4800 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> +- <translation>2400 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> +- <translation>1200 dpi</translation> +- </message> +- <message> +- <source>This resolution will take a loog time to scan, please choose carelly.</source> +- <translation type="vanished">该分辨率将会花费很长时间扫描,请谨慎选择!</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> +- <translation>'/' خاراكتېرىنى ۅز ىچىنە الا البايت.</translation> ++ <translation>'/' мүнөзүн камтый албайт.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> +- <translation>جاشىرىن ۅجۅت ساپاتىندا ساقتاعالى بولبويت .</translation> ++ <translation>жашыруун файл катары сактай албайт.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> +- <translation>ساقتوو</translation> ++ <translation>Куткаруу</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> +- <translation>زىيارات ۇقۇعۇ جوق جول: </translation> ++ <translation>Жеткиликтүүлүк укуктары жок жол: </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> +- <translation>باربولۇۇسۇ بولبوعون ۅجۅت جولۇ: </translation> ++ <translation>Жок файл жолу: </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> +- <translation> اچىلىپ تۇرۇپ جاتات، انى جااپ قويامدۇق؟ ەگەر كۅپ بەتتىك سىكاننېرلاشنى اتقارماق قىلسا، بالكىم كۅپ ۅجۅتتۅردۉن قاپلىنىشىنى كەلىترىپ ۅندۉرۉشۉ مۉمكۉن. ەتىيات قىلىڭ!</translation> ++ <translation> буга чейин бар, сиз аны ашыкча жазууну каалайсызбы? Эгер сиз көп беттүү сканерлеуди аткарып жатсаңыз, анда ал бир нече файлдын ашыкча жазылышына себеп болушу мүмкүн. Сураныч, сак болгула!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> +- <translation>سىكاننېرلاشنى باشتوو</translation> ++ <translation>Сканерлеуди баштоо</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> +- <translation>تەكىستتى ساقتوو</translation> ++ <translation>Текстти сактоо</translation> + </message> + <message> + <source>Save as dialog</source> + <translation type="vanished">另存为</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> +- <translation>ۅجۅت </translation> ++ <translation>Файл </translation> + </message> + <message> + <source> already exists, do you want to overwrite it?</source> + <translation type="vanished">已存在,您想覆盖它吗?</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> +- <translation>ەسكەرتۉۉ</translation> ++ <translation>кеңештер</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> +- <translation>تۉس</translation> ++ <translation>Түс</translation> + </message> + <message> + <source>3s</source> +@@ -994,74 +972,73 @@ + <translation type="vanished">15 秒</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> +- <translation>بىردەي تاقتالىق سكاننېر</translation> ++ <translation>Жалпак түбүндө</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> +- <translation>ADF</translation> ++ <translation>АДФ</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> +- <translation>سۇر</translation> ++ <translation>Грей</translation> + </message> + <message> + <source>Cancel</source> + <translation type="vanished">取消</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> +- <translation>سىزىقتۇۇ ىسكاننىردوو</translation> ++ <translation>Лайнерт</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> +- <translation>75 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> +- <translation>100 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> +- <translation>150 dpi</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> +- <translation>بىر تاراپ قىلۇۇ جاسوو ،اتقارۇۇ قۇۋۋىتى كۅڭدۅي!</translation> ++ <translation>Чечим бош!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> +- <translation>A4</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> +- <translation>A5</translation> ++ <translation></translation> + </message> + <message> + <source>Scanning images's length cannot be large than 252</source> + <translation type="vanished">扫描文档名称的长度不能超过252。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation type="vanished">Сканер</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> +- <translation>وشوندوي</translation> ++ <translation>Сканер</translation> + </message> + </context> + <context> +@@ -1094,60 +1071,60 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> +- <translation>ەلەكتىروندۇق جولدونمو الارمانىن تانداش</translation> ++ <translation>Электрондук почта кардар тандоо</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> +- <translation>بەكىتۉۉ</translation> ++ <translation>Ырастоосу</translation> + </message> + </context> + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>Макул</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> +- <translation>ارعادان قالدۇرۇلۇۋاتىدۇ... سەل تاقىر قىلىڭ...</translation> ++ <translation>Жокко чыгаруу... Сураныч, күтүү...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>Чуркап сулуулук ...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تارتىپكە سالۇۇ ...</translation> ++ <translation>Чуркоо оңдоп ...</translation> + </message> + </context> + <context> +@@ -1155,24 +1132,24 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="29"/> + <source>Form</source> +- <translation>Form</translation> ++ <translation>Форма</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation>kylin-سكاننېر</translation> ++ <translation>Форма ...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="176"/> + <source>Option</source> +- <translation>تاندالما</translation> ++ <translation>Опция</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="179"/> +@@ -1182,18 +1159,18 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="220"/> + <source>Minimize</source> +- <translation>كىچىرەيتۉۉ</translation> ++ <translation>Минималдуу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="261"/> + <location filename="../src/titlebar/titlebar.cpp" line="145"/> + <source>Maximize</source> +- <translation>ەڭ چوڭ چەككە</translation> ++ <translation>Максималдуу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="308"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> + <source>Maxmize</source> +@@ -1202,42 +1179,42 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="53"/> + <source>Refresh List</source> +- <translation>تىزىمدىكتى جاڭىلوو</translation> ++ <translation>Сергитүү тизмеси</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="70"/> + <source>Help</source> +- <translation>جەرلىك</translation> ++ <translation>Жардам</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="74"/> + <source>About</source> +- <translation>تۇراسىندا</translation> ++ <translation>Жөнүндө</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="76"/> + <source>Version: </source> +- <translation>ۉلگۉسۉ : </translation> ++ <translation>Версиясы: </translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="77"/> + <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> +- <translation>ۇچۇر LAN دا قىسقا مايەكتەشۉۉ جانا ۅجۅت جۅتكۅۅ قۇرباتى مەنەن قامدايت. مۇلازىمەتىر قۇرۇنۇن تالابى جوق. ال كۅپ ادامدىن بىر ەلە ۇباقىتتا ھەمكارلىشىۋېلىشىنى جانا پارالەل جولدوو جانا قابىلدوو جاسوونۇ قولدويت .</translation> ++ <translation>Билдирүү ЛАН тексттик чат жана файл которуу милдеттерин берет. Сервер куруунун зарылдыгы жок. Ал бир эле учурда өз ара аракеттенүү жана параллель жөнөтүү жана алуу үчүн бир нече адамды колдойт.</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="87"/> + <source>Exit</source> +- <translation>سىندىرۇۇ ووزۇ</translation> ++ <translation>Чыгуу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="142"/> + <source>Restore</source> +- <translation>العاچىنا كەلتىرۉۉ</translation> ++ <translation>Калыбына келтирүү</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="192"/> + <source>The current file is not saved. Do you want to save it?</source> +- <translation>گەزەكتەكى ۅجۅت ساقتالبادى. سىز انى ساقتاماقچىبى؟</translation> ++ <translation>Учурдагы файл сакталбайт. Сиз аны сактап келет?</translation> + </message> + <message> + <source>The current document is not saved. Do you want to save it?</source> +@@ -1246,69 +1223,69 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="196"/> + <source>Straight &Exit</source> +- <translation>تۉز &سىندىرۇۇ</translation> ++ <translation>Түз &, чыгуу</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="197"/> + <source>&Save Exit</source> +- <translation>سىندىرۇۇ ووزۇن ساقتوو</translation> ++ <translation>Чыгууну сактоо</translation> + </message> + </context> + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> +- <translation>گۈزەللەشتۈرۈش</translation> ++ <translation>Сулуулук</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> +- <translation>تارتىپكە سالۇۇ</translation> ++ <translation>Оңдоо</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> +- <translation>OCR</translation> ++ <translation>ОКР</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> +- <translation>زىرائەتلەر</translation> ++ <translation>Өсүмдүк</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> +- <translation>چۆرگىلىتىش</translation> ++ <translation>Айлантуу</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> +- <translation>اينەك سۉرۅتۉ</translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> +- <translation>سۇۇ بەلگە</translation> ++ <translation>Ватермарк</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> +- <translation>چوڭويتۇش</translation> ++ <translation>Зоомин</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> +- <translation>فوكۇس ارالىعىن تەڭشۅۅ</translation> ++ <translation>Чоңойтуу</translation> + </message> + </context> + <context> +@@ -1332,86 +1309,91 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="95"/> + <source>Querying scanner device. Please waitting...</source> +- <translation>سكاننېر جابدۇۇسۇن تەكشەرىپ اتات. سەل تاقىر قىلىڭ. . .</translation> ++ <translation>Сканердик аппаратты сурап алуу. Сураныч, күтүү...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="119"/> + <source>New Scanner has been Connected.</source> +- <translation>جاڭى سكاننېر ۇلاندى.</translation> ++ <translation>Жаңы Сканер туташтырылган.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="129"/> + <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> +- <translation>سكاننېر ۉزۉلۉپ كەتتى. ەگەر سكاننېرنىڭ ۇلانۇۇسۇ ئۈزۈلسە، سىكاننېرلاشنى ارعادان قالتىرىڭ كۅرۉنۉشتۅرۉ سىكانىرلىغۇچنىڭ قاتاا ۇچۇردۇ بايانداما بەرۉۉ قىلۇۇنۇ ساقتاڭ.</translation> ++ <translation>Сканер ажыратылат. Эгер сканерди өчүрүү сканерлеуде болсо, Сканерди басыңыз же сканердин ката тууралуу билдирүүнү күткүлө.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="135"/> + <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> +- <translation>سكاننېر ازىر ئۈزۈلۈۋاتىدۇ، سكاننېر تىزىمدىگىن جاڭىرتىپ جاتات. سەل تاقىر قىلىڭ. . .</translation> ++ <translation>Сканер ажыратуу,сергитерлик сканер тизмеси болуп саналат. Сураныч, күтүү...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="150"/> + <source>Scanner list refresh complete.</source> +- <translation>ىسكاننىردوو پراگرامماسى تىزىمدىگىن جاڭىلوو بۉتۉردۉ دىققات.</translation> ++ <translation>Сканер тизмеси сергитүү аяктады.</translation> + </message> + </context> + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>Сканер</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> +- <translation>ىسكانىردى ىزدەپ جاتات...</translation> ++ <translation>Сканер издөө...</translation> + </message> + </context> + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> +- <translation>سۇۇ ەنى ، تامعاسى قوشۇۇ</translation> ++ <translation>Суу белгисин кошуу</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> +- <translation>بەكىتۉۉ</translation> ++ <translation>Ырастоосу</translation> + </message> + </context> + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> +- <translation>ۅجۅتۉن <filename>اچۇۇ</translation> ++ <translation>Файлды ачуу </translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> +- <translation>ۅجۅت ناامى</translation> ++ <translation>Файл аты</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> +- <translation>ىسكاننىردوو تەڭشەكتەرىن ۋىكىپېدىيەنى جاشىرۇۇ</translation> ++ <translation>Сканерлеу параметрлерин виджетти жашыруу</translation> + </message> + </context> + <context> +@@ -1419,137 +1401,133 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Name</source> +- <translation>ات-تەك اتى</translation> ++ <translation>Аты-жөнү</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Symbol</source> +- <translation>تىنىچ بەلگە</translation> ++ <translation>Символ</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation>تۉرۉ</translation> ++ <translation>Түрү</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> +- <translation>ەسكەرتۉۉ</translation> ++ <translation>Эскертүү</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation>تىزىمدىكە كىرگىزىلگەن پرىنتىر شايمانىنىن بىر گەۋدىلەشكەن ماشىنانى سىكاننېرلاپ بېسىۋاتقان-باسىپ چىعارىپ جاتقان-باسىپ چىعارىپ جاتقان-ۅندۉرۉش كۅرۉنۉشتۅرۉ ەمەستىگىن قول مەنەن جەزملەشتۈرۈشىڭىز كەرەك. ەگەر الار بىر گەۋدىلەشكەن ماشىنانى سىكانىرلىمىسا، سەل قاراڭ.</translation> ++ <translation>Тизмеге кирген принтер түзмөктөрү бардык машиналарды сканерлеп, басып чыгарып жаткан-жатпаганын кол менен тастыктоо керек. Эгерде алар бардык машиналарды сканерлеп, басып чыгарбаса, аларды четке каккыла.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> + <source>Close</source> +- <translation>جابۇۇ</translation> ++ <translation>Жабуу</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="84"/> + <source>Device List</source> +- <translation>شايمان تىزىمدىگى</translation> ++ <translation>Түзмөк тизмеси</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> +- <translation>ارعادان قالتىرىش</translation> ++ <translation>Жокко чыгаруу</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="98"/> + <source>Next</source> +- <translation>كىيىنكى باسقىچ</translation> ++ <translation>Кийинки</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="118"/> + <source>Before</source> +- <translation>ىلگەركى باسقىچ</translation> ++ <translation>Мурун</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="119"/> + <source>Install</source> +- <translation>قاچالوو</translation> ++ <translation>Орнотуу</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation>Сканер</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> +- <translation>پرىنتىر</translation> ++ <translation>Принтер</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> +- <translation>شايمان اتى :</translation> ++ <translation>Орнотмо аты:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> +- <translation>قوزعوتقۇچ پراگرامماسى ناامى :</translation> ++ <translation>Драйвердин аты:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation>بۇل شوپۇر ۉچۉنچۉ جاعىنان گەلگەن بولۇپ، گەەبىر ۅلچۅشكۅ بولبويتۇرعان ناتىنجا پايدا قىلۇۇ مۉمكۉن.</translation> ++ <translation>Бул айдоочу үчүнчү тараптан болуп саналат, кандайдыр бир тынымсыз натыйжага алып келиши мүмкүн.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation>بۇل شوپۇرنى زاۋوت قامدايت. جابدۇۇسۇنۇن دال ،ىلايىق زاۋوت ى مەنەن بايلانىشىپ شوپۇرلۇق پىروگىرامماسىنا ەە بولۇڭ.</translation> ++ <translation>Бул драйвер өндүрүүчү тарабынан берилет. Драйвердик программаны алуу үчүн аппараттын тиешелүү өндүрүүчүсү менен байланышыңыздар.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation>ىشتەتكەلى بولوتۇرعان قوزعوتۇۇ پراگرامماسى جوق، قوزعوتقۇچتۇ قولدو قوشوسۇزبۇ؟</translation> ++ <translation>Жеткиликтүү айдоочулар жок, сиз кол менен айдоочуларды кошууну каалайсызбы?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> +- <translation>قوشۇۇ</translation> ++ <translation>Кошуу</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> +- <translation>قوزعوتۇۇ پراگرامماسى قاچالانىپ جاتات...</translation> ++ <translation>Драйверди орнотуу...</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation>قۇراشتىرۇۇ جەڭىشتۉۉ بولدۇ . ازىر بۇل ىسكانىردى ىشتەتىشكە باربى؟ «ىشتەتىش » نى چەگىپ Udev ( باشقارعۇۇچۇ جاشىرۇۇن نومۇرۇ زارىل ) نى قايرا قۇرۇۇ ، اچۇۇ ، باشتوو جاساپ ، ىسكاننىردوو قول دونۇۇسۇن قايرا قوزعوتۇپ شايمان تىزىمدىگىن جاڭىرتىڭ. ەگەر داعى ەلە سىكاننېرلاپ ىشتەتىلەتۇرعان سۉرۅتتۉ جالعاشتۇۇ ماشقۇلدانۇۇ قىلماقچى بولسوڭۇز، قول مەنەن قايرا قوزغىتىلىشى داعى ىسكاننىردوو قۇرباتىن ىشتەتىش ىڭىز كەرەك.</translation> +- </message> +- <message> +- <source>Installation successful. Do you want to use this scanner now?</source> +- <translation type="vanished">安装成功。你想现在使用这个扫描仪吗?</translation> ++ <translation>Орнотуу ийгиликтүү. Сиз азыр бул сканер колдонууну каалайсызбы? Удевти (администратор сырсөз талап кылынат) калыбына келтирүү үчүн 'колдонууну" басыңыз жана аппарат тизмесин жаңыртуу үчүн сканерлеу тиркемесин кайра иштетиңиз. Эгерде сиз дагы эле сканерленген сүрөттү колдонууну улантууну кааласаңыз, анда кол менен кайра баштоо жана сканерлеу милдетин колдонуу зарыл болот.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> +- <translation>ىشتەتىش</translation> ++ <translation>Колдонуу</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> +- <translation>قۇراشتىرۇۇ جەڭىلۉۉ بولدۇ .</translation> ++ <translation>Орнотуу ишке ашпады.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>Макул</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> +- <translation>تىزىمدىك تانداش</translation> ++ <translation>Каталогду тандоо</translation> + </message> + </context> + <context> +@@ -1559,7 +1537,7 @@ + <location filename="../src/showocrwidget.cpp" line="157"/> + <location filename="../src/showocrwidget.cpp" line="165"/> + <source>The document is in character recognition ...</source> +- <translation>ۅجۅت خاراكتېرىنى پەرقلەندۈرۈشتە ...</translation> ++ <translation>Документ мүнөзү таанылууда ...</translation> + </message> + </context> + </TS> +diff --git a/translations/kylin-scanner_mn.qm b/translations/kylin-scanner_mn.qm +index aba75e1..906d3fe 100644 +--- a/translations/kylin-scanner_mn.qm ++++ b/translations/kylin-scanner_mn.qm +@@ -1,29 +1,38 @@ +-<�d��!�`���B��(��D��"g��E��"���[��c��[��3��[��M��1��4���E�����E���M��E���"���G���G���S���<1��\���N��_���.7��������������`��;�����5&�֍��5i����;����'M��0��5��H5��(}�H5��KU�L���K������*O����,���e��-���e��M���s��07�%������,D���F*�G����4��H,���*�H,���"��H,���G��I����:V�J6�����J6���@�J6�����J6���0��J6���4��J6���C��J6���Eg�J6���H��Jcb��3�Jcb��#7�PFE��8��V}���(��Z�|����Z�|��J8�]������aҤ��I�f�~���������#� �J��I�f&���=`x$^���z�.��Jy��3��%q�u0��F0���&/����q����'�J����N^d�.��O����'��ki����ki���ki��".����)�����ID2kY��B2kY��s2kY�� �ky���$��kY����kY����kY��!t�����;��օ��G��I���f�I�����I�����I���0v�I���2#�I���E�I���HD�6���#o�ϕ��$|��W��x�JH����JH��h�JH���֓���'"���o2h)��s2h)���2h)��!52kY���2kY��@�b��;�g�^��8������<��n��.u�N%����N%��,d�^��A��9\��M�F���Ga���=&2kY��=2kY��}9$���)�[�����d��������������@T2h9�� 2h9��F2h9��!�L����l����-�p�>��C�6���hΈ����Έ���]�`��� +-M�����M����T����/�r���-=�����&�����u�����<\ʶ���9��F5��5� #?���1� 2kY��� 2kY��� ?�T��H� `3���,� �t���*� �v���*� �T��� +-� �T���� �T���� �T���+. �T���1K �T���9� �T���E� ����;) +-d����0� +-d����E� +-eK����� +-t�.��D% +-�U���;] +-����) +-�e��<� +-� ���6O~��//����J�2h��n2h���2h��!�E�9��+�E�9��M9ʫ��������F����1d��9&;e��[;e��;e��(4vx���41x���� +-������`�N�� ���) (���� (���� (���� (����� (����%� c�^��@� oEK��D� ��/��K� �7T��9� ����� ����3F'����g������.��2u)�E��+ne���f۾��f۾��3���n��=�i��N����x0"7*",&� 2%,%-!7&.5"6"� * "4 - (� &5!,&� 3$.3 � � 2&7� $3 0,"- 3�������Detect scanners, please waiting���DetectPageWidget���$5 /- ,$� 0"7*"-&7� � �������Connect���FailedPageWidget���.(#8 8 � 6"(� "7 *0:#38"0�������No available scan devices���FailedPageWidget���2$, "� � �������Dialog���KYCAboutDialog����("-!(2!� 0"7*"/2!6"(� 2%,%-!7&.5"2!"� ,#/*#* � � 2#*4"6"(� !,"/!(� 0"7*",&�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����(#0: ( 32':2'3� � +/&-� ("&0: ( 2'7( 2'7� 8"12'7'3� 8"02'7� �������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���N("-!� 0"(!� 0"7*"-&7� 5 /- 5$� #7#-$/5 "� �������!A new Scanner has been connected.��� ++<�d��!�`���B�����D��+P��E��+}��[�����[��<���[��[z��1��>-��E������E���#6��E���+���G���Qi��S���E���\���`e��_���7��h��� ++���������������`��Ed����>��֍��>����������/���0��?'�H5��1(�H5��Y��L���Z�����2�����5��e��7{��e��`��s��9��,D���P�G����>S�H,���:�H,���Q��I�~����I����C��J6�����J6���!)�J6���&��J6���:R�J6���>��J6���M��J6���OP�J6���R��Jcb��.�Jcb��+��PFE��B7�V}���1a�Z�|����Z�|��T!�]������aҤ��-�f�~���������T���\n�� ++6������,K �J��S�f&���F�x$^��gz�.��Tb��3��.�u0��'/0���.����� �����05J����cJd�.�������0��ki����ki��#�ki��+����2�����S-2kY��=2kY��!\2kY��)�ky���-r�kY����kY��!��kY��*]�����E0�օ��Q��I���x�I���J�I��� ��I���%��I���:�I���;��I���N��I���R-�6���,�ϕ��-��W��~�JH��o�JH��c�JH��#�������֓���/�"����2h)��n2h)��!�2h)��*2kY���2kY��!�@�b��E�g�^��B�uJ>��x��^��^O�����F:�n��8��N%���N%��4��^��Ke�9\��\�F���P�a���F�2kY��82kY��"f9$���2@@Kb���d���� ����������I���^�� ��n�� 0����6g��.��]2h9��2h9��"/2h9��*�L���l����6p�>��L��Z���[��6����Έ���[Έ���$F�`����M�����M����#�T����9tr���5������!�����#^�����E�ʨ����ʶ���C�F5��?`�m��� � #?���; 2kY��� 2kY��"� ?�T��R� JV���`� `3���5[ �t���39 �v���3� �T��� �T���'� �T���:� �T���CJ �T���M� �T���O� �T���\ ����D� ++d����:� ++d����O� ++eK����� ++t�.��N ++�U���D� ++����1� ++�e��Fz ++� ���?�O~��8�/����YJ2h��i2h��"�2h��*�E�9��4nE�9��\^����Plƞ������$�1d��B�;e���;e��&�;e��0�vx���=�x������N��e (���'� (����\ (����� (����$� (����.� c�^��J� oEK��N� ��/��ZP �7T��C� ���� 9 ����<�'����g����%��.��<�)�E��3�e���f۾�� �f۾��==��n��G<i��c�����0"7*",&� 2%,%-!7&.5"6"� * "4 - (� &5!,&� 3$.3 � � 2&7� $3 0,"- 3� � �.� �.� �.� � �������Detect scanners, please waiting���DetectPageWidget���$5 /- ,$� 0"7*"-&7� � �������Connect���FailedPageWidget���2(#8 8 � 6"(� "7 *0:#38"0� �������No available scan devices���FailedPageWidget����2':02� $(",$� 5 / -$7"-$/$- � *#/,$� &-!"� � 3 ,"(� #7"3 (� -$/ - 7 "� ( ""7 - 5$� *#/,$� �������"Unable to read text, please retrey���ImageOperationOCR���2$, "� � �������Dialog���KYCAboutDialog����("-!(2!� 0"7*"/2!6"(� 2%,%-!7&.5"2!"� ,#/*#* � � 2#*4"6"(� !,"/!(� 0"7*",&� � � ++�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����(#0: ( 32':2'3� � +/&-� ("&0: ( 2'7( 2'7� 8"12'7'3� 8"02'7� �������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���R("-!� 0"(!� 0"7*"-&7� 5 /- 5$� #7#-$/5 "� � � �������!A new Scanner has been connected.��� + MainWidget���0 ( -$/$.5"� � �������Alert��� ++MainWidget���$,&4&(� &-!"� *#/- ,$�������Cancel��� + MainWidget����2%,%-!7&.5"� 6 - 7 $� * "( � � *$0$3� 0"7*"-&7"� ,&/"-!7!"� ,&/"6!,&� *$6$� 0#/"5$� *$- 7 "� � � � + �������2Device busy, please wait or switch other scanners.��� + MainWidget���|0"7*"-&7� ("� ,#-#0#(� � 0"7*"-&7"� 3 ,"(� 0"(!*!7� 0"7*"(!� � � �������EDocument feeder out of documents, please place papers and scan again.��� + MainWidget����, $/"� *$0$� + 7 .'27� � 0"7*"-&7� + 7 .'27"� %-!7!4"/!,&� *$6$� *$0$3� 0"7*"-&72& � 0#/"� � � �������CInvalid argument, please change arguments or switch other scanners.��� + MainWidget���* 0 � *#/#( � �������Ok��� +-MainWidget���J("-!� 3 7$-$/"� -$6$5"-$/,$� 3$.3 � �.� �.�������Running beauty ...��� ++MainWidget���3 ,"(� !,"/!,&�������Restart��� ++MainWidget���P("-!� 3 7$-$/"� -$6$5"-$/,$� 3$.3 � �.� �.� � � ++�������Running beauty ...��� + MainWidget���J#6$(2$� 5 / 7 -$/$- 6"(� 3$.3 � �.� �.� � �������Running rectify ...��� ++MainWidget���x0"7*"/2!� "/ -3 5$� � !,"� * 6 /"-� $(� 0$7*$/5"/ - � 6"� 2!*4"*!� �������0Scan failed, Access to resource has been denied.��� ++MainWidget���z0"7&-&(� "/ -3 5$� � *"4"-� &(� 3!0� "� 4 - 0$(� * - 5"� #7#-$/5 "� �������$Scan failed, Document fedder jammed.��� ++MainWidget���z0"7*"/2!� "/ -3 5$� � 2%,%-!7&.5"� �i�/�O� 6 *$4 � 3$� *$7$-$� - 74 6� �������%Scan failed, Error during device I/O.��� ++MainWidget���h0"7*"/2!� "/ -3 5$� � 3#2#- 3$� , 3 - / .5"� 3$2 -3 * � �������Scan failed, Out of memory.��� ++MainWidget���h0"7*",&� "/ -3 /� � 0"7*"-&7� &(� *&7,&-&/� (!-!-!-3!*!� �������#Scan failed, Scanner cover is open.��� ++MainWidget���\0"7*"/2!� "/ -3 -0 (� 4 � *#/5$� � 3!.5",&� &-!6� �������(Scan failed, operation is not supported.��� + MainWidget����0"7*"/2!� "/ -3 * � � #3#,"� 0"7*"-&7"� 5 /- ,$� *$6$� *$0$3� 0"7*"-&72& � 0#/",$6"� * "4 - 7 "� � � ��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� + MainWidget���h0"7*",&� 5"// ,$"� ("-!(2!� ,&4&(� &-!"� *#/- -3 * � �!�� � �������"Scan operation has been cancelled.��� +-MainWidget���0"7&-&7�������Scanner��� ++MainWidget��0"02'.� &(� $(2 ,$�/$(2 ,$� 6"� * 6"4 - (� 0"/- * � � 0"7*"-&7� &(� ,!*� &(� ,!7!-/!/2!� 6"� * 2$/ ,$� 6"(� 2%/%-!� � 3 ,"(� !,"/!-&/,&� 6"� 3 7$5$� 0"7*"-&7� &(� ,!7!-/!-!(� &� +7$- 7 .� "� 3 ,"(� !,"/!-&/,&� *#/* � � ,!7*!� 0"7*"/2!� 6"(� 5"7$-� 3&70&� 6"� &7-&/5"/!(� 5"// -$/,$� -!*!/� � ,&4&(� &-!"� *#/- ,$� 6"� 3 7$( � � -!*!4&� 0"7*"/2!� 6"(� , ."6 � *&,&"� 4"3 .5"� 6"� 4 - 5 / ,$� *%-!3� 3 ,"(� !,"/!-0!(� &� 3 7 - � ,&4&(� 2!6� *#/$( � ������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� + MainWidget���<* "4 - (� #/$-0 (� &-!"� 0"7*"-&7�������Scanner not detected���NoDeviceWidget���"*#/",$� � *#/",$� � �������Cancel���NoMailDialog���", - ,$� � , - ,$� � �������Close���NoMailDialog���*$-0 7 ,$* 7� 6 *$,$� � �������Install���NoMailDialog���L0"$3 (� 5&"/� ,!"� ,!7!-/!-4"6"(� &5&-&7�������No email client���NoMailDialog��\#3#,"� 0"02'.3& � 0"$3 (� 5&"/&(� ,!7!-/!-4"6"(� &5&-&7"� 0 -$/- -0 (� &-!"6"� * "4 - (� #/* � � $7"3 *!7� * -$/- ,$6"(� , .2$� ,!7!-/!-4"6"(� &5&-&7"� 0 -$/- ,$� *#/* $� � � �������INot find email client in the system, please install email client firstly.���NoMailDialog���$�A�D�F� ,#6 7� 2 / 2$� � ������� +-ADF Duplex���QApplication��� &2#� � �������Auto���QApplication���$, *2 - "� , *2 0$� � �������Flatbed���QApplication���2#/ (� ("-$72 "� 0"7*"/2!� � �������Multiple���QApplication����6 -� ,&0&(&-2&6"� 0"(!3,!5&� *#"� � .5"/2 2 "� 5 )-"6"� 0"(!3,!,&6"� ,&/"6!5&� *#"� � � �������CRefreshing list. Please wait for the refresh success information...���QApplication���*0"7*"/2!� � 0"7*"/2!� � �������Scanner���QApplication���b0"7*"-&7� 2%,%-!7&.5"� 0"/- (� ,!.5",&� 3$.3 � �.� �.� �.� � �������Scanner is on detecting...���QApplication���, -$3 0$� �������Single���QApplication���,!7!-/!-4"� ������� User���QObject���N� >'� /"(� "� 0"7&-&(� , - ,$� * 7� * 6"( � � �������3 has already opened kylin-scanner, open will close ���QObject���@ 5"// - � � &7-&/5"/!,&� &&� �?� �� � ������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� 7$� ("-$7� � �������ADF Back���QObject���$�A�D�F� ,#6 7� 2 / 2$� � ������� +-ADF Duplex���QObject���$�A�D�F� !.&(!� 2 / � � ������� ADF Front���QObject���. 0"(� 2!7-!�������Auto���QObject���%)-!� �������Color���QObject���#3#, (� 3$� � �������Current ���QObject���@3$*� 3$-$"� 2 (",$� 2&7&/� ,!/*!7"� �������Default Type���QObject���, *2 - "� �������Flatbed���QObject���*#7#� %)-!� �������Gray���QObject���$5"7$- 0$(� $7 /"-� �������Lineart���QObject��� 0 -$3 /� �������Question���QObject���(,&4&(� &-!6� *#/- ( �������Cancel��� RunningDialog���, - ,$�������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� ++ADF Duplex���QApplication��� &2#� � �������Auto���QApplication���00"7*"-&7� "� (!-!-!,&� &-!"�������Fail to open the scanner���QApplication���$, *2 - "� , *2 0$� � �������Flatbed���QApplication���2#/ (� ("-$72 "� 0"7*"/2!� � �������Multiple���QApplication����6 -� ,&0&(&-2&6"� 0"(!3,!5&� *#"� � .5"/2 2 "� 5 )-"6"� 0"(!3,!,&6"� ,&/"6!5&� *#"� � � �������CRefreshing list. Please wait for the refresh success information...���QApplication���*0"7*"/2!� � 0"7*"/2!� � �������Scanner���QApplication���b0"7*"-&7� 2%,%-!7&.5"� 0"/- (� ,!.5",&� 3$.3 � �.� �.� �.� � �������Scanner is on detecting...���QApplication���, -$3 0$� �������Single���QApplication����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� 7$� ("-$7� � �������ADF Back���QObject���$�A�D�F� ,#6 7� 2 / 2$� � ������� ++ADF Duplex���QObject���$�A�D�F� !.&(!� 2 / � � ������� ADF Front���QObject���. 0"(� 2!7-!�������Auto���QObject���%)-!� �������Color���QObject���@3$*� 3$-$"� 2 (",$� 2&7&/� ,!/*!7"� �������Default Type���QObject���, *2 - "� �������Flatbed���QObject���*#7#� %)-!� �������Gray���QObject���6$-0 7 ,$� 4 -� 4 � ,!2&7!*!� �������Install timeout.���QObject���$5"7$- 0$(� $7 /"-� �������Lineart���QObject���(,&4&(� &-!6� *#/- ( �������Cancel��� RunningDialog���, - ,$�������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� + SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� + SaneObject����1�5�0� �d�p�i�������150 dpi��� + SaneObject����2�0�0� �d�p�i�������200 dpi��� +@@ -46,10 +55,11 @@ ScanDialog���, - ,$�������Close��� + ScanDialog���3 ,"(� 2#- � �������Multiple��� + ScanDialog���:("-$7� $(� 2#- � 6"� 0"7-&(!� � �������Number of pages scanning: ��� + ScanDialog���0"7&-&7� �������Scanner��� +-ScanDialog��H� ("-!(2!� #7#0"5$� * "( � � 2!-&(� "� *%7,%-&/,&� &&� �?� ,!7*!� #/ (� ("-$7� 0"7*"/2!� 6"� ,!7!-5"-&/*!/� � #/ (� *"4"-� . 2'7"6 /� "� , .$7,$� *#/#.5"� 2 6� � *#/-$.5"2 "� * 6"- 7!"�!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget���0 ( -$/$.5"� � �������Alert���ScanSettingsWidget���%)-!� �������Color���ScanSettingsWidget���%)-!� �������Colour���ScanSettingsWidget���x#3#, (� 3$� ,!7!-/!-4"� - 74 -� 2$� 5 0 *$7"� #7#-$/,$� !7,!� &-!6� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���&2#(#-� 2%,%-!7&.5"� �������Device���ScanSettingsWidget���\#7#0",$� &-!"� *"4"-� . 2'7"6 /� $(� 7- � 5 .� � �������File path that does not exist: ���ScanSettingsWidget���H*"4"-� . 2'7"6 /� $(� * "7"/ -$/$/2 ������� File settings���ScanSettingsWidget���, *2 - "� �������Flatbed���ScanSettingsWidget����, *2 - 6� 0"7*"/2!� 6"(� 5 -*$7� ("� #/ (� $3 - � 0"7*"/2!� 6"� 3!.5",&� &-!6� �������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���,!/*!7"� �������Format���ScanSettingsWidget���*#7#� %)-!� �������Gray���ScanSettingsWidget���$5"7$- 0$(� $7 /"-� �������Lineart���ScanSettingsWidget���&0"$3 (� "6 7� 6 *$-$/�������Mail to���ScanSettingsWidget���3 ,"(� 2#- � �������Multiple���ScanSettingsWidget���(!7!� �������Name���ScanSettingsWidget���"("-$7� $(� - 3 7-$�������Pages���ScanSettingsWidget���N0$7*$/5"/ ,$� !7,!� .!3!/� &-!"� 7- � 5 .� �������Path without access rights: ���ScanSettingsWidget���&"/- 4 � 6"(� (#7. � ������� +-Resolution���ScanSettingsWidget���("/- 4 /� ("� ,#-#0#(� �!�������Resolution is empty!���ScanSettingsWidget��� *$7 ( �������Save���ScanSettingsWidget���$ 02 - (� , 3 - / � �������Save As���ScanSettingsWidget���$ 02 - (� , 3 - / � �������Save as���ScanSettingsWidget���0"7&-&7� �������Scanner���ScanSettingsWidget���X,!.5"-&7/"- � 2%,%-!7&.5"� 6"� 0"7*!- 3!-&/&(!�������Scanner device���ScanSettingsWidget���0("-!� - 74 -� "� 0#)-#( � �������Select a directory���ScanSettingsWidget���, -$3 0$� �������Single���ScanSettingsWidget���6!,!� * - � �������Size���ScanSettingsWidget���$!,"/!(� 0"7*!-3!(!������� ++ScanDialog��H� ("-!(2!� #7#0"5$� * "( � � 2!-&(� "� *%7,%-&/,&� &&� �?� ,!7*!� #/ (� ("-$7� 0"7*"/2!� 6"� ,!7!-5"-&/*!/� � #/ (� *"4"-� . 2'7"6 /� "� , .$7,$� *#/#.5"� 2 6� � *#/-$.5"2 "� * 6"- 7!"�!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget���%)-!� �������Color���ScanSettingsWidget���%)-!� �������Colour���ScanSettingsWidget���x#3#, (� 3$� ,!7!-/!-4"� - 74 -� 2$� 5 0 *$7"� #7#-$/,$� !7,!� &-!6� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���&2#(#-� 2%,%-!7&.5"� �������Device���ScanSettingsWidget���\#7#0",$� &-!"� *"4"-� . 2'7"6 /� $(� 7- � 5 .� � �������File path that does not exist: ���ScanSettingsWidget���L*"4"-� . 2'7"6 /� $(� * "7"/ -$/$/2 � ������� File settings���ScanSettingsWidget���, *2 - "� �������Flatbed���ScanSettingsWidget����, *2 - 6� 0"7*"/2!� 6"(� 5 -*$7� ("� #/ (� $3 - � 0"7*"/2!� 6"� 3!.5",&� &-!6� �������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���,!/*!7"� �������Format���ScanSettingsWidget���*#7#� %)-!� �������Gray���ScanSettingsWidget���$5"7$- 0$(� $7 /"-� �������Lineart���ScanSettingsWidget���*0"$3 (� "6 7� 6 *$-$/� �������Mail to���ScanSettingsWidget���3 ,"(� 2#- � �������Multiple���ScanSettingsWidget���(!7!� �������Name���ScanSettingsWidget���"("-$7� $(� - 3 7-$�������Pages���ScanSettingsWidget���N0$7*$/5"/ ,$� !7,!� .!3!/� &-!"� 7- � 5 .� �������Path without access rights: ���ScanSettingsWidget���&"/- 4 � 6"(� (#7. � ������� ++Resolution���ScanSettingsWidget���("/- 4 /� ("� ,#-#0#(� �!�������Resolution is empty!���ScanSettingsWidget��� *$7 ( � �������Save���ScanSettingsWidget���$ 02 - (� , 3 - / � �������Save As���ScanSettingsWidget���$ 02 - (� , 3 - / � �������Save as���ScanSettingsWidget���\,!.5"-&7/"- � 2%,%-!7&.5"� 6"� 0"7*!- 3!-&/&(!� �������Scanner device���ScanSettingsWidget���0("-!� - 74 -� "� 0#)-#( � �������Select a directory���ScanSettingsWidget���, -$3 0$� �������Single���ScanSettingsWidget���6!,!� * - � �������Size���ScanSettingsWidget���(!,"/!(� 0"7*!-3!(!� ������� + Start Scan���ScanSettingsWidget���", 3 - / ,$� *"4"-������� +-Store text���ScanSettingsWidget���02$0� *"4"-� . 2'7"6 /� � ������� The file ���ScanSettingsWidget���2&7&/� ,!/*!7"�������Type���ScanSettingsWidget���2!".&� !� �������Yes���ScanSettingsWidget���f0 ++Store text���ScanSettingsWidget���02$0� *"4"-� . 2'7"6 /� � ������� The file ���ScanSettingsWidget����!(!� ,&� "/- .5"� 6"� . 0"� $72$� ,$-$4 - � * 7� 0"7*",&� ,!7!-2!6� � *#/-#.5"2 6� 0#)-#- 7 6� �������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���2&7&/� ,!/*!7"�������Type���ScanSettingsWidget���2!".&� !� �������Yes���ScanSettingsWidget���f0 + � �/� 0� -!0!(� &0&-� &(� 2!.2!-� "� * -2 - 5$� *#/,$� &-!6� �������cannot contain '/' character.���ScanSettingsWidget���� 02 - (� ("-$-3 -0 (� *"4"-� . 2'7"6 /� "6 7� , 3 - / 5$� 3!6"/,&� &-!"� �������cannot save as hidden file.���ScanSettingsWidget����0�1� 6"� 0"7*!-!,&������� scanner01���ScanSettingsWidget���.!7-!5"/� �������tips���ScanSettingsWidget���(,&4&(� &-!6� *#/- ( �������Cancel���SendMailDialog���, - ,$�������Close���SendMailDialog���&($2 / (� 2#-2 - ,$� �������Confirm���SendMailDialog���0"7&-&7� �������Scanner���SendMailDialog���f!/':27#(� 0"&3 (� $� 5&"/� &(� ,!7!-/!-4"3� "� 0#)-#( � �������Select email client���SendMailDialog���(,&4&(� &-!6� *#/- ( �������Cancel���ShowImageWidget���N,&4&(� &-!6� *#/- ( � 5"- , (� ,&/"6!5&� �������Canceling...Please waiting...���ShowImageWidget���* 0 � *#/#( � �������Ok���ShowImageWidget���6-&6&/2!� 6"(� -$6$� ,!&,!(� $� �������Running beauty ...���ShowImageWidget���H 5"// - (� "� *&,&/"� * 7� ("� $7$0, ,$� �������Running rectify ...���ShowImageWidget���J, 3 - / 5$� * 6"- 3� *$4 - (� - 7- ( � ������� +-&Save Exit���TitleBar����.�.�.�������...���TitleBar���* 7$-� �������About���TitleBar���, - ,$�������Close���TitleBar���"$,$7"5$� - 7$( � �������Exit���TitleBar���,!/*!7"�������Form���TitleBar���, *0$7$( � �������Help���TitleBar���$, .$-� 6!,!� *#/* � �������Maximize���TitleBar���.!3!-!� ,!0!-� ,!*4"6!(� &� 0&/5"6!(� 3#2#7 � *"4"-� &(� 6 7"/4 ,$� * � *"4"-� . 2'7"6 /� 3 .5"-$/,$� 4"3 *,"� , )- 5 "� � &"/!4"/!-&7� * 6"-$/,$� 4",$/ � &-!"� � 2!7!� #/ (� ,%.%(� , .2$* 7� , 7"/4 (� , 7"/4 (� (!"/!-&/,&� 6"� 3!.5"(!� ��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���&, .$-� * - � *#/* � �������Minimize���TitleBar���0#)-#( �������Option���TitleBar���2,&0&(&-2&� 6"� 0"(!3,!(!� �������Refresh List���TitleBar���0!7-&-!,&�������Restore���TitleBar���0"7&-&7�������Scanner���TitleBar���B0"-$3� 6 *$,$� * � *$4 - (� - 7- ( �������Straight &Exit���TitleBar����2'/&"(29'79"/� "0($20 8'3� � 8 (2'� 2%8'"2� ,!3&"� * ",$� *$"� �?�������6The current file is not saved. Do you want to save it?���TitleBar���,!*/!/� ������� Version: ���TitleBar���0"7&-&7������� kylin-scanner���TitleBar���-#6#� �������Beauty��� ToolBarWidget���2 7". /�������Crop��� ToolBarWidget��� +-2#/"�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���5 / 7 -$/,$� �������Rectify��� ToolBarWidget���!7-"/3&(!� �������Rotate��� ToolBarWidget���$0$(� 3 7$. /� ������� Watermark��� ToolBarWidget���6!,!0,!� �������ZoomIn��� ToolBarWidget���* - 0, ( � �������ZoomOut��� ToolBarWidget���0"7 ,$� ""� ("-!(2!� 2 0$/5$� 5 /- * � ,!7*!� !7!0� 0"7, 2$-0 (� ,!.5"-&7� "� (!-!-!5&� 6 -� 0"7&-&7/!5&� * 6"- � ,#/*#- � 6"� 0"7&-&(� *4$� * "* /� � 0"7&-&7� "� ,&4&(� &-!"� *#/- ,$� *$6$� 0"7&-&7� &(� .!3!-&/&/2!� 6"(� *$7$-$� 4".!-!� 6"� - -4 - 73 -$/,$� *$6$� ,&/"6!5&� * "- 7 "� ��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���T0"(!� 0"7 -0 (� "0,&/� ("-!(2!� ,#/*#-3 5 "� �������New Scanner has been Connected.���UsbHotplugThread����6 -� +7$- 7 .� $(� 2%,%-!7&.5"� 6"� 0"7&-&73!5&� * 6"( � � 5"- , (� ,&/"6!5&� �������+Querying scanner device. Please waitting...���UsbHotplugThread����0"7 ,$� * - 5"� ("-!(2!� 2 0$7 /2 � &-!"� ,#/*#5$� � 0"7*!/2!� 6"(� 5"-0 - /� $(� ,&0&(&-2&� 6"� 0"(!3,!5!"� � 5"- , (� ,&/"6!5&� �������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread����0"7 ,$� 3!0� 3 7 - / /� $(� 5"-0 - /2 � 6"(� ,%0%(%-2&� 6"� 0"(!3,!(� *!6!/!-&/*!� �������Scanner list refresh complete.���UsbHotplugThread���, - ,$�������Close���WaittingDialog���N6 -� !7"5&� * ""- 3� 1&-&73!,&� 1&-&73!,&� �������Searching for scanner...���WaittingDialog���6$0$� (!.!,&� 3 7$. /� "� (!.!,&������� Add watermark���WatermarkDialog���(,&4&(� &-!6� *#/- ( �������Cancel���WatermarkDialog���, - ,$�������Close���WatermarkDialog���&($2 / (� 2#-2 - ,$� �������Confirm���WatermarkDialog���0"7&-&7� �������Scanner���WatermarkDialog���8*"4"-� . 2'7"6 /� $(� (!7!� �������Filename���main���^("-$-3 5$� 5"5"-� $-0 7 - � 2#(#-� 2#,"7 -$/$( � �������Hide scan settings widget���main���@*"4"-� . 2'7"6 /� "� (!-!-!(!� � �������Open file <filename>���main���(!.!� �������Add���newDeviceListPage���0 ( -$/$.5"� � �������Alert���newDeviceListPage���%)-!7!-0!(� 3&� �������Before���newDeviceListPage���(,&4&(� &-!6� *#/- ( �������Cancel���newDeviceListPage���, - ,$�������Close���newDeviceListPage���D2%,%-!7&.5"� 6"(� ,&0&(&-2&� 3&� 5"-0 �������Device List���newDeviceListPage���62%,%-!7&.5"� 6"(� (!7!6"3&/� �������Device Name:���newDeviceListPage���Z,%3!/-!-&7� *#/- ,$� 3!0� 3 7 - / /� $(� (!7!6"3&/�������Driver Name:���newDeviceListPage���$-0 7 ,$� �������Install���newDeviceListPage��� "/ -3 /� $-0 7 ,$�������Installation failed.���newDeviceListPage���H6 -� ,&3!/-!-&72&� +7$- 7 .� $-0 7 5$� �������Installing driver...���newDeviceListPage���(!7!� �������Name���newDeviceListPage���"3 7 - � ("-!� ("� �������Next���newDeviceListPage����,!7!-/!5&� *#/,$� ,%3!/-!-&7� &(� +7&- 7 .� * 6",$� &-!"� � - 7� "6 7� ,%3!/-!-&7� *#/- ,$� +7&- 7 .� (!.!,&� &&� �?�������:No available drivers, do you want to manually add drivers?���newDeviceListPage���!,"/!*!�������Ok���newDeviceListPage���,("-!� - 74 -� "� 0#)-#( �������Select a directory���newDeviceListPage���*!/-!3!/�������Symbol���newDeviceListPage���2&7&/� ,!/*!7"�������Type���newDeviceListPage���,!7!- /!(!�������Use���newDeviceListPage�����������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file ++&Save Exit���TitleBar����.�.�.�������...���TitleBar���* 7$-� �������About���TitleBar���, - ,$�������Close���TitleBar���"$,$7"5$� - 7$( � �������Exit���TitleBar���,!/*!7"� �������Form���TitleBar���, *0$7$( � �������Help���TitleBar���$, .$-� 6!,!� *#/* � �������Maximize���TitleBar���.!3!-!� ,!0!-� ,!*4"6!(� &� 0&/5"6!(� 3#2#7 � *"4"-� &(� 6 7"/4 ,$� * � *"4"-� . 2'7"6 /� 3 .5"-$/,$� 4"3 *,"� , )- 5 "� � &"/!4"/!-&7� * 6"-$/,$� 4",$/ � &-!"� � 2!7!� #/ (� ,%.%(� , .2$* 7� , 7"/4 (� , 7"/4 (� (!"/!-&/,&� 6"� 3!.5"(!� ��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���&, .$-� * - � *#/* � �������Minimize���TitleBar���0#)-#( � �������Option���TitleBar���2,&0&(&-2&� 6"� 0"(!3,!(!� �������Refresh List���TitleBar���0!7-&-!,&�������Restore���TitleBar���0"7&-&7� �������Scanner���TitleBar���B0"-$3� 6 *$,$� * � *$4 - (� - 7- ( �������Straight &Exit���TitleBar����2'/&"(29'79"/� "0($20 8'3� � 8 (2'� 2%8'"2� ,!3&"� * ",$� *$"� �?�������6The current file is not saved. Do you want to save it?���TitleBar���,!*/!/� ������� Version: ���TitleBar���0"7&-&7� ������� kylin-scanner���TitleBar���-#6#� �������Beauty��� ToolBarWidget���2 7". /�������Crop��� ToolBarWidget��� ++2#/"�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���5 / 7 -$/,$� �������Rectify��� ToolBarWidget���!7-"/3&(!� �������Rotate��� ToolBarWidget���$0$(� 3 7$. /� ������� Watermark��� ToolBarWidget���6!,!0,!� �������ZoomIn��� ToolBarWidget���* - 0, ( � �������ZoomOut��� ToolBarWidget���0"7 ,$� ""� ("-!(2!� 2 0$/5$� 5 /- * � ,!7*!� !7!0� 0"7, 2$-0 (� ,!.5"-&7� "� (!-!-!5&� 6 -� 0"7&-&7/!5&� * 6"- � ,#/*#- � 6"� 0"7&-&(� *4$� * "* /� � 0"7&-&7� "� ,&4&(� &-!"� *#/- ,$� *$6$� 0"7&-&7� &(� .!3!-&/&/2!� 6"(� *$7$-$� 4".!-!� 6"� - -4 - 73 -$/,$� *$6$� ,&/"6!5&� * "- 7 "� ��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���T0"(!� 0"7 -0 (� "0,&/� ("-!(2!� ,#/*#-3 5 "� �������New Scanner has been Connected.���UsbHotplugThread����6 -� +7$- 7 .� $(� 2%,%-!7&.5"� 6"� 0"7&-&73!5&� * 6"( � � 5"- , (� ,&/"6!5&� �������+Querying scanner device. Please waitting...���UsbHotplugThread����0"7 ,$� * - 5"� ("-!(2!� 2 0$7 /2 � &-!"� ,#/*#5$� � 0"7*!/2!� 6"(� 5"-0 - /� $(� ,&0&(&-2&� 6"� 0"(!3,!5!"� � 5"- , (� ,&/"6!5&� �������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread����0"7 ,$� 3!0� 3 7 - / /� $(� 5"-0 - /2 � 6"(� ,%0%(%-2&� 6"� 0"(!3,!(� *!6!/!-&/*!� �������Scanner list refresh complete.���UsbHotplugThread���, - ,$�������Close���WaittingDialog���$0"7*"-&7�;� 0"7*"-&7�������Scanner���WaittingDialog���N6 -� !7"5&� * ""- 3� 1&-&73!,&� 1&-&73!,&� �������Searching for scanner...���WaittingDialog���6$0$� (!.!,&� 3 7$. /� "� (!.!,&������� Add watermark���WatermarkDialog���(,&4&(� &-!6� *#/- ( �������Cancel���WatermarkDialog���, - ,$�������Close���WatermarkDialog���&($2 / (� 2#-2 - ,$� �������Confirm���WatermarkDialog���0"7&-&7� �������Scanner���WatermarkDialog���8*"4"-� . 2'7"6 /� $(� (!7!� �������Filename���main���^("-$-3 5$� 5"5"-� $-0 7 - � 2#(#-� 2#,"7 -$/$( � �������Hide scan settings widget���main���@*"4"-� . 2'7"6 /� "� (!-!-!(!� � �������Open file <filename>���main���(!.!� �������Add���newDeviceListPage���0 ( -$/$.5"� � �������Alert���newDeviceListPage���%)-!7!-0!(� 3&� �������Before���newDeviceListPage���(,&4&(� &-!6� *#/- ( �������Cancel���newDeviceListPage���, - ,$�������Close���newDeviceListPage���D2%,%-!7&.5"� 6"(� ,&0&(&-2&� 3&� 5"-0 �������Device List���newDeviceListPage���62%,%-!7&.5"� 6"(� (!7!6"3&/� �������Device Name:���newDeviceListPage���Z,%3!/-!-&7� *#/- ,$� 3!0� 3 7 - / /� $(� (!7!6"3&/�������Driver Name:���newDeviceListPage���$-0 7 ,$� �������Install���newDeviceListPage��� "/ -3 /� $-0 7 ,$�������Installation failed.���newDeviceListPage��2$-0 7 ,$� ("� .5"/2 � 2 6� � 4"� #3#� !(!� 0"7*"-&7� "� ,!7!-/!,&� &8�?� 0 ++� �U�s�e� 0� 6"� 2#*4"3 5$� �u�d�e�v� �(, ."6 7$-4"� 6"(� ("-$4 � (#.'7� "� ,!7!-0!(!�)� "� 3 ,"(� 2#,"7 -$/,$� 6"(� , .2$� 0"7*"/2!� 6"(� ,!7!-/!-!(� &� +7$- 7 .� "� 3 ,"(� !,"/!-&/5&� 2%,%-!7&.5"� 6"(� ,&0&(&-� "� 0"(!3,!(!� � ,!7*!� 2 � .%(� /!� 0"7*"/2!� 6"(� 5"7$-� 3&70&� 6"� &7-&/5"/!(� 5"// -$/,$� -!*!/� � - 7� "6 7� 3 ,"(� !,"/!-&/,&� 6"(� , .2$� 0"7*"/2!� 6"(� 4"3 .5"� 6"� ,!7!-/!,&� 4",$/ 2 6� ������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���H6 -� ,&3!/-!-&72&� +7$- 7 .� $-0 7 5$� �������Installing driver...���newDeviceListPage���(!7!� �������Name���newDeviceListPage���"3 7 - � ("-!� ("� �������Next���newDeviceListPage����,!7!-/!5&� *#/,$� ,%3!/-!-&7� &(� +7&- 7 .� * 6",$� &-!"� � - 7� "6 7� ,%3!/-!-&7� *#/- ,$� +7&- 7 .� (!.!,&� &&� �?�������:No available drivers, do you want to manually add drivers?���newDeviceListPage���* 0 � *#/#( � �������Ok���newDeviceListPage���"3 7$. // ,$� . 0"(�������Printer���newDeviceListPage���$0"7*"-&7�;� 0"7*"-&7�������Scanner���newDeviceListPage���0("-!� - 74 -� "� 0#)-#( � �������Select a directory���newDeviceListPage���*!/-!3!/�������Symbol���newDeviceListPage����!(!� ,%3!/-!,&� +7$- 7 .� ("� -$7* 3 ,"� !2!-!3� !4!� "7!-0!(� 6$.� � 5 7".� ,!.5"5&� *#/$0"� &-!"� &7!� 3&)� "� !-&0-!5&� .!3!(!� �������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage��$!(!� ,%3!/-!,&� +7$- 7 .� "� &"/!3*&7"/!-4"� !4!� , )- -0 (� 6$.� � 2#0� 2%,%-!7&.5"� 6"(� 5#,"4 )-$6� &6/!3*&7"� 2!6� , 7"/4 5$� ,%3!/-!,&� +7$- 7 .� "� #/$- 7 6� ��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���2&7&/� ,!/*!7"�������Type���newDeviceListPage���,!7!- /!(!� �������Use���newDeviceListPage���2 � ,&0&(&-2&� 3&� * -2 - -0 (� 3 7$. // ,$� . 0"(� $� 2%,%-!7&.5"� ("� 0"7*"/2!� * � 3 7$. // ,$� . 0"(� .%(� !0!,&� 6"� - 7� "6 7� ($2 / ,$� ,!7!-2!6� � ,!7*!� 2!3!-!7� ("� 0"7*"/2!� * � ,!*/!/� &(� *&,&� . 0"(� *"0"� *#/� � 2!3!-!7� "� #.2#- 6"/ ( � ��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���d0@8<B� 18G83� =L� BM<4M3B� B0=8E� �5� H0B0=4� 109=0�.� �.� �.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file +diff --git a/translations/kylin-scanner_mn.ts b/translations/kylin-scanner_mn.ts +index 76d57e4..3bedcf5 100644 +--- a/translations/kylin-scanner_mn.ts ++++ b/translations/kylin-scanner_mn.ts +@@ -4,14 +4,9 @@ + <context> + <name>DetectPageWidget</name> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> +- <translation>ᠰᠢᠷᠪᠢᠬᠦ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢᠶ᠋ᠢ ᠪᠠᠢᠴᠠᠭᠠᠨ ᠦᠵᠡᠬᠦ ᠳᠤᠮᠳᠠ ᠂ ᠲᠦᠷ ᠤᠳᠠᠰᠬᠢᠭᠠᠳ</translation> ++ <translation>ᠰᠢᠷᠪᠢᠬᠦ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢᠶ᠋ᠢ ᠪᠠᠢᠴᠠᠭᠠᠨ ᠦᠵᠡᠬᠦ ᠳᠤᠮᠳᠠ ᠂ ᠲᠦᠷ ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠁ . . . </translation> + </message> + </context> + <context> +@@ -23,7 +18,7 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation>ᠨᠣᠸᠠᠸᠠ ᠶᠢᠨ ᠢᠷᠠᠪᠰᠺᠣᠳ᠋ᠸᠢᠰ</translation> ++ <translation>ᠨᠣᠸᠠᠸᠠ ᠶᠢᠨ ᠢᠷᠠᠪᠰᠺᠣᠳ᠋ᠸᠢᠰ ᠃</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> +@@ -37,7 +32,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>ᠲ᠋ᠧᠺᠰᠲ ᠤᠨᠢᠬᠤ ᠵᠠᠯᠠᠭᠤᠷᠢᠭᠤᠯᠤᠭᠠ ᠪᠣᠯᠬᠤ ᠦᠭᠡᠢ ᠂ ᠳᠠᠬᠢᠨ ᠣᠷᠢᠳᠠᠨ ᠠᠭᠤᠯᠠᠭᠠᠷᠠᠢ ᠨᠠᠢᠢᠷᠠᠭᠠᠵᠤ ᠪᠣᠯᠬᠤ ᠂</translation> + </message> + </context> + <context> +@@ -54,7 +49,8 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> + <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> + <source>Connect scanners, please click scan button to start scanning.</source> +- <translation>ᠨᠢᠭᠡᠨᠲᠡ ᠰᠢᠷᠪᠢᠯᠲᠡᠶ᠋ᠢᠨ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢᠲᠡᠢ ᠬᠣᠯᠪᠣᠪᠠ ᠂ ᠲᠣᠪᠴᠢᠶ᠋ᠢᠨ ᠡᠬᠢᠯᠡᠨ ᠰᠢᠷᠪᠢᠬᠦ</translation> ++ <translation>ᠨᠢᠭᠡᠨᠲᠡ ᠰᠢᠷᠪᠢᠯᠲᠡᠶ᠋ᠢᠨ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢᠲᠡᠢ ᠬᠣᠯᠪᠣᠪᠠ ᠂ ᠲᠣᠪᠴᠢᠶ᠋ᠢᠨ ᠡᠬᠢᠯᠡᠨ ᠰᠢᠷᠪᠢᠬᠦ ++</translation> + </message> + <message> + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> +@@ -69,18 +65,16 @@ + <context> + <name>MainWidget</name> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation>ᠰᠢᠷᠦᠭᠦᠷ</translation> ++ <translation type="vanished">ᠰᠢᠷᠪᠢᠯᠲᠡ ᠂ ᠰᠢᠷᠪᠢᠯᠲᠡ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> +- <translation type="unfinished">ᠪᠠᠰᠠ ᠪᠣᠯᠣᠨᠠ ᠃</translation> ++ <translation>ᠪᠠᠰᠠ ᠪᠣᠯᠣᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> + <translation>ᠬᠠᠤᠯᠢ ᠪᠤᠰᠤ ᠫᠠᠷᠠᠮᠧᠲ᠋ᠷ ᠂ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠫᠠᠷᠠᠮᠧᠲ᠋ᠷᠢ᠋ ᠥᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠪᠤᠶᠤ ᠪᠤᠰᠤᠳ ᠰᠢᠷᠪᠢᠭᠦᠷᠲᠦ᠍ ᠰᠣᠯᠢ ᠃ </translation> + </message> +@@ -89,88 +83,89 @@ + <translation type="vanished">ᠲᠡᠰᠢᠶᠡ ᠺᠣᠳ᠋ ᠄ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> + <translation>ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠠᠭᠠᠷᠠᠤ ᠪᠠᠢᠨᠠ ᠂ ᠪᠤᠰᠤᠳ ᠰᠢᠷᠪᠢᠭᠦᠷᠢ᠋ ᠬᠦᠯᠢᠭᠡᠷᠡᠢ ᠬᠦᠯᠢᠶᠡᠬᠦ ᠪᠤᠶᠤ ᠰᠣᠯᠢᠵᠤ ᠠᠪᠤᠭᠠᠷᠠᠢ ᠃ + </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> + <translation>ᠰᠢᠷᠪᠢᠭᠦᠷ ᠨᠢ ᠬᠣᠭᠣᠰᠣᠨ ᠂ ᠰᠢᠷᠪᠢᠭᠦᠷᠢ᠋ ᠳᠠᠬᠢᠨ ᠰᠢᠨᠡᠪᠡᠷ ᠰᠢᠷᠪᠢᠨᠡ ᠃ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> + <translation>ᠰᠢᠷᠪᠢᠬᠦ ᠠᠵᠢᠯᠯᠠᠬᠤᠢ ᠨᠢᠭᠡᠨᠲᠡ ᠬᠦᠴᠦᠨ ᠦᠭᠡᠢ ᠪᠣᠯᠭᠠᠭᠳᠠᠪᠠ !︕ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠢᠯᠠᠭᠳᠠᠭᠰᠠᠨ ᠠᠴᠠ ᠪᠣᠯᠵᠤ ᠂ ᠳᠡᠮᠵᠢᠬᠦ ᠦᠭᠡᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠦᠭᠦᠨ ᠢᠯᠠᠭᠳᠠᠵᠤ ᠂ ᠪᠢᠴᠢᠭ᠌ ᠦᠨ ᠳᠡᠰ ᠢ ᠴᠠᠭᠠᠰᠤᠨ ᠪᠠᠭᠠᠵᠢ ᠣᠷᠣᠭᠤᠯᠵᠠᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠢᠯᠠᠭᠳᠠᠵᠤ ᠂ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ i/O ᠶᠠᠪᠤᠴᠠ ᠳᠤ ᠪᠤᠷᠤᠭᠤ ᠭᠠᠷᠴᠠᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠢᠯᠠᠭᠳᠠᠵᠤ ᠂ ᠳᠣᠲᠣᠭᠠᠳᠤ ᠬᠠᠳᠠᠭᠠᠯᠠᠮᠵᠢ ᠳᠤᠲᠠᠭᠳᠠᠪᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠢᠯᠠᠭᠳᠠᠵᠤ ᠂ ᠡᠬᠢ ᠪᠠᠶᠠᠯᠢᠭ ᠤᠨ ᠰᠤᠷᠪᠤᠯᠵᠢᠯᠠᠭᠠ ᠶᠢ ᠲᠡᠪᠴᠢᠪᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠬᠦ ᠢᠯᠠᠭᠳᠠᠯ ᠂ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠦᠨ ᠪᠦᠷᠬᠦᠭᠦᠯ ᠨᠡᠭᠡᠭᠡᠭᠳᠡᠪᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> + <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠣᠳᠣᠬᠢ ᠰᠢᠷᠪᠢᠭᠦᠷᠢ᠋ ᠵᠠᠯᠭᠠᠬᠤ ᠪᠤᠶᠤ ᠪᠤᠰᠤᠳ ᠰᠢᠷᠪᠢᠭᠦᠷᠲᠦ᠍ ᠰᠣᠯᠢᠬᠤᠶ᠋ᠢ ᠪᠠᠢᠴᠠᠭᠠᠷᠠᠢ ᠃ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠰᠲ᠋ᠧᠮ ᠦᠨ ᠤᠨᠲᠠᠬᠤ/ᠤᠨᠲᠠᠬᠤ ᠶᠢ ᠪᠠᠶᠢᠴᠠᠭᠠᠨ ᠰᠢᠯᠭᠠᠪᠠ ᠃ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠦᠨ ᠬᠡᠪ ᠦᠨ ᠬᠡᠷᠡᠭᠯᠡᠯᠲᠡ ᠶᠢ ᠪᠠᠲᠤᠯᠠᠬᠤ ᠶᠢᠨ ᠲᠥᠯᠥᠭᠡ ᠂ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠭᠦᠯᠬᠦ ᠶᠢ ᠳᠠᠷᠤᠵᠤ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠦᠨ ᠬᠡᠷᠡᠭᠯᠡᠭᠡᠨ ᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠢ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠭᠦᠯᠬᠦ ᠪᠣᠯᠪᠠ ᠃ ᠬᠡᠷᠪᠡ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠵᠢᠷᠤᠭ ᠳᠦᠷᠰᠦ ᠶᠢ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠬᠤ ᠭᠡᠪᠡᠯ ᠂ ᠬᠦᠴᠦᠨ ᠦᠭᠡᠢ ᠪᠣᠯᠭᠠᠬᠤ ᠶᠢ ᠳᠠᠷᠤᠨᠠ ᠂ ᠭᠡᠪᠡᠴᠦ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠬᠠᠮᠢᠶᠠ ᠪᠦᠬᠦᠢ ᠴᠢᠳᠠᠮᠵᠢ ᠶᠢ ᠴᠠᠭᠠᠵᠠᠯᠠᠬᠤ ᠪᠥᠭᠡᠳ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠭᠰᠡᠨ ᠦ ᠳᠠᠷᠠᠭᠠ ᠬᠦᠴᠦᠨ ᠲᠡᠶ ᠪᠣᠯᠤᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠢ ᠪᠣᠯᠭᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> +- <translation type="unfinished"></translation> ++ <translation>ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠬᠦ</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> + <translation>ᠰᠠᠨᠠᠭᠤᠯᠤᠮᠵᠢ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> +- <translation>ᠨᠢᠭᠡ ᠰᠢᠨᠡ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠵᠠᠯᠭᠠᠵᠤ ᠣᠷᠣᠭᠤᠯᠵᠠᠢ ᠃</translation> ++ <translation>ᠨᠢᠭᠡ ᠰᠢᠨᠡ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠵᠠᠯᠭᠠᠵᠤ ᠣᠷᠣᠭᠤᠯᠵᠠᠢ ᠃ </translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> +- <translation>ᠨᠢᠭᠡ ᠳᠠᠷᠤᠭᠤᠯᠢ᠋ ᠭᠤᠶᠤᠵᠢᠭᠤᠯᠬᠤ ᠳᠤᠮᠳᠠ . .</translation> ++ <translation>ᠨᠢᠭᠡ ᠳᠠᠷᠤᠭᠤᠯᠢ᠋ ᠭᠤᠶᠤᠵᠢᠭᠤᠯᠬᠤ ᠳᠤᠮᠳᠠ . . ++</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> + <translation>ᠣᠶᠤᠨᠲᠤ ᠵᠠᠯᠠᠷᠠᠭᠤᠯᠤᠭᠠᠶ᠋ᠢᠨ ᠳᠤᠮᠳᠠ . . </translation> + </message> +@@ -186,29 +181,29 @@ + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> + <translation>ᠰᠢᠤᠳᠠᠨ ᠵᠦᠢᠯ ᠬᠡᠢ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢᠶ᠋ᠢᠨ ᠦᠵᠦᠭᠦᠷ</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ ᠂ ᠬᠠᠭᠠᠬᠤ </translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> + <translation>ᠣᠳᠣᠬᠢ ᠰᠢᠰᠲ᠋ᠧᠮᠳ᠋ᠦ᠍ ᠰᠢᠤᠳᠠᠨ ᠵᠦᠢᠯᠦ᠋ᠨ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢᠶ᠋ᠢᠨ ᠦᠵᠦᠭᠦᠷᠢ᠋ ᠰᠠᠭᠤᠯᠭᠠᠭᠰᠠᠨ ᠦᠭᠡᠢᠶ᠋ᠢ ᠪᠠᠢᠴᠠᠭᠠᠨ ᠣᠯᠪᠠ ᠂ ᠤᠷᠢᠳᠠᠪᠡᠷ ᠪᠠᠭᠤᠯᠭᠠᠬᠤᠶ᠋ᠢᠨ ᠬᠠᠮᠲᠤ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢᠶ᠋ᠢᠨ ᠦᠵᠦᠭᠦᠷᠢ᠋ ᠰᠠᠭᠤᠯᠭᠠᠬᠤ ᠪᠣᠯᠪᠠᠤ ᠃ </translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> + <translation>ᠪᠣᠯᠢᠬᠤ ᠂ ᠪᠣᠯᠢᠬᠤ </translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> + <translation>ᠤᠭᠰᠠᠷᠠᠬᠤᠪᠠᠷ ᠶᠠᠪᠤᠬᠤ </translation> + </message> +@@ -216,31 +211,35 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> + <translation>ᠰᠢᠷᠪᠢᠯᠲᠡ ᠂ ᠰᠢᠷᠪᠢᠯᠲᠡ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> + <translation>ᠣᠯᠠᠨ ᠨᠢᠭᠤᠷᠲᠠᠢ ᠰᠢᠷᠪᠢᠯᠲᠡ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠭᠦᠷ ᠢ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠦᠭᠡᠢ</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> + <translation>ADF ᠬᠣᠶᠠᠷ ᠲᠠᠯᠠᠲᠤ </translation> + </message> +@@ -249,12 +248,12 @@ + <translation type="vanished">ᠰᠢᠷᠪᠢᠭᠦᠷᠢ᠋ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠨᠢ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠲᠠᠰᠢᠶᠠᠷᠠᠯᠤ᠋ᠨ ᠺᠣᠳ᠋ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> + <translation>ᠠᠦ᠋ᠲ᠋ᠣ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> + <translation>ᠬᠠᠪᠲᠠᠭᠠᠢ ᠬᠠᠪᠲᠠᠰᠤ </translation> + </message> +@@ -269,155 +268,154 @@ + <translation>ᠰᠢᠷᠪᠢᠭᠦᠷ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠰᠢᠯᠭᠠᠨ ᠬᠡᠮᠵᠢᠬᠦ ᠳᠤᠮᠳᠠ . . . </translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> +- <translation type="unfinished">ᠬᠠᠭᠤᠳᠠᠰᠤ ᠃</translation> ++ <translation>ᠬᠠᠭᠤᠳᠠᠰᠤ ᠃</translation> + </message> + </context> + <context> + <name>QObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> + <translation>ᠥᠩᠭᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> + <translation>ᠪᠣᠷᠣ ᠥᠩᠭᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> + <translation>ᠵᠢᠷᠤᠭᠠᠰᠤᠨ ᠤᠷᠠᠯᠢᠭ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> + <translation>ᠳᠤᠪ ᠳᠤᠭᠤᠢ ᠲᠠᠨᠢᠬᠤ ᠲᠦᠷᠦᠯ ᠬᠡᠯᠪᠡᠷᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> + <translation>ᠬᠠᠪᠲᠠᠭᠠᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> + <translation>ADF ᠡᠮᠦᠨᠡ ᠲᠠᠯᠠ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> + <translation>ADF ᠠᠷᠤ ᠨᠢᠭᠤᠷ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> + <translation>ADF ᠬᠣᠶᠠᠷ ᠲᠠᠯᠠᠲᠤ </translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> + <translation>ᠮᠠᠰᠢᠨ ᠲᠡᠷᠭᠡ᠃</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation>ᠣᠳᠣᠬᠠᠨ ᠳᠤ ᠃ </translation> ++ <translation type="vanished">ᠣᠳᠣᠬᠠᠨ ᠳᠤ ᠃ </translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation>ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠃</translation> ++ <translation type="vanished">ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation> ᠾᠧ ᠯᠢᠨ ᠢ ᠰᠢᠷᠦᠭᠦᠨ ᠬᠠᠭᠠᠬᠤ ᠪᠠᠷ ᠪᠠᠶᠢᠨᠠ ᠃ </translation> ++ <translation type="vanished"> ᠾᠧ ᠯᠢᠨ ᠢ ᠰᠢᠷᠦᠭᠦᠨ ᠬᠠᠭᠠᠬᠤ ᠪᠠᠷ ᠪᠠᠶᠢᠨᠠ ᠃ </translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation>ᠠᠵᠢᠯᠯᠠᠭᠠ ᠃ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠬᠦ ᠦᠦ ? ︖ </translation> ++ <translation type="vanished">ᠠᠵᠢᠯᠯᠠᠭᠠ ᠃ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠬᠦ ᠦᠦ ? ︖ </translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation>ᠠᠰᠠᠭᠤᠳᠠᠯ ᠃</translation> ++ <translation type="vanished">ᠠᠰᠠᠭᠤᠳᠠᠯ ᠃</translation> ++ </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>ᠤᠭᠰᠠᠷᠠᠬᠤ ᠴᠠᠭ ᠠᠴᠠ ᠬᠡᠲᠦᠷᠡᠪᠡ ᠃</translation> + </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> +@@ -430,77 +428,77 @@ + <translation>ᠰᠢᠨᠡ ᠵᠢᠭᠰᠠᠭᠠᠯᠲᠠ ᠶᠢᠨ ᠬᠦᠰᠦᠨᠦᠭᠲᠦ ᠶᠢ ᠰᠢᠨᠡᠳᠬᠡᠨ ᠪᠡᠶᠡᠯᠡᠭᠦᠯᠦᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> + <translation>ᠬᠠᠪᠲᠠᠭᠠᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> + <translation>ADF ᠡᠮᠦᠨᠡ ᠹᠷᠣᠨᠲ᠋ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> + <translation>ADF ᠪᠤᠴᠠᠵᠤ ᠢᠷᠡᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> + <translation>ᠳᠤᠪ ᠳᠤᠭᠤᠢ ᠲᠠᠨᠢᠬᠤ ᠲᠦᠷᠦᠯ ᠬᠡᠯᠪᠡᠷᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> + <translation>ADF ᠬᠣᠣᠰ ᠠᠵᠢᠯᠴᠢᠨ ᠃</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> +@@ -508,24 +506,23 @@ + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> + <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> + <translation>ᠨᠢᠭᠤᠷ ᠤᠨ ᠲᠣᠭᠠ ᠶᠢ ᠰᠢᠷᠭᠦᠨᠡ ᠄ </translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> +@@ -543,64 +540,64 @@ + <context> + <name>ScanSettingsWidget</name> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> + <translation>ᠨᠢᠭᠡ ᠭᠠᠷᠴᠠᠭ ᠢ ᠰᠣᠩᠭᠣᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> + <translation>ᠣᠳᠣᠬᠠᠨ ᠳᠤ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠭᠠᠷᠴᠠᠭ ᠲᠤ ᠵᠠᠰᠠᠪᠤᠷᠢ ᠣᠷᠣᠭᠤᠯᠬᠤ ᠡᠷᠬᠡ ᠦᠭᠡᠶ᠃ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> + <translation>ᠬᠠᠪᠲᠠᠭᠠᠶ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠵᠠᠭᠪᠤᠷ ᠨᠢ ᠣᠯᠠᠨ ᠤᠳᠠᠭᠠ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢ ᠳᠡᠮᠵᠢᠬᠦ ᠦᠭᠡᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> + <translation>ᠬᠠᠭᠤᠳᠠᠰᠤ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> + <translation>ᠳᠠᠬᠢᠨ ᠲᠣᠭᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> + <translation>ᠬᠠᠪᠲᠠᠭᠠᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> + <translation>ᠥᠩᠭᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> + <translation>ᠵᠢᠷᠤᠭᠠᠰᠤᠨ ᠤᠷᠠᠯᠢᠭ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> +@@ -609,187 +606,185 @@ + <translation type="vanished">ᠡᠨᠡ ᠢᠯᠭᠠᠴᠠ ᠨᠢ ᠲᠤᠩ ᠤᠷᠲᠤ ᠴᠠᠭ ᠬᠡᠷᠡᠭᠰᠡᠪᠡᠯ ᠰᠠᠶ ᠢ ᠰᠢᠷᠪᠢᠵᠦ ᠳᠡᠶᠢᠯᠦᠨᠡ ᠂ ᠪᠣᠯᠭᠣᠮᠵᠢᠲᠠᠢ ᠰᠣᠩᠭᠣᠭᠠᠷᠠᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠡᠨᠡ ᠬᠦ ᠢᠯᠭᠠᠮᠵᠢ ᠶᠢ ᠮᠠᠰᠢ ᠤᠷᠲᠤ ᠬᠤᠭᠤᠴᠠᠭᠠ ᠪᠠᠷ ᠰᠢᠷᠪᠢᠬᠦ ᠬᠡᠷᠡᠭᠲᠡᠶ ᠂ ᠪᠣᠯᠭᠣᠮᠵᠢᠲᠠᠶ ᠰᠣᠩᠭᠣᠭᠠᠷᠠᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation type="unfinished">ᠰᠠᠨᠠᠭᠤᠯᠤᠮᠵᠢ </translation> ++ <translation type="obsolete">ᠰᠠᠨᠠᠭᠤᠯᠤᠮᠵᠢ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> + <translation>《 / 》 ᠭᠡᠰᠡᠨ ᠦᠰᠦᠭ ᠦᠨ ᠲᠡᠮᠲᠡᠭ ᠢ ᠪᠠᠭᠲᠠᠭᠠᠵᠤ ᠪᠣᠯᠬᠤ ᠦᠭᠡᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> + <translation>ᠠᠰᠲᠠᠭᠠᠨ ᠨᠢᠭᠤᠭᠳᠠᠭᠰᠠᠨ ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠢᠶᠠᠷ ᠬᠠᠳᠠᠭᠠᠯᠠᠵᠤ ᠳᠡᠶᠢᠯᠬᠦ ᠦᠭᠡᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> + <translation>ᠠᠰᠲᠠᠭᠠᠨ ᠬᠠᠳᠠᠭᠠᠯᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> + <translation>ᠰᠤᠷᠪᠤᠯᠵᠢᠯᠠᠬᠤ ᠡᠷᠬᠡ ᠮᠡᠳᠡᠯ ᠦᠭᠡᠢ ᠠᠷᠭᠠ ᠵᠠᠮ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> + <translation>ᠣᠷᠣᠰᠢᠬᠤ ᠦᠭᠡᠢ ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠤᠨ ᠠᠷᠭᠠ ᠵᠠᠮ ᠄ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> + <translation>ᠲᠤᠰ ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠃ </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> + <translation> ᠨᠢᠭᠡᠨᠲᠡ ᠣᠷᠣᠰᠢᠵᠤ ᠪᠠᠢ᠌ᠨᠠ ᠂ ᠲᠡᠭᠦᠨ ᠢ ᠪᠥᠷᠬᠥᠭᠦᠯᠬᠦ ᠦᠦ ? ᠬᠡᠷᠪᠡ ᠣᠯᠠᠨ ᠨᠢᠭᠤᠷ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢ ᠬᠡᠷᠡᠭᠵᠢᠭᠦᠯᠪᠡᠯ ᠂ ᠣᠯᠠᠨ ᠪᠢᠴᠢᠭ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠢ ᠬᠠᠮᠤᠷᠬᠤ ᠪᠣᠯᠣᠮᠵᠢ ᠲᠠᠶ ᠃ ᠪᠣᠯᠭᠤᠮᠵᠢᠲᠠᠢ ᠪᠠᠶᠢᠭᠠᠷᠡᠢ!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> + <translation>ᠮᠡᠷᠭᠡᠵᠢᠯ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> + <translation>ᠲᠣᠨᠣᠭ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> + <translation>ᠨᠢᠭᠤᠷ ᠤᠨ ᠭᠠᠳᠠᠷᠭᠤ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> + <translation>ᠲᠦᠷᠦᠯ ᠬᠡᠯᠪᠡᠷᠢ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> + <translation>ᠥᠩᠭᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> + <translation>ᠢᠯᠭᠠᠴᠠ ᠶᠢᠨ ᠨᠣᠷᠮᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> + <translation>ᠶᠡᠬᠡ ᠪᠠᠭᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> + <translation>ᠬᠡᠯᠪᠡᠷᠢ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> + <translation>ᠨᠡᠷᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> +- <translation>ᠠᠪᠤᠷᠠᠨᠠ</translation> ++ <translation>ᠠᠪᠤᠷᠠᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> +- <translation>ᠰᠢᠤᠳᠠᠨ ᠢᠶᠠᠷ ᠶᠠᠪᠤᠭᠤᠯ</translation> ++ <translation>ᠰᠢᠤᠳᠠᠨ ᠢᠶᠠᠷ ᠶᠠᠪᠤᠭᠤᠯ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> +- <translation>ᠡᠬᠢᠯᠡᠨ ᠰᠢᠷᠪᠡᠭᠳᠡᠨᠡ</translation> ++ <translation>ᠡᠬᠢᠯᠡᠨ ᠰᠢᠷᠪᠡᠭᠳᠡᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> +- <translation>ᠬᠡᠮᠵᠢᠭᠦᠷᠯᠢᠭ᠍ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢ ᠰᠢᠷᠪᠡᠭ᠍ᠳᠡᠭᠦᠯᠦᠨᠡ</translation> ++ <translation>ᠬᠡᠮᠵᠢᠭᠦᠷᠯᠢᠭ᠍ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢ ᠰᠢᠷᠪᠡᠭ᠍ᠳᠡᠭᠦᠯᠦᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> +- <translation>ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠤᠨ ᠪᠠᠢ᠌ᠷᠢᠯᠠᠭᠤᠯᠤᠯᠲᠠ</translation> ++ <translation>ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠤᠨ ᠪᠠᠢ᠌ᠷᠢᠯᠠᠭᠤᠯᠤᠯᠲᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> + <translation>01 ᠶᠢ ᠰᠢᠷᠪᠡᠭᠡᠬᠦ</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> + <translation>ᠠᠰᠲᠠᠭᠠᠨ ᠬᠠᠳᠠᠭᠠᠯᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> + <translation>ᠪᠣᠷᠣ ᠥᠩᠭᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> + <translation>ᠢᠯᠭᠠᠴᠠᠯ ᠨᠢ ᠬᠣᠭᠣᠰᠣᠨ !</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> + <translation>A4</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> + <translation>A5</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> + <translation>ᠬᠠᠳᠠᠭᠠᠯᠠᠬᠤ ᠪᠢᠴᠢᠭ᠌</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> ++ <translation type="vanished">ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> + <translation>ᠲᠡᠢ᠌ᠮᠦ ᠡ ᠃</translation> + </message> +@@ -797,30 +792,30 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> + <translation>ᠡᠯᠧᠺᠲ᠋ᠷᠣᠨ ᠰᠢᠦᠳᠠᠨ ᠤ ᠵᠦᠢᠯ ᠦᠨ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢᠳ ᠢ ᠰᠣᠩᠭᠣᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> + <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> + <translation>ᠨᠤᠲᠠᠯᠠᠨ ᠲᠣᠭᠲᠠᠭᠠᠬᠤ ᠃</translation> + </message> +@@ -828,27 +823,27 @@ + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> + <translation>ᠪᠠᠰᠠ ᠪᠣᠯᠣᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃ ᠵᠢᠭᠠᠬᠠᠨ ᠬᠦᠯᠢᠶᠡᠵᠦ ᠁</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> + <translation>ᠭᠦᠶᠦᠯᠲᠡ ᠶᠢᠨ ᠭᠤᠶᠤ ᠬᠡᠦᠬᠡᠨ ᠤ ᠁</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> + <translation>ᠠᠵᠢᠯᠯᠠᠭᠠᠨ ᠢ ᠪᠦᠬᠦᠯᠢ ᠪᠠᠷ ᠨᠢ ᠤᠷᠤᠰᠬᠠᠬᠤ ᠁</translation> + </message> +@@ -858,24 +853,24 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="29"/> + <source>Form</source> +- <translation>ᠬᠡᠯᠪᠡᠷᠢ</translation> ++ <translation>ᠬᠡᠯᠪᠡᠷᠢ ᠃</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation>ᠰᠢᠷᠦᠭᠦᠷ</translation> ++ <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> +- <translation>ᠰᠢᠷᠦᠭᠦᠷ</translation> ++ <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="176"/> + <source>Option</source> +- <translation>ᠰᠣᠩᠭᠣᠨᠠ</translation> ++ <translation>ᠰᠣᠩᠭᠣᠨᠠ ᠃</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="179"/> +@@ -956,56 +951,56 @@ + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> + <translation>ᠭᠣᠶᠣ ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> + <translation>ᠵᠠᠯᠠᠷᠠᠭᠤᠯᠬᠤ ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> + <translation>OCR</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> + <translation>ᠲᠠᠷᠢᠮᠠᠯ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> + <translation>ᠡᠷᠭᠢᠯᠳᠦᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> + <translation>ᠲᠣᠯᠢ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> + <translation>ᠤᠰᠤᠨ ᠳᠠᠷᠤᠮᠠᠯ ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> + <translation>ᠪᠠᠭᠠᠰᠬᠠᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> + <translation>ᠶᠡᠬᠡᠰᠬᠡ ᠃</translation> + </message> +@@ -1041,12 +1036,17 @@ + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>ᠰᠢᠷᠪᠢᠭᠦᠷ; ᠰᠢᠷᠪᠢᠭᠦᠷ</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> + <translation>ᠶᠠᠭ ᠡᠷᠢᠵᠦ ᠪᠠᠢᠢᠭᠠᠳ ᠱᠦᠭᠦᠷᠳᠡᠬᠦ ᠱᠦᠭᠦᠷᠳᠡᠬᠦ ᠁</translation> + </message> +@@ -1054,27 +1054,27 @@ + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> + <translation>ᠰᠢᠷᠦᠭᠦᠷ ᠃</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> + <translation>ᠬᠠᠭᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> + <translation>ᠤᠰᠤ ᠨᠡᠮᠡᠬᠦ ᠳᠠᠷᠤᠮᠠᠯ ᠢ ᠨᠡᠮᠡᠬᠦ</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> + <translation>ᠨᠤᠲᠠᠯᠠᠨ ᠲᠣᠭᠲᠠᠭᠠᠬᠤ ᠃</translation> + </message> +@@ -1082,17 +1082,17 @@ + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> + <translation>ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠢ ᠨᠡᠭᠡᠭᠡᠨᠡ ᠃ </translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> + <translation>ᠪᠢᠴᠢᠭ᠌ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠤᠨ ᠨᠡᠷᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> + <translation>ᠨᠢᠭᠤᠭᠳᠠᠵᠤ ᠵᠢᠵᠢᠭ ᠤᠭᠰᠠᠷᠠᠭᠠ ᠲᠣᠨᠣᠭ ᠲᠣᠬᠢᠷᠠᠭᠤᠯᠤᠨᠠ ᠃</translation> + </message> +@@ -1112,19 +1112,19 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation type="unfinished">ᠲᠦᠷᠦᠯ ᠬᠡᠯᠪᠡᠷᠢ᠃</translation> ++ <translation>ᠲᠦᠷᠦᠯ ᠬᠡᠯᠪᠡᠷᠢ᠃</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> +- <translation type="unfinished">ᠰᠠᠨᠠᠭᠤᠯᠤᠮᠵᠢ </translation> ++ <translation>ᠰᠠᠨᠠᠭᠤᠯᠤᠮᠵᠢ </translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠲᠠ ᠬᠦᠰᠦᠨᠦᠭᠲᠦ ᠳᠦ ᠪᠠᠭᠲᠠᠭᠠᠭᠰᠠᠨ ᠳᠠᠷᠤᠮᠠᠯᠯᠠᠬᠤ ᠮᠠᠰᠢᠨ ᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠨᠢ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠪᠠ ᠳᠠᠷᠤᠮᠠᠯᠯᠠᠬᠤ ᠮᠠᠰᠢᠨ ᠮᠥᠨ ᠡᠰᠡᠬᠦ ᠶᠢ ᠭᠠᠷ ᠢᠶᠠᠷ ᠨᠤᠲᠠᠯᠠᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ ᠃ ᠬᠡᠷᠪᠡ ᠲᠡᠳᠡᠭᠡᠷ ᠨᠢ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠪᠠ ᠬᠡᠪᠯᠡᠯ ᠦᠨ ᠪᠦᠬᠦ ᠮᠠᠰᠢᠨ ᠪᠢᠰᠢ ᠪᠣᠯ ᠂ ᠲᠡᠳᠡᠭᠡᠷ ᠢ ᠣᠮᠲᠣᠭᠠᠶᠢᠯᠠᠨᠠ ᠃</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> +@@ -1139,8 +1139,8 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> + <translation>ᠬᠦᠴᠦᠨ ᠦᠭᠡᠶ ᠪᠣᠯᠭᠠᠨᠠ᠃</translation> + </message> +@@ -1160,79 +1160,79 @@ + <translation>ᠤᠭᠰᠠᠷᠠᠬᠤ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ᠰᠢᠷᠪᠢᠭᠦᠷ; ᠰᠢᠷᠪᠢᠭᠦᠷ</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> +- <translation type="unfinished"></translation> ++ <translation>ᠳᠠᠷᠤᠮᠠᠯᠯᠠᠬᠤ ᠮᠠᠰᠢᠨ</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> + <translation>ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠨᠡᠷᠡᠶᠢᠳᠦᠯ ᠄</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> + <translation>ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠳᠡᠰ ᠳᠠᠷᠠᠭᠠᠯᠠᠯ ᠤᠨ ᠨᠡᠷᠡᠶᠢᠳᠦᠯ</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠡᠨᠡ ᠬᠥᠳᠡᠯᠭᠡᠬᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠨᠢ ᠭᠤᠷᠪᠠᠳᠠᠬᠢ ᠡᠲᠡᠭᠡᠳ ᠡᠴᠡ ᠢᠷᠡᠭᠰᠡᠨ ᠶᠤᠮ ᠂ ᠵᠠᠷᠢᠮ ᠬᠡᠮᠵᠢᠵᠦ ᠪᠣᠯᠤᠰᠢ ᠦᠭᠡᠢ ᠦᠷᠡ ᠳ᠋ᠦᠩ ᠢ ᠡᠭᠦᠰᠭᠡᠵᠦ ᠮᠡᠳᠡᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠡᠨᠡ ᠬᠥᠳᠡᠯᠭᠡᠬᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠢ ᠦᠢᠯᠡᠳᠪᠦᠷᠢᠯᠡᠭᠴᠢ ᠡᠴᠡ ᠬᠠᠩᠭᠠᠭᠰᠠᠨ ᠶᠤᠮ ᠃ ᠲᠣᠰ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠵᠣᠬᠢᠴᠠᠩᠭᠤᠶ ᠦᠶᠯᠡᠳᠪᠦᠷᠢ ᠲᠡᠶ ᠬᠠᠷᠢᠯᠴᠠᠵᠤ ᠬᠥᠳᠡᠯᠭᠡᠬᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠢ ᠣᠯᠤᠭᠠᠷᠠᠶ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> + <translation>ᠬᠡᠷᠡᠭᠯᠡᠵᠦ ᠪᠣᠯᠬᠤ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠦᠨ ᠫᠷᠦᠭ᠍ᠷᠠᠮ ᠪᠠᠶᠢᠬᠤ ᠦᠭᠡᠢ ᠂ ᠭᠠᠷ ᠢᠶᠠᠷ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠫᠷᠦᠭ᠍ᠷᠠᠮ ᠨᠡᠮᠡᠬᠦ ᠦᠦ ?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> + <translation>ᠨᠡᠮᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> + <translation>ᠶᠠᠭ ᠬᠦᠳᠡᠯᠭᠡᠭᠦᠷᠲᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠤᠭᠰᠠᠷᠠᠵᠤ ᠁</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation type="unfinished"></translation> ++ <translation>ᠤᠭᠰᠠᠷᠠᠬᠤ ᠨᠢ ᠠᠮᠵᠢᠯᠲᠠ ᠲᠠᠶ ᠃ ᠴᠢ ᠣᠳᠣ ᠡᠨᠡ ᠰᠢᠷᠪᠢᠭᠦᠷ ᠢ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠦᠸ? 《 Use 》 ᠶᠢ ᠲᠣᠪᠴᠢᠳᠠᠵᠤ udev (ᠬᠠᠮᠢᠶᠠᠷᠤᠭᠴᠢ ᠶᠢᠨ ᠨᠢᠭᠤᠴᠠ ᠨᠣᠮᠧᠷ ᠢ ᠬᠡᠷᠡᠭᠰᠡᠨᠡ) ᠢ ᠳᠠᠬᠢᠨ ᠲᠣᠬᠢᠷᠠᠭᠤᠯᠬᠤ ᠶᠢᠨ ᠬᠠᠮᠲᠤ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠬᠡᠷᠡᠭᠯᠡᠭᠡᠨ ᠦ ᠫᠷᠤᠭ᠍ᠷᠠᠮ ᠢ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠭᠦᠯᠵᠦ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠬᠦᠰᠦᠨᠦᠭ ᠢ ᠰᠢᠨᠡᠳᠬᠡᠨᠡ ᠃ ᠬᠡᠷᠪᠡ ᠲᠠ ᠮᠥᠨ ᠯᠡ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠵᠢᠷᠤᠭ ᠳᠦᠷᠰᠦ ᠶᠢ ᠦᠷᠭᠦᠯᠵᠢᠯᠡᠨ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠬᠤ ᠭᠡᠪᠡᠯ ᠂ ᠭᠠᠷ ᠢᠶᠠᠷ ᠳᠠᠬᠢᠨ ᠡᠬᠢᠯᠡᠭᠦᠯᠬᠦ ᠶᠢᠨ ᠬᠠᠮᠲᠤ ᠰᠢᠷᠪᠢᠯᠲᠡ ᠶᠢᠨ ᠴᠢᠳᠠᠮᠵᠢ ᠶᠢ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ ᠴᠢᠬᠤᠯᠠᠲᠠᠶ ᠃</translation> + </message> + <message> + <source>Installation successful. Do you want to use this scanner now?</source> + <translation type="vanished">ᠤᠭᠰᠠᠷᠠᠵᠤ ᠠᠮᠵᠢᠯᠲᠠ ᠣᠯᠵᠠᠢ ᠃ ᠡᠨᠡ ᠰᠢᠷᠦᠭᠦᠷ ᠢ ᠳᠠᠷᠤᠢ᠌ᠬᠠᠨ ᠬᠡᠷᠡᠭ᠍ᠯᠡᠬᠦ ᠦᠦ ?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> +- <translation>ᠬᠡᠷᠡᠭ᠍ᠯᠡᠨᠡ</translation> ++ <translation>ᠬᠡᠷᠡᠭ᠍ᠯᠡᠨᠡ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> + <translation>ᠢᠯᠠᠭᠳᠠᠯ ᠤᠭᠰᠠᠷᠠᠬᠤ</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> +- <translation>ᠡᠬᠢᠯᠡᠪᠡ</translation> ++ <translation>ᠪᠠᠰᠠ ᠪᠣᠯᠣᠨᠠ ᠃</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> +- <translation>ᠨᠢᠭᠡ ᠭᠠᠷᠴᠠᠭ ᠢ ᠰᠣᠩᠭᠣᠨᠠ</translation> ++ <translation>ᠨᠢᠭᠡ ᠭᠠᠷᠴᠠᠭ ᠢ ᠰᠣᠩᠭᠣᠨᠠ ᠃</translation> + </message> + </context> + <context> +@@ -1243,7 +1243,7 @@ + <location filename="../src/showocrwidget.cpp" line="165"/> + <source>The document is in character recognition ...</source> + <translatorcomment>ᠪᠢᠴᠢᠭ ᠮᠠᠲ᠋ᠧᠷᠢᠶᠠᠯ ᠪᠣᠯ ᠦᠰᠦᠭ ᠪᠢᠴᠢᠭ᠌ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠁</translatorcomment> +- <translation></translation> ++ <translation>Баримт бичиг нь тэмдэгт таних үе шатанд байна. . .</translation> + </message> + </context> + </TS> +diff --git a/translations/kylin-scanner_ug.qm b/translations/kylin-scanner_ug.qm +index 9cb36b9..2bddb63 100644 +--- a/translations/kylin-scanner_ug.qm ++++ b/translations/kylin-scanner_ug.qm +@@ -1,39 +1,38 @@ +-<�d��!�`���B�����D��)"��E��)O��[�����[��8���[��S���1��:/��E������E���!���E���)|��G���J���S���AP��\���X��_���4��h��� ���������������`��@�����:��֍��:����������-���0��;�H5��.��H5��Rl�L���R������0Z����2N��e��4y��e��W���s��6L�%������,D���Is�G����:O�H,���6�H,���)��H,���J��I�~��5�I����?[�J6�����J6�����J6���$��J6���6��J6���:��J6���G��J6���H��J6���K��Jcb����Jcb��)��PFE��=��V}���/�Z�|����Z�|��L��]������aҤ���f�~���������M���\n���������*W �J��L{f&���Box$^�� %z�.��M ��3��+��u0��%0���,���������-�J����[d�.�������.9�ki����ki��!��ki��(�����/�����L-2kY��%2kY���2kY��'�ky���+^�kY����kY�� g�kY��(/�����@��օ��K�I���t�I���n�I�����I���#��I���6��I���7��I���Hx�I���KW�6���*$�ϕ��+#��W����JH��k�JH��C�JH��";֓���-q"����2h)��V2h)�� 02h)��'�2kY���2kY�� �@�b��Ag�^��>(uJ>��0��^��VS�����A��n��4��N%��\�N%��1��^��E��9\��T�F���J6a���B72kY�� 2kY��!9$���/�@Kb���[�����d����������������D���^�������3}��.��U22h9���2h9�� �2h9��(kL����l����3?p�>��F��Z���T �6����Έ���GΈ���"��`���lM����}M����"xT����6 +-r���2������ �����!������A{ʨ����ʶ���>��F5��;>�m���� #?���7� 2kY��� 2kY��!q ?�T��K� JV���X< `3���2� �t���0� �v���0� �T��� �T���� �T���%r �T���1 �T���7H �T���>� �T���I: �T���T] ����@ +-d����7 +-d����H� +-eK����� +-t�.��G� +-�U���@L +-����/9 +-�e��A� +-� ���;}O~��5r/����Q�2h��Q2h��!:2h��(�E�9��1�E�9��T�ʫ���Q����I�ƞ�� +-f���#K1d��>[;e���;e��$�;e��.�vx���9�x����������N��� ���� (���%� (����> (����� (����"� (����,4 c�^��E oEK��H' ��/��R� �7T��? ����' ����8�'����g����$�.��82)�E��1Ge��sf۾���f۾��9c��n��B�i��[����h3IC'FF�1D'4� &'~~'1'*IFI� *�C4�1�~� C�1��� 3'BD'~� *�1���������Detect scanners, please waiting���DetectPageWidget���&�DIFI4�������Connect���FailedPageWidget���\&I4D�*CIDI� (HDI/I:'F� 3IC'FF�1D'4� &�3C�FI3I� JHB�������No available scan devices���FailedPageWidget����'BI*� &�2��1*I4�������Dialog���KYCAboutDialog����3IC'FF�1D'4FI� &�D'�� 3IC'FF�1D'4FI� ('4D'4� &���F� 3IC'FF�1D'4� C�F�~CI3IFI� ��CI��.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����3C'FF�1� ('JB'DEI/I� J��I� 3C'FF�1� CI1��2�~� &�3C�FIFI�� *I2IEDICIFI� J��ID'��.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���*J��I� 3C'FF�1� &�D'F/I�.�������!A new Scanner has been connected.��� ++<�d��!�`���B�����D��'x��E��'���[��`��[��6K��[��P���1��7���E������E��� V��E���'���G���G���S���>���\���T���_���2B�h��� ++o����������t��`��>,����8!�֍��8Z����N����+���0��8��H5��,��H5��OR�L���O������.F����/���e��2��e��T���s��3��,D���F��G����7��H,�����H,���H�I�~����I����<��J6���+�J6���K�J6���#�J6���4j�J6���7��J6���D��J6���F�J6���H��Jcb����Jcb��(�PFE��;a�V}���,��Z�|��[�Z�|��I��]����c�aҤ����f�~��f������J���\n�� �������(m �J��I�f&���?�x$^�� �z�.��J0��3��)��u0��#g0���*����������+�J����W�d�.��N����,�ki��v�ki�� %�ki��'?����-�����IW2kY���2kY��|2kY��& ++ky���)t�kY��J�kY����kY��&������=��օ��HU�I����I�����I����I���"�I���4�I���5~�I���E��I���H��6���(:�ϕ��)9��W���JH����JH���JH�� �������֓���+g"���82h)��2h)���2h)��&F2kY��{2kY��@�b��>fg�^��;�uJ>�����^��S�����?�n��2x�N%����N%��/��^��C#�9\��Q�F���G�a���?�2kY���2kY���9$���-�@Kb��Wd�����������j����B��^�����n��z����1��.��Q�2h9���2h9��O2h9��&�L���l����0�p�>��D!�Z���P��6���aΈ����Έ���!2�`���M����=M���� �T����3�r���0������������ ~�����>�ʨ����ʶ���<�F5��8��m��� 8 #?���5 2kY��E 2kY��� ?�T��I JV���T� `3���0/ �t���.} �v���.� �T��� �T���#� �T���4� �T���<\ �T���D� �T���F� �T���Q- ����=v ++d����4� ++d����F? ++eK����� ++t�.��E ++�U���=� ++����- ++�e��?N ++� ���8�O~��3/����N�2h��2h���2h��'�E�9��/NE�9��Qh����F�ƞ�����!�1d��;�;e���;e��#:;e��,avx���7Tx������N��= (���$ (����� (���� (����!y (����*J c�^��Bo oEK��Eo ��/��O� �7T��<� ����� ����6{'����g����"c�.��5�)�E��.�e���f۾�� >f۾��6���n��?�i��Xt���n3�C'FF�1D'4� &'~~'1'*IFI� *�C4�1�~� C�1��� C�*�~� *�1��� �.�.�.�������Detect scanners, please waiting���DetectPageWidget��� ++&�D'4�������Connect���FailedPageWidget���Z&I4DI*I4C�� (HDI/I:'F� 3C'FF�1D'4� &�3C�FI3I� JHB�������No available scan devices���FailedPageWidget���TE�F� *�CI3*FI� &HB�J'DE'J/IE�F� B'J*'� 3IF'��.�������"Unable to read text, please retrey���ImageOperationOCR���/I&'DH�� 1'ECI3I�������Dialog���KYCAboutDialog����3IC'FF�1D'4FI� &�D'�� 3IC'FF�1D'4FI� ('4D'4� &���F� 3IC'FF�1D'4� C�F�~CI3IFI� ��CI��.�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget����3C'FF�1FI� *�C4�1EI��F� J��I� 3C'FF�1FI� ��*I~� &�3C�F�� *I2IEDICIFI� J��ID'J/��.�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���2J��I� (I1� 3C'FF�1� &�D'F/I�.�������!A new Scanner has been connected.��� + MainWidget���&'�'�D'F/�1�4�������Alert��� + MainWidget���"&�E�D/IF� B'D/�1�4�������Cancel��� + MainWidget����&�3C�F�� &'D/I1'4� 3'BD'~� *�1��� J'CI� ('4B'� 3C'FF�1D'1FI� &'DE'4*�1���.�������2Device busy, please wait or switch other scanners.��� + MainWidget������,,�*� (ID�F� *�EIFDI���IFI� ��,,�**IF� �IBI1I��*3I�I2� ��,,�*D�1FI� BHJ�~� B'J*'� 3IC'FF�1D'��.�������EDocument feeder out of documents, please place papers and scan again.��� + MainWidget����&IF'��*3I2� E�D'�I2ID�1� /�DID�-&I3~'*D'1FI� &�2��1*I�� J'CI� ('4B'� 3C'FF�1D'1FI� &'DE'4*�1���.�������CInvalid argument, please change arguments or switch other scanners.��� +-MainWidget��� +-E'B�D�������Ok��� ++MainWidget���E'B�D(HDI/��������Ok��� + MainWidget���B'J*'� BH2:I*I4�������Restart��� +-MainWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...��� +-MainWidget���D��2�DD�4*�1�4FI� *�1*I~C�� 3�DI4� �.�.�.�������Running rectify ...��� +-MainWidget���z3IC'FF�1D'4� E�:D�~� (HD/I� ('JDIBFI� 2IJ'1�*� BIDI4� 1�*� BIDIF/I�.�������0Scan failed, Access to resource has been denied.��� +-MainWidget���^3C'FF�1DI4I� E�:D�~� (HD/I� ��,,�*� � *H.*'~� B'D/I�.�������$Scan failed, Document fedder jammed.��� ++MainWidget���4J��1�J/I:'F� 3'�I(,'E'D� �.�.�.�������Running beauty ...��� ++MainWidget���8J���1�4FI� *�1*I~C�� 3�DI4� �.�.�.�������Running rectify ...��� ++MainWidget���x3C'FF�1D'4� E�:D�~� (HD/I� ('JDIBFI� 2IJ'1�*� BIDI4� 1�*� BIDIF/I�.�������0Scan failed, Access to resource has been denied.��� ++MainWidget���j3C'FF�1DI4I� E�:D�~� (HD/I� ��,,�*� �F�e�d�d�e�r� *H.*'~� B'D/I�.�������$Scan failed, Document fedder jammed.��� + MainWidget����3C'FF�1DI:'F/'� E�:D�~� (HD/I� B�1�DE'� �I�/�O� ,�1J'FI/'� .'*'DIB� C�1�D/I�.�������%Scan failed, Error during device I/O.��� + MainWidget���b3C'FF�1DI:'F/'� E�:D�~� (HD/I� &�3*�� 3'BDI:�3I� JHB�.�������Scan failed, Out of memory.��� +-MainWidget���v3IC'FF�1D'4� E�:D�~� (HD/I� 3C'FF�1FI�� B'~BIBI� &��IDI~� (HD/I�.�������#Scan failed, Scanner cover is open.��� +-MainWidget���Z3IC'FF�1D'4� E�:D�~� (HD/I� E�4:�D'*� BHDDIEI/I�.�������(Scan failed, operation is not supported.��� +-MainWidget���3IC'FI1D'4� E�:D�~� (HD/I� � 3C'FF�1FI� *�C4�1�~� (�BI�� J'CI� ('4B'� 3C'FF�1:'� &'DE'4*�1���.� &���1� 3C'FF�1FI� /'�'EDIB� &I4D�*E�C�I� (HD3'B� *'DD'4� *�1IFI� ��CI�� *I2IEDICFI� J��ID'~� &�3C�FIFI� B'J*'� BH2:I*I��.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� ++MainWidget���t3C'FF�1D'4� E�:D�~� (HD/I� 3C'FF�1FI�� B'~BIBI� &��IDI~� (HD/I�.�������#Scan failed, Scanner cover is open.��� ++MainWidget���X3C'FF�1D'4� E�:D�~� (HD/I� E�4:�D'*� BHDDIEI/I�.�������(Scan failed, operation is not supported.��� ++MainWidget���3C'FF�1D'4� E�:D�~� (HD/I� 3C'FF�1FI� *�C4�1�~� (�BI�� J'CI� ('4B'� 3C'FF�1FI� &'DE'4*�1���.� &���1� 3C'FF�1FI� /'�'EDIB� &I4DI*I4FI� &HJDI3I�I2� ��*'DD'4��� FI� ��CI~� *I2IEDICFI� J��ID'~� &�3C�FIFI� B'J*'� BH2:I*I��.��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� + MainWidget���T3IC'FF�1D'4� E�4:�D'*I� &�E�D/IF� B'D/�1�D/I�.�������"Scan operation has been cancelled.��� +-MainWidget���3C'FF�1�������Scanner��� + MainWidget���3I3*�E'� &�.D'4� &�.D'4� *�C4�1�D/I�.� 3C'FF�1FI�� FH1E'D� &I4DI*IDI4I��� C'~'D�*DIC� BIDI4� &���F� B'J*'� BH2:I*I4FI� ��CI~� 3C'FF�1FI�� BHDDIFI4IFI� B'J*'� BH2:I*I�D'1�.� &���1� 3IC'FF�1D'~� &I4DI*IDI/I:'F� 3�1�*FI� /'�'EDIB� E�4:�D'*� BIDE'B�I� (HD3I�I2� (I1'B� 3IC'FF�1D'~� &I4DI*I4C�� &'D'BI/'1� &IB*I/'1D'1� *H.*IDI~� B'J*'� BH2:I:'F/IF� C�JIF� C��C�� &I��� (HDI/��.������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� +-MainWidget���&3C'FF�1� ('JB'DEI/I�.�������Scanner not detected���NoDeviceWidget���"&�E�D/IF� B'D/�1�4�������Cancel���NoMailDialog��� +-&�*I4�������Close���NoMailDialog���B'�ID'4�������Install���NoMailDialog���&&�D.�*� .�1I/'1I� JHB�������No email client���NoMailDialog����3I3*�EI/'� &�D.�*� .�1I/'1IFI� *'~'DE'J� &'��'D� &�D.�*� .�1I/'1IFI� B'�ID'��.�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QApplication���&'~*HE'*IC�������Auto���QApplication���"3C'FF�1� &'�'DEI/I�������Fail to open the scanner���QApplication���,*�C4I� *'.*IDIB� 3C'FF�1�������Flatbed���QApplication���C�~�������Multiple���QApplication�����'2I1� *I2IEDICFI� J��ID'�'*I/��.� E���~~�BIJ�*� &���1IFI�� J��IDIFI4IFI� C�*���.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���3C'FF�1�������Scanner���QApplication���03C'FF�1� *�C4�1��'*I/��.�.�.�������Scanner is on detecting...���QApplication���"J�CC�� 3IC'FF�1D'4�������Single���QApplication���� &I4D�*C��I������� User���QObject���t� &'DDIB'�'F� �K�y�l�i�n�-�s�c�a�n�n�e�r� FI� &��I~� (HD/I� �o�p�e�n� FI� *'B'J/�� �������3 has already opened kylin-scanner, open will close ���QObject���J�'FI�� E�4:�D'*I�.� 3I2� /'�'ED'4*�1'E3I2������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� C�JFI���������ADF Back���QObject����A�D�F� �D�u�p�l�e�x������� +-ADF Duplex���QObject����A�D�F� &'D/I������� ADF Front���QObject���&'~*HE'*IC�������Auto���QObject���1���������Color���QObject���F���**ICI� �������Current ���QObject���C���D/ICI� *�1I�������Default Type���QObject���,*�C4I� *'.*IDIB� 3C'FF�1�������Flatbed���QObject���C�D1���������Gray���QObject���(3I2IBDIB� 3IC'FF�1D'4�������Lineart���QObject���E�3ID��������Question���QObject���"&�E�D/IF� B'D/�1�4�������Cancel��� RunningDialog��� +-&�*I4�������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� ++MainWidget���B'J*'� BH2:I*I4�������Scanner not detected���NoDeviceWidget���"&�E�D/IF� B'D/�1�4�������Cancel���NoMailDialog��� ++*'B'4�������Close���NoMailDialog���B'�ID'4�������Install���NoMailDialog���&&�D.�*� .�1I/'1I� JHB�������No email client���NoMailDialog����3I3*�EI/'� &�D.�*� .�1I/'1IFI� *'~'DE'J� &'��'D� &�D.�*� .�1I/'1IFI� B'�ID'��.�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� �D�u�p�l�e�x������� ++ADF Duplex���QApplication���&'~*�E'*IC�������Auto���QApplication���"3C'FF�1� &'�'DEI/I�������Fail to open the scanner���QApplication���*�2D��DIC�������Flatbed���QApplication���C�~�������Multiple���QApplication����J��IDIB� J'1I*I4� *I2IEDICI�.� J��IDIFI4� E���~~�BIJ�*� &���1IFI� 3'BD'��.�.�.�������CRefreshing list. Please wait for the refresh success information...���QApplication���3C'FF�1�������Scanner���QApplication���03C'FF�1� *�C4�1��'*I/��.�.�.�������Scanner is on detecting...���QApplication���J�CC�� *�F�'�������Single���QApplication����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject����A�D�F� C�JFI���������ADF Back���QObject����A�D�F� �D�u�p�l�e�x������� ++ADF Duplex���QObject����A�D�F� &'D/I������� ADF Front���QObject���&'~*�E'*IC�������Auto���QObject���1��DIC�������Color���QObject���C���D/ICI� *�1I�������Default Type���QObject���*�2D��DIC�������Flatbed���QObject���C�D1���������Gray���QObject���*&H1FI*I4� �'B*I� &�**I�.�������Install timeout.���QObject����L�i�n�e�a�r�t�������Lineart���QObject���"&�E�D/IF� B'D/�1�4�������Cancel��� RunningDialog��� ++*'B'4�������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� + SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� + SaneObject����1�5�0� �d�p�i�������150 dpi��� + SaneObject����2�0�0� �d�p�i�������200 dpi��� +@@ -48,25 +47,27 @@ SaneObject����A�D�F� �D�u�p�l�e�x������� + ADF Duplex��� + SaneObject����A�D�F� &'D/I������� ADF Front��� + SaneObject���C���D/ICI� *�1I�������Default Type��� +-SaneObject���,*�C4I� *'.*IDIB� 3C'FF�1�������Flatbed��� +-SaneObject���<*I2IEDICFI� J��ID'4� *'E'ED'F/I�.�������Refresh list complete.��� ++SaneObject���*�2D��DIC�������Flatbed��� ++SaneObject���6J��ID'4� *I2IEDICI� E�C�EE�D�.�������Refresh list complete.��� + SaneObject���"&�E�D/IF� B'D/�1�4�������Cancel��� + ScanDialog���d3IC'FF�1D'4� &�E�D/IF� B'D/�1�D/I� 3�D� 3'BD'~� *�1���!�������&Canceling scan,please wait a moment!��� + ScanDialog��� +-&�*I4�������Close��� ++*'B'4�������Close��� + ScanDialog���C�~�������Multiple��� + ScanDialog���2(�*� 3IC'FF�1D'4� 3'FDI1I�:� �������Number of pages scanning: ��� + ScanDialog���3C'FF�1�������Scanner��� +-ScanDialog��N� &��IDI~� *�1��'*I/�� � &�FI� J�~I~� BHJ'E/�B� &���1� C�~� (�*DIC� 3IC'FF�1D'4FI� &I,1'� BID3'� (�DCIE� F�1:�F� ��,,�*D�1FI�� B'~DIFI4IFI� C�D*�1�~� �IBI1I4I� E�ECIF�.� &��*IJ'*� BIDI��!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget���&'�'�D'F/�1�4�������Alert���ScanSettingsWidget���1���������Color���ScanSettingsWidget���1���������Colour���ScanSettingsWidget���pF���**�� &I4D�*C��IFI�� E�F/�1I,IFI� &�2��1*I4� 1�.3I*I� JHB� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���&�3C�F��������Device���ScanSettingsWidget���:E��,�*� (HDEI:'F� ��,,�*� JHDI�:� �������File path that does not exist: ���ScanSettingsWidget���"��,,�*� *��4�CDI1I������� File settings���ScanSettingsWidget���,*�C4I� *'.*IDIB� 3C'FF�1�������Flatbed���ScanSettingsWidget����*�C4I� *'.*IDIB� 3IC'FF�1D'4� &�F/I2I3I� C�~� B�*IE� 3IC'FF�1D'4FI� BHDDIE'J/��.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���AH1E'*I�������Format���ScanSettingsWidget���C�D1���������Gray���ScanSettingsWidget���(3I2IBDIB� 3IC'FF�1D'4�������Lineart���ScanSettingsWidget���&�D.�*� &'1BIDIB�������Mail to���ScanSettingsWidget���C�~�������Multiple���ScanSettingsWidget���&I3IE�-A'EIDI3I�������Name���ScanSettingsWidget���(�*D�1�������Pages���ScanSettingsWidget���02IJ'1�*� �HB�BI� JHB� JHD�:� �������Path without access rights: ���ScanSettingsWidget���3�2�CD�CI������� +-Resolution���ScanSettingsWidget���0��D� BIDI4� B���I*I� B�1�B�!�������Resolution is empty!���ScanSettingsWidget���3'BD'4�������Save���ScanSettingsWidget���3'BD'4�������Save As���ScanSettingsWidget������ 3'BD'4�������Save as���ScanSettingsWidget���3C'FF�1�������Scanner���ScanSettingsWidget���*3IC'FF�1D'4� &�3C�FI3I�������Scanner device���ScanSettingsWidget��� E�F/�1I,�� *'DD'4�������Select a directory���ScanSettingsWidget���"J�CC�� 3IC'FF�1D'4�������Single���ScanSettingsWidget����H�� �-� CI�ICDICI�������Size���ScanSettingsWidget���(3IC'FF�1D'4FI� ('4D'4������� ++ScanDialog��D&'DDIB'�'F� E��,�*� C���1�~� J�2I~� BHJE'BE�� &���1� 3I2� C�~� (�*FI� 3C'FF�1DI:'F� (HD3I�I2� &�� C�~� ��,,�*FI� &H1*'B� J�2I4FI� C�D*�1�~� �IBI1I4I� E�ECIF�.� &��*IJ'*�'F� (HD��� �!�������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����A�D�F�������ADF���ScanSettingsWidget���1��DIC�������Color���ScanSettingsWidget���1���������Colour���ScanSettingsWidget���pF���**�� &I4D�*C��IFI�� E�F/�1I,IFI� &�2��1*I4� 1�.3I*I� JHB� �������5Currently user has no permission to modify directory ���ScanSettingsWidget���&�3C�F��������Device���ScanSettingsWidget���:E��,�*� (HDEI:'F� ��,,�*� JHDI�:� �������File path that does not exist: ���ScanSettingsWidget���"��,,�*� *��4�CDI1I������� File settings���ScanSettingsWidget���*�2D��DIC�������Flatbed���ScanSettingsWidget����*�C4I� C'1I�'*� 3C'FF�1D'4� &�F/I2I3I� C�~� B�*IE� 3C'FF�1D'4FI� BHDDIE'J/��.�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���AH1E'*I�������Format���ScanSettingsWidget���C�D1���������Gray���ScanSettingsWidget����L�i�n�e�a�r�t�������Lineart���ScanSettingsWidget���&�D.�*� &'1BIDIB�������Mail to���ScanSettingsWidget���C�~�������Multiple���ScanSettingsWidget���&I3IE�-A'EIDI3I�������Name���ScanSettingsWidget���(�*�������Pages���ScanSettingsWidget���02IJ'1�*� �HB�BI� JHB� JHD�:� �������Path without access rights: ���ScanSettingsWidget���(~�1BD�F/�1�4� FI3(I*I������� ++Resolution���ScanSettingsWidget���0��D� BIDI4� B���I*I� B�1�B�!�������Resolution is empty!���ScanSettingsWidget���3'BD'4�������Save���ScanSettingsWidget���3'BD'4�������Save As���ScanSettingsWidget��� ++*�,�4�������Save as���ScanSettingsWidget���*3IC'FF�1D'4� &�3C�FI3I�������Scanner device���ScanSettingsWidget��� E�F/�1I,�� *'DD'4�������Select a directory���ScanSettingsWidget���J�CC�� *�F�'�������Single���ScanSettingsWidget����H��-CI�ICDICI�������Size���ScanSettingsWidget���&3C'FF�1D'4� ('4D'F/I������� + Start Scan���ScanSettingsWidget���*�CI3*FI� 3'BD'4������� + Store text���ScanSettingsWidget�����,,�*� ������� The file ���ScanSettingsWidget����(�� ~�1BD�F/�1�4� FI3(I*I� F'�'JI*I� &�2�F� �'BI*� C�*I/�� C���D� BHJ�~� *'DD'��.�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���*�1I�������Type���ScanSettingsWidget���4�F/'B�������Yes���ScanSettingsWidget���L�'�/�'� .'1'C*�1IFI� &�2� &I�I��� &'D'DE'J/��.�������cannot contain '/' character.���ScanSettingsWidget���VJH4�1�F� ��,,�*� 3�~I*I/�� 3'BDI:IDI� (HDE'J/��.�������cannot save as hidden file.���ScanSettingsWidget���3C'FF�1�0�1������� scanner01���ScanSettingsWidget���&�3C�1*I4�������tips���ScanSettingsWidget���"&�E�D/IF� B'D/�1�4�������Cancel���SendMailDialog��� +-&�*I4�������Close���SendMailDialog���,�2ED�4*�1�4�������Confirm���SendMailDialog���3C'FF�1�������Scanner���SendMailDialog���0&�D.�*� .�1I/'1IFI� *'DD'4�������Select email client���SendMailDialog���"&�E�D/IF� B'D/�1�4�������Cancel���ShowImageWidget���\&�E�D/IF� B'D/�1�D��'*I/��.�.�.� 3�D� *�.I1� BIDI��.�.�.�������Canceling...Please waiting...���ShowImageWidget��� +-E'B�D�������Ok���ShowImageWidget���.��2�DD�4*�1�DI�'*I/��.�.�.�������Running beauty ...���ShowImageWidget���D��2�DD�4*�1�4FI� *�1*I~C�� 3�DI4� �.�.�.�������Running rectify ...���ShowImageWidget���*�IBI4� &�:I2IFI� 3'BD'4������� +-&Save Exit���TitleBar�����������...���TitleBar���*H:1I3I/'�������About���TitleBar��� +-&�*I4�������Close���TitleBar����IBI4� &�:I2I�������Exit���TitleBar����F�o�r�m�������Form���TitleBar���J'1/�E�������Help���TitleBar���&��� �H�� ��CC��������Maximize���TitleBar���&���1� �L�A�N� /'� BI3B'� ~'1'�DI4I4� ��� ��,,�*� J�*C�4� &IB*I/'1I� (ID�F� *�EIFD�J/��.� E�D'2IE�*I1� B�1�4FI�� �',I*I� JHB�.� &�� C�~� &'/�EFI�� (I1D'� �'BI**'� ��EC'1DI4I��DI4IFI� ��� ~'1'DD�D� JHDD'4� ��� BH(�D� BIDI4FI� BHDD'J/��.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���CI�ICDI*I4�������Minimize���TitleBar���*'DD'FE'�������Option���TitleBar���$*I2IEDICFI� J��ID'4�������Refresh List���TitleBar��� &�3DI��� C�D*�1�4�������Restore���TitleBar���3C'FF�1�������Scanner���TitleBar���*�2�&�IBI4�������Straight &Exit���TitleBar���fF���**ICI� ��,,�*� 3'BD'FEI/I�.� 3I2� &�FI� 3'BDIE'B�IE��������6The current file is not saved. Do you want to save it?���TitleBar���F�3.I3I�:� ������� Version: ���TitleBar����k�y�l�i�n�-3C'FF�1������� kylin-scanner���TitleBar�����2�DD�4*�1�4�������Beauty��� ToolBarWidget���2I1'&�*D�1�������Crop��� ToolBarWidget���&�JF�C� *�3�I1I�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���*�1*I~C�� 3�DI4�������Rectify��� ToolBarWidget�����1�IDI*I4�������Rotate��� ToolBarWidget���3�� (�D��������� Watermark��� ToolBarWidget����H�'J*I4�������ZoomIn��� ToolBarWidget���.AHC�3� &'1IDIBIFI� *��4�4�������ZoomOut��� ToolBarWidget��&3C'FF�1� &�2�D�~� C�**I�.� &���1� 3C'FF�1FI�� &�DIFI4I� &�2�D3�� 3IC'FF�1D'4FI� &�E�D/IF� B'D/�1��� J'CI� 3IC'FI1DI:��FI�� .'*'� &���1FI� /HCD'*� BIDI4IFI� 3'BD'��.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���*J��I� 3C'FF�1� &�D'F/I�.�������New Scanner has been Connected.���UsbHotplugThread���n3C'FF�1� &�3C�FI3IFI� *�C4�1��'*I/��.� 3�D� *�.I1� BIDI��.� �.� �.�������+Querying scanner device. Please waitting...���UsbHotplugThread����3C'FF�1� �'2I1� &�2�D��'*I/�� 3C'FF�1� *I2IEDICIFI� J��ID'�'*I/��.� 3�D� *�.I1� BIDI��.� �.� �.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���p3IC'FF�1D'4� ~I1H�1'EEI3I� *I2IEDICIFI� J��ID'4� *'E'ED'F/I�.�������Scanner list refresh complete.���UsbHotplugThread��� +-&�*I4�������Close���WaittingDialog���03C'FF�1FI� &I2/��'*I/��.�.�.�������Searching for scanner...���WaittingDialog��� 3�� (�D�I3I� BH4�4������� Add watermark���WatermarkDialog���"&�E�D/IF� B'D/�1�4�������Cancel���WatermarkDialog��� +-&�*I4�������Close���WatermarkDialog���,�2ED�4*�1�4�������Confirm���WatermarkDialog���3C'FF�1�������Scanner���WatermarkDialog�����,,�*� F'EI�������Filename���main���Z3IC'FF�1D'4� *��4�CDI1IFI� �ICI~�/IJ�FI� JH4�1�4�������Hide scan settings widget���main���0��,,�*FI� �<�f�i�l�e�n�a�m�e�>&��I4�������Open file <filename>���main��� +-BH4�4�������Add���newDeviceListPage���&'�'�D'F/�1�4�������Alert���newDeviceListPage��� &ID�I1ICI� ('3B���������Before���newDeviceListPage���"&�E�D/IF� B'D/�1�4�������Cancel���newDeviceListPage��� +-&�*I4�������Close���newDeviceListPage���"&�3C�F�� *I2IEDICI�������Device List���newDeviceListPage���&�3C�F�� &I3EI�:�������Device Name:���newDeviceListPage���8BH2:'*B��� ~I1H�1'EEI3I� F'EI�:�������Driver Name:���newDeviceListPage���B'�ID'4�������Install���newDeviceListPage���0B�1'4*�1�4� E�:D�~� (HD/I�.�������Installation failed.���newDeviceListPage���B�1'4*�1�4� E���~~�BIJ�*DIC� (HD/I�.� �'2I1� (�� 3C'FF�1FI� &I4DI*I4C�� ('1E�� ��&I4DI*I4��� FI� ��CI~� �U�d�e�v� �(� ('4B�1:��I� E�.~IJ� FHE�1I� 2�1�1� �)� FI� B'J*'� *�3I3� BIDI~� 3IC'FF�1D'4� BHDDIFI4IFI� B'J*'� BH2:I*I~� &�3C�F�� *I2IEDICIFI� J��ID'��.� &���1� J�FID'� 3IC'FF�1D'~� &I4DI*IDI/I:'F� 3�1�*FI� /'�'EDIB� E�4:�D'*� BIDE'B�I� (HD3I�I2� BHD� (ID�F� B'J*'� BH2:I*IDI4I� ��E/�� 3IC'FF�1D'4� &IB*I/'1IFI� &I4DI*I4I�I2� C�1�C�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���NBH2:I*I4� ~I1H�1'EEI3I� B'�IDIFI�'*I/��.�.�.�������Installing driver...���newDeviceListPage���&I3IE�-A'EIDI3I�������Name���newDeviceListPage���C�JIFCI� ('3B���������Next���newDeviceListPage����&I4D�*CIDI� (HDI/I:'F� BH2:I*I4� ~I1H�1'EEI3I� JHB� BH2:'*B��FI� BHD/'� BH4'E3I2�������:No available drivers, do you want to manually add drivers?���newDeviceListPage��� +-E'B�D�������Ok���newDeviceListPage���~I1IF*�1�������Printer���newDeviceListPage���3C'FF�1�������Scanner���newDeviceListPage��� E�F/�1I,�� *'DD'4�������Select a directory���newDeviceListPage���*IFI4� (�D���������Symbol���newDeviceListPage����(�� 4H~�1� &��IF�I� *�1�~*IF� C�D��F� (HD�~� (�2I� &�D��4C�� (HDE'J/I:'F� F�*I,�� ~�J/'� BIDI4I� E�ECIF�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage����(�� 4H~�1FI� 2'��*� *�EIFD�J/��.� &�3C�FIFI�� E�F'3I~� 2'��*I� (ID�F� &'D'BIDI4I~� 4H~�1D�B� ~I1H�1'EEI3I:'� &�1I4I��.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���*�1I�������Type���newDeviceListPage���&I4DI*I4�������Use���newDeviceListPage���*I2IEDICC�� CI1��2�D��F� ~I1IF*�1� &�3C�FI3IFI�� (I1� ���/ID�4C�F� E'4IFIFI� 3IC'FF�1D'~� (�3I�'*B'F�-(�3I~� �IBI1I�'*B'F�-(�3I~� �IBI1I�'*B'F�-�IBI1I4� J'CI� &�E�3DICIFI� BHD� (ID�F� ,�2ED�4*�1�4I�I2� C�1�C�.� &���1� &�D'1� (I1� ���/ID�4C�F� E'4IFIFI� 3IC'FI1DIEI3'� 3�D� B'1'��.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���J��,,�*� .'1'C*�1IFI� ~�1BD�F/�1�4*�� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file ++*'B'4�������Close���SendMailDialog���,�2IED�4*�1�4�������Confirm���SendMailDialog���3C'FF�1�������Scanner���SendMailDialog���0&�D.�*� .�1I/'1IFI� *'DD'4�������Select email client���SendMailDialog���"&�E�D/IF� B'D/�1�4�������Cancel���ShowImageWidget���@&�E�D/IF� B'D/�1�D/I�.�.�.� 3'BD'��.�.�.�������Canceling...Please waiting...���ShowImageWidget��� ++E'B�D�������Ok���ShowImageWidget���4J��1�J/I:'F� 3'�I(,'E'D� �.�.�.�������Running beauty ...���ShowImageWidget���8J���1�4FI� *�1*I~C�� 3�DI4� �.�.�.�������Running rectify ...���ShowImageWidget���*�IBI4� &�:I2IFI� 3'BD'4������� ++&Save Exit���TitleBar�����������...���TitleBar�����BBI/��������About���TitleBar��� ++*'B'4�������Close���TitleBar����IBI4� &�:I2I�������Exit���TitleBar����F�o�r�m�������Form���TitleBar���J'1/�E�������Help���TitleBar���&��� �H�� ��CC��������Maximize���TitleBar���&���1� �L�A�N� /'� BI3B'� ~'1'�DI4I4� ��� ��,,�*� J�*C�4� &IB*I/'1I� (ID�F� *�EIFD�J/��.� E�D'2IEI*�1� B�1�4FI�� �',I*I� JHB�.� &�� C�~� &'/�EFI�� (I1D'� �'BI**'� ��EC'1DI4I��DI4IFI� ��� ~'1'DD�D� JHDD'4� ��� BH(�D� BIDI4FI� BHDD'J/��.��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���CI�ICDI*I4�������Minimize���TitleBar���*'DD'FE'�������Option���TitleBar���"J��ID'4� *I2IEDICI�������Refresh List���TitleBar��� &�3DI��� C�D*�1�4�������Restore���TitleBar���3C'FF�1�������Scanner���TitleBar���*�2�&�IBI4�������Straight &Exit���TitleBar���X�'2I1BI� ��,,�*� 3'BD'FEI/I�.� B�*B�2�~� B'D'E/��������6The current file is not saved. Do you want to save it?���TitleBar���F�41I�:� ������� Version: ���TitleBar����k�y�l�i�n�-�s�c�a�n�n�e�r������� kylin-scanner���TitleBar�����3IF� *�2�4�������Beauty��� ToolBarWidget���2I1'&�*D�1�������Crop��� ToolBarWidget���&�JF�C� *�3�I1I�������Mirror��� ToolBarWidget����O�C�R�������OCR��� ToolBarWidget���*�2I*I~� *�2�4�������Rectify��� ToolBarWidget���F���**��������Rotate��� ToolBarWidget���3�� (�D��������� Watermark��� ToolBarWidget����Z�o�o�m�I�n�������ZoomIn��� ToolBarWidget����Z�o�o�m�O�u�t�������ZoomOut��� ToolBarWidget��Z(I1� 3C'FF�1� &�D'4� &�2�D�~� B'D/I�.� &���1� 3C'FF�1FI�� &�DIFI4IFI� &�2�~� 3C'FF�1DI:'F� (HD3'� 3C'FF�1DIFI� &�E�D/IF� B'D/�1�4� J'CI� 3C'FF�1FI�� .'*'DIB� &���1IFI� /HCD'*� BIDI4IFI� 3'BD'��.��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���*J��I� 3C'FF�1� &�D'F/I�.�������New Scanner has been Connected.���UsbHotplugThread���d3�1�4*�1�4� 3C'FF�1� &�3C�FI3I�.� C�*�~� *�1�~� (�BI��.�.�.�������+Querying scanner device. Please waitting...���UsbHotplugThread����3C'FF�1� &�DIFI4FI� &�2�~� 3C'FF�1� *I2IEDICIFI� J��IDI/I�.� C�*�~� *�1�~� (�BI��.�.�.�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���F3C'FF�1� *I2IEDICI� J��ID'4� E�C�EE�D�.�������Scanner list refresh complete.���UsbHotplugThread��� ++*'B'4�������Close���WaittingDialog���3IFF�1�������Scanner���WaittingDialog���"3C'FF�1� &I2/�4�.�.�.�������Searching for scanner...���WaittingDialog��� 3�� (�D�I3I� BH4�4������� Add watermark���WatermarkDialog���"&�E�D/IF� B'D/�1�4�������Cancel���WatermarkDialog��� ++*'B'4�������Close���WatermarkDialog���,�2IED�4*�1�4�������Confirm���WatermarkDialog���3C'FF�1�������Scanner���WatermarkDialog�����,,�*� F'EI�������Filename���main���Z3IC'FF�1D'4� *��4�CDI1IFI� �ICI~�/IJ�FI� JH4�1�4�������Hide scan settings widget���main���0��,,�*FI� �<�f�i�l�e�n�a�m�e�>&��I4�������Open file <filename>���main��� ++BH4�4�������Add���newDeviceListPage���&'�'�D'F/�1�4�������Alert���newDeviceListPage�����������Before���newDeviceListPage���"&�E�D/IF� B'D/�1�4�������Cancel���newDeviceListPage��� ++*'B'4�������Close���newDeviceListPage���"&�3C�F�� *I2IEDICI�������Device List���newDeviceListPage���&�3C�F�� F'EI� �:�������Device Name:���newDeviceListPage���4H~�1FI�� F'EI� �:�������Driver Name:���newDeviceListPage���B'�ID'4�������Install���newDeviceListPage���0B�1'4*�1�4� E�:D�~� (HD/I�.�������Installation failed.���newDeviceListPage���B�1'4*�1�4� E���~~�BIJ�*DIC� (HD/I�.� �'2I1� (�� 3C'FF�1FI� &I4DI*I4C�� ('1E�� ��&I4DI*I4��� FI� ��CI~� �U�d�e�v� �(� ('4B�1:��I� E�.~IJ� FHE�1I� 2�1�1� �)� FI� B'J*'� *�3I3� BIDI~� 3C'FF�1D'4� BHDDIFI4IFI� B'J*'� BH2:I*I~� &�3C�F�� *I2IEDICIFI� J��ID'��.� &���1� J�FID'� 3IC'FF�1D'~� &I4DI*IDI/I:'F� 3�1�*FI� /'�'EDIB� E�4:�D'*� BIDE'B�I� (HD3I�I2� BHD� (ID�F� B'J*'� BH2:I*IDI4I� ��E/�� 3IC'FF�1D'4� &IB*I/'1IFI� &I4DI*I4I�I2� C�1�C�.������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���&BH1'4*�1�4� 4H~�1�.�.�.�������Installing driver...���newDeviceListPage���&I3IE�-A'EIDI3I�������Name���newDeviceListPage���C�JIFCI� (�*�������Next���newDeviceListPage����BHDDIFI4B'� (HDI/I:'F� 4H~�1D'1� JHB� BHD� (ID�F� 4H~�1FI� BH4�~� BHJE'BE��������:No available drivers, do you want to manually add drivers?���newDeviceListPage��� ++E'B�D�������Ok���newDeviceListPage���~1IF*�1�������Printer���newDeviceListPage���3C'FF�1�������Scanner���newDeviceListPage��� E�F/�1I,�� *'DD'4�������Select a directory���newDeviceListPage��� ++(�D���������Symbol���newDeviceListPage����(�� 4H~�1� &��IF�I� *�1�~*IF� C�D��F� (HD�~� (�2I� &�D��4C�� (HDE'J/I:'F� F�*I,�� ~�J/'� BIDI4I� E�ECIF�.�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage����(�� 4H~�1FI� 2'��*� *�EIFD�J/��.� &�3C�FIFI�� E�F'3I~� 2'��*I� (ID�F� &'D'BIDI4I~� 4H~�1D�B� ~1H�1'EEI3I:'� &�1I4I��.��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���*�1I�������Type���newDeviceListPage���&I4DI*I4�������Use���newDeviceListPage���*I2IEDICC�� CI1��2�D��F� ~1IF*�1� &�3C�FI3IFI�� (I1� ���/ID�4C�F� E'4IFIFI� 3IC'FI1D'~� (�3I�'*B'F�-(�3I~� �IBI1I�'*B'F�-(�3I~� �IBI1I�'*B'F�-�IBI1I4� J'CI� &�E�3DICIFI� BHD� (ID�F� ,�2ED�4*�1�4I�I2� C�1�C�.� &���1� &�D'1� (I1� ���/ID�4C�F� E'4IFIFI� 3IC'FI1DIEI3'� 3�D� B'1'��.��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���J��,,�*� .'1'C*�1IFI� ~�1BD�F/�1�4*�� �.�.�.�������,The document is in character recognition ...��� showOcrWidget���� +\ No newline at end of file +diff --git a/translations/kylin-scanner_ug.ts b/translations/kylin-scanner_ug.ts +index 81eb834..d2cd874 100644 +--- a/translations/kylin-scanner_ug.ts ++++ b/translations/kylin-scanner_ug.ts +@@ -112,14 +112,9 @@ + <translation type="vanished">检测扫描设备中,请稍后 ……</translation> + </message> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> +- <translation>سىكاننېرلاش ئاپپاراتىنى تەكشۈرۈپ كۆرۈڭ، ساقلاپ تۇرۇڭ</translation> ++ <translation>سېكاننېرلاش ئاپپاراتىنى تەكشۈرۈپ كۆرۈڭ، كۈتۈپ تۇرۇڭ ...</translation> + </message> + </context> + <context> +@@ -131,12 +126,12 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation>ئىشلەتكىلى بولىدىغان سىكاننېرلاش ئۈسكۈنىسى يوق</translation> ++ <translation>ئىشلىتىشكە بولىدىغان سكاننېرلاش ئۈسكۈنىسى يوق</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> + <source>Connect</source> +- <translation>ئۇلىنىش</translation> ++ <translation>ئۇلاش</translation> + </message> + </context> + <context> +@@ -149,7 +144,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>مەن تېكىستنى ئوقۇيالمايدىمەن، قايتا سىناڭ.</translation> + </message> + </context> + <context> +@@ -157,7 +152,7 @@ + <message> + <location filename="../src/about/about.ui" line="26"/> + <source>Dialog</source> +- <translation>ۋاقىت ئۆزگەرتىش</translation> ++ <translation>دىئالوگ رامكىسى</translation> + </message> + <message> + <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> +@@ -192,7 +187,7 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> + <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> +- <translation>سكاننېر بايقالمىدى، يېڭى سكاننېر كىرگۈزۈپ ئۈسكۈنىنىڭ تىزىملىكىنى يېڭىلاڭ.</translation> ++ <translation>سكاننېرنى تەكشۈرمىگەن، يېڭى سكاننېرنى چېتىپ ئۈسكۈنە تىزىملىكىنى يېڭىلايدۇ.</translation> + </message> + </context> + <context> +@@ -202,10 +197,8 @@ + <translation type="vanished">麒麟扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation type="vanished">سكاننېر</translation> + </message> + <message> + <source>Yes</source> +@@ -236,7 +229,7 @@ + <translation type="vanished">单页扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> + <translation>ئىناۋەتسىز مۇلاھىزىلەر، دەلىل-ئىسپاتلارنى ئۆزگەرتىڭ ياكى باشقا سكاننېرلارنى ئالماشتۇرۇڭ.</translation> + </message> +@@ -245,86 +238,86 @@ + <translation type="vanished">خاتالىق كودى:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> +- <translation>سىكانىرلاش مەغلۇپ بولدى، سكاننېرنى تەكشۈرۈپ بېقىڭ ياكى باشقا سكاننېرغا ئالماشتۇرۇڭ. ئەگەر سكاننېرنى داۋاملىق ئىشلەتمەكچى بولساق، تاللاش تۈرىنى چېكىڭ، تىزىملىكنى يېڭىلاپ ئۈسكۈنىنى قايتا قوزغىتىڭ.</translation> ++ <translation>سكاننېرلاش مەغلۇپ بولدى، سكاننېرنى تەكشۈرۈپ بېقىڭ ياكى باشقا سكاننېرنى ئالماشتۇرۇڭ. ئەگەر سكاننېرنى داۋاملىق ئىشلىتىشنى ئويلىسىڭىز، «تاللاش» نى چېكىپ، تىزىملىكنى يېڭىلاپ ئۈسكۈنىنى قايتا قوزغىتىڭ.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> + <translation>ئاگاھلاندۇرۇش</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> +- <translation>يېڭى سكاننېر ئۇلاندى.</translation> ++ <translation>يېڭى بىر سكاننېر ئۇلاندى.</translation> + </message> + <message> + <source>error code: </source> + <translation type="vanished">错误码:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> +- <translation>ماقۇل</translation> ++ <translation>ماقۇلبولىدۇ</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> + <translation>ئۈسكۈنە ئالدىراش، ساقلاپ تۇرۇڭ ياكى باشقا سكاننېرلارنى ئالماشتۇرۇڭ.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> + <translation>ھۆججەت بىلەن تەمىنلىگۈچىنى ھۆججەتتىن چىقىرىۋەتسىڭىز، ھۆججەتلەرنى قويۇپ قايتا سىكاننېرلاڭ.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> + <translation>سىكاننېرلاش مەشغۇلاتى ئەمەلدىن قالدۇرۇلدى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> +- <translation>سىكاننېرلاش مەغلۇپ بولدى، مەشغۇلات قوللىمىدى.</translation> ++ <translation>سكاننېرلاش مەغلۇپ بولدى، مەشغۇلات قوللىمىدى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation>سكاننېرلىشى مەغلۇپ بولدى، ھۆججەت توختاپ قالدى.</translation> ++ <translation>سكاننېرلىشى مەغلۇپ بولدى، ھۆججەت Fedder توختاپ قالدى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> + <translation>سكاننېرلىغاندا مەغلۇپ بولدى، قۇرۇلما I/O جەريانىدا خاتالىق كۆرۈلدى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> + <translation>سكاننېرلىغاندا مەغلۇپ بولدى، ئەستە ساقلىغۇسى يوق.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation>سىكاننېرلاش مەغلۇپ بولدى، بايلىقنى زىيارەت قىلىش رەت قىلىندى.</translation> ++ <translation>سكاننېرلاش مەغلۇپ بولدى، بايلىقنى زىيارەت قىلىش رەت قىلىندى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation>سىكاننېرلاش مەغلۇپ بولدى، سكاننېرنىڭ قاپقىقى ئېچىلىپ بولدى.</translation> ++ <translation>سكاننېرلاش مەغلۇپ بولدى، سكاننېرنىڭ قاپقىقى ئېچىلىپ بولدى.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> + <translation>سىستېما ئۇخلاش، ئۇخلاش تەكشۈرۈلدى. سكاننېرنىڭ نورمال ئىشلىتىلىشىگە كاپالەتلىك قىلىش ئۈچۈن، قايتا قوزغىتىشنى چېكىپ سكاننېرنىڭ قوللىنىشىنى قايتا قوزغىتىڭلار. ئەگەر سىكاننېرلاپ ئىشلىتىلىدىغان سۈرەتنى داۋاملىق مەشغۇلات قىلماقچى بولسىڭىز، بىراق سىكاننېرلاپ ئىشلىتىشكە ئالاقىدار ئىقتىدارلار توختىلىپ، قايتا قوزغىغاندىن كېيىن كۈچكە ئىگە بولىدۇ.</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> + <translation>قايتا قوزغىتىش</translation> + </message> +@@ -333,14 +326,14 @@ + <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>يۈگرەيدىغان ساھىبجامال ...</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تەرتىپكە سېلىش ...</translation> ++ <translation>يۈگۈرۈشنى تەرتىپكە سېلىش ...</translation> + </message> + </context> + <context> +@@ -348,15 +341,15 @@ + <message> + <location filename="../src/nodevicewidget.cpp" line="43"/> + <source>Scanner not detected</source> +- <translation>سكاننېر بايقالمىدى.</translation> ++ <translation>قايتا قوزغىتىش</translation> + </message> + </context> + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> + <translation>ئېلخەت خېرىدارى يوق</translation> + </message> +@@ -365,22 +358,22 @@ + <translation type="vanished">扫描</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> + <translation>سىستېمىدا ئېلخەت خېرىدارىنى تاپالماي، ئاۋۋال ئېلخەت خېرىدارىنى قاچىلاڭ.</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> + <translation>قاچىلاش</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> +@@ -402,48 +395,52 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> + <translation>ADF Duplex</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> + <translation>سكاننېر ئاچالمىدى</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> +- <translation>ئاپتوماتىك</translation> ++ <translation>ئاپتۇماتىك</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> + <translation>كۆپ</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> +- <translation>تەكشى تاختىلىق سكاننېر</translation> ++ <translation>تۈزلەڭلىك</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="59"/> + <source>Refreshing list. Please wait for the refresh success information...</source> +- <translation>ھازىر تىزىملىكنى يېڭىلاۋاتىدۇ. مۇۋەپپەقىيەت ئۇچۇرىنىڭ يېڭىلىنىشىنى كۈتۈڭ...</translation> ++ <translation>يېڭىلىق يارىتىش تىزىملىكى. يېڭىلىنىش مۇۋەپپەقىيەت ئۇچۇرىنى ساقلاڭ...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="65"/> +@@ -451,9 +448,9 @@ + <translation>سكاننېر تەكشۈرۈۋاتىدۇ...</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> +- <translation>يەككە سىكاننېرلاش</translation> ++ <translation>يەككە تەنھا</translation> + </message> + </context> + <context> +@@ -463,147 +460,146 @@ + <translation type="vanished">用户</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation>مەسىلە</translation> ++ <translation type="vanished">مەسىلە</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation>نۆۋەتتىكى </translation> ++ <translation type="vanished">نۆۋەتتىكى </translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation> ئىشلەتكۈچى</translation> ++ <translation type="vanished"> ئىشلەتكۈچى</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation> ئاللىقاچان Kylin-scanner نى ئېچىپ بولدى، open نى تاقايدۇ </translation> ++ <translation type="vanished"> ئاللىقاچان Kylin-scanner نى ئېچىپ بولدى، open نى تاقايدۇ </translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation>'نىڭ مەشغۇلاتى. سىز داۋاملاشتۇرامسىز؟</translation> ++ <translation type="vanished">'نىڭ مەشغۇلاتى. سىز داۋاملاشتۇرامسىز؟</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> +- <translation>رەڭ</translation> ++ <translation>رەڭلىك</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> + <translation>كۈلرەڭ</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> +- <translation>سىزىقلىق سىكاننېرلاش</translation> ++ <translation>Lineart</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> + <translation>كۆڭۈلدىكى تۈرى</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> +- <translation>تەكشى تاختىلىق سكاننېر</translation> ++ <translation>تۈزلەڭلىك</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> + <translation>ADF ئالدى</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> + <translation>ADF كەينىگە</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> + <translation>ADF Duplex</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> +- <translation>ئاپتوماتىك</translation> ++ <translation>ئاپتۇماتىك</translation> ++ </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>ئورنىتىش ۋاقتى ئۆتتى.</translation> + </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> +@@ -611,32 +607,32 @@ + <context> + <name>SaneObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> + <translation>كۆڭۈلدىكى تۈرى</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> +- <translation>تەكشى تاختىلىق سكاننېر</translation> ++ <translation>تۈزلەڭلىك</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="416"/> + <source>Refresh list complete.</source> +- <translation>تىزىملىكنى يېڭىلاش تاماملاندى.</translation> ++ <translation>يېڭىلاش تىزىملىكى مۇكەممەل.</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> + <translation>ADF ئالدى</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> + <translation>ADF كەينىگە</translation> + </message> +@@ -653,7 +649,7 @@ + <translation type="vanished">彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> + <translation>ADF Duplex</translation> + </message> +@@ -662,47 +658,47 @@ + <translation type="vanished">自动</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> +@@ -714,18 +710,17 @@ + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> + <translation>بەت سىكاننېرلاش سانلىرى: </translation> +@@ -735,7 +730,7 @@ + <translation type="vanished">正在扫描页数:</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> +@@ -757,7 +752,7 @@ + <translation type="vanished">开始扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> + <translation>سىكاننېرلاش ئۈسكۈنىسى</translation> + </message> +@@ -766,95 +761,94 @@ + <translation type="vanished">延时</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> + <translation>ھۆججەت تەڭشەكلىرى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> + <translation>ئۈسكۈنە</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> + <translation>مۇندەرىجە تاللاش</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> + <translation>نۆۋەتتە ئىشلەتكۈچىنىڭ مۇندەرىجىنى ئۆزگەرتىش رۇخسىتى يوق </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> +- <translation>تەكشى تاختىلىق سىكاننېرلاش ئەندىزىسى كۆپ قېتىم سىكاننېرلاشنى قوللىمايدۇ.</translation> ++ <translation>تەكشى كارىۋات سكاننېرلاش ئەندىزىسى كۆپ قېتىم سكاننېرلاشنى قوللىمايدۇ.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> + <translation>كۆپ</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> + <translation>بۇ پەرقلەندۈرۈش نىسبىتى ناھايىتى ئۇزۇن ۋاقىت كېتىدۇ، كۆڭۈل قويۇپ تاللاڭ.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation>ئاگاھلاندۇرۇش</translation> ++ <translation type="vanished">ئاگاھلاندۇرۇش</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> +- <translation>بەتلەر</translation> ++ <translation>بەت</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> + <translation>تۈرى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> +- <translation>رەڭ</translation> ++ <translation>رەڭلىك</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> +- <translation>سۈزۈكلۈكى</translation> ++ <translation>پەرقلەندۈرۈش نىسبىتى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> +- <translation>چوڭ - كىچىكلىكى</translation> ++ <translation>چوڭ-كىچىكلىكى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> + <translation>فورماتى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> + <translation>ئىسىم-فامىلىسى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> + <translation>سكاننېر01</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> + <translation>ساقلاش</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> + <translation>ئېلخەت ئارقىلىق</translation> + </message> +@@ -863,36 +857,36 @@ + <translation type="vanished">发送至邮箱</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> +- <translation>گە ساقلاش</translation> ++ <translation>تېجەش</translation> + </message> + <message> + <source>No available scanners</source> + <translation type="vanished">无可用设备</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> +- <translation>يەككە سىكاننېرلاش</translation> ++ <translation>يەككە تەنھا</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> +@@ -901,44 +895,44 @@ + <translation type="vanished">بۇ قارارنى سىكاننېرلاش ئۈچۈن بىر قېتىم loog ۋاقتى كېتىدۇ، پەرۋىش قىلىشنى تاللاڭ.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> + <translation>'/' خاراكتېرىنى ئۆز ئىچىگە ئالالمايدۇ.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> + <translation>يوشۇرۇن ھۆججەت سۈپىتىدە ساقلىغىلى بولمايدۇ.</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> + <translation>ساقلاش</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> + <translation>زىيارەت ھوقۇقى يوق يول: </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> + <translation>مەۋجۇت بولمىغان ھۆججەت يولى: </translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> +- <translation> ئېچىلىپ تۇرۇۋاتىدۇ، ئۇنى يېپىپ قويامدۇق؟ ئەگەر كۆپ بەتلىك سىكاننېرلاشنى ئىجرا قىلسا، بەلكىم نۇرغۇن ھۆججەتلەرنىڭ قاپلىنىشىنى كەلتۈرۈپ چىقىرىشى مۇمكىن. ئېھتىيات قىلىڭ!</translation> ++ <translation>ئاللىقاچان مەۋجۇت، كۆچۈرۈپ يېزىپ قويماقمۇ؟ ئەگەر سىز كۆپ بەتنى سكاننېرلىغان بولسىڭىز، ئۇ كۆپ ھۆججەتنى ئورتاق يېزىشنى كەلتۈرۈپ چىقىرىشى مۇمكىن. ئېھتىياتچان بولۇڭ !</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> +- <translation>سىكاننېرلاشنى باشلاش</translation> ++ <translation>سكاننېرلاش باشلاندى</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> + <translation>تېكىستنى ساقلاش</translation> + </message> +@@ -947,7 +941,7 @@ + <translation type="vanished">另存为</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> + <translation>ھۆججەت </translation> + </message> +@@ -956,12 +950,12 @@ + <translation type="vanished">已存在,您想覆盖它吗?</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> + <translation>ئەسكەرتىش</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> + <translation>رەڭ</translation> + </message> +@@ -986,18 +980,18 @@ + <translation type="vanished">15 秒</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> +- <translation>تەكشى تاختىلىق سكاننېر</translation> ++ <translation>تۈزلەڭلىك</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> + <translation>كۈلرەڭ</translation> + </message> +@@ -1006,38 +1000,38 @@ + <translation type="vanished">取消</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> +- <translation>سىزىقلىق سىكاننېرلاش</translation> ++ <translation>Lineart</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> + <translation>ھەل قىلىش قۇۋۋىتى قۇرۇق!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> + <translation>A4</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> + <translation>A5</translation> + </message> +@@ -1046,12 +1040,11 @@ + <translation type="vanished">扫描文档名称的长度不能超过252。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>سكاننېر</translation> ++ <translation type="vanished">سكاننېر</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> + <translation>شۇنداق</translation> + </message> +@@ -1086,60 +1079,60 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> + <translation>ئېلخەت خېرىدارىنى تاللاش</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> +- <translation>جەزملەشتۈرۈش</translation> ++ <translation>جەزىملەشتۈرۈش</translation> + </message> + </context> + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> + <translation>ماقۇل</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> +- <translation>ئەمەلدىن قالدۇرۇلۇۋاتىدۇ... سەل تەخىر قىلىڭ...</translation> ++ <translation>ئەمەلدىن قالدۇرۇلدى... ساقلاڭ...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> +- <translation>گۈزەللەشتۈرۈلىۋاتىدۇ...</translation> ++ <translation>يۈگرەيدىغان ساھىبجامال ...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> +- <translation>گۈزەللەشتۈرۈشنى تەرتىپكە سېلىش ...</translation> ++ <translation>يۈگۈرۈشنى تەرتىپكە سېلىش ...</translation> + </message> + </context> + <context> +@@ -1152,12 +1145,12 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation>kylin-سكاننېر</translation> ++ <translation>kylin-scanner</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> +@@ -1185,7 +1178,7 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="308"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> + <source>Maxmize</source> +@@ -1194,7 +1187,7 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="53"/> + <source>Refresh List</source> +- <translation>تىزىملىكنى يېڭىلاش</translation> ++ <translation>يېڭىلاش تىزىملىكى</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="70"/> +@@ -1204,17 +1197,17 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="74"/> + <source>About</source> +- <translation>توغرىسىدا</translation> ++ <translation>ھەققىدە</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="76"/> + <source>Version: </source> +- <translation>نۇسخىسى: </translation> ++ <translation>نەشرى: </translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="77"/> + <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> +- <translation>ئۇچۇر LAN دا قىسقا پاراڭلىشىش ۋە ھۆججەت يۆتكەش ئىقتىدارى بىلەن تەمىنلەيدۇ. مۇلازىمېتىر قۇرۇشنىڭ ھاجىتى يوق. ئۇ كۆپ ئادەمنىڭ بىرلا ۋاقىتتا ھەمكارلىشىۋېلىشىنى ۋە پاراللېل يوللاش ۋە قوبۇل قىلىشنى قوللايدۇ.</translation> ++ <translation>ئۇچۇر LAN دا قىسقا پاراڭلىشىش ۋە ھۆججەت يۆتكەش ئىقتىدارى بىلەن تەمىنلەيدۇ. مۇلازىمىتېر قۇرۇشنىڭ ھاجىتى يوق. ئۇ كۆپ ئادەمنىڭ بىرلا ۋاقىتتا ھەمكارلىشىۋېلىشىنى ۋە پاراللېل يوللاش ۋە قوبۇل قىلىشنى قوللايدۇ.</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="87"/> +@@ -1229,7 +1222,7 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="192"/> + <source>The current file is not saved. Do you want to save it?</source> +- <translation>نۆۋەتتىكى ھۆججەت ساقلانمىدى. سىز ئۇنى ساقلىماقچىمۇ؟</translation> ++ <translation>ھازىرقى ھۆججەت ساقلانمىدى. قۇتقۇزۇپ قالامدۇ؟</translation> + </message> + <message> + <source>The current document is not saved. Do you want to save it?</source> +@@ -1249,58 +1242,58 @@ + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> +- <translation>گۈزەللەشتۈرۈش</translation> ++ <translation>ھۆسىن تۈزەش</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> +- <translation>تەرتىپكە سېلىش</translation> ++ <translation>تۈزىتىپ تۈزەش</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> + <translation>OCR</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> + <translation>زىرائەتلەر</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> +- <translation>چۆرگىلىتىش</translation> ++ <translation>نۆۋەتتە</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> + <translation>ئەينەك تەسۋىرى</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> + <translation>سۇ بەلگە</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> +- <translation>چوڭايتىش</translation> ++ <translation>ZoomIn</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> +- <translation>فوكۇس ئارىلىقىنى تەڭشەش</translation> ++ <translation>ZoomOut</translation> + </message> + </context> + <context> +@@ -1324,7 +1317,7 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="95"/> + <source>Querying scanner device. Please waitting...</source> +- <translation>سكاننېر ئۈسكۈنىسىنى تەكشۈرۈۋاتىدۇ. سەل تەخىر قىلىڭ. . .</translation> ++ <translation>سۈرۈشتۈرۈش سكاننېر ئۈسكۈنىسى. كۈتۈپ تۇرۇپ بېقىڭ...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="119"/> +@@ -1334,74 +1327,79 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="129"/> + <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> +- <translation>سكاننېر ئۈزۈلۈپ كەتتى. ئەگەر سكاننېرنىڭ ئۇلىنىشى ئۈزۈلسە، سىكاننېرلاشنى ئەمەلدىن قالدۇرۇڭ ياكى سىكانىرلىغۇچنىڭ خاتا ئۇچۇرنى دوكلات قىلىشىنى ساقلاڭ.</translation> ++ <translation>بىر سكاننېر ئۇلاش ئۈزۈلۈپ قالدى. ئەگەر سكاننېرنىڭ ئۇلىنىشىنى ئۈزۈپ سكاننېرلىغان بولسا، سكاننېرلىنى ئەمەلدىن قالدۇرۇش ياكى سكاننېرنىڭ خاتالىق ئۇچۇرىنى دوكلات قىلىشىنى ساقلاڭ.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="135"/> + <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> +- <translation>سكاننېر ھازىر ئۈزۈلۈۋاتىدۇ، سكاننېر تىزىملىكىنى يېڭىلاۋاتىدۇ. سەل تەخىر قىلىڭ. . .</translation> ++ <translation>سكاننېر ئۇلىنىشنى ئۈزۈپ، سكاننېر تىزىملىكىنى يېڭىلىدى. كۈتۈپ تۇرۇپ بېقىڭ...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="150"/> + <source>Scanner list refresh complete.</source> +- <translation>سىكاننېرلاش پىروگراممىسى تىزىملىكىنى يېڭىلاش تاماملاندى.</translation> ++ <translation>سكاننېر تىزىملىكى يېڭىلاش مۇكەممەل.</translation> + </message> + </context> + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>سىننەر</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> +- <translation>سكاننېرنى ئىزدەۋاتىدۇ...</translation> ++ <translation>سكاننېر ئىزدەش...</translation> + </message> + </context> + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> + <translation>سۇ بەلگىسى قوشۇش</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> +- <translation>جەزملەشتۈرۈش</translation> ++ <translation>جەزىملەشتۈرۈش</translation> + </message> + </context> + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> + <translation>ھۆججەتنى <filename>ئېچىش</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> + <translation>ھۆججەت نامى</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> + <translation>سىكاننېرلاش تەڭشەكلىرىنى ۋىكىپېدىيەنى يوشۇرۇش</translation> + </message> +@@ -1416,7 +1414,7 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Symbol</source> +- <translation>تىنىش بەلگە</translation> ++ <translation>بەلگە</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> +@@ -1425,20 +1423,20 @@ + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> + <translation>ئاگاھلاندۇرۇش</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation>تىزىملىككە كىرگۈزۈلگەن پىرىنتېر ئۈسكۈنىسىنىڭ بىر گەۋدىلەشكەن ماشىنىنى سىكاننېرلاپ بېسىۋاتقان-بېسىپ چىقىرىۋاتقان-بېسىپ چىقىرىۋاتقان-چىقىرىش ياكى ئەمەسلىكىنى قول بىلەن جەزملەشتۈرۈشىڭىز كېرەك. ئەگەر ئۇلار بىر گەۋدىلەشكەن ماشىنىنى سىكانىرلىمىسا، سەل قاراڭ.</translation> ++ <translation>تىزىملىككە كىرگۈزۈلگەن پرىنتېر ئۈسكۈنىسىنىڭ بىر گەۋدىلەشكەن ماشىنىنى سىكانىرلاپ بېسىۋاتقان-بېسىپ چىقىرىۋاتقان-بېسىپ چىقىرىۋاتقان-چىقىرىش ياكى ئەمەسلىكىنى قول بىلەن جەزملەشتۈرۈشىڭىز كېرەك. ئەگەر ئۇلار بىر گەۋدىلەشكەن ماشىنىنى سىكانىرلىمىسا، سەل قاراڭ.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> + <source>Close</source> +- <translation>ئېتىش</translation> ++ <translation>تاقاش</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="84"/> +@@ -1448,20 +1446,20 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> + <translation>ئەمەلدىن قالدۇرۇش</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="98"/> + <source>Next</source> +- <translation>كېيىنكى باسقۇچ</translation> ++ <translation>كېيىنكى بەت</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="118"/> + <source>Before</source> +- <translation>ئىلگىرىكى باسقۇچ</translation> ++ <translation></translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="119"/> +@@ -1469,73 +1467,73 @@ + <translation>قاچىلاش</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> + <translation>سكاننېر</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> +- <translation>پىرىنتېر</translation> ++ <translation>پرىنتېر</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> +- <translation>ئۈسكۈنە ئىسمى:</translation> ++ <translation>ئۈسكۈنە نامى :</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> +- <translation>قوزغاتقۇچ پىروگراممىسى نامى:</translation> ++ <translation>شوپۇرنىڭ نامى :</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> + <translation>بۇ شوپۇر ئۈچىنچى تەرەپتىن كەلگەن بولۇپ، بەزى ئۆلچەشكە بولمايدىغان نەتىجە پەيدا قىلىشى مۇمكىن.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation>بۇ شوپۇرنى زاۋۇت تەمىنلەيدۇ. ئۈسكۈنىنىڭ مۇناسىپ زاۋۇتى بىلەن ئالاقىلىشىپ شوپۇرلۇق پىروگراممىسىغا ئېرىشىڭ.</translation> ++ <translation>بۇ شوپۇرنى زاۋۇت تەمىنلەيدۇ. ئۈسكۈنىنىڭ مۇناسىپ زاۋۇتى بىلەن ئالاقىلىشىپ شوپۇرلۇق پروگراممىسىغا ئېرىشىڭ.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation>ئىشلەتكىلى بولىدىغان قوزغىتىش پىروگراممىسى يوق، قوزغاتقۇچنى قولدا قوشامسىز؟</translation> ++ <translation>قوللىنىشقا بولىدىغان شوپۇرلار يوق، قول بىلەن شوپۇرنى قوشۇپ قويماقمۇ؟</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> + <translation>قوشۇش</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> +- <translation>قوزغىتىش پىروگراممىسى قاچىلىنىۋاتىدۇ...</translation> ++ <translation>قوراشتۇرۇش شوپۇر...</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation>قۇراشتۇرۇش مۇۋەپپەقىيەتلىك بولدى. ھازىر بۇ سكاننېرنى ئىشلىتىشكە بارمۇ؟ «ئىشلىتىش» نى چېكىپ Udev ( باشقۇرغۇچى مەخپىي نومۇرى زۆرۈر ) نى قايتا تەسىس قىلىپ، سىكاننېرلاش قوللىنىشىنى قايتا قوزغىتىپ ئۈسكۈنە تىزىملىكىنى يېڭىلاڭ. ئەگەر يەنىلا سىكاننېرلاپ ئىشلىتىلىدىغان سۈرەتنى داۋاملىق مەشغۇلات قىلماقچى بولسىڭىز، قول بىلەن قايتا قوزغىتىلىشى ھەمدە سىكاننېرلاش ئىقتىدارىنى ئىشلىتىشىڭىز كېرەك.</translation> ++ <translation>قۇراشتۇرۇش مۇۋەپپەقىيەتلىك بولدى. ھازىر بۇ سكاننېرنى ئىشلىتىشكە بارمۇ؟ «ئىشلىتىش» نى چېكىپ Udev ( باشقۇرغۇچى مەخپىي نومۇرى زۆرۈر ) نى قايتا تەسىس قىلىپ، سكاننېرلاش قوللىنىشىنى قايتا قوزغىتىپ ئۈسكۈنە تىزىملىكىنى يېڭىلاڭ. ئەگەر يەنىلا سىكاننېرلاپ ئىشلىتىلىدىغان سۈرەتنى داۋاملىق مەشغۇلات قىلماقچى بولسىڭىز، قول بىلەن قايتا قوزغىتىلىشى ھەمدە سىكاننېرلاش ئىقتىدارىنى ئىشلىتىشىڭىز كېرەك.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> + <translation>ئىشلىتىش</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> + <translation>قۇراشتۇرۇش مەغلۇپ بولدى.</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> + <translation>ماقۇل</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> + <translation>مۇندەرىجە تاللاش</translation> + </message> +diff --git a/translations/kylin-scanner_vi.qm b/translations/kylin-scanner_vi.qm +new file mode 100644 +index 0000000..bdf0571 +--- /dev/null ++++ b/translations/kylin-scanner_vi.qm +@@ -0,0 +1 @@ ++<�d��!�`���B�����1����i��� �����������...���TitleBar +\ No newline at end of file +diff --git a/translations/kylin-scanner_zh_CN.qm b/translations/kylin-scanner_zh_CN.qm +index 9c1c799..4de39eb 100644 +--- a/translations/kylin-scanner_zh_CN.qm ++++ b/translations/kylin-scanner_zh_CN.qm +@@ -1,12 +1,14 @@ +-<�d��!�`���B�����D�����E�����[�����[��&���[��7���1��'���E���X��E���|��E�����G���2g��S���,h��\���:m��_���$��h���3����� ��������`��,����(!�֍��(F������������0��(m�H5����H5��6��L���6������ �����"f��e��#���e��:?��s��%�%������,D���1��G����'��H,����H,���8�H,���2��I�~�� ��I����+�J6���O�J6���w�J6���h�J6���%v�J6���'��J6���0F�J6���1(�J6���3%�Jcb��2�Jcb��h�PFE��* �V}�����Z�|��y�Z�|��4�]������aҤ����f�~��"������4z��\n���������� �J��3�f&���-Mx$^���z�.��48��3����u0���0���6���������J����;�d�.��b����7�ki��*�ki��K�ki��u���� �����3�2kY���2kY���2kY��@ky���n�kY����kY�� �kY��������+��օ��2��I���:�I���$�I���K�I�����I���%I�I���&B�I���0��I���2��6�����ϕ��=��W��n�JH�� ��JH����JH��������֓����"����2h)���2h)���2h)��|2kY��/2kY��A@�b��,8g�^��*4uJ>�����^��9U�����,��n��$,�N%����N%��"1�^��/Q�9\��8�F���2a���-!2kY���2kY���9$��� `@Kb�� �[����Kd����������������.���^��(����#;��.��8�2h9��`2h9��u2h9���L����l����#p�>��/��Z���7��6���cΈ���Έ���@�`��� vM�����M����T����$�r���"������}�����������,�ʨ���ʶ���*��F5��(��m���� #?���%� 2kY��� 2kY�� ?�T��3T JV���:� `3���"� �t���! �v���!K �T����Z �T��� � �T��� �T��� �T���! �T���%� �T���*� �T���1� �T���8 ����+� +-d����%� +-d����1U +-eK����� +-t�.��0r +-�U���+� +-���� +-�e��,� +-� ���(�O~��$�/����6�2h���2h���2h��6E�9��!�E�9��8Hʫ���#����1�ƞ�������1d��*[;e��^;e���;e��mvx���'�x����������W�N��= ���� (���0 (����0 (����� (����s (���� c�^��.� oEK��0� ��/��7. �7T��*� ����? ����&�'����g���� �.��&p)�E��!�e���f۾���f۾��';��n��-zi��<N���h�mKbkcϋ�YN-���z T�������Detect scanners, please waiting���DetectPageWidget���bkc��������Scanner���DetectPageWidget��� ++<�d��!�`���B�����D��T��E�����[�����[��% ��[��6*��1��%���E�����E���"��E������G���0���S���*���\���8���_���"D�h�������� f��������`��*R����&e�֍��&�����r����L��0��&��H5���H5��5B�L���5p�����\���� ���e��"��e��8���s��#^�,D���0%�G����&�H,�����H,���1�I�~�� ��I����)S�J6�����J6����J6����J6���#��J6���&?�J6���.��J6���/��J6���1��Jcb����Jcb����PFE��(M�V}���I�Z�|���Z�|��2w�]����k�aҤ��M�f�~���������2���\n���������? �J��2;f&���+�x$^���z�.��2���3��<�u0��e0�������������{J����:Zd�.��2������ki����ki����ki������ ����1�2kY��[2kY��H2kY���ky�����kY����kY����kY��a�����*"�օ��15�I��� ++�I�����I�����I�����I���#��I���$��I���/l�I���1g�6����ϕ�����W��>�JH�� /�JH��m�JH��}�������֓���"����2h)���2h)��|2h)��"2kY���2kY���@�b��*|g�^��(xuJ>�����^��7������+ ++�n��"p�N%��,�N%�� u�^��-��9\��6�F���0�a���+e2kY��V2kY��R9$����@Kb�� �d����������������,���^�����n�������!��.��7*2h9��"2h9��2h9���L���5l����!Kp�>��.1�Z���6V�6���3Έ���Έ�����`��� FM�����M�����T����#r���!�����?�����J�����*�ʨ����ʶ���(��F5��&��m���R #?���$B 2kY��� 2kY��� ?�T��1� JV���9 `3��� � �t���� �v���� �T���� �T���� �T���$ �T���(� �T���.� �T���/� �T���6� ����)� ++d����#� ++d����/� ++eK����Z ++t�.��.� ++�U���)� ++����y ++�e��+6 ++� ���'O~��"�/����4�2h���2h���2h���E�9�� 4E�9��6�����0Lƞ��V���E1d��(�;e��;e��6;e���vx���%�x������N��� (���� (���� � (����I (���� (����x c�^��-% oEK��/3 ��/��5� �7T��) ���� ����%7'����g������.��$�)�E���e���f۾��Rf۾��%��n��+�i��:����h�mKbkcϋ�YN-���z T�������Detect scanners, please waiting���DetectPageWidget��� + ��c�bkc�N��������Connect���FailedPageWidget���e�S�u(bkc�NꋾY�������No available scan devices���FailedPageWidget���e�lՋ�R+R0e�g,0���͋�0�������"Unable to read text, please retrey���ImageOperationOCR���QsN��������Dialog���KYCAboutDialog��� ]��c�bkcϋ�Y�p�Q�c ��_�Y�bkc��������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget���0g*h�mKR0bkc�N����c�Qee�v�bkc�N�N�R7e���YR�h0�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���e�v�bkc�N�c�QeN��������!A new Scanner has been connected.��� + MainWidget����fTJ�������Alert��� + MainWidget���S�m��������Cancel��� +@@ -26,12 +28,11 @@ MainWidget���bkc + MainWidget����bkc�Y1�%���h�g�`�v�bkc�N�bRcbQvN�bkc�N�0Y�g���~�~�Ou(bkc�N����SUQ� � �y �R7e�R�hN��e�T/R���Y0� + bkc�Y1�%���h�g�`�v�bkc�N�bRcbQvN�bkc�N�0Y�g���~�~�Ou(bkc�N����SUQ� � �y �R7e�R�hN��e�T/R���Y0��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� + MainWidget���bkc�d�O\]�~ψ�S�m���������"Scan operation has been cancelled.��� +-MainWidget���bkc��������Scanner��� + MainWidget����h�mKR0|�~�waw �/waw 0N:xnO�bkc�N�v�kc^8Ou(���SUQ� ��e�T/R� N��e�T/R�bkc�N�^�u(z^�0Y�g���~�~�d�O\bkc�v�V�P����SUQ� S�m� �OFbkc�v�QsR���\��y�u(�^vW(��e�T/R�TueH0������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� + MainWidget���g*h�mKR0bkc�N��������Scanner not detected���NoDeviceWidget���S�m��������Cancel���NoMailDialog���Qs���������Close���NoMailDialog���S�[����������Install���NoMailDialog���e���N�[�b7z��������No email client���NoMailDialog���<h�mKR0_SRM|�~�l�g [��Ő�N�[�b7z����QHN�}^v[��Ő�N�[�b7z�0�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� S̗b������� +-ADF Duplex���QApplication�����R��������Auto���QApplication���e�l�bS_�bkc�N��������Fail to open the scanner���QApplication���^sg_�������Flatbed���QApplication���Y�ubkc��������Multiple���QApplication���kcW(R7e�R�h0��{I_�bR�O�`o0�������CRefreshing list. Please wait for the refresh success information...���QApplication���bkc��������Scanner���QApplication���kcW(h�mKbkc�N��������Scanner is on detecting...���QApplication���SU�ubkc��������Single���QApplication���u(b7������� User���QObject���"]�~�bS_�bkc�^�u(�Q�k!bS_�\OQs���������3 has already opened kylin-scanner, open will close ���QObject���v�d�O\0f/T&~�~��������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject�����~�_�������ADF���QObject��� ++ADF Duplex���QApplication�����R��������Auto���QApplication���e�l�bS_�bkc�N��������Fail to open the scanner���QApplication���^sg_�������Flatbed���QApplication���Y�ubkc��������Multiple���QApplication���kcW(R7e�R�h0��{I_�bR�O�`o0�������CRefreshing list. Please wait for the refresh success information...���QApplication���bkc��������Scanner���QApplication���kcW(h�mKbkc�N��������Scanner is on detecting...���QApplication���SU�ubkc��������Single���QApplication����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject�����~�_�������ADF���QObject��� + �A�D�F�̗b�������ADF Back���QObject����A�D�F� S̗b������� +-ADF Duplex���QObject����A�D�F� kc�b������� ADF Front���QObject�����R��������Auto���QObject���_i�r�������Color���QObject���v�RM�������Current ���QObject����؋�|{W��������Default Type���QObject���^sg_�������Flatbed���QObject���pp^��������Gray���QObject�����v}�������Lineart���QObject�������������Question���QObject���S�m��������Cancel��� RunningDialog���Qs���������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� ++ADF Duplex���QObject����A�D�F� kc�b������� ADF Front���QObject�����R��������Auto���QObject���_i�r�������Color���QObject����؋�|{W��������Default Type���QObject���^sg_�������Flatbed���QObject���pp^��������Gray���QObject���[��ō�e��������Install timeout.���QObject�����v}�������Lineart���QObject���S�m��������Cancel��� RunningDialog���Qs���������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� + SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� + SaneObject����1�5�0� �d�p�i�������150 dpi��� + SaneObject����2�0�0� �d�p�i�������200 dpi��� +@@ -54,13 +55,13 @@ ScanDialog���Qs + ScanDialog���Y�ubkc��������Multiple��� + ScanDialog���kcW(bkcϘuep��������Number of pages scanning: ��� + ScanDialog���bkc��������Scanner��� +-ScanDialog���P]�[XW(�f/T&����v�[��Y�g�`�kcW(bg�LY�ubkc��S��O[���YN*e�N�����v�0���(aN��������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget�����~�_�������ADF���ScanSettingsWidget����fTJ�������Alert���ScanSettingsWidget���_i�r�������Color���ScanSettingsWidget������r�������Colour���ScanSettingsWidget���v�RMu(b7l�g gC�Pf�e9v�_U�������5Currently user has no permission to modify directory ���ScanSettingsWidget�����Y�������Device���ScanSettingsWidget���� S�v���_�N [XW(��������File path that does not exist: ���ScanSettingsWidget���e�N������������ File settings���ScanSettingsWidget���^sg_�������Flatbed���ScanSettingsWidget���^sgbkc�j!_N e/cYk!bkc�0�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���h<_�������Format���ScanSettingsWidget���pp^��������Gray���ScanSettingsWidget�����v}�������Lineart���ScanSettingsWidget���Sѐ��N��������Mail to���ScanSettingsWidget���Y�ubkc��������Multiple���ScanSettingsWidget���T y��������Name���ScanSettingsWidget����uep�������Pages���ScanSettingsWidget���� S�v���_�`�l�g ��S�gC�P��������Path without access rights: ���ScanSettingsWidget���R��s�������� +-Resolution���ScanSettingsWidget���_SRMbkc�R��s�N:zz��������Resolution is empty!���ScanSettingsWidget���bkcρ��������Save���ScanSettingsWidget���S�[XN:�������Save As���ScanSettingsWidget���S�[XN:�������Save as���ScanSettingsWidget���bkc��������Scanner���ScanSettingsWidget��� ++ScanDialog���P]�[XW(�f/T&����v�[��Y�g�`�kcW(bg�LY�ubkc��S��O[���YN*e�N�����v�0���(aN��������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget�����~�_�������ADF���ScanSettingsWidget���_i�r�������Color���ScanSettingsWidget������r�������Colour���ScanSettingsWidget���v�RMu(b7l�g gC�Pf�e9v�_U�������5Currently user has no permission to modify directory ���ScanSettingsWidget�����Y�������Device���ScanSettingsWidget���� S�v���_�N [XW(��������File path that does not exist: ���ScanSettingsWidget���e�N������������ File settings���ScanSettingsWidget���^sg_�������Flatbed���ScanSettingsWidget���^sgbkc�j!_N e/cYk!bkc�0�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���h<_�������Format���ScanSettingsWidget���pp^��������Gray���ScanSettingsWidget�����v}�������Lineart���ScanSettingsWidget���Sѐ��N��������Mail to���ScanSettingsWidget���Y�ubkc��������Multiple���ScanSettingsWidget���T y��������Name���ScanSettingsWidget����uep�������Pages���ScanSettingsWidget���� S�v���_�`�l�g ��S�gC�P��������Path without access rights: ���ScanSettingsWidget���R��s�������� ++Resolution���ScanSettingsWidget���_SRMbkc�R��s�N:zz��������Resolution is empty!���ScanSettingsWidget���bkcρ��������Save���ScanSettingsWidget���S�[XN:�������Save As���ScanSettingsWidget���S�[XN:�������Save as���ScanSettingsWidget��� + bkc�NꋾY�������Scanner device���ScanSettingsWidget���� b�v�_U�������Select a directory���ScanSettingsWidget���SU�ubkc��������Single���ScanSettingsWidget���\:[��������Size���ScanSettingsWidget���_�Y�bkc�������� + Start Scan���ScanSettingsWidget���[XP�e�g,������� + Store text���ScanSettingsWidget���e�N�������� The file ���ScanSettingsWidget���*kdR��s�����_��e���bM��bkc����N�~Ɛ b�0�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget���|{W��������Type���ScanSettingsWidget���f/�������Yes���ScanSettingsWidget���N ��ST+[W{&� �/� 0�������cannot contain '/' character.���ScanSettingsWidget���N ��[XN:����e�N�0�������cannot save as hidden file.���ScanSettingsWidget����s�c�a�n�n�e�r�0�1������� scanner01���ScanSettingsWidget���c�y:�������tips���ScanSettingsWidget���S�m��������Cancel���SendMailDialog���Qs���������Close���SendMailDialog���xn���������Confirm���SendMailDialog���bkc��������Scanner���SendMailDialog���� b鐮N�[�b7z��������Select email client���SendMailDialog���S�m��������Cancel���ShowImageWidget���S�m�N-�.�.�.��{I_��.�.�.�������Canceling...Please waiting...���ShowImageWidget���xn[��������Ok���ShowImageWidget���N��.�SN-� �.�.�.�������Running beauty ...���ShowImageWidget���fz��~�PON-� �.�.�.�������Running rectify ...���ShowImageWidget��� + O�[XT��Q�������� +-&Save Exit���TitleBar�����������...���TitleBar���QsN��������About���TitleBar���Qs���������Close���TitleBar�����Q��������Exit���TitleBar���h��h�������Form���TitleBar���^.R��������Help���TitleBar���g�Y'S�������Maximize���TitleBar���n�M�e�s�s�a�g�eW(\@W�QN-c�O�e�g,�JY)T�e�N�O ��R���0l�g _ʼn�g�^�g R�Vh0[�e/cYN�Te�N�N��^v^v�LSѐT�c�e60��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���g�\S�������Minimize���TitleBar���� �y�������Option���TitleBar���R7e�R�h�������Refresh List���TitleBar�����S��������Restore���TitleBar���bkc��������Scanner���TitleBar���v�c���Q��������Straight &Exit���TitleBar���_SRMe�N�g*O�[X0O``�O�[X[�T��������6The current file is not saved. Do you want to save it?���TitleBar���rHg,�������� Version: ���TitleBar�������bkc�������� kylin-scanner���TitleBar���N��.�S�������Beauty��� ToolBarWidget�����R�������Crop��� ToolBarWidget���l4^s�\P��������Mirror��� ToolBarWidget���e�[W��R+�������OCR��� ToolBarWidget���fz��~�PO�������Rectify��� ToolBarWidget���eˏl�������Rotate��� ToolBarWidget���l4Sp������� Watermark��� ToolBarWidget���e>Y'�������ZoomIn��� ToolBarWidget���)\�������ZoomOut��� ToolBarWidget���^bkc�N�]�e�_���c�0Y�g�`�W(bkc�e�e�_�bkc�N�v���c����SUQ� S�m�bkc� b{I_�bkc�N�b�TJ���m�`o0��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���]��c�e�v�bkc�N�0�������New Scanner has been Connected.���UsbHotplugThread��� kcW(g��bkc�NꋾY0��z P000�������+Querying scanner device. Please waitting...���UsbHotplugThread���4bkc�N�kcW(e�_���c��kcW(R7e�bkc�N�R�h0��z P000�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���bkc�z^�R�hR7e�[�b0�������Scanner list refresh complete.���UsbHotplugThread���Qs���������Close���WaittingDialog���kcW(d}"bkc�N��.�.�.�������Searching for scanner...���WaittingDialog���m�R�l4Sp������� Add watermark���WatermarkDialog���S�m��������Cancel���WatermarkDialog���Qs���������Close���WatermarkDialog���xn���������Confirm���WatermarkDialog���bkc��������Scanner���WatermarkDialog���e�N�T �������Filename���main�������bkcϋ�n�u�b�������Hide scan settings widget���main���bS_�e�N�� �<�f�i�l�e�n�a�m�e�>�������Open file <filename>���main���m�R��������Add���newDeviceListPage����fTJ�������Alert���newDeviceListPage���N ++&Save Exit���TitleBar�����������...���TitleBar���QsN��������About���TitleBar���Qs���������Close���TitleBar�����Q��������Exit���TitleBar���h��h�������Form���TitleBar���^.R��������Help���TitleBar���g�Y'S�������Maximize���TitleBar���n�M�e�s�s�a�g�eW(\@W�QN-c�O�e�g,�JY)T�e�N�O ��R���0l�g _ʼn�g�^�g R�Vh0[�e/cYN�Te�N�N��^v^v�LSѐT�c�e60��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���g�\S�������Minimize���TitleBar���� �y�������Option���TitleBar���R7e�R�h�������Refresh List���TitleBar�����S��������Restore���TitleBar���bkc��������Scanner���TitleBar���v�c���Q��������Straight &Exit���TitleBar���_SRMe�N�g*O�[X0O``�O�[X[�T��������6The current file is not saved. Do you want to save it?���TitleBar���rHg,�������� Version: ���TitleBar�������bkc�������� kylin-scanner���TitleBar���N��.�S�������Beauty��� ToolBarWidget�����R�������Crop��� ToolBarWidget���l4^s�\P��������Mirror��� ToolBarWidget���e�[W��R+�������OCR��� ToolBarWidget���fz��~�PO�������Rectify��� ToolBarWidget���eˏl�������Rotate��� ToolBarWidget���l4Sp������� Watermark��� ToolBarWidget���e>Y'�������ZoomIn��� ToolBarWidget���)\�������ZoomOut��� ToolBarWidget���^bkc�N�]�e�_���c�0Y�g�`�W(bkc�e�e�_�bkc�N�v���c����SUQ� S�m�bkc� b{I_�bkc�N�b�TJ���m�`o0��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���]��c�e�v�bkc�N�0�������New Scanner has been Connected.���UsbHotplugThread��� kcW(g��bkc�NꋾY0��z P000�������+Querying scanner device. Please waitting...���UsbHotplugThread���4bkc�N�kcW(e�_���c��kcW(R7e�bkc�N�R�h0��z P000�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���bkc�z^�R�hR7e�[�b0�������Scanner list refresh complete.���UsbHotplugThread���Qs���������Close���WaittingDialog���bkc��������Scanner���WaittingDialog���kcW(d}"bkc�N��.�.�.�������Searching for scanner...���WaittingDialog���m�R�l4Sp������� Add watermark���WatermarkDialog���S�m��������Cancel���WatermarkDialog���Qs���������Close���WatermarkDialog���xn���������Confirm���WatermarkDialog���bkc��������Scanner���WatermarkDialog���e�N�T �������Filename���main�������bkcϋ�n�u�b�������Hide scan settings widget���main���bS_�e�N�� �<�f�i�l�e�n�a�m�e�>�������Open file <filename>���main���m�R��������Add���newDeviceListPage����fTJ�������Alert���newDeviceListPage���N + N�ke�������Before���newDeviceListPage���S�m��������Cancel���newDeviceListPage���Qs���������Close���newDeviceListPage�����YR�h�������Device List���newDeviceListPage��� + ��YT y���������Device Name:���newDeviceListPage��� + �qR�T y���������Driver Name:���newDeviceListPage���S�[����������Install���newDeviceListPage���[���Y1�%�������Installation failed.���newDeviceListPage����[���bR�0O``�s�W(Ou(��N*bkc�N�T�SUQ� Ou( ��n�u�d�e�v�����{�tTX[�x� ^v��e�T/R�bkc�^�u(z^�N�R7e���YR�h0Y�g�N͉�~�~�d�O\bkc�v�V�P��R����bKR���e�T/R�^vOu(bkc�R���0������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���[��ŚqR��.�.�.�������Installing driver...���newDeviceListPage���T y��������Name���newDeviceListPage���NN�ke�������Next���newDeviceListPage���*l�g S�u(v��qR�z^��f/T&bKR�m�R��qR�z^���������:No available drivers, do you want to manually add drivers?���newDeviceListPage���xn[��������Ok���newDeviceListPage���bSSpg:�������Printer���newDeviceListPage���bkc��������Scanner���newDeviceListPage���� b�v�_U�������Select a directory���newDeviceListPage���h���������Symbol���newDeviceListPage���6��N*�qR�z^�ge��{,N e��S��O[���N�N�N SmKv�~�g�0�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage���>kd�qR�z^�u1R6� UFc�O�0���T|���Yv�v�^�R6� UFN僷S֚qR�z^�0��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage���|{W��������Type���newDeviceListPage���Ou(�������Use���newDeviceListPage���d`�����bKR�xn��R�hN-ST+v�bSSpg:��Yf/T&N:bkc�bSSpN�OSg:0Y�g�[�N�N f/bkc�T�bSSpN�OSg:���_�ue[�N�0��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���e�hckcW(e�[W��R+N-� & &�������,The document is in character recognition ...��� showOcrWidget +\ No newline at end of file +diff --git a/translations/kylin-scanner_zh_CN.ts b/translations/kylin-scanner_zh_CN.ts +index 3deabb2..74f0cf5 100644 +--- a/translations/kylin-scanner_zh_CN.ts ++++ b/translations/kylin-scanner_zh_CN.ts +@@ -112,12 +112,7 @@ + <translation type="vanished">检测扫描设备中,请稍后 ……</translation> + </message> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation>扫描</translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> + <translation>检测扫描设备中,请稍后</translation> + </message> +@@ -202,10 +197,8 @@ + <translation type="vanished">麒麟扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation>扫描</translation> ++ <translation type="vanished">扫描</translation> + </message> + <message> + <source>Yes</source> +@@ -236,7 +229,7 @@ + <translation type="vanished">单页扫描</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> + <translation>非法参数,请更改扫描参数或切换到其他扫描仪。</translation> + </message> +@@ -245,7 +238,7 @@ + <translation type="vanished">错误码:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> + <translation>扫描失败,请检查您的扫描仪或切换其他扫描仪。如果要继续使用扫描仪,请单击“选项”,刷新列表以重新启动设备。 + 扫描失败,请检查您的扫描仪或切换其他扫描仪。如果要继续使用扫描仪,请单击“选项”,刷新列表以重新启动设备。</translation> +@@ -255,12 +248,12 @@ + <translation type="vanished">检测到用户手动休眠。请检查扫描仪状态。如果扫描无法继续,则需要手动单击“取消”或刷新列表以恢复设备扫描功能。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> + <translation>警告</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> + <translation>新的扫描仪接入了</translation> + </message> +@@ -269,67 +262,67 @@ + <translation type="vanished">错误码:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> + <translation>确定</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> + <translation>设备正忙,请耐心等待或切换到其他扫描仪。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> + <translation>扫描件为空,请放置扫描件重新扫描。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> + <translation>扫描操作已经被取消!</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> + <translation>扫描失败,不支持此操作</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> + <translation>扫描失败,卡纸。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> + <translation>扫描失败,IO错误</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> + <translation>扫描失败,数据溢出</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> + <translation>扫描失败,对资源的访问被拒绝。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> + <translation>扫描失败,扫描仪盖打开。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> + <translation>检测到系统睡眠/睡眠。为确保扫描仪的正常使用,请单击“重新启动”以重新启动扫描仪应用程序。如果要继续操作扫描的图像,请单击“取消”,但扫描相关功能将被禁用,并在重新启动后生效。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> + <translation>重启</translation> + </message> +@@ -338,12 +331,12 @@ + <translation type="vanished">扫描失败,请检查当前扫描仪连接或切换到其他扫描仪。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> + <translation>一键美化中 ...</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> + <translation>智能纠偏中 ...</translation> + </message> +@@ -359,9 +352,9 @@ + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> + <translation>无邮件客户端</translation> + </message> +@@ -370,22 +363,22 @@ + <translation type="vanished">扫描</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> + <translation>检测到当前系统没有安装邮件客户端,请先下载并安装邮件客户端。</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> + <translation>去安装</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -407,17 +400,21 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> + <translation>ADF 双面</translation> + </message> +@@ -426,26 +423,26 @@ + <translation type="vanished">打开扫描仪失败,错误代码</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> + <translation>无法打开扫描仪</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> + <translation>自动</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> + <translation>多页扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> + <translation>平板式</translation> + </message> +@@ -460,7 +457,7 @@ + <translation>正在检测扫描仪</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> + <translation>单页扫描</translation> + </message> +@@ -472,147 +469,146 @@ + <translation type="vanished">用户</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation>询问</translation> ++ <translation type="vanished">询问</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation>目前</translation> ++ <translation type="vanished">目前</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation>用户</translation> ++ <translation type="vanished">用户</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation>已经打开扫描应用,再次打开将会关闭</translation> ++ <translation type="vanished">已经打开扫描应用,再次打开将会关闭</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation>的操作。是否继续?</translation> ++ <translation type="vanished">的操作。是否继续?</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> + <translation>彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> + <translation>灰度</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> + <translation>黑白</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> + <translation>默认类型</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> + <translation>平板式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translation>馈纸式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> + <translation>ADF 正面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> + <translation>ADF背面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> + <translation>ADF 双面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> + <translation>自动</translation> + </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>安装超时</translation> ++ </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -620,12 +616,12 @@ + <context> + <name>SaneObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> + <translation>默认类型</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> + <translation>平板式</translation> + </message> +@@ -635,17 +631,17 @@ + <translation>刷新列表成功</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> + <translation>馈纸式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> + <translation>ADF 正面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> + <translation>ADF 背面</translation> + </message> +@@ -662,7 +658,7 @@ + <translation type="vanished">彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> + <translation>ADF 双面</translation> + </message> +@@ -671,47 +667,47 @@ + <translation type="vanished">自动</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> +@@ -723,18 +719,17 @@ + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> + <translation>正在扫描页数:</translation> +@@ -744,7 +739,7 @@ + <translation type="vanished">正在扫描页数:</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -766,7 +761,7 @@ + <translation type="vanished">开始扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> + <translation>扫描仪设备</translation> + </message> +@@ -775,95 +770,94 @@ + <translation type="vanished">延时</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> + <translation>文件预设</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> + <translation>设备</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> + <translation>选择目录</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> + <translation>目前用户没有权限更改目录</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> + <translation>平板扫描模式不支持多次扫描。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> + <translation>多页扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> + <translation>此分辨率需要很长时间才能扫描,请仔细选择。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation>警告</translation> ++ <translation type="vanished">警告</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> + <translation>页数</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> + <translation>类型</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> + <translation>彩色</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> + <translation>分辨率</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> + <translation>尺寸</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> + <translation>格式</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> + <translation>名称</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> + <translation>scanner01</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> + <translation>扫描至</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> + <translation>发送邮件</translation> + </message> +@@ -872,9 +866,9 @@ + <translation type="vanished">发送至邮箱</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> + <translation>另存为</translation> + </message> +@@ -883,25 +877,25 @@ + <translation type="vanished">无可用设备</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> + <translation>单页扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> + <translation>1200 dpi</translation> + </message> +@@ -910,44 +904,44 @@ + <translation type="vanished">该分辨率将会花费很长时间扫描,请谨慎选择!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> + <translation>不能包含字符 / 。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> + <translation>不能存为隐藏文件。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> + <translation>另存为</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> + <translation>选取的路径您没有读取权限:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> + <translation>选取的路径不存在:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> + <translation>已存在,是否要覆盖它?如果您正在执行多页扫描,可能会导致多个文件被覆盖。请谨慎!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> + <translation>开始扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> + <translation>存储文本</translation> + </message> +@@ -956,7 +950,7 @@ + <translation type="vanished">另存为</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> + <translation>文件</translation> + </message> +@@ -965,12 +959,12 @@ + <translation type="vanished">已存在,您想覆盖它吗?</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> + <translation>提示</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> + <translation>颜色</translation> + </message> +@@ -995,18 +989,18 @@ + <translation type="vanished">15 秒</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> + <translation>平板式</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> + <translation>馈纸式</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> + <translation>灰度</translation> + </message> +@@ -1015,38 +1009,38 @@ + <translation type="vanished">取消</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> + <translation>黑白</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> + <translation>当前扫描分辨率为空!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> + <translation>A4</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> + <translation>A5</translation> + </message> +@@ -1055,12 +1049,11 @@ + <translation type="vanished">扫描文档名称的长度不能超过252。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>扫描</translation> ++ <translation type="vanished">扫描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> + <translation>是</translation> + </message> +@@ -1095,30 +1088,30 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> + <translation>选择邮件客户端</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> + <translation>确认</translation> + </message> +@@ -1126,27 +1119,27 @@ + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> + <translation>确定</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> + <translation>取消中...请等待...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> + <translation>一键美化中 ...</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> + <translation>智能纠偏中 ...</translation> + </message> +@@ -1166,7 +1159,7 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> +@@ -1258,56 +1251,56 @@ + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> + <translation>一键美化</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> + <translation>智能纠偏</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> + <translation>文字识别</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> + <translation>裁切</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> + <translation>旋转</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> + <translation>水平镜像</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> + <translation>水印</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> + <translation>放大</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> + <translation>缩小</translation> + </message> +@@ -1359,12 +1352,17 @@ + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>扫描</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> + <translation>正在搜索扫描仪...</translation> + </message> +@@ -1372,27 +1370,27 @@ + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> + <translation>关闭</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> + <translation>添加水印</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> + <translation>确认</translation> + </message> +@@ -1400,17 +1398,17 @@ + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> + <translation>打开文件 <filename></translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> + <translation>文件名</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> + <translation>隐藏扫描设置页面</translation> + </message> +@@ -1434,8 +1432,8 @@ + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> + <translation>警告</translation> + </message> +@@ -1457,8 +1455,8 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -1478,53 +1476,53 @@ + <translation>去安装</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> + <translation>扫描</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> + <translation>打印机</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> + <translation>设备名称:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> + <translation>驱动名称:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> + <translation>这个驱动程序来自第三方,可能会导致一些不可预测的结果。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> + <translation>此驱动程序由制造商提供。请联系设备的相应制造商以获取驱动程序。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> + <translation>没有可用的驱动程序,是否手动添加驱动程序?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> + <translation>添加</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> + <translation>安装驱动...</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> + <translation>安装成功。你想现在使用这个扫描仪吗?单击“使用”重置udev(需要管理员密码)并重新启动扫描应用程序以刷新设备列表。如果仍要继续操作扫描的图像,则需要手动重新启动并使用扫描功能。</translation> + </message> +@@ -1533,22 +1531,22 @@ + <translation type="vanished">安装成功。你想现在使用这个扫描仪吗?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> + <translation>使用</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> + <translation>安装失败</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> + <translation>确定</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> + <translation>选择目录</translation> + </message> +diff --git a/translations/kylin-scanner_zh_HK.qm b/translations/kylin-scanner_zh_HK.qm +index 94ef6cb..489ee1f 100644 +--- a/translations/kylin-scanner_zh_HK.qm ++++ b/translations/kylin-scanner_zh_HK.qm +@@ -1,35 +1,40 @@ +-<�d��!�`���B����[��`��[�� ��[��.���E������E������E���"��G���+���S���%���\���/���_��������������� ���`��%*����!;�֍��!`����b�������0��!��H5����H5��-��L���.����������~��e��S��e��/j��s��^�%���� +-E�,D���*��G���� ��H,�����H,���R�H,���+��I����$-�J6����J6����J6�����J6�����J6���!�J6���)b�J6���*D�J6���,?�Jcb�� ��Jcb����PFE��#'�V}�����Z�|��@�Z�|��-!�]�����aҤ��l�f�~���������� �J��,�f&���&kx$^���z�.��-R��3����u0��70���T���������'J����/�d�.�������Y�ki����ki����ki������������,�2kY��%2kY��*2kY���ky�����kY����kY����kY��/�����$��օ��+��I�����I�����I�����I���^�I�����I�����I���*�I���,�6�����ϕ��[��W�����JH��N�JH�� 7�JH��S֓����"���F2h)��V2h)��^2h)���2kY���2kY���@�b��%Tg�^��#R�����%��n����N%�� +-�N%��I�^��(k�9\��/:F���+8a���&?2kY�� 2kY��49$����[���� +-�d�����������0����'�2h9���2h9���2h9��kL��� l����p�>��) �6����Έ��� Έ�����`���+M���� iM�����r��������� ����� �����%�ʶ���#��F5��!� #?���B 2kY��� 2kY��� ?�T��,l `3���� �t���- �v���a �T���| �T��� � �T���z �T���� �T��� �T���#� �T���*� ����$� +-d����� +-d����*o ++<�d��!�`���B�����D�����E�����[�����[��$y��[��5���1��%U��E������E������E���&��G���0;��S���*��\���8c��_���!��h���������������\��`��)�����%��֍��%�������������0��&�H5����H5��4��L���4����������� ��e��!���e��85��s��"��,D���/��G����%{�H,�����H,���0h�I�~�� �I����(��J6���u�J6�����J6�����J6���#�J6���%��J6���-��J6���.��J6���0��Jcb����Jcb��V�PFE��'��V}�����Z�|����Z�|��1��]����_�aҤ����f�~���������2P��\n���������� �J��1�f&���*�x$^���z�.��2��3����u0���0���(����X�����J����9�d�.��2����-�ki��z�ki��}�ki������������1_2kY���2kY���2kY��^ky���`�kY��N�kY��?�kY��������)��օ��0��I����I���J�I����I����I���"��I���#��I���.��I���0��6�����ϕ��/��W��2�JH����JH����JH����������֓����"����2h)��2h)��2h)���2kY��2kY��s@�b��)�g�^��'�uJ>�����^��7C�����*l�n��!��N%����N%����^��,��9\��6xF���/�a���*�2kY���2kY���9$���T@Kb�� d����������������,-��^�����n��"���� ���.��6�2h9���2h9���2h9��L��� �l���� �p�>��-��Z���5��6���/Έ����Έ���f�`����M����-M����2T����"�r��� ������������������*;ʨ����ʶ���(4�F5��&6�m���< #?���#� 2kY��I 2kY��I ?�T��1& JV���8� `3��� M �t��� �v���5 �T���= �T���$ �T���#v �T���(\ �T���. �T���/X �T���6 ����)* ++d����#H ++d����/) + eK����V +-t�.��)� +-�U���$� +-����) +-�e��& +-� ���!�O~��/����-�2h��Q2h��h2h���E�9��E�9��.�ʫ��������*����1d��#y;e���;e��;e���vx��� �x���������� ��N�� � ��� +-j (���� (����� (����9 (����� (���� c�^��'� oEK��)� ��/��.D �7T��#� ����� ���� ?'����g������.���)�E���e���f۾���f۾�� ��n��&�i��0-���j�n,c�c�Q����z P�������Detect scanners, please waiting���DetectPageWidget����#c��������Connect���FailedPageWidget���l�g S�u(v�c�cϊ-P��������No available scan devices���FailedPageWidget���\ �q�������Dialog���KYCAboutDialog���&�#c�c�c�Q����c N�Nc�c�c ���Y�c�c�0�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget���0g*j�n,R0c�c�Q����c�Qee�v�c�c�Q�N��~j�-P�nU�0�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���]�#c�e�v�c�c�Q�0�������!A new Scanner has been connected.��� ++t�.��.F ++�U���)V ++����� ++�e��*� ++� ���&aO~��"</����4n2h��2h��2h��TE�9���E�9��68����/�ƞ��@����1d��(;e�� �;e���;e��gvx���%$x�����N��k (���P (���� R (����� (����� (����� c�^��,� oEK��.� ��/��5 �7T��(� ���� ����$�'����g����1�.��$)�E��ie��f۾��Jf۾��$���n��+"i��:J���j�n,c�c�Q����z P�������Detect scanners, please waiting���DetectPageWidget����#c��������Connect���FailedPageWidget���l�g S�u(v�c�cϊ-P��������No available scan devices���FailedPageWidget���q!lՋXR%e�[W��ˑ͊f�������"Unable to read text, please retrey���ImageOperationOCR���\ �q�������Dialog���KYCAboutDialog���&�#c�c�c�Q����c N�Nc�c�c ���Y�c�c�0�������=Connect scanners, please click scan button to start scanning.���LeftSuccessPageWidget���0g*j�n,R0c�c�Q����c�Qee�v�c�c�Q�N��~j�-P�nU�0�������FNo scanner detected, plug in a new scanner to refresh the device list.���LeftSuccessPageWidget���]�#c�e�v�c�c�Q�0�������!A new Scanner has been connected.��� + MainWidget����f���������Alert��� + MainWidget���S�m��������Cancel��� + MainWidget���"�-P�kc_����z PbRc�QvN�c�c�Q�0�������2Device busy, please wait or switch other scanners.��� + MainWidget���,j�hH�K�Vh]�u([�j�hH���e>nj�hHN&��e�c�c�0�������EDocument feeder out of documents, please place papers and scan again.��� + MainWidget���(S�exq!eH���f�e9S�exbRc�QvN�c�c�z_0�������CInvalid argument, please change arguments or switch other scanners.��� + MainWidget���x�[��������Ok��� ++MainWidget�����e�U_R��������Restart��� + MainWidget��� + N��u�SN-�������Running beauty ...��� + MainWidget��� + fzag|�PON-�������Running rectify ...��� ++MainWidget���c�c�Y1eW�n�e�N�d�O\��y�kb�������0Scan failed, Access to resource has been denied.��� ++MainWidget���c�c�Y1eW�Sa}�������$Scan failed, Document fedder jammed.��� ++MainWidget���c�c�Y1eW��I�O�/���������%Scan failed, Error during device I/O.��� ++MainWidget���c�c�Y1eW�Qg[Xn�Q��������Scan failed, Out of memory.��� ++MainWidget���c�c�Y1eW�c�c�Q�N ++��bS���������#Scan failed, Scanner cover is open.��� ++MainWidget���c�c�Y1eW�N e/ckdd�O\�������(Scan failed, operation is not supported.��� + MainWidget���nc�c�Y1eW���j�g�`�v�c�c�Q�bRc�QvN�c�c�Q�0� Y�g���~|~�Ou(c�c�Q����c N�N �x� ���~jnU�N��e�U_RՊ-P�0��������Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.��� + MainWidget���c�c�d�O\]�S�m�0�������"Scan operation has been cancelled.��� +-MainWidget���c�c�Q��������Scanner��� ++MainWidget����j�n,R0|�}qwaw �/waw 0� p�N�x�O�c�c�Vhv�kc^8Ou(���U�dʑ�e�U_R�N��e�U_R�c�c�Vha�u(z_0� Y�g�`�`�~|~�d�O\c�c�_q�a���U�d� S�m� �OFc�c�v���R���\��y�u(�N&W(��e�U_R�_�ueH0������System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.��� + MainWidget���g*j�n,R0c�c�Q��������Scanner not detected���NoDeviceWidget���S�m��������Cancel���NoMailDialog������������Close���NoMailDialog���[����������Install���NoMailDialog���l�g ��[P��N�u(b6z��������No email client���NoMailDialog���6W(|�}qN-b~N R0��[P��N�u(b6z����QH[��ݖ�[P��N�u(b6z�0�������INot find email client in the system, please install email client firstly.���NoMailDialog����A�D�F� �ٗb������� +-ADF Duplex���QApplication�����R��������Auto���QApplication���^sg_�������Flatbed���QApplication���Y�c�c��������Multiple���QApplication���(kcW(��~jnU�0� ��{I_���~jbR��NJ +-000�������CRefreshing list. Please wait for the refresh success information...���QApplication���c�c�Q��������Scanner���QApplication���c�c�Q�kcW(j�n,000�������Scanner is on detecting...���QApplication���U��c�c��������Single���QApplication���u(b6������� User���QObject���]�bS������c�c�Q��bS��\�ܕ��������3 has already opened kylin-scanner, open will close ���QObject���v�d�O\0� f/T&~|~��������� 's operations. Are you continue?���QObject����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject��� ++ADF Duplex���QApplication�����R��������Auto���QApplication���q!lՕ�U_c�c�Vh�������Fail to open the scanner���QApplication���^sg_�������Flatbed���QApplication���Y�c�c��������Multiple���QApplication���(kcW(��~jnU�0� ��{I_���~jbR��NJ ++000�������CRefreshing list. Please wait for the refresh success information...���QApplication���c�c�Q��������Scanner���QApplication���c�c�Q�kcW(j�n,000�������Scanner is on detecting...���QApplication���U��c�c��������Single���QApplication����1�0�0� �d�p�i�������100 dpi���QObject����1�2�0�0� �d�p�i�������1200 dpi���QObject����1�5�0� �d�p�i�������150 dpi���QObject����2�0�0� �d�p�i�������200 dpi���QObject����2�4�0�0� �d�p�i�������2400 dpi���QObject����3�0�0� �d�p�i�������300 dpi���QObject����4�8�0�0� �d�p�i�������4800 dpi���QObject����6�0�0� �d�p�i�������600 dpi���QObject����7�5� �d�p�i�������75 dpi���QObject����A�D�F�������ADF���QObject��� + �A�D�FS͗b�������ADF Back���QObject����A�D�F� �ٗb������� + ADF Duplex���QObject��� +-�A�D�Fkc�b������� ADF Front���QObject�����R��������Auto���QObject���_i�r�������Color���QObject���v�RM�������Current ���QObject����؊��^W��������Default Type���QObject���^sg_�������Flatbed���QObject���pp^��������Gray���QObject�����v}�������Lineart���QObject����bUO�������Question���QObject���S�m��������Cancel��� RunningDialog������������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� ++�A�D�Fkc�b������� ADF Front���QObject�����R��������Auto���QObject���_i�r�������Color���QObject����؊��^W��������Default Type���QObject���^sg_�������Flatbed���QObject���pp^��������Gray���QObject��� ++[��ݍ�fB0�������Install timeout.���QObject�����v}�������Lineart���QObject���S�m��������Cancel��� RunningDialog������������Close��� RunningDialog����1�0�0� �d�p�i�������100 dpi��� + SaneObject����1�2�0�0� �d�p�i�������1200 dpi��� + SaneObject����1�5�0� �d�p�i�������150 dpi��� + SaneObject����2�0�0� �d�p�i�������200 dpi��� +@@ -53,18 +58,18 @@ ScanDialog���Y + ScanDialog��� + c�cϘex��������Number of pages scanning: ��� + ScanDialog���c�c�Q��������Scanner��� +-ScanDialog���N]�[XW(�f/T&������[��� Y�g�W��LY�c�c��S��g\��YPj�hH������0� �ˋ9aN��������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����K}_�������ADF���ScanSettingsWidget����f���������Alert���ScanSettingsWidget���_i�r�������Color���ScanSettingsWidget����O�r�������Colour���ScanSettingsWidget���uvRMu(b6l�g O�e9v�v��1S�k ++ScanDialog���N]�[XW(�f/T&������[��� Y�g�W��LY�c�c��S��g\��YPj�hH������0� �ˋ9aN��������� already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!���ScanSettingsWidget����1�0�0� �d�p�i�������100 dpi���ScanSettingsWidget����1�2�0�0� �d�p�i�������1200 dpi���ScanSettingsWidget����1�5�0� �d�p�i�������150 dpi���ScanSettingsWidget����2�4�0�0� �d�p�i�������2400 dpi���ScanSettingsWidget����4�8�0�0� �d�p�i�������4800 dpi���ScanSettingsWidget����7�5� �d�p�i�������75 dpi���ScanSettingsWidget����A�4�������A4���ScanSettingsWidget����A�5�������A5���ScanSettingsWidget����K}_�������ADF���ScanSettingsWidget���_i�r�������Color���ScanSettingsWidget����O�r�������Colour���ScanSettingsWidget���uvRMu(b6l�g O�e9v�v��1S�k + �������5Currently user has no permission to modify directory ���ScanSettingsWidget�����n�������Device���ScanSettingsWidget���N [XW(v�j�hH��_���������File path that does not exist: ���ScanSettingsWidget���j�hH�-[�������� File settings���ScanSettingsWidget���^sg_�������Flatbed���ScanSettingsWidget���^sgc�c�j!_N e/cYk!c�c�0�������,Flatbed scan mode not support multiple scan.���ScanSettingsWidget���~=��[�c��������Format���ScanSettingsWidget���pp�r�������Gray���ScanSettingsWidget�����v}�������Lineart���ScanSettingsWidget���\��N�v|�R0�������Mail to���ScanSettingsWidget���Y�c�c��������Multiple���ScanSettingsWidget���T z1�������Name���ScanSettingsWidget����x��������Pages���ScanSettingsWidget���l�g [XS�k + �Pv���_���������Path without access rights: ���ScanSettingsWidget���R��s�������� +-Resolution���ScanSettingsWidget���R��s�p�zz��������Resolution is empty!���ScanSettingsWidget���O�[X�������Save���ScanSettingsWidget���S�[Xp��������Save As���ScanSettingsWidget���S�[Xp��������Save as���ScanSettingsWidget���c�c�Q��������Scanner���ScanSettingsWidget��� ++Resolution���ScanSettingsWidget���R��s�p�zz��������Resolution is empty!���ScanSettingsWidget���O�[X�������Save���ScanSettingsWidget���S�[Xp��������Save As���ScanSettingsWidget���S�[Xp��������Save as���ScanSettingsWidget��� + c�c�Q��-P��������Scanner device���ScanSettingsWidget����xd�v��������Select a directory���ScanSettingsWidget���U��c�c��������Single���ScanSettingsWidget���Y'\�������Size���ScanSettingsWidget�����Y�c�c�������� + Start Scan���ScanSettingsWidget���[XQ2e�[W������� +-Store text���ScanSettingsWidget���e�N�������� The file ���ScanSettingsWidget����^W��������Type���ScanSettingsWidget���x����������Yes���ScanSettingsWidget���N ��ST+ �/ [WQC0�������cannot contain '/' character.���ScanSettingsWidget���q!l�S�[Xp�����e�N�0�������cannot save as hidden file.���ScanSettingsWidget���c�y:�������tips���ScanSettingsWidget���S�m��������Cancel���SendMailDialog������������Close���SendMailDialog����I[��������Confirm���SendMailDialog���c�c�Q��������Scanner���SendMailDialog����xdǖ�[P��N�u(b6z��������Select email client���SendMailDialog���S�m��������Cancel���ShowImageWidget���kcW(S�m�000� ��z P000�������Canceling...Please waiting...���ShowImageWidget���x�[��������Ok���ShowImageWidget��� ++Store text���ScanSettingsWidget���e�N�������� The file ���ScanSettingsWidget���(kd��lze�hH����_��wfB��bM��c�c���ːxd�0�������EThis resolution will take a long time to scan, please choose carelly.���ScanSettingsWidget����^W��������Type���ScanSettingsWidget���x����������Yes���ScanSettingsWidget���N ��ST+ �/ [WQC0�������cannot contain '/' character.���ScanSettingsWidget���q!l�S�[Xp�����e�N�0�������cannot save as hidden file.���ScanSettingsWidget����������� scanner01���ScanSettingsWidget���c�y:�������tips���ScanSettingsWidget���S�m��������Cancel���SendMailDialog������������Close���SendMailDialog����I[��������Confirm���SendMailDialog���c�c�Q��������Scanner���SendMailDialog����xdǖ�[P��N�u(b6z��������Select email client���SendMailDialog���S�m��������Cancel���ShowImageWidget���kcW(S�m�000� ��z P000�������Canceling...Please waiting...���ShowImageWidget���x�[��������Ok���ShowImageWidget��� + N��u�SN-�������Running beauty ...���ShowImageWidget��� + fzag|�PON-�������Running rectify ...���ShowImageWidget��� + O�[X_���Q�������� +-&Save Exit���TitleBar�����e��������About���TitleBar������������Close���TitleBar����ܕ��������Exit���TitleBar���j�LR�������Form���TitleBar���^kR��������Help���TitleBar���g�Y'S�������Maximize���TitleBar���r�M�e�s�s�a�g�eW(\@W�}�N-c�O�e�[W�JY)T�j�hHP��8R���0� l�g _ʼn�i�^�g R�Vh0� [�e/cYN�TfBN�R��N&N&�Lv|�T�c�e60��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���g�\S�������Minimize���TitleBar����x��������Option���TitleBar�����~jnU��������Refresh List���TitleBar���`b_��������Restore���TitleBar���c�c��������Scanner���TitleBar���v�c���Q��������Straight &Exit���TitleBar��� uvRMj�hHg*O�[X0� O``�O�[X[�U���������6The current file is not saved. Do you want to save it?���TitleBar���rHg,�������� Version: ���TitleBar���c�c�������� kylin-scanner���TitleBar���N��u�S�������Beauty��� ToolBarWidget�����R�������Crop��� ToolBarWidget���l4QƓ�P��������Mirror��� ToolBarWidget���e�[W�XR%�������OCR��� ToolBarWidget���fzag|�PO�������Rectify��� ToolBarWidget���eˏI�������Rotate��� ToolBarWidget���mnl4Sp������� Watermark��� ToolBarWidget���e>Y'�������ZoomIn��� ToolBarWidget���~.\�������ZoomOut��� ToolBarWidget���Xc�c�Q�]�e����#c�0� Y�g�e���c�c�Q�v��#c����c N�N S�m�c�c� b{I_�c�c�Q�X1TJ�/��m�`o0��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���]�#c�e�v�c�c�Q�0�������New Scanner has been Connected.���UsbHotplugThread���"kcW(g��bc�c�Q��-P�0� ��z P000�������+Querying scanner device. Please waitting...���UsbHotplugThread���6c�c�Q�kcW(e����#c��kcW(��~jc�c�Q�nU�0� ��z P000�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���c�c�z_nU���~j[�b0�������Scanner list refresh complete.���UsbHotplugThread������������Close���WaittingDialog���kcW(��}"c�c�Q�000�������Searching for scanner...���WaittingDialog��� ++&Save Exit���TitleBar����.�.�.�������...���TitleBar�����e��������About���TitleBar������������Close���TitleBar����ܕ��������Exit���TitleBar���j�LR�������Form���TitleBar���^kR��������Help���TitleBar���g�Y'S�������Maximize���TitleBar���r�M�e�s�s�a�g�eW(\@W�}�N-c�O�e�[W�JY)T�j�hHP��8R���0� l�g _ʼn�i�^�g R�Vh0� [�e/cYN�TfBN�R��N&N&�Lv|�T�c�e60��������Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.���TitleBar���g�\S�������Minimize���TitleBar����x��������Option���TitleBar�����~jnU��������Refresh List���TitleBar���`b_��������Restore���TitleBar���c�c��������Scanner���TitleBar���v�c���Q��������Straight &Exit���TitleBar��� uvRMj�hHg*O�[X0� O``�O�[X[�U���������6The current file is not saved. Do you want to save it?���TitleBar���rHg,�������� Version: ���TitleBar���c�c�������� kylin-scanner���TitleBar���N��u�S�������Beauty��� ToolBarWidget�����R�������Crop��� ToolBarWidget���l4QƓ�P��������Mirror��� ToolBarWidget���e�[W�XR%�������OCR��� ToolBarWidget���fzag|�PO�������Rectify��� ToolBarWidget���eˏI�������Rotate��� ToolBarWidget���mnl4Sp������� Watermark��� ToolBarWidget���e>Y'�������ZoomIn��� ToolBarWidget���~.\�������ZoomOut��� ToolBarWidget���Xc�c�Q�]�e����#c�0� Y�g�e���c�c�Q�v��#c����c N�N S�m�c�c� b{I_�c�c�Q�X1TJ�/��m�`o0��������A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.���UsbHotplugThread���]�#c�e�v�c�c�Q�0�������New Scanner has been Connected.���UsbHotplugThread���"kcW(g��bc�c�Q��-P�0� ��z P000�������+Querying scanner device. Please waitting...���UsbHotplugThread���6c�c�Q�kcW(e����#c��kcW(��~jc�c�Q�nU�0� ��z P000�������CScanner is disconnect,refreshing scanner list. Please waitting...���UsbHotplugThread���c�c�z_nU���~j[�b0�������Scanner list refresh complete.���UsbHotplugThread������������Close���WaittingDialog���c�c�Vh�������Scanner���WaittingDialog���kcW(��}"c�c�Q�000�������Searching for scanner...���WaittingDialog��� + m�R�mnl4Sp������� Add watermark���WatermarkDialog���S�m��������Cancel���WatermarkDialog������������Close���WatermarkDialog����I[��������Confirm���WatermarkDialog���c�c�Q��������Scanner���WatermarkDialog���j�T �������Filename���main�������c�cϊ-[�\��N��������Hide scan settings widget���main���bS��e�N��<�f�i�l�e�n�a�m�e�>�������Open file <filename>���main���m�R��������Add���newDeviceListPage����f���������Alert���newDeviceListPage���N + N�ke�������Before���newDeviceListPage���S�m��������Cancel���newDeviceListPage������������Close���newDeviceListPage����-P�nU��������Device List���newDeviceListPage��� + �-P�T z1��������Device Name:���newDeviceListPage����ER�z^�T z1��������Driver Name:���newDeviceListPage���[����������Install���newDeviceListPage��� +-[���Y1eW0�������Installation failed.���newDeviceListPage���kcW([��ݚER�z^�000�������Installing driver...���newDeviceListPage���T z1�������Name���newDeviceListPage���NN�ke�������Next���newDeviceListPage���*l�g S�u(v��ER�z^��f/T&bKR�m�R��ER�z^���������:No available drivers, do you want to manually add drivers?���newDeviceListPage���x�[��������Ok���newDeviceListPage����xd�v��������Select a directory���newDeviceListPage���j�X�������Symbol���newDeviceListPage����^W��������Type���newDeviceListPage���Ou(�������Use���newDeviceListPage���j�hHkcW(�2�L[WQC�XR%000�������,The document is in character recognition ...��� showOcrWidget +\ No newline at end of file ++[���Y1eW0�������Installation failed.���newDeviceListPage����[���bR�0� O`s�W(`�u(�Pc�c�VhU��� U�d� Ou( ��n�u�d�e�v�����{�tT�[�x�� �q6_���e�U_R�c�c�a�u(z_N��e�ett��nR�h0� Y�g�`�N�q6`�~|~�d�O\c�c�v�_q�a�RG����bKRՑ�e�U_R�N&Ou(c�c�R���0������6Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.���newDeviceListPage���kcW([��ݚER�z^�000�������Installing driver...���newDeviceListPage���T z1�������Name���newDeviceListPage���NN�ke�������Next���newDeviceListPage���*l�g S�u(v��ER�z^��f/T&bKR�m�R��ER�z^���������:No available drivers, do you want to manually add drivers?���newDeviceListPage���x�[��������Ok���newDeviceListPage���Sp�hj_�������Printer���newDeviceListPage���c�c�Vh�������Scanner���newDeviceListPage����xd�v��������Select a directory���newDeviceListPage���j�X�������Symbol���newDeviceListPage���4kd�ER�z_O���{,N e��S��g\��N�N�q!l�[�s�v�}Pg�0�������AThis driver is from third party, may cause some unmetable result.���newDeviceListPage���Fkd�ER�z_u1��� UFc�O�0� �˂v�a�v���n��� UF�o}aN�srS֚ER�z_z_0��������This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.���newDeviceListPage����^W��������Type���newDeviceListPage���Ou(�������Use���newDeviceListPage���h`�����bKR�x���R�hN-ST+v�Sp�hj_��nf/T&f/c�c�T�RSpN���j_0� Y�g�N�Pl�g c�c�T�RSpN���j_���_�ue[�P0��������You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.���newDeviceListPage���j�hHkcW(�2�L[WQC�XR%000�������,The document is in character recognition ...��� showOcrWidget +\ No newline at end of file +diff --git a/translations/kylin-scanner_zh_HK.ts b/translations/kylin-scanner_zh_HK.ts +index 42089d6..41a614a 100644 +--- a/translations/kylin-scanner_zh_HK.ts ++++ b/translations/kylin-scanner_zh_HK.ts +@@ -4,12 +4,7 @@ + <context> + <name>DetectPageWidget</name> + <message> +- <location filename="../src/detectpagewidget.cpp" line="33"/> +- <source>Scanner</source> +- <translation type="unfinished"></translation> +- </message> +- <message> +- <location filename="../src/detectpagewidget.cpp" line="49"/> ++ <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> + <translatorcomment>檢測掃描儀,請稍候</translatorcomment> + <translation>檢測掃描儀,請稍候</translation> +@@ -36,7 +31,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>無法識別文字,請重試</translation> + </message> + </context> + <context> +@@ -67,19 +62,17 @@ + <context> + <name>MainWidget</name> + <message> +- <location filename="../src/mainwidget.cpp" line="70"/> +- <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> + <translatorcomment>掃描儀</translatorcomment> +- <translation>掃描儀</translation> ++ <translation type="vanished">掃描儀</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="172"/> ++ <location filename="../src/mainwidget.cpp" line="170"/> + <source>Ok</source> +- <translation type="unfinished">確定</translation> ++ <translation>確定</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="474"/> ++ <location filename="../src/mainwidget.cpp" line="433"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> + <translatorcomment>參數無效,請更改參數或切換其他掃描程式。</translatorcomment> + <translation>參數無效,請更改參數或切換其他掃描程式。</translation> +@@ -90,73 +83,73 @@ + <translation type="vanished">錯誤代碼:</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="506"/> ++ <location filename="../src/mainwidget.cpp" line="465"/> + <source>Device busy, please wait or switch other scanners.</source> + <translatorcomment>設備正忙,請稍候或切換其他掃描儀。</translatorcomment> + <translation>設備正忙,請稍候或切換其他掃描儀。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="510"/> ++ <location filename="../src/mainwidget.cpp" line="469"/> + <source>Document feeder out of documents, please place papers and scan again.</source> + <translatorcomment>檔案饋送器已用完檔案,請放置檔案並重新掃描。</translatorcomment> + <translation>檔案饋送器已用完檔案,請放置檔案並重新掃描。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="514"/> ++ <location filename="../src/mainwidget.cpp" line="473"/> + <source>Scan operation has been cancelled.</source> + <translatorcomment>掃描操作已取消。</translatorcomment> + <translation>掃描操作已取消。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="518"/> ++ <location filename="../src/mainwidget.cpp" line="477"/> + <source>Scan failed, operation is not supported.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,不支持此操作</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="521"/> ++ <location filename="../src/mainwidget.cpp" line="480"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,卡紙</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="524"/> ++ <location filename="../src/mainwidget.cpp" line="483"/> + <source>Scan failed, Error during device I/O.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,IO錯誤</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="527"/> ++ <location filename="../src/mainwidget.cpp" line="486"/> + <source>Scan failed, Out of memory.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,內存溢出</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="530"/> ++ <location filename="../src/mainwidget.cpp" line="489"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,源文件操作被禁止</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="533"/> ++ <location filename="../src/mainwidget.cpp" line="492"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation type="unfinished"></translation> ++ <translation>掃描失敗,掃描儀上蓋打開</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="537"/> ++ <location filename="../src/mainwidget.cpp" line="496"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> + <translatorcomment>掃描失敗,請檢查您的掃描儀或切換其他掃描儀。 如果要繼續使用掃描儀,請按一下“選項”,重繪清單以重新啟動設備。</translatorcomment> + <translation>掃描失敗,請檢查您的掃描儀或切換其他掃描儀。 如果要繼續使用掃描儀,請按一下“選項”,重繪清單以重新啟動設備。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="584"/> ++ <location filename="../src/mainwidget.cpp" line="543"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation type="unfinished"></translation> ++ <translation>檢測到系統睡眠/睡眠。 為了確保掃描器的正常使用,請單擊重新啟動以重新啟動掃描器應用程式。 如果您想繼續操作掃描影象,請單擊“取消”,但掃描相關功能將被禁用,並在重新啟動後生效。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="589"/> ++ <location filename="../src/mainwidget.cpp" line="548"/> + <source>Cancel</source> +- <translation type="unfinished">取消</translation> ++ <translation>取消</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="590"/> ++ <location filename="../src/mainwidget.cpp" line="549"/> + <source>Restart</source> +- <translation type="unfinished"></translation> ++ <translation>重新啟動</translation> + </message> + <message> + <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> +@@ -164,25 +157,25 @@ + <translation type="vanished">睡眠,請檢測掃描儀狀態,若未繼續掃描,需手動點擊取消或重繪清單恢復設備掃描功能</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>Alert</source> + <translatorcomment>警覺</translatorcomment> + <translation>警覺</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="619"/> ++ <location filename="../src/mainwidget.cpp" line="578"/> + <source>A new Scanner has been connected.</source> + <translatorcomment>已連接新的掃描儀。</translatorcomment> + <translation>已連接新的掃描儀。</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="660"/> ++ <location filename="../src/mainwidget.cpp" line="619"/> + <source>Running beauty ...</source> + <translatorcomment>一鍵美化中</translatorcomment> + <translation>一鍵美化中</translation> + </message> + <message> +- <location filename="../src/mainwidget.cpp" line="682"/> ++ <location filename="../src/mainwidget.cpp" line="640"/> + <source>Running rectify ...</source> + <translatorcomment>智慧糾偏中</translatorcomment> + <translation>智慧糾偏中</translation> +@@ -200,33 +193,33 @@ + <context> + <name>NoMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="54"/> +- <location filename="../src/sendmail.cpp" line="77"/> +- <location filename="../src/sendmail.cpp" line="78"/> ++ <location filename="../src/sendmail.cpp" line="58"/> ++ <location filename="../src/sendmail.cpp" line="81"/> ++ <location filename="../src/sendmail.cpp" line="82"/> + <source>No email client</source> + <translatorcomment>沒有電子郵件用戶端</translatorcomment> + <translation>沒有電子郵件用戶端</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="61"/> ++ <location filename="../src/sendmail.cpp" line="65"/> + <source>Close</source> + <translatorcomment>關</translatorcomment> + <translation>關</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="89"/> ++ <location filename="../src/sendmail.cpp" line="93"/> + <source>Not find email client in the system, please install email client firstly.</source> + <translatorcomment>在系統中找不到電子郵件用戶端,請先安裝電子郵件用戶端。</translatorcomment> + <translation>在系統中找不到電子郵件用戶端,請先安裝電子郵件用戶端。</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="101"/> ++ <location filename="../src/sendmail.cpp" line="105"/> + <source>Cancel</source> + <translatorcomment>取消</translatorcomment> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="103"/> ++ <location filename="../src/sendmail.cpp" line="107"/> + <source>Install</source> + <translatorcomment>安裝</translatorcomment> + <translation>安裝</translation> +@@ -235,42 +228,46 @@ + <context> + <name>QApplication</name> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <source>Single</source> + <translatorcomment>單頁掃描</translatorcomment> + <translation>單頁掃描</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="176"/> ++ <location filename="../src/main.cpp" line="161"/> ++ <location filename="../src/scandialog.cpp" line="46"/> ++ <location filename="../src/scansettingswidget.cpp" line="1359"/> ++ <location filename="../src/mainwidget.cpp" line="69"/> ++ <location filename="../src/mainwidget.cpp" line="168"/> + <source>Scanner</source> + <translatorcomment>掃描儀</translatorcomment> + <translation>掃描儀</translation> + </message> + <message> +- <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> ++ <location filename="../src/imageBaseOP/savefilebase.cpp" line="257"/> + <location filename="../src/saneobject.cpp" line="327"/> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>ADF Duplex</source> + <translatorcomment>ADF 雙面</translatorcomment> + <translation>ADF 雙面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="450"/> +- <location filename="../src/saneobject.cpp" line="511"/> +- <location filename="../src/scansettingswidget.cpp" line="210"/> +- <location filename="../src/scansettingswidget.cpp" line="531"/> +- <location filename="../src/scansettingswidget.cpp" line="553"/> ++ <location filename="../src/saneobject.cpp" line="444"/> ++ <location filename="../src/saneobject.cpp" line="506"/> ++ <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="516"/> ++ <location filename="../src/scansettingswidget.cpp" line="538"/> + <source>Multiple</source> + <translatorcomment>多頁掃描</translatorcomment> + <translation>多頁掃描</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="588"/> ++ <location filename="../src/saneobject.cpp" line="581"/> + <source>Fail to open the scanner</source> +- <translation type="unfinished"></translation> ++ <translation>無法開啟掃描器</translation> + </message> + <message> + <source>Fail to open the scanner, error code </source> +@@ -278,13 +275,13 @@ + <translation type="vanished">打開掃描儀失敗</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2085"/> ++ <location filename="../src/saneobject.cpp" line="2017"/> + <source>Auto</source> + <translatorcomment>自動</translatorcomment> + <translation>自動</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="211"/> ++ <location filename="../src/scansettingswidget.cpp" line="213"/> + <source>Flatbed</source> + <translatorcomment>平板式</translatorcomment> + <translation>平板式</translation> +@@ -305,172 +302,171 @@ + <context> + <name>QObject</name> + <message> +- <location filename="../src/saneobject.cpp" line="660"/> ++ <location filename="../src/saneobject.cpp" line="652"/> + <source>Color</source> + <translatorcomment>彩色</translatorcomment> + <translation>彩色</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="667"/> ++ <location filename="../src/saneobject.cpp" line="659"/> + <source>Gray</source> + <translatorcomment>灰度</translatorcomment> + <translation>灰度</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="673"/> ++ <location filename="../src/saneobject.cpp" line="665"/> + <source>Lineart</source> + <translatorcomment>黑白</translatorcomment> + <translation>黑白</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="738"/> ++ <location filename="../src/saneobject.cpp" line="730"/> + <source>Default Type</source> + <translatorcomment>默認類型</translatorcomment> + <translation>默認類型</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="817"/> ++ <location filename="../src/saneobject.cpp" line="809"/> + <source>Flatbed</source> + <translatorcomment>平板式</translatorcomment> + <translation>平板式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="827"/> ++ <location filename="../src/saneobject.cpp" line="819"/> + <source>ADF</source> + <translatorcomment>ADF</translatorcomment> + <translation>ADF</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="836"/> ++ <location filename="../src/saneobject.cpp" line="828"/> + <source>ADF Front</source> + <translatorcomment>ADF正面</translatorcomment> + <translation>ADF正面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="845"/> ++ <location filename="../src/saneobject.cpp" line="837"/> + <source>ADF Back</source> + <translatorcomment>ADF反面</translatorcomment> + <translation>ADF反面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="854"/> ++ <location filename="../src/saneobject.cpp" line="846"/> + <source>ADF Duplex</source> + <translatorcomment>ADF 雙面</translatorcomment> + <translation>ADF 雙面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="904"/> +- <location filename="../src/saneobject.cpp" line="968"/> ++ <location filename="../src/saneobject.cpp" line="896"/> ++ <location filename="../src/saneobject.cpp" line="2195"/> + <source>4800 dpi</source> + <translatorcomment>4800 dpi</translatorcomment> + <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="907"/> +- <location filename="../src/saneobject.cpp" line="972"/> ++ <location filename="../src/saneobject.cpp" line="899"/> ++ <location filename="../src/saneobject.cpp" line="2199"/> + <source>2400 dpi</source> + <translatorcomment>2400 dpi</translatorcomment> + <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="910"/> +- <location filename="../src/saneobject.cpp" line="976"/> ++ <location filename="../src/saneobject.cpp" line="902"/> ++ <location filename="../src/saneobject.cpp" line="2203"/> + <source>1200 dpi</source> + <translatorcomment>1200 dpi</translatorcomment> + <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="913"/> +- <location filename="../src/saneobject.cpp" line="980"/> ++ <location filename="../src/saneobject.cpp" line="905"/> ++ <location filename="../src/saneobject.cpp" line="2207"/> + <source>600 dpi</source> + <translatorcomment>600 dpi</translatorcomment> + <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="916"/> +- <location filename="../src/saneobject.cpp" line="984"/> ++ <location filename="../src/saneobject.cpp" line="908"/> ++ <location filename="../src/saneobject.cpp" line="2211"/> + <source>300 dpi</source> + <translatorcomment>300 dpi</translatorcomment> + <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="919"/> +- <location filename="../src/saneobject.cpp" line="988"/> ++ <location filename="../src/saneobject.cpp" line="911"/> ++ <location filename="../src/saneobject.cpp" line="2215"/> + <source>200 dpi</source> + <translatorcomment>200 dpi</translatorcomment> + <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="922"/> +- <location filename="../src/saneobject.cpp" line="992"/> ++ <location filename="../src/saneobject.cpp" line="914"/> ++ <location filename="../src/saneobject.cpp" line="2219"/> + <source>150 dpi</source> + <translatorcomment>150 dpi</translatorcomment> + <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="925"/> +- <location filename="../src/saneobject.cpp" line="996"/> ++ <location filename="../src/saneobject.cpp" line="917"/> ++ <location filename="../src/saneobject.cpp" line="2223"/> + <source>100 dpi</source> + <translatorcomment>100 dpi</translatorcomment> + <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="928"/> +- <location filename="../src/saneobject.cpp" line="1000"/> ++ <location filename="../src/saneobject.cpp" line="920"/> ++ <location filename="../src/saneobject.cpp" line="2227"/> + <source>75 dpi</source> + <translatorcomment>75 dpi</translatorcomment> + <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="946"/> +- <location filename="../src/saneobject.cpp" line="1016"/> ++ <location filename="../src/saneobject.cpp" line="938"/> ++ <location filename="../src/saneobject.cpp" line="2243"/> + <source>Auto</source> + <translatorcomment>自動</translatorcomment> + <translation>自動</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> + <translatorcomment>目前</translatorcomment> +- <translation>目前</translation> ++ <translation type="vanished">目前</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> + <translatorcomment>用戶</translatorcomment> +- <translation>用戶</translation> ++ <translation type="vanished">用戶</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> + <translatorcomment>已打開麒麟掃描儀,打開將關閉</translatorcomment> +- <translation>已打開麒麟掃描儀,打開將關閉</translation> ++ <translation type="vanished">已打開麒麟掃描儀,打開將關閉</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> + <translatorcomment>的操作。 是否繼續?</translatorcomment> +- <translation>的操作。 是否繼續?</translation> ++ <translation type="vanished">的操作。 是否繼續?</translation> + </message> + <message> +- <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> + <translatorcomment>詢問</translatorcomment> +- <translation>詢問</translation> ++ <translation type="vanished">詢問</translation> ++ </message> ++ <message> ++ <location filename="../src/device/ukui_apt.cpp" line="79"/> ++ <location filename="../src/device/ukui_apt.cpp" line="160"/> ++ <source>Install timeout.</source> ++ <translation>安裝超時。</translation> + </message> + </context> + <context> + <name>RunningDialog</name> + <message> + <location filename="../src/runningdialog.cpp" line="55"/> +- <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> + <translatorcomment>關</translatorcomment> + <translation>關</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> +- <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> + <translatorcomment>取消</translatorcomment> + <translation>取消</translation> +@@ -485,108 +481,107 @@ + <translation>重繪清單完成。</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2003"/> ++ <location filename="../src/saneobject.cpp" line="1935"/> + <source>Flatbed</source> + <translatorcomment>平板式</translatorcomment> + <translation>平板式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2005"/> ++ <location filename="../src/saneobject.cpp" line="1937"/> + <source>ADF</source> + <translatorcomment>饋紙式</translatorcomment> + <translation>饋紙式</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2007"/> ++ <location filename="../src/saneobject.cpp" line="1939"/> + <source>ADF Front</source> + <translatorcomment>ADF 正面</translatorcomment> + <translation>ADF 正面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2009"/> ++ <location filename="../src/saneobject.cpp" line="1941"/> + <source>ADF Back</source> + <translatorcomment>ADF 反面</translatorcomment> + <translation>ADF 反面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2011"/> ++ <location filename="../src/saneobject.cpp" line="1943"/> + <source>Default Type</source> + <translatorcomment>默認類型</translatorcomment> + <translation>默認類型</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2013"/> ++ <location filename="../src/saneobject.cpp" line="1945"/> + <source>ADF Duplex</source> + <translatorcomment>ADF 雙面</translatorcomment> + <translation>ADF 雙面</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2089"/> ++ <location filename="../src/saneobject.cpp" line="2021"/> + <source>75 dpi</source> + <translation></translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2091"/> ++ <location filename="../src/saneobject.cpp" line="2023"/> + <source>100 dpi</source> +- <translation type="unfinished">100 dpi</translation> ++ <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2093"/> ++ <location filename="../src/saneobject.cpp" line="2025"/> + <source>150 dpi</source> +- <translation type="unfinished">150 dpi</translation> ++ <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2095"/> ++ <location filename="../src/saneobject.cpp" line="2027"/> + <source>200 dpi</source> +- <translation type="unfinished">200 dpi</translation> ++ <translation>200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2097"/> ++ <location filename="../src/saneobject.cpp" line="2029"/> + <source>300 dpi</source> +- <translation type="unfinished">300 dpi</translation> ++ <translation>300 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2099"/> ++ <location filename="../src/saneobject.cpp" line="2031"/> + <source>600 dpi</source> +- <translation type="unfinished">600 dpi</translation> ++ <translation>600 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2101"/> ++ <location filename="../src/saneobject.cpp" line="2033"/> + <source>1200 dpi</source> +- <translation type="unfinished">1200 dpi</translation> ++ <translation>1200 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2103"/> ++ <location filename="../src/saneobject.cpp" line="2035"/> + <source>2400 dpi</source> +- <translation type="unfinished">2400 dpi</translation> ++ <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/saneobject.cpp" line="2105"/> ++ <location filename="../src/saneobject.cpp" line="2037"/> + <source>4800 dpi</source> +- <translation type="unfinished">4800 dpi</translation> ++ <translation>4800 dpi</translation> + </message> + </context> + <context> + <name>ScanDialog</name> + <message> +- <location filename="../src/scandialog.cpp" line="47"/> +- <location filename="../src/scandialog.cpp" line="62"/> ++ <location filename="../src/scandialog.cpp" line="61"/> + <source>Scanner</source> + <translation>掃描儀</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="66"/> ++ <location filename="../src/scandialog.cpp" line="65"/> + <source>Close</source> + <translation>關</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="86"/> ++ <location filename="../src/scandialog.cpp" line="85"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> + <translation>掃描頁數:</translation> + </message> + <message> +- <location filename="../src/scandialog.cpp" line="98"/> ++ <location filename="../src/scandialog.cpp" line="97"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -604,253 +599,251 @@ + <context> + <name>ScanSettingsWidget</name> + <message> +- <location filename="../src/scansettingswidget.cpp" line="126"/> ++ <location filename="../src/scansettingswidget.cpp" line="128"/> + <source>Select a directory</source> + <translation>選擇目錄</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="149"/> ++ <location filename="../src/scansettingswidget.cpp" line="151"/> + <source>Currently user has no permission to modify directory </source> + <translation>當前用戶沒有修改目錄的許可權</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="212"/> ++ <location filename="../src/scansettingswidget.cpp" line="214"/> + <source>Flatbed scan mode not support multiple scan.</source> + <translation>平板掃描模式不支持多次掃描。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="214"/> +- <location filename="../src/scansettingswidget.cpp" line="238"/> +- <location filename="../src/scansettingswidget.cpp" line="270"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="216"/> ++ <location filename="../src/scansettingswidget.cpp" line="240"/> ++ <location filename="../src/scansettingswidget.cpp" line="271"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Single</source> + <translation>單頁掃描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="217"/> +- <location filename="../src/scansettingswidget.cpp" line="967"/> ++ <location filename="../src/scansettingswidget.cpp" line="219"/> ++ <location filename="../src/scansettingswidget.cpp" line="961"/> + <source>Multiple</source> + <translation>多頁掃描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="269"/> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="270"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>Flatbed</source> + <translation>平板式</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="281"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="282"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Color</source> + <translation>彩色</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="283"/> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="284"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Lineart</source> + <translation>黑白</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="295"/> ++ <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>4800 dpi</source> +- <translation type="unfinished">4800 dpi</translation> ++ <translation>4800 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="296"/> ++ <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>2400 dpi</source> +- <translation type="unfinished">2400 dpi</translation> ++ <translation>2400 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="297"/> ++ <location filename="../src/scansettingswidget.cpp" line="298"/> + <source>1200 dpi</source> +- <translation type="unfinished">1200 dpi</translation> ++ <translation>1200 dpi</translation> + </message> + <message> + <source>This resolution will take a loog time to scan, please choose carelly.</source> + <translation type="vanished">這個分辯率需要很長時間才能掃描,請仔細選擇。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="299"/> ++ <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation type="unfinished"></translation> ++ <translation>此解決方案需要很長時間才能掃描,請選擇。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation type="unfinished">警覺</translation> ++ <translation type="obsolete">警覺</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="327"/> ++ <location filename="../src/scansettingswidget.cpp" line="328"/> + <source>cannot contain '/' character.</source> + <translation>不能包含“/”字元。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="332"/> +- <location filename="../src/scansettingswidget.cpp" line="472"/> ++ <location filename="../src/scansettingswidget.cpp" line="333"/> ++ <location filename="../src/scansettingswidget.cpp" line="470"/> + <source>cannot save as hidden file.</source> + <translation>無法另存為隱藏文件。</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="461"/> ++ <location filename="../src/scansettingswidget.cpp" line="459"/> + <source>Save As</source> + <translation>另存為</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="485"/> ++ <location filename="../src/scansettingswidget.cpp" line="483"/> + <source>Path without access rights: </source> + <translation>沒有存取權限的路徑:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="489"/> ++ <location filename="../src/scansettingswidget.cpp" line="487"/> + <source>File path that does not exist: </source> + <translation>不存在的檔案路徑:</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="547"/> ++ <location filename="../src/scansettingswidget.cpp" line="532"/> + <source>The file </source> + <translation>文件</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="548"/> ++ <location filename="../src/scansettingswidget.cpp" line="533"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> + <translation>已存在,是否要覆蓋它? 如果執行多頁掃描,可能會導致多個檔案被覆蓋。 請謹慎!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="550"/> ++ <location filename="../src/scansettingswidget.cpp" line="535"/> + <source>tips</source> + <translation>提示</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="601"/> ++ <location filename="../src/scansettingswidget.cpp" line="586"/> + <source>Device</source> + <translation>裝置</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="587"/> + <source>Pages</source> + <translation>頁碼</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="603"/> ++ <location filename="../src/scansettingswidget.cpp" line="588"/> + <source>Type</source> + <translation>類型</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="604"/> ++ <location filename="../src/scansettingswidget.cpp" line="589"/> + <source>Colour</source> + <translation>顏色</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="605"/> ++ <location filename="../src/scansettingswidget.cpp" line="590"/> + <source>Resolution</source> + <translation>分辯率</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="606"/> ++ <location filename="../src/scansettingswidget.cpp" line="591"/> + <source>Size</source> + <translation>大小</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="607"/> ++ <location filename="../src/scansettingswidget.cpp" line="592"/> + <source>Format</source> + <translation>總體安排</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="608"/> ++ <location filename="../src/scansettingswidget.cpp" line="593"/> + <source>Name</source> + <translation>名稱</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="609"/> ++ <location filename="../src/scansettingswidget.cpp" line="594"/> + <source>Save</source> + <translation>保存</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="617"/> +- <location filename="../src/scansettingswidget.cpp" line="618"/> ++ <location filename="../src/scansettingswidget.cpp" line="602"/> ++ <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Mail to</source> + <translation>將郵件發送到</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="746"/> ++ <location filename="../src/scansettingswidget.cpp" line="731"/> + <source>Start Scan</source> + <translation>開始掃描</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="769"/> ++ <location filename="../src/scansettingswidget.cpp" line="754"/> + <source>Scanner device</source> + <translation>掃描儀設備</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="774"/> ++ <location filename="../src/scansettingswidget.cpp" line="759"/> + <source>File settings</source> + <translation>檔案設定</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="777"/> ++ <location filename="../src/scansettingswidget.cpp" line="762"/> + <source>scanner01</source> +- <translation type="unfinished"></translation> ++ <translation></translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="796"/> +- <location filename="../src/scansettingswidget.cpp" line="1148"/> +- <location filename="../src/scansettingswidget.cpp" line="1149"/> ++ <location filename="../src/scansettingswidget.cpp" line="781"/> ++ <location filename="../src/scansettingswidget.cpp" line="1142"/> ++ <location filename="../src/scansettingswidget.cpp" line="1143"/> + <source>Save as</source> + <translation>另存為</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="984"/> ++ <location filename="../src/scansettingswidget.cpp" line="978"/> + <source>ADF</source> + <translation>饋紙式</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1013"/> ++ <location filename="../src/scansettingswidget.cpp" line="1007"/> + <source>Gray</source> + <translation>灰色</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>75 dpi</source> +- <translation type="unfinished">75 dpi</translation> ++ <translation>75 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>100 dpi</source> +- <translation type="unfinished">100 dpi</translation> ++ <translation>100 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1036"/> ++ <location filename="../src/scansettingswidget.cpp" line="1030"/> + <source>150 dpi</source> +- <translation type="unfinished">150 dpi</translation> ++ <translation>150 dpi</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1053"/> ++ <location filename="../src/scansettingswidget.cpp" line="1047"/> + <source>Resolution is empty!</source> + <translation>分辯率為空!</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A4</source> +- <translation type="unfinished"></translation> ++ <translation>A4</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1068"/> ++ <location filename="../src/scansettingswidget.cpp" line="1062"/> + <source>A5</source> +- <translation type="unfinished"></translation> ++ <translation>A5</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1139"/> +- <location filename="../src/scansettingswidget.cpp" line="1140"/> ++ <location filename="../src/scansettingswidget.cpp" line="1133"/> ++ <location filename="../src/scansettingswidget.cpp" line="1134"/> + <source>Store text</source> + <translation>存儲文字</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation>掃描儀</translation> ++ <translation type="vanished">掃描儀</translation> + </message> + <message> +- <location filename="../src/scansettingswidget.cpp" line="1368"/> ++ <location filename="../src/scansettingswidget.cpp" line="1362"/> + <source>Yes</source> + <translation>確認</translation> + </message> +@@ -858,30 +851,30 @@ + <context> + <name>SendMailDialog</name> + <message> +- <location filename="../src/sendmail.cpp" line="198"/> +- <location filename="../src/sendmail.cpp" line="222"/> ++ <location filename="../src/sendmail.cpp" line="194"/> ++ <location filename="../src/sendmail.cpp" line="218"/> + <source>Select email client</source> + <translation>選擇電子郵件用戶端</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="204"/> ++ <location filename="../src/sendmail.cpp" line="200"/> + <source>Scanner</source> +- <translation type="unfinished">掃描儀</translation> ++ <translation>掃描儀</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="207"/> ++ <location filename="../src/sendmail.cpp" line="203"/> + <source>Close</source> + <translation>關</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="236"/> +- <location filename="../src/sendmail.cpp" line="237"/> ++ <location filename="../src/sendmail.cpp" line="232"/> ++ <location filename="../src/sendmail.cpp" line="233"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/sendmail.cpp" line="240"/> +- <location filename="../src/sendmail.cpp" line="241"/> ++ <location filename="../src/sendmail.cpp" line="236"/> ++ <location filename="../src/sendmail.cpp" line="237"/> + <source>Confirm</source> + <translation>證實</translation> + </message> +@@ -889,27 +882,27 @@ + <context> + <name>ShowImageWidget</name> + <message> +- <location filename="../src/showimagewidget.cpp" line="66"/> ++ <location filename="../src/showimagewidget.cpp" line="64"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="74"/> ++ <location filename="../src/showimagewidget.cpp" line="72"/> + <source>Ok</source> + <translation>確定</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1148"/> ++ <location filename="../src/showimagewidget.cpp" line="1113"/> + <source>Canceling...Please waiting...</source> + <translation>正在取消。。。 請稍候。。。</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1159"/> ++ <location filename="../src/showimagewidget.cpp" line="1124"/> + <source>Running beauty ...</source> + <translation>一鍵美化中</translation> + </message> + <message> +- <location filename="../src/showimagewidget.cpp" line="1192"/> ++ <location filename="../src/showimagewidget.cpp" line="1157"/> + <source>Running rectify ...</source> + <translation>智慧糾偏中</translation> + </message> +@@ -929,7 +922,7 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> +- <location filename="../src/titlebar/titlebar.h" line="83"/> ++ <location filename="../src/titlebar/titlebar.h" line="82"/> + <source>Scanner</source> + <translatorcomment>掃描</translatorcomment> + <translation>掃描</translation> +@@ -942,7 +935,7 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="179"/> + <source>...</source> +- <translation type="unfinished"></translation> ++ <translation>...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="220"/> +@@ -1014,56 +1007,56 @@ + <context> + <name>ToolBarWidget</name> + <message> +- <location filename="../src/toolbarwidget.cpp" line="64"/> +- <location filename="../src/toolbarwidget.cpp" line="158"/> ++ <location filename="../src/toolbarwidget.cpp" line="74"/> ++ <location filename="../src/toolbarwidget.cpp" line="168"/> + <source>Beauty</source> + <translation>一鍵美化</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="70"/> +- <location filename="../src/toolbarwidget.cpp" line="164"/> ++ <location filename="../src/toolbarwidget.cpp" line="80"/> ++ <location filename="../src/toolbarwidget.cpp" line="174"/> + <source>Rectify</source> + <translation>智慧糾偏</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="76"/> +- <location filename="../src/toolbarwidget.cpp" line="170"/> ++ <location filename="../src/toolbarwidget.cpp" line="86"/> ++ <location filename="../src/toolbarwidget.cpp" line="180"/> + <source>OCR</source> + <translation>文字識別</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="84"/> +- <location filename="../src/toolbarwidget.cpp" line="178"/> ++ <location filename="../src/toolbarwidget.cpp" line="94"/> ++ <location filename="../src/toolbarwidget.cpp" line="188"/> + <source>Crop</source> + <translation>裁切</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="90"/> +- <location filename="../src/toolbarwidget.cpp" line="184"/> ++ <location filename="../src/toolbarwidget.cpp" line="100"/> ++ <location filename="../src/toolbarwidget.cpp" line="194"/> + <source>Rotate</source> + <translation>旋轉</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="96"/> +- <location filename="../src/toolbarwidget.cpp" line="190"/> ++ <location filename="../src/toolbarwidget.cpp" line="106"/> ++ <location filename="../src/toolbarwidget.cpp" line="200"/> + <source>Mirror</source> + <translation>水准鏡像</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="102"/> +- <location filename="../src/toolbarwidget.cpp" line="196"/> ++ <location filename="../src/toolbarwidget.cpp" line="112"/> ++ <location filename="../src/toolbarwidget.cpp" line="206"/> + <source>Watermark</source> + <translation>浮水印</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="115"/> +- <location filename="../src/toolbarwidget.cpp" line="209"/> ++ <location filename="../src/toolbarwidget.cpp" line="125"/> ++ <location filename="../src/toolbarwidget.cpp" line="219"/> + <source>ZoomOut</source> + <translation>縮小</translation> + </message> + <message> +- <location filename="../src/toolbarwidget.cpp" line="121"/> +- <location filename="../src/toolbarwidget.cpp" line="215"/> ++ <location filename="../src/toolbarwidget.cpp" line="131"/> ++ <location filename="../src/toolbarwidget.cpp" line="225"/> + <source>ZoomIn</source> + <translation>放大</translation> + </message> +@@ -1099,12 +1092,17 @@ + <context> + <name>WaittingDialog</name> + <message> +- <location filename="../src/waittingdialog.cpp" line="46"/> ++ <location filename="../src/waittingdialog.cpp" line="38"/> ++ <source>Scanner</source> ++ <translation>掃描器</translation> ++ </message> ++ <message> ++ <location filename="../src/waittingdialog.cpp" line="50"/> + <source>Close</source> + <translation>關</translation> + </message> + <message> +- <location filename="../src/waittingdialog.cpp" line="59"/> ++ <location filename="../src/waittingdialog.cpp" line="62"/> + <source>Searching for scanner...</source> + <translation>正在蒐索掃描儀。。。</translation> + </message> +@@ -1112,27 +1110,27 @@ + <context> + <name>WatermarkDialog</name> + <message> +- <location filename="../src/watermarkdialog.cpp" line="46"/> ++ <location filename="../src/watermarkdialog.cpp" line="47"/> + <source>Scanner</source> + <translation>掃描儀</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="54"/> ++ <location filename="../src/watermarkdialog.cpp" line="55"/> + <source>Close</source> + <translation>關</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="65"/> ++ <location filename="../src/watermarkdialog.cpp" line="66"/> + <source>Add watermark</source> + <translation>添加浮水印</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="81"/> ++ <location filename="../src/watermarkdialog.cpp" line="82"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> +- <location filename="../src/watermarkdialog.cpp" line="84"/> ++ <location filename="../src/watermarkdialog.cpp" line="85"/> + <source>Confirm</source> + <translation>證實</translation> + </message> +@@ -1140,17 +1138,17 @@ + <context> + <name>main</name> + <message> +- <location filename="../src/main.cpp" line="200"/> ++ <location filename="../src/main.cpp" line="185"/> + <source>Open file <filename></source> + <translation>打開文件<filename></translation> + </message> + <message> +- <location filename="../src/main.cpp" line="201"/> ++ <location filename="../src/main.cpp" line="186"/> + <source>Filename</source> + <translation>檔名</translation> + </message> + <message> +- <location filename="../src/main.cpp" line="205"/> ++ <location filename="../src/main.cpp" line="190"/> + <source>Hide scan settings widget</source> + <translation>隱藏掃描設定小部件</translation> + </message> +@@ -1170,19 +1168,19 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation type="unfinished">類型</translation> ++ <translation>類型</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>Alert</source> +- <translation type="unfinished">警覺</translation> ++ <translation>警覺</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation type="unfinished"></translation> ++ <translation>您需要手動確認列表中包含的印表機裝置是否是掃描和列印一體機。 如果他們沒有掃描和列印一體機,請忽略它們。</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> +@@ -1197,8 +1195,8 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> + <location filename="../src/newdevicelistpage.cpp" line="117"/> +- <location filename="../src/newdevicelistpage.cpp" line="309"/> +- <location filename="../src/newdevicelistpage.cpp" line="366"/> ++ <location filename="../src/newdevicelistpage.cpp" line="318"/> ++ <location filename="../src/newdevicelistpage.cpp" line="375"/> + <source>Cancel</source> + <translation>取消</translation> + </message> +@@ -1218,77 +1216,77 @@ + <translation>安裝</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="189"/> ++ <location filename="../src/newdevicelistpage.cpp" line="197"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>掃描器</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="191"/> ++ <location filename="../src/newdevicelistpage.cpp" line="199"/> + <source>Printer</source> +- <translation type="unfinished"></translation> ++ <translation>印表機</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="208"/> ++ <location filename="../src/newdevicelistpage.cpp" line="216"/> + <source>Device Name:</source> + <translation>設備名稱:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="212"/> ++ <location filename="../src/newdevicelistpage.cpp" line="220"/> + <source>Driver Name:</source> + <translation>驅動程序名稱:</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="255"/> ++ <location filename="../src/newdevicelistpage.cpp" line="263"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation type="unfinished"></translation> ++ <translation>此驅動程式來自第三方,可能會導致一些無法實現的結果。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="259"/> ++ <location filename="../src/newdevicelistpage.cpp" line="267"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation type="unfinished"></translation> ++ <translation>此驅動程式由製造商提供。 請與相應的裝置製造商聯絡以獲取驅動程式程式。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="303"/> ++ <location filename="../src/newdevicelistpage.cpp" line="312"/> + <source>No available drivers, do you want to manually add drivers?</source> + <translation>沒有可用的驅動程序,是否手動添加驅動程序?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="307"/> ++ <location filename="../src/newdevicelistpage.cpp" line="316"/> + <source>Add</source> + <translation>添加</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="344"/> +- <location filename="../src/newdevicelistpage.cpp" line="449"/> ++ <location filename="../src/newdevicelistpage.cpp" line="353"/> ++ <location filename="../src/newdevicelistpage.cpp" line="458"/> + <source>Installing driver...</source> + <translation>正在安裝驅動程序。。。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="361"/> ++ <location filename="../src/newdevicelistpage.cpp" line="370"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation type="unfinished"></translation> ++ <translation>安裝成功。 你現在想用這個掃描器嗎? 單擊“使用”重置udev(需要管理員密碼),然後重新啟動掃描應用程式以重新整理裝置列表。 如果您仍然想繼續操作掃描的影象,則需要手動重新啟動並使用掃描功能。</translation> + </message> + <message> + <source>Installation successful. Do you want to use this scanner now?</source> + <translation type="vanished">安裝成功。 你想現在使用這個掃描儀嗎?</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="367"/> ++ <location filename="../src/newdevicelistpage.cpp" line="376"/> + <source>Use</source> + <translation>使用</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="398"/> ++ <location filename="../src/newdevicelistpage.cpp" line="407"/> + <source>Installation failed.</source> + <translation>安裝失敗。</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="401"/> ++ <location filename="../src/newdevicelistpage.cpp" line="410"/> + <source>Ok</source> + <translation>確定</translation> + </message> + <message> +- <location filename="../src/newdevicelistpage.cpp" line="443"/> ++ <location filename="../src/newdevicelistpage.cpp" line="452"/> + <source>Select a directory</source> + <translation>選擇目錄</translation> + </message> Binary files /tmp/tmpxd3s8_pp/ew7pEOrnYe/kylin-scanner-3.2.1/debian/patches/0035-34-fix.patch and /tmp/tmpxd3s8_pp/iLn95YOiGT/kylin-scanner-3.2.1/debian/patches/0035-34-fix.patch differ diff -Nru kylin-scanner-3.2.1/debian/patches/0036-36-fix-pro.patch kylin-scanner-3.2.1/debian/patches/0036-36-fix-pro.patch --- kylin-scanner-3.2.1/debian/patches/0036-36-fix-pro.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0036-36-fix-pro.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,21 @@ +From: =?utf-8?b?6IyD5pix6L6w?= <fanyuchen@kylinos.cn> +Date: Wed, 19 Feb 2025 08:54:25 +0000 +Subject: =?utf-8?b?ITM2IGZpeCBwcm/mlofku7YgTWVyZ2UgcHVsbCByZXF1ZXN0ICEzNiBm?= + =?utf-8?b?cm9tIOiMg+aYsei+sC9vcGVua3lsaW4vbmlsZQ==?= + +--- + kylin-scanner.pro | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/kylin-scanner.pro b/kylin-scanner.pro +index 797818a..99489a6 100644 +--- a/kylin-scanner.pro ++++ b/kylin-scanner.pro +@@ -57,7 +57,6 @@ LIBS += -lpthread \ + -lnetsnmpmibs \ + -lsane \ + -lzip \ +- -lboundscheck \ + + INCLUDEPATH += /usr/include/CImg.h + unix:!macx: LIBS += -L$$PWD/../../../usr/lib/x86_64-linux-gnu/ diff -Nru kylin-scanner-3.2.1/debian/patches/0037-37-fix-tooltip.patch kylin-scanner-3.2.1/debian/patches/0037-37-fix-tooltip.patch --- kylin-scanner-3.2.1/debian/patches/0037-37-fix-tooltip.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0037-37-fix-tooltip.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,343 @@ +From: =?utf-8?b?6IyD5pix6L6w?= <fanyuchen@kylinos.cn> +Date: Wed, 19 Feb 2025 09:01:33 +0000 +Subject: =?utf-8?b?ITM3IGZpeDrnhKbngrl0b29sdGlwIE1lcmdlIHB1bGwgcmVxdWVzdCAh?= + =?utf-8?b?MzcgZnJvbSDojIPmmLHovrAvb3Blbmt5bGluL25pbGU=?= + +--- + kylin-scanner.pro.user | 314 ------------------------------------------------- + src/mainwidget.cpp | 1 + + 2 files changed, 1 insertion(+), 314 deletions(-) + delete mode 100644 kylin-scanner.pro.user + +diff --git a/kylin-scanner.pro.user b/kylin-scanner.pro.user +deleted file mode 100644 +index 3014f05..0000000 +--- a/kylin-scanner.pro.user ++++ /dev/null +@@ -1,314 +0,0 @@ +-<?xml version="1.0" encoding="UTF-8"?> +-<!DOCTYPE QtCreatorProject> +-<!-- Written by QtCreator 4.11.0, 2025-02-19T15:50:01. --> +-<qtcreator> +- <data> +- <variable>EnvironmentId</variable> +- <value type="QByteArray">{63d5dbf4-beb7-43a0-8fc1-27ae31184926}</value> +- </data> +- <data> +- <variable>ProjectExplorer.Project.ActiveTarget</variable> +- <value type="int">0</value> +- </data> +- <data> +- <variable>ProjectExplorer.Project.EditorSettings</variable> +- <valuemap type="QVariantMap"> +- <value type="bool" key="EditorConfiguration.AutoIndent">true</value> +- <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value> +- <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value> +- <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> +- <value type="QString" key="language">Cpp</value> +- <valuemap type="QVariantMap" key="value"> +- <value type="QByteArray" key="CurrentPreferences">CppGlobal</value> +- </valuemap> +- </valuemap> +- <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> +- <value type="QString" key="language">QmlJS</value> +- <valuemap type="QVariantMap" key="value"> +- <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> +- </valuemap> +- </valuemap> +- <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> +- <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value> +- <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value> +- <value type="int" key="EditorConfiguration.IndentSize">4</value> +- <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value> +- <value type="int" key="EditorConfiguration.MarginColumn">80</value> +- <value type="bool" key="EditorConfiguration.MouseHiding">true</value> +- <value type="bool" key="EditorConfiguration.MouseNavigation">true</value> +- <value type="int" key="EditorConfiguration.PaddingMode">1</value> +- <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> +- <value type="bool" key="EditorConfiguration.ShowMargin">false</value> +- <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value> +- <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> +- <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> +- <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> +- <value type="int" key="EditorConfiguration.TabSize">8</value> +- <value type="bool" key="EditorConfiguration.UseGlobal">true</value> +- <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value> +- <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value> +- <value type="bool" key="EditorConfiguration.cleanIndentation">true</value> +- <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> +- <value type="bool" key="EditorConfiguration.inEntireDocument">false</value> +- </valuemap> +- </data> +- <data> +- <variable>ProjectExplorer.Project.PluginSettings</variable> +- <valuemap type="QVariantMap"/> +- </data> +- <data> +- <variable>ProjectExplorer.Project.Target.0</variable> +- <valuemap type="QVariantMap"> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">未命名</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">未命名</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{a5d23c53-3dde-487d-b122-af4df0247ac0}</value> +- <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> +- <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> +- <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> +- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Debug</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> +- <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> +- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> +- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> +- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> +- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Release</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value> +- <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> +- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> +- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> +- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> +- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Profile</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> +- <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value> +- <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> +- </valuemap> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> +- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> +- <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/> +- <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> +- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> +- <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> +- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> +- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> +- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> +- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> +- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> +- <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> +- <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value> +- <valuelist type="QVariantList" key="Analyzer.Perf.Events"> +- <value type="QString">cpu-cycles</value> +- </valuelist> +- <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/> +- <value type="int" key="Analyzer.Perf.Frequency">250</value> +- <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments"> +- <value type="QString">-e</value> +- <value type="QString">cpu-cycles</value> +- <value type="QString">--call-graph</value> +- <value type="QString">dwarf,4096</value> +- <value type="QString">-F</value> +- <value type="QString">250</value> +- </valuelist> +- <value type="QString" key="Analyzer.Perf.SampleMode">-F</value> +- <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value> +- <value type="int" key="Analyzer.Perf.StackSize">4096</value> +- <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> +- <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> +- <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> +- <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> +- <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> +- <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> +- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> +- <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> +- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> +- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> +- <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> +- <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> +- <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> +- <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> +- <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value> +- <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> +- <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> +- <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> +- <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> +- <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> +- <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> +- <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> +- <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> +- <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> +- <value type="int">0</value> +- <value type="int">1</value> +- <value type="int">2</value> +- <value type="int">3</value> +- <value type="int">4</value> +- <value type="int">5</value> +- <value type="int">6</value> +- <value type="int">7</value> +- <value type="int">8</value> +- <value type="int">9</value> +- <value type="int">10</value> +- <value type="int">11</value> +- <value type="int">12</value> +- <value type="int">13</value> +- <value type="int">14</value> +- </valuelist> +- <value type="int" key="PE.EnvironmentAspect.Base">2</value> +- <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> +- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/fanyuchen/openkylin-scanner/kylin-scanner/kylin-scanner.pro</value> +- <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/fanyuchen/openkylin-scanner/kylin-scanner/kylin-scanner.pro</value> +- <value type="QString" key="RunConfiguration.Arguments"></value> +- <value type="bool" key="RunConfiguration.Arguments.multi">false</value> +- <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value> +- <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> +- <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> +- <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value> +- <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> +- <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> +- <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> +- <value type="QString" key="RunConfiguration.WorkingDirectory"></value> +- <value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/fanyuchen/openkylin-scanner/build-kylin-scanner-unknown-Debug</value> +- </valuemap> +- <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> +- </valuemap> +- </data> +- <data> +- <variable>ProjectExplorer.Project.TargetCount</variable> +- <value type="int">1</value> +- </data> +- <data> +- <variable>ProjectExplorer.Project.Updater.FileVersion</variable> +- <value type="int">22</value> +- </data> +- <data> +- <variable>Version</variable> +- <value type="int">22</value> +- </data> +-</qtcreator> +diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp +index 4972c8f..68b38a1 100644 +--- a/src/mainwidget.cpp ++++ b/src/mainwidget.cpp +@@ -50,6 +50,7 @@ MainWidget::MainWidget(QWidget *parent) + g_sane_object->hotplug_sock = init_hotplug_sock(); + m_detectScanDevicesThread.start(); + } ++ this->setAttribute(Qt::WA_AlwaysShowToolTips); + } + + MainWidget::~MainWidget() diff -Nru kylin-scanner-3.2.1/debian/patches/0038-Translated-using-Weblate-Vietnamese.patch kylin-scanner-3.2.1/debian/patches/0038-Translated-using-Weblate-Vietnamese.patch --- kylin-scanner-3.2.1/debian/patches/0038-Translated-using-Weblate-Vietnamese.patch 1970-01-01 08:00:00.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/0038-Translated-using-Weblate-Vietnamese.patch 2025-02-21 15:14:02.000000000 +0800 @@ -0,0 +1,2963 @@ +From: KevinDuan <duankaiwen@kylinos.cn> +Date: Thu, 20 Feb 2025 08:33:20 +0000 +Subject: Translated using Weblate (Vietnamese) + +Currently translated at 100.0% (216 of 216 strings) + +Translation: openkylin-nile-new/kylin-scanner +Translate-URL: http://weblate.openkylin.top/projects/openkylin-nile-new/kylin-scanner/vi/ +--- + translations/kylin-scanner_ar.ts | 428 +++++++++++++++++++------------------- + translations/kylin-scanner_vi.ts | 430 +++++++++++++++++++-------------------- + 2 files changed, 429 insertions(+), 429 deletions(-) + +diff --git a/translations/kylin-scanner_ar.ts b/translations/kylin-scanner_ar.ts +index 6452381..0442195 100644 +--- a/translations/kylin-scanner_ar.ts ++++ b/translations/kylin-scanner_ar.ts +@@ -114,7 +114,7 @@ + <message> + <location filename="../src/detectpagewidget.cpp" line="48"/> + <source>Detect scanners, please waiting</source> +- <translation type="unfinished"></translation> ++ <translation>كشف الماسحات الضوئية ، يرجى الانتظار</translation> + </message> + </context> + <context> +@@ -126,12 +126,12 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation type="unfinished"></translation> ++ <translation>لا توجد أجهزة فحص متوفرة</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> + <source>Connect</source> +- <translation type="unfinished"></translation> ++ <translation>عشق</translation> + </message> + </context> + <context> +@@ -144,7 +144,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>غير قادر على قراءة النص ، يرجى إعادة الرجوع</translation> + </message> + </context> + <context> +@@ -152,7 +152,7 @@ + <message> + <location filename="../src/about/about.ui" line="26"/> + <source>Dialog</source> +- <translation type="unfinished"></translation> ++ <translation>حوار</translation> + </message> + <message> + <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> +@@ -181,13 +181,13 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> + <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> + <source>Connect scanners, please click scan button to start scanning.</source> +- <translation type="unfinished"></translation> ++ <translation>قم بتوصيل الماسحات الضوئية ، يرجى النقر فوق زر المسح لبدء المسح.</translation> + </message> + <message> + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> + <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> +- <translation type="unfinished"></translation> ++ <translation>لم يتم اكتشاف ماسح ضوئي ، قم بتوصيل ماسح ضوئي جديد لتحديث قائمة الأجهزة.</translation> + </message> + </context> + <context> +@@ -200,7 +200,7 @@ + <location filename="../src/mainwidget.cpp" line="70"/> + <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <source>Yes</source> +@@ -233,7 +233,7 @@ + <message> + <location filename="../src/mainwidget.cpp" line="474"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> +- <translation type="unfinished"></translation> ++ <translation>وسيطة غير صالحة ، يرجى تغيير الوسيطات أو تبديل الماسحات الضوئية الأخرى.</translation> + </message> + <message> + <source>error code:</source> +@@ -242,7 +242,7 @@ + <message> + <location filename="../src/mainwidget.cpp" line="537"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص ، يرجى التحقق من الماسح الضوئي أو تبديل الماسحات الضوئية الأخرى. إذا كنت تريد الاستمرار في استخدام الماسح الضوئي، فانقر فوق خيارات، قم بتحديث القائمة لإعادة تشغيل الجهاز.</translation> + </message> + <message> + <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> +@@ -251,12 +251,12 @@ + <message> + <location filename="../src/mainwidget.cpp" line="619"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>تنبيه</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="619"/> + <source>A new Scanner has been connected.</source> +- <translation type="unfinished"></translation> ++ <translation>تم توصيل ماسح ضوئي جديد.</translation> + </message> + <message> + <source>error code: </source> +@@ -265,67 +265,67 @@ + <message> + <location filename="../src/mainwidget.cpp" line="172"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>موافق</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="506"/> + <source>Device busy, please wait or switch other scanners.</source> +- <translation type="unfinished"></translation> ++ <translation>الجهاز مشغول ، يرجى الانتظار أو تبديل الماسحات الضوئية الأخرى.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="510"/> + <source>Document feeder out of documents, please place papers and scan again.</source> +- <translation type="unfinished"></translation> ++ <translation>تغذية المستندات من المستندات ، يرجى وضع الأوراق ومسحها ضوئيا مرة أخرى.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="514"/> + <source>Scan operation has been cancelled.</source> +- <translation type="unfinished"></translation> ++ <translation>تم إلغاء عملية الفحص.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="518"/> + <source>Scan failed, operation is not supported.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص، العملية غير مدعومة.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="521"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص، انحشار فيدر المستندات.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="524"/> + <source>Scan failed, Error during device I/O.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص ، خطأ أثناء إدخال / إخراج الجهاز.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="527"/> + <source>Scan failed, Out of memory.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص، نفاد الذاكرة.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="530"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص، تم رفض الوصول إلى المورد.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="533"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل الفحص ، غطاء الماسح الضوئي مفتوح.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="584"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation type="unfinished"></translation> ++ <translation>تم اكتشاف سكون / نوم النظام. لضمان الاستخدام العادي للماسح الضوئي ، يرجى النقر فوق إعادة التشغيل لإعادة تشغيل تطبيق الماسح الضوئي. إذا كنت ترغب في متابعة تشغيل الصورة الممسوحة ضوئيا، فانقر فوق إلغاء، ولكن سيتم تعطيل الوظائف المتعلقة بالمسح الضوئي وستصبح سارية المفعول بعد إعادة التشغيل.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="589"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="590"/> + <source>Restart</source> +- <translation type="unfinished"></translation> ++ <translation>اعاده تشغيل</translation> + </message> + <message> + <source>Scan failed, please check your scanner or switch other scanners.</source> +@@ -334,12 +334,12 @@ + <message> + <location filename="../src/mainwidget.cpp" line="660"/> + <source>Running beauty ...</source> +- <translation type="unfinished"></translation> ++ <translation>جمال الجري ...</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="682"/> + <source>Running rectify ...</source> +- <translation type="unfinished"></translation> ++ <translation>تشغيل التصحيح ...</translation> + </message> + </context> + <context> +@@ -347,7 +347,7 @@ + <message> + <location filename="../src/nodevicewidget.cpp" line="43"/> + <source>Scanner not detected</source> +- <translation type="unfinished"></translation> ++ <translation>لم يتم اكتشاف الماسح الضوئي</translation> + </message> + </context> + <context> +@@ -357,7 +357,7 @@ + <location filename="../src/sendmail.cpp" line="77"/> + <location filename="../src/sendmail.cpp" line="78"/> + <source>No email client</source> +- <translation type="unfinished"></translation> ++ <translation>لا يوجد عميل بريد إلكتروني</translation> + </message> + <message> + <source>Scanner</source> +@@ -366,22 +366,22 @@ + <message> + <location filename="../src/sendmail.cpp" line="61"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="89"/> + <source>Not find email client in the system, please install email client firstly.</source> +- <translation type="unfinished"></translation> ++ <translation>لا تجد عميل البريد الإلكتروني في النظام ، يرجى تثبيت عميل البريد الإلكتروني أولا.</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="103"/> + <source>Install</source> +- <translation type="unfinished"></translation> ++ <translation>أقام</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="101"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + </context> + <context> +@@ -403,7 +403,7 @@ + <message> + <location filename="../src/main.cpp" line="176"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> +@@ -413,7 +413,7 @@ + <location filename="../src/scansettingswidget.cpp" line="531"/> + <location filename="../src/scansettingswidget.cpp" line="553"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>وحدة تغذية المستندات التلقائية على الوجهين</translation> + </message> + <message> + <source>Fail to open the scanner, error code </source> +@@ -422,12 +422,12 @@ + <message> + <location filename="../src/saneobject.cpp" line="588"/> + <source>Fail to open the scanner</source> +- <translation type="unfinished"></translation> ++ <translation>فشل في فتح الماسح الضوئي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2085"/> + <source>Auto</source> +- <translation type="unfinished"></translation> ++ <translation>تلقائي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="450"/> +@@ -436,27 +436,27 @@ + <location filename="../src/scansettingswidget.cpp" line="531"/> + <location filename="../src/scansettingswidget.cpp" line="553"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>ضعف</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="211"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>مسطحه</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="59"/> + <source>Refreshing list. Please wait for the refresh success information...</source> +- <translation type="unfinished"></translation> ++ <translation>قائمة تحديث. يرجى انتظار معلومات نجاح التحديث ...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="65"/> + <source>Scanner is on detecting...</source> +- <translation type="unfinished"></translation> ++ <translation>الماسح الضوئي قيد الكشف عن ...</translation> + </message> + <message> + <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> + <source>Single</source> +- <translation type="unfinished"></translation> ++ <translation>واحد</translation> + </message> + </context> + <context> +@@ -468,132 +468,132 @@ + <message> + <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation type="unfinished"></translation> ++ <translation>سؤال</translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation type="unfinished"></translation> ++ <translation>حالي </translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation type="unfinished"></translation> ++ <translation> مستخدم</translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation type="unfinished"></translation> ++ <translation> لقد فتح بالفعل kylin-scanner ، سيغلق الفتح </translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation type="unfinished"></translation> ++ <translation>العمليات. هل تستمر؟</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="660"/> + <source>Color</source> +- <translation type="unfinished"></translation> ++ <translation>لون</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="667"/> + <source>Gray</source> +- <translation type="unfinished"></translation> ++ <translation>رمادي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="673"/> + <source>Lineart</source> +- <translation type="unfinished"></translation> ++ <translation>لاين آرت</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="738"/> + <source>Default Type</source> +- <translation type="unfinished"></translation> ++ <translation>النوع الافتراضي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="817"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>مسطحه</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="827"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="836"/> + <source>ADF Front</source> +- <translation type="unfinished"></translation> ++ <translation>ADF الأمامي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="845"/> + <source>ADF Back</source> +- <translation type="unfinished"></translation> ++ <translation>ADF الخلفي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="854"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>وحدة تغذية المستندات التلقائية على الوجهين</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="904"/> + <location filename="../src/saneobject.cpp" line="968"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="907"/> + <location filename="../src/saneobject.cpp" line="972"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 نقطة لكل بوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="910"/> + <location filename="../src/saneobject.cpp" line="976"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="913"/> + <location filename="../src/saneobject.cpp" line="980"/> + <source>600 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>600 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="916"/> + <location filename="../src/saneobject.cpp" line="984"/> + <source>300 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>300 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="919"/> + <location filename="../src/saneobject.cpp" line="988"/> + <source>200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>200 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="922"/> + <location filename="../src/saneobject.cpp" line="992"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="925"/> + <location filename="../src/saneobject.cpp" line="996"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="928"/> + <location filename="../src/saneobject.cpp" line="1000"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="946"/> + <location filename="../src/saneobject.cpp" line="1016"/> + <source>Auto</source> +- <translation type="unfinished"></translation> ++ <translation>تلقائي</translation> + </message> + </context> + <context> +@@ -602,13 +602,13 @@ + <location filename="../src/runningdialog.cpp" line="55"/> + <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> + <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + </context> + <context> +@@ -616,32 +616,32 @@ + <message> + <location filename="../src/saneobject.cpp" line="2011"/> + <source>Default Type</source> +- <translation type="unfinished"></translation> ++ <translation>النوع الافتراضي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2003"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>مسطحه</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="416"/> + <source>Refresh list complete.</source> +- <translation type="unfinished"></translation> ++ <translation>اكتمل تحديث القائمة.</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2005"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2007"/> + <source>ADF Front</source> +- <translation type="unfinished"></translation> ++ <translation>ADF الأمامي</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2009"/> + <source>ADF Back</source> +- <translation type="unfinished"></translation> ++ <translation>ADF الخلفي</translation> + </message> + <message> + <source>Lineart</source> +@@ -658,7 +658,7 @@ + <message> + <location filename="../src/saneobject.cpp" line="2013"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>وحدة تغذية المستندات التلقائية على الوجهين</translation> + </message> + <message> + <source>Auto</source> +@@ -667,47 +667,47 @@ + <message> + <location filename="../src/saneobject.cpp" line="2089"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2091"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2093"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2095"/> + <source>200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>200 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2097"/> + <source>300 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>300 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2099"/> + <source>600 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>600 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2101"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2103"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 نقطة لكل بوصة</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2105"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 نقطة في البوصة</translation> + </message> + <message> + <source>Multiple</source> +@@ -720,18 +720,18 @@ + <location filename="../src/scandialog.cpp" line="47"/> + <location filename="../src/scandialog.cpp" line="62"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="66"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="86"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> +- <translation type="unfinished"></translation> ++ <translation>عدد الصفحات التي يتم مسحها ضوئيا: </translation> + </message> + <message> + <source>Number of pages being scanned: </source> +@@ -740,17 +740,17 @@ + <message> + <location filename="../src/scandialog.cpp" line="98"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="153"/> + <source>Canceling scan,please wait a moment!</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الفحص ، يرجى الانتظار لحظة!</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="182"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>ضعف</translation> + </message> + </context> + <context> +@@ -762,7 +762,7 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="769"/> + <source>Scanner device</source> +- <translation type="unfinished"></translation> ++ <translation>جهاز الماسحة الضوئية</translation> + </message> + <message> + <source>Time</source> +@@ -771,95 +771,95 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="774"/> + <source>File settings</source> +- <translation type="unfinished"></translation> ++ <translation>إعدادات الملف</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="601"/> + <source>Device</source> +- <translation type="unfinished"></translation> ++ <translation>جهاز</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="126"/> + <source>Select a directory</source> +- <translation type="unfinished"></translation> ++ <translation>حدد دليلا</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="149"/> + <source>Currently user has no permission to modify directory </source> +- <translation type="unfinished"></translation> ++ <translation>حاليا لا يمتلك المستخدم أي إذن لتعديل الدليل </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="212"/> + <source>Flatbed scan mode not support multiple scan.</source> +- <translation type="unfinished"></translation> ++ <translation>لا يدعم وضع المسح الضوئي المسطح المسح الضوئي المتعدد.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="217"/> + <location filename="../src/scansettingswidget.cpp" line="967"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>ضعف</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="299"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation type="unfinished"></translation> ++ <translation>سيستغرق هذا القرار وقتا طويلا للمسح الضوئي ، يرجى الاختيار بعناية.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>تنبيه</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="602"/> + <source>Pages</source> +- <translation type="unfinished"></translation> ++ <translation>الصفحات</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Type</source> +- <translation type="unfinished"></translation> ++ <translation>نوع</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="281"/> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Color</source> +- <translation type="unfinished"></translation> ++ <translation>لون</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="605"/> + <source>Resolution</source> +- <translation type="unfinished"></translation> ++ <translation>دقة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="606"/> + <source>Size</source> +- <translation type="unfinished"></translation> ++ <translation>حجم</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="607"/> + <source>Format</source> +- <translation type="unfinished"></translation> ++ <translation>تنسيق</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="608"/> + <source>Name</source> +- <translation type="unfinished"></translation> ++ <translation>اسم</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="777"/> + <source>scanner01</source> +- <translation type="unfinished"></translation> ++ <translation>الماسح الضوئي01</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="609"/> + <source>Save</source> +- <translation type="unfinished"></translation> ++ <translation>أنقذ</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="617"/> + <location filename="../src/scansettingswidget.cpp" line="618"/> + <source>Mail to</source> +- <translation type="unfinished"></translation> ++ <translation>البريد إلى</translation> + </message> + <message> + <source>Send email</source> +@@ -870,7 +870,7 @@ + <location filename="../src/scansettingswidget.cpp" line="1148"/> + <location filename="../src/scansettingswidget.cpp" line="1149"/> + <source>Save as</source> +- <translation type="unfinished"></translation> ++ <translation>حفظ باسم</translation> + </message> + <message> + <source>No available scanners</source> +@@ -882,22 +882,22 @@ + <location filename="../src/scansettingswidget.cpp" line="270"/> + <location filename="../src/scansettingswidget.cpp" line="967"/> + <source>Single</source> +- <translation type="unfinished"></translation> ++ <translation>واحد</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="295"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 نقطة لكل بوصة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 نقطة في البوصة</translation> + </message> + <message> + <source>This resolution will take a loog time to scan, please choose carelly.</source> +@@ -906,44 +906,44 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="327"/> + <source>cannot contain '/' character.</source> +- <translation type="unfinished"></translation> ++ <translation>لا يمكن أن تحتوي على حرف "/".</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="332"/> + <location filename="../src/scansettingswidget.cpp" line="472"/> + <source>cannot save as hidden file.</source> +- <translation type="unfinished"></translation> ++ <translation>لا يمكن حفظه كملف مخفي.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="461"/> + <source>Save As</source> +- <translation type="unfinished"></translation> ++ <translation>حفظ باسم</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="485"/> + <source>Path without access rights: </source> +- <translation type="unfinished"></translation> ++ <translation>المسار بدون حقوق الوصول: </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="489"/> + <source>File path that does not exist: </source> +- <translation type="unfinished"></translation> ++ <translation>مسار الملف غير الموجود: </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="548"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> +- <translation type="unfinished"></translation> ++ <translation> موجود بالفعل ، هل تريد الكتابة فوقه؟ إذا كنت تقوم بإجراء فحص متعدد الصفحات، فقد يتسبب ذلك في الكتابة فوق ملفات متعددة. من فضلك كن حذرا!</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="746"/> + <source>Start Scan</source> +- <translation type="unfinished"></translation> ++ <translation>بدء المسح</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1139"/> + <location filename="../src/scansettingswidget.cpp" line="1140"/> + <source>Store text</source> +- <translation type="unfinished"></translation> ++ <translation>تخزين النص</translation> + </message> + <message> + <source>Save as dialog</source> +@@ -952,7 +952,7 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="547"/> + <source>The file </source> +- <translation type="unfinished"></translation> ++ <translation>الملف </translation> + </message> + <message> + <source> already exists, do you want to overwrite it?</source> +@@ -961,12 +961,12 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="550"/> + <source>tips</source> +- <translation type="unfinished"></translation> ++ <translation>النصائح</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="604"/> + <source>Colour</source> +- <translation type="unfinished"></translation> ++ <translation>لون</translation> + </message> + <message> + <source>3s</source> +@@ -992,17 +992,17 @@ + <location filename="../src/scansettingswidget.cpp" line="269"/> + <location filename="../src/scansettingswidget.cpp" line="984"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>مسطحه</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="984"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Gray</source> +- <translation type="unfinished"></translation> ++ <translation>رمادي</translation> + </message> + <message> + <source>Cancel</source> +@@ -1012,37 +1012,37 @@ + <location filename="../src/scansettingswidget.cpp" line="283"/> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Lineart</source> +- <translation type="unfinished"></translation> ++ <translation>لاين آرت</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 نقطة في البوصة</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1053"/> + <source>Resolution is empty!</source> +- <translation type="unfinished"></translation> ++ <translation>القرار فارغ!</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1068"/> + <source>A4</source> +- <translation type="unfinished"></translation> ++ <translation>أ 4</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1068"/> + <source>A5</source> +- <translation type="unfinished"></translation> ++ <translation>أ 5</translation> + </message> + <message> + <source>Scanning images's length cannot be large than 252</source> +@@ -1051,12 +1051,12 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1368"/> + <source>Yes</source> +- <translation type="unfinished"></translation> ++ <translation>نعم</translation> + </message> + </context> + <context> +@@ -1092,29 +1092,29 @@ + <location filename="../src/sendmail.cpp" line="198"/> + <location filename="../src/sendmail.cpp" line="222"/> + <source>Select email client</source> +- <translation type="unfinished"></translation> ++ <translation>حدد عميل البريد الإلكتروني</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="204"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="207"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="236"/> + <location filename="../src/sendmail.cpp" line="237"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="240"/> + <location filename="../src/sendmail.cpp" line="241"/> + <source>Confirm</source> +- <translation type="unfinished"></translation> ++ <translation>أكد</translation> + </message> + </context> + <context> +@@ -1122,27 +1122,27 @@ + <message> + <location filename="../src/showimagewidget.cpp" line="66"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="74"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>موافق</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1148"/> + <source>Canceling...Please waiting...</source> +- <translation type="unfinished"></translation> ++ <translation>الغاء... من فضلك انتظر...</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1159"/> + <source>Running beauty ...</source> +- <translation type="unfinished"></translation> ++ <translation>جمال الجري ...</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1192"/> + <source>Running rectify ...</source> +- <translation type="unfinished"></translation> ++ <translation>تشغيل التصحيح ...</translation> + </message> + </context> + <context> +@@ -1150,24 +1150,24 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="29"/> + <source>Form</source> +- <translation type="unfinished"></translation> ++ <translation>شكل</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation type="unfinished"></translation> ++ <translation>الماسح الضوئي kylin</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> + <location filename="../src/titlebar/titlebar.h" line="83"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="173"/> + <source>Option</source> +- <translation type="unfinished"></translation> ++ <translation>خيار</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="176"/> +@@ -1177,18 +1177,18 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="217"/> + <source>Minimize</source> +- <translation type="unfinished"></translation> ++ <translation>تصغير</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="258"/> + <location filename="../src/titlebar/titlebar.cpp" line="145"/> + <source>Maximize</source> +- <translation type="unfinished"></translation> ++ <translation>تعظيم</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="305"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <source>Maxmize</source> +@@ -1197,42 +1197,42 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="53"/> + <source>Refresh List</source> +- <translation type="unfinished"></translation> ++ <translation>قائمة التحديث</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="70"/> + <source>Help</source> +- <translation type="unfinished"></translation> ++ <translation>تعليمات</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="74"/> + <source>About</source> +- <translation type="unfinished"></translation> ++ <translation>عن</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="76"/> + <source>Version: </source> +- <translation type="unfinished"></translation> ++ <translation>الإصدار: </translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="77"/> + <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> +- <translation type="unfinished"></translation> ++ <translation>يوفر Message وظائف الدردشة النصية ونقل الملفات في شبكة LAN. ليست هناك حاجة لبناء خادم. وهو يدعم عدة أشخاص للتفاعل في نفس الوقت والإرسال والاستقبال بالتوازي.</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="87"/> + <source>Exit</source> +- <translation type="unfinished"></translation> ++ <translation>مخرج</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="142"/> + <source>Restore</source> +- <translation type="unfinished"></translation> ++ <translation>يستعيد</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="192"/> + <source>The current file is not saved. Do you want to save it?</source> +- <translation type="unfinished"></translation> ++ <translation>لم يتم حفظ الملف الحالي. هل تريد حفظه؟</translation> + </message> + <message> + <source>The current document is not saved. Do you want to save it?</source> +@@ -1241,12 +1241,12 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="196"/> + <source>Straight &Exit</source> +- <translation type="unfinished"></translation> ++ <translation>مستقيم & خروج</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="197"/> + <source>&Save Exit</source> +- <translation type="unfinished"></translation> ++ <translation>&حفظ الخروج</translation> + </message> + </context> + <context> +@@ -1255,55 +1255,55 @@ + <location filename="../src/toolbarwidget.cpp" line="64"/> + <location filename="../src/toolbarwidget.cpp" line="158"/> + <source>Beauty</source> +- <translation type="unfinished"></translation> ++ <translation>جمال</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="70"/> + <location filename="../src/toolbarwidget.cpp" line="164"/> + <source>Rectify</source> +- <translation type="unfinished"></translation> ++ <translation>عدل</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="76"/> + <location filename="../src/toolbarwidget.cpp" line="170"/> + <source>OCR</source> +- <translation type="unfinished"></translation> ++ <translation>التعرف الضوئي على الحروف</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="84"/> + <location filename="../src/toolbarwidget.cpp" line="178"/> + <source>Crop</source> +- <translation type="unfinished"></translation> ++ <translation>محصول</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="90"/> + <location filename="../src/toolbarwidget.cpp" line="184"/> + <source>Rotate</source> +- <translation type="unfinished"></translation> ++ <translation>دور</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="96"/> + <location filename="../src/toolbarwidget.cpp" line="190"/> + <source>Mirror</source> +- <translation type="unfinished"></translation> ++ <translation>مرآة</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="102"/> + <location filename="../src/toolbarwidget.cpp" line="196"/> + <source>Watermark</source> +- <translation type="unfinished"></translation> ++ <translation>العلامه المائيه</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="121"/> + <location filename="../src/toolbarwidget.cpp" line="215"/> + <source>ZoomIn</source> +- <translation type="unfinished"></translation> ++ <translation>تكبير</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="115"/> + <location filename="../src/toolbarwidget.cpp" line="209"/> + <source>ZoomOut</source> +- <translation type="unfinished"></translation> ++ <translation>تصغير</translation> + </message> + </context> + <context> +@@ -1327,27 +1327,27 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="95"/> + <source>Querying scanner device. Please waitting...</source> +- <translation type="unfinished"></translation> ++ <translation>الاستعلام عن جهاز الماسح الضوئي. من فضلك انتظر ...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="119"/> + <source>New Scanner has been Connected.</source> +- <translation type="unfinished"></translation> ++ <translation>تم توصيل ماسح ضوئي جديد.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="129"/> + <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> +- <translation type="unfinished"></translation> ++ <translation>تم فصل الماسح الضوئي. إذا قمت بفصل الماسح الضوئي قيد الفحص، فانقر فوق إلغاء الفحص أو انتظر حتى يقوم الماسح الضوئي بالإبلاغ عن رسالة خطأ.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="135"/> + <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> +- <translation type="unfinished"></translation> ++ <translation>الماسح الضوئي هو قطع الاتصال ، تحديث قائمة الماسح الضوئي. من فضلك انتظر ...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="150"/> + <source>Scanner list refresh complete.</source> +- <translation type="unfinished"></translation> ++ <translation>اكتمل تحديث قائمة الماسح الضوئي.</translation> + </message> + </context> + <context> +@@ -1355,12 +1355,12 @@ + <message> + <location filename="../src/waittingdialog.cpp" line="46"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/waittingdialog.cpp" line="59"/> + <source>Searching for scanner...</source> +- <translation type="unfinished"></translation> ++ <translation>البحث عن ماسح ضوئي...</translation> + </message> + </context> + <context> +@@ -1368,27 +1368,27 @@ + <message> + <location filename="../src/watermarkdialog.cpp" line="46"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="54"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="65"/> + <source>Add watermark</source> +- <translation type="unfinished"></translation> ++ <translation>إضافة علامة مائية</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="81"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="84"/> + <source>Confirm</source> +- <translation type="unfinished"></translation> ++ <translation>أكد</translation> + </message> + </context> + <context> +@@ -1396,17 +1396,17 @@ + <message> + <location filename="../src/main.cpp" line="200"/> + <source>Open file <filename></source> +- <translation type="unfinished"></translation> ++ <translation>افتح الملف <filename></translation> + </message> + <message> + <location filename="../src/main.cpp" line="201"/> + <source>Filename</source> +- <translation type="unfinished"></translation> ++ <translation>اسم الملف</translation> + </message> + <message> + <location filename="../src/main.cpp" line="205"/> + <source>Hide scan settings widget</source> +- <translation type="unfinished"></translation> ++ <translation>إخفاء أداة إعدادات الفحص</translation> + </message> + </context> + <context> +@@ -1414,39 +1414,39 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Name</source> +- <translation type="unfinished"></translation> ++ <translation>اسم</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Symbol</source> +- <translation type="unfinished"></translation> ++ <translation>رمز</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation type="unfinished"></translation> ++ <translation>نوع</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <location filename="../src/newdevicelistpage.cpp" line="255"/> + <location filename="../src/newdevicelistpage.cpp" line="259"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>تنبيه</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation type="unfinished"></translation> ++ <translation>تحتاج إلى التأكد يدويا مما إذا كانت أجهزة الطابعة المضمنة في القائمة تقوم بمسح وطباعة الأجهزة المتكاملة في واحد. إذا لم يقوموا بمسح الأجهزة المتكاملة وطباعتها ، فتجاهلها.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>غلق</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="84"/> + <source>Device List</source> +- <translation type="unfinished"></translation> ++ <translation>قائمة الأجهزة</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> +@@ -1454,73 +1454,73 @@ + <location filename="../src/newdevicelistpage.cpp" line="309"/> + <location filename="../src/newdevicelistpage.cpp" line="366"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>إلغاء الأمر</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="98"/> + <source>Next</source> +- <translation type="unfinished"></translation> ++ <translation>مقبل</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="118"/> + <source>Before</source> +- <translation type="unfinished"></translation> ++ <translation>قبل</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="119"/> + <source>Install</source> +- <translation type="unfinished"></translation> ++ <translation>أقام</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="189"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>ماسح ضوئي</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="191"/> + <source>Printer</source> +- <translation type="unfinished"></translation> ++ <translation>طابعة</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="208"/> + <source>Device Name:</source> +- <translation type="unfinished"></translation> ++ <translation>اسم الجهاز:</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="212"/> + <source>Driver Name:</source> +- <translation type="unfinished"></translation> ++ <translation>اسم السائق:</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="255"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation type="unfinished"></translation> ++ <translation>هذا السائق من طرف ثالث ، وقد يتسبب في بعض النتائج التي لا يمكن مواجهتها.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="259"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation type="unfinished"></translation> ++ <translation>يتم توفير برنامج التشغيل هذا من قبل الشركة المصنعة. يرجى الاتصال بالشركة المصنعة المقابلة للجهاز للحصول على برنامج التشغيل.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="303"/> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation type="unfinished"></translation> ++ <translation>لا توجد برامج تشغيل متوفرة ، هل تريد إضافة برامج تشغيل يدويا؟</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="307"/> + <source>Add</source> +- <translation type="unfinished"></translation> ++ <translation>جمع</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="344"/> + <location filename="../src/newdevicelistpage.cpp" line="449"/> + <source>Installing driver...</source> +- <translation type="unfinished"></translation> ++ <translation>تثبيت برنامج التشغيل...</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="361"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation type="unfinished"></translation> ++ <translation>تم التثبيت بنجاح. هل تريد استخدام هذا الماسح الضوئي الآن؟ انقر فوق "استخدام" لإعادة تعيين udev (كلمة مرور المسؤول مطلوبة) وأعد تشغيل تطبيق المسح لتحديث قائمة الأجهزة. إذا كنت لا تزال ترغب في متابعة تشغيل الصورة الممسوحة ضوئيا ، فستحتاج إلى إعادة التشغيل يدويا واستخدام وظيفة المسح.</translation> + </message> + <message> + <source>Installation successful. Do you want to use this scanner now?</source> +@@ -1529,22 +1529,22 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="367"/> + <source>Use</source> +- <translation type="unfinished"></translation> ++ <translation>استخدام</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="398"/> + <source>Installation failed.</source> +- <translation type="unfinished"></translation> ++ <translation>فشل التثبيت.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="401"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>موافق</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="443"/> + <source>Select a directory</source> +- <translation type="unfinished"></translation> ++ <translation>حدد دليلا</translation> + </message> + </context> + <context> +@@ -1554,7 +1554,7 @@ + <location filename="../src/showocrwidget.cpp" line="157"/> + <location filename="../src/showocrwidget.cpp" line="165"/> + <source>The document is in character recognition ...</source> +- <translation type="unfinished"></translation> ++ <translation>المستند في التعرف على الأحرف ...</translation> + </message> + </context> + </TS> +diff --git a/translations/kylin-scanner_vi.ts b/translations/kylin-scanner_vi.ts +index 11ec94d..fc9f880 100644 +--- a/translations/kylin-scanner_vi.ts ++++ b/translations/kylin-scanner_vi.ts +@@ -114,12 +114,12 @@ + <message> + <location filename="../src/detectpagewidget.cpp" line="33"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/detectpagewidget.cpp" line="49"/> + <source>Detect scanners, please waiting</source> +- <translation type="unfinished"></translation> ++ <translation>Phát hiện máy quét, vui lòng chờ đợi</translation> + </message> + </context> + <context> +@@ -131,12 +131,12 @@ + <message> + <location filename="../src/failedpagewidget.cpp" line="65"/> + <source>No available scan devices</source> +- <translation type="unfinished"></translation> ++ <translation>Không có thiết bị quét khả dụng</translation> + </message> + <message> + <location filename="../src/failedpagewidget.cpp" line="69"/> + <source>Connect</source> +- <translation type="unfinished"></translation> ++ <translation>Kết nối</translation> + </message> + </context> + <context> +@@ -149,7 +149,7 @@ + <location filename="../src/imageOp/imageoperationocr.cpp" line="46"/> + <location filename="../src/imageOp/imageoperationocr.cpp" line="58"/> + <source>Unable to read text, please retrey</source> +- <translation type="unfinished"></translation> ++ <translation>Không thể đọc văn bản, vui lòng đọc lại</translation> + </message> + </context> + <context> +@@ -157,7 +157,7 @@ + <message> + <location filename="../src/about/about.ui" line="26"/> + <source>Dialog</source> +- <translation type="unfinished"></translation> ++ <translation>Thoại</translation> + </message> + <message> + <source>Scanner is an interface-friendly scanner, which could be also used as one-click beautification, intelligent correction and text recognition tools.</source> +@@ -186,13 +186,13 @@ + <location filename="../src/leftsuccesspagewidget.cpp" line="46"/> + <location filename="../src/leftsuccesspagewidget.cpp" line="73"/> + <source>Connect scanners, please click scan button to start scanning.</source> +- <translation type="unfinished"></translation> ++ <translation>Kết nối máy quét, vui lòng nhấp vào nút quét để bắt đầu quét.</translation> + </message> + <message> + <location filename="../src/leftsuccesspagewidget.cpp" line="48"/> + <source>No scanner detected, plug in a new scanner to refresh the device list.</source> + <translatorcomment>未检测到扫描仪,请插入新的扫描仪以刷新设备列表。</translatorcomment> +- <translation type="unfinished"></translation> ++ <translation>Không phát hiện thấy máy quét, hãy cắm máy quét mới để làm mới danh sách thiết bị.</translation> + </message> + </context> + <context> +@@ -205,7 +205,7 @@ + <location filename="../src/mainwidget.cpp" line="70"/> + <location filename="../src/mainwidget.cpp" line="170"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <source>Yes</source> +@@ -238,7 +238,7 @@ + <message> + <location filename="../src/mainwidget.cpp" line="474"/> + <source>Invalid argument, please change arguments or switch other scanners.</source> +- <translation type="unfinished"></translation> ++ <translation>Đối số không hợp lệ, vui lòng thay đổi đối số hoặc chuyển đổi các máy quét khác.</translation> + </message> + <message> + <source>error code:</source> +@@ -247,7 +247,7 @@ + <message> + <location filename="../src/mainwidget.cpp" line="537"/> + <source>Scan failed, please check your scanner or switch other scanners. If you want to continue using the scanner, click Options, refresh the list to restart the device.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, vui lòng kiểm tra máy quét của bạn hoặc chuyển đổi các máy quét khác. Nếu bạn muốn tiếp tục sử dụng máy quét, hãy nhấp vào Tùy chọn, làm mới danh sách để khởi động lại thiết bị.</translation> + </message> + <message> + <source>Detected user manual hibernation. Please check the scanner status. If scanning does not continue, you need to manually click cancel or refresh the list to resume device scanning function.</source> +@@ -256,12 +256,12 @@ + <message> + <location filename="../src/mainwidget.cpp" line="619"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>Cảnh báo</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="619"/> + <source>A new Scanner has been connected.</source> +- <translation type="unfinished"></translation> ++ <translation>Một Máy quét mới đã được kết nối.</translation> + </message> + <message> + <source>error code: </source> +@@ -270,67 +270,67 @@ + <message> + <location filename="../src/mainwidget.cpp" line="172"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>Ok</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="506"/> + <source>Device busy, please wait or switch other scanners.</source> +- <translation type="unfinished"></translation> ++ <translation>Thiết bị bận, vui lòng đợi hoặc chuyển đổi các máy quét khác.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="510"/> + <source>Document feeder out of documents, please place papers and scan again.</source> +- <translation type="unfinished"></translation> ++ <translation>Khay nạp tài liệu ra khỏi tài liệu, vui lòng đặt giấy và quét lại.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="514"/> + <source>Scan operation has been cancelled.</source> +- <translation type="unfinished"></translation> ++ <translation>Hoạt động quét đã bị hủy.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="518"/> + <source>Scan failed, operation is not supported.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, hoạt động không được hỗ trợ.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="521"/> + <source>Scan failed, Document fedder jammed.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, Bộ nạp tài liệu bị kẹt.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="524"/> + <source>Scan failed, Error during device I/O.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, Lỗi trong khi I / O thiết bị.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="527"/> + <source>Scan failed, Out of memory.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, hết bộ nhớ.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="530"/> + <source>Scan failed, Access to resource has been denied.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, Quyền truy cập vào tài nguyên đã bị từ chối.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="533"/> + <source>Scan failed, Scanner cover is open.</source> +- <translation type="unfinished"></translation> ++ <translation>Quét không thành công, Nắp máy quét đang mở.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="584"/> + <source>System sleep/sleep detected. To ensure normal use of the scanner, please click on restart to restart the scanner application. If you want to continue operating the scanned image, click cancel, but the scanning related functions will be disabled and will take effect after restarting.</source> +- <translation type="unfinished"></translation> ++ <translation>Đã phát hiện ngủ / ngủ hệ thống. Để đảm bảo sử dụng máy quét bình thường, vui lòng nhấp vào khởi động lại để khởi động lại ứng dụng máy quét. Nếu bạn muốn tiếp tục vận hành hình ảnh đã quét, hãy nhấp vào hủy, nhưng các chức năng liên quan đến quét sẽ bị tắt và sẽ có hiệu lực sau khi khởi động lại.</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="589"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="590"/> + <source>Restart</source> +- <translation type="unfinished"></translation> ++ <translation>Khởi động lại</translation> + </message> + <message> + <source>Scan failed, please check your scanner or switch other scanners.</source> +@@ -339,12 +339,12 @@ + <message> + <location filename="../src/mainwidget.cpp" line="660"/> + <source>Running beauty ...</source> +- <translation type="unfinished"></translation> ++ <translation>Vẻ đẹp chạy ...</translation> + </message> + <message> + <location filename="../src/mainwidget.cpp" line="682"/> + <source>Running rectify ...</source> +- <translation type="unfinished"></translation> ++ <translation>Chạy chỉnh sửa ...</translation> + </message> + </context> + <context> +@@ -352,7 +352,7 @@ + <message> + <location filename="../src/nodevicewidget.cpp" line="43"/> + <source>Scanner not detected</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét không được phát hiện</translation> + </message> + </context> + <context> +@@ -362,7 +362,7 @@ + <location filename="../src/sendmail.cpp" line="77"/> + <location filename="../src/sendmail.cpp" line="78"/> + <source>No email client</source> +- <translation type="unfinished"></translation> ++ <translation>Không có ứng dụng email</translation> + </message> + <message> + <source>Scanner</source> +@@ -371,22 +371,22 @@ + <message> + <location filename="../src/sendmail.cpp" line="61"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="89"/> + <source>Not find email client in the system, please install email client firstly.</source> +- <translation type="unfinished"></translation> ++ <translation>Không tìm thấy ứng dụng email trong hệ thống, vui lòng cài đặt ứng dụng email trước.</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="103"/> + <source>Install</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="101"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + </context> + <context> +@@ -408,7 +408,7 @@ + <message> + <location filename="../src/main.cpp" line="176"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> +@@ -418,7 +418,7 @@ + <location filename="../src/scansettingswidget.cpp" line="531"/> + <location filename="../src/scansettingswidget.cpp" line="553"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>ADF Hai mặt</translation> + </message> + <message> + <source>Fail to open the scanner, error code </source> +@@ -427,12 +427,12 @@ + <message> + <location filename="../src/saneobject.cpp" line="588"/> + <source>Fail to open the scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Không mở được máy quét</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2085"/> + <source>Auto</source> +- <translation type="unfinished"></translation> ++ <translation>Xe ô tô</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="450"/> +@@ -441,27 +441,27 @@ + <location filename="../src/scansettingswidget.cpp" line="531"/> + <location filename="../src/scansettingswidget.cpp" line="553"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>Nhiều</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="211"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>Phẳng</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="59"/> + <source>Refreshing list. Please wait for the refresh success information...</source> +- <translation type="unfinished"></translation> ++ <translation>Danh sách làm mới. Vui lòng đợi thông tin làm mới thành công...</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="65"/> + <source>Scanner is on detecting...</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét đang phát hiện...</translation> + </message> + <message> + <location filename="../src/imageBaseOP/savefilebase.cpp" line="235"/> + <source>Single</source> +- <translation type="unfinished"></translation> ++ <translation>Đơn</translation> + </message> + </context> + <context> +@@ -473,132 +473,132 @@ + <message> + <location filename="../src/singleapplication.cpp" line="287"/> + <source>Question</source> +- <translation type="unfinished"></translation> ++ <translation>Câu hỏi</translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="284"/> + <source>Current </source> +- <translation type="unfinished"></translation> ++ <translation>Dòng </translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="284"/> + <source> User</source> +- <translation type="unfinished"></translation> ++ <translation> Người dùng</translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="285"/> + <source> has already opened kylin-scanner, open will close </source> +- <translation type="unfinished"></translation> ++ <translation> đã mở kylin-scanner, mở sẽ đóng </translation> + </message> + <message> + <location filename="../src/singleapplication.cpp" line="286"/> + <source>'s operations. Are you continue?</source> +- <translation type="unfinished"></translation> ++ <translation>hoạt động của họ. Bạn có tiếp tục không?</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="660"/> + <source>Color</source> +- <translation type="unfinished"></translation> ++ <translation>Màu</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="667"/> + <source>Gray</source> +- <translation type="unfinished"></translation> ++ <translation>Màu xám</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="673"/> + <source>Lineart</source> +- <translation type="unfinished"></translation> ++ <translation>Vẽ đường nét</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="738"/> + <source>Default Type</source> +- <translation type="unfinished"></translation> ++ <translation>Loại mặc định</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="817"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>Phẳng</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="827"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="836"/> + <source>ADF Front</source> +- <translation type="unfinished"></translation> ++ <translation>Mặt trước ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="845"/> + <source>ADF Back</source> +- <translation type="unfinished"></translation> ++ <translation>ADF Quay lại</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="854"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>ADF Hai mặt</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="904"/> + <location filename="../src/saneobject.cpp" line="968"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="907"/> + <location filename="../src/saneobject.cpp" line="972"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="910"/> + <location filename="../src/saneobject.cpp" line="976"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="913"/> + <location filename="../src/saneobject.cpp" line="980"/> + <source>600 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>600 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="916"/> + <location filename="../src/saneobject.cpp" line="984"/> + <source>300 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>300 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="919"/> + <location filename="../src/saneobject.cpp" line="988"/> + <source>200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>200 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="922"/> + <location filename="../src/saneobject.cpp" line="992"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="925"/> + <location filename="../src/saneobject.cpp" line="996"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="928"/> + <location filename="../src/saneobject.cpp" line="1000"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="946"/> + <location filename="../src/saneobject.cpp" line="1016"/> + <source>Auto</source> +- <translation type="unfinished"></translation> ++ <translation>Xe ô tô</translation> + </message> + </context> + <context> +@@ -607,13 +607,13 @@ + <location filename="../src/runningdialog.cpp" line="55"/> + <location filename="../src/runningdialog.cpp" line="141"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/runningdialog.cpp" line="84"/> + <location filename="../src/runningdialog.cpp" line="170"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + </context> + <context> +@@ -621,32 +621,32 @@ + <message> + <location filename="../src/saneobject.cpp" line="2011"/> + <source>Default Type</source> +- <translation type="unfinished"></translation> ++ <translation>Loại mặc định</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2003"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>Phẳng</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="416"/> + <source>Refresh list complete.</source> +- <translation type="unfinished"></translation> ++ <translation>Làm mới danh sách hoàn tất.</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2005"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2007"/> + <source>ADF Front</source> +- <translation type="unfinished"></translation> ++ <translation>Mặt trước ADF</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2009"/> + <source>ADF Back</source> +- <translation type="unfinished"></translation> ++ <translation>ADF Quay lại</translation> + </message> + <message> + <source>Lineart</source> +@@ -663,7 +663,7 @@ + <message> + <location filename="../src/saneobject.cpp" line="2013"/> + <source>ADF Duplex</source> +- <translation type="unfinished"></translation> ++ <translation>ADF Hai mặt</translation> + </message> + <message> + <source>Auto</source> +@@ -672,47 +672,47 @@ + <message> + <location filename="../src/saneobject.cpp" line="2089"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2091"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2093"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2095"/> + <source>200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>200 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2097"/> + <source>300 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>300 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2099"/> + <source>600 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>600 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2101"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2103"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 dpi</translation> + </message> + <message> + <location filename="../src/saneobject.cpp" line="2105"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 dpi</translation> + </message> + <message> + <source>Multiple</source> +@@ -725,18 +725,18 @@ + <location filename="../src/scandialog.cpp" line="47"/> + <location filename="../src/scandialog.cpp" line="62"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="66"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="86"/> + <location filename="../src/scandialog.cpp" line="184"/> + <source>Number of pages scanning: </source> +- <translation type="unfinished"></translation> ++ <translation>Số trang quét: </translation> + </message> + <message> + <source>Number of pages being scanned: </source> +@@ -745,17 +745,17 @@ + <message> + <location filename="../src/scandialog.cpp" line="98"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="153"/> + <source>Canceling scan,please wait a moment!</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy quét, vui lòng đợi một chút!</translation> + </message> + <message> + <location filename="../src/scandialog.cpp" line="182"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>Nhiều</translation> + </message> + </context> + <context> +@@ -767,7 +767,7 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="769"/> + <source>Scanner device</source> +- <translation type="unfinished"></translation> ++ <translation>Thiết bị quét</translation> + </message> + <message> + <source>Time</source> +@@ -776,95 +776,95 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="774"/> + <source>File settings</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt tệp</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="601"/> + <source>Device</source> +- <translation type="unfinished"></translation> ++ <translation>Thiết bị</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="126"/> + <source>Select a directory</source> +- <translation type="unfinished"></translation> ++ <translation>Chọn một thư mục</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="149"/> + <source>Currently user has no permission to modify directory </source> +- <translation type="unfinished"></translation> ++ <translation>Hiện tại người dùng không có quyền sửa đổi thư mục </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="212"/> + <source>Flatbed scan mode not support multiple scan.</source> +- <translation type="unfinished"></translation> ++ <translation>Chế độ quét phẳng không hỗ trợ quét nhiều lần.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="217"/> + <location filename="../src/scansettingswidget.cpp" line="967"/> + <source>Multiple</source> +- <translation type="unfinished"></translation> ++ <translation>Nhiều</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="299"/> + <source>This resolution will take a long time to scan, please choose carelly.</source> +- <translation type="unfinished"></translation> ++ <translation>Độ phân giải này sẽ mất nhiều thời gian để quét, vui lòng chọn cẩn thận.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="300"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>Cảnh báo</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="602"/> + <source>Pages</source> +- <translation type="unfinished"></translation> ++ <translation>Trang</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="603"/> + <source>Type</source> +- <translation type="unfinished"></translation> ++ <translation>Kiểu</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="281"/> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Color</source> +- <translation type="unfinished"></translation> ++ <translation>Màu</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="605"/> + <source>Resolution</source> +- <translation type="unfinished"></translation> ++ <translation>Nghị quyết</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="606"/> + <source>Size</source> +- <translation type="unfinished"></translation> ++ <translation>Kích thước</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="607"/> + <source>Format</source> +- <translation type="unfinished"></translation> ++ <translation>Định dạng</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="608"/> + <source>Name</source> +- <translation type="unfinished"></translation> ++ <translation>Tên</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="777"/> + <source>scanner01</source> +- <translation type="unfinished"></translation> ++ <translation>máy quét01</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="609"/> + <source>Save</source> +- <translation type="unfinished"></translation> ++ <translation>Cứu</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="617"/> + <location filename="../src/scansettingswidget.cpp" line="618"/> + <source>Mail to</source> +- <translation type="unfinished"></translation> ++ <translation>Gửi thư đến</translation> + </message> + <message> + <source>Send email</source> +@@ -875,7 +875,7 @@ + <location filename="../src/scansettingswidget.cpp" line="1148"/> + <location filename="../src/scansettingswidget.cpp" line="1149"/> + <source>Save as</source> +- <translation type="unfinished"></translation> ++ <translation>Lưu dưới dạng</translation> + </message> + <message> + <source>No available scanners</source> +@@ -887,22 +887,22 @@ + <location filename="../src/scansettingswidget.cpp" line="270"/> + <location filename="../src/scansettingswidget.cpp" line="967"/> + <source>Single</source> +- <translation type="unfinished"></translation> ++ <translation>Đơn</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="295"/> + <source>4800 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>4800 dpi</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="296"/> + <source>2400 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>2400 dpi</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="297"/> + <source>1200 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>1200 dpi</translation> + </message> + <message> + <source>This resolution will take a loog time to scan, please choose carelly.</source> +@@ -911,44 +911,44 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="327"/> + <source>cannot contain '/' character.</source> +- <translation type="unfinished"></translation> ++ <translation>không thể chứa ký tự '/'.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="332"/> + <location filename="../src/scansettingswidget.cpp" line="472"/> + <source>cannot save as hidden file.</source> +- <translation type="unfinished"></translation> ++ <translation>không thể lưu dưới dạng tệp ẩn.</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="461"/> + <source>Save As</source> +- <translation type="unfinished"></translation> ++ <translation>Lưu dưới dạng</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="485"/> + <source>Path without access rights: </source> +- <translation type="unfinished"></translation> ++ <translation>Đường dẫn không có quyền truy cập: </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="489"/> + <source>File path that does not exist: </source> +- <translation type="unfinished"></translation> ++ <translation>Đường dẫn tệp không tồn tại: </translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="548"/> + <source> already exists, do you want to overwrite it? If you are performing a multi page scan, it may cause multiple files to be overwritten. Please be cautious!</source> +- <translation type="unfinished"></translation> ++ <translation> đã tồn tại, bạn có muốn ghi đè lên nó không? Nếu bạn đang thực hiện quét nhiều trang, nó có thể khiến nhiều tệp bị ghi đè. Hãy thận trọng!</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="746"/> + <source>Start Scan</source> +- <translation type="unfinished"></translation> ++ <translation>Bắt đầu quét</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1139"/> + <location filename="../src/scansettingswidget.cpp" line="1140"/> + <source>Store text</source> +- <translation type="unfinished"></translation> ++ <translation>Lưu trữ văn bản</translation> + </message> + <message> + <source>Save as dialog</source> +@@ -957,7 +957,7 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="547"/> + <source>The file </source> +- <translation type="unfinished"></translation> ++ <translation>Tập tin </translation> + </message> + <message> + <source> already exists, do you want to overwrite it?</source> +@@ -966,12 +966,12 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="550"/> + <source>tips</source> +- <translation type="unfinished"></translation> ++ <translation>Mẹo</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="604"/> + <source>Colour</source> +- <translation type="unfinished"></translation> ++ <translation>Màu</translation> + </message> + <message> + <source>3s</source> +@@ -997,17 +997,17 @@ + <location filename="../src/scansettingswidget.cpp" line="269"/> + <location filename="../src/scansettingswidget.cpp" line="984"/> + <source>Flatbed</source> +- <translation type="unfinished"></translation> ++ <translation>Phẳng</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="984"/> + <source>ADF</source> +- <translation type="unfinished"></translation> ++ <translation>ADF</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Gray</source> +- <translation type="unfinished"></translation> ++ <translation>Màu xám</translation> + </message> + <message> + <source>Cancel</source> +@@ -1017,37 +1017,37 @@ + <location filename="../src/scansettingswidget.cpp" line="283"/> + <location filename="../src/scansettingswidget.cpp" line="1013"/> + <source>Lineart</source> +- <translation type="unfinished"></translation> ++ <translation>Vẽ đường nét</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>75 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>75 dpi</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>100 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>100 dpi</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1036"/> + <source>150 dpi</source> +- <translation type="unfinished"></translation> ++ <translation>150 dpi</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1053"/> + <source>Resolution is empty!</source> +- <translation type="unfinished"></translation> ++ <translation>Độ phân giải trống rỗng!</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1068"/> + <source>A4</source> +- <translation type="unfinished"></translation> ++ <translation>Đáp 4</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1068"/> + <source>A5</source> +- <translation type="unfinished"></translation> ++ <translation>Đáp 5</translation> + </message> + <message> + <source>Scanning images's length cannot be large than 252</source> +@@ -1056,12 +1056,12 @@ + <message> + <location filename="../src/scansettingswidget.cpp" line="1365"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/scansettingswidget.cpp" line="1368"/> + <source>Yes</source> +- <translation type="unfinished"></translation> ++ <translation>Có</translation> + </message> + </context> + <context> +@@ -1097,29 +1097,29 @@ + <location filename="../src/sendmail.cpp" line="198"/> + <location filename="../src/sendmail.cpp" line="222"/> + <source>Select email client</source> +- <translation type="unfinished"></translation> ++ <translation>Chọn ứng dụng email</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="204"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="207"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="236"/> + <location filename="../src/sendmail.cpp" line="237"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/sendmail.cpp" line="240"/> + <location filename="../src/sendmail.cpp" line="241"/> + <source>Confirm</source> +- <translation type="unfinished"></translation> ++ <translation>Xác nhận</translation> + </message> + </context> + <context> +@@ -1127,27 +1127,27 @@ + <message> + <location filename="../src/showimagewidget.cpp" line="66"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="74"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>Ok</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1148"/> + <source>Canceling...Please waiting...</source> +- <translation type="unfinished"></translation> ++ <translation>Huỷ... Xin hãy chờ đợi...</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1159"/> + <source>Running beauty ...</source> +- <translation type="unfinished"></translation> ++ <translation>Vẻ đẹp chạy ...</translation> + </message> + <message> + <location filename="../src/showimagewidget.cpp" line="1192"/> + <source>Running rectify ...</source> +- <translation type="unfinished"></translation> ++ <translation>Chạy chỉnh sửa ...</translation> + </message> + </context> + <context> +@@ -1155,24 +1155,24 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="29"/> + <source>Form</source> +- <translation type="unfinished"></translation> ++ <translation>Dạng</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="107"/> + <source>kylin-scanner</source> +- <translation type="unfinished"></translation> ++ <translation>máy quét kylin</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="110"/> + <location filename="../src/titlebar/titlebar.cpp" line="194"/> + <location filename="../src/titlebar/titlebar.h" line="83"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="176"/> + <source>Option</source> +- <translation type="unfinished"></translation> ++ <translation>Sự quyết định</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="179"/> +@@ -1182,18 +1182,18 @@ + <message> + <location filename="../src/titlebar/titlebar.ui" line="220"/> + <source>Minimize</source> +- <translation type="unfinished"></translation> ++ <translation>Giảm thiểu</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="261"/> + <location filename="../src/titlebar/titlebar.cpp" line="145"/> + <source>Maximize</source> +- <translation type="unfinished"></translation> ++ <translation>Tối đa hóa</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.ui" line="308"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <source>Maxmize</source> +@@ -1202,42 +1202,42 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="53"/> + <source>Refresh List</source> +- <translation type="unfinished"></translation> ++ <translation>Danh sách làm mới</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="70"/> + <source>Help</source> +- <translation type="unfinished"></translation> ++ <translation>Trợ giúp</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="74"/> + <source>About</source> +- <translation type="unfinished"></translation> ++ <translation>Về</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="76"/> + <source>Version: </source> +- <translation type="unfinished"></translation> ++ <translation>Phiên bản: </translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="77"/> + <source>Message provides text chat and file transfer functions in the LAN. There is no need to build a server. It supports multiple people to interact at the same time and send and receive in parallel.</source> +- <translation type="unfinished"></translation> ++ <translation>Tin nhắn cung cấp trò chuyện văn bản và các chức năng truyền tệp trong mạng LAN. Không cần phải xây dựng một máy chủ. Nó hỗ trợ nhiều người tương tác cùng một lúc và gửi và nhận song song.</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="87"/> + <source>Exit</source> +- <translation type="unfinished"></translation> ++ <translation>Thoát</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="142"/> + <source>Restore</source> +- <translation type="unfinished"></translation> ++ <translation>Khôi phục</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="192"/> + <source>The current file is not saved. Do you want to save it?</source> +- <translation type="unfinished"></translation> ++ <translation>Tệp hiện tại không được lưu. Bạn có muốn lưu nó không?</translation> + </message> + <message> + <source>The current document is not saved. Do you want to save it?</source> +@@ -1246,12 +1246,12 @@ + <message> + <location filename="../src/titlebar/titlebar.cpp" line="196"/> + <source>Straight &Exit</source> +- <translation type="unfinished"></translation> ++ <translation>Thẳng & Thoát</translation> + </message> + <message> + <location filename="../src/titlebar/titlebar.cpp" line="197"/> + <source>&Save Exit</source> +- <translation type="unfinished"></translation> ++ <translation>&Lưu Thoát</translation> + </message> + </context> + <context> +@@ -1260,55 +1260,55 @@ + <location filename="../src/toolbarwidget.cpp" line="64"/> + <location filename="../src/toolbarwidget.cpp" line="158"/> + <source>Beauty</source> +- <translation type="unfinished"></translation> ++ <translation>Vẻ đẹp</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="70"/> + <location filename="../src/toolbarwidget.cpp" line="164"/> + <source>Rectify</source> +- <translation type="unfinished"></translation> ++ <translation>Khắc phục</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="76"/> + <location filename="../src/toolbarwidget.cpp" line="170"/> + <source>OCR</source> +- <translation type="unfinished"></translation> ++ <translation>OCR</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="84"/> + <location filename="../src/toolbarwidget.cpp" line="178"/> + <source>Crop</source> +- <translation type="unfinished"></translation> ++ <translation>Cây trồng</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="90"/> + <location filename="../src/toolbarwidget.cpp" line="184"/> + <source>Rotate</source> +- <translation type="unfinished"></translation> ++ <translation>Xoay</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="96"/> + <location filename="../src/toolbarwidget.cpp" line="190"/> + <source>Mirror</source> +- <translation type="unfinished"></translation> ++ <translation>Gương</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="102"/> + <location filename="../src/toolbarwidget.cpp" line="196"/> + <source>Watermark</source> +- <translation type="unfinished"></translation> ++ <translation>Watermark</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="121"/> + <location filename="../src/toolbarwidget.cpp" line="215"/> + <source>ZoomIn</source> +- <translation type="unfinished"></translation> ++ <translation>Phóng to</translation> + </message> + <message> + <location filename="../src/toolbarwidget.cpp" line="115"/> + <location filename="../src/toolbarwidget.cpp" line="209"/> + <source>ZoomOut</source> +- <translation type="unfinished"></translation> ++ <translation>Thu nhỏ</translation> + </message> + </context> + <context> +@@ -1332,27 +1332,27 @@ + <message> + <location filename="../src/usbhotplugthread.cpp" line="95"/> + <source>Querying scanner device. Please waitting...</source> +- <translation type="unfinished"></translation> ++ <translation>Truy vấn thiết bị máy quét. Xin hãy chờ đợi...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="119"/> + <source>New Scanner has been Connected.</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét mới đã được kết nối.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="129"/> + <source>A scanner is disconnected. If you disconnect the scanner is on scanning, click Cancel Scan or wait for the scanner to report an error message.</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét bị ngắt kết nối. Nếu bạn ngắt kết nối máy quét đang quét, hãy nhấp vào Hủy quét hoặc đợi máy quét báo thông báo lỗi.</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="135"/> + <source>Scanner is disconnect,refreshing scanner list. Please waitting...</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét bị ngắt kết nối, làm mới danh sách máy quét. Xin hãy chờ đợi...</translation> + </message> + <message> + <location filename="../src/usbhotplugthread.cpp" line="150"/> + <source>Scanner list refresh complete.</source> +- <translation type="unfinished"></translation> ++ <translation>Hoàn tất làm mới danh sách máy quét.</translation> + </message> + </context> + <context> +@@ -1360,12 +1360,12 @@ + <message> + <location filename="../src/waittingdialog.cpp" line="46"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/waittingdialog.cpp" line="59"/> + <source>Searching for scanner...</source> +- <translation type="unfinished"></translation> ++ <translation>Đang tìm kiếm máy quét...</translation> + </message> + </context> + <context> +@@ -1373,27 +1373,27 @@ + <message> + <location filename="../src/watermarkdialog.cpp" line="46"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="54"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="65"/> + <source>Add watermark</source> +- <translation type="unfinished"></translation> ++ <translation>Thêm hình mờ</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="81"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/watermarkdialog.cpp" line="84"/> + <source>Confirm</source> +- <translation type="unfinished"></translation> ++ <translation>Xác nhận</translation> + </message> + </context> + <context> +@@ -1401,17 +1401,17 @@ + <message> + <location filename="../src/main.cpp" line="200"/> + <source>Open file <filename></source> +- <translation type="unfinished"></translation> ++ <translation>Mở tập tin <filename></translation> + </message> + <message> + <location filename="../src/main.cpp" line="201"/> + <source>Filename</source> +- <translation type="unfinished"></translation> ++ <translation>Filename</translation> + </message> + <message> + <location filename="../src/main.cpp" line="205"/> + <source>Hide scan settings widget</source> +- <translation type="unfinished"></translation> ++ <translation>Ẩn tiện ích cài đặt quét</translation> + </message> + </context> + <context> +@@ -1419,39 +1419,39 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Name</source> +- <translation type="unfinished"></translation> ++ <translation>Tên</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Symbol</source> +- <translation type="unfinished"></translation> ++ <translation>Biểu tượng</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="54"/> + <source>Type</source> +- <translation type="unfinished"></translation> ++ <translation>Kiểu</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <location filename="../src/newdevicelistpage.cpp" line="255"/> + <location filename="../src/newdevicelistpage.cpp" line="259"/> + <source>Alert</source> +- <translation type="unfinished"></translation> ++ <translation>Cảnh báo</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="62"/> + <source>You need to manually confirm whether the printer devices included in the list are scanning and printing all-in-one machines. If they are not scanning and printing all-in-one machines, ignore them.</source> +- <translation type="unfinished"></translation> ++ <translation>Bạn cần xác nhận thủ công xem các thiết bị máy in có trong danh sách có đang quét và in máy tất cả trong một hay không. Nếu họ không quét và in máy tất cả trong một, hãy bỏ qua chúng.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="71"/> + <source>Close</source> +- <translation type="unfinished"></translation> ++ <translation>Đóng</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="84"/> + <source>Device List</source> +- <translation type="unfinished"></translation> ++ <translation>Danh sách thiết bị</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="97"/> +@@ -1459,73 +1459,73 @@ + <location filename="../src/newdevicelistpage.cpp" line="309"/> + <location filename="../src/newdevicelistpage.cpp" line="366"/> + <source>Cancel</source> +- <translation type="unfinished"></translation> ++ <translation>Hủy</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="98"/> + <source>Next</source> +- <translation type="unfinished"></translation> ++ <translation>Sau</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="118"/> + <source>Before</source> +- <translation type="unfinished"></translation> ++ <translation>Trước</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="119"/> + <source>Install</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="189"/> + <source>Scanner</source> +- <translation type="unfinished"></translation> ++ <translation>Máy quét</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="191"/> + <source>Printer</source> +- <translation type="unfinished"></translation> ++ <translation>Máy in</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="208"/> + <source>Device Name:</source> +- <translation type="unfinished"></translation> ++ <translation>Tên thiết bị:</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="212"/> + <source>Driver Name:</source> +- <translation type="unfinished"></translation> ++ <translation>Tên tài xế:</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="255"/> + <source>This driver is from third party, may cause some unmetable result.</source> +- <translation type="unfinished"></translation> ++ <translation>Trình điều khiển này đến từ bên thứ ba, có thể gây ra một số kết quả không thể đo được.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="259"/> + <source>This driver is provided by the manufacturer. Please contact the corresponding manufacturer of the device to obtain the driver program.</source> +- <translation type="unfinished"></translation> ++ <translation>Trình điều khiển này được cung cấp bởi nhà sản xuất. Vui lòng liên hệ với nhà sản xuất thiết bị tương ứng để có được chương trình trình điều khiển.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="303"/> + <source>No available drivers, do you want to manually add drivers?</source> +- <translation type="unfinished"></translation> ++ <translation>Không có trình điều khiển khả dụng, bạn có muốn thêm trình điều khiển theo cách thủ công không?</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="307"/> + <source>Add</source> +- <translation type="unfinished"></translation> ++ <translation>Thêm</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="344"/> + <location filename="../src/newdevicelistpage.cpp" line="449"/> + <source>Installing driver...</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt trình điều khiển...</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="361"/> + <source>Installation successful. Do you want to use this scanner now? Click 'Use' to reset udev (administrator password required) and restart the scanning application to refresh the device list. If you still want to continue operating the scanned image, you will need to manually restart and use the scanning function.</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt thành công. Bạn có muốn sử dụng máy quét này ngay bây giờ không? Nhấp vào 'Sử dụng' để đặt lại udev (yêu cầu mật khẩu quản trị viên) và khởi động lại ứng dụng quét để làm mới danh sách thiết bị. Nếu bạn vẫn muốn tiếp tục vận hành hình ảnh đã quét, bạn sẽ cần khởi động lại thủ công và sử dụng chức năng quét.</translation> + </message> + <message> + <source>Installation successful. Do you want to use this scanner now?</source> +@@ -1534,22 +1534,22 @@ + <message> + <location filename="../src/newdevicelistpage.cpp" line="367"/> + <source>Use</source> +- <translation type="unfinished"></translation> ++ <translation>Dùng</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="398"/> + <source>Installation failed.</source> +- <translation type="unfinished"></translation> ++ <translation>Cài đặt không thành công.</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="401"/> + <source>Ok</source> +- <translation type="unfinished"></translation> ++ <translation>Ok</translation> + </message> + <message> + <location filename="../src/newdevicelistpage.cpp" line="443"/> + <source>Select a directory</source> +- <translation type="unfinished"></translation> ++ <translation>Chọn một thư mục</translation> + </message> + </context> + <context> +@@ -1559,7 +1559,7 @@ + <location filename="../src/showocrwidget.cpp" line="157"/> + <location filename="../src/showocrwidget.cpp" line="165"/> + <source>The document is in character recognition ...</source> +- <translation type="unfinished"></translation> ++ <translation>Tài liệu đang trong nhận dạng ký tự ...</translation> + </message> + </context> + </TS> Binary files /tmp/tmpxd3s8_pp/ew7pEOrnYe/kylin-scanner-3.2.1/debian/patches/0039-38-fix-bug.patch and /tmp/tmpxd3s8_pp/iLn95YOiGT/kylin-scanner-3.2.1/debian/patches/0039-38-fix-bug.patch differ diff -Nru kylin-scanner-3.2.1/debian/patches/series kylin-scanner-3.2.1/debian/patches/series --- kylin-scanner-3.2.1/debian/patches/series 2024-12-18 10:41:33.000000000 +0800 +++ kylin-scanner-3.2.1/debian/patches/series 2025-02-21 15:14:02.000000000 +0800 @@ -29,3 +29,11 @@ 0029-Translated-using-Weblate-Uyghur.patch 0030-add-debian-source-options.patch 0031-32-cimg.patch +0032-Added-translation-using-Weblate-Arabic.patch +0033-Added-translation-using-Weblate-Vietnamese.patch +0034-33-fix.patch +0035-34-fix.patch +0036-36-fix-pro.patch +0037-37-fix-tooltip.patch +0038-Translated-using-Weblate-Vietnamese.patch +0039-38-fix-bug.patch diff -Nru kylin-scanner-3.2.1/debian/source/include-binaries kylin-scanner-3.2.1/debian/source/include-binaries --- kylin-scanner-3.2.1/debian/source/include-binaries 2024-12-18 10:41:33.000000000 +0800 +++ kylin-scanner-3.2.1/debian/source/include-binaries 2025-02-21 15:14:02.000000000 +0800 @@ -1,2 +1,4 @@ debian/patches/0030-add-debian-source-options.patch debian/patches/0031-32-cimg.patch +debian/patches/0035-34-fix.patch +debian/patches/0039-38-fix-bug.patch