Merge pull request !25 from 杨敏/openkylin/nile
This commit is contained in:
杨敏 2024-11-13 11:51:11 +00:00 committed by Gitee
commit 3f1dfb7544
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
42 changed files with 2964 additions and 1858 deletions

View File

@ -21,6 +21,7 @@
#include <QCommandLineOption> #include <QCommandLineOption>
#include <QCommandLineParser> #include <QCommandLineParser>
#include <termios.h> #include <termios.h>
#include <signal.h>
#include <pwd.h> #include <pwd.h>
@ -38,7 +39,7 @@
bool enableDebug; bool enableDebug;
QString logPrefix; QString logPrefix;
BioAuth bioAuth;
enum MsgType enum MsgType
{ {
START, START,
@ -241,6 +242,13 @@ DeviceInfo showDevices(const QMap<int, QList<DeviceInfo>> &devicesMap)
return DeviceInfo(); return DeviceInfo();
} }
static void signal_handler(int signo)
{
if (signo == SIGHUP) {
bioAuth.stopAuth();
}
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QCoreApplication::setSetuidAllowed(true); QCoreApplication::setSetuidAllowed(true);
@ -310,7 +318,8 @@ int main(int argc, char *argv[])
showMessage(QObject::tr("Press Q or Esc to cancel"), PROMPT); showMessage(QObject::tr("Press Q or Esc to cancel"), PROMPT);
} }
BioAuth bioAuth(uid, deviceInfo); bioAuth.setUid(uid);
bioAuth.setDevice(deviceInfo);
KeyWatcher watcher; KeyWatcher watcher;
QMap<int,int> m_failedTimes; QMap<int,int> m_failedTimes;
@ -403,7 +412,7 @@ int main(int argc, char *argv[])
bioAuth.startAuth(); bioAuth.startAuth();
if(!isHiddenSwitchButton){ if (!isHiddenSwitchButton) {
QObject::connect(&watcher, &KeyWatcher::exit, &a, [&]{ QObject::connect(&watcher, &KeyWatcher::exit, &a, [&]{
showMessage(QObject::tr("AUTHENTICATION CANCELED"), START); showMessage(QObject::tr("AUTHENTICATION CANCELED"), START);
bioAuth.stopAuth(); bioAuth.stopAuth();
@ -411,6 +420,7 @@ int main(int argc, char *argv[])
}); });
} }
watcher.start(); watcher.start();
signal(SIGHUP, signal_handler);
return a.exec(); return a.exec();
} }

View File

@ -36,6 +36,7 @@ public:
explicit BioAuth(QObject *parent = nullptr); explicit BioAuth(QObject *parent = nullptr);
~BioAuth(); ~BioAuth();
void setDevice(const DeviceInfoPtr deviceInfo); void setDevice(const DeviceInfoPtr deviceInfo);
void setUid(qint32 uid);
DeviceInfoPtr getDevice(); DeviceInfoPtr getDevice();
void startAuth(); void startAuth();
void startUkeyAuth(); void startUkeyAuth();
@ -59,7 +60,6 @@ public:
*/ */
bool GetHasUkeyFeature(int uid, int indexStart = 0, int indexEnd = -1); bool GetHasUkeyFeature(int uid, int indexStart = 0, int indexEnd = -1);
signals: signals:
void authComplete(int uid, bool result, int retErrNo); void authComplete(int uid, bool result, int retErrNo);
void authFinished(); void authFinished();

View File

@ -97,6 +97,10 @@ public:
void SetExtraInfo(QString extra_info,QString info_type); void SetExtraInfo(QString extra_info,QString info_type);
bool getHasUkeyOptions(); bool getHasUkeyOptions();
void setSelectedPassword(); void setSelectedPassword();
// 设置所有生物识别的禁用状态
void setAllDeviceDisable(bool bDisable = true);
public slots: public slots:
void readDevicesInfo(); void readDevicesInfo();
void onIdentifyComplete(int uid, bool ret, int retErrNo); void onIdentifyComplete(int uid, bool ret, int retErrNo);

View File

