commit
3f1dfb7544
|
@ -21,6 +21,7 @@
|
|||
#include <QCommandLineOption>
|
||||
#include <QCommandLineParser>
|
||||
#include <termios.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <pwd.h>
|
||||
|
||||
|
@ -38,7 +39,7 @@
|
|||
|
||||
bool enableDebug;
|
||||
QString logPrefix;
|
||||
|
||||
BioAuth bioAuth;
|
||||
enum MsgType
|
||||
{
|
||||
START,
|
||||
|
@ -241,6 +242,13 @@ DeviceInfo showDevices(const QMap<int, QList<DeviceInfo>> &devicesMap)
|
|||
return DeviceInfo();
|
||||
}
|
||||
|
||||
static void signal_handler(int signo)
|
||||
{
|
||||
if (signo == SIGHUP) {
|
||||
bioAuth.stopAuth();
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication::setSetuidAllowed(true);
|
||||
|
@ -310,7 +318,8 @@ int main(int argc, char *argv[])
|
|||
showMessage(QObject::tr("Press Q or Esc to cancel"), PROMPT);
|
||||
}
|
||||
|
||||
BioAuth bioAuth(uid, deviceInfo);
|
||||
bioAuth.setUid(uid);
|
||||
bioAuth.setDevice(deviceInfo);
|
||||
KeyWatcher watcher;
|
||||
QMap<int,int> m_failedTimes;
|
||||
|
||||
|
@ -411,6 +420,7 @@ int main(int argc, char *argv[])
|
|||
});
|
||||
}
|
||||
watcher.start();
|
||||
signal(SIGHUP, signal_handler);
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ public:
|
|||
explicit BioAuth(QObject *parent = nullptr);
|
||||
~BioAuth();
|
||||
void setDevice(const DeviceInfoPtr deviceInfo);
|
||||
void setUid(qint32 uid);
|
||||
DeviceInfoPtr getDevice();
|
||||
void startAuth();
|
||||
void startUkeyAuth();
|
||||
|
@ -59,7 +60,6 @@ public:
|
|||
*/
|
||||
bool GetHasUkeyFeature(int uid, int indexStart = 0, int indexEnd = -1);
|
||||
|
||||
|
||||
signals:
|
||||
void authComplete(int uid, bool result, int retErrNo);
|
||||
void authFinished();
|
||||
|
|
|
@ -97,6 +97,10 @@ public:
|
|||
void SetExtraInfo(QString extra_info,QString info_type);
|
||||
bool getHasUkeyOptions();
|
||||
void setSelectedPassword();
|
||||
|
||||
// 设置所有生物识别的禁用状态
|
||||
void setAllDeviceDisable(bool bDisable = true);
|
||||
|
||||
public slots:
|
||||
void readDevicesInfo();
|
||||
void onIdentifyComplete(int uid, bool ret, int retErrNo);
|
||||
|
|
|
@ -61,6 +61,11 @@ void BioAuth::setDevice(const DeviceInfoPtr deviceInfo)
|
|||
this->deviceInfo = deviceInfo;
|
||||
}
|
||||
|
||||
void BioAuth::setUid(qint32 uid)
|
||||
{
|
||||
this->uid = uid;
|
||||
}
|
||||
|
||||
void BioAuth::startUkeyAuth()
|
||||
{
|
||||
// stopAuth();
|
||||
|
@ -209,7 +214,6 @@ void BioAuth::onIdentityComplete(QDBusPendingCallWatcher *watcher)
|
|||
|
||||
/* 识别生物特征成功,发送认证结果 */
|
||||
if(isInAuthentication){
|
||||
|
||||
isInAuthentication = false;
|
||||
|
||||
if(result == DBUS_RESULT_SUCCESS && retUid == uid){
|
||||
|
|
|
@ -570,7 +570,9 @@ void LoginOptionsWidget::onIdentifyComplete(int uid, bool ret, int retErrNo)
|
|||
qDebug()<<"StatusReslut:"<<ret.result<<","<<ret.enable<<","<<ret.devNum<<","
|
||||
<<ret.devStatus<<","<<ret.opsStatus<<","<<ret.notifyMessageId;
|
||||
//识别操作超时
|
||||
if(ret.result == 0 && (ret.opsStatus == 404 || ret.opsStatus == 304
|
||||
if (ret.result == 0 && ret.opsStatus == 10) { // 10 当前时间错误导致网络错误
|
||||
Q_EMIT authComplete(uid, false, -4);
|
||||
} else if (ret.result == 0 && (ret.opsStatus == 404 || ret.opsStatus == 304
|
||||
|| ret.opsStatus == 8)) { // 304认证超时, 8网络异常
|
||||
Q_EMIT authComplete(uid, false, 1);
|
||||
} else if (ret.opsStatus == OPS_IDENTIFY_STOP_BY_USER || ret.opsStatus == OPS_VERIFY_STOP_BY_USER) {
|
||||
|
@ -1023,6 +1025,28 @@ void LoginOptionsWidget::setDeviceDisable(int nDevId, bool bDisable)
|
|||
}
|
||||
}
|
||||
|
||||
void LoginOptionsWidget::setAllDeviceDisable(bool bDisable)
|
||||
{
|
||||
if (bDisable) {
|
||||
QMap<int, QToolButton *>::iterator itMapBtn = m_mapOptBtns.begin();
|
||||
for (; itMapBtn != m_mapOptBtns.end(); itMapBtn++) {
|
||||
|
||||
m_mapDisableDev[m_uid][itMapBtn.key()] = true;
|
||||
if (itMapBtn.value()) {
|
||||
itMapBtn.value()->setDisabled(true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
QMap<int, QToolButton *>::iterator itMapBtn = m_mapOptBtns.begin();
|
||||
for (; itMapBtn != m_mapOptBtns.end(); itMapBtn++) {
|
||||
m_mapDisableDev[m_uid][itMapBtn.key()] = false;
|
||||
if (itMapBtn.value()) {
|
||||
itMapBtn.value()->setDisabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool LoginOptionsWidget::isDeviceDisable(int nDevId)
|
||||
{
|
||||
if (m_mapDisableDev[m_uid].contains(nDevId)) {
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
ukui-biometric-auth (4.10.0.0-ok10) nile; urgency=medium
|
||||
|
||||
* BUG号:无
|
||||
* 需求号:无
|
||||
* 其他改动说明:补充部分哈柯语言翻译
|
||||
* 其他改动影响域:无
|
||||
|
||||
-- Yang Min <yangmin@kylinos.cn> Wed, 13 Nov 2024 19:45:42 +0800
|
||||
|
||||
ukui-biometric-auth (4.10.0.0-ok9.1) nile; urgency=medium
|
||||
|
||||
* BUG号:#I9RPVW [维吾尔语】启动指纹驱动时窗口提示语未适配
|
||||
|
|
|
@ -16,6 +16,7 @@ Build-Depends: cmake (>= 2.6),
|
|||
qttools5-dev,
|
||||
qttools5-dev-tools,
|
||||
libkysdk-sysinfo-dev,
|
||||
libkysdk-qtwidgets-dev,
|
||||
libukui-log4qt-dev,
|
||||
libssl-dev,
|
||||
liblightdm-qt5-3-dev,
|
||||
|
|
|
@ -11,12 +11,16 @@
|
|||
<description xml:lang="mn">ᠠᠵᠢᠯᠯᠠᠭᠠᠨ ᠤ ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠵᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ ᠃</description>
|
||||
<description xml:lang="zh_HK">運行生物識別認證控制工具</description>
|
||||
<description xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئىسپاتلاش كونترول قىلىش قورالى</description>
|
||||
<description xml:lang="kk">بىئولوگىيەلىك پارىقتاندىرۋ سپاتتاۋ مەڭگەرۋ ەتۋ قۇرالى</description>
|
||||
<description xml:lang="ky">بىئولوگىيەلىك ايىرمالاندىرىش ىسپاتتوو تىزگىندۅۅ جاسوو ،اتقارۇۇ قۇرالى</description>
|
||||
<message>Authentication is required to enable or disable biometric authentication</message>
|
||||
<message xml:lang="zh_CN">开启或关闭生物识别认证需要进行身份验证</message>
|
||||
<message xml:lang="bo">སྒོ་རྒྱག་པའམ་ཡང་ན་སྒོ་རྒྱག་པའི་སྐྱེ་དངོས་ངོས་འཛིན་བདེན་དཔངར་སྤྲོད་བྱེད་པར་ཐོབ་ཐང་གི་ཚོད་ལྟསར་སྤྲོད་བྱ་དགོས།</message>
|
||||
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠤᠶᠤ ᠬᠠᠭᠠᠬᠤ ᠳᠤ ᠪᠡᠶᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨᠠ᠃</message>
|
||||
<message xml:lang="zh_HK">開啟或關閉生物識別認證需要進行身份驗證</message>
|
||||
<message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئىسپاتىنى ئېچىش ياكى تاقاش ئۈچۈن دەلىللەش كېرەك</message>
|
||||
<message xml:lang="kk">بىئولوگىيەلىك پارىقتاندىرۋ سىپاتىن ٸشٸۋ ياكي تاقاۋ ٷشٸن دالەلدەۋ كەرەك</message>
|
||||
<message xml:lang="ky">بىئولوگىيەلىك ايىرمالاندىرىش دالىلىن اچۇۇ كۅرۉنۉشتۅرۉ بەكىتىش ۉچۉن دالىلدۅ كەرەك</message>
|
||||
<icon_name>stock_person</icon_name>
|
||||
<defaults>
|
||||
<allow_any>no</allow_any>
|
||||
|
|
|
@ -11,12 +11,16 @@
|
|||
<description xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠪᠡᠷ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠤᠨᠠ ᠃</description>
|
||||
<description xml:lang="zh_HK">運行生物識別設備驅動控制工具</description>
|
||||
<description xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئۈسكۈنىسىنى قوزغىتىش كونترول قىلىش ئەسۋابىنى يۈرگۈزۈش</description>
|
||||
<description xml:lang="kk">شايمانىن جۉرگۅزۉ</description>
|
||||
<description xml:lang="ky">شايمانىن جۉرگۅزۉ</description>
|
||||
<message>Authentication is required to change the status of biometric device's driver</message>
|
||||
<message xml:lang="zh_CN">改变生物识别设备驱动状态需要进行身份验证</message>
|
||||
<message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་སྒྲག་ཆས་ཀྱི་ཁ་ལོ་བའི་གནས་ཚུལ་ལ་འགྱུར་ལྡོག་གཏོང་བར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message>
|
||||
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠪᠠᠶᠢᠳᠠᠯ ᠢ ᠬᠤᠪᠢᠷᠠᠭᠤᠯᠬᠤ ᠳᠤ ᠪᠡᠶᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ᠃</message>
|
||||
<message xml:lang="zh_HK">改變生物識別設備驅動狀態需要進行身份驗證</message>
|
||||
<message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئۈسكۈنىسىنىڭ قوزغىتىش ھالىتىنى ئۆزگەرتىشتە دەلىللەش كېرەك</message>
|
||||
<message xml:lang="kk">بىئولوگىيەلىك پارىقتاندىرۋ اسپابىنىڭ قوزعالتۋ كۇيىن وزگەتۋگە دالەلدەۋ كەرەك</message>
|
||||
<message xml:lang="ky">بىئولوگىيەلىك ايىرمالاندىرىش شايمانىنىن قوزعوتۇۇ ابالىن ۅزگۅرتۉۉدۅ دالىلدۅ كەرەك</message>
|
||||
<icon_name>stock_person</icon_name>
|
||||
<defaults>
|
||||
<allow_any>auth_admin</allow_any>
|
||||
|
|
|
@ -12,11 +12,15 @@
|
|||
<message>Authentication is required to restart biometric service</message>
|
||||
<description xml:lang="zh_HK">重啟生物特徵服務</description>
|
||||
<description xml:lang="ug">بىئولوگىيەلىك ئالاھىدىلىك مۇلازىمىتىنى قايتىدىن قوزغىتىش</description>
|
||||
<description xml:lang="kk">بىئولوگىيەلىك ەرەكشەلىك قىزىمەتتى قايتادان قوزعالتۋ</description>
|
||||
<description xml:lang="ky">بىئولوگىيەلىك ۅزگۅچۅلۉك مۇلازىمەتىردى قايتادان قوزعوتۇۇ</description>
|
||||
<message xml:lang="zh_CN">重启生物特征服务需要身份验证</message>
|
||||
<message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་ཞབས་ཞུ་སླར་གསོ་བྱེད་པར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message>
|
||||
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠤᠨ ᠣᠨᠴᠠᠯᠢᠭ ᠰᠢᠨᠵᠢ ᠲᠡᠮᠳᠡᠭ ᠦᠨ ᠦᠢᠯᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠳᠠᠬᠢᠨ ᠰᠡᠩᠬᠡᠷᠡᠭᠦᠯᠬᠦ ᠳᠦ ᠪᠡᠶᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠢ ᠰᠢᠯᠭᠠᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨᠠ ᠃</message>
|
||||
<message xml:lang="ug">بىئولوگىيەلىك ئالاھىدىلىك مۇلازىمىتىنى قايتىدىن قوزغىتىش ئۈچۈن دەلىللەش كېرەك </message>
|
||||
<message xml:lang="zh_HK">重啟生物特徵服務需要身份驗證</message>
|
||||
<message xml:lang="kk">بىئولوگىيەلىك ەرەكشەلىك قىزىمەتتى قايتادان قوزعالتۋ ٷشٸن دالەلدەۋ كەرەك بىئولوگىيەلىك پارىقتاندىرۋ اسبابٸن قوزعالتۋ مەڭگەرۋ ەتۋ اسپاپتى جۇرگىزۋ</message>
|
||||
<message xml:lang="ky">بىئولوگىيەلىك ۅزگۅچۅلۉك مۇلازىمەتىردى قايتادان قوزعوتۇۇ ۉچۉن دالىلدۅ كەرەك بىئولوگىيەلىك ايىرمالاندىرىش جابدۇۇسۇن قوزعوتۇۇ تىزگىندۅۅ جاسوو ،اتقارۇۇ</message>
|
||||
<icon_name>stock_person</icon_name>
|
||||
<defaults>
|
||||
<allow_any>auth_admin</allow_any>
|
||||
|
|
|
@ -3,7 +3,8 @@ project(ukui-polkit-agent)
|
|||
|
||||
pkg_check_modules(QGS REQUIRED gsettings-qt)
|
||||
pkg_check_modules(KDKINFO REQUIRED kysdk-sysinfo)
|
||||
pkg_check_modules(KYSDKWAYLANDHELPER_PKG REQUIRED kysdk-waylandhelper)
|
||||
pkg_check_modules(KDKWIDGETS REQUIRED kysdk-qtwidgets)
|
||||
pkg_check_modules(KYSDKWAYLANDHELPER REQUIRED kysdk-waylandhelper)
|
||||
|
||||
find_package(PolkitQt5-1 REQUIRED 0.103.0)
|
||||
find_package(Qt5 COMPONENTS Core Widgets DBus X11Extras Xml Network Svg)
|
||||
|
@ -23,16 +24,22 @@ configure_file(
|
|||
include_directories(
|
||||
${QGS_INCLUDE_DIRS}
|
||||
${KDKINFO_INCLUDE_DIRS}
|
||||
${KDKWIDGETS_INCLUDE_DIRS}
|
||||
${KYSDKWAYLANDHELPER_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
link_directories(
|
||||
${KDKINFO_LIBRARY_DIRS}
|
||||
${KDKWIDGETS_LIBRARY_DIRS}
|
||||
${KYSDKWAYLANDHELPER_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
set(EXTRA_LIBS
|
||||
${EXTRA_LIBS}
|
||||
${QGS_LIBRARIES}
|
||||
${KDKINFO_LIBRARIES}
|
||||
${KDKWIDGETS_LIBRARIES}
|
||||
${KYSDKWAYLANDHELPER_LIBRARIES}
|
||||
)
|
||||
|
||||
include_directories(
|
||||
|
@ -58,17 +65,20 @@ set(polkit_SRCS
|
|||
src/modeButton.cpp
|
||||
src/kalabel.cpp
|
||||
../common/generic.cpp
|
||||
src/fullscreenbackground.h
|
||||
src/fullscreenbackground.cpp
|
||||
src/usdblockshortcut.h
|
||||
src/usdblockshortcut.cpp
|
||||
)
|
||||
|
||||
add_executable(polkit-ukui-authentication-agent-1 ${polkit_SRCS})
|
||||
target_include_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS})
|
||||
target_link_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS})
|
||||
target_include_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKQTWIDGETS_PKG_INCLUDE_DIRS})
|
||||
target_link_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKQTWIDGETS_PKG_LIBRARY_DIRS})
|
||||
target_link_libraries(polkit-ukui-authentication-agent-1
|
||||
Qt5::Core Qt5::Widgets Qt5::DBus ${EXTRA_LIBS}
|
||||
Qt5::Core Qt5::Widgets Qt5::DBus ${EXTRA_LIBS} KF5::WindowSystem
|
||||
${POLKITQT-1_LIBRARIES}
|
||||
${KYSDKWAYLANDHELPER_PKG_LIBRARIES}
|
||||
${KYSDKQTWIDGETS_PKG_LIBRARIES}
|
||||
BioAuthWidgets
|
||||
KF5::WindowSystem
|
||||
-lrt
|
||||
-lukui-log4qt
|
||||
)
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
|
@ -10,8 +18,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -22,192 +30,201 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<source>Account locked,</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>days left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>hours left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<source>minutes left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<source>seconds left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -215,17 +232,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">དབང་བསྐུར།</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>དབང་བསྐུར།</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>སྐྱེ་དངོས་དབྱེ་འབྱེད་བཀོལ་བ།</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>ཕྱིར་འཐེན།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>དབང་བསྐུར་བ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>གསང་གྲངས་བེད་སྤྱོད་བྱ་དགོས།</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>%1ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>ཁྱོད་ཀྱིས་དུས་ཚོད་སྐར་ཆ་གཅིག་གི་ནང་དུ་ཡང་བསྐྱར་ཚོད་ལྟ་ཞིག་བྱེད་རོགས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>དུས་གཏན་དུ་ཟྭ་བརྒྱབ་པའི་རྩིས་ཐོ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>གསང་གྲངས་སྟོང་པ་ཡིན་མི་སྲིད།</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>%1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། ཁྱེད་ཚོར་ད་དུང་%2ལ་ཞིབ་བཤེར་བྱེད་པའི་གོ་སྐབས་ཡོད།</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>གསང་གྲངས་ནི། </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>ཁྱེད་ཀྱི་གསང་གྲངས་ནང་འཇུག་བྱེད་པའམ་ཡང་ན་ཁྱེད་ཀྱི་མཛུབ་རིས་ནང་འཇུག་བྱེད་པ། </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>རྒྱུན་ལྡན་མིན་པའི་དྲ་བ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>ཐེངས་འདིའི་བཀོལ་སྤྱོད་ལ་དོ་དམ་པའི་དབང་ཆ་ཐོབ་ན་ད་གཟོད་མུ་མཐུད་དུ་ལག་བསྟར་བྱེད་ཐུབ།གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཐེངས་འདིའི་བཀོལ་སྤྱོད་བྱེད་ཆོག</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>གསང་གྲངས། </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>གསང་གྲངས།:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>བདེན་དཔང་ར་སྤྲོད་ལ་ཕམ་ཁ་བྱུང་བས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱོས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>གནམ་རྒྱབ་ཟྭ་འབྱེད།</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>%1ལ་ཞིབ་བཤེར་བྱེད་མ་ཐུབ་ན། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>%1ལ་ཞིབ་བཤེར་བྱེད་ཐབས་བྲལ་བ་དང་། གསང་གྲངས་ནང་འཇུག་བྱས་ནས་ཟྭ་རྒྱག་རོགས།</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>གོ་རིམ་ཞིག་གིས་ཁྱད་དབང་དགོས་པའི་འགུལ་སྟངས་ཤིག་ལག་བསྟར་བྱེད་པར་ཚོད་ལྟ་བྱེད་བཞིན་ཡོད་པ་དང་།་འགུལ་སྟངས་འདི་ལག་བསྟར་བྱེད་པའི་དབང་ཆ་སྤྲོད་དགོས་པའི་རེ་བ་བཏོན།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>ནང་འཇུག་གི་གསང་གྲངས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>བདེ་འཇགས་ཀྱི་གསང་བའི་ལྡེ་མིག་དེ་USBཡི་སྣེ་འདྲེན་དུ་འཇུག་རོགས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>གསང་བའི་ཨང་གྲངས་ནང་འཇུག་བྱེད་པ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation>སྒོ་རྒྱག་པ་</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation>ཕམ་ཉེས་བྱུང་བ་རེད</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>དུས་ཚོད་འགའ་ལས་ལྷག་མེད</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>སྐར་མ་རྗེས་ནས་ཟྭ་ཕྱེ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>སྐར་ཆའི་རྗེས་ནས་ཟྭ་ཕྱེ་བ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>གསང་བའི་ཨང་གྲངས་ནང་འཇུག་བྱེད་དབང་ཡོད།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>དཔང་མིའི་གདོང་ལ་ཞིབ་བཤེར་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་པ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>མཛུབ་རིས་མནན་པའམ་ཡང་ན་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་པ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>སྒྲ་རིས་ར་སྤྲོད་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་པ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>ཚོད་ལྟས་ར་སྤྲོད་བྱེད་པ་ནི་སྡོད་རྩ་དང་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་པ་དེ་ཡིན།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>འཇའ་སྐྱི་ར་སྤྲོད་བྱེད་པའམ་ཡང་ན་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་པ།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>སྦྲེལ་ཡོད་པའི་སྐད་འཕྲིན་གྱི་ཨང་གྲངས་སམ་གསང་གྲངས་བསྣན་ནས་ཟྭ་འབྱེད་དགོས།</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>རྩིས་ཐོ་ཟྭ་བརྒྱབ་པ།</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>མཁོ་མཁན་གཞན་པ་ཞིག་གིས་བདེན་དཔང་ར་སྤྲོད་བྱེད་བཞིན་ཡོད།ཅུང་ཙམ་འགོར་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱོས།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>བདེན་དཔང་ར་སྤྲོད་བྱེད་མ་ཐུབ་ན་ཁྱེད་ཀྱིས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད།</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>གསང་གྲངས་ནང་འཇུག་ནོར་འཁྲུལ་བྱུང་བ་རེད།</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Authentifizierung</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>Authentifizierung</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>Biometrisch</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Abbrechen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>Beglaubigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>Passwort verwenden</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>Versuchen Sie es in %1 Minuten erneut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>Bitte versuchen Sie es in %1 Sekunden erneut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>Das Konto wurde dauerhaft gesperrt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>Das Kennwort darf nicht leer sein.</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>%1 konnte nicht verifiziert werden, Sie haben immer noch %2 Überprüfungsmöglichkeiten</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>Passwort: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>Bitte geben Sie Ihr Passwort ein oder registrieren Sie Ihren Fingerabdruck </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>Ungewöhnliches Netzwerk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>Für diesen Vorgang ist die Autorisierung des Administrators erforderlich. Bitte geben Sie Ihr Passwort ein, um diesen Vorgang zuzulassen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>_Passwort: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>_Passwort:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>Authentifizierung fehlgeschlagen, bitte versuchen Sie es erneut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>Verbleibende Tage</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>%1 konnte nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>%1 kann nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>Ein Programm versucht, eine Aktion auszuführen, für die Berechtigungen erforderlich sind. Zum Ausführen der Aktion ist eine Autorisierung erforderlich.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>Passwort eingeben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>Verbleibende Stunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>Noch Minuten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>Verbleibende Sekunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>Überprüfen Sie die Gesichtserkennung oder geben Sie das Passwort ein, um zu entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>Drücken Sie den Fingerabdruck oder geben Sie das Passwort ein, um zu entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>Überprüfen Sie den Stimmabdruck oder geben Sie das Passwort ein, um zu entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>Überprüfen Sie die Fingervene oder geben Sie das Passwort ein, um zu entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Überprüfen Sie die Iris oder geben Sie das Passwort ein, um zu entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>Verwenden Sie den gebundenen Wechat-Scan-Code oder geben Sie das Passwort zum Entsperren ein</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>Konto gesperrt,</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>Ein anderer Client authentifiziert sich bereits, bitte versuchen Sie es später noch einmal.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>Authentifizierungsfehler, bitte versuchen Sie es erneut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>Fehler bei der Passworteingabe!</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Autenticación</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>Autenticación</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>Biométrico</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>Autentificar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>Usar contraseña</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>Inténtelo de nuevo en %1 minutos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>Inténtelo de nuevo en %1 segundos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>Cuenta bloqueada permanentemente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>La contraseña no puede estar vacía</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>No se pudo verificar %1, todavía tiene %2 oportunidades de verificación</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>Contraseña: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>Ingrese su contraseña o registre su huella dactilar </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>Red anormal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>Esta operación requiere la autorización del administrador. Introduzca su contraseña para permitir esta operación.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>_Contraseña: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>_Contraseña:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>Error de autenticación, inténtelo de nuevo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>Días restantes</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>No se pudo verificar %1, ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>No se puede verificar %1, ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>Un programa está intentando realizar una acción que requiere privilegios. Requiere autorización para realizar la acción.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>Contraseña de entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>horas restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>Quedan minutos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>segundos restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>Verifique el reconocimiento facial o ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>Presione la huella dactilar o ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>Verifica la huella de voz o ingresa la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>Verifique la vena del dedo o ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Verifique el iris o ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>Use el código de escaneo de wechat vinculado o ingrese la contraseña para desbloquear</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>Cuenta bloqueada,</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>Otro cliente ya se está autenticando, inténtelo de nuevo más tarde.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>Error de autenticación, inténtelo de nuevo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>¡Error de entrada de contraseña!</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Authentification</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>Authentification</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>Biométrique</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>Authentifier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>Utiliser le mot de passe</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>Veuillez réessayer dans %1 minutes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>Veuillez réessayer dans %1 secondes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>Compte verrouillé définitivement.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>Le mot de passe ne peut pas être vide</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>Échec de la vérification %1, vous avez encore %2 possibilités de vérification</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>Mot de passe: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>Veuillez saisir votre mot de passe ou enregistrer votre empreinte digitale </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>Réseau anormal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>Cette opération nécessite l’autorisation de l’administrateur. Veuillez saisir votre mot de passe pour autoriser cette opération.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>_Mot de passe: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>_Mot de passe:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>L’authentification a échoué, veuillez réessayer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>jours restants</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>Un programme tente d’effectuer une action qui nécessite des privilèges. Il nécessite une autorisation pour effectuer l’action.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>Mot de passe d’entrée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>Heures restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>minutes restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>secondes restantes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>Vérifier la reconnaissance faciale ou saisir le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>Appuyez sur l’empreinte digitale ou entrez le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>Vérifier l’empreinte vocale ou saisir le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>Vérifiez la veine du doigt ou entrez le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Vérifiez l’iris ou entrez le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>Utilisez le code d’analyse wechat lié ou entrez le mot de passe pour déverrouiller</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>Compte verrouillé,</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>Un autre client est déjà en train de s’authentifier, veuillez réessayer plus tard.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>Échec de l’authentification, veuillez réessayer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>Erreur de saisie du mot de passe !</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">شىندىقتى دالەلدەۋ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>شىندىقتى دالەلدەۋ</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>بىئولەگىيەلىك ەرەكشەلىكتى ٸستەتۋ</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>كۇشىنەن قالدىرۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>ۇقىق بەرۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>قۇپيا نومەر ٸستەتۋ ارقىلى دالەلدەۋ</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>٪1 مينۋت ٸشٸندە قاتە سىناپ كور.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>٪1 سەكونت ٸشٸندە قاتە سىناپ كور.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>ەسەپات ماڭگىلىك قۇلىپتالادى.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>قۇپيا نۇمىردى بوس قويۋعا بولمايدى</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، سىزدە جانەدە ٪2 دالەلدەۋ ورايى بار</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>قۇپيا نومەر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>قۇپيا نۇمىرىڭىزدى كىرگىزىڭىز ياكي بارماقشى ئىزىڭىزنى تونۇتۇڭ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>بينورمال تور</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>نۇ جوبالاۋ باسقارعٸشتٸڭ ۇقىق بىرىستى تالاپ ىستەيدى.قۇپيا نۇمىردى كىرەۈزۈپ بي رەتكى جوبالاۋنىڭ الىپ بېرىلىشىغا جول قويىڭىز.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>قۇپيا نومەر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>قۇپيا نومەر</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>1 كۇننەن كەيىن سناپ كور</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، قۇپيا نومەر كىرگىزىڭىز</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دالەلدەۋگە امالسٸز، قۇپيا نۇمىردى كىرەۈزۈپ قۇلىبىن ٴٸشڭٸز</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>بٸر پٸروگٸرامما ۇقىق تالاپ ىستەيتىن ارەكەتتى ىستەۋگە ئۇرۇنماقتا. نۇ ارەكەتتى اتقار ەتۋ ٷشٸن ۇقىق تالاپ ىستەيدى.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>قۇپيا نومەر كىرگىزۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>ukey نى USB اۋزىنا چېتىپ قويىڭىز</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>ukey قۇپيا نۇمىردى كىرگىزىڭىز</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>بٸر ساعاتتان كەيىن اشٸلدٸ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>بٸر مينوتتىن كەيىن اشٸلدٸ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>بٸر سەكونتىن كەيىن اشٸلدٸ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>قۇپيا نۇمىردى كىرەۈزۈپ ازاماتتىق كۋالىك دالەلدەۋ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>چىراي تانىسن دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>بارماقشى ٴٸزدٸ باسٸۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>اۋا ٴٸزدٸ دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>بارماقشى ٴٸزٸ ارقىلى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Iris نى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>بايلانعان ئۈندىدارنى كەسكىندەۋ بەلگىسى ياكي قۇپيا نۇمىردى كىرەۈزۈپ قۇلىپ ٸشٸۋ</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>ٸستەتۋ نومەرىڭىز قۇلىپتانىپ قالدى</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>جانە بٸر قاريدار دالەلدەپ جاتىر، سەل تۇرٸپ قاتە سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>كىرگىزگەن قۇپيا نومەر قاتە قالدى</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">راستىنى دالىلدۅ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>راستىنى دالىلدۅ</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>بىئولەگىيەلىك ۅزگۅچۅلۉگۉ ىشتەتىش</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>ارعادان قالتىرىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>ۇقۇق بەرۉۉ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>جاشىرۇۇن نومۇر ىشتەتىش ارقىلۇۇ دالىلدۅ</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>٪1 مىنۇت ىچىندە قايرا سىناپ باعىڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>٪1 سىكونت ىچىندە قايرا سىناپ باعىڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>ەسابات تۉبۅلۉك قۇلۇپلىنىدۇ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>جاشىرۇۇن نومۇردۇ بوش ،بەكەر قويۇشقا بولبويت</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىزدە داعى ەلە ٪2 دالىلدۅ مۅۅرتۉ بار</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>جاشىرۇۇن نومۇر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>جاشىرۇۇن نومۇرۇڭۇزدۇ كىرگىزىڭ كۅرۉنۉشتۅرۉ بارماق ئىزىڭىزنى تونۇتۇڭ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>بۅتۅنچۅ تور</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>بۇل ماشقۇلدانۇۇ باشقارۇۇچۇنۇن ۇقۇق بەرۉۉنۉ تالاپ جاسايت .جاشىرۇۇن نومۇردۇ كىيىرىپ بي قاتىمقى ماشقۇلدانۇۇ نىڭ الىپ بېرىلىشىغا جول قويۇڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>جاشىرۇۇن نومۇر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>جاشىرۇۇن نومۇر</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>1 كۉندۅن كىيىن سىناپ باعىڭ</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىرلۇۇ نومۇر كىرگىزىڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دالىلدۅۅگۅ ايلاسىز، جاشىرۇۇن نومۇردۇ كىيىرىپ قۇلۇپنى اچىڭ</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>بىر پراگرامما ۇقۇق تالاپ جاسايتۇرعان قىيمىلدى جاسووعو ئۇرۇنماقتا. بۇل قىيمىلدى اتقارماق جاسوو ،اتقارۇۇ ۉچۉن ۇقۇق تالاپ جاسايت .</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>جاشىرۇۇن نومۇر كىرگىزۉۉ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>ukey نى USB ووزۇنا چېتىپ قويۇڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>ukey جاشىرۇۇن نومۇرۇن كىرگىزىڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>بىر سائەتتىن كىيىن اچىلات</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>بىر مىنۇتتان كىيىن اچىلات</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>بىر سەكۇنتتان كىيىن اچىلات</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>جاشىرۇۇن نومۇردۇ كىيىرىپ كۉبۅلۉك دالىلدۅ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>چىراي تاانىشتى دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>بارماق ىزىن باسۇۇدا كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>دووش ىزىن دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>بارماق ئزى ارقىلۇۇ انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Iris نى انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>بايلانعان ئۈندىدارنى ىسكاننىردوو قۇپۇيا نومۇرۇ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇرۇن كىيىرىپ قۇلپ اچۇۇ</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>ىشتەتىش نومۇرۇڭۇز قۇلۇپتالىپ قالدى</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>داعى بىر سووداگەر ، جولووچۇ دالىلدەپ جاتات، سەل تۇرۇپ قايرا سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>كىيىرگەن جاشىرۇۇن نومۇر قاتاا بولدۇ</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">ᠡᠷᠬᠡ ᠤᠯᠭᠤᠬᠤ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>ᠡᠷᠬᠡ ᠤᠯᠭᠤᠬᠤ</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>ᠠᠮᠢᠳᠤ ᠪᠤᠳᠠᠰ ᠢ᠋ ᠬᠡᠷᠡᠭᠯᠡᠵᠤ ᠢᠯᠭᠠᠨ ᠳᠠᠨᠢᠬᠤ</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>ᠦᠬᠡᠢᠰᠭᠡᠬᠦ᠌</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>ᠡᠷᠬᠡ ᠤᠯᠭᠤᠬᠤ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠭᠰᠠᠨ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠢ᠋ ᠬᠡᠷᠡᠭᠯᠡᠬᠦ</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>%1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠱᠢᠭᠠᠷᠠᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>%1 ᠮᠢᠨᠦ᠋ᠲᠦᠨ ᠳᠠᠷᠠᠭᠠ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠱᠢᠭᠠᠷᠠᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>ᠳᠠᠩᠰᠠ ᠨᠢᠭᠡᠨᠳᠡ ᠦᠨᠢᠳᠡ ᠤᠨᠢᠰᠤᠯᠠᠭᠳᠠᠪᠠ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠬᠤᠭᠤᠰᠤᠨ ᠪᠠᠢᠵᠤ ᠪᠤᠯᠬᠤ ᠦᠬᠡᠢ</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>%1ᠶᠢᠨ/ᠦᠨ ᠰᠢᠯᠭᠠᠨ ᠪᠠᠢᠴᠠᠭᠠᠯᠳᠠ ᠢᠯᠠᠭᠳᠠᠪᠠ ᠂ ᠲᠠ ᠪᠠᠰᠠ%2 ᠤᠳᠠᠭᠠᠨᠤ ᠳᠤᠷᠱᠢᠬᠤ ᠵᠠᠪᠱᠢᠶᠠᠨ ᠲᠠᠢ</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋᠄ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠪᠤᠶᠤ ᠬᠤᠷᠤᠭᠤᠨ ᠤ᠋ ᠤᠷᠤᠮ ᠵᠢᠨᠨ ᠤᠷᠤᠭᠤᠯᠤᠭᠠᠷᠠᠢ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>ᠲᠤᠷ ᠰᠦᠯᠵᠢᠶᠡ ᠬᠡᠪ ᠤ᠋ᠨ ᠪᠤᠰᠤ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>ᠳᠤᠰ ᠤᠳᠠᠭᠠᠨ ᠤ᠋ ᠠᠵᠢᠯᠯᠠᠬᠤᠢ ᠵᠢᠨ ᠬᠠᠮᠢᠶᠠᠷᠤᠭᠴᠢ ᠵᠢᠨ ᠡᠷᠬᠡ ᠤᠯᠭᠤᠯᠳᠠ ᠪᠡᠷ ᠰᠠᠶᠢ ᠦᠷᠬᠦᠯᠵᠢᠯᠡᠨ ᠬᠡᠷᠡᠭᠵᠢᠬᠦᠯᠦᠨᠡ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠵᠢᠨᠨ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠳᠤᠰ ᠠᠵᠢᠯᠯᠠᠬᠤᠢ ᠵᠢ ᠵᠦᠪᠰᠢᠶᠡᠷᠡᠭᠡᠷᠡᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠵᠤ ᠴᠢᠳᠠᠭᠰᠠᠨ ᠦᠬᠡᠢ᠂ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠰᠢᠭᠠᠷᠠᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>ᠡᠳᠦᠷ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭᠠ ᠤᠨᠢᠰᠤ ᠳᠠᠢᠯᠤᠨᠠ</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>%1ᠶᠢ/ᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠠᠷᠭᠠ ᠦᠬᠡᠢ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>%1ᠶᠢ/ᠢ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠠᠷᠭᠠ ᠦᠬᠡᠢ ᠂ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>ᠨᠢᠭᠡ ᠫᠡᠷᠦᠭᠷᠡᠮ ᠶᠠᠭ ᠨᠢᠭᠡ ᠤᠨᠠᠴᠠ ᠡᠷᠬᠡ ᠬᠡᠷᠡᠭᠰᠡᠬᠦ ᠬᠦᠳᠡᠯᠬᠡᠬᠡᠨ ᠢ᠋ ᠬᠡᠷᠡᠭᠵᠢᠬᠦᠯᠬᠦ ᠪᠡᠷ ᠳᠤᠷᠰᠢᠵᠤ ᠪᠠᠢᠨᠠ᠂ ᠳᠤᠰ ᠬᠦᠳᠡᠯᠬᠡᠬᠡᠨ ᠢ᠋ ᠬᠦᠢᠴᠡᠳᠬᠡᠬᠦ ᠡᠷᠬᠡ ᠤᠯᠭᠤᠬᠤ ᠵᠢ ᠱᠠᠭᠠᠷᠳᠠᠵᠤ ᠪᠠᠢᠨᠠ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠬᠤ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>ᠠᠮᠤᠷ ᠲᠦᠪᠰᠢᠨ ᠦ ᠨᠢᠭᠤᠴᠠ ᠶᠢ USB ᠦᠵᠦᠭᠦᠷ ᠲᠦ ᠬᠠᠳᠬᠤᠵᠤ ᠣᠷᠣᠭᠠᠷᠠᠢ ᠃</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>ᠠᠮᠤᠷ ᠲᠦᠪᠰᠢᠨ ᠨᠢᠭᠤᠴᠠ ᠨᠣᠮᠧᠷ ᠢ ᠣᠷᠣᠭᠤᠯᠤᠨᠠ ᠃</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation>ᠬᠠᠭᠠᠬᠤ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation>ᠢᠯᠠᠭᠳᠠᠯ ᠢ ᠣᠯᠪᠠ ᠃</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>ᠨᠢᠭᠡ ᠴᠠᠭ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭᠠ ᠤᠨᠢᠰᠤ ᠳᠠᠢᠯᠤᠨᠠ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>ᠮᠢᠨᠦ᠋ᠲ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭᠠ ᠤᠨᠢᠰᠤ ᠳᠠᠢᠯᠤᠨᠠ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>ᠰᠸᠺᠦᠨ᠋ᠲ ᠤ᠋ᠨ ᠳᠠᠷᠠᠭᠠ ᠤᠨᠢᠰᠤ ᠳᠠᠢᠯᠤᠨᠠ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠨᠣᠮᠧᠷ ᠣᠷᠣᠭᠤᠯᠬᠤ ᠳᠤ ᠡᠷᠬᠡ ᠣᠯᠭᠣᠨᠠ ᠃</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>ᠨᠢᠭᠤᠷ ᠱᠢᠷᠪᠢᠵᠤ ᠪᠠᠳᠤᠯᠭᠠᠵᠢᠭᠤᠯᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>ᠬᠤᠷᠤᠭᠤᠨᠤ ᠤᠷᠤᠮ ᠳᠠᠷᠤᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>ᠳᠠᠭᠤᠪᠠᠷ ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>ᠬᠤᠷᠤᠭᠤᠨᠤ ᠨᠠᠮᠵᠢᠭᠤᠨ ᠰᠤᠳᠠᠯᠢᠶᠠᠷ ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>ᠰᠤᠯᠤᠩᠭᠠ ᠪᠦᠷᠬᠦᠪᠴᠢᠶᠢ ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠬᠤ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>ᠤᠶᠠᠭᠰᠠᠨ ᠸᠢᠴᠠᠲᠢᠶᠠᠷ ᠺᠤᠳ᠋ ᠱᠢᠷᠪᠢᠬᠦ᠌ ᠪᠤᠶᠤ ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠤᠷᠤᠭᠤᠯᠵᠤ ᠤᠨᠢᠰᠤᠶᠢ ᠳᠠᠢᠯᠤᠭᠠᠷᠠᠢ</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>ᠳᠠᠨᠭᠰᠠ ᠵᠢ ᠨᠢᠬᠡᠨᠳᠡ ᠤᠨᠢᠰᠤᠯᠠᠪᠠ</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>ᠦᠬᠡᠷᠡ ᠨᠢᠭᠡ ᠬᠡᠷᠡᠭᠯᠡᠭᠴᠢ ᠵᠢᠨ ᠦᠵᠦᠬᠦᠷᠯᠢᠭ ᠢ᠋ ᠶᠠᠭ ᠨᠤᠳᠠᠯᠠᠵᠤ ᠪᠠᠢᠨᠠ᠂ ᠤᠳᠠᠰᠬᠢᠭᠠᠳ ᠳᠠᠬᠢᠨ ᠳᠤᠷᠰᠢᠭᠠᠷᠠᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>ᠰᠢᠯᠭᠠᠨ ᠪᠠᠳᠤᠯᠠᠵᠤ ᠴᠢᠳᠠᠭᠰᠠᠨ ᠦᠬᠡᠢ᠂ ᠳᠠᠬᠢᠵᠤ ᠳᠤᠷᠰᠢᠭᠠᠷᠠᠢ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>ᠨᠢᠭᠤᠴᠠ ᠺᠤᠳ᠋ ᠢ᠋ ᠪᠤᠷᠤᠭᠤ ᠤᠷᠤᠭᠤᠯᠪᠠ!</translation>
|
||||
</message>
|
||||
|
|
|
@ -15,6 +15,13 @@
|
|||
<translation type="obsolete">Formato</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Autenticação</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
|
@ -197,6 +204,14 @@
|
|||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PolkitListener</name>
|
||||
|
|
|
@ -15,6 +15,13 @@
|
|||
<translation type="obsolete">форма</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Аутентификация</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
|
@ -197,6 +204,14 @@
|
|||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PolkitListener</name>
|
||||
|
|
|
@ -31,159 +31,176 @@
|
|||
<translation type="obsolete">Ses İzi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">Kimlik Doğrulama</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>Kimlik Doğrulama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<source>Account locked,</source>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>days left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>hours left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<source>minutes left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<source>seconds left</source>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -206,8 +223,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>Biyometrik</translation>
|
||||
</message>
|
||||
|
@ -257,13 +274,13 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>İptal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>Kimlik Doğrulaması</translation>
|
||||
</message>
|
||||
|
@ -277,7 +294,7 @@
|
|||
<translation type="obsolete">Kimlik Doğrulaması</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -290,22 +307,22 @@
|
|||
<translation type="vanished">Bir uygulama, ayrıcalıklar gerektiren bir eylem gerçekleştirmeye çalışıyor. Bu işlemi gerçekleştirmek için kimlik doğrulaması gerekiyor.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation type="unfinished">Parola: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation type="unfinished">_Parola: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation type="unfinished">_Parola:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>Kimlik doğrulama başarısız, lütfen tekrar deneyin.</translation>
|
||||
</message>
|
||||
|
@ -317,17 +334,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>Başka bir hesap zaten kimlik doğrulaması yapıyor, lütfen daha sonra tekrar deneyin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>Kimlik doğrulama hatalı, lütfen tekrar deneyin.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">راستىنى دەلىللەش</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>راستىنى دەلىللەش</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>بىئولەگىيەلىك ئالاھىدىلىكنى ئىشلىتىش</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>ئەمەلدىن قالدۇرۇش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>ھوقۇق بېرىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>مەخپىي نومۇر ئىشلىتىش ئارقىلىق دەلىللەش</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>٪1 مىنۇت ئىچىدە قايتا سىناپ بېقىڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>٪1 سېكۇنت ئىچىدە قايتا سىناپ بېقىڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>٪1 نى دەلىللەش مەغلۇپ بولدى، سىزدە يەنىلا ٪2 دەلىللەش پۇرسىتى بار</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>مەخپىي نومۇر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>مەخپىي نومۇرىڭىزنى كىرگۈزۈڭ ياكى بارماق ئىزىڭىزنى تونۇتۇڭ </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>بىنورمال تور</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>بۇ مەشغۇلات باشقۇرغۇچىنىڭ ھوقۇق بېرىشىنى تەلەپ قىلىدۇ.مەخپىي نومۇرنى كىرگۈزۈپ بي قېتىمقى مەشغۇلاتنىڭ ئېلىپ بېرىلىشىغا يول قويۇڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>مەخپىي نومۇر </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>مەخپىي نومۇر</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>1 كۈندىن كېيىن سىناب بېقىڭ</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دەلىللەش مەغلۇپ بولدى، مەخپى نۇمۇر كىرگۈزۈڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>٪1 نى دەلىللەشكە ئامالسىز، مەخپىي نومۇرنى كىرگۈزۈپ قۇلۇپنى ئېچىڭ</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>بىر پروگرامما ئىمتىياز تەلەپ قىلىدىغان ھەرىكەتنى قىلىشقا ئۇرۇنماقتا. بۇ ھەرىكەتنى ئىجرا قىلىش ئۈچۈن ھوقۇق تەلەپ قىلىدۇ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>ئىم كىرگۈزۈش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>ukey نى USB ئېغىزىغا چېتىپ قويۇڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>ukey مەخپىي نومۇرىنى كىرگۈزۈڭ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>بىر سائەتتىن كېيىن ئېچىلىدۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>بىر مىنۇتتىن كېيىن ئېچىلىدۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>بىر سېكۇنتتىن كېيىن ئېچىلىدۇ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>مەخپىي نومۇرنى كىرگۈزۈپ كىملىك دەلىللەش.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>چىراي تونۇشنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>بارماق ئىزىنى بېسىش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>ئاۋاز ئىزىنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>بارماق ئىزى ئارقىلىق ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>Iris نى ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>باغلانغان ئۈندىدارنى سىكاننېرلاش كودى ياكى مەخپىي نومۇرىنى كىرگۈزۈپ قۇلۇپ ئېچىش</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>ئىشلىتىش نومۇرىڭىز قۇلۇپلىنىپ قالدى</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>يەنە بىر خېرىدار دەلىللەۋاتىدۇ، سەل تۇرۇپ قايتا سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>كىرگۈزگەن مەخپىي نومۇر خاتا بولدى</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">授权</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>授权</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>使用生物识别</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>授权</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>使用密码验证</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>请%1分钟后再试</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>请%1秒后再试</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>账号已被永久锁定</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>密码不能为空</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>验证%1失败,您还有%2次尝试机会</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>密码: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>请输入密码或者录入指纹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>本次操作需要通过管理员的授权才能继续执行,请输入密码以允许本次操作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>密码: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>密码:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>认证失败,请重试。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>天后解锁</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>验证%1失败,请输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>无法验证%1,请输入密码解锁</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>一个程序正试图执行一个需要特权的动作,要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>输入密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>请将安全密钥插入USB端口</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>输入安全密钥密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation>关闭</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation>获取失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>小时后解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>分钟后解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>秒后解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>输入密码以授权</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>验证人脸识别或输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>按压指纹或输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>验证声纹或输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>验证指静脉或输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>验证虹膜或输入密码解锁</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>使用绑定的微信扫码或输入密码解锁</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>账户已锁定,</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>有另外一个客户端正在认证,请稍后重试。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>认证失败,请重试。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>密码输入错误!</translation>
|
||||
</message>
|
||||
|
|
|
@ -51,6 +51,14 @@
|
|||
<translation type="vanished">二维码</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FullScreenBackground</name>
|
||||
<message>
|
||||
<location filename="../src/fullscreenbackground.cpp" line="89"/>
|
||||
<source>Authentication</source>
|
||||
<translation type="unfinished">授權</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LoginOptionsWidget</name>
|
||||
<message>
|
||||
|
@ -65,7 +73,7 @@
|
|||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="66"/>
|
||||
<location filename="../src/mainwindow.cpp" line="71"/>
|
||||
<source>Authentication</source>
|
||||
<translation>授權</translation>
|
||||
</message>
|
||||
|
@ -92,8 +100,8 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="409"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1075"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1143"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1120"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1189"/>
|
||||
<source>Biometric</source>
|
||||
<translation>使用生物識別</translation>
|
||||
</message>
|
||||
|
@ -148,19 +156,18 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="441"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1077"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1122"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.ui" line="460"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1073"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1118"/>
|
||||
<source>Authenticate</source>
|
||||
<translation>授權</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1079"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1183"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1124"/>
|
||||
<source>Use password</source>
|
||||
<translation>使用密碼驗證</translation>
|
||||
</message>
|
||||
|
@ -185,30 +192,30 @@
|
|||
<translation type="vanished">认证中,请稍等...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1219"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1292"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1293"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1264"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1342"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1343"/>
|
||||
<source>Please try again in %1 minutes.</source>
|
||||
<translation>請%1分鐘后再試</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1230"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1302"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1303"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1276"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1354"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1355"/>
|
||||
<source>Please try again in %1 seconds.</source>
|
||||
<translation>請%1秒後再試</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1240"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1241"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1311"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1312"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1287"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1288"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1365"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1366"/>
|
||||
<source>Account locked permanently.</source>
|
||||
<translation>帳號已被永久鎖定</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="835"/>
|
||||
<location filename="../src/mainwindow.cpp" line="887"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<source>Password cannot be empty</source>
|
||||
<translation>密碼不能為空</translation>
|
||||
</message>
|
||||
|
@ -221,8 +228,8 @@
|
|||
<translation type="vanished">无法验证%1,请输入密码.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="242"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="256"/>
|
||||
<location filename="../src/mainwindow.cpp" line="260"/>
|
||||
<source>Failed to verify %1, you still have %2 verification opportunities</source>
|
||||
<translation>驗證%1失敗,您還有%2次嘗試機會</translation>
|
||||
</message>
|
||||
|
@ -231,42 +238,42 @@
|
|||
<translation type="vanished">一个程序正试图执行一个需要特权的动作。要求授权以执行该动作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="731"/>
|
||||
<location filename="../src/mainwindow.cpp" line="781"/>
|
||||
<source>Password: </source>
|
||||
<translation>密碼: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="335"/>
|
||||
<location filename="../src/mainwindow.cpp" line="362"/>
|
||||
<source>Please enter your password or enroll your fingerprint </source>
|
||||
<translation>請輸入密碼或者錄入指紋 </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="259"/>
|
||||
<location filename="../src/mainwindow.cpp" line="273"/>
|
||||
<source>Abnormal network</source>
|
||||
<translation>網路異常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="665"/>
|
||||
<location filename="../src/mainwindow.cpp" line="716"/>
|
||||
<source>This operation requires the administrator's authorization. Please enter your password to allow this operation.</source>
|
||||
<translation>本次操作需要通過管理員的授權才能繼續執行,請輸入密碼以允許本次操作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="733"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<source>_Password: </source>
|
||||
<translation>密碼: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="735"/>
|
||||
<location filename="../src/mainwindow.cpp" line="785"/>
|
||||
<source>_Password:</source>
|
||||
<translation>密碼:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="850"/>
|
||||
<location filename="../src/mainwindow.cpp" line="903"/>
|
||||
<source>Authentication failed, please try again.</source>
|
||||
<translation>認證失敗,請重試。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<source>days left</source>
|
||||
<translation>天后解鎖</translation>
|
||||
</message>
|
||||
|
@ -279,16 +286,16 @@
|
|||
<translation type="vanished">生物/扫码验证失败,您还有%1次尝试机会</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="226"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1415"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1417"/>
|
||||
<location filename="../src/mainwindow.cpp" line="237"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1492"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1495"/>
|
||||
<source>Failed to verify %1, please enter password to unlock</source>
|
||||
<translation>驗證%1失敗,請輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="231"/>
|
||||
<location filename="../src/mainwindow.cpp" line="233"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1419"/>
|
||||
<location filename="../src/mainwindow.cpp" line="243"/>
|
||||
<location filename="../src/mainwindow.cpp" line="246"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1498"/>
|
||||
<source>Unable to verify %1, please enter password to unlock</source>
|
||||
<translation>無法驗證%1,請輸入密碼解鎖</translation>
|
||||
</message>
|
||||
|
@ -297,74 +304,84 @@
|
|||
<translation type="vanished">网络异常</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="671"/>
|
||||
<location filename="../src/mainwindow.cpp" line="721"/>
|
||||
<source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
|
||||
<translation>一個程式正試圖執行一個需要特權的動作,要求授權以執行該動作。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="108"/>
|
||||
<location filename="../src/mainwindow.cpp" line="729"/>
|
||||
<location filename="../src/mainwindow.cpp" line="113"/>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<source>Input Password</source>
|
||||
<translation>輸入密碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="105"/>
|
||||
<location filename="../src/mainwindow.cpp" line="110"/>
|
||||
<source>Insert the ukey into the USB port</source>
|
||||
<translation>請將安全金鑰插入USB埠</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="107"/>
|
||||
<location filename="../src/mainwindow.cpp" line="112"/>
|
||||
<source>Enter the ukey password</source>
|
||||
<translation>輸入安全金鑰密碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="118"/>
|
||||
<source>Close</source>
|
||||
<translation>關閉</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="277"/>
|
||||
<source>Acquisition failure</source>
|
||||
<translation>獲取失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<source>hours left</source>
|
||||
<translation>小時後解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<source>minutes left</source>
|
||||
<translation>分鐘後解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>seconds left</source>
|
||||
<translation>秒後解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="880"/>
|
||||
<location filename="../src/mainwindow.cpp" line="888"/>
|
||||
<location filename="../src/mainwindow.cpp" line="933"/>
|
||||
<location filename="../src/mainwindow.cpp" line="941"/>
|
||||
<source>Input your password to authentication</source>
|
||||
<translation>輸入密碼以認證</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1434"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1511"/>
|
||||
<source>Verify face recognition or enter password to unlock</source>
|
||||
<translation>驗證人臉識別或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1439"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1514"/>
|
||||
<source>Press fingerprint or enter password to unlock</source>
|
||||
<translation>按壓指紋或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1444"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1517"/>
|
||||
<source>Verify voiceprint or enter password to unlock</source>
|
||||
<translation>驗證聲紋或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1449"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1520"/>
|
||||
<source>Verify finger vein or enter password to unlock</source>
|
||||
<translation>驗證指靜脈或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1454"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1523"/>
|
||||
<source>Verify iris or enter password to unlock</source>
|
||||
<translation>驗證虹膜或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="1459"/>
|
||||
<location filename="../src/mainwindow.cpp" line="1526"/>
|
||||
<source>Use the bound wechat scanning code or enter the password to unlock</source>
|
||||
<translation>使用綁定的微信掃碼或輸入密碼解鎖</translation>
|
||||
</message>
|
||||
|
@ -373,10 +390,10 @@
|
|||
<translation type="vanished">使用绑定的微信扫码或输入密码登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/mainwindow.cpp" line="779"/>
|
||||
<location filename="../src/mainwindow.cpp" line="783"/>
|
||||
<location filename="../src/mainwindow.cpp" line="787"/>
|
||||
<location filename="../src/mainwindow.cpp" line="791"/>
|
||||
<location filename="../src/mainwindow.cpp" line="834"/>
|
||||
<location filename="../src/mainwindow.cpp" line="837"/>
|
||||
<location filename="../src/mainwindow.cpp" line="840"/>
|
||||
<location filename="../src/mainwindow.cpp" line="843"/>
|
||||
<source>Account locked,</source>
|
||||
<translation>帳戶已鎖定,</translation>
|
||||
</message>
|
||||
|
@ -388,17 +405,17 @@
|
|||
<context>
|
||||
<name>PolkitListener</name>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="88"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="86"/>
|
||||
<source>Another client is already authenticating, please try again later.</source>
|
||||
<translation>有另外一個用戶端正在認證,請稍後重試。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="265"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="253"/>
|
||||
<source>Authentication failure, please try again.</source>
|
||||
<translation>認證失敗,請重試。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/PolkitListener.cpp" line="272"/>
|
||||
<location filename="../src/PolkitListener.cpp" line="259"/>
|
||||
<source>Password input error!</source>
|
||||
<translation>密碼輸入錯誤!</translation>
|
||||
</message>
|
||||
|
|
|
@ -31,28 +31,21 @@
|
|||
#include <QApplication>
|
||||
#include <QScreen>
|
||||
#include <fcntl.h>
|
||||
#include <kysdk/kysdk-system/libkysysinfo.h>
|
||||
|
||||
#include "PolkitListener.h"
|
||||
#include "mainwindow.h"
|
||||
#include "generic.h"
|
||||
#include <libkysysinfo.h>
|
||||
#include "windowmanager/windowmanager.h"
|
||||
|
||||
PolkitListener::PolkitListener(QObject *parent)
|
||||
: Listener(parent),
|
||||
inProgress(false),
|
||||
currentIdentity(0),
|
||||
mainWindow(nullptr)
|
||||
: Listener(parent), inProgress(false), currentIdentity(0), m_managerFullScreen(nullptr)
|
||||
{
|
||||
m_isSupportTableMode = isSupportTableMode();
|
||||
m_isMavis = isMavis();
|
||||
qDebug() << "isSupportTableMode:" << m_isSupportTableMode;
|
||||
}
|
||||
|
||||
PolkitListener::~PolkitListener()
|
||||
{
|
||||
}
|
||||
PolkitListener::~PolkitListener() {}
|
||||
|
||||
bool PolkitListener::isMavis()
|
||||
{
|
||||
|
@ -81,9 +74,12 @@ bool PolkitListener::isSupportTableMode()
|
|||
|
||||
/* initiateAuthentication message from polkit */
|
||||
void PolkitListener::initiateAuthentication(
|
||||
const QString &actionId, const QString &message,
|
||||
const QString &iconName, const PolkitQt1::Details &details,
|
||||
const QString &cookie, const PolkitQt1::Identity::List &identities,
|
||||
const QString &actionId,
|
||||
const QString &message,
|
||||
const QString &iconName,
|
||||
const PolkitQt1::Details &details,
|
||||
const QString &cookie,
|
||||
const PolkitQt1::Identity::List &identities,
|
||||
PolkitQt1::Agent::AsyncResult *result)
|
||||
{
|
||||
if (inProgress) {
|
||||
|
@ -107,10 +103,10 @@ void PolkitListener::initiateAuthentication(
|
|||
|
||||
subjectPid = details.lookup("polkit.subject-pid");
|
||||
callerPid = details.lookup("polkit.caller-pid");
|
||||
implicitActiveStr = details.lookup("implicit_authorization");
|
||||
|
||||
/* find action description for actionId */
|
||||
foreach(const PolkitQt1::ActionDescription &desc,
|
||||
PolkitQt1::Authority::instance()->enumerateActionsSync()) {
|
||||
foreach (const PolkitQt1::ActionDescription &desc, PolkitQt1::Authority::instance()->enumerateActionsSync()) {
|
||||
if (actionId == desc.actionId()) {
|
||||
actionDesc = desc;
|
||||
qDebug() << "Action description has been found";
|
||||
|
@ -142,62 +138,37 @@ void PolkitListener::initiateAuthentication(
|
|||
|
||||
/* Create the polkit window */
|
||||
|
||||
mainWindow = new MainWindow;
|
||||
// MotifWmHints hints;
|
||||
// hints.flags = MWM_HINTS_FUNCTIONS|MWM_HINTS_DECORATIONS;
|
||||
// hints.functions = MWM_FUNC_ALL;
|
||||
// hints.decorations = MWM_DECOR_BORDER;
|
||||
// XAtomHelper::getInstance()->setWindowMotifHint(mainWindow->winId(), hints);
|
||||
mainWindow->setIcon(iconName);
|
||||
mainWindow->setCurProject(m_isMavis);
|
||||
mainWindow->setHeader(message);
|
||||
mainWindow->setUsers(usersList);
|
||||
mainWindow->setEditInputMethod(m_isSupportTableMode);
|
||||
mainWindow->setFixedSize(420, 297);
|
||||
/*
|
||||
mainWindow->setDetails(subjectPid, callerPid,
|
||||
actionDesc.actionId(),
|
||||
actionDesc.description(),
|
||||
actionDesc.vendorName(),
|
||||
actionDesc.vendorUrl());
|
||||
*/
|
||||
/* set the position of the mainwindow */
|
||||
QPoint pos = QCursor::pos();
|
||||
QRect desScreenGeometry;
|
||||
for (QScreen *screen : qApp->screens()) {
|
||||
if (screen->geometry().contains(pos)) {
|
||||
desScreenGeometry = screen->geometry();
|
||||
}
|
||||
}
|
||||
m_managerFullScreen = new FullScreenBackground();
|
||||
m_managerFullScreen->initMainWindow(
|
||||
iconName, message, usersList, subjectPid, callerPid, actionDesc, m_isMavis, m_isSupportTableMode);
|
||||
|
||||
if (desScreenGeometry.isEmpty()) {
|
||||
desScreenGeometry = qApp->primaryScreen()->geometry();
|
||||
}
|
||||
// mainWindow->move(desScreenGeometry.x() + (desScreenGeometry.width() - mainWindow->width())/2,
|
||||
// desScreenGeometry.y() + (desScreenGeometry.height() - mainWindow->height())/2);
|
||||
// qDebug()<<"MoveWindow to center1:"<<desScreenGeometry<<","<<mainWindow->geometry()<<QGuiApplication::platformName();;
|
||||
|
||||
|
||||
|
||||
connect(mainWindow, &MainWindow::accept, this, &PolkitListener::onResponse);
|
||||
connect(mainWindow, &MainWindow::canceled, this, [&]{
|
||||
if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::accept, this, &PolkitListener::onResponse);
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::canceled, this, [&] {
|
||||
if (inProgress && !gainedAuthorization) {
|
||||
wasCancelled = true;
|
||||
unacknowledged_messages = false;
|
||||
if (!session.isNull()) {
|
||||
session.data()->cancel();
|
||||
}
|
||||
finishObtainPrivilege();
|
||||
}
|
||||
});
|
||||
|
||||
connect(mainWindow, &MainWindow::switchToBiometric, this, [&]{
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::switchToBiometric, this, [&] {
|
||||
wasSwitchToBiometric = true;
|
||||
startAuthentication();
|
||||
});
|
||||
|
||||
connect(mainWindow, &MainWindow::restartAuth, this, [&]{
|
||||
startAuthentication();
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::yesPrompted, this, [=] {
|
||||
result->setCompleted();
|
||||
this->gainedAuthorization = true;
|
||||
finishObtainPrivilege();
|
||||
});
|
||||
|
||||
connect(mainWindow, &MainWindow::userChanged, this, [&](const QString &userName){
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::restartAuth, this, [&] { startAuthentication(); });
|
||||
|
||||
connect(m_managerFullScreen->getMainWindow(), &MainWindow::userChanged, this, [&](const QString &userName) {
|
||||
for (int i = 0; i < this->identities.size(); i++) {
|
||||
auto identity = this->identities.at(i);
|
||||
if (identity.toString().remove("unix-user:") == userName) {
|
||||
|
@ -213,15 +184,22 @@ void PolkitListener::initiateAuthentication(
|
|||
wasCancelled = false;
|
||||
wasSwitchToBiometric = false;
|
||||
|
||||
mainWindow->userChanged(usersList.at(0));
|
||||
|
||||
if (implicitActiveStr == "yes_prompt") {
|
||||
m_managerFullScreen->getMainWindow()->onShowYesPrompt();
|
||||
m_managerFullScreen->getMainWindow()->setFixedSize(m_managerFullScreen->getMainWindow()->width(), 200);
|
||||
m_managerFullScreen->getMainWindow()->show();
|
||||
m_managerFullScreen->getMainWindow()->activateWindow();
|
||||
return;
|
||||
}
|
||||
|
||||
static
|
||||
int get_pam_tally(int *deny, int *unlock_time)
|
||||
m_managerFullScreen->getMainWindow()->userChanged(usersList.at(0));
|
||||
}
|
||||
}
|
||||
|
||||
static int get_pam_tally(int *deny, int *unlock_time)
|
||||
{
|
||||
char buf[128];
|
||||
FILE *auth_file;
|
||||
FILE *auth_file = NULL;
|
||||
|
||||
if ((auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL)
|
||||
return -1;
|
||||
|
@ -244,8 +222,12 @@ int get_pam_tally(int *deny, int *unlock_time)
|
|||
}
|
||||
ptr = strtok(NULL, " \t");
|
||||
}
|
||||
fclose(auth_file);
|
||||
auth_file = NULL;
|
||||
return 1;
|
||||
}
|
||||
fclose(auth_file);
|
||||
auth_file = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -259,22 +241,22 @@ void PolkitListener::finishObtainPrivilege()
|
|||
"privileges (G:%1, C:%2, D:%3).")
|
||||
.arg(gainedAuthorization)
|
||||
.arg(wasCancelled)
|
||||
.arg(mainWindow != NULL);
|
||||
.arg(m_managerFullScreen && m_managerFullScreen->getMainWindow());
|
||||
|
||||
if (!gainedAuthorization && !wasCancelled && (mainWindow != NULL)) {
|
||||
if (!gainedAuthorization && !wasCancelled && (m_managerFullScreen && m_managerFullScreen->getMainWindow())) {
|
||||
int deny = 0, unlock_time = 0;
|
||||
mainWindow->stopDoubleAuth();
|
||||
m_managerFullScreen->getMainWindow()->stopDoubleAuth();
|
||||
if (!get_pam_tally(&deny, &unlock_time) || (deny == 0 && unlock_time == 0)) {
|
||||
// if(!wasSwitchToBiometric){
|
||||
if (!unacknowledged_messages)
|
||||
mainWindow->setAuthResult(gainedAuthorization, tr("Authentication failure, please try again."));
|
||||
m_managerFullScreen->getMainWindow()->setAuthResult(
|
||||
gainedAuthorization, tr("Authentication failure, please try again."));
|
||||
//}
|
||||
startAuthentication();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (!unacknowledged_messages) {
|
||||
mainWindow->setAuthResult(gainedAuthorization, tr("Password input error!"));
|
||||
m_managerFullScreen->getMainWindow()->setAuthResult(gainedAuthorization, tr("Password input error!"));
|
||||
}
|
||||
startAuthentication();
|
||||
return;
|
||||
|
@ -284,23 +266,28 @@ void PolkitListener::finishObtainPrivilege()
|
|||
return;
|
||||
}
|
||||
|
||||
if (mainWindow) {
|
||||
mainWindow->hide();
|
||||
mainWindow->stopDoubleAuth();
|
||||
mainWindow->close();
|
||||
mainWindow->deleteLater();
|
||||
mainWindow = NULL;
|
||||
if (m_managerFullScreen) {
|
||||
m_managerFullScreen->closeDialog();
|
||||
m_managerFullScreen->deleteLater();
|
||||
m_managerFullScreen = nullptr;
|
||||
}
|
||||
|
||||
if ((implicitActiveStr == "yes_prompt") && wasCancelled) {
|
||||
result->setError("polkit-ukui-authentication-agent-1 cancel");
|
||||
}
|
||||
|
||||
if (!session.isNull()) {
|
||||
session.data()->result()->setCompleted();
|
||||
session.data()->deleteLater();
|
||||
session.clear();
|
||||
} else {
|
||||
result->setCompleted();
|
||||
}
|
||||
session.data()->deleteLater();
|
||||
|
||||
this->inProgress = false;
|
||||
implicitActiveStr = "";
|
||||
qDebug() << "Finish obtain authorization:" << gainedAuthorization;
|
||||
gainedAuthorization = false;
|
||||
}
|
||||
|
||||
void establishToBioPAM()
|
||||
|
@ -333,91 +320,60 @@ void PolkitListener::startAuthentication()
|
|||
establishToBioPAM();
|
||||
|
||||
session = new Session(currentIdentity, cookie, result);
|
||||
connect(session.data(), SIGNAL(request(QString, bool)), this,
|
||||
SLOT(onShowPrompt(QString,bool)));
|
||||
connect(session.data(), SIGNAL(completed(bool)), this,
|
||||
SLOT(onAuthCompleted(bool)));
|
||||
connect(session.data(), SIGNAL(showError(QString)), this,
|
||||
SLOT(onShowError(QString)));
|
||||
connect(session.data(), SIGNAL(showInfo(QString)), this,
|
||||
SLOT(onShowError(QString)));
|
||||
connect(session.data(), SIGNAL(request(QString, bool)), this, SLOT(onShowPrompt(QString, bool)));
|
||||
connect(session.data(), SIGNAL(completed(bool)), this, SLOT(onAuthCompleted(bool)));
|
||||
connect(session.data(), SIGNAL(showError(QString)), this, SLOT(onShowError(QString)));
|
||||
connect(session.data(), SIGNAL(showInfo(QString)), this, SLOT(onShowError(QString)));
|
||||
session.data()->initiate();
|
||||
}
|
||||
|
||||
mainWindow->clearEdit();
|
||||
if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
|
||||
m_managerFullScreen->getMainWindow()->clearEdit();
|
||||
}
|
||||
}
|
||||
|
||||
void PolkitListener::onShowPrompt(const QString &prompt, bool echo)
|
||||
{
|
||||
qDebug() << "Prompt: " << prompt << "echo: " << echo;
|
||||
|
||||
if(prompt == BIOMETRIC_PAM || prompt == BIOMETRIC_PAM_QRCODE) {
|
||||
mainWindow->setDoubleAuth(false);
|
||||
mainWindow->switchAuthMode(MainWindow::BIOMETRIC);
|
||||
}else if(prompt == BIOMETRIC_PAM_DOUBLE){
|
||||
mainWindow->setDoubleAuth(true);
|
||||
mainWindow->switchAuthMode(MainWindow::BIOMETRIC);
|
||||
//这时候不需要显示授权弹窗,下一次收到prompt请求的时候再显示
|
||||
if (!m_managerFullScreen || !m_managerFullScreen->getMainWindow()) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
if (prompt == BIOMETRIC_PAM || prompt == BIOMETRIC_PAM_QRCODE) {
|
||||
m_managerFullScreen->getMainWindow()->setDoubleAuth(false);
|
||||
m_managerFullScreen->getMainWindow()->switchAuthMode(MainWindow::BIOMETRIC);
|
||||
} else if (prompt == BIOMETRIC_PAM_DOUBLE) {
|
||||
m_managerFullScreen->getMainWindow()->setDoubleAuth(true);
|
||||
m_managerFullScreen->getMainWindow()->switchAuthMode(MainWindow::BIOMETRIC);
|
||||
//这时候不需要显示授权弹窗,下一次收到prompt请求的时候再显示
|
||||
return;
|
||||
} else {
|
||||
unacknowledged_messages = false;
|
||||
mainWindow->switchAuthMode(MainWindow::PASSWORD);
|
||||
mainWindow->setPrompt(prompt, echo);
|
||||
m_managerFullScreen->getMainWindow()->switchAuthMode(MainWindow::PASSWORD);
|
||||
m_managerFullScreen->getMainWindow()->setPrompt(prompt, echo);
|
||||
m_managerFullScreen->showDialog();
|
||||
}
|
||||
mainWindow->setFixedSize(mainWindow->width(),mainWindow->height());
|
||||
|
||||
/* set the position of the mainwindow */
|
||||
QPoint pos = QCursor::pos();
|
||||
QRect desScreenGeometry;
|
||||
for (QScreen *screen : qApp->screens()) {
|
||||
if (screen->geometry().contains(pos)) {
|
||||
desScreenGeometry = screen->geometry();
|
||||
}
|
||||
}
|
||||
|
||||
if (desScreenGeometry.isEmpty()) {
|
||||
desScreenGeometry = qApp->primaryScreen()->geometry();
|
||||
}
|
||||
|
||||
kdk::WindowManager::setGeometry(mainWindow->windowHandle(),
|
||||
QRect(desScreenGeometry.left() + (desScreenGeometry.width() - mainWindow->width())/2,
|
||||
desScreenGeometry.top() + (desScreenGeometry.height() - mainWindow->height())/2,
|
||||
mainWindow->width(), mainWindow->height()));
|
||||
|
||||
mainWindow->show();
|
||||
// 重新开始认证不调整窗口位置
|
||||
// QPoint pos = QCursor::pos();
|
||||
// for(auto screen : QGuiApplication::screens())
|
||||
// {
|
||||
// if(screen->geometry().contains(pos))
|
||||
// {
|
||||
// mainWindow->move(screen->geometry().left() + (screen->geometry().width() - mainWindow->width()) / 2,
|
||||
// screen->geometry().top() + (screen->geometry().height() - mainWindow->height()) / 2);
|
||||
// }
|
||||
// }
|
||||
|
||||
mainWindow->activateWindow();
|
||||
}
|
||||
|
||||
//目前返回的pam错误就onShowError,onShowInfo两类
|
||||
void PolkitListener::onShowError(const QString &text)
|
||||
{
|
||||
qDebug() << "[Polkit]:" << "Error:" << text;
|
||||
qDebug() << "[Polkit]:"
|
||||
<< "Error:" << text;
|
||||
unacknowledged_messages = true;
|
||||
if(mainWindow){
|
||||
QString strText = mainWindow->check_is_pam_message(text);
|
||||
mainWindow->setMessage(strText);
|
||||
if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
|
||||
QString strText = m_managerFullScreen->getMainWindow()->check_is_pam_message(text);
|
||||
m_managerFullScreen->getMainWindow()->setMessage(strText);
|
||||
}
|
||||
}
|
||||
|
||||
void PolkitListener::onShowInfo(const QString &text)
|
||||
{
|
||||
qDebug() << "[Polkit]:" << "Info:" << text;
|
||||
qDebug() << "[Polkit]:"
|
||||
<< "Info:" << text;
|
||||
unacknowledged_messages = true;
|
||||
if(mainWindow){
|
||||
QString strText = mainWindow->check_is_pam_message(text);
|
||||
mainWindow->setMessage(strText);
|
||||
if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
|
||||
QString strText = m_managerFullScreen->getMainWindow()->check_is_pam_message(text);
|
||||
m_managerFullScreen->getMainWindow()->setMessage(strText);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <QPointer>
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "fullscreenbackground.h"
|
||||
|
||||
using namespace PolkitQt1::Agent;
|
||||
|
||||
|
@ -37,7 +38,8 @@ private:
|
|||
bool isMavis();
|
||||
|
||||
public slots:
|
||||
void initiateAuthentication(const QString &actionId,
|
||||
void initiateAuthentication(
|
||||
const QString &actionId,
|
||||
const QString &message,
|
||||
const QString &iconName,
|
||||
const PolkitQt1::Details &details,
|
||||
|
@ -48,19 +50,19 @@ public slots:
|
|||
void cancelAuthentication();
|
||||
void finishObtainPrivilege();
|
||||
|
||||
|
||||
private:
|
||||
bool gainedAuthorization;
|
||||
bool wasCancelled;
|
||||
bool wasSwitchToBiometric;
|
||||
bool gainedAuthorization = false;
|
||||
bool wasCancelled = false;
|
||||
bool wasSwitchToBiometric = false;
|
||||
bool inProgress;
|
||||
int numTries;
|
||||
QString implicitActiveStr;
|
||||
QPointer<Session> session;
|
||||
PolkitQt1::Identity::List identities;
|
||||
PolkitQt1::Identity currentIdentity;
|
||||
PolkitQt1::Agent::AsyncResult *result;
|
||||
QString cookie;
|
||||
MainWindow *mainWindow;
|
||||
FullScreenBackground *m_managerFullScreen;
|
||||
bool unacknowledged_messages = false;
|
||||
bool m_isSupportTableMode = false;
|
||||
bool m_isMavis = false;
|
||||
|
|
|
@ -0,0 +1,513 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Tianjin KYLIN Information Technology 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 "fullscreenbackground.h"
|
||||
#include "mainwindow.h"
|
||||
#include <unistd.h>
|
||||
#include <QDebug>
|
||||
#include <QImageReader>
|
||||
#include <QPixmap>
|
||||
#include <QApplication>
|
||||
#include <QScreen>
|
||||
#include <QCursor>
|
||||
#include <QTimer>
|
||||
#include <QDesktopWidget>
|
||||
#include <QPainter>
|
||||
#include <QPainterPath>
|
||||
#include <KWindowSystem>
|
||||
#include <windowmanager/windowmanager.h>
|
||||
|
||||
using namespace kdk;
|
||||
|
||||
#define PERSONALSIE_SCHEMA "org.mate.background"
|
||||
#define PERSONALSIE_TRAN_KEY "picture-filename"
|
||||
|
||||
#define USD_MEDIA_KEYS_SCHEMA "org.ukui.SettingsDaemon.plugins.media-keys"
|
||||
#define USD_MEDIA_KEYS_WINDOW_SWTICH_KEY "ukuiWindowSwitch"
|
||||
#define USD_MEDIA_KEYS_WINDOW_SWTICH2_KEY "ukuiWindowSwitch2"
|
||||
|
||||
FullScreenBackground::FullScreenBackground(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
m_isWayland = QString(qgetenv("XDG_SESSION_TYPE")) == "wayland";
|
||||
initUI();
|
||||
initConnections();
|
||||
}
|
||||
|
||||
FullScreenBackground::~FullScreenBackground()
|
||||
{
|
||||
closeDialog();
|
||||
}
|
||||
|
||||
void FullScreenBackground::initMainWindow(
|
||||
const QString &strIconName,
|
||||
const QString &strMsg,
|
||||
const QStringList &listUsers,
|
||||
const QString &subjectPid,
|
||||
const QString &callerPid,
|
||||
const PolkitQt1::ActionDescription &actionDesc,
|
||||
const bool &isMavis,
|
||||
const bool &isSupportTableMode)
|
||||
{
|
||||
if (!m_wndMain) {
|
||||
if (m_isWayland) {
|
||||
m_wndMain = new MainWindow();
|
||||
m_wndMain->setWindowFlags(windowFlags() | Qt::Tool | Qt::WindowStaysOnTopHint);
|
||||
KWindowSystem::setState(m_wndMain->winId(), NET::State::KeepAbove | NET::State::SkipTaskbar);
|
||||
} else {
|
||||
m_wndMain = new MainWindow(this);
|
||||
m_wndMain->setModal(true);
|
||||
}
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint & ~Qt::WindowMinimizeButtonHint);
|
||||
m_wndMain->setWindowTitle(tr("Authentication"));
|
||||
WindowManager::setSkipTaskBar(m_wndMain->windowHandle(), true);
|
||||
m_wndMain->setIcon(strIconName);
|
||||
m_wndMain->setCurProject(isMavis);
|
||||
m_wndMain->setHeader(strMsg);
|
||||
m_wndMain->setUsers(listUsers);
|
||||
m_wndMain->setEditInputMethod(isSupportTableMode);
|
||||
m_wndMain->setFixedSize(420, 337);
|
||||
/*
|
||||
*
|
||||
mainWindow->setDetails(subjectPid, callerPid,
|
||||
actionDesc.actionId(),
|
||||
actionDesc.description(),
|
||||
actionDesc.vendorName(),
|
||||
actionDesc.vendorUrl());
|
||||
*/
|
||||
connect(m_wndMain, &MainWindow::finished, this, [=](int nResult) {
|
||||
qDebug() << "auth dialog finished:" << nResult;
|
||||
});
|
||||
}
|
||||
if (m_isWayland) {
|
||||
hide();
|
||||
} else {
|
||||
show();
|
||||
}
|
||||
}
|
||||
|
||||
void FullScreenBackground::initUI()
|
||||
{
|
||||
setWindowTitle(tr("Authentication"));
|
||||
if (m_isWayland) {
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
setGeometry(0, 0, 0, 0);
|
||||
} else {
|
||||
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
|
||||
setWindowOpacity(0.25);
|
||||
KWindowSystem::setState(winId(), NET::State::KeepAbove | NET::State::SkipTaskbar);
|
||||
WindowManager::setSkipTaskBar(this->windowHandle(), true);
|
||||
installEventFilter(this);
|
||||
|
||||
if (!isSupportCompositing()) {
|
||||
m_pixmapBackground = getBackground();
|
||||
}
|
||||
setGeometry(0, 0, 7680, 4320);
|
||||
}
|
||||
qDebug() << "Window geometry:" << geometry();
|
||||
}
|
||||
|
||||
void FullScreenBackground::initConnections()
|
||||
{
|
||||
QDesktopWidget *desktop = QApplication::desktop();
|
||||
if (desktop) {
|
||||
connect(desktop, &QDesktopWidget::resized, this, &FullScreenBackground::onDesktopResized);
|
||||
connect(desktop, &QDesktopWidget::workAreaResized, this, &FullScreenBackground::onWorkAreaResized);
|
||||
connect(desktop, &QDesktopWidget::primaryScreenChanged, this, &FullScreenBackground::onPrimaryScreenChanged);
|
||||
connect(desktop, &QDesktopWidget::screenCountChanged, this, &FullScreenBackground::onScreenCountChanged);
|
||||
}
|
||||
}
|
||||
|
||||
void FullScreenBackground::onScreenCountChanged(int)
|
||||
{
|
||||
qDebug() << "onScreenCountChanged----";
|
||||
if (m_isWayland) {
|
||||
update();
|
||||
moveToCursorScreen();
|
||||
return;
|
||||
}
|
||||
QDesktopWidget *desktop = QApplication::desktop();
|
||||
if ((desktop->geometry().x() != 0 || desktop->geometry().y() != 0) && this->geometry().contains(desktop->geometry())
|
||||
&& (QApplication::screens().count() == 1)) {
|
||||
return;
|
||||
}
|
||||
if (desktop->geometry().height() > height() || desktop->geometry().width() > width()) {
|
||||
setGeometry(
|
||||
desktop->geometry().x(),
|
||||
desktop->geometry().y(),
|
||||
desktop->geometry().width() + 1,
|
||||
desktop->geometry().height() + 1);
|
||||
}
|
||||
|
||||
update();
|
||||
moveToCursorScreen();
|
||||
qDebug() << desktop->geometry();
|
||||
}
|
||||
|
||||
void FullScreenBackground::onWorkAreaResized()
|
||||
{
|
||||
qDebug() << "onWorkAreaResized----";
|
||||
update();
|
||||
}
|
||||
|
||||
void FullScreenBackground::onPrimaryScreenChanged()
|
||||
{
|
||||
qDebug() << "onPrimaryScreenChanged----";
|
||||
moveToCursorScreen();
|
||||
}
|
||||
|
||||
void FullScreenBackground::onDesktopResized()
|
||||
{
|
||||
qDebug() << "onDesktopResized----";
|
||||
if (m_isWayland) {
|
||||
update();
|
||||
moveToCursorScreen();
|
||||
return;
|
||||
}
|
||||
QDesktopWidget *desktop = QApplication::desktop();
|
||||
if ((desktop->geometry().x() != 0 || desktop->geometry().y() != 0) && this->geometry().contains(desktop->geometry())
|
||||
&& (QGuiApplication::screens().count() == 1)) {
|
||||
return;
|
||||
}
|
||||
if (desktop->geometry().height() > height() || desktop->geometry().width() > width()) {
|
||||
setGeometry(
|
||||
desktop->geometry().x(),
|
||||
desktop->geometry().y(),
|
||||
desktop->geometry().width() + 1,
|
||||
desktop->geometry().height() + 1);
|
||||
}
|
||||
|
||||
update();
|
||||
moveToCursorScreen();
|
||||
qDebug() << desktop->geometry();
|
||||
}
|
||||
|
||||
void FullScreenBackground::showDialog()
|
||||
{
|
||||
if (m_isFirstShow) {
|
||||
m_isFirstShow = false;
|
||||
blockSomeShortCut(true);
|
||||
if (!m_isWayland) {
|
||||
show();
|
||||
}
|
||||
if (m_wndMain) {
|
||||
qDebug() << "DialogGeometry:" << m_wndMain->geometry();
|
||||
m_wndMain->show();
|
||||
m_wndMain->activateWindow();
|
||||
// move auth dialog to cursor screen
|
||||
moveToCursorScreen();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FullScreenBackground::closeDialog()
|
||||
{
|
||||
blockSomeShortCut(false);
|
||||
if (m_wndMain) {
|
||||
m_wndMain->hide();
|
||||
m_wndMain->stopDoubleAuth();
|
||||
m_wndMain->close();
|
||||
m_wndMain->deleteLater();
|
||||
m_wndMain = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool FullScreenBackground::isSupportCompositing()
|
||||
{
|
||||
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
|
||||
return true;
|
||||
}
|
||||
QDBusInterface kwinCompositor(
|
||||
"org.ukui.KWin", "/Compositor", "org.freedesktop.DBus.Properties", QDBusConnection::sessionBus());
|
||||
QDBusReply<QDBusVariant> sessionReply = kwinCompositor.call("Get", "org.kde.kwin.Compositing", "compositingType");
|
||||
if (!sessionReply.isValid()) {
|
||||
qWarning() << sessionReply.error();
|
||||
} else {
|
||||
QString strType = sessionReply.value().variant().toString();
|
||||
if (strType.isEmpty() || strType == "none")
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
QPixmap FullScreenBackground::getBackground()
|
||||
{
|
||||
QPixmap pixmapBackground;
|
||||
QString strPicName = "";
|
||||
|
||||
// 获取桌面壁纸路径
|
||||
QGSettings *personalGSettings = nullptr;
|
||||
if (QGSettings::isSchemaInstalled(PERSONALSIE_SCHEMA)) {
|
||||
personalGSettings = new QGSettings(PERSONALSIE_SCHEMA, QByteArray(), this);
|
||||
QStringList keys = personalGSettings->keys();
|
||||
if (keys.contains(PERSONALSIE_TRAN_KEY)) {
|
||||
strPicName = personalGSettings->get(PERSONALSIE_TRAN_KEY).toString();
|
||||
}
|
||||
delete personalGSettings;
|
||||
personalGSettings = nullptr;
|
||||
}
|
||||
|
||||
// 文件存在且可读则加载图片
|
||||
QFileInfo fileInfo(strPicName);
|
||||
if (fileInfo.exists() && fileInfo.isReadable()) {
|
||||
// do nothing
|
||||
} else {
|
||||
strPicName = getAccountBackground();
|
||||
}
|
||||
|
||||
if (!strPicName.isEmpty()) {
|
||||
QImageReader reader;
|
||||
reader.setFileName(strPicName);
|
||||
reader.setAutoTransform(true);
|
||||
reader.setDecideFormatFromContent(true);
|
||||
pixmapBackground = QPixmap::fromImageReader(&reader);
|
||||
}
|
||||
|
||||
return pixmapBackground;
|
||||
}
|
||||
|
||||
QString FullScreenBackground::getAccountBackground()
|
||||
{
|
||||
QString strTmpPicName = "/usr/share/backgrounds/ubuntukylin-default-settings.jpg";
|
||||
|
||||
uid_t uid = getuid();
|
||||
QDBusInterface iface(
|
||||
"org.freedesktop.Accounts",
|
||||
"/org/freedesktop/Accounts",
|
||||
"org.freedesktop.Accounts",
|
||||
QDBusConnection::systemBus());
|
||||
|
||||
QDBusReply<QDBusObjectPath> userPath = iface.call("FindUserById", (qint64)uid);
|
||||
if (!userPath.isValid()) {
|
||||
return strTmpPicName;
|
||||
} else {
|
||||
QDBusInterface userIface(
|
||||
"org.freedesktop.Accounts",
|
||||
userPath.value().path(),
|
||||
"org.freedesktop.DBus.Properties",
|
||||
QDBusConnection::systemBus());
|
||||
QDBusReply<QDBusVariant> backgroundReply
|
||||
= userIface.call("Get", "org.freedesktop.Accounts.User", "BackgroundFile");
|
||||
if (backgroundReply.isValid()) {
|
||||
QString strPicName = backgroundReply.value().variant().toString();
|
||||
if (!strPicName.isEmpty()) {
|
||||
QFileInfo fileInfo(strPicName);
|
||||
if (fileInfo.exists() && fileInfo.isReadable()) {
|
||||
return strPicName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return strTmpPicName;
|
||||
}
|
||||
|
||||
void FullScreenBackground::moveToScreen(QScreen *screen)
|
||||
{
|
||||
// 将主全屏更新到新屏幕上,并重新将对话框居中
|
||||
if (!screen) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_wndMain) {
|
||||
QRect rectParent = screen->geometry();
|
||||
QRect rectDes = QRect(
|
||||
rectParent.x() + (rectParent.width() - m_wndMain->width()) / 2,
|
||||
rectParent.y() + (rectParent.height() - m_wndMain->height()) / 2,
|
||||
m_wndMain->width(),
|
||||
m_wndMain->height());
|
||||
|
||||
WindowManager::setGeometry(m_wndMain->windowHandle(), rectDes);
|
||||
qDebug() << "new rect:" << rectParent << "," << rectDes << "," << m_wndMain->geometry();
|
||||
}
|
||||
}
|
||||
|
||||
void FullScreenBackground::moveToCursorScreen()
|
||||
{
|
||||
bool isFoundScreen = false;
|
||||
if (m_isWayland) {
|
||||
QString strCurScreen = WindowManager::currentOutputName();
|
||||
for (auto screen : QApplication::screens()) {
|
||||
qDebug() << "Screen:" << screen->name() << "," << screen->geometry();
|
||||
if (screen && screen->name() == strCurScreen) {
|
||||
isFoundScreen = true;
|
||||
moveToScreen(screen);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
QPoint cursor = QCursor::pos();
|
||||
for (auto screen : QApplication::screens()) {
|
||||
qDebug() << "Screen:" << screen->name() << "," << screen->geometry();
|
||||
if (screen && screen->geometry().contains(cursor)) {
|
||||
isFoundScreen = true;
|
||||
moveToScreen(screen);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!isFoundScreen) {
|
||||
if (QApplication::primaryScreen()) {
|
||||
moveToScreen(QApplication::primaryScreen());
|
||||
}
|
||||
isFoundScreen = true;
|
||||
}
|
||||
}
|
||||
|
||||
void FullScreenBackground::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
if (!m_isWayland) {
|
||||
for (auto screen : QApplication::screens()) {
|
||||
QPainter painter(this);
|
||||
if (!m_pixmapBackground.isNull()) {
|
||||
painter.drawPixmap(screen->geometry(), m_pixmapBackground);
|
||||
}
|
||||
}
|
||||
}
|
||||
return QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
void FullScreenBackground::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
qDebug() << "FullScreenBackground::closeEvent";
|
||||
if (!m_isWayland) {
|
||||
// 断开屏幕变化信号
|
||||
QDesktopWidget *desktop = QApplication::desktop();
|
||||
disconnect(desktop, &QDesktopWidget::resized, this, &FullScreenBackground::onDesktopResized);
|
||||
disconnect(desktop, &QDesktopWidget::workAreaResized, this, &FullScreenBackground::onWorkAreaResized);
|
||||
disconnect(desktop, &QDesktopWidget::primaryScreenChanged, this, &FullScreenBackground::onPrimaryScreenChanged);
|
||||
disconnect(desktop, &QDesktopWidget::screenCountChanged, this, &FullScreenBackground::onScreenCountChanged);
|
||||
}
|
||||
|
||||
return QWidget::closeEvent(event);
|
||||
}
|
||||
|
||||
void FullScreenBackground::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
qDebug() << "WndSize:" << this->size();
|
||||
}
|
||||
|
||||
void FullScreenBackground::blockSomeShortCut(bool isBlock /* = false*/)
|
||||
{
|
||||
static bool sIsBlocked = false;
|
||||
if (sIsBlocked == isBlock) {
|
||||
return;
|
||||
}
|
||||
QStringList listBlockShortCut = {
|
||||
"Minimize All Window", // 最小化所有窗口
|
||||
"Minimize Or Unminimize All Window Besides Active Window", // 最小化或还原非焦点窗口
|
||||
"Multitask View show", // 显示工作区
|
||||
"Show/Hide Desktop", // 显示/隐藏桌面
|
||||
"ShowDesktopGrid", // Show Desktop Grid
|
||||
"ShowMultitaskView", // Show Multitask View
|
||||
"Switch One Desktop Down", // 切换到下面的桌面
|
||||
"Switch One Desktop Up", // 切换到上面的桌面
|
||||
"Switch One Desktop to the Left", // 切换到左边的工作区
|
||||
"Switch One Desktop to the Right", // 切换到右边的工作区
|
||||
"Switch to Desktop 1", // 切换到桌面 1
|
||||
"Switch to Desktop 2", // 切换到桌面 2
|
||||
"Switch to Desktop 3", // 切换到桌面 3
|
||||
"Switch to Desktop 4", // 切换到桌面 4
|
||||
"Switch to Next Screen", // 切换到下一屏幕
|
||||
"Switch to Previous Screen", // 切换到上一个屏幕
|
||||
"Toggle Window Raise/Lower", // 窗口置前或置后
|
||||
"Unminimize All Window", // 还原所有最小化窗口
|
||||
"Walk Through Desktop List", // 遍历桌面列表
|
||||
"Walk Through Desktop List (Reverse)", // 遍历桌面列表(反向)
|
||||
"Walk Through Desktops", // 遍历桌面
|
||||
"Walk Through Desktops (Reverse)", // 遍历桌面(反向)
|
||||
"Walk Through Windows", // 遍历窗口
|
||||
"Walk Through Windows (Reverse)", // 遍历窗口(反向)
|
||||
"Walk Through Windows Alternative", // 遍历窗口候选
|
||||
"Walk Through Windows Alternative (Reverse)", // 遍历窗口候选(反向)
|
||||
"Walk Through Windows of Current Application", // 遍历当前应用程序窗口
|
||||
"Walk Through Windows of Current Application (Reverse)", // 遍历当前应用程序窗口(反向)
|
||||
"Walk Through Windows of Current Application Alternative", // 遍历当前应用程序窗口候选
|
||||
"Walk Through Windows of Current Application Alternative (Reverse)", // 遍历当前应用程序窗口候选(反向)
|
||||
"Walk Through fullscreenWindows", // 遍历所有最大化或全屏窗口
|
||||
"Window Lower", // 降低窗口
|
||||
"Window Maximize", // 最大化窗口
|
||||
"Window Maximize Horizontal", // 水平最大化窗口
|
||||
"Window Maximize Vertical", // 垂直最大化窗口
|
||||
"Window Minimize", // 最小化窗口
|
||||
"Window On All Desktops", // 将窗口放到全部桌面
|
||||
"Window One Desktop Down", // 窗口下移一个桌面
|
||||
"Window One Desktop Up", // 窗口上移一个桌面
|
||||
"Window One Desktop to the Left", // 窗口左移一个桌面
|
||||
"Window One Desktop to the Right", // 窗口右移一个桌面
|
||||
"Window Operations Menu", // 窗口操作菜单
|
||||
"Window Quick Move And Maximize Left Screen", // 窗口快速移动并最大化到下一个屏幕
|
||||
"Window Quick Move And Maximize Right Screen", // 窗口快速移动并最大化到上一个屏幕
|
||||
"Window Quick Move Left Screen", // 窗口快速移动到下一个屏幕
|
||||
"Window Quick Move Right Screen", // 窗口快速移动到上一个屏幕
|
||||
"Window to Desktop 1", // 窗口到桌面 1
|
||||
"Window to Desktop 2", // 窗口到桌面 2
|
||||
"Window to Desktop 3", // 窗口到桌面 3
|
||||
"Window to Desktop 4", // 窗口到桌面 4
|
||||
"Window to Next Desktop", // 窗口到下一桌面
|
||||
"Window to Next Screen", // 窗口到下一屏幕
|
||||
"Window to Previous Desktop", // 窗口到前一桌面
|
||||
"Window to Previous Screen", // 窗口到前一屏幕
|
||||
"Window to Screen 0", // 窗口到屏幕 0
|
||||
"Window to Screen 1", // 窗口到屏幕 1
|
||||
"Window to Screen 2", // 窗口到屏幕 2
|
||||
"Window to Screen 3", // 窗口到屏幕 3
|
||||
"Window to Screen 4", // 窗口到屏幕 4
|
||||
};
|
||||
sIsBlocked = isBlock;
|
||||
if (sIsBlocked) {
|
||||
if (!m_isWayland) {
|
||||
// kwin shortcut
|
||||
QDBusInterface kwinInterface("org.ukui.KWin", "/KWin", "org.kde.KWin", QDBusConnection::sessionBus());
|
||||
for (QString strShortCut : listBlockShortCut) {
|
||||
QDBusMessage blockMessage = kwinInterface.call("blockShortcut", strShortCut, true);
|
||||
if (blockMessage.type() == QDBusMessage::ErrorMessage) {
|
||||
qWarning() << "Kwin dbus error:" << blockMessage.errorMessage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// usd shortcut
|
||||
if (!m_usdBlockShortCut) {
|
||||
m_usdBlockShortCut = new USDBlockShortCut(this);
|
||||
}
|
||||
} else {
|
||||
if (!m_isWayland) {
|
||||
// kwin shortcut
|
||||
QDBusInterface kwinInterface("org.ukui.KWin", "/KWin", "org.kde.KWin", QDBusConnection::sessionBus());
|
||||
for (QString strShortCut : listBlockShortCut) {
|
||||
QDBusMessage blockMessage = kwinInterface.call("blockShortcut", strShortCut, false);
|
||||
if (blockMessage.type() == QDBusMessage::ErrorMessage) {
|
||||
qWarning() << "Kwin dbus error1:" << blockMessage.errorMessage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// usd shortcut
|
||||
if (m_usdBlockShortCut) {
|
||||
delete m_usdBlockShortCut;
|
||||
m_usdBlockShortCut = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool FullScreenBackground::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
return QWidget::eventFilter(obj, event);
|
||||
}
|
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Tianjin KYLIN Information Technology 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 FULLSCREENMANAGER_H
|
||||
#define FULLSCREENMANAGER_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QList>
|
||||
#include <QPair>
|
||||
#include <QRect>
|
||||
#include <PolkitQt1/ActionDescription>
|
||||
#include <QPixmap>
|
||||
#include <QScreen>
|
||||
#include "usdblockshortcut.h"
|
||||
|
||||
class MainWindow;
|
||||
class FullScreenBackground : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FullScreenBackground(QWidget *parent = nullptr);
|
||||
virtual ~FullScreenBackground();
|
||||
|
||||
/**
|
||||
* @brief getMainWindow 获取认证对话框
|
||||
* @return 认证对话框指针
|
||||
*/
|
||||
inline MainWindow *getMainWindow()
|
||||
{
|
||||
return m_wndMain;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief initMainWindow 初始化认证对话框
|
||||
* @param strIconName 认证图标名称
|
||||
* @param strMsg 认证消息
|
||||
* @param listUsers 认证用户列表
|
||||
* @param subjectPid 项目进程号
|
||||
* @param callerPid 调用者进程号
|
||||
* @param actionDesc 动作描述
|
||||
* @param isMavis 是否为mavis平台
|
||||
* @param isSupportTableMode 是否支持平板模式
|
||||
*/
|
||||
void initMainWindow(
|
||||
const QString &strIconName,
|
||||
const QString &strMsg,
|
||||
const QStringList &listUsers,
|
||||
const QString &subjectPid,
|
||||
const QString &callerPid,
|
||||
const PolkitQt1::ActionDescription &actionDesc,
|
||||
const bool &isMavis,
|
||||
const bool &isSupportTableMode);
|
||||
|
||||
/**
|
||||
* @brief showDialog 显示认证对话框
|
||||
*/
|
||||
void showDialog();
|
||||
|
||||
/**
|
||||
* @brief closeDialog 关闭认证对话框
|
||||
*/
|
||||
void closeDialog();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @brief paintEvent 绘制事件处理
|
||||
* @param event 事件指针
|
||||
*/
|
||||
void paintEvent(QPaintEvent *event);
|
||||
|
||||
/**
|
||||
* @brief closeEvent 窗口关闭事件处理
|
||||
* @param event 事件指针
|
||||
*/
|
||||
void closeEvent(QCloseEvent *event);
|
||||
|
||||
/**
|
||||
* @brief resizeEvent 窗口大小改变事件处理
|
||||
* @param event 事件指针
|
||||
*/
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
private Q_SLOTS:
|
||||
/**
|
||||
* @brief onScreenCountChanged 屏幕数变化处理
|
||||
*/
|
||||
void onScreenCountChanged(int);
|
||||
|
||||
/**
|
||||
* @brief onDesktopResized 桌面大小变化处理
|
||||
*/
|
||||
void onDesktopResized();
|
||||
|
||||
/**
|
||||
* @brief onPrimaryScreenChanged 主屏变化处理
|
||||
*/
|
||||
void onPrimaryScreenChanged();
|
||||
|
||||
/**
|
||||
* @brief onWorkAreaResized 工作区大小变化处理
|
||||
*/
|
||||
void onWorkAreaResized();
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief initUI 初始化UI
|
||||
*/
|
||||
void initUI();
|
||||
|
||||
/**
|
||||
* @brief initConnections 初始化信号槽连接
|
||||
*/
|
||||
void initConnections();
|
||||
/**
|
||||
* @brief isSupportCompositing 是否支持窗口复合
|
||||
* @return true 支持,否则不支持
|
||||
*/
|
||||
bool isSupportCompositing();
|
||||
|
||||
/**
|
||||
* @brief getBackground 获取背景
|
||||
* @return 背景pixmap
|
||||
*/
|
||||
QPixmap getBackground();
|
||||
|
||||
/**
|
||||
* @brief getAccountBackground 获取账户背景
|
||||
* @return 背景路径
|
||||
*/
|
||||
QString getAccountBackground();
|
||||
|
||||
/**
|
||||
* @brief moveToScreen 移动认证弹窗到指定屏幕
|
||||
* @param screen 屏幕信息指针
|
||||
*/
|
||||
void moveToScreen(QScreen *screen);
|
||||
|
||||
/**
|
||||
* @brief moveToCursorScreen 移动认证窗口到光标屏幕
|
||||
*/
|
||||
void moveToCursorScreen();
|
||||
|
||||
/**
|
||||
* @brief blockSomeShortCut 禁启用快捷键
|
||||
* @param isBlock 是否为禁用
|
||||
*/
|
||||
void blockSomeShortCut(bool isBlock = false);
|
||||
|
||||
private:
|
||||
MainWindow *m_wndMain = nullptr; // 认证对话框
|
||||
QPixmap m_pixmapBackground; // 背景图
|
||||
bool m_isFirstShow = true; // 第一次显示才主动移动对话框居中
|
||||
USDBlockShortCut *m_usdBlockShortCut = nullptr; // usd禁启用快捷键实例
|
||||
bool m_isWayland = false;
|
||||
};
|
||||
|
||||
#endif // FULLSCREENMANAGER_H
|
|
@ -17,15 +17,12 @@
|
|||
**/
|
||||
#include "kalabel.h"
|
||||
|
||||
|
||||
KALabel::KALabel(QWidget *parent)
|
||||
: QLabel(parent)
|
||||
KALabel::KALabel(QWidget *parent) : QLabel(parent)
|
||||
{
|
||||
m_strText = "";
|
||||
}
|
||||
|
||||
KALabel::KALabel(QString strText, QWidget *parent)
|
||||
: QLabel(strText, parent)
|
||||
KALabel::KALabel(QString strText, QWidget *parent) : QLabel(strText, parent)
|
||||
{
|
||||
m_strText = strText;
|
||||
}
|
||||
|
@ -53,8 +50,7 @@ QString KALabel::getElidedText(QFont font,int width,QString strInfo)
|
|||
{
|
||||
QFontMetrics fontMetrics(font);
|
||||
//如果当前字体下,字符串长度大于指定宽度
|
||||
if(fontMetrics.width(strInfo) > width)
|
||||
{
|
||||
if (fontMetrics.width(strInfo) > width) {
|
||||
strInfo = QFontMetrics(font).elidedText(strInfo, Qt::ElideRight, width);
|
||||
}
|
||||
return strInfo;
|
||||
|
|
|
@ -27,6 +27,7 @@ public:
|
|||
KALabel(QWidget *parent = nullptr);
|
||||
KALabel(QString strText, QWidget *parent = nullptr);
|
||||
QString getElidedText(QFont font, int width, QString strInfo);
|
||||
|
||||
public slots:
|
||||
void setText(const QString &);
|
||||
|
||||
|
|
|
@ -44,26 +44,26 @@
|
|||
#include "biotypes.h"
|
||||
#include "modeButton.h"
|
||||
#include <QDebug>
|
||||
#include <windowmanager/windowmanager.h>
|
||||
#define _(string) gettext(string)
|
||||
extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::MainWindow),
|
||||
users(new Users(this)),
|
||||
enableBioAuth(false),
|
||||
receiveBioPAM(false),
|
||||
authMode(UNDEFINED),
|
||||
useDoubleAuth(false),
|
||||
m_timer(nullptr),
|
||||
w_timer(nullptr),
|
||||
isLockingFlg(false),
|
||||
m_nCurLockMin(0),
|
||||
isbioSuccess(false)
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: kdk::KDialog(parent)
|
||||
, ui(new Ui::MainWindow)
|
||||
, users(new Users(this))
|
||||
, enableBioAuth(false)
|
||||
, receiveBioPAM(false)
|
||||
, authMode(UNDEFINED)
|
||||
, useDoubleAuth(false)
|
||||
, m_timer(nullptr)
|
||||
, w_timer(nullptr)
|
||||
, isLockingFlg(false)
|
||||
, m_nCurLockMin(0)
|
||||
, isbioSuccess(false)
|
||||
{
|
||||
setWindowFlags(Qt::Tool | Qt::WindowCloseButtonHint | Qt::WindowStaysOnTopHint);
|
||||
ui->setupUi(this);
|
||||
setWindowTitle(tr("Authentication"));
|
||||
mainLayout()->addLayout(ui->verticalLayout_2);
|
||||
|
||||
pam_tally_init(); //
|
||||
|
||||
|
@ -106,11 +106,17 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
ui->loadingUkeyLbl->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
|
||||
ui->ukeyTipLbl->setText(tr("Enter the ukey password"));
|
||||
ui->ukeyPassword->setPlaceholderText(tr("Input Password"));
|
||||
ui->btnCancel->setAutoDefault(false);
|
||||
ui->btnCancel->setDefault(false);
|
||||
maxFailedTimes = bioDevices.getFailedTimes();
|
||||
isHiddenSwitchButton = bioDevices.GetHiddenSwitchButton();
|
||||
closeButton()->setToolTip(tr("Close"));
|
||||
|
||||
connect(m_loginOptsWidget, &LoginOptionsWidget::optionSelected,
|
||||
this, [&](unsigned uCurLoginOptType, const DeviceInfoPtr &deviceInfo){
|
||||
connect(
|
||||
m_loginOptsWidget,
|
||||
&LoginOptionsWidget::optionSelected,
|
||||
this,
|
||||
[&](unsigned uCurLoginOptType, const DeviceInfoPtr &deviceInfo) {
|
||||
isLoadingUkey = false;
|
||||
|
||||
if (uCurLoginOptType == LOGINOPT_TYPE_GENERAL_UKEY) {
|
||||
|
@ -166,8 +172,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
}
|
||||
});
|
||||
|
||||
connect(m_loginOptsWidget, &LoginOptionsWidget::notifyOptionsChange,
|
||||
this, [&](unsigned uOptionsCount){
|
||||
connect(m_loginOptsWidget, &LoginOptionsWidget::notifyOptionsChange, this, [&](unsigned uOptionsCount) {
|
||||
if (uOptionsCount > 0) {
|
||||
m_loginOptsWidget->show();
|
||||
} else {
|
||||
|
@ -188,8 +193,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
}
|
||||
});
|
||||
|
||||
connect(m_loginOptsWidget, &LoginOptionsWidget::authComplete,
|
||||
this, [&](uid_t uid, bool ret, int nStatus){
|
||||
connect(m_loginOptsWidget, &LoginOptionsWidget::authComplete, this, [&](uid_t uid, bool ret, int nStatus) {
|
||||
qDebug() << "biometric authentication complete: " << uid << ret << nStatus;
|
||||
|
||||
if (m_deviceInfo && m_deviceInfo->biotype == LOGINOPT_TYPE_GENERAL_UKEY && ui->widgetUkeyAuth->isVisible()) {
|
||||
|
@ -207,7 +211,8 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
QImage imgFailed;
|
||||
m_loginOptsWidget->setFaceImg(imgFailed, 2);
|
||||
return;
|
||||
} else if (nStatus >= 2 && nStatus != 5)if (nStatus >= 2) {
|
||||
} else if (nStatus >= 2 && nStatus != 5)
|
||||
if (nStatus >= 2) {
|
||||
if (m_deviceInfo) {
|
||||
uid_t curUid = getUid(userName);
|
||||
if (m_failMap.contains(curUid) && m_failMap[curUid].contains(m_deviceInfo->device_id)) {
|
||||
|
@ -215,7 +220,8 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
} else {
|
||||
m_failMap[curUid][m_deviceInfo->device_id] = 1;
|
||||
}
|
||||
qDebug()<<"Failed count:"<<m_failMap[curUid][m_deviceInfo->device_id]<<",Max:"<<maxFailedTimes;
|
||||
qDebug() << "Failed count:" << m_failMap[curUid][m_deviceInfo->device_id]
|
||||
<< ",Max:" << maxFailedTimes;
|
||||
if (m_deviceInfo->biotype == BIOTYPE_FACE) {
|
||||
QImage imgFailed;
|
||||
m_loginOptsWidget->setFaceImg(imgFailed, 1);
|
||||
|
@ -223,14 +229,17 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
if (m_failMap[curUid][m_deviceInfo->device_id] >= maxFailedTimes) {
|
||||
no_changes = true;
|
||||
if (m_deviceInfo->biotype == REMOTE_QRCODE_TYPE) {
|
||||
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
QImage nullImage;
|
||||
m_loginOptsWidget->setQRCode(nullImage);
|
||||
} else if (m_deviceInfo->biotype == LOGINOPT_TYPE_GENERAL_UKEY) {
|
||||
ui->ukeyPassword->setReadOnly(true);
|
||||
setUkeyTypeTip(tr("Unable to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setUkeyTypeTip(tr("Unable to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
} else {
|
||||
setLoginTypeTip(tr("Unable to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setLoginTypeTip(tr("Unable to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
}
|
||||
|
||||
m_loginOptsWidget->setDeviceDisable(m_deviceInfo->device_id, true);
|
||||
|
@ -258,6 +267,10 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
m_isNetworkErr = true;
|
||||
m_loginOptsWidget->setQRCodeMsg(tr("Abnormal network"));
|
||||
startBioAuth(10000);
|
||||
} else if (m_uCurLoginOptType == LOGINOPT_TYPE_QRCODE && nStatus == -4) {
|
||||
m_isNetworkErr = true;
|
||||
m_loginOptsWidget->setQRCodeMsg(tr("Acquisition failure"));
|
||||
startBioAuth(10000);
|
||||
} else {
|
||||
startBioAuth();
|
||||
}
|
||||
|
@ -287,28 +300,24 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
switchWidget(UNDEFINED);
|
||||
editIcon();
|
||||
ui->lblContent->adjustSize();
|
||||
ui->lblContent->height();
|
||||
ui->lblMessage->adjustSize();
|
||||
ui->lblContent->hide();
|
||||
ui->lblMessage->setFixedSize(372, 30);
|
||||
ui->widgetPasswdAuth->adjustSize();
|
||||
ui->widgetUkeyAuth->adjustSize();
|
||||
ui->lblMessage->height();
|
||||
ui->cmbUsers->view()->setTextElideMode(Qt::ElideRight);
|
||||
ui->cmbUsers->setFixedHeight(36);
|
||||
ui->lePassword->setFixedHeight(36);
|
||||
ui->btnBioAuth->hide();
|
||||
ui->returnButton->hide();
|
||||
|
||||
settings = new QGSettings("org.ukui.style", "", this);
|
||||
fontSize = settings->get("system-font-size").toInt();
|
||||
connect(settings, &QGSettings::changed,
|
||||
this, &MainWindow::onConfigurationChanged);
|
||||
|
||||
QDBusInterface *interfaceScreensaver = new QDBusInterface(
|
||||
"org.ukui.ScreenSaver",
|
||||
"/",
|
||||
"org.ukui.ScreenSaver",
|
||||
QDBusConnection::sessionBus());
|
||||
connect(interfaceScreensaver, SIGNAL(lock()),
|
||||
this, SLOT(onLockStatus()));
|
||||
connect(interfaceScreensaver, SIGNAL(unlock()),
|
||||
this, SLOT(onUnlockStatus()));
|
||||
connect(settings, &QGSettings::changed, this, &MainWindow::onConfigurationChanged);
|
||||
|
||||
QDBusInterface *interfaceScreensaver
|
||||
= new QDBusInterface("org.ukui.ScreenSaver", "/", "org.ukui.ScreenSaver", QDBusConnection::sessionBus());
|
||||
connect(interfaceScreensaver, SIGNAL(lock()), this, SLOT(onLockStatus()));
|
||||
connect(interfaceScreensaver, SIGNAL(unlock()), this, SLOT(onUnlockStatus()));
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
|
@ -325,6 +334,18 @@ void MainWindow::onConfigurationChanged(QString key)
|
|||
if (key == "iconThemeName") {
|
||||
setIcon(app_IconName);
|
||||
}
|
||||
if (key == "styleName") {
|
||||
QPalette pe;
|
||||
if (no_changes) {
|
||||
pe.setColor(QPalette::WindowText, Qt::red);
|
||||
m_labelTip->setPalette(pe);
|
||||
} else {
|
||||
QColor color = palette().color(QPalette::WindowText);
|
||||
QPalette pal(this->palette());
|
||||
pal.setColor(QPalette::WindowText, QColor(color));
|
||||
m_labelTip->setPalette(pal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::restart_bio_identify()
|
||||
|
@ -338,11 +359,12 @@ void MainWindow::restart_bio_identify()
|
|||
|
||||
void MainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
if (m_loginOptsWidget) {
|
||||
m_loginOptsWidget->stopAuth();
|
||||
}
|
||||
m_failMap.clear();
|
||||
emit canceled();
|
||||
|
||||
return QWidget::closeEvent(event);
|
||||
return kdk::KDialog::closeEvent(event);
|
||||
}
|
||||
|
||||
void MainWindow::setUkeyTypeTip(QString text)
|
||||
|
@ -378,8 +400,7 @@ void MainWindow::startLoadingUkey()
|
|||
isLoadingUkey = true;
|
||||
ui->loadingUkeyWidget->show();
|
||||
|
||||
if(!m_loadingTimer)
|
||||
{
|
||||
if (!m_loadingTimer) {
|
||||
m_loadingTimer = new QTimer(this);
|
||||
m_loadingTimer->setInterval(150);
|
||||
connect(m_loadingTimer, &QTimer::timeout, this, &MainWindow::updateLoadingPixmap);
|
||||
|
@ -449,8 +470,6 @@ void MainWindow::paintEvent(QPaintEvent *event)
|
|||
// 绘制一个矩形
|
||||
|
||||
p.setPen(Qt::red);
|
||||
QRectF rect(0,290,20,20);
|
||||
|
||||
}
|
||||
|
||||
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
|
||||
|
@ -458,7 +477,8 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
|
|||
if (obj == ui->lePassword) {
|
||||
if (event->type() == QEvent::KeyPress) { // 禁止复制粘贴功能。
|
||||
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
||||
if(keyEvent->matches(QKeySequence::Copy) || keyEvent->matches(QKeySequence::Cut) || keyEvent->matches(QKeySequence::Paste)){
|
||||
if (keyEvent->matches(QKeySequence::Copy) || keyEvent->matches(QKeySequence::Cut)
|
||||
|| keyEvent->matches(QKeySequence::Paste)) {
|
||||
event->ignore();
|
||||
return true;
|
||||
}
|
||||
|
@ -470,8 +490,27 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
|
|||
return true;
|
||||
}
|
||||
}
|
||||
} else if (obj == this) {
|
||||
if (event->type() == QEvent::Show || event->type() == QEvent::UpdateRequest) {
|
||||
if (QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") {
|
||||
WindowManager::setWindowLayer(this->windowHandle(), (kdk::WindowLayer)15);
|
||||
}
|
||||
}
|
||||
}
|
||||
return kdk::KDialog::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
switch (event->key()) {
|
||||
case Qt::Key_Escape: {
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
kdk::KDialog::keyPressEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*** main ***/
|
||||
|
@ -506,7 +545,6 @@ int MainWindow::enable_biometric_authentication()
|
|||
char line[1024], is_enable[16];
|
||||
int i;
|
||||
|
||||
|
||||
if ((file = fopen(conf_file, "r")) == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -545,6 +583,11 @@ void MainWindow::on_btnCancel_clicked()
|
|||
|
||||
void MainWindow::on_btnAuth_clicked()
|
||||
{
|
||||
if (doNotNeedAuth) {
|
||||
emit yesPrompted();
|
||||
return;
|
||||
}
|
||||
|
||||
if (ui->widgetUkeyAuth->isVisible()) {
|
||||
on_ukeyPassword_returnPressed();
|
||||
} else {
|
||||
|
@ -552,6 +595,16 @@ void MainWindow::on_btnAuth_clicked()
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::onShowYesPrompt()
|
||||
{
|
||||
doNotNeedAuth = true;
|
||||
ui->widgetPasswdAuth->hide();
|
||||
ui->cmbUsers->hide();
|
||||
ui->btnBioAuth->hide();
|
||||
ui->returnButton->hide();
|
||||
ui->btnAuth->show();
|
||||
}
|
||||
|
||||
void MainWindow::onLockStatus()
|
||||
{
|
||||
// m_loginOptsWidget->stopAuth();
|
||||
|
@ -598,8 +651,7 @@ void MainWindow::on_lePassword_returnPressed()
|
|||
emit accept(ui->lePassword->text());
|
||||
ui->btnAuth->hide();
|
||||
ui->btnLoading->show();
|
||||
if(!w_timer)
|
||||
{
|
||||
if (!w_timer) {
|
||||
w_timer = new QTimer(this);
|
||||
w_timer->setInterval(150);
|
||||
connect(w_timer, &QTimer::timeout, this, &MainWindow::updatePixmap);
|
||||
|
@ -625,7 +677,6 @@ void MainWindow::on_returnButton_clicked()
|
|||
}
|
||||
/*** end of control's slot ***/
|
||||
|
||||
|
||||
/*** public member ***/
|
||||
|
||||
void MainWindow::setIcon(const QString &iconName)
|
||||
|
@ -649,9 +700,7 @@ void MainWindow::setIcon(const QString &iconName)
|
|||
QPainter painter;
|
||||
|
||||
painter.begin(&icon);
|
||||
QRect rect(32,
|
||||
32,
|
||||
32, 32);
|
||||
QRect rect(32, 32, 32, 32);
|
||||
painter.drawPixmap(rect, actionIcon);
|
||||
painter.end();
|
||||
|
||||
|
@ -667,7 +716,6 @@ void MainWindow::setHeader(const QString &text)
|
|||
else
|
||||
ui->lblHeader->setText(text);
|
||||
ui->lblHeader->adjustSize();
|
||||
ui->lblHeader->height();
|
||||
ui->lblContent->setText(tr("A program is attempting to perform an action that requires privileges."
|
||||
"It requires authorization to perform the action."));
|
||||
ui->lblContent->adjustSize();
|
||||
|
@ -756,6 +804,9 @@ void MainWindow::setPrompt(const QString &text, bool echo)
|
|||
*/
|
||||
QString MainWindow::check_is_pam_message(QString text)
|
||||
{
|
||||
if (text.isEmpty()) {
|
||||
return text;
|
||||
}
|
||||
setlocale(LC_ALL, "");
|
||||
bindtextdomain("Linux-PAM", "/usr/share/locale");
|
||||
bind_textdomain_codeset("Linux-PAM", "UTF-8");
|
||||
|
@ -770,32 +821,34 @@ QString MainWindow::check_is_pam_message(QString text)
|
|||
// 因为不知道什么原因,pam发过来的始终为英文,因此这里主动加载pam的翻译文件,使用gettext获取翻译
|
||||
if (text.contains("attemps", Qt::CaseSensitive) && sscanf(str, "Authenticated failed, %d login attemps left", &a))
|
||||
snprintf(l_str, 1024, _("Authenticated failed, %d login attemps left"), a);
|
||||
else if(text.contains("attempts",Qt::CaseSensitive) && sscanf(str,"Authenticated failed, %d login attempts left",&a))
|
||||
else if (
|
||||
text.contains("attempts", Qt::CaseSensitive) && sscanf(str, "Authenticated failed, %d login attempts left", &a))
|
||||
snprintf(l_str, 1024, _("Authenticated failed, %d login attempts left"), a);
|
||||
else if(text.contains("attempt",Qt::CaseSensitive) && sscanf(str,"Authenticated failed, %d login attempt left",&a))
|
||||
else if (
|
||||
text.contains("attempt", Qt::CaseSensitive) && sscanf(str, "Authenticated failed, %d login attempt left", &a))
|
||||
snprintf(l_str, 1024, _("Authenticated failed, %d login attempt left"), a);
|
||||
else if (text.contains("days", Qt::CaseSensitive) && sscanf(str, "Account locked, %d days left", &a)) {
|
||||
// 这里的消息是多个字符串拼接起来的,无法在翻译文件中找到对应的句子,只能自己翻译
|
||||
strTrans = tr("Account locked,") + QString("%1 ").arg(a) + tr("days left");
|
||||
return strTrans;
|
||||
}
|
||||
else if(text.contains("hours",Qt::CaseSensitive) && sscanf(str,"Account locked, %d hours left",&a)){
|
||||
} else if (text.contains("hours", Qt::CaseSensitive) && sscanf(str, "Account locked, %d hours left", &a)) {
|
||||
strTrans = tr("Account locked,") + QString("%1 ").arg(a) + tr("hours left");
|
||||
return strTrans;
|
||||
}
|
||||
else if(text.contains("minutes",Qt::CaseSensitive) && sscanf(str,"Account locked, %d minutes left",&a)){
|
||||
} else if (text.contains("minutes", Qt::CaseSensitive) && sscanf(str, "Account locked, %d minutes left", &a)) {
|
||||
strTrans = tr("Account locked,") + QString("%1 ").arg(a) + tr("minutes left");
|
||||
return strTrans;
|
||||
}
|
||||
else if(text.contains("seconds",Qt::CaseSensitive) && sscanf(str,"Account locked, %d seconds left",&a)){
|
||||
} else if (text.contains("seconds", Qt::CaseSensitive) && sscanf(str, "Account locked, %d seconds left", &a)) {
|
||||
strTrans = tr("Account locked,") + QString("%1 ").arg(a) + tr("seconds left");
|
||||
return strTrans;
|
||||
}else if(text.contains("Warning: ",Qt::CaseSensitive) && sscanf(str,"Warning: your password will expire in %d day",&a)){
|
||||
} else if (
|
||||
text.contains("Warning: ", Qt::CaseSensitive)
|
||||
&& sscanf(str, "Warning: your password will expire in %d day", &a)) {
|
||||
snprintf(l_str, 1024, _("Warning: your password will expire in %d day"), a);
|
||||
}else if(text.contains("Warning: ",Qt::CaseSensitive) && sscanf(str,"Warning: your password will expire in %d days",&a)){
|
||||
} else if (
|
||||
text.contains("Warning: ", Qt::CaseSensitive)
|
||||
&& sscanf(str, "Warning: your password will expire in %d days", &a)) {
|
||||
snprintf(l_str, 1024, _("Warning: your password will expire in %d days"), a);
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
return _(str);
|
||||
}
|
||||
|
||||
|
@ -820,24 +873,22 @@ void MainWindow::setMessage(const QString &text,situation situat)
|
|||
}
|
||||
|
||||
// qDebug()<<"receive:text = "<<text;
|
||||
if (text.indexOf("account locked") != -1 || text.indexOf("账户已锁定") != -1
|
||||
|| text.indexOf("Account locked") != -1 || text.indexOf("永久锁定") != -1)
|
||||
{
|
||||
if (text.indexOf("account locked") != -1 || text.indexOf("账户已锁定") != -1 || text.indexOf("Account locked") != -1
|
||||
|| text.indexOf("永久锁定") != -1) {
|
||||
if (!m_timer) {
|
||||
m_timer = new QTimer(this);
|
||||
m_timer->setInterval(800);
|
||||
connect(m_timer, &QTimer::timeout, this, &MainWindow::unlock_countdown);
|
||||
}
|
||||
m_timer->start();
|
||||
}else if (text.indexOf("No password received, please input password") != -1)
|
||||
{
|
||||
} else if (text.indexOf("No password received, please input password") != -1) {
|
||||
ui->lblMessage->setText(tr("Password cannot be empty"));
|
||||
ui->lblMessage->setToolTip(tr("Password cannot be empty"));
|
||||
} else {
|
||||
ui->lblMessage->setText(text);
|
||||
ui->lblMessage->setToolTip(text);
|
||||
}
|
||||
ui->lblMessage->adjustSize();
|
||||
// ui->lblMessage->adjustSize();
|
||||
// ui->widgetPasswdAuth->adjustSize();
|
||||
// ui->lblMessage->setText(text);
|
||||
}
|
||||
|
@ -853,17 +904,17 @@ void MainWindow::setAuthResult(bool result, const QString &text)
|
|||
if (authMode == PASSWORD) {
|
||||
switchWidget(PASSWORD);
|
||||
setMessage(message, ERROR);
|
||||
}
|
||||
else if(authMode == BIOMETRIC)
|
||||
} else if (authMode == BIOMETRIC)
|
||||
setMessage(message, ERROR);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::clearEdit()
|
||||
{
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->ukeyPassword->setText("");
|
||||
ui->btnAuth->setDisabled(true);
|
||||
}
|
||||
|
||||
void MainWindow::switchAuthMode(Mode mode)
|
||||
|
@ -890,8 +941,7 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
}
|
||||
|
||||
switch (mode) {
|
||||
case PASSWORD:
|
||||
{
|
||||
case PASSWORD: {
|
||||
qDebug() << "switch to password";
|
||||
|
||||
authMode = mode;
|
||||
|
@ -905,17 +955,14 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
if (isHiddenSwitchButton)
|
||||
ui->btnBioAuth->hide();
|
||||
|
||||
|
||||
// if(enableBioAuth && useDoubleAuth){
|
||||
// DeviceInfoPtr device = bioDevices.getDefaultDevice(getUid(userName));
|
||||
// if(device){
|
||||
// widgetBioAuth->startAuth(getUid(userName), device);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case BIOMETRIC:
|
||||
{
|
||||
} break;
|
||||
case BIOMETRIC: {
|
||||
if (authMode == PASSWORD) {
|
||||
emit accept(BIOMETRIC_IGNORE);
|
||||
isFirstAuth = false;
|
||||
|
@ -943,8 +990,7 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
strDeviceName = m_loginOptsWidget->GetDefaultDevice(uid);
|
||||
}
|
||||
// 如果默认设备为空的话,第一次不启动生物识别认证
|
||||
if(strDeviceName.isEmpty() && !m_deviceInfo)
|
||||
{
|
||||
if (strDeviceName.isEmpty() && !m_deviceInfo) {
|
||||
qDebug() << "No default device";
|
||||
emit accept(BIOMETRIC_IGNORE);
|
||||
isFirstAuth = false;
|
||||
|
@ -952,8 +998,7 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
}
|
||||
|
||||
// 第一次,获取默认设备的设备信息,之后使用的则是从设备选择窗口传出的设备信息
|
||||
if(!m_deviceInfo)
|
||||
{
|
||||
if (!m_deviceInfo) {
|
||||
m_deviceInfo = m_loginOptsWidget->findDeviceByName(strDeviceName);
|
||||
}
|
||||
if (!m_deviceInfo) {
|
||||
|
@ -1027,13 +1072,11 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
return;
|
||||
} else {*/
|
||||
/* pass biometric's pam module if there are not available devices */
|
||||
// qDebug() << "It doesn't meet the condition for enabling biometric authentication, switch to password.";
|
||||
// emit accept(BIOMETRIC_IGNORE);
|
||||
// return;
|
||||
// qDebug() << "It doesn't meet the condition for enabling biometric authentication, switch
|
||||
// to password."; emit accept(BIOMETRIC_IGNORE); return;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1042,7 +1085,6 @@ void MainWindow::switchAuthMode(Mode mode)
|
|||
|
||||
/*** end of public memeber ***/
|
||||
|
||||
|
||||
/*** private member ***/
|
||||
|
||||
uid_t MainWindow::getUid(const QString &userName)
|
||||
|
@ -1055,7 +1097,8 @@ uid_t MainWindow::getUid(const QString &userName)
|
|||
return pwd->pw_uid;
|
||||
}
|
||||
|
||||
void MainWindow::setDoubleAuth(bool val){
|
||||
void MainWindow::setDoubleAuth(bool val)
|
||||
{
|
||||
useDoubleAuth = val;
|
||||
}
|
||||
|
||||
|
@ -1088,8 +1131,7 @@ void MainWindow::switchWidget(Mode mode)
|
|||
ui->btnCancel->setFixedHeight(48);
|
||||
}
|
||||
switch (mode) {
|
||||
case PASSWORD:
|
||||
{
|
||||
case PASSWORD: {
|
||||
setFixedWidth(420);
|
||||
|
||||
if (m_deviceInfo && m_loginOptsWidget->findDeviceById(m_deviceInfo->device_id)) {
|
||||
|
@ -1126,19 +1168,21 @@ void MainWindow::switchWidget(Mode mode)
|
|||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
}
|
||||
// if (m_loginOptsWidget->isHidden()) {
|
||||
// height = height - m_labelTip->height() - 10;
|
||||
// }
|
||||
|
||||
unsigned uOptsWidgetHeight = m_loginOptsWidget->height();
|
||||
if (m_loginOptsWidget->isHidden()) {
|
||||
uOptsWidgetHeight = 0;
|
||||
height = height + m_labelTip->height() - 10;
|
||||
}
|
||||
setFixedHeight(height + uOptsWidgetHeight + 10);
|
||||
if (m_uCurLoginOptType == LOGINOPT_TYPE_GENERAL_UKEY) {
|
||||
setFixedSize(width(), height + uOptsWidgetHeight + 10 + 40);
|
||||
} else {
|
||||
setFixedSize(width(), height + uOptsWidgetHeight + 40);
|
||||
}
|
||||
|
||||
// m_loginOptsWidget->updateUIStatus();
|
||||
ui->btnBioAuth->setStyleSheet("QPushButton{font-size:14px;}QPushButton:hover{border:none;color:#3E6CE5;}QPushButton:pressed{border:none;}");
|
||||
ui->btnBioAuth->setStyleSheet("QPushButton{font-size:14px;}QPushButton:hover{border:none;color:#3E6CE5;}"
|
||||
"QPushButton:pressed{border:none;}");
|
||||
ui->btnBioAuth->setFlat(true);
|
||||
ui->btnBioAuth->setText(tr("Biometric"));
|
||||
ui->btnBioAuth->setAttribute(Qt::WA_UnderMouse, false);
|
||||
|
@ -1153,35 +1197,33 @@ void MainWindow::switchWidget(Mode mode)
|
|||
}
|
||||
ui->btnAuth->show();
|
||||
ui->btnLoading->hide();
|
||||
//ui->lePassword->setDisabled(false);
|
||||
if(w_timer && w_timer->isActive())
|
||||
{
|
||||
if (w_timer && w_timer->isActive()) {
|
||||
w_timer->stop();
|
||||
}
|
||||
ui->btnCancel->show();
|
||||
// ui->lblContent->show();
|
||||
ui->returnButton->hide();
|
||||
ui->lblContent->hide();
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case BIOMETRIC:
|
||||
setFixedWidth(420);
|
||||
if (m_loginOptsWidget->getLoginOptCount() <= 1) {
|
||||
setFixedHeight(392+ui->cmbUsers->height()+ui->lblHeader->height());
|
||||
setFixedHeight(392 + ui->cmbUsers->height() + ui->lblHeader->height() + 40);
|
||||
} else {
|
||||
setFixedHeight(482+ui->cmbUsers->height()+ui->lblHeader->height());
|
||||
setFixedHeight(482 + ui->cmbUsers->height() + ui->lblHeader->height() + 40);
|
||||
}
|
||||
|
||||
ui->btnCancel->hide();
|
||||
ui->lblContent->hide();
|
||||
ui->btnBioAuth->hide();
|
||||
ui->returnButton->show();
|
||||
ui->returnButton->setAttribute(Qt::WA_UnderMouse,false);
|
||||
ui->returnButton->setFlat(true);
|
||||
ui->returnButton->setStyleSheet("QPushButton{font-size:14px;}QPushButton:hover{border:none;color:#3E6CE5;}QPushButton:pressed{border:none;}");
|
||||
ui->returnButton->setText(tr("Use password"));
|
||||
ui->returnButton->adjustSize();
|
||||
// ui->returnButton->show();
|
||||
// ui->returnButton->setAttribute(Qt::WA_UnderMouse, false);
|
||||
// ui->returnButton->setFlat(true);
|
||||
// ui->returnButton->setStyleSheet("QPushButton{font-size:14px;}QPushButton:hover{border:none;color:#3E6CE5;}"
|
||||
// "QPushButton:pressed{border:none;}");
|
||||
// ui->returnButton->setText(tr("Use password"));
|
||||
// ui->returnButton->adjustSize();
|
||||
break;
|
||||
// case DEVICES:
|
||||
// widgetBioAuth->show();
|
||||
|
@ -1203,7 +1245,8 @@ void MainWindow::unlock_countdown()
|
|||
int unlock_time = 0;
|
||||
pam_tally_unlock_time_left(getUid(userName), &failed_count, &time_left, &deny, &fail_time, &unlock_time);
|
||||
|
||||
// qDebug() << "failed_count:" << failed_count << "time_left:" <<time_left <<"deny:"<<deny<<"fail_time:"<< fail_time<<"unlock_time:" << unlock_time;
|
||||
// qDebug() << "failed_count:" << failed_count << "time_left:" <<time_left <<"deny:"<<deny<<"fail_time:"<<
|
||||
// fail_time<<"unlock_time:" << unlock_time;
|
||||
if (time_left >= 60) // 请多少分钟后重试
|
||||
{
|
||||
int nMinuteleft = time_left / 60;
|
||||
|
@ -1211,44 +1254,47 @@ void MainWindow::unlock_countdown()
|
|||
m_nCurLockMin = unlock_time / 60; // 获取当前需要锁定的分钟数
|
||||
}
|
||||
|
||||
//如果当前设置的不是1min钟锁定,那么1min显示成2min,由2min直接跳到59s || 剩余分钟数小于当前设置的锁定时间,并且大于1min,自增+1
|
||||
if ((nMinuteleft == 1 && m_nCurLockMin != 1) || (nMinuteleft > 1 && nMinuteleft < m_nCurLockMin))
|
||||
{
|
||||
// 如果当前设置的不是1min钟锁定,那么1min显示成2min,由2min直接跳到59s ||
|
||||
// 剩余分钟数小于当前设置的锁定时间,并且大于1min,自增+1
|
||||
if ((nMinuteleft == 1 && m_nCurLockMin != 1) || (nMinuteleft > 1 && nMinuteleft < m_nCurLockMin)) {
|
||||
nMinuteleft = nMinuteleft + 1;
|
||||
}
|
||||
setMessage(tr("Please try again in %1 minutes.").arg(nMinuteleft),TRUE);
|
||||
setMessage(tr("Please try again in %1 minutes.").arg(nMinuteleft), ERROR);
|
||||
// ui->lblMessage->setToolTip(tr("Please try again in %1 minutes.").arg(nMinute));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else if(time_left > 0 && time_left < 60)//请多少秒后重试
|
||||
} else if (time_left > 0 && time_left < 60) // 请多少秒后重试
|
||||
{
|
||||
char ch[100] = { 0 };
|
||||
setMessage(tr("Please try again in %1 seconds.").arg(time_left%60),TRUE);
|
||||
setMessage(tr("Please try again in %1 seconds.").arg(time_left % 60), ERROR);
|
||||
// ui->lblMessage->setToolTip(tr("Please try again in %1 seconds.").arg(time_left%60));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else if (failed_count == 0xFFFF)//账号被永久锁定
|
||||
} else if (failed_count == 0xFFFF) // 账号被永久锁定
|
||||
{
|
||||
ui->lblMessage->setText(tr("Account locked permanently."));
|
||||
ui->lblMessage->setToolTip(tr("Account locked permanently."));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if (ui->lePassword) {
|
||||
ui->lePassword->setDisabled(false);
|
||||
ui->lePassword->setReadOnly(false);
|
||||
ui->lePassword->setFocus();
|
||||
}
|
||||
if (ui->btnAuth) {
|
||||
|
@ -1259,6 +1305,7 @@ void MainWindow::unlock_countdown()
|
|||
// setMessage(tr("Authentication failed, please try again."),ERROR);
|
||||
setMessage("");
|
||||
isLockingFlg = false;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
}
|
||||
m_timer->stop();
|
||||
}
|
||||
|
@ -1274,7 +1321,8 @@ void MainWindow::root_unlock_countdown()
|
|||
int unlock_time = 0;
|
||||
pam_tally_root_unlock_time_left(&failed_count, &time_left, &deny, &fail_time, &unlock_time);
|
||||
|
||||
// qDebug() << "failed_count:" << failed_count << "time_left:" <<time_left <<"deny:"<<deny<<"fail_time:"<< fail_time<<"unlock_time:" << unlock_time;
|
||||
// qDebug() << "failed_count:" << failed_count << "time_left:" <<time_left <<"deny:"<<deny<<"fail_time:"<<
|
||||
// fail_time<<"unlock_time:" << unlock_time;
|
||||
int nMinuteleft = time_left / 60;
|
||||
if (time_left >= 60) // 请多少分钟后重试
|
||||
{
|
||||
|
@ -1283,9 +1331,9 @@ void MainWindow::root_unlock_countdown()
|
|||
m_nCurLockMin = unlock_time / 60; // 获取当前需要锁定的分钟数
|
||||
}
|
||||
|
||||
//如果当前设置的不是1min钟锁定,那么1min显示成2min,由2min直接跳到59s || 剩余分钟数小于当前设置的锁定时间,并且大于1min,自增+1
|
||||
if ((nMinuteleft == 1 && m_nCurLockMin != 1) || (nMinuteleft > 1 && nMinuteleft < m_nCurLockMin))
|
||||
{
|
||||
// 如果当前设置的不是1min钟锁定,那么1min显示成2min,由2min直接跳到59s ||
|
||||
// 剩余分钟数小于当前设置的锁定时间,并且大于1min,自增+1
|
||||
if ((nMinuteleft == 1 && m_nCurLockMin != 1) || (nMinuteleft > 1 && nMinuteleft < m_nCurLockMin)) {
|
||||
nMinuteleft = nMinuteleft + 1;
|
||||
}
|
||||
|
||||
|
@ -1293,40 +1341,49 @@ void MainWindow::root_unlock_countdown()
|
|||
ui->lblMessage->setToolTip(tr("Please try again in %1 minutes.").arg(nMinuteleft));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else if(time_left > 0 && time_left < 60)//请多少秒后重试
|
||||
} else if (time_left > 0 && time_left < 60) // 请多少秒后重试
|
||||
{
|
||||
char ch[100] = { 0 };
|
||||
ui->lblMessage->setText(tr("Please try again in %1 seconds.").arg(time_left % 60));
|
||||
ui->lblMessage->setToolTip(tr("Please try again in %1 seconds.").arg(time_left % 60));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else if (failed_count == 0xFFFF)//账号被永久锁定
|
||||
} else if (failed_count == 0xFFFF) // 账号被永久锁定
|
||||
{
|
||||
ui->lblMessage->setText(tr("Account locked permanently."));
|
||||
ui->lblMessage->setToolTip(tr("Account locked permanently."));
|
||||
ui->lePassword->setText("");
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(false);
|
||||
ui->btnAuth->setDisabled(true);
|
||||
isLockingFlg = true;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
if (ui->lePassword) {
|
||||
ui->lePassword->setDisabled(false);
|
||||
ui->lePassword->setReadOnly(false);
|
||||
ui->lePassword->setFocus();
|
||||
}
|
||||
if (ui->btnAuth) {
|
||||
ui->btnAuth->setDisabled(false);
|
||||
}
|
||||
|
||||
if (isLockingFlg)
|
||||
{
|
||||
if (isLockingFlg) {
|
||||
// setMessage(tr("Authentication failed, please try again."),ERROR);
|
||||
setMessage("");
|
||||
isLockingFlg = false;
|
||||
setBiometricAuthDisabledStatus(isLockingFlg);
|
||||
}
|
||||
|
||||
m_timer->stop();
|
||||
|
@ -1334,6 +1391,30 @@ void MainWindow::root_unlock_countdown()
|
|||
return;
|
||||
}
|
||||
|
||||
void MainWindow::setBiometricAuthDisabledStatus(bool locked)
|
||||
{
|
||||
if (locked) {
|
||||
if (m_loginOptsWidget) {
|
||||
m_loginOptsWidget->stopAuth();
|
||||
m_loginOptsWidget->setAllDeviceDisable(true);
|
||||
if (m_bioTimer && m_bioTimer->isActive())
|
||||
m_bioTimer->stop();
|
||||
}
|
||||
if (m_deviceInfo && m_deviceInfo->biotype == BIOTYPE_FACE) {
|
||||
QImage imgFailed;
|
||||
m_loginOptsWidget->setFaceImg(imgFailed, 1);
|
||||
} else if (m_deviceInfo && m_deviceInfo->biotype == REMOTE_QRCODE_TYPE) {
|
||||
QImage nullImage;
|
||||
m_loginOptsWidget->setQRCode(nullImage);
|
||||
}
|
||||
} else {
|
||||
if (m_deviceInfo && m_loginOptsWidget) {
|
||||
m_loginOptsWidget->startAuth(m_deviceInfo, getUid(userName));
|
||||
m_loginOptsWidget->setAllDeviceDisable(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onRespondUkey(const QString &text)
|
||||
{
|
||||
if (m_loginOptsWidget) {
|
||||
|
@ -1344,8 +1425,7 @@ void MainWindow::onRespondUkey(const QString &text)
|
|||
void MainWindow::switchLoginOptType(unsigned uLoginOptType)
|
||||
{
|
||||
switch (uLoginOptType) {
|
||||
case LOGINOPT_TYPE_PASSWORD:
|
||||
{
|
||||
case LOGINOPT_TYPE_PASSWORD: {
|
||||
// m_loginOptsWidget->hide();
|
||||
ui->lePassword->show();
|
||||
ui->cmbUsers->show();
|
||||
|
@ -1355,15 +1435,13 @@ void MainWindow::switchLoginOptType(unsigned uLoginOptType)
|
|||
ui->loadingUkeyWidget->hide();
|
||||
setFocusProxy(ui->lePassword);
|
||||
ui->cmbUsers->show();
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
case LOGINOPT_TYPE_FACE:
|
||||
case LOGINOPT_TYPE_FINGERPRINT:
|
||||
case LOGINOPT_TYPE_IRIS:
|
||||
case LOGINOPT_TYPE_VOICEPRINT:
|
||||
case LOGINOPT_TYPE_FINGERVEIN:
|
||||
case LOGINOPT_TYPE_QRCODE:
|
||||
{
|
||||
case LOGINOPT_TYPE_QRCODE: {
|
||||
// m_loginOptsWidget->show();
|
||||
// 延迟检查错误状态
|
||||
m_isNetworkErr = false;
|
||||
|
@ -1381,10 +1459,8 @@ void MainWindow::switchLoginOptType(unsigned uLoginOptType)
|
|||
setFocusProxy(ui->lePassword);
|
||||
ui->cmbUsers->show();
|
||||
ui->widgetPasswdAuth->show();
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_GENERAL_UKEY:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_GENERAL_UKEY: {
|
||||
ui->lePassword->hide();
|
||||
ui->cmbUsers->hide();
|
||||
if (m_deviceInfo) {
|
||||
|
@ -1397,8 +1473,7 @@ void MainWindow::switchLoginOptType(unsigned uLoginOptType)
|
|||
ui->ukeyPassword->setFocusPolicy(Qt::StrongFocus);
|
||||
ui->ukeyPassword->setFocus();
|
||||
ui->widgetPasswdAuth->hide();
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -1412,58 +1487,45 @@ void MainWindow::switchLoginOptType(unsigned uLoginOptType)
|
|||
}
|
||||
no_changes = true;
|
||||
if (m_deviceInfo->biotype == REMOTE_QRCODE_TYPE) {
|
||||
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
} else if (m_deviceInfo->biotype == LOGINOPT_TYPE_GENERAL_UKEY) {
|
||||
setUkeyTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setUkeyTypeTip(tr("Failed to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
} else {
|
||||
setLoginTypeTip(tr("Unable to verify %1, please enter password to unlock").arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
setLoginTypeTip(tr("Unable to verify %1, please enter password to unlock")
|
||||
.arg(BioDevices::bioTypeToString_tr(m_deviceInfo->biotype)));
|
||||
}
|
||||
m_loginOptsWidget->setDeviceDisable(m_deviceInfo->device_id, true);
|
||||
} else {
|
||||
no_changes = false;
|
||||
if (uLoginOptType != m_uCurLoginOptType || (m_deviceInfo && m_deviceInfo->device_id != m_nLastDeviceId)) {
|
||||
switch (uLoginOptType) {
|
||||
case LOGINOPT_TYPE_PASSWORD:
|
||||
{
|
||||
case LOGINOPT_TYPE_PASSWORD: {
|
||||
setLoginTypeTip("");
|
||||
// setMessage("",TRUE);
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_FACE:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_FACE: {
|
||||
setLoginTypeTip(tr("Verify face recognition or enter password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_FINGERPRINT:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_FINGERPRINT: {
|
||||
setLoginTypeTip(tr("Press fingerprint or enter password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_VOICEPRINT:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_VOICEPRINT: {
|
||||
setLoginTypeTip(tr("Verify voiceprint or enter password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_FINGERVEIN:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_FINGERVEIN: {
|
||||
setLoginTypeTip(tr("Verify finger vein or enter password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_IRIS:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_IRIS: {
|
||||
setLoginTypeTip(tr("Verify iris or enter password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_QRCODE:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_QRCODE: {
|
||||
setLoginTypeTip(tr("Use the bound wechat scanning code or enter the password to unlock"));
|
||||
}
|
||||
break;
|
||||
case LOGINOPT_TYPE_GENERAL_UKEY:
|
||||
{
|
||||
} break;
|
||||
case LOGINOPT_TYPE_GENERAL_UKEY: {
|
||||
setLoginTypeTip("");
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -1538,8 +1600,10 @@ void MainWindow::onUpdateBioAuthMsg(QString strMsg)
|
|||
void MainWindow::updatePixmap()
|
||||
{
|
||||
ui->btnAuth->hide();
|
||||
ui->btnAuth->setDisabled(true);
|
||||
ui->btnLoading->show();
|
||||
ui->lePassword->setDisabled(true);
|
||||
ui->lePassword->setReadOnly(true);
|
||||
QMatrix matrix;
|
||||
matrix.rotate(90.0);
|
||||
m_waitingPixmap = m_waitingPixmap.transformed(matrix, Qt::FastTransformation);
|
||||
|
@ -1553,15 +1617,14 @@ void MainWindow::onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize)
|
|||
m_loginOptsWidget->adjustSize();
|
||||
}
|
||||
unsigned uOptsWidgetHeight = m_loginOptsWidget->height();
|
||||
if (m_loginOptsWidget->isHidden() ||
|
||||
(uLoginOptSize == 1 && uLoginOptType != LOGINOPT_TYPE_QRCODE && uLoginOptType != LOGINOPT_TYPE_FACE)) {
|
||||
if (m_loginOptsWidget->isHidden()
|
||||
|| (uLoginOptSize == 1 && uLoginOptType != LOGINOPT_TYPE_QRCODE && uLoginOptType != LOGINOPT_TYPE_FACE)) {
|
||||
uOptsWidgetHeight = 0;
|
||||
}
|
||||
ui->lblHeader->adjustSize();
|
||||
if(uLoginOptType == LOGINOPT_TYPE_QRCODE && uLoginOptType == LOGINOPT_TYPE_FACE){
|
||||
if (uLoginOptType == LOGINOPT_TYPE_QRCODE || uLoginOptType == LOGINOPT_TYPE_FACE) {
|
||||
uOptsWidgetHeight = m_loginOptsWidget->height() + 20;
|
||||
}
|
||||
else if(uLoginOptType == LOGINOPT_TYPE_FINGERPRINT){
|
||||
} else if (uLoginOptType == LOGINOPT_TYPE_FINGERPRINT || uLoginOptType == LOGINOPT_TYPE_IRIS) {
|
||||
uOptsWidgetHeight = m_loginOptsWidget->height() + 10;
|
||||
}
|
||||
// ui->lblContent->adjustSize();
|
||||
|
@ -1569,28 +1632,22 @@ void MainWindow::onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize)
|
|||
int height;
|
||||
if (fontSize = 10) {
|
||||
height = 130 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
} else if (fontSize = 11) {
|
||||
height = 150 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
} else if (fontSize = 12) {
|
||||
height = 160 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
} else if (fontSize = 13) {
|
||||
height = 170 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
} else if (fontSize = 14) {
|
||||
height = 190 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
} else if (fontSize = 15) {
|
||||
height = 230 + ui->lblHeader->height() /*+ ui->lblContent->height()*/
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height()
|
||||
+ ui->btnAuth->height();
|
||||
+ ui->cmbUsers->height() + ui->lePassword->height() + ui->lblMessage->height() + ui->btnAuth->height();
|
||||
}
|
||||
if (m_loginOptsWidget->isHidden()) {
|
||||
height = height + m_labelTip->height() - 10;
|
||||
|
@ -1598,9 +1655,9 @@ void MainWindow::onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize)
|
|||
|
||||
if (uLoginOptType == LOGINOPT_TYPE_GENERAL_UKEY) {
|
||||
setLoginTypeTip("");
|
||||
setFixedSize(width(), height + uOptsWidgetHeight + 10);
|
||||
setFixedSize(width(), height + uOptsWidgetHeight + 10 + 40);
|
||||
} else {
|
||||
setFixedSize(width(), height + uOptsWidgetHeight);
|
||||
setFixedSize(width(), height + uOptsWidgetHeight + 40);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,11 +31,14 @@
|
|||
#include "loginoptionswidget.h"
|
||||
#include "modeButton.h"
|
||||
#include "kalabel.h"
|
||||
#include <kysdk/applications/kdialog.h>
|
||||
using namespace kdk;
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class MainWindow : public QWidget
|
||||
class MainWindow : public kdk::KDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -45,14 +48,29 @@ public:
|
|||
void closeEvent(QCloseEvent *event);
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
void paintEvent(QPaintEvent *event);
|
||||
enum Mode{UNDEFINED, PASSWORD, BIOMETRIC, DEVICES};
|
||||
enum situation{TRUE, ERROR};
|
||||
void keyPressEvent(QKeyEvent *event); //屏蔽esc按钮
|
||||
enum Mode
|
||||
{
|
||||
UNDEFINED,
|
||||
PASSWORD,
|
||||
BIOMETRIC,
|
||||
DEVICES
|
||||
};
|
||||
enum situation
|
||||
{
|
||||
TRUE,
|
||||
ERROR
|
||||
};
|
||||
void setIcon(const QString &iconName);
|
||||
void setHeader(const QString &text);
|
||||
void setUsers(const QStringList &usersList);
|
||||
void setDetails(const QString &subPid, const QString &callerPid,
|
||||
const QString &actionId, const QString &actionDesc,
|
||||
const QString vendorName, const QString vendorUrl);
|
||||
void setDetails(
|
||||
const QString &subPid,
|
||||
const QString &callerPid,
|
||||
const QString &actionId,
|
||||
const QString &actionDesc,
|
||||
const QString vendorName,
|
||||
const QString vendorUrl);
|
||||
void setPrompt(const QString &text, bool echo);
|
||||
void setMessage(const QString &text, situation situat = ERROR);
|
||||
void setAuthResult(bool result, const QString &text = "");
|
||||
|
@ -77,7 +95,6 @@ private:
|
|||
void switchWidget(Mode mode);
|
||||
int enable_biometric_authentication();
|
||||
|
||||
|
||||
void root_unlock_countdown();
|
||||
void unlock_countdown();
|
||||
void editIcon();
|
||||
|
@ -85,10 +102,12 @@ private:
|
|||
void setMavisSheel();
|
||||
void updatePixmap();
|
||||
|
||||
void setBiometricAuthDisabledStatus(bool locked);
|
||||
|
||||
public slots:
|
||||
void onUpdateBioAuthMsg(QString strMsg);
|
||||
void onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize);
|
||||
|
||||
void onShowYesPrompt();
|
||||
private slots:
|
||||
void on_btnDetails_clicked();
|
||||
void on_lePassword_returnPressed();
|
||||
|
@ -112,6 +131,7 @@ signals:
|
|||
void switchToBiometric();
|
||||
void userChanged(const QString &userName);
|
||||
void restartAuth();
|
||||
void yesPrompted();
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
|
@ -168,6 +188,8 @@ private:
|
|||
QTimer *m_loadingTimer = nullptr;
|
||||
QPixmap m_loadingPixmap;
|
||||
bool isLoadingUkey = false;
|
||||
|
||||
bool doNotNeedAuth = false;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
@ -111,7 +111,7 @@ int get_is_open_other_authentication()
|
|||
int get_pam_tally(int *deny, int *unlock_time , int *root_unlock_time)
|
||||
{
|
||||
char buf[128];
|
||||
FILE *auth_file;
|
||||
FILE *auth_file = NULL;
|
||||
|
||||
if( (auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL)
|
||||
return -1;
|
||||
|
@ -138,8 +138,12 @@ int get_pam_tally(int *deny, int *unlock_time , int *root_unlock_time)
|
|||
}
|
||||
ptr = strtok(NULL, " \t");
|
||||
}
|
||||
fclose(auth_file);
|
||||
auth_file = NULL;
|
||||
return 1;
|
||||
}
|
||||
fclose(auth_file);
|
||||
auth_file = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,11 +21,13 @@
|
|||
#include <time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define SHM_TALLY "/shm_tally"
|
||||
struct _pam_tally {
|
||||
struct _pam_tally
|
||||
{
|
||||
int deny; //失败次数上限
|
||||
int unlock_time; //普通用户失败次数达到上限后,多少秒之后才能解锁
|
||||
int root_unlock_time; // root用户失败次数达到上限后,多少秒之后才能解锁
|
||||
|
|
|
@ -27,18 +27,13 @@
|
|||
#define SM_DBUS_INTERFACE "org.gnome.SessionManager"
|
||||
#define SM_DBUS_CLIENT_INTERFACE "org.gnome.SessionManager.ClientPrivate"
|
||||
|
||||
|
||||
SessionManager::SessionManager(QObject *parent) : QObject(parent)
|
||||
{
|
||||
smInterface = new QDBusInterface(SM_DBUS_SERVICE,
|
||||
SM_DBUS_PATH,
|
||||
SM_DBUS_INTERFACE,
|
||||
QDBusConnection::sessionBus());
|
||||
smInterface = new QDBusInterface(SM_DBUS_SERVICE, SM_DBUS_PATH, SM_DBUS_INTERFACE, QDBusConnection::sessionBus());
|
||||
QString appId("polkit-ukui-authentication-agent-1.desktop");
|
||||
QString clientStartupId(qgetenv("DESKTOP_AUTOSTART_ID"));
|
||||
|
||||
QDBusReply<QDBusObjectPath> reply = smInterface->call("RegisterClient",
|
||||
appId, clientStartupId);
|
||||
QDBusReply<QDBusObjectPath> reply = smInterface->call("RegisterClient", appId, clientStartupId);
|
||||
|
||||
if (!reply.isValid()) {
|
||||
qWarning() << "Register Client to gnome session failed";
|
||||
|
@ -47,20 +42,20 @@ SessionManager::SessionManager(QObject *parent) : QObject(parent)
|
|||
|
||||
qDebug() << "Register Client to gnome session: " << reply.value().path();
|
||||
|
||||
clientInterface = new QDBusInterface(SM_DBUS_SERVICE,
|
||||
clientId,
|
||||
SM_DBUS_CLIENT_INTERFACE,
|
||||
QDBusConnection::sessionBus());
|
||||
clientInterface
|
||||
= new QDBusInterface(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, QDBusConnection::sessionBus());
|
||||
qDebug() << clientInterface->isValid();
|
||||
|
||||
QDBusConnection conn = clientInterface->connection();
|
||||
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE,
|
||||
"Stop", this, SLOT(onStop()));
|
||||
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE,
|
||||
"EndSession", this, SLOT(onEndSession(unsigned int)));
|
||||
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE,
|
||||
"QueryEndSession", this, SLOT(onQueryEndSession(unsigned int)));
|
||||
|
||||
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, "Stop", this, SLOT(onStop()));
|
||||
conn.connect(
|
||||
SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, "EndSession", this, SLOT(onEndSession(unsigned int)));
|
||||
conn.connect(SM_DBUS_SERVICE,
|
||||
clientId,
|
||||
SM_DBUS_CLIENT_INTERFACE,
|
||||
"QueryEndSession",
|
||||
this,
|
||||
SLOT(onQueryEndSession(unsigned int)));
|
||||
}
|
||||
|
||||
void SessionManager::onStop()
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Tianjin KYLIN Information Technology 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 "usdblockshortcut.h"
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusError>
|
||||
#include <QDBusMetaType>
|
||||
#include <QDebug>
|
||||
|
||||
USDBlockShortCut::USDBlockShortCut(QObject *parent) : QObject(parent)
|
||||
{
|
||||
QString displayNum = QString(qgetenv("DISPLAY")).replace(":", "").replace(".", "_");
|
||||
m_strDbusPath = QString("%1%2").arg(QString("org.ukui.settingsDaemon.shortcut.ukui-polkit")).arg(displayNum);
|
||||
m_isRegistService = QDBusConnection::sessionBus().registerService(m_strDbusPath);
|
||||
if (!m_isRegistService) {
|
||||
qInfo() << "registerService " << m_strDbusPath << " failed!!";
|
||||
} else {
|
||||
m_isRegistObject = QDBusConnection::sessionBus().registerObject(
|
||||
"/org/ukui/settingsDaemon/shortcut",
|
||||
"org.ukui.settingsDaemon.shortcut",
|
||||
this,
|
||||
QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllProperties);
|
||||
if (!m_isRegistObject) {
|
||||
qInfo() << "registerObject /org/ukui/settingsDaemon/shortcut failed!!";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
USDBlockShortCut::~USDBlockShortCut()
|
||||
{
|
||||
if (m_isRegistObject) {
|
||||
QDBusConnection::sessionBus().unregisterObject("/org/ukui/settingsDaemon/shortcut");
|
||||
m_isRegistObject = false;
|
||||
}
|
||||
if (m_isRegistService) {
|
||||
QDBusConnection::sessionBus().unregisterService(m_strDbusPath);
|
||||
m_isRegistService = false;
|
||||
}
|
||||
}
|
||||
|
||||
QStringList USDBlockShortCut::blockShortcuts()
|
||||
{
|
||||
QStringList listShortCut = {
|
||||
"WINDOWSWITCH_KEY", "WLCOM_SWITCH_WORKSPACE", "WLCOM_WINDOW_ACTION", "WLCOM_MAXIMIZED_VIEWS", "WLCOM_CTRL_VIEWS"
|
||||
};
|
||||
return listShortCut;
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Copyright (C) 2024 Tianjin KYLIN Information Technology 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 USDBLOCKSHORTCUT_H
|
||||
#define USDBLOCKSHORTCUT_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QDBusAbstractAdaptor>
|
||||
#include <QDBusContext>
|
||||
#include <QStringList>
|
||||
|
||||
class USDBlockShortCut : public QObject, public QDBusContext
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "org.ukui.settingsDaemon.shortcut")
|
||||
Q_PROPERTY(QStringList blockShortcuts READ blockShortcuts)
|
||||
|
||||
public:
|
||||
USDBlockShortCut(QObject *parent = nullptr);
|
||||
virtual ~USDBlockShortCut();
|
||||
|
||||
public slots:
|
||||
/**
|
||||
* @brief blockShortcuts 禁用按键列表
|
||||
* @return 禁用按键字符串列表
|
||||
*/
|
||||
QStringList blockShortcuts();
|
||||
|
||||
private:
|
||||
bool m_isRegistService = false; /**是否已注册服务*/
|
||||
bool m_isRegistObject = false; /**是否已注册对象*/
|
||||
QString m_strDbusPath; /**dbus服务路径*/
|
||||
};
|
||||
|
||||
#endif // USDBLOCKSHORTCUT_H
|
|
@ -29,8 +29,7 @@
|
|||
|
||||
QDebug operator<<(QDebug stream, const UserItem &user)
|
||||
{
|
||||
stream << user.name << user.realName << user.uid
|
||||
<< user.icon << user.path;
|
||||
stream << user.name << user.realName << user.uid << user.icon << user.path;
|
||||
return stream;
|
||||
}
|
||||
|
||||
|
@ -48,25 +47,19 @@ QList<UserItem> Users::getUsers()
|
|||
UserItem Users::getUserByName(const QString &name)
|
||||
{
|
||||
for (int i = 0; i < users.size(); i++) {
|
||||
if(users.at(i).name == name)
|
||||
{
|
||||
if (users.at(i).name == name) {
|
||||
return users.at(i);
|
||||
}
|
||||
}
|
||||
UserItem user;
|
||||
if(name == "root")
|
||||
{
|
||||
if (name == "root") {
|
||||
user.icon = "/root/.face";
|
||||
if(!QFile(user.icon).exists())
|
||||
{
|
||||
if (!QFile(user.icon).exists()) {
|
||||
user.icon = defaultIcon;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
user.icon = qgetenv("HOME") + "/.face";
|
||||
if(!QFile(user.icon).exists())
|
||||
{
|
||||
if (!QFile(user.icon).exists()) {
|
||||
user.icon = defaultIcon;
|
||||
}
|
||||
}
|
||||
|
@ -81,29 +74,23 @@ QString Users::getDefaultIcon()
|
|||
return defaultIcon;
|
||||
}
|
||||
|
||||
|
||||
// https://stackoverflow.com/questions/20206376/
|
||||
// how-do-i-extract-the-returned-data-from-qdbusmessage-in-a-qt-dbus-call
|
||||
void Users::loadUsers()
|
||||
{
|
||||
qDebug() << "loadUsers";
|
||||
actService = new QDBusInterface(ACT_DBUS_SERVICE,
|
||||
ACT_DBUS_PATH,
|
||||
ACT_DBUS_INTERFACE,
|
||||
QDBusConnection::systemBus());
|
||||
actService = new QDBusInterface(ACT_DBUS_SERVICE, ACT_DBUS_PATH, ACT_DBUS_INTERFACE, QDBusConnection::systemBus());
|
||||
|
||||
connect(actService, SIGNAL(UserAdded(const QDBusObjectPath&)),
|
||||
this, SLOT(onUserAdded(const QDBusObjectPath&)));
|
||||
connect(actService, SIGNAL(UserDeleted(const QDBusObjectPath&)),
|
||||
this, SLOT(onUserDeleted(const QDBusObjectPath&)));
|
||||
connect(actService, SIGNAL(UserAdded(const QDBusObjectPath &)), this, SLOT(onUserAdded(const QDBusObjectPath &)));
|
||||
connect(
|
||||
actService, SIGNAL(UserDeleted(const QDBusObjectPath &)), this, SLOT(onUserDeleted(const QDBusObjectPath &)));
|
||||
QDBusMessage ret = actService->call("ListCachedUsers");
|
||||
QList<QVariant> outArgs = ret.arguments(); //(QVariant(QDBusArgument,))
|
||||
QVariant first = outArgs.at(0); // QVariant(QDBusArgument,)
|
||||
const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
|
||||
QDBusObjectPath path;
|
||||
dbusArgs.beginArray();
|
||||
while (!dbusArgs.atEnd())
|
||||
{
|
||||
while (!dbusArgs.atEnd()) {
|
||||
dbusArgs >> path;
|
||||
getUser(path.path());
|
||||
}
|
||||
|
@ -112,10 +99,7 @@ void Users::loadUsers()
|
|||
|
||||
UserItem Users::getUser(const QString &path)
|
||||
{
|
||||
QDBusInterface iface(ACT_DBUS_SERVICE,
|
||||
path,
|
||||
DBUS_PROP_INTERFACE,
|
||||
QDBusConnection::systemBus());
|
||||
QDBusInterface iface(ACT_DBUS_SERVICE, path, DBUS_PROP_INTERFACE, QDBusConnection::systemBus());
|
||||
QDBusMessage ret = iface.call("GetAll", ACT_USER_INTERFACE);
|
||||
QList<QVariant> outArgs = ret.arguments();
|
||||
QVariant first = outArgs.at(0);
|
||||
|
@ -123,37 +107,27 @@ UserItem Users::getUser(const QString &path)
|
|||
UserItem user;
|
||||
user.path = path;
|
||||
dbusArgs.beginMap();
|
||||
while(!dbusArgs.atEnd())
|
||||
{
|
||||
while (!dbusArgs.atEnd()) {
|
||||
QString key;
|
||||
QVariant value;
|
||||
dbusArgs.beginMapEntry();
|
||||
dbusArgs >> key >> value;
|
||||
if(key == "UserName")
|
||||
{
|
||||
if (key == "UserName") {
|
||||
user.name = value.toString();
|
||||
}
|
||||
else if(key == "RealName")
|
||||
{
|
||||
} else if (key == "RealName") {
|
||||
user.realName = value.toString();
|
||||
}
|
||||
else if(key == "IconFile")
|
||||
{
|
||||
} else if (key == "IconFile") {
|
||||
user.icon = value.toString();
|
||||
if(!QFile(user.icon).exists())
|
||||
{
|
||||
if (!QFile(user.icon).exists()) {
|
||||
user.icon = defaultIcon;
|
||||
}
|
||||
}
|
||||
else if(key == "Uid")
|
||||
{
|
||||
} else if (key == "Uid") {
|
||||
user.uid = value.toUInt();
|
||||
}
|
||||
dbusArgs.endMapEntry();
|
||||
}
|
||||
dbusArgs.endMap();
|
||||
if(user.realName.isEmpty())
|
||||
{
|
||||
if (user.realName.isEmpty()) {
|
||||
user.realName = user.name;
|
||||
}
|
||||
users.push_back(user);
|
||||
|
@ -163,8 +137,7 @@ UserItem Users::getUser(const QString &path)
|
|||
void Users::onUserAdded(const QDBusObjectPath &path)
|
||||
{
|
||||
int index = findUserByPath(path.path());
|
||||
if(index >=0 &&index<users.count())
|
||||
{
|
||||
if (index >= 0 && index < users.count()) {
|
||||
UserItem user = getUser(path.path());
|
||||
Q_EMIT userAdded(user);
|
||||
}
|
||||
|
@ -172,8 +145,7 @@ void Users::onUserAdded(const QDBusObjectPath& path)
|
|||
void Users::onUserDeleted(const QDBusObjectPath &path)
|
||||
{
|
||||
int index = findUserByPath(path.path());
|
||||
if(index >= 0 && index<users.count())
|
||||
{
|
||||
if (index >= 0 && index < users.count()) {
|
||||
UserItem user = users.at(index);
|
||||
users.removeAt(index);
|
||||
Q_EMIT userDeleted(user);
|
||||
|
@ -182,13 +154,9 @@ void Users::onUserDeleted(const QDBusObjectPath& path)
|
|||
|
||||
int Users::findUserByPath(const QString &path)
|
||||
{
|
||||
auto iter = std::find_if(users.begin(), users.end(),
|
||||
[&](const UserItem &user){
|
||||
return user.path == path;
|
||||
});
|
||||
auto iter = std::find_if(users.begin(), users.end(), [&](const UserItem &user) { return user.path == path; });
|
||||
|
||||
int index = iter - users.begin();
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
#include <QObject>
|
||||
|
||||
|
||||
struct UserItem
|
||||
{
|
||||
QString name;
|
||||
|
|
Loading…
Reference in New Issue