@ -61,6 +61,11 @@ void BioAuth::setDevice(const DeviceInfoPtr deviceInfo)
this->deviceInfo = deviceInfo; this->deviceInfo = deviceInfo;
} }
void BioAuth::setUid(qint32 uid)
{
this->uid = uid;
}
void BioAuth::startUkeyAuth() void BioAuth::startUkeyAuth()
{ {
// stopAuth(); // stopAuth();
@ -209,7 +214,6 @@ void BioAuth::onIdentityComplete(QDBusPendingCallWatcher *watcher)
/* 识别生物特征成功,发送认证结果 */ /* 识别生物特征成功,发送认证结果 */
if(isInAuthentication){ if(isInAuthentication){
isInAuthentication = false; isInAuthentication = false;
if(result == DBUS_RESULT_SUCCESS && retUid == uid){ if(result == DBUS_RESULT_SUCCESS && retUid == uid){

View File

@ -570,7 +570,9 @@ void LoginOptionsWidget::onIdentifyComplete(int uid, bool ret, int retErrNo)
qDebug()<<"StatusReslut:"<<ret.result<<","<<ret.enable<<","<<ret.devNum<<"," qDebug()<<"StatusReslut:"<<ret.result<<","<<ret.enable<<","<<ret.devNum<<","
<<ret.devStatus<<","<<ret.opsStatus<<","<<ret.notifyMessageId; <<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网络异常 || ret.opsStatus == 8)) { // 304认证超时 8网络异常
Q_EMIT authComplete(uid, false, 1); Q_EMIT authComplete(uid, false, 1);
} else if (ret.opsStatus == OPS_IDENTIFY_STOP_BY_USER || ret.opsStatus == OPS_VERIFY_STOP_BY_USER) { } 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) bool LoginOptionsWidget::isDeviceDisable(int nDevId)
{ {
if (m_mapDisableDev[m_uid].contains(nDevId)) { if (m_mapDisableDev[m_uid].contains(nDevId)) {

9
debian/changelog vendored
View File

@ -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 ukui-biometric-auth (4.10.0.0-ok9.1) nile; urgency=medium
* BUG号#I9RPVW [维吾尔语】启动指纹驱动时窗口提示语未适配 * BUG号#I9RPVW [维吾尔语】启动指纹驱动时窗口提示语未适配

1
debian/control vendored
View File

@ -16,6 +16,7 @@ Build-Depends: cmake (>= 2.6),
qttools5-dev, qttools5-dev,
qttools5-dev-tools, qttools5-dev-tools,
libkysdk-sysinfo-dev, libkysdk-sysinfo-dev,
libkysdk-qtwidgets-dev,
libukui-log4qt-dev, libukui-log4qt-dev,
libssl-dev, libssl-dev,
liblightdm-qt5-3-dev, liblightdm-qt5-3-dev,

View File

@ -11,12 +11,16 @@
<description xml:lang="mn">ᠠᠵᠢᠯᠯᠠᠭᠠᠨ ᠤ ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠵᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ </description> <description xml:lang="mn">ᠠᠵᠢᠯᠯᠠᠭᠠᠨ ᠤ ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠵᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ </description>
<description xml:lang="zh_HK">運行生物識別認證控制工具</description> <description xml:lang="zh_HK">運行生物識別認證控制工具</description>
<description xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئىسپاتلاش كونترول قىلىش قورالى</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>Authentication is required to enable or disable biometric authentication</message>
<message xml:lang="zh_CN">开启或关闭生物识别认证需要进行身份验证</message> <message xml:lang="zh_CN">开启或关闭生物识别认证需要进行身份验证</message>
<message xml:lang="bo">སྒོ་རྒྱག་པའམ་ཡང་ན་སྒོ་རྒྱག་པའི་སྐྱེ་དངོས་ངོས་འཛིན་བདེན་དཔངར་སྤྲོད་བྱེད་པར་ཐོབ་ཐང་གི་ཚོད་ལྟསར་སྤྲོད་བྱ་དགོས།</message> <message xml:lang="bo">སྒོ་རྒྱག་པའམ་ཡང་ན་སྒོ་རྒྱག་པའི་སྐྱེ་དངོས་ངོས་འཛིན་བདེན་དཔངར་སྤྲོད་བྱེད་པར་ཐོབ་ཐང་གི་ཚོད་ལྟསར་སྤྲོད་བྱ་དགོས།</message>
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠤᠶᠤ ᠬᠠᠭᠠᠬᠤ ᠳᠤ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨ᠎ᠠ᠃</message> <message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠭᠡᠷᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠨᠡᠭᠡᠭᠡᠬᠦ ᠪᠤᠶᠤ ᠬᠠᠭᠠᠬᠤ ᠳᠤ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨ᠎ᠠ᠃</message>
<message xml:lang="zh_HK">開啟或關閉生物識別認證需要進行身份驗證</message> <message xml:lang="zh_HK">開啟或關閉生物識別認證需要進行身份驗證</message>
<message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئىسپاتىنى ئېچىش ياكى تاقاش ئۈچۈن دەلىللەش كېرەك</message> <message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئىسپاتىنى ئېچىش ياكى تاقاش ئۈچۈن دەلىللەش كېرەك</message>
<message xml:lang="kk">بىئولوگىيەلىك پارىقتاندىرۋ سىپاتىن ٸشٸۋ ياكي تاقاۋ ٷشٸن دالەلدەۋ كەرەك</message>
<message xml:lang="ky">بىئولوگىيەلىك ايىرمالاندىرىش دالىلىن اچۇۇ كۅرۉنۉشتۅرۉ بەكىتىش ۉچۉن دالىلدۅ كەرەك</message>
<icon_name>stock_person</icon_name> <icon_name>stock_person</icon_name>
<defaults> <defaults>
<allow_any>no</allow_any> <allow_any>no</allow_any>

View File

@ -11,12 +11,16 @@
<description xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠪᠡᠷ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠤᠨ᠎ᠠ </description> <description xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠪᠡᠷ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠡᠵᠡᠮᠳᠡᠯ ᠦᠨ ᠪᠠᠭᠠᠵᠢ ᠶᠢ ᠠᠵᠢᠯᠯᠠᠭᠤᠯᠤᠨ᠎ᠠ </description>
<description xml:lang="zh_HK">運行生物識別設備驅動控制工具</description> <description xml:lang="zh_HK">運行生物識別設備驅動控制工具</description>
<description xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئۈسكۈنىسىنى قوزغىتىش كونترول قىلىش ئەسۋابىنى يۈرگۈزۈش</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>Authentication is required to change the status of biometric device's driver</message>
<message xml:lang="zh_CN">改变生物识别设备驱动状态需要进行身份验证</message> <message xml:lang="zh_CN">改变生物识别设备驱动状态需要进行身份验证</message>
<message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་སྒྲག་ཆས་ཀྱི་ཁ་ལོ་བའི་གནས་ཚུལ་ལ་འགྱུར་ལྡོག་གཏོང་བར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message> <message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་སྒྲག་ཆས་ཀྱི་ཁ་ལོ་བའི་གནས་ཚུལ་ལ་འགྱུར་ལྡོག་གཏོང་བར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message>
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠪᠠᠶᠢᠳᠠᠯ ᠢ ᠬᠤᠪᠢᠷᠠᠭᠤᠯᠬᠤ ᠳᠤ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ᠃</message> <message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠢ ᠢᠯᠭᠠᠨ ᠲᠠᠨᠢᠬᠤ ᠲᠥᠬᠥᠭᠡᠷᠦᠮᠵᠢ ᠶᠢᠨ ᠬᠥᠳᠡᠯᠭᠡᠭᠦᠷ ᠪᠣᠯᠭᠠᠬᠤ ᠪᠠᠶᠢᠳᠠᠯ ᠢ ᠬᠤᠪᠢᠷᠠᠭᠤᠯᠬᠤ ᠳᠤ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠤᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠯ ᠬᠢᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠬᠤ ᠬᠡᠷᠡᠭᠲᠡᠶ᠃</message>
<message xml:lang="zh_HK">改變生物識別設備驅動狀態需要進行身份驗證</message> <message xml:lang="zh_HK">改變生物識別設備驅動狀態需要進行身份驗證</message>
<message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئۈسكۈنىسىنىڭ قوزغىتىش ھالىتىنى ئۆزگەرتىشتە دەلىللەش كېرەك</message> <message xml:lang="ug">بىئولوگىيەلىك پەرقلەندۈرۈش ئۈسكۈنىسىنىڭ قوزغىتىش ھالىتىنى ئۆزگەرتىشتە دەلىللەش كېرەك</message>
<message xml:lang="kk">بىئولوگىيەلىك پارىقتاندىرۋ اسپابىنىڭ قوزعالتۋ كۇيىن وزگەتۋگە دالەلدەۋ كەرەك</message>
<message xml:lang="ky">بىئولوگىيەلىك ايىرمالاندىرىش شايمانىنىن قوزعوتۇۇ ابالىن ۅزگۅرتۉۉدۅ دالىلدۅ كەرەك</message>
<icon_name>stock_person</icon_name> <icon_name>stock_person</icon_name>
<defaults> <defaults>
<allow_any>auth_admin</allow_any> <allow_any>auth_admin</allow_any>

View File

@ -12,11 +12,15 @@
<message>Authentication is required to restart biometric service</message> <message>Authentication is required to restart biometric service</message>
<description xml:lang="zh_HK">重啟生物特徵服務</description> <description xml:lang="zh_HK">重啟生物特徵服務</description>
<description xml:lang="ug">بىئولوگىيەلىك ئالاھىدىلىك مۇلازىمىتىنى قايتىدىن قوزغىتىش</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="zh_CN">重启生物特征服务需要身份验证</message>
<message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་ཞབས་ཞུ་སླར་གསོ་བྱེད་པར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message> <message xml:lang="bo">སྐྱ་དངོས་དབྱེ་འབྱེད་ཞབས་ཞུ་སླར་གསོ་བྱེད་པར་བདེན་དཔང་ར་སྤྲད་བྱ་དགོས།</message>
<message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠤᠨ ᠣᠨᠴᠠᠯᠢᠭ ᠰᠢᠨᠵᠢ ᠲᠡᠮᠳᠡᠭ ᠦᠨ ᠦᠢᠯᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠳᠠᠬᠢᠨ ᠰᠡᠩᠬᠡᠷᠡᠭᠦᠯᠬᠦ ᠳᠦ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠢ ᠰᠢᠯᠭᠠᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨ᠎ᠠ </message> <message xml:lang="mn">ᠠᠮᠢᠳᠤ ᠪᠣᠳᠠᠰ ᠤᠨ ᠣᠨᠴᠠᠯᠢᠭ ᠰᠢᠨᠵᠢ ᠲᠡᠮᠳᠡᠭ ᠦᠨ ᠦᠢᠯᠡᠴᠢᠯᠡᠭᠡ ᠶᠢ ᠳᠠᠬᠢᠨ ᠰᠡᠩᠬᠡᠷᠡᠭᠦᠯᠬᠦ ᠳᠦ ᠪᠡᠶ᠎ᠡ ᠶᠢᠨ ᠭᠠᠷᠤᠯ ᠢ ᠰᠢᠯᠭᠠᠨ ᠭᠡᠷᠡᠴᠢᠯᠡᠬᠦ ᠴᠢᠬᠤᠯᠠ ᠲᠠᠶ ᠪᠠᠶᠢᠨ᠎ᠠ </message>
<message xml:lang="ug">بىئولوگىيەلىك ئالاھىدىلىك مۇلازىمىتىنى قايتىدىن قوزغىتىش ئۈچۈن دەلىللەش كېرەك </message> <message xml:lang="ug">بىئولوگىيەلىك ئالاھىدىلىك مۇلازىمىتىنى قايتىدىن قوزغىتىش ئۈچۈن دەلىللەش كېرەك </message>
<message xml:lang="zh_HK">重啟生物特徵服務需要身份驗證</message> <message xml:lang="zh_HK">重啟生物特徵服務需要身份驗證</message>
<message xml:lang="kk">بىئولوگىيەلىك ەرەكشەلىك قىزىمەتتى قايتادان قوزعالتۋ ٷشٸن دالەلدەۋ كەرەك بىئولوگىيەلىك پارىقتاندىرۋ اسبابٸن قوزعالتۋ مەڭگەرۋ ەتۋ اسپاپتى جۇرگىزۋ</message>
<message xml:lang="ky">بىئولوگىيەلىك ۅزگۅچۅلۉك مۇلازىمەتىردى قايتادان قوزعوتۇۇ ۉچۉن دالىلدۅ كەرەك بىئولوگىيەلىك ايىرمالاندىرىش جابدۇۇسۇن قوزعوتۇۇ تىزگىندۅۅ جاسوو ،اتقارۇۇ</message>
<icon_name>stock_person</icon_name> <icon_name>stock_person</icon_name>
<defaults> <defaults>
<allow_any>auth_admin</allow_any> <allow_any>auth_admin</allow_any>

View File

@ -3,7 +3,8 @@ project(ukui-polkit-agent)
pkg_check_modules(QGS REQUIRED gsettings-qt) pkg_check_modules(QGS REQUIRED gsettings-qt)
pkg_check_modules(KDKINFO REQUIRED kysdk-sysinfo) 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(PolkitQt5-1 REQUIRED 0.103.0)
find_package(Qt5 COMPONENTS Core Widgets DBus X11Extras Xml Network Svg) find_package(Qt5 COMPONENTS Core Widgets DBus X11Extras Xml Network Svg)
@ -23,16 +24,22 @@ configure_file(
include_directories( include_directories(
${QGS_INCLUDE_DIRS} ${QGS_INCLUDE_DIRS}
${KDKINFO_INCLUDE_DIRS} ${KDKINFO_INCLUDE_DIRS}
${KDKWIDGETS_INCLUDE_DIRS}
${KYSDKWAYLANDHELPER_INCLUDE_DIRS}
) )
link_directories( link_directories(
${KDKINFO_LIBRARY_DIRS} ${KDKINFO_LIBRARY_DIRS}
${KDKWIDGETS_LIBRARY_DIRS}
${KYSDKWAYLANDHELPER_LIBRARY_DIRS}
) )
set(EXTRA_LIBS set(EXTRA_LIBS
${EXTRA_LIBS} ${EXTRA_LIBS}
${QGS_LIBRARIES} ${QGS_LIBRARIES}
${KDKINFO_LIBRARIES} ${KDKINFO_LIBRARIES}
${KDKWIDGETS_LIBRARIES}
${KYSDKWAYLANDHELPER_LIBRARIES}
) )
include_directories( include_directories(
@ -58,17 +65,20 @@ set(polkit_SRCS
src/modeButton.cpp src/modeButton.cpp
src/kalabel.cpp src/kalabel.cpp
../common/generic.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}) add_executable(polkit-ukui-authentication-agent-1 ${polkit_SRCS})
target_include_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) target_include_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKQTWIDGETS_PKG_INCLUDE_DIRS})
target_link_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS}) target_link_directories(polkit-ukui-authentication-agent-1 PRIVATE ${KYSDKQTWIDGETS_PKG_LIBRARY_DIRS})
target_link_libraries(polkit-ukui-authentication-agent-1 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} ${POLKITQT-1_LIBRARIES}
${KYSDKWAYLANDHELPER_PKG_LIBRARIES} ${KYSDKQTWIDGETS_PKG_LIBRARIES}
BioAuthWidgets BioAuthWidgets
KF5::WindowSystem
-lrt -lrt
-lukui-log4qt -lukui-log4qt
) )

View File

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.1"> <TS version="2.1">
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
@ -10,8 +18,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -22,192 +30,201 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="118"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <source>Close</source>
<location filename="../src/mainwindow.cpp" line="1417"/> <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> <source>Failed to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<source>hours left</source> <source>hours left</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -215,17 +232,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation></translation> <translation></translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation></translation> <translation></translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation></translation> <translation></translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>%1 %2</translation> <translation>%1 %2</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation></translation> <translation></translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>%1 </translation> <translation>%1 </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>%1 </translation> <translation>%1 </translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>USBཡི</translation> <translation>USBཡི</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>hours left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation></translation> <translation></translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished">Authentifizierung</translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>Authentifizierung</translation> <translation>Authentifizierung</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>Biometrisch</translation> <translation>Biometrisch</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Abbrechen</translation> <translation>Abbrechen</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>Beglaubigen</translation> <translation>Beglaubigen</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>Passwort verwenden</translation> <translation>Passwort verwenden</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>Versuchen Sie es in %1 Minuten erneut.</translation> <translation>Versuchen Sie es in %1 Minuten erneut.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>Bitte versuchen Sie es in %1 Sekunden erneut.</translation> <translation>Bitte versuchen Sie es in %1 Sekunden erneut.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>Das Konto wurde dauerhaft gesperrt.</translation> <translation>Das Konto wurde dauerhaft gesperrt.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>Das Kennwort darf nicht leer sein.</translation> <translation>Das Kennwort darf nicht leer sein.</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <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> <translation>%1 konnte nicht verifiziert werden, Sie haben immer noch %2 Überprüfungsmöglichkeiten</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>Passwort: </translation> <translation>Passwort: </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>Bitte geben Sie Ihr Passwort ein oder registrieren Sie Ihren Fingerabdruck </translation> <translation>Bitte geben Sie Ihr Passwort ein oder registrieren Sie Ihren Fingerabdruck </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Ungewöhnliches Netzwerk</translation> <translation>Ungewöhnliches Netzwerk</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;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> <translation>Für diesen Vorgang ist die Autorisierung des Administrators erforderlich. Bitte geben Sie Ihr Passwort ein, um diesen Vorgang zuzulassen.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>_Passwort: </translation> <translation>_Passwort: </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>_Passwort:</translation> <translation>_Passwort:</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>Authentifizierung fehlgeschlagen, bitte versuchen Sie es erneut.</translation> <translation>Authentifizierung fehlgeschlagen, bitte versuchen Sie es erneut.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>Verbleibende Tage</translation> <translation>Verbleibende Tage</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <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> <translation>%1 konnte nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <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> <translation>%1 kann nicht verifiziert werden, bitte geben Sie das Kennwort zum Entsperren ein</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <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> <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>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Passwort eingeben</translation> <translation>Passwort eingeben</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>hours left</source>
<translation>Verbleibende Stunden</translation> <translation>Verbleibende Stunden</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>Noch Minuten</translation> <translation>Noch Minuten</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>Verbleibende Sekunden</translation> <translation>Verbleibende Sekunden</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <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> <translation>Überprüfen Sie die Gesichtserkennung oder geben Sie das Passwort ein, um zu entsperren</translation>
</message> </message>
<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> <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> <translation>Drücken Sie den Fingerabdruck oder geben Sie das Passwort ein, um zu entsperren</translation>
</message> </message>
<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> <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> <translation>Überprüfen Sie den Stimmabdruck oder geben Sie das Passwort ein, um zu entsperren</translation>
</message> </message>
<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> <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> <translation>Überprüfen Sie die Fingervene oder geben Sie das Passwort ein, um zu entsperren</translation>
</message> </message>
<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> <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> <translation>Überprüfen Sie die Iris oder geben Sie das Passwort ein, um zu entsperren</translation>
</message> </message>
<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> <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> <translation>Verwenden Sie den gebundenen Wechat-Scan-Code oder geben Sie das Passwort zum Entsperren ein</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>Konto gesperrt,</translation> <translation>Konto gesperrt,</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <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> <translation>Ein anderer Client authentifiziert sich bereits, bitte versuchen Sie es später noch einmal.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>Authentifizierungsfehler, bitte versuchen Sie es erneut.</translation> <translation>Authentifizierungsfehler, bitte versuchen Sie es erneut.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>Fehler bei der Passworteingabe!</translation> <translation>Fehler bei der Passworteingabe!</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </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> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>Autenticación</translation> <translation>Autenticación</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>Biométrico</translation> <translation>Biométrico</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Cancelar</translation> <translation>Cancelar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>Autentificar</translation> <translation>Autentificar</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>Usar contraseña</translation> <translation>Usar contraseña</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>Inténtelo de nuevo en %1 minutos.</translation> <translation>Inténtelo de nuevo en %1 minutos.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>Inténtelo de nuevo en %1 segundos.</translation> <translation>Inténtelo de nuevo en %1 segundos.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>Cuenta bloqueada permanentemente.</translation> <translation>Cuenta bloqueada permanentemente.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>La contraseña no puede estar vacía</translation> <translation>La contraseña no puede estar vacía</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <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> <translation>No se pudo verificar %1, todavía tiene %2 oportunidades de verificación</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>Contraseña: </translation> <translation>Contraseña: </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>Ingrese su contraseña o registre su huella dactilar </translation> <translation>Ingrese su contraseña o registre su huella dactilar </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Red anormal</translation> <translation>Red anormal</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;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> <translation>Esta operación requiere la autorización del administrador. Introduzca su contraseña para permitir esta operación.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>_Contraseña: </translation> <translation>_Contraseña: </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>_Contraseña:</translation> <translation>_Contraseña:</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>Error de autenticación, inténtelo de nuevo.</translation> <translation>Error de autenticación, inténtelo de nuevo.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>Días restantes</translation> <translation>Días restantes</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>No se pudo verificar %1, ingrese la contraseña para desbloquear</translation> <translation>No se pudo verificar %1, ingrese la contraseña para desbloquear</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>No se puede verificar %1, ingrese la contraseña para desbloquear</translation> <translation>No se puede verificar %1, ingrese la contraseña para desbloquear</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <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> <translation>Un programa está intentando realizar una acción que requiere privilegios. Requiere autorización para realizar la acción.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Contraseña de entrada</translation> <translation>Contraseña de entrada</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>hours left</source>
<translation>horas restantes</translation> <translation>horas restantes</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>Quedan minutos</translation> <translation>Quedan minutos</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>segundos restantes</translation> <translation>segundos restantes</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation>Verifique el reconocimiento facial o ingrese la contraseña para desbloquear</translation> <translation>Verifique el reconocimiento facial o ingrese la contraseña para desbloquear</translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation>Presione la huella dactilar o ingrese la contraseña para desbloquear</translation> <translation>Presione la huella dactilar o ingrese la contraseña para desbloquear</translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation>Verifica la huella de voz o ingresa la contraseña para desbloquear</translation> <translation>Verifica la huella de voz o ingresa la contraseña para desbloquear</translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation>Verifique la vena del dedo o ingrese la contraseña para desbloquear</translation> <translation>Verifique la vena del dedo o ingrese la contraseña para desbloquear</translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation>Verifique el iris o ingrese la contraseña para desbloquear</translation> <translation>Verifique el iris o ingrese la contraseña para desbloquear</translation>
</message> </message>
<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> <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> <translation>Use el código de escaneo de wechat vinculado o ingrese la contraseña para desbloquear</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>Cuenta bloqueada,</translation> <translation>Cuenta bloqueada,</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <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> <translation>Otro cliente ya se está autenticando, inténtelo de nuevo más tarde.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>Error de autenticación, inténtelo de nuevo.</translation> <translation>Error de autenticación, inténtelo de nuevo.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>¡Error de entrada de contraseña!</translation> <translation>¡Error de entrada de contraseña!</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished">Authentification</translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>Authentification</translation> <translation>Authentification</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>Biométrique</translation> <translation>Biométrique</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Annuler</translation> <translation>Annuler</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>Authentifier</translation> <translation>Authentifier</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>Utiliser le mot de passe</translation> <translation>Utiliser le mot de passe</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>Veuillez réessayer dans %1 minutes.</translation> <translation>Veuillez réessayer dans %1 minutes.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>Veuillez réessayer dans %1 secondes.</translation> <translation>Veuillez réessayer dans %1 secondes.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>Compte verrouillé définitivement.</translation> <translation>Compte verrouillé définitivement.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>Le mot de passe ne peut pas être vide</translation> <translation>Le mot de passe ne peut pas être vide</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <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> <translation>Échec de la vérification %1, vous avez encore %2 possibilités de vérification</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>Mot de passe: </translation> <translation>Mot de passe: </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>Veuillez saisir votre mot de passe ou enregistrer votre empreinte digitale </translation> <translation>Veuillez saisir votre mot de passe ou enregistrer votre empreinte digitale </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Réseau anormal</translation> <translation>Réseau anormal</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation>Cette opération nécessite lautorisation de ladministrateur. Veuillez saisir votre mot de passe pour autoriser cette opération.</translation> <translation>Cette opération nécessite lautorisation de ladministrateur. Veuillez saisir votre mot de passe pour autoriser cette opération.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>_Mot de passe: </translation> <translation>_Mot de passe: </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>_Mot de passe:</translation> <translation>_Mot de passe:</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>Lauthentification a échoué, veuillez réessayer.</translation> <translation>Lauthentification a échoué, veuillez réessayer.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>jours restants</translation> <translation>jours restants</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <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> <translation>Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <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> <translation>Impossible de vérifier %1, veuillez entrer le mot de passe pour déverrouiller</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation>Un programme tente deffectuer une action qui nécessite des privilèges. Il nécessite une autorisation pour effectuer laction.</translation> <translation>Un programme tente deffectuer une action qui nécessite des privilèges. Il nécessite une autorisation pour effectuer laction.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Mot de passe dentrée</translation> <translation>Mot de passe dentrée</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>hours left</source>
<translation>Heures restantes</translation> <translation>Heures restantes</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>minutes restantes</translation> <translation>minutes restantes</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>secondes restantes</translation> <translation>secondes restantes</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <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> <translation>Vérifier la reconnaissance faciale ou saisir le mot de passe pour déverrouiller</translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation>Appuyez sur lempreinte digitale ou entrez le mot de passe pour déverrouiller</translation> <translation>Appuyez sur lempreinte digitale ou entrez le mot de passe pour déverrouiller</translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation>Vérifier lempreinte vocale ou saisir le mot de passe pour déverrouiller</translation> <translation>Vérifier lempreinte vocale ou saisir le mot de passe pour déverrouiller</translation>
</message> </message>
<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> <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> <translation>Vérifiez la veine du doigt ou entrez le mot de passe pour déverrouiller</translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation>Vérifiez liris ou entrez le mot de passe pour déverrouiller</translation> <translation>Vérifiez liris ou entrez le mot de passe pour déverrouiller</translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>Utilisez le code danalyse wechat lié ou entrez le mot de passe pour déverrouiller</translation> <translation>Utilisez le code danalyse wechat lié ou entrez le mot de passe pour déverrouiller</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>Compte verrouillé,</translation> <translation>Compte verrouillé,</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation>Un autre client est déjà en train de sauthentifier, veuillez réessayer plus tard.</translation> <translation>Un autre client est déjà en train de sauthentifier, veuillez réessayer plus tard.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>Échec de lauthentification, veuillez réessayer.</translation> <translation>Échec de lauthentification, veuillez réessayer.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>Erreur de saisie du mot de passe !</translation> <translation>Erreur de saisie du mot de passe !</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished">شىندىقتى دالەلدەۋ</translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>شىندىقتى دالەلدەۋ</translation> <translation>شىندىقتى دالەلدەۋ</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>بىئولەگىيەلىك ەرەكشەلىكتى ٸستەتۋ</translation> <translation>بىئولەگىيەلىك ەرەكشەلىكتى ٸستەتۋ</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>كۇشىنەن قالدىرۋ</translation> <translation>كۇشىنەن قالدىرۋ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>ۇقىق بەرۋ</translation> <translation>ۇقىق بەرۋ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>قۇپيا نومەر ٸستەتۋ ارقىلى دالەلدەۋ</translation> <translation>قۇپيا نومەر ٸستەتۋ ارقىلى دالەلدەۋ</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>٪1 مينۋت ٸشٸندە قاتە سىناپ كور.</translation> <translation>٪1 مينۋت ٸشٸندە قاتە سىناپ كور.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>٪1 سەكونت ٸشٸندە قاتە سىناپ كور.</translation> <translation>٪1 سەكونت ٸشٸندە قاتە سىناپ كور.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>ەسەپات ماڭگىلىك قۇلىپتالادى.</translation> <translation>ەسەپات ماڭگىلىك قۇلىپتالادى.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>قۇپيا نۇمىردى بوس قويۋعا بولمايدى</translation> <translation>قۇپيا نۇمىردى بوس قويۋعا بولمايدى</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، سىزدە جانەدە ٪2 دالەلدەۋ ورايى بار</translation> <translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، سىزدە جانەدە ٪2 دالەلدەۋ ورايى بار</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>قۇپيا نومەر </translation> <translation>قۇپيا نومەر </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>قۇپيا نۇمىرىڭىزدى كىرگىزىڭىز ياكي بارماقشى ئىزىڭىزنى تونۇتۇڭ </translation> <translation>قۇپيا نۇمىرىڭىزدى كىرگىزىڭىز ياكي بارماقشى ئىزىڭىزنى تونۇتۇڭ </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>بينورمال تور</translation> <translation>بينورمال تور</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation>نۇ جوبالاۋ باسقارعٸشتٸڭ ۇقىق بىرىستى تالاپ ىستەيدى.قۇپيا نۇمىردى كىرەۈزۈپ بي رەتكى جوبالاۋنىڭ الىپ بېرىلىشىغا جول قويىڭىز.</translation> <translation>نۇ جوبالاۋ باسقارعٸشتٸڭ ۇقىق بىرىستى تالاپ ىستەيدى.قۇپيا نۇمىردى كىرەۈزۈپ بي رەتكى جوبالاۋنىڭ الىپ بېرىلىشىغا جول قويىڭىز.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>قۇپيا نومەر </translation> <translation>قۇپيا نومەر </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>قۇپيا نومەر</translation> <translation>قۇپيا نومەر</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ</translation> <translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>1 كۇننەن كەيىن سناپ كور</translation> <translation>1 كۇننەن كەيىن سناپ كور</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، قۇپيا نومەر كىرگىزىڭىز</translation> <translation>٪1 نى دالەلدەۋ جەڭىلىپ قالدى، قۇپيا نومەر كىرگىزىڭىز</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>٪1 نى دالەلدەۋگە امالسٸز، قۇپيا نۇمىردى كىرەۈزۈپ قۇلىبىن ٴٸشڭٸز</translation> <translation>٪1 نى دالەلدەۋگە امالسٸز، قۇپيا نۇمىردى كىرەۈزۈپ قۇلىبىن ٴٸشڭٸز</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation>بٸر پٸروگٸرامما ۇقىق تالاپ ىستەيتىن ارەكەتتى ىستەۋگە ئۇرۇنماقتا. نۇ ارەكەتتى اتقار ەتۋ ٷشٸن ۇقىق تالاپ ىستەيدى.</translation> <translation>بٸر پٸروگٸرامما ۇقىق تالاپ ىستەيتىن ارەكەتتى ىستەۋگە ئۇرۇنماقتا. نۇ ارەكەتتى اتقار ەتۋ ٷشٸن ۇقىق تالاپ ىستەيدى.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>قۇپيا نومەر كىرگىزۋ</translation> <translation>قۇپيا نومەر كىرگىزۋ</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>ukey نى USB اۋزىنا چېتىپ قويىڭىز</translation> <translation>ukey نى USB اۋزىنا چېتىپ قويىڭىز</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation>ukey قۇپيا نۇمىردى كىرگىزىڭىز</translation> <translation>ukey قۇپيا نۇمىردى كىرگىزىڭىز</translation>
</message> </message>
<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> <source>hours left</source>
<translation>بٸر ساعاتتان كەيىن اشٸلدٸ</translation> <translation>بٸر ساعاتتان كەيىن اشٸلدٸ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>بٸر مينوتتىن كەيىن اشٸلدٸ</translation> <translation>بٸر مينوتتىن كەيىن اشٸلدٸ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>بٸر سەكونتىن كەيىن اشٸلدٸ</translation> <translation>بٸر سەكونتىن كەيىن اشٸلدٸ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation>قۇپيا نۇمىردى كىرەۈزۈپ ازاماتتىق كۋالىك دالەلدەۋ.</translation> <translation>قۇپيا نۇمىردى كىرەۈزۈپ ازاماتتىق كۋالىك دالەلدەۋ.</translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation>چىراي تانىسن دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation> <translation>چىراي تانىسن دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation>بارماقشى ٴٸزدٸ باسٸۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation> <translation>بارماقشى ٴٸزدٸ باسٸۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation>اۋا ٴٸزدٸ دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation> <translation>اۋا ٴٸزدٸ دالەلدەۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation>بارماقشى ٴٸزٸ ارقىلى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation> <translation>بارماقشى ٴٸزٸ ارقىلى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation>Iris نى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation> <translation>Iris نى انىقتاۋ ياكي قۇپيا نومەر كىرگىزۋ ارقىلى قۇلىپ ٸشٸۋ</translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>بايلانعان ئۈندىدارنى كەسكىندەۋ بەلگىسى ياكي قۇپيا نۇمىردى كىرەۈزۈپ قۇلىپ ٸشٸۋ</translation> <translation>بايلانعان ئۈندىدارنى كەسكىندەۋ بەلگىسى ياكي قۇپيا نۇمىردى كىرەۈزۈپ قۇلىپ ٸشٸۋ</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>ٸستەتۋ نومەرىڭىز قۇلىپتانىپ قالدى</translation> <translation>ٸستەتۋ نومەرىڭىز قۇلىپتانىپ قالدى</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation>جانە بٸر قاريدار دالەلدەپ جاتىر، سەل تۇرٸپ قاتە سىناڭ.</translation> <translation>جانە بٸر قاريدار دالەلدەپ جاتىر، سەل تۇرٸپ قاتە سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ.</translation> <translation>دالەلدەۋ جەڭىلىپ قالدى، قاتە سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>كىرگىزگەن قۇپيا نومەر قاتە قالدى</translation> <translation>كىرگىزگەن قۇپيا نومەر قاتە قالدى</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished">راستىنى دالىلدۅ</translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>راستىنى دالىلدۅ</translation> <translation>راستىنى دالىلدۅ</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>بىئولەگىيەلىك ۅزگۅچۅلۉگۉ ىشتەتىش</translation> <translation>بىئولەگىيەلىك ۅزگۅچۅلۉگۉ ىشتەتىش</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>ارعادان قالتىرىش</translation> <translation>ارعادان قالتىرىش</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>ۇقۇق بەرۉۉ</translation> <translation>ۇقۇق بەرۉۉ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>جاشىرۇۇن نومۇر ىشتەتىش ارقىلۇۇ دالىلدۅ</translation> <translation>جاشىرۇۇن نومۇر ىشتەتىش ارقىلۇۇ دالىلدۅ</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>٪1 مىنۇت ىچىندە قايرا سىناپ باعىڭ.</translation> <translation>٪1 مىنۇت ىچىندە قايرا سىناپ باعىڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>٪1 سىكونت ىچىندە قايرا سىناپ باعىڭ.</translation> <translation>٪1 سىكونت ىچىندە قايرا سىناپ باعىڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>ەسابات تۉبۅلۉك قۇلۇپلىنىدۇ.</translation> <translation>ەسابات تۉبۅلۉك قۇلۇپلىنىدۇ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>جاشىرۇۇن نومۇردۇ بوش ،بەكەر قويۇشقا بولبويت</translation> <translation>جاشىرۇۇن نومۇردۇ بوش ،بەكەر قويۇشقا بولبويت</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىزدە داعى ەلە ٪2 دالىلدۅ مۅۅرتۉ بار</translation> <translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىزدە داعى ەلە ٪2 دالىلدۅ مۅۅرتۉ بار</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>جاشىرۇۇن نومۇر </translation> <translation>جاشىرۇۇن نومۇر </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>جاشىرۇۇن نومۇرۇڭۇزدۇ كىرگىزىڭ كۅرۉنۉشتۅرۉ بارماق ئىزىڭىزنى تونۇتۇڭ </translation> <translation>جاشىرۇۇن نومۇرۇڭۇزدۇ كىرگىزىڭ كۅرۉنۉشتۅرۉ بارماق ئىزىڭىزنى تونۇتۇڭ </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>بۅتۅنچۅ تور</translation> <translation>بۅتۅنچۅ تور</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation>بۇل ماشقۇلدانۇۇ باشقارۇۇچۇنۇن ۇقۇق بەرۉۉنۉ تالاپ جاسايت .جاشىرۇۇن نومۇردۇ كىيىرىپ بي قاتىمقى ماشقۇلدانۇۇ نىڭ الىپ بېرىلىشىغا جول قويۇڭ.</translation> <translation>بۇل ماشقۇلدانۇۇ باشقارۇۇچۇنۇن ۇقۇق بەرۉۉنۉ تالاپ جاسايت .جاشىرۇۇن نومۇردۇ كىيىرىپ بي قاتىمقى ماشقۇلدانۇۇ نىڭ الىپ بېرىلىشىغا جول قويۇڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>جاشىرۇۇن نومۇر </translation> <translation>جاشىرۇۇن نومۇر </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>جاشىرۇۇن نومۇر</translation> <translation>جاشىرۇۇن نومۇر</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ</translation> <translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>1 كۉندۅن كىيىن سىناپ باعىڭ</translation> <translation>1 كۉندۅن كىيىن سىناپ باعىڭ</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىرلۇۇ نومۇر كىرگىزىڭ</translation> <translation>٪1 نى دالىلدۅ جەڭىلۉۉ بولدۇ ، سىرلۇۇ نومۇر كىرگىزىڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>٪1 نى دالىلدۅۅگۅ ايلاسىز، جاشىرۇۇن نومۇردۇ كىيىرىپ قۇلۇپنى اچىڭ</translation> <translation>٪1 نى دالىلدۅۅگۅ ايلاسىز، جاشىرۇۇن نومۇردۇ كىيىرىپ قۇلۇپنى اچىڭ</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation>بىر پراگرامما ۇقۇق تالاپ جاسايتۇرعان قىيمىلدى جاسووعو ئۇرۇنماقتا. بۇل قىيمىلدى اتقارماق جاسوو ،اتقارۇۇ ۉچۉن ۇقۇق تالاپ جاسايت .</translation> <translation>بىر پراگرامما ۇقۇق تالاپ جاسايتۇرعان قىيمىلدى جاسووعو ئۇرۇنماقتا. بۇل قىيمىلدى اتقارماق جاسوو ،اتقارۇۇ ۉچۉن ۇقۇق تالاپ جاسايت .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>جاشىرۇۇن نومۇر كىرگىزۉۉ</translation> <translation>جاشىرۇۇن نومۇر كىرگىزۉۉ</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>ukey نى USB ووزۇنا چېتىپ قويۇڭ</translation> <translation>ukey نى USB ووزۇنا چېتىپ قويۇڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation>ukey جاشىرۇۇن نومۇرۇن كىرگىزىڭ</translation> <translation>ukey جاشىرۇۇن نومۇرۇن كىرگىزىڭ</translation>
</message> </message>
<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> <source>hours left</source>
<translation>بىر سائەتتىن كىيىن اچىلات</translation> <translation>بىر سائەتتىن كىيىن اچىلات</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>بىر مىنۇتتان كىيىن اچىلات</translation> <translation>بىر مىنۇتتان كىيىن اچىلات</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>بىر سەكۇنتتان كىيىن اچىلات</translation> <translation>بىر سەكۇنتتان كىيىن اچىلات</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation>جاشىرۇۇن نومۇردۇ كىيىرىپ كۉبۅلۉك دالىلدۅ.</translation> <translation>جاشىرۇۇن نومۇردۇ كىيىرىپ كۉبۅلۉك دالىلدۅ.</translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation>چىراي تاانىشتى دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation> <translation>چىراي تاانىشتى دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation>بارماق ىزىن باسۇۇدا كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation> <translation>بارماق ىزىن باسۇۇدا كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation>دووش ىزىن دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation> <translation>دووش ىزىن دالىلدۅ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation>بارماق ئزى ارقىلۇۇ انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation> <translation>بارماق ئزى ارقىلۇۇ انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation>Iris نى انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation> <translation>Iris نى انىقتاش كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇر كىرگىزۉۉ ارقىلۇۇ قۇلپ اچۇۇ</translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>بايلانعان ئۈندىدارنى ىسكاننىردوو قۇپۇيا نومۇرۇ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇرۇن كىيىرىپ قۇلپ اچۇۇ</translation> <translation>بايلانعان ئۈندىدارنى ىسكاننىردوو قۇپۇيا نومۇرۇ كۅرۉنۉشتۅرۉ جاشىرۇۇن نومۇرۇن كىيىرىپ قۇلپ اچۇۇ</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>ىشتەتىش نومۇرۇڭۇز قۇلۇپتالىپ قالدى</translation> <translation>ىشتەتىش نومۇرۇڭۇز قۇلۇپتالىپ قالدى</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation>داعى بىر سووداگەر ، جولووچۇ دالىلدەپ جاتات، سەل تۇرۇپ قايرا سىناڭ.</translation> <translation>داعى بىر سووداگەر ، جولووچۇ دالىلدەپ جاتات، سەل تۇرۇپ قايرا سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ.</translation> <translation>دالىلدۅ جەڭىلۉۉ بولدۇ ، قايرا سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>كىيىرگەن جاشىرۇۇن نومۇر قاتاا بولدۇ</translation> <translation>كىيىرگەن جاشىرۇۇن نومۇر قاتاا بولدۇ</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>%1 .</translation> <translation>%1 .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>%1 .</translation> <translation>%1 .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>%1/ %2 </translation> <translation>%1/ %2 </translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>%1/ </translation> <translation>%1/ </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>%1/ </translation> <translation>%1/ </translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation> USB </translation> <translation> USB </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>hours left</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation> .</translation> <translation> .</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation> !</translation> <translation> !</translation>
</message> </message>

View File

@ -15,6 +15,13 @@
<translation type="obsolete">Formato</translation> <translation type="obsolete">Formato</translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<source>Authentication</source>
<translation type="unfinished">Autenticação</translation>
</message>
</context>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
@ -197,6 +204,14 @@
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Acquisition failure</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>

View File

@ -15,6 +15,13 @@
<translation type="obsolete">форма</translation> <translation type="obsolete">форма</translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<source>Authentication</source>
<translation type="unfinished">Аутентификация</translation>
</message>
</context>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
@ -197,6 +204,14 @@
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Acquisition failure</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>

View File

@ -31,159 +31,176 @@
<translation type="obsolete">Ses İzi</translation> <translation type="obsolete">Ses İzi</translation>
</message> </message>
</context> </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> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>Kimlik Doğrulama</translation> <translation>Kimlik Doğrulama</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="118"/>
<location filename="../src/mainwindow.cpp" line="783"/> <source>Close</source>
<location filename="../src/mainwindow.cpp" line="787"/>
<location filename="../src/mainwindow.cpp" line="791"/>
<source>Account locked,</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="277"/>
<source>days left</source> <source>Acquisition failure</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> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <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> <source>Password cannot be empty</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -206,8 +223,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>Biyometrik</translation> <translation>Biyometrik</translation>
</message> </message>
@ -257,13 +274,13 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>İptal</translation> <translation>İptal</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>Kimlik Doğrulaması</translation> <translation>Kimlik Doğrulaması</translation>
</message> </message>
@ -277,7 +294,7 @@
<translation type="obsolete">Kimlik Doğrulaması</translation> <translation type="obsolete">Kimlik Doğrulaması</translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </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> <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>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation type="unfinished">Parola </translation> <translation type="unfinished">Parola </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation type="unfinished">_Parola </translation> <translation type="unfinished">_Parola </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation type="unfinished">_Parola</translation> <translation type="unfinished">_Parola</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>Kimlik doğrulama başarısız, lütfen tekrar deneyin.</translation> <translation>Kimlik doğrulama başarısız, lütfen tekrar deneyin.</translation>
</message> </message>
@ -317,17 +334,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <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> <translation>Başka bir hesap zaten kimlik doğrulaması yapıyor, lütfen daha sonra tekrar deneyin.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>Kimlik doğrulama hatalı, lütfen tekrar deneyin.</translation> <translation>Kimlik doğrulama hatalı, lütfen tekrar deneyin.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished">راستىنى دەلىللەش</translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation>راستىنى دەلىللەش</translation> <translation>راستىنى دەلىللەش</translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>بىئولەگىيەلىك ئالاھىدىلىكنى ئىشلىتىش</translation> <translation>بىئولەگىيەلىك ئالاھىدىلىكنى ئىشلىتىش</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation>ئەمەلدىن قالدۇرۇش</translation> <translation>ئەمەلدىن قالدۇرۇش</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation>ھوقۇق بېرىش</translation> <translation>ھوقۇق بېرىش</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>مەخپىي نومۇر ئىشلىتىش ئارقىلىق دەلىللەش</translation> <translation>مەخپىي نومۇر ئىشلىتىش ئارقىلىق دەلىللەش</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>٪1 مىنۇت ئىچىدە قايتا سىناپ بېقىڭ.</translation> <translation>٪1 مىنۇت ئىچىدە قايتا سىناپ بېقىڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>٪1 سېكۇنت ئىچىدە قايتا سىناپ بېقىڭ.</translation> <translation>٪1 سېكۇنت ئىچىدە قايتا سىناپ بېقىڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ.</translation> <translation>ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ</translation> <translation>مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ</translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>٪1 نى دەلىللەش مەغلۇپ بولدى، سىزدە يەنىلا ٪2 دەلىللەش پۇرسىتى بار</translation> <translation>٪1 نى دەلىللەش مەغلۇپ بولدى، سىزدە يەنىلا ٪2 دەلىللەش پۇرسىتى بار</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation>مەخپىي نومۇر </translation> <translation>مەخپىي نومۇر </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation>مەخپىي نومۇرىڭىزنى كىرگۈزۈڭ ياكى بارماق ئىزىڭىزنى تونۇتۇڭ </translation> <translation>مەخپىي نومۇرىڭىزنى كىرگۈزۈڭ ياكى بارماق ئىزىڭىزنى تونۇتۇڭ </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>بىنورمال تور</translation> <translation>بىنورمال تور</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation>بۇ مەشغۇلات باشقۇرغۇچىنىڭ ھوقۇق بېرىشىنى تەلەپ قىلىدۇ.مەخپىي نومۇرنى كىرگۈزۈپ بي قېتىمقى مەشغۇلاتنىڭ ئېلىپ بېرىلىشىغا يول قويۇڭ.</translation> <translation>بۇ مەشغۇلات باشقۇرغۇچىنىڭ ھوقۇق بېرىشىنى تەلەپ قىلىدۇ.مەخپىي نومۇرنى كىرگۈزۈپ بي قېتىمقى مەشغۇلاتنىڭ ئېلىپ بېرىلىشىغا يول قويۇڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation>مەخپىي نومۇر </translation> <translation>مەخپىي نومۇر </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation>مەخپىي نومۇر</translation> <translation>مەخپىي نومۇر</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ</translation> <translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation>1 كۈندىن كېيىن سىناب بېقىڭ</translation> <translation>1 كۈندىن كېيىن سىناب بېقىڭ</translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>٪1 نى دەلىللەش مەغلۇپ بولدى، مەخپى نۇمۇر كىرگۈزۈڭ</translation> <translation>٪1 نى دەلىللەش مەغلۇپ بولدى، مەخپى نۇمۇر كىرگۈزۈڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>٪1 نى دەلىللەشكە ئامالسىز، مەخپىي نومۇرنى كىرگۈزۈپ قۇلۇپنى ئېچىڭ</translation> <translation>٪1 نى دەلىللەشكە ئامالسىز، مەخپىي نومۇرنى كىرگۈزۈپ قۇلۇپنى ئېچىڭ</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation>بىر پروگرامما ئىمتىياز تەلەپ قىلىدىغان ھەرىكەتنى قىلىشقا ئۇرۇنماقتا. بۇ ھەرىكەتنى ئىجرا قىلىش ئۈچۈن ھوقۇق تەلەپ قىلىدۇ.</translation> <translation>بىر پروگرامما ئىمتىياز تەلەپ قىلىدىغان ھەرىكەتنى قىلىشقا ئۇرۇنماقتا. بۇ ھەرىكەتنى ئىجرا قىلىش ئۈچۈن ھوقۇق تەلەپ قىلىدۇ.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation>ئىم كىرگۈزۈش</translation> <translation>ئىم كىرگۈزۈش</translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>ukey نى USB ئېغىزىغا چېتىپ قويۇڭ</translation> <translation>ukey نى USB ئېغىزىغا چېتىپ قويۇڭ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation>ukey مەخپىي نومۇرىنى كىرگۈزۈڭ</translation> <translation>ukey مەخپىي نومۇرىنى كىرگۈزۈڭ</translation>
</message> </message>
<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> <source>hours left</source>
<translation>بىر سائەتتىن كېيىن ئېچىلىدۇ</translation> <translation>بىر سائەتتىن كېيىن ئېچىلىدۇ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation>بىر مىنۇتتىن كېيىن ئېچىلىدۇ</translation> <translation>بىر مىنۇتتىن كېيىن ئېچىلىدۇ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation>بىر سېكۇنتتىن كېيىن ئېچىلىدۇ</translation> <translation>بىر سېكۇنتتىن كېيىن ئېچىلىدۇ</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation>مەخپىي نومۇرنى كىرگۈزۈپ كىملىك دەلىللەش.</translation> <translation>مەخپىي نومۇرنى كىرگۈزۈپ كىملىك دەلىللەش.</translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation>چىراي تونۇشنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation> <translation>چىراي تونۇشنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation>بارماق ئىزىنى بېسىش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation> <translation>بارماق ئىزىنى بېسىش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation>ئاۋاز ئىزىنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation> <translation>ئاۋاز ئىزىنى دەلىللەش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation>بارماق ئىزى ئارقىلىق ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation> <translation>بارماق ئىزى ئارقىلىق ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation>Iris نى ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation> <translation>Iris نى ئېنىقلاش ياكى مەخپىي نومۇر كىرگۈزۈش ئارقىلىق قۇلۇپ ئېچىش</translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>باغلانغان ئۈندىدارنى سىكاننېرلاش كودى ياكى مەخپىي نومۇرىنى كىرگۈزۈپ قۇلۇپ ئېچىش</translation> <translation>باغلانغان ئۈندىدارنى سىكاننېرلاش كودى ياكى مەخپىي نومۇرىنى كىرگۈزۈپ قۇلۇپ ئېچىش</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation>ئىشلىتىش نومۇرىڭىز قۇلۇپلىنىپ قالدى</translation> <translation>ئىشلىتىش نومۇرىڭىز قۇلۇپلىنىپ قالدى</translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation>يەنە بىر خېرىدار دەلىللەۋاتىدۇ، سەل تۇرۇپ قايتا سىناڭ.</translation> <translation>يەنە بىر خېرىدار دەلىللەۋاتىدۇ، سەل تۇرۇپ قايتا سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ.</translation> <translation>دەلىللەش مەغلۇپ بولدى، قايتا سىناڭ.</translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation>كىرگۈزگەن مەخپىي نومۇر خاتا بولدى</translation> <translation>كىرگۈزگەن مەخپىي نومۇر خاتا بولدى</translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation></translation> <translation></translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>%1%2</translation> <translation>%1%2</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation></translation> <translation></translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>USB端口</translation> <translation>USB端口</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>hours left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation></translation> <translation></translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -51,6 +51,14 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>FullScreenBackground</name>
<message>
<location filename="../src/fullscreenbackground.cpp" line="89"/>
<source>Authentication</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>LoginOptionsWidget</name> <name>LoginOptionsWidget</name>
<message> <message>
@ -65,7 +73,7 @@
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../src/mainwindow.cpp" line="66"/> <location filename="../src/mainwindow.cpp" line="71"/>
<source>Authentication</source> <source>Authentication</source>
<translation></translation> <translation></translation>
</message> </message>
@ -92,8 +100,8 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="409"/> <location filename="../src/mainwindow.ui" line="409"/>
<location filename="../src/mainwindow.cpp" line="1075"/> <location filename="../src/mainwindow.cpp" line="1120"/>
<location filename="../src/mainwindow.cpp" line="1143"/> <location filename="../src/mainwindow.cpp" line="1189"/>
<source>Biometric</source> <source>Biometric</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -148,19 +156,18 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="441"/> <location filename="../src/mainwindow.ui" line="441"/>
<location filename="../src/mainwindow.cpp" line="1077"/> <location filename="../src/mainwindow.cpp" line="1122"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="460"/> <location filename="../src/mainwindow.ui" line="460"/>
<location filename="../src/mainwindow.cpp" line="1073"/> <location filename="../src/mainwindow.cpp" line="1118"/>
<source>Authenticate</source> <source>Authenticate</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1079"/> <location filename="../src/mainwindow.cpp" line="1124"/>
<location filename="../src/mainwindow.cpp" line="1183"/>
<source>Use password</source> <source>Use password</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -185,30 +192,30 @@
<translation type="vanished">...</translation> <translation type="vanished">...</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1219"/> <location filename="../src/mainwindow.cpp" line="1264"/>
<location filename="../src/mainwindow.cpp" line="1292"/> <location filename="../src/mainwindow.cpp" line="1342"/>
<location filename="../src/mainwindow.cpp" line="1293"/> <location filename="../src/mainwindow.cpp" line="1343"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1230"/> <location filename="../src/mainwindow.cpp" line="1276"/>
<location filename="../src/mainwindow.cpp" line="1302"/> <location filename="../src/mainwindow.cpp" line="1354"/>
<location filename="../src/mainwindow.cpp" line="1303"/> <location filename="../src/mainwindow.cpp" line="1355"/>
<source>Please try again in %1 seconds.</source> <source>Please try again in %1 seconds.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1240"/> <location filename="../src/mainwindow.cpp" line="1287"/>
<location filename="../src/mainwindow.cpp" line="1241"/> <location filename="../src/mainwindow.cpp" line="1288"/>
<location filename="../src/mainwindow.cpp" line="1311"/> <location filename="../src/mainwindow.cpp" line="1365"/>
<location filename="../src/mainwindow.cpp" line="1312"/> <location filename="../src/mainwindow.cpp" line="1366"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="834"/> <location filename="../src/mainwindow.cpp" line="887"/>
<location filename="../src/mainwindow.cpp" line="835"/> <location filename="../src/mainwindow.cpp" line="888"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -221,8 +228,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="242"/> <location filename="../src/mainwindow.cpp" line="256"/>
<location filename="../src/mainwindow.cpp" line="246"/> <location filename="../src/mainwindow.cpp" line="260"/>
<source>Failed to verify %1, you still have %2 verification opportunities</source> <source>Failed to verify %1, you still have %2 verification opportunities</source>
<translation>%1%2</translation> <translation>%1%2</translation>
</message> </message>
@ -231,42 +238,42 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="731"/> <location filename="../src/mainwindow.cpp" line="781"/>
<source>Password: </source> <source>Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<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> <source>Please enter your password or enroll your fingerprint </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="259"/> <location filename="../src/mainwindow.cpp" line="273"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="665"/> <location filename="../src/mainwindow.cpp" line="716"/>
<source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source> <source>This operation requires the administrator&apos;s authorization. Please enter your password to allow this operation.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="733"/> <location filename="../src/mainwindow.cpp" line="783"/>
<source>_Password: </source> <source>_Password: </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="735"/> <location filename="../src/mainwindow.cpp" line="785"/>
<source>_Password:</source> <source>_Password:</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="850"/> <location filename="../src/mainwindow.cpp" line="903"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<source>days left</source> <source>days left</source>
<translation></translation> <translation></translation>
</message> </message>
@ -279,16 +286,16 @@
<translation type="vanished">/%1</translation> <translation type="vanished">/%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="226"/> <location filename="../src/mainwindow.cpp" line="237"/>
<location filename="../src/mainwindow.cpp" line="1415"/> <location filename="../src/mainwindow.cpp" line="1492"/>
<location filename="../src/mainwindow.cpp" line="1417"/> <location filename="../src/mainwindow.cpp" line="1495"/>
<source>Failed to verify %1, please enter password to unlock</source> <source>Failed to verify %1, please enter password to unlock</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="231"/> <location filename="../src/mainwindow.cpp" line="243"/>
<location filename="../src/mainwindow.cpp" line="233"/> <location filename="../src/mainwindow.cpp" line="246"/>
<location filename="../src/mainwindow.cpp" line="1419"/> <location filename="../src/mainwindow.cpp" line="1498"/>
<source>Unable to verify %1, please enter password to unlock</source> <source>Unable to verify %1, please enter password to unlock</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
@ -297,74 +304,84 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<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> <source>A program is attempting to perform an action that requires privileges.It requires authorization to perform the action.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="108"/> <location filename="../src/mainwindow.cpp" line="113"/>
<location filename="../src/mainwindow.cpp" line="729"/> <location filename="../src/mainwindow.cpp" line="779"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Insert the ukey into the USB port</source>
<translation>USB埠</translation> <translation>USB埠</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="107"/> <location filename="../src/mainwindow.cpp" line="112"/>
<source>Enter the ukey password</source> <source>Enter the ukey password</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>hours left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<source>minutes left</source> <source>minutes left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>seconds left</source> <source>seconds left</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="880"/> <location filename="../src/mainwindow.cpp" line="933"/>
<location filename="../src/mainwindow.cpp" line="888"/> <location filename="../src/mainwindow.cpp" line="941"/>
<source>Input your password to authentication</source> <source>Input your password to authentication</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify face recognition or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Press fingerprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify voiceprint or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify finger vein or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Verify iris or enter password to unlock</source>
<translation></translation> <translation></translation>
</message> </message>
<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> <source>Use the bound wechat scanning code or enter the password to unlock</source>
<translation>使</translation> <translation>使</translation>
</message> </message>
@ -373,10 +390,10 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="779"/> <location filename="../src/mainwindow.cpp" line="834"/>
<location filename="../src/mainwindow.cpp" line="783"/> <location filename="../src/mainwindow.cpp" line="837"/>
<location filename="../src/mainwindow.cpp" line="787"/> <location filename="../src/mainwindow.cpp" line="840"/>
<location filename="../src/mainwindow.cpp" line="791"/> <location filename="../src/mainwindow.cpp" line="843"/>
<source>Account locked,</source> <source>Account locked,</source>
<translation></translation> <translation></translation>
</message> </message>
@ -388,17 +405,17 @@
<context> <context>
<name>PolkitListener</name> <name>PolkitListener</name>
<message> <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> <source>Another client is already authenticating, please try again later.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="265"/> <location filename="../src/PolkitListener.cpp" line="253"/>
<source>Authentication failure, please try again.</source> <source>Authentication failure, please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/PolkitListener.cpp" line="272"/> <location filename="../src/PolkitListener.cpp" line="259"/>
<source>Password input error!</source> <source>Password input error!</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -31,28 +31,21 @@
#include <QApplication> #include <QApplication>
#include <QScreen> #include <QScreen>
#include <fcntl.h> #include <fcntl.h>
#include <kysdk/kysdk-system/libkysysinfo.h>
#include "PolkitListener.h" #include "PolkitListener.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "generic.h" #include "generic.h"
#include <libkysysinfo.h> #include <libkysysinfo.h>
#include "windowmanager/windowmanager.h"
PolkitListener::PolkitListener(QObject *parent) PolkitListener::PolkitListener(QObject *parent)
: Listener(parent), : Listener(parent), inProgress(false), currentIdentity(0), m_managerFullScreen(nullptr)
inProgress(false),
currentIdentity(0),
mainWindow(nullptr)
{ {
m_isSupportTableMode = isSupportTableMode(); m_isSupportTableMode = isSupportTableMode();
m_isMavis = isMavis(); m_isMavis = isMavis();
qDebug()<<"isSupportTableMode:"<<m_isSupportTableMode; qDebug() << "isSupportTableMode:" << m_isSupportTableMode;
} }
PolkitListener::~PolkitListener() PolkitListener::~PolkitListener() {}
{
}
bool PolkitListener::isMavis() bool PolkitListener::isMavis()
{ {
@ -81,12 +74,15 @@ bool PolkitListener::isSupportTableMode()
/* initiateAuthentication message from polkit */ /* initiateAuthentication message from polkit */
void PolkitListener::initiateAuthentication( void PolkitListener::initiateAuthentication(
const QString &actionId, const QString &message, const QString &actionId,
const QString &iconName, const PolkitQt1::Details &details, const QString &message,
const QString &cookie, const PolkitQt1::Identity::List &identities, const QString &iconName,
const PolkitQt1::Details &details,
const QString &cookie,
const PolkitQt1::Identity::List &identities,
PolkitQt1::Agent::AsyncResult *result) PolkitQt1::Agent::AsyncResult *result)
{ {
if(inProgress){ if (inProgress) {
result->setError(tr("Another client is already authenticating, please try again later.")); result->setError(tr("Another client is already authenticating, please try again later."));
result->setCompleted(); result->setCompleted();
qDebug() << "Another client is already authenticating, please try again later."; qDebug() << "Another client is already authenticating, please try again later.";
@ -107,13 +103,13 @@ void PolkitListener::initiateAuthentication(
subjectPid = details.lookup("polkit.subject-pid"); subjectPid = details.lookup("polkit.subject-pid");
callerPid = details.lookup("polkit.caller-pid"); callerPid = details.lookup("polkit.caller-pid");
implicitActiveStr = details.lookup("implicit_authorization");
/* find action description for actionId */ /* find action description for actionId */
foreach(const PolkitQt1::ActionDescription &desc, foreach (const PolkitQt1::ActionDescription &desc, PolkitQt1::Authority::instance()->enumerateActionsSync()) {
PolkitQt1::Authority::instance()->enumerateActionsSync()) {
if (actionId == desc.actionId()) { if (actionId == desc.actionId()) {
actionDesc = desc; actionDesc = desc;
qDebug() << "Action description has been found" ; qDebug() << "Action description has been found";
break; break;
} }
} }
@ -135,117 +131,103 @@ void PolkitListener::initiateAuthentication(
this->result = result; this->result = result;
session.clear(); session.clear();
if (identities.length() == 1) { if (identities.length() == 1) {
this->currentIdentity = identities[0]; this->currentIdentity = identities[0];
} else { } else {
currentIdentity = identities[0]; currentIdentity = identities[0];
} }
/* Create the polkit window */ /* Create the polkit window */
mainWindow = new MainWindow; m_managerFullScreen = new FullScreenBackground();
// MotifWmHints hints; m_managerFullScreen->initMainWindow(
// hints.flags = MWM_HINTS_FUNCTIONS|MWM_HINTS_DECORATIONS; iconName, message, usersList, subjectPid, callerPid, actionDesc, m_isMavis, m_isSupportTableMode);
// 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();
}
}
if (desScreenGeometry.isEmpty()) { if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
desScreenGeometry = qApp->primaryScreen()->geometry(); connect(m_managerFullScreen->getMainWindow(), &MainWindow::accept, this, &PolkitListener::onResponse);
} connect(m_managerFullScreen->getMainWindow(), &MainWindow::canceled, this, [&] {
// mainWindow->move(desScreenGeometry.x() + (desScreenGeometry.width() - mainWindow->width())/2, if (inProgress && !gainedAuthorization) {
// desScreenGeometry.y() + (desScreenGeometry.height() - mainWindow->height())/2); wasCancelled = true;
// qDebug()<<"MoveWindow to center1:"<<desScreenGeometry<<","<<mainWindow->geometry()<<QGuiApplication::platformName();; unacknowledged_messages = false;
if (!session.isNull()) {
session.data()->cancel();
}
connect(mainWindow, &MainWindow::accept, this, &PolkitListener::onResponse); finishObtainPrivilege();
connect(mainWindow, &MainWindow::canceled, this, [&]{
wasCancelled = true;
unacknowledged_messages = false;
if(!session.isNull()) {
session.data()->cancel();
}
});
connect(mainWindow, &MainWindow::switchToBiometric, this, [&]{
wasSwitchToBiometric = true;
startAuthentication();
});
connect(mainWindow, &MainWindow::restartAuth, this, [&]{
startAuthentication();
});
connect(mainWindow, &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) {
this->currentIdentity = this->identities.at(i);
numTries = 0;
startAuthentication();
break;
} }
});
connect(m_managerFullScreen->getMainWindow(), &MainWindow::switchToBiometric, this, [&] {
wasSwitchToBiometric = true;
startAuthentication();
});
connect(m_managerFullScreen->getMainWindow(), &MainWindow::yesPrompted, this, [=] {
result->setCompleted();
this->gainedAuthorization = true;
finishObtainPrivilege();
});
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) {
this->currentIdentity = this->identities.at(i);
numTries = 0;
startAuthentication();
break;
}
}
});
numTries = 0;
wasCancelled = false;
wasSwitchToBiometric = false;
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;
} }
});
numTries = 0;
wasCancelled = false;
wasSwitchToBiometric = false;
mainWindow->userChanged(usersList.at(0));
m_managerFullScreen->getMainWindow()->userChanged(usersList.at(0));
}
} }
static static int get_pam_tally(int *deny, int *unlock_time)
int get_pam_tally(int *deny, int *unlock_time)
{ {
char buf[128]; char buf[128];
FILE *auth_file; FILE *auth_file = NULL;
if( (auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL) if ((auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL)
return -1; return -1;
while(fgets(buf, sizeof(buf), auth_file)) { while (fgets(buf, sizeof(buf), auth_file)) {
if(strlen(buf) == 0 || buf[0] == '#') if (strlen(buf) == 0 || buf[0] == '#')
continue; continue;
if(!strstr(buf, "deny")) if (!strstr(buf, "deny"))
continue; continue;
char *ptr = strtok(buf, " \t"); char *ptr = strtok(buf, " \t");
while(ptr) { while (ptr) {
if(strncmp(ptr, "deny=", 5)==0){ if (strncmp(ptr, "deny=", 5) == 0) {
sscanf(ptr, "deny=%d", deny); sscanf(ptr, "deny=%d", deny);
//gs_debug("-------------------- deny=%d", *deny); // gs_debug("-------------------- deny=%d", *deny);
} }
if(strncmp(ptr, "unlock_time=", 12)==0){ if (strncmp(ptr, "unlock_time=", 12) == 0) {
sscanf(ptr, "unlock_time=%d", unlock_time); sscanf(ptr, "unlock_time=%d", unlock_time);
//gs_debug("-------------------- unlock_time=%d", *unlock_time); // gs_debug("-------------------- unlock_time=%d", *unlock_time);
} }
ptr = strtok(NULL, " \t"); ptr = strtok(NULL, " \t");
} }
fclose(auth_file);
auth_file = NULL;
return 1; return 1;
} }
fclose(auth_file);
auth_file = NULL;
return 0; return 0;
} }
@ -253,54 +235,59 @@ void PolkitListener::finishObtainPrivilege()
{ {
/* Number of tries increase only when some user is selected */ /* Number of tries increase only when some user is selected */
if (currentIdentity.isValid()) { if (currentIdentity.isValid()) {
numTries++; numTries++;
} }
qDebug().noquote() << QString("Finishing obtaining " qDebug().noquote() << QString("Finishing obtaining "
"privileges (G:%1, C:%2, D:%3).") "privileges (G:%1, C:%2, D:%3).")
.arg(gainedAuthorization) .arg(gainedAuthorization)
.arg(wasCancelled) .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; 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 (!get_pam_tally(&deny, &unlock_time) || (deny == 0 && unlock_time == 0)) {
//if(!wasSwitchToBiometric){ // if(!wasSwitchToBiometric){
if (!unacknowledged_messages) 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; startAuthentication();
}
else {
if (!unacknowledged_messages) {
mainWindow->setAuthResult(gainedAuthorization, tr("Password input error!"));
}
startAuthentication();
return;
}
startAuthentication();
return; return;
} else {
if (!unacknowledged_messages) {
m_managerFullScreen->getMainWindow()->setAuthResult(gainedAuthorization, tr("Password input error!"));
}
startAuthentication();
return;
}
startAuthentication();
return;
} }
if (mainWindow) { if (m_managerFullScreen) {
mainWindow->hide(); m_managerFullScreen->closeDialog();
mainWindow->stopDoubleAuth(); m_managerFullScreen->deleteLater();
mainWindow->close(); m_managerFullScreen = nullptr;
mainWindow->deleteLater(); }
mainWindow = NULL;
if ((implicitActiveStr == "yes_prompt") && wasCancelled) {
result->setError("polkit-ukui-authentication-agent-1 cancel");
} }
if (!session.isNull()) { if (!session.isNull()) {
session.data()->result()->setCompleted(); session.data()->result()->setCompleted();
session.data()->deleteLater();
session.clear();
} else { } else {
result->setCompleted(); result->setCompleted();
} }
session.data()->deleteLater();
this->inProgress = false; this->inProgress = false;
implicitActiveStr = "";
qDebug() << "Finish obtain authorization:" << gainedAuthorization; qDebug() << "Finish obtain authorization:" << gainedAuthorization;
gainedAuthorization = false;
} }
void establishToBioPAM() void establishToBioPAM()
@ -308,12 +295,12 @@ void establishToBioPAM()
FILE *file; FILE *file;
const char *data = "polkit-ukui-authentication-agent-1"; const char *data = "polkit-ukui-authentication-agent-1";
if( (file = fopen(BIO_COM_FILE, "w")) == NULL){ if ((file = fopen(BIO_COM_FILE, "w")) == NULL) {
qWarning() << "open communication file failed: " << strerror(errno); qWarning() << "open communication file failed: " << strerror(errno);
return; return;
} }
if(fputs(data, file) == EOF) { if (fputs(data, file) == EOF) {
qWarning() << "write to communication file error: " << strerror(errno); qWarning() << "write to communication file error: " << strerror(errno);
} }
fclose(file); fclose(file);
@ -323,7 +310,7 @@ void PolkitListener::startAuthentication()
{ {
qDebug() << "start authenticate user " << currentIdentity.toString(); qDebug() << "start authenticate user " << currentIdentity.toString();
unacknowledged_messages = false; unacknowledged_messages = false;
if(!session.isNull()) { if (!session.isNull()) {
session.data()->deleteLater(); session.data()->deleteLater();
} }
@ -332,92 +319,61 @@ void PolkitListener::startAuthentication()
establishToBioPAM(); establishToBioPAM();
session = new Session(currentIdentity, cookie, result); session = new Session(currentIdentity, cookie, result);
connect(session.data(), SIGNAL(request(QString, bool)), this, connect(session.data(), SIGNAL(request(QString, bool)), this, SLOT(onShowPrompt(QString, bool)));
SLOT(onShowPrompt(QString,bool))); connect(session.data(), SIGNAL(completed(bool)), this, SLOT(onAuthCompleted(bool)));
connect(session.data(), SIGNAL(completed(bool)), this, connect(session.data(), SIGNAL(showError(QString)), this, SLOT(onShowError(QString)));
SLOT(onAuthCompleted(bool))); connect(session.data(), SIGNAL(showInfo(QString)), this, SLOT(onShowError(QString)));
connect(session.data(), SIGNAL(showError(QString)), this, session.data()->initiate();
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) void PolkitListener::onShowPrompt(const QString &prompt, bool echo)
{ {
qDebug() << "Prompt: " << prompt << "echo: " << echo; qDebug() << "Prompt: " << prompt << "echo: " << echo;
if (!m_managerFullScreen || !m_managerFullScreen->getMainWindow()) {
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请求的时候再显示
return; 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; unacknowledged_messages = false;
mainWindow->switchAuthMode(MainWindow::PASSWORD); m_managerFullScreen->getMainWindow()->switchAuthMode(MainWindow::PASSWORD);
mainWindow->setPrompt(prompt, echo); 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错误就onShowErroronShowInfo两类 //目前返回的pam错误就onShowErroronShowInfo两类
void PolkitListener::onShowError(const QString &text) void PolkitListener::onShowError(const QString &text)
{ {
qDebug() << "[Polkit]:" << "Error:" << text; qDebug() << "[Polkit]:"
<< "Error:" << text;
unacknowledged_messages = true; unacknowledged_messages = true;
if(mainWindow){ if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
QString strText = mainWindow->check_is_pam_message(text); QString strText = m_managerFullScreen->getMainWindow()->check_is_pam_message(text);
mainWindow->setMessage(strText); m_managerFullScreen->getMainWindow()->setMessage(strText);
} }
} }
void PolkitListener::onShowInfo(const QString &text) void PolkitListener::onShowInfo(const QString &text)
{ {
qDebug() << "[Polkit]:" << "Info:" << text; qDebug() << "[Polkit]:"
<< "Info:" << text;
unacknowledged_messages = true; unacknowledged_messages = true;
if(mainWindow){ if (m_managerFullScreen && m_managerFullScreen->getMainWindow()) {
QString strText = mainWindow->check_is_pam_message(text); QString strText = m_managerFullScreen->getMainWindow()->check_is_pam_message(text);
mainWindow->setMessage(strText); m_managerFullScreen->getMainWindow()->setMessage(strText);
} }
} }

View File

@ -22,45 +22,47 @@
#include <QPointer> #include <QPointer>
#include "mainwindow.h" #include "mainwindow.h"
#include "fullscreenbackground.h"
using namespace PolkitQt1::Agent; using namespace PolkitQt1::Agent;
class PolkitListener : public Listener class PolkitListener : public Listener
{ {
Q_OBJECT Q_OBJECT
public: public:
PolkitListener(QObject *parent = 0); PolkitListener(QObject *parent = 0);
virtual ~PolkitListener(); virtual ~PolkitListener();
private: private:
bool isSupportTableMode(); bool isSupportTableMode();
bool isMavis(); bool isMavis();
public slots: public slots:
void initiateAuthentication(const QString &actionId, void initiateAuthentication(
const QString &message, const QString &actionId,
const QString &iconName, const QString &message,
const PolkitQt1::Details &details, const QString &iconName,
const QString &cookie, const PolkitQt1::Details &details,
const PolkitQt1::Identity::List &identities, const QString &cookie,
PolkitQt1::Agent::AsyncResult *result); const PolkitQt1::Identity::List &identities,
bool initiateAuthenticationFinish(); PolkitQt1::Agent::AsyncResult *result);
void cancelAuthentication(); bool initiateAuthenticationFinish();
void finishObtainPrivilege(); void cancelAuthentication();
void finishObtainPrivilege();
private: private:
bool gainedAuthorization; bool gainedAuthorization = false;
bool wasCancelled; bool wasCancelled = false;
bool wasSwitchToBiometric; bool wasSwitchToBiometric = false;
bool inProgress; bool inProgress;
int numTries; int numTries;
QString implicitActiveStr;
QPointer<Session> session; QPointer<Session> session;
PolkitQt1::Identity::List identities; PolkitQt1::Identity::List identities;
PolkitQt1::Identity currentIdentity; PolkitQt1::Identity currentIdentity;
PolkitQt1::Agent::AsyncResult *result; PolkitQt1::Agent::AsyncResult *result;
QString cookie; QString cookie;
MainWindow *mainWindow; FullScreenBackground *m_managerFullScreen;
bool unacknowledged_messages = false; bool unacknowledged_messages = false;
bool m_isSupportTableMode = false; bool m_isSupportTableMode = false;
bool m_isMavis = false; bool m_isMavis = false;

View File

@ -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);
}

View File

@ -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

View File

@ -17,15 +17,12 @@
**/ **/
#include "kalabel.h" #include "kalabel.h"
KALabel::KALabel(QWidget *parent) : QLabel(parent)
KALabel::KALabel(QWidget *parent)
: QLabel(parent)
{ {
m_strText = ""; m_strText = "";
} }
KALabel::KALabel(QString strText, QWidget *parent) KALabel::KALabel(QString strText, QWidget *parent) : QLabel(strText, parent)
: QLabel(strText, parent)
{ {
m_strText = strText; m_strText = strText;
} }
@ -38,7 +35,7 @@ void KALabel::setText(const QString &strText)
void KALabel::paintEvent(QPaintEvent *event) void KALabel::paintEvent(QPaintEvent *event)
{ {
QString strEText = getElidedText(font(), width() ,m_strText); QString strEText = getElidedText(font(), width(), m_strText);
if (strEText != m_strText) { if (strEText != m_strText) {
QLabel::setText(strEText); QLabel::setText(strEText);
setToolTip(m_strText); setToolTip(m_strText);
@ -49,13 +46,12 @@ void KALabel::paintEvent(QPaintEvent *event)
QLabel::paintEvent(event); QLabel::paintEvent(event);
} }
QString KALabel::getElidedText(QFont font,int width,QString strInfo) QString KALabel::getElidedText(QFont font, int width, QString strInfo)
{ {
QFontMetrics fontMetrics(font); QFontMetrics fontMetrics(font);
//如果当前字体下,字符串长度大于指定宽度 //如果当前字体下,字符串长度大于指定宽度
if(fontMetrics.width(strInfo) > width) if (fontMetrics.width(strInfo) > width) {
{ strInfo = QFontMetrics(font).elidedText(strInfo, Qt::ElideRight, width);
strInfo= QFontMetrics(font).elidedText(strInfo, Qt::ElideRight, width);
} }
return strInfo; return strInfo;
} }

View File

@ -26,7 +26,8 @@ class KALabel : public QLabel
public: public:
KALabel(QWidget *parent = nullptr); KALabel(QWidget *parent = nullptr);
KALabel(QString strText, QWidget *parent = nullptr); KALabel(QString strText, QWidget *parent = nullptr);
QString getElidedText(QFont font,int width,QString strInfo); QString getElidedText(QFont font, int width, QString strInfo);
public slots: public slots:
void setText(const QString &); void setText(const QString &);

File diff suppressed because it is too large Load Diff

View File

@ -31,11 +31,14 @@
#include "loginoptionswidget.h" #include "loginoptionswidget.h"
#include "modeButton.h" #include "modeButton.h"
#include "kalabel.h" #include "kalabel.h"
#include <kysdk/applications/kdialog.h>
using namespace kdk;
namespace Ui { namespace Ui {
class MainWindow; class MainWindow;
} }
class MainWindow : public QWidget class MainWindow : public kdk::KDialog
{ {
Q_OBJECT Q_OBJECT
@ -45,17 +48,32 @@ public:
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
enum Mode{UNDEFINED, PASSWORD, BIOMETRIC, DEVICES}; void keyPressEvent(QKeyEvent *event); //屏蔽esc按钮
enum situation{TRUE, ERROR}; enum Mode
{
UNDEFINED,
PASSWORD,
BIOMETRIC,
DEVICES
};
enum situation
{
TRUE,
ERROR
};
void setIcon(const QString &iconName); void setIcon(const QString &iconName);
void setHeader(const QString &text); void setHeader(const QString &text);
void setUsers(const QStringList &usersList); void setUsers(const QStringList &usersList);
void setDetails(const QString &subPid, const QString &callerPid, void setDetails(
const QString &actionId, const QString &actionDesc, const QString &subPid,
const QString vendorName, const QString vendorUrl); const QString &callerPid,
const QString &actionId,
const QString &actionDesc,
const QString vendorName,
const QString vendorUrl);
void setPrompt(const QString &text, bool echo); void setPrompt(const QString &text, bool echo);
void setMessage(const QString &text,situation situat = ERROR); void setMessage(const QString &text, situation situat = ERROR);
void setAuthResult(bool result, const QString &text=""); void setAuthResult(bool result, const QString &text = "");
void clearEdit(); void clearEdit();
void switchAuthMode(Mode mode); void switchAuthMode(Mode mode);
void setDoubleAuth(bool val); void setDoubleAuth(bool val);
@ -69,7 +87,7 @@ public:
void stopLoadingUkey(); void stopLoadingUkey();
void updateLoadingPixmap(); void updateLoadingPixmap();
private: private:
uid_t getUid(const QString &userName); uid_t getUid(const QString &userName);
void setMovie(); void setMovie();
void setPixmap(); void setPixmap();
@ -77,7 +95,6 @@ private:
void switchWidget(Mode mode); void switchWidget(Mode mode);
int enable_biometric_authentication(); int enable_biometric_authentication();
void root_unlock_countdown(); void root_unlock_countdown();
void unlock_countdown(); void unlock_countdown();
void editIcon(); void editIcon();
@ -85,10 +102,12 @@ private:
void setMavisSheel(); void setMavisSheel();
void updatePixmap(); void updatePixmap();
void setBiometricAuthDisabledStatus(bool locked);
public slots: public slots:
void onUpdateBioAuthMsg(QString strMsg); void onUpdateBioAuthMsg(QString strMsg);
void onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize); void onUpdateWndSize(unsigned uLoginOptType, unsigned uLoginOptSize);
void onShowYesPrompt();
private slots: private slots:
void on_btnDetails_clicked(); void on_btnDetails_clicked();
void on_lePassword_returnPressed(); void on_lePassword_returnPressed();
@ -112,10 +131,11 @@ signals:
void switchToBiometric(); void switchToBiometric();
void userChanged(const QString &userName); void userChanged(const QString &userName);
void restartAuth(); void restartAuth();
void yesPrompted();
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
Users *users; Users *users;
QString userName; QString userName;
bool enableBioAuth; bool enableBioAuth;
bool receiveBioPAM; bool receiveBioPAM;
@ -124,25 +144,25 @@ private:
bool isFirst; bool isFirst;
bool useDoubleAuth; bool useDoubleAuth;
bool isbioSuccess; bool isbioSuccess;
QMap<qint32,QMap<int,int>> m_failMap; QMap<qint32, QMap<int, int>> m_failMap;
int maxFailedTimes; int maxFailedTimes;
bool isHiddenSwitchButton; bool isHiddenSwitchButton;
ModeButton *m_modeButton; ModeButton *m_modeButton;
QIcon modeIcon; QIcon modeIcon;
bool pwdShow = false; bool pwdShow = false;
bool isHover = false; bool isHover = false;
//ukey优先级比密码低该变量用于判断是否第一次认证并选中密码 // ukey优先级比密码低该变量用于判断是否第一次认证并选中密码
bool isFirstAuth = true; bool isFirstAuth = true;
QTimer *m_timer; QTimer *m_timer;
//const DeviceInfo *device = NULL; // const DeviceInfo *device = NULL;
bool isLockingFlg; //判断当前是否正在锁定倒计时 bool isLockingFlg; //判断当前是否正在锁定倒计时
int m_nCurLockMin; //当前锁定的分钟数 int m_nCurLockMin; //当前锁定的分钟数
// 登录选项 // 登录选项
KALabel *m_labelTip = nullptr; KALabel *m_labelTip = nullptr;
LoginOptionsWidget *m_loginOptsWidget = nullptr; LoginOptionsWidget *m_loginOptsWidget = nullptr;
unsigned m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD; // 当前登录验证方式 unsigned m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD; // 当前登录验证方式
QString m_strLoginTypeTip = ""; QString m_strLoginTypeTip = "";
QTimer *m_bioTimer = nullptr; QTimer *m_bioTimer = nullptr;
DeviceInfoPtr m_deviceInfo = nullptr; DeviceInfoPtr m_deviceInfo = nullptr;
@ -153,7 +173,7 @@ private:
QLabel *titleLabel; QLabel *titleLabel;
QPushButton *closeBtn; QPushButton *closeBtn;
QGSettings *settings; QGSettings *settings;
int fontSize; int fontSize;
QString app_IconName; QString app_IconName;
@ -165,9 +185,11 @@ private:
QTimer *w_timer; QTimer *w_timer;
QPixmap m_waitingPixmap; QPixmap m_waitingPixmap;
QTimer *m_loadingTimer = nullptr; QTimer *m_loadingTimer = nullptr;
QPixmap m_loadingPixmap; QPixmap m_loadingPixmap;
bool isLoadingUkey = false; bool isLoadingUkey = false;
bool doNotNeedAuth = false;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -37,7 +37,7 @@ public:
bool isShowPwd(); bool isShowPwd();
protected: protected:
bool eventFilter(QObject *obj, QEvent *event) override; //事件过滤 bool eventFilter(QObject *obj, QEvent *event) override; //事件过滤
private: private:
void initStyleTheme(); void initStyleTheme();

View File

@ -111,7 +111,7 @@ int get_is_open_other_authentication()
int get_pam_tally(int *deny, int *unlock_time , int *root_unlock_time) int get_pam_tally(int *deny, int *unlock_time , int *root_unlock_time)
{ {
char buf[128]; char buf[128];
FILE *auth_file; FILE *auth_file = NULL;
if( (auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL) if( (auth_file = fopen("/etc/pam.d/common-auth", "r")) == NULL)
return -1; return -1;
@ -138,8 +138,12 @@ int get_pam_tally(int *deny, int *unlock_time , int *root_unlock_time)
} }
ptr = strtok(NULL, " \t"); ptr = strtok(NULL, " \t");
} }
fclose(auth_file);
auth_file = NULL;
return 1; return 1;
} }
fclose(auth_file);
auth_file = NULL;
return 0; return 0;
} }
@ -389,15 +393,15 @@ void get_tally(uid_t uid, int *tfile, struct tallylog *tally)
int pam_tally_unlock_time_left(int uid, int *fail_cnt,int *left_time, int *deny, int *fail_time, int *unlock_time1) int pam_tally_unlock_time_left(int uid, int *fail_cnt,int *left_time, int *deny, int *fail_time, int *unlock_time1)
{ {
pam_tally *tally_ptr; pam_tally *tally_ptr;
if((tally_ptr = pam_tally_memory()) == NULL) if((tally_ptr = pam_tally_memory()) == NULL)
return 0; return 0;
int unlock_time = tally_ptr->unlock_time; int unlock_time = tally_ptr->unlock_time;
*deny = tally_ptr->deny; *deny = tally_ptr->deny;
if(unlock_time == 0) if(unlock_time == 0)
return 0; return 0;
int tfile = -1; int tfile = -1;
struct tallylog tally; struct tallylog tally;

View File

@ -21,30 +21,32 @@
#include <time.h> #include <time.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C"
{
#endif #endif
#define SHM_TALLY "/shm_tally" #define SHM_TALLY "/shm_tally"
struct _pam_tally { struct _pam_tally
int deny; //失败次数上限 {
int unlock_time; //普通用户失败次数达到上限后,多少秒之后才能解锁 int deny; //失败次数上限
int root_unlock_time; //root用户失败次数达到上限后多少秒之后才能解锁 int unlock_time; //普通用户失败次数达到上限后,多少秒之后才能解锁
int failed; //当前失败的次数 int root_unlock_time; // root用户失败次数达到上限后多少秒之后才能解锁
time_t lock_start_time; //失败次数达到上限后,开始计时 int failed; //当前失败的次数
}; time_t lock_start_time; //失败次数达到上限后,开始计时
typedef struct _pam_tally pam_tally; };
typedef struct _pam_tally pam_tally;
int pam_tally_init(); int pam_tally_init();
int pam_tally_add_failed(); int pam_tally_add_failed();
int pam_tally_clear_failed(); int pam_tally_clear_failed();
int pam_tally_falure_is_out(); int pam_tally_falure_is_out();
int pam_tally_deny(); int pam_tally_deny();
int pam_tally_failed_count(); int pam_tally_failed_count();
int pam_tally_unlock_time(); int pam_tally_unlock_time();
int pam_tally_is_enbled(); int pam_tally_is_enbled();
int pam_tally_is_canUnlock(); int pam_tally_is_canUnlock();
int pam_tally_unlock_time_left(int uid, int *fail_cnt, int *left_time, int *deny, int *fail_time, int *unlock_time); int pam_tally_unlock_time_left(int uid, int *fail_cnt, int *left_time, int *deny, int *fail_time, int *unlock_time);
int pam_tally_root_unlock_time_left(int *fail_cnt, int *left_time, int *deny, int *fail_time, int *unlock_time1); int pam_tally_root_unlock_time_left(int *fail_cnt, int *left_time, int *deny, int *fail_time, int *unlock_time1);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -27,40 +27,35 @@
#define SM_DBUS_INTERFACE "org.gnome.SessionManager" #define SM_DBUS_INTERFACE "org.gnome.SessionManager"
#define SM_DBUS_CLIENT_INTERFACE "org.gnome.SessionManager.ClientPrivate" #define SM_DBUS_CLIENT_INTERFACE "org.gnome.SessionManager.ClientPrivate"
SessionManager::SessionManager(QObject *parent) : QObject(parent) SessionManager::SessionManager(QObject *parent) : QObject(parent)
{ {
smInterface = new QDBusInterface(SM_DBUS_SERVICE, smInterface = new QDBusInterface(SM_DBUS_SERVICE, SM_DBUS_PATH, SM_DBUS_INTERFACE, QDBusConnection::sessionBus());
SM_DBUS_PATH,
SM_DBUS_INTERFACE,
QDBusConnection::sessionBus());
QString appId("polkit-ukui-authentication-agent-1.desktop"); QString appId("polkit-ukui-authentication-agent-1.desktop");
QString clientStartupId(qgetenv("DESKTOP_AUTOSTART_ID")); QString clientStartupId(qgetenv("DESKTOP_AUTOSTART_ID"));
QDBusReply<QDBusObjectPath> reply = smInterface->call("RegisterClient", QDBusReply<QDBusObjectPath> reply = smInterface->call("RegisterClient", appId, clientStartupId);
appId, clientStartupId);
if(!reply.isValid()) { if (!reply.isValid()) {
qWarning() << "Register Client to gnome session failed"; qWarning() << "Register Client to gnome session failed";
} }
clientId = reply.value().path(); clientId = reply.value().path();
qDebug() << "Register Client to gnome session: " << reply.value().path(); qDebug() << "Register Client to gnome session: " << reply.value().path();
clientInterface = new QDBusInterface(SM_DBUS_SERVICE, clientInterface
clientId, = new QDBusInterface(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, QDBusConnection::sessionBus());
SM_DBUS_CLIENT_INTERFACE,
QDBusConnection::sessionBus());
qDebug() << clientInterface->isValid(); qDebug() << clientInterface->isValid();
QDBusConnection conn = clientInterface->connection(); QDBusConnection conn = clientInterface->connection();
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, "Stop", this, SLOT(onStop()));
"Stop", this, SLOT(onStop())); conn.connect(
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, "EndSession", this, SLOT(onEndSession(unsigned int)));
"EndSession", this, SLOT(onEndSession(unsigned int))); conn.connect(SM_DBUS_SERVICE,
conn.connect(SM_DBUS_SERVICE, clientId, SM_DBUS_CLIENT_INTERFACE, clientId,
"QueryEndSession", this, SLOT(onQueryEndSession(unsigned int))); SM_DBUS_CLIENT_INTERFACE,
"QueryEndSession",
this,
SLOT(onQueryEndSession(unsigned int)));
} }
void SessionManager::onStop() void SessionManager::onStop()
@ -82,6 +77,6 @@ void SessionManager::onQueryEndSession(unsigned int flag)
void SessionManager::endSessionResponse() void SessionManager::endSessionResponse()
{ {
QDBusMessage msg = clientInterface->call("EndSessionResponse", true, ""); QDBusMessage msg = clientInterface->call("EndSessionResponse", true, "");
if(msg.type() == QDBusMessage::ErrorMessage) if (msg.type() == QDBusMessage::ErrorMessage)
qDebug() << "Failed to call EndSessionResponse " << msg.errorMessage(); qDebug() << "Failed to call EndSessionResponse " << msg.errorMessage();
} }

View File

@ -34,34 +34,34 @@ enum ScreenStatus
SCREEN_LOCK = 0x02 SCREEN_LOCK = 0x02
}; };
#define SM_DBUS_SERVICE "org.gnome.SessionManager" #define SM_DBUS_SERVICE "org.gnome.SessionManager"
#define SM_DBUS_PATH "/org/gnome/SessionManager/Presence" #define SM_DBUS_PATH "/org/gnome/SessionManager/Presence"
#define SM_DBUS_INTERFACE "org.gnome.SessionManager.Presence" #define SM_DBUS_INTERFACE "org.gnome.SessionManager.Presence"
#define DM_DBUS_SERVICE "org.freedesktop.DisplayManager" #define DM_DBUS_SERVICE "org.freedesktop.DisplayManager"
#define DM_DBUS_PATH "/org/freedesktop/DisplayManager" #define DM_DBUS_PATH "/org/freedesktop/DisplayManager"
#define DM_DBUS_INTERFACE "org.freedesktop.DisplayManager" #define DM_DBUS_INTERFACE "org.freedesktop.DisplayManager"
#define DM_SEAT_INTERFACE "org.freedesktop.DisplayManager.Seat" #define DM_SEAT_INTERFACE "org.freedesktop.DisplayManager.Seat"
#define ACT_DBUS_SERVICE "org.freedesktop.Accounts" #define ACT_DBUS_SERVICE "org.freedesktop.Accounts"
#define ACT_DBUS_PATH "/org/freedesktop/Accounts" #define ACT_DBUS_PATH "/org/freedesktop/Accounts"
#define ACT_DBUS_INTERFACE "org.freedesktop.Accounts" #define ACT_DBUS_INTERFACE "org.freedesktop.Accounts"
#define ACT_USER_INTERFACE "org.freedesktop.Accounts.User" #define ACT_USER_INTERFACE "org.freedesktop.Accounts.User"
#define DBUS_PROP_INTERFACE "org.freedesktop.DBus.Properties" #define DBUS_PROP_INTERFACE "org.freedesktop.DBus.Properties"
#define SS_DBUS_SERVICE "org.ukui.ScreenSaver" #define SS_DBUS_SERVICE "org.ukui.ScreenSaver"
#define SS_DBUS_PATH "/" #define SS_DBUS_PATH "/"
#define SS_DBUS_INTERFACE "org.ukui.ScreenSaver" #define SS_DBUS_INTERFACE "org.ukui.ScreenSaver"
#define BIO_ERROR -1 #define BIO_ERROR -1
#define BIO_FAILED 0 #define BIO_FAILED 0
#define BIO_SUCCESS 1 #define BIO_SUCCESS 1
#define BIO_IGNORE 2 #define BIO_IGNORE 2
#define BIOMETRIC_PAM "BIOMETRIC_PAM" #define BIOMETRIC_PAM "BIOMETRIC_PAM"
#define BIOMETRIC_IGNORE "BIOMETRIC_IGNORE" #define BIOMETRIC_IGNORE "BIOMETRIC_IGNORE"
#define BIOMETRIC_SUCCESS "BIOMETRIC_SUCCESS" #define BIOMETRIC_SUCCESS "BIOMETRIC_SUCCESS"
#define BIOMETRIC_FAILED "BIOMETRIC_FAILED" #define BIOMETRIC_FAILED "BIOMETRIC_FAILED"
#endif // TYPES_H #endif // TYPES_H

View File

@ -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;
}

View File

@ -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

View File

@ -29,8 +29,7 @@
QDebug operator<<(QDebug stream, const UserItem &user) QDebug operator<<(QDebug stream, const UserItem &user)
{ {
stream << user.name << user.realName << user.uid stream << user.name << user.realName << user.uid << user.icon << user.path;
<< user.icon << user.path;
return stream; return stream;
} }
@ -47,26 +46,20 @@ QList<UserItem> Users::getUsers()
UserItem Users::getUserByName(const QString &name) UserItem Users::getUserByName(const QString &name)
{ {
for(int i = 0 ; i < users.size() ; i++) { for (int i = 0; i < users.size(); i++) {
if(users.at(i).name == name) if (users.at(i).name == name) {
{
return users.at(i); return users.at(i);
} }
} }
UserItem user; UserItem user;
if(name == "root") if (name == "root") {
{
user.icon = "/root/.face"; user.icon = "/root/.face";
if(!QFile(user.icon).exists()) if (!QFile(user.icon).exists()) {
{
user.icon = defaultIcon; user.icon = defaultIcon;
} }
} } else {
else user.icon = qgetenv("HOME") + "/.face";
{ if (!QFile(user.icon).exists()) {
user.icon = qgetenv("HOME")+"/.face";
if(!QFile(user.icon).exists())
{
user.icon = defaultIcon; user.icon = defaultIcon;
} }
} }
@ -81,29 +74,23 @@ QString Users::getDefaultIcon()
return defaultIcon; return defaultIcon;
} }
// https://stackoverflow.com/questions/20206376/
//https://stackoverflow.com/questions/20206376/ // how-do-i-extract-the-returned-data-from-qdbusmessage-in-a-qt-dbus-call
//how-do-i-extract-the-returned-data-from-qdbusmessage-in-a-qt-dbus-call
void Users::loadUsers() void Users::loadUsers()
{ {
qDebug() << "loadUsers"; qDebug() << "loadUsers";
actService = new QDBusInterface(ACT_DBUS_SERVICE, actService = new QDBusInterface(ACT_DBUS_SERVICE, ACT_DBUS_PATH, ACT_DBUS_INTERFACE, QDBusConnection::systemBus());
ACT_DBUS_PATH,
ACT_DBUS_INTERFACE,
QDBusConnection::systemBus());
connect(actService, SIGNAL(UserAdded(const QDBusObjectPath&)), connect(actService, SIGNAL(UserAdded(const QDBusObjectPath &)), this, SLOT(onUserAdded(const QDBusObjectPath &)));
this, SLOT(onUserAdded(const QDBusObjectPath&))); connect(
connect(actService, SIGNAL(UserDeleted(const QDBusObjectPath&)), actService, SIGNAL(UserDeleted(const QDBusObjectPath &)), this, SLOT(onUserDeleted(const QDBusObjectPath &)));
this, SLOT(onUserDeleted(const QDBusObjectPath&)));
QDBusMessage ret = actService->call("ListCachedUsers"); QDBusMessage ret = actService->call("ListCachedUsers");
QList<QVariant> outArgs = ret.arguments(); //(QVariant(QDBusArgument,)) QList<QVariant> outArgs = ret.arguments(); //(QVariant(QDBusArgument,))
QVariant first = outArgs.at(0); //QVariant(QDBusArgument,) QVariant first = outArgs.at(0); // QVariant(QDBusArgument,)
const QDBusArgument &dbusArgs = first.value<QDBusArgument>(); const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
QDBusObjectPath path; QDBusObjectPath path;
dbusArgs.beginArray(); dbusArgs.beginArray();
while (!dbusArgs.atEnd()) while (!dbusArgs.atEnd()) {
{
dbusArgs >> path; dbusArgs >> path;
getUser(path.path()); getUser(path.path());
} }
@ -112,10 +99,7 @@ void Users::loadUsers()
UserItem Users::getUser(const QString &path) UserItem Users::getUser(const QString &path)
{ {
QDBusInterface iface(ACT_DBUS_SERVICE, QDBusInterface iface(ACT_DBUS_SERVICE, path, DBUS_PROP_INTERFACE, QDBusConnection::systemBus());
path,
DBUS_PROP_INTERFACE,
QDBusConnection::systemBus());
QDBusMessage ret = iface.call("GetAll", ACT_USER_INTERFACE); QDBusMessage ret = iface.call("GetAll", ACT_USER_INTERFACE);
QList<QVariant> outArgs = ret.arguments(); QList<QVariant> outArgs = ret.arguments();
QVariant first = outArgs.at(0); QVariant first = outArgs.at(0);
@ -123,57 +107,45 @@ UserItem Users::getUser(const QString &path)
UserItem user; UserItem user;
user.path = path; user.path = path;
dbusArgs.beginMap(); dbusArgs.beginMap();
while(!dbusArgs.atEnd()) while (!dbusArgs.atEnd()) {
{
QString key; QString key;
QVariant value; QVariant value;
dbusArgs.beginMapEntry(); dbusArgs.beginMapEntry();
dbusArgs >> key >> value; dbusArgs >> key >> value;
if(key == "UserName") if (key == "UserName") {
{ user.name = value.toString();
user.name = value.toString(); } else if (key == "RealName") {
}
else if(key == "RealName")
{
user.realName = value.toString(); user.realName = value.toString();
} } else if (key == "IconFile") {
else if(key == "IconFile")
{
user.icon = value.toString(); user.icon = value.toString();
if(!QFile(user.icon).exists()) if (!QFile(user.icon).exists()) {
{
user.icon = defaultIcon; user.icon = defaultIcon;
} }
} } else if (key == "Uid") {
else if(key == "Uid")
{
user.uid = value.toUInt(); user.uid = value.toUInt();
} }
dbusArgs.endMapEntry(); dbusArgs.endMapEntry();
} }
dbusArgs.endMap(); dbusArgs.endMap();
if(user.realName.isEmpty()) if (user.realName.isEmpty()) {
{
user.realName = user.name; user.realName = user.name;
} }
users.push_back(user); users.push_back(user);
return user; return user;
} }
void Users::onUserAdded(const QDBusObjectPath& path) void Users::onUserAdded(const QDBusObjectPath &path)
{ {
int index = findUserByPath(path.path()); int index = findUserByPath(path.path());
if(index >=0 &&index<users.count()) if (index >= 0 && index < users.count()) {
{
UserItem user = getUser(path.path()); UserItem user = getUser(path.path());
Q_EMIT userAdded(user); Q_EMIT userAdded(user);
} }
} }
void Users::onUserDeleted(const QDBusObjectPath& path) void Users::onUserDeleted(const QDBusObjectPath &path)
{ {
int index = findUserByPath(path.path()); int index = findUserByPath(path.path());
if(index >= 0 && index<users.count()) if (index >= 0 && index < users.count()) {
{
UserItem user = users.at(index); UserItem user = users.at(index);
users.removeAt(index); users.removeAt(index);
Q_EMIT userDeleted(user); Q_EMIT userDeleted(user);
@ -182,13 +154,9 @@ void Users::onUserDeleted(const QDBusObjectPath& path)
int Users::findUserByPath(const QString &path) int Users::findUserByPath(const QString &path)
{ {
auto iter = std::find_if(users.begin(), users.end(), auto iter = std::find_if(users.begin(), users.end(), [&](const UserItem &user) { return user.path == path; });
[&](const UserItem &user){
return user.path == path;
});
int index = iter - users.begin(); int index = iter - users.begin();
return index; return index;
} }

View File

@ -20,14 +20,13 @@
#include <QObject> #include <QObject>
struct UserItem struct UserItem
{ {
QString name; QString name;
QString realName; QString realName;
QString icon; QString icon;
quint64 uid; quint64 uid;
QString path; //accounts service path QString path; // accounts service path
friend QDebug operator<<(QDebug stream, const UserItem &user); friend QDebug operator<<(QDebug stream, const UserItem &user);
}; };
@ -48,17 +47,17 @@ private:
int findUserByPath(const QString &path); int findUserByPath(const QString &path);
private Q_SLOTS: private Q_SLOTS:
void onUserAdded(const QDBusObjectPath& path); void onUserAdded(const QDBusObjectPath &path);
void onUserDeleted(const QDBusObjectPath& path); void onUserDeleted(const QDBusObjectPath &path);
Q_SIGNALS: Q_SIGNALS:
void userAdded(const UserItem &user); void userAdded(const UserItem &user);
void userDeleted(const UserItem &user); void userDeleted(const UserItem &user);
private: private:
QDBusInterface *actService; QDBusInterface *actService;
QList<UserItem> users; QList<UserItem> users;
QString defaultIcon; QString defaultIcon;
}; };
#endif // USERS_H #endif // USERS_H