Merge pull request !55 from 杨敏/openkylin/nile
This commit is contained in:
杨敏 2023-12-27 05:45:24 +00:00 committed by Gitee
commit 409d97d40b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
51 changed files with 2150 additions and 1405 deletions

View File

@ -12,163 +12,169 @@
<context> <context>
<name>AuthDialog</name> <name>AuthDialog</name>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<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/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<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/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -200,31 +206,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -240,17 +250,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -389,17 +400,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -407,7 +418,7 @@
<context> <context>
<name>LockWidget</name> <name>LockWidget</name>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -474,12 +485,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -487,12 +498,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -614,6 +626,21 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Widget</name> <name>Widget</name>
<message> <message>
@ -729,12 +756,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation></translation> <translation></translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<source>Please try again in %1 minutes.</source> <source>Please try again in %1 minutes.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished">USBཡི</translation> <translation type="vanished">USBཡི</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation></translation> <translation></translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -413,17 +423,18 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1887,17 +1898,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1941,7 +1952,7 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2019,12 +2030,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2032,12 +2043,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation></translation> <translation></translation>
</message> </message>
@ -2511,6 +2523,21 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2682,12 +2709,12 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>Wiederholen</translation> <translation>Wiederholen</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<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/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Passwort eingeben</translation> <translation>Passwort eingeben</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">Nutzername</translation> <translation type="unfinished">Nutzername</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<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/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished">Ukey</translation> <translation type="unfinished">Ukey</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<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>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished">Stecken Sie den Ukey in den USB-Anschluss</translation> <translation type="vanished">Stecken Sie den Ukey in den USB-Anschluss</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>Passwort </translation> <translation>Passwort </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>Einloggen</translation> <translation>Einloggen</translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Abbrechen</translation> <translation type="unfinished">Abbrechen</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">Das folgende Programm wird ausgeführt, um einen Neustart des Systems zu verhindern!</translation> <translation type="unfinished">Das folgende Programm wird ausgeführt, um einen Neustart des Systems zu verhindern!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">Das folgende Programm wird ausgeführt, um das Herunterfahren des Systems zu verhindern!</translation> <translation type="unfinished">Das folgende Programm wird ausgeführt, um das Herunterfahren des Systems zu verhindern!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">Das folgende Programm wird ausgeführt, um zu verhindern, dass das System angehalten wird!</translation> <translation type="unfinished">Das folgende Programm wird ausgeführt, um zu verhindern, dass das System angehalten wird!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">Das folgende Programm wird ausgeführt, um zu verhindern, dass das System in den Ruhezustand versetzt wird!</translation> <translation type="unfinished">Das folgende Programm wird ausgeführt, um zu verhindern, dass das System in den Ruhezustand versetzt wird!</translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation>Mehr</translation> <translation>Mehr</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation>ABC</translation> <translation>ABC</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation>123</translation> <translation>123</translation>
</message> </message>
@ -1883,17 +1894,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">Einloggen</translation> <translation type="unfinished">Einloggen</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1937,7 +1948,7 @@
<translation type="vanished">WLAN</translation> <translation type="vanished">WLAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2015,12 +2026,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">LAN</translation> <translation type="unfinished">LAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">WLAN</translation> <translation type="unfinished">WLAN</translation>
</message> </message>
@ -2028,12 +2039,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation>&amp;&amp;?!</translation> <translation>&amp;&amp;?!</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation>Rückgabe</translation> <translation>Rückgabe</translation>
</message> </message>
@ -2358,72 +2370,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2573,6 +2519,21 @@
<translation type="vanished">Hüpfen</translation> <translation type="vanished">Hüpfen</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">Einloggen</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2744,12 +2705,12 @@
<translation>Fenster-ID</translation> <translation>Fenster-ID</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>Reintentar</translation> <translation>Reintentar</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<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/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<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/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">Nombre de usuario</translation> <translation type="unfinished">Nombre de usuario</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Red anormal</translation> <translation>Red anormal</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished">Ukey</translation> <translation type="unfinished">Ukey</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<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>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished">Inserte la ukey en el puerto USB</translation> <translation type="vanished">Inserte la ukey en el puerto USB</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>Contraseña </translation> <translation>Contraseña </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>Iniciar sesión</translation> <translation>Iniciar sesión</translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Cancelar</translation> <translation type="unfinished">Cancelar</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se reinicie!</translation> <translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se reinicie!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se apague!</translation> <translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se apague!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se suspenda!</translation> <translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema se suspenda!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema hiberne!</translation> <translation type="unfinished">¡El siguiente programa se está ejecutando para evitar que el sistema hiberne!</translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation>Más</translation> <translation>Más</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation>ABECEDARIO</translation> <translation>ABECEDARIO</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation>123</translation> <translation>123</translation>
</message> </message>
@ -1883,17 +1894,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">Iniciar sesión</translation> <translation type="unfinished">Iniciar sesión</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1941,7 +1952,7 @@
<translation type="vanished">WLAN</translation> <translation type="vanished">WLAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2019,12 +2030,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">LAN</translation> <translation type="unfinished">LAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">WLAN</translation> <translation type="unfinished">WLAN</translation>
</message> </message>
@ -2032,12 +2043,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation>&amp;&amp;?!</translation> <translation>&amp;&amp;?!</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation>Devolución</translation> <translation>Devolución</translation>
</message> </message>
@ -2362,72 +2374,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2577,6 +2523,21 @@
<translation type="vanished">Saltarse</translation> <translation type="vanished">Saltarse</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">Iniciar sesión</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2748,12 +2709,12 @@
<translation>ID de ventana</translation> <translation>ID de ventana</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>Réessayer</translation> <translation>Réessayer</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<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/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<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/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">Nom dutilisateur</translation> <translation type="unfinished">Nom dutilisateur</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<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/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished">Ukey (en anglais seulement)</translation> <translation type="unfinished">Ukey (en anglais seulement)</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<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>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished">Insérez lukey dans le port USB</translation> <translation type="vanished">Insérez lukey dans le port USB</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>Mot de passe </translation> <translation>Mot de passe </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>Connectez-vous</translation> <translation>Connectez-vous</translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Annuler</translation> <translation type="unfinished">Annuler</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de redémarrer !</translation> <translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de redémarrer !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de sarrêter !</translation> <translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de sarrêter !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de se suspendre !</translation> <translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de se suspendre !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de hiberner !</translation> <translation type="unfinished">Le programme suivant est en cours dexécution pour empêcher le système de hiberner !</translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation>Plus</translation> <translation>Plus</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation>ABC</translation> <translation>ABC</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation>123</translation> <translation>123</translation>
</message> </message>
@ -1883,17 +1894,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">Connectez-vous</translation> <translation type="unfinished">Connectez-vous</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1937,7 +1948,7 @@
<translation type="vanished">Réseau local sans fil (WLAN)</translation> <translation type="vanished">Réseau local sans fil (WLAN)</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2015,12 +2026,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">LAN</translation> <translation type="unfinished">LAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">Réseau local sans fil (WLAN)</translation> <translation type="unfinished">Réseau local sans fil (WLAN)</translation>
</message> </message>
@ -2028,12 +2039,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation>&amp;&amp;?!</translation> <translation>&amp;&amp;?!</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation>Rendre</translation> <translation>Rendre</translation>
</message> </message>
@ -2358,72 +2370,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2573,6 +2519,21 @@
<translation type="vanished">Sautiller</translation> <translation type="vanished">Sautiller</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">Connectez-vous</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2744,12 +2705,12 @@
<translation>ID de la fenêtre</translation> <translation>ID de la fenêtre</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>Ретри</translation> <translation>Ретри</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>Тіркелгі біржолата құлыпталады.</translation> <translation>Тіркелгі біржолата құлыпталады.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Құпиясөзді енгізу</translation> <translation>Құпиясөзді енгізу</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">Пайдаланушы аты</translation> <translation type="unfinished">Пайдаланушы аты</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Аномальды желі</translation> <translation>Аномальды желі</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>Құпия сөз бос болмады</translation> <translation>Құпия сөз бос болмады</translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,23 +229,24 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>Байланыстыратын wechat сканерлеу кодын пайдаланыңыз немесе құлыптан босату үшін құпия сөзді енгізіңіз</translation> <translation>Байланыстыратын wechat сканерлеу кодын пайдаланыңыз немесе құлыптан босату үшін құпия сөзді енгізіңіз</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>Пароль </translation> <translation>Пароль </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>Кіру</translation> <translation>Кіру</translation>
</message> </message>
@ -360,31 +366,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Болдырмау</translation> <translation type="unfinished">Болдырмау</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">Жүйені қайта жүктеуге жол бермеу үшін келесі бағдарлама іске асырылуда!</translation> <translation type="unfinished">Жүйені қайта жүктеуге жол бермеу үшін келесі бағдарлама іске асырылуда!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">Жүйенің тоқтап қалуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation> <translation type="unfinished">Жүйенің тоқтап қалуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">Жүйенің тоқтатылуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation> <translation type="unfinished">Жүйенің тоқтатылуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">Жүйенің жорыққа шығуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation> <translation type="unfinished">Жүйенің жорыққа шығуына жол бермеу үшін келесі бағдарлама іске асырылуда!</translation>
</message> </message>
@ -400,17 +410,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1863,17 +1874,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">Кіру</translation> <translation type="unfinished">Кіру</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1901,7 +1912,7 @@
<translation type="vanished">Бірнеше пайдаланушы бір уақытта кіргізіледі. Бұл жүйені қайта жүктеу керек пе?</translation> <translation type="vanished">Бірнеше пайдаланушы бір уақытта кіргізіледі. Бұл жүйені қайта жүктеу керек пе?</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1979,12 +1990,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">ЛАН</translation> <translation type="unfinished">ЛАН</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">WLAN</translation> <translation type="unfinished">WLAN</translation>
</message> </message>
@ -1992,12 +2003,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2306,72 +2318,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2521,6 +2467,21 @@
<translation type="vanished">Өткізіп жіберу</translation> <translation type="vanished">Өткізіп жіберу</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">Кіру</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2692,12 +2653,12 @@
<translation>терезе идентифика- ты</translation> <translation>терезе идентифика- ты</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>Ретри</translation> <translation>Ретри</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>Эсеп биротоло кулпуланган.</translation> <translation>Эсеп биротоло кулпуланган.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation>Сырсөз киргизүү</translation> <translation>Сырсөз киргизүү</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">Колдонуучунун аты</translation> <translation type="unfinished">Колдонуучунун аты</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>Аномалдуу тармак</translation> <translation>Аномалдуу тармак</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>Сырсөз бош болушу мүмкүн эмес</translation> <translation>Сырсөз бош болушу мүмкүн эмес</translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,23 +229,24 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>Сырсөз </translation> <translation>Сырсөз </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>Кирүү</translation> <translation>Кирүү</translation>
</message> </message>
@ -360,31 +366,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Жокко чыгаруу</translation> <translation type="unfinished">Жокко чыгаруу</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">Системаны кайра жүктөөдөн алдын алуу үчүн төмөнкү программа иштеп жатат!</translation> <translation type="unfinished">Системаны кайра жүктөөдөн алдын алуу үчүн төмөнкү программа иштеп жатат!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">Системанын жабылышына жол бербөө үчүн төмөнкү программа иштеп жатат!</translation> <translation type="unfinished">Системанын жабылышына жол бербөө үчүн төмөнкү программа иштеп жатат!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">Системанын токтотулушуна жол бербөө үчүн төмөнкү программа иштеп жатат!</translation> <translation type="unfinished">Системанын токтотулушуна жол бербөө үчүн төмөнкү программа иштеп жатат!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">Системанын уктап кетишине жол бербөө үчүн төмөнкү программа иштеп жатат!</translation> <translation type="unfinished">Системанын уктап кетишине жол бербөө үчүн төмөнкү программа иштеп жатат!</translation>
</message> </message>
@ -400,17 +410,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1863,17 +1874,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">Кирүү</translation> <translation type="unfinished">Кирүү</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1901,7 +1912,7 @@
<translation type="vanished">Бир эле учурда бир нече колдонуучулар катталган. Сиз бул системаны кайра жүктөп келет деп ишенесизби?</translation> <translation type="vanished">Бир эле учурда бир нече колдонуучулар катталган. Сиз бул системаны кайра жүктөп келет деп ишенесизби?</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1979,12 +1990,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">ЛАН</translation> <translation type="unfinished">ЛАН</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">ВЛАН</translation> <translation type="unfinished">ВЛАН</translation>
</message> </message>
@ -1992,12 +2003,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2306,72 +2318,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2521,6 +2467,21 @@
<translation type="vanished">Өтүү</translation> <translation type="vanished">Өтүү</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">Кирүү</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2692,12 +2653,12 @@
<translation>терезе идентификату</translation> <translation>терезе идентификату</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished"> USB </translation> <translation type="vanished"> USB </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"> !</translation> <translation type="unfinished"> !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"> !</translation> <translation type="unfinished"> !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"> !</translation> <translation type="unfinished"> !</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"> !</translation> <translation type="unfinished"> !</translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation>ABC</translation> <translation>ABC</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation>123</translation> <translation>123</translation>
</message> </message>
@ -1890,17 +1901,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1944,7 +1955,7 @@
<translation type="vanished"> </translation> <translation type="vanished"> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2022,12 +2033,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished"> </translation> <translation type="unfinished"> </translation>
</message> </message>
@ -2035,12 +2046,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation>&amp;&amp;?!</translation> <translation>&amp;&amp;?!</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation> </translation> <translation> </translation>
</message> </message>
@ -2514,6 +2526,21 @@
<translation type="vanished"> </translation> <translation type="vanished"> </translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"> </translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2685,12 +2712,12 @@
<translation> id</translation> <translation> id</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -158,6 +158,10 @@
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Guest</source>
<translation type="unfinished">Convidado</translation>
</message>
</context> </context>
<context> <context>
<name>BatteryWidget</name> <name>BatteryWidget</name>
@ -723,6 +727,17 @@
<translation type="obsolete">TextLabel</translation> <translation type="obsolete">TextLabel</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Guest</source>
<translation type="unfinished">Convidado</translation>
</message>
</context>
<context> <context>
<name>Widget</name> <name>Widget</name>
<message> <message>

View File

@ -158,6 +158,10 @@
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Guest</source>
<translation type="unfinished">гость</translation>
</message>
</context> </context>
<context> <context>
<name>BatteryWidget</name> <name>BatteryWidget</name>
@ -723,6 +727,17 @@
<translation type="obsolete">TextLabel</translation> <translation type="obsolete">TextLabel</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Guest</source>
<translation type="unfinished">гость</translation>
</message>
</context>
<context> <context>
<name>Widget</name> <name>Widget</name>
<message> <message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">Parola</translation> <translation type="obsolete">Parola</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished">Yeniden Dene</translation> <translation type="unfinished">Yeniden Dene</translation>
</message> </message>
@ -49,158 +49,164 @@
<translation type="vanished">Kimlik doğrulama hatası, hala %1 kalan denemen var</translation> <translation type="vanished">Kimlik doğrulama hatası, hala %1 kalan denemen var</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<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/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<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/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <source>Guest</source>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <translation type="unfinished">Misafir</translation>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> </message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished">Parmak İzi</translation> <translation type="unfinished">Parmak İzi</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished">Göz</translation> <translation type="unfinished">Göz</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished">Yüz</translation> <translation type="unfinished">Yüz</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished">Ses İzi</translation> <translation type="unfinished">Ses İzi</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -312,31 +318,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -352,17 +362,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -587,17 +598,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished">Misafir</translation> <translation type="unfinished">Misafir</translation>
</message> </message>
@ -621,7 +632,7 @@
<translation type="vanished">Kullanıcı Değiştir</translation> <translation type="vanished">Kullanıcı Değiştir</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -688,12 +699,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -701,12 +712,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -887,6 +899,21 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished">Misafir</translation>
</message>
</context>
<context> <context>
<name>Widget</name> <name>Widget</name>
<message> <message>
@ -1002,12 +1029,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation>قايتا قايتا تىرشىش</translation> <translation>قايتا قايتا تىرشىش</translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation>ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ.</translation> <translation>ھېسابات مەڭگۈلۈك قۇلۇپلىنىدۇ.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation>ئىم كىرگۈزۈش</translation> <translation>ئىم كىرگۈزۈش</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">ئىشلەتكۈچى نامى</translation> <translation type="unfinished">ئىشلەتكۈچى نامى</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation>بىنورمال تور</translation> <translation>بىنورمال تور</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished">QRCode</translation> <translation type="unfinished">QRCode</translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation>مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ</translation> <translation>مەخپىي نومۇرنى بوش قويۇشقا بولمايدۇ</translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,23 +229,24 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation>ئىم </translation> <translation>ئىم </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation>كىرىش</translation> <translation>كىرىش</translation>
</message> </message>
@ -360,31 +366,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">ئەمەلدىن قالدۇرۇش</translation> <translation type="unfinished">ئەمەلدىن قالدۇرۇش</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished">سېستىمىنىڭ قايتا قوزغىلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا بولىۋاتىدۇ!</translation> <translation type="unfinished">سېستىمىنىڭ قايتا قوزغىلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا بولىۋاتىدۇ!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished">تۆۋەندىكى پروگرامما سىستېمىنىڭ تاقىلىپ قېلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن يۈگۈرۈۋاتىدۇ!</translation> <translation type="unfinished">تۆۋەندىكى پروگرامما سىستېمىنىڭ تاقىلىپ قېلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن يۈگۈرۈۋاتىدۇ!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished">سېستىمىنىڭ توختىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا قىلىنىۋاتىدۇ!</translation> <translation type="unfinished">سېستىمىنىڭ توختىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا قىلىنىۋاتىدۇ!</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished">سېستىمىنىڭ تىزگىنلەپ قېلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا بولىۋاتىدۇ!</translation> <translation type="unfinished">سېستىمىنىڭ تىزگىنلەپ قېلىشىنىڭ ئالدىنى ئېلىش ئۈچۈن تۆۋەندىكى پروگرامما ئىجرا بولىۋاتىدۇ!</translation>
</message> </message>
@ -400,17 +410,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1863,17 +1874,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished">كىرىش</translation> <translation type="unfinished">كىرىش</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1901,7 +1912,7 @@
<translation type="vanished">بىرلا ۋاقىتتا كۆپ ئابونت تىزىملىتىپ كىرىدۇ. سىز بۇ سىستېمىنى قايتىدىن قوزغىماقچى ئىكەنلىكىڭىزنى جەزىملەشتۈرەلەمسىز؟</translation> <translation type="vanished">بىرلا ۋاقىتتا كۆپ ئابونت تىزىملىتىپ كىرىدۇ. سىز بۇ سىستېمىنى قايتىدىن قوزغىماقچى ئىكەنلىكىڭىزنى جەزىملەشتۈرەلەمسىز؟</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1979,12 +1990,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">LAN</translation> <translation type="unfinished">LAN</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">WLAN</translation> <translation type="unfinished">WLAN</translation>
</message> </message>
@ -1992,12 +2003,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2306,72 +2318,6 @@
<message> <message>
<location filename="../src/dbusifs/enginedevice.cpp" line="308"/> <location filename="../src/dbusifs/enginedevice.cpp" line="308"/>
<source></source> <source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="313"/>
<source></source>
<comment>this is only shown for laptops with multiple batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="337"/>
<source></source>
<comment>laptop primary battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="341"/>
<source></source>
<comment>battery-backed AC power source</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="345"/>
<source></source>
<comment>a monitor is a device to measure voltage and current</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="349"/>
<source></source>
<comment>wireless mice with internal batteries</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="353"/>
<source></source>
<comment>wireless keyboard with internal battery</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="357"/>
<source></source>
<comment>portable device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="361"/>
<source></source>
<comment>cell phone (mobile...)</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="365"/>
<source></source>
<comment>media player, mp3 etc</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="369"/>
<source></source>
<comment>tablet device</comment>
<translation></translation>
</message>
<message>
<location filename="../src/dbusifs/enginedevice.cpp" line="373"/>
<source></source>
<comment>tablet device</comment> <comment>tablet device</comment>
<translation></translation> <translation></translation>
</message> </message>
@ -2521,6 +2467,21 @@
<translation type="vanished">ئاتلاندۇق</translation> <translation type="vanished">ئاتلاندۇق</translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished">كىرىش</translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2692,12 +2653,12 @@
<translation>كۆزنەك id</translation> <translation>كۆزنەك id</translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation></translation> <translation></translation>
</message> </message>
@ -46,132 +46,137 @@
</message> </message>
<message> <message>
<source>Password: </source> <source>Password: </source>
<translation></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<source>Account locked %1 minutes due to %2 fail attempts</source> <source>Account locked %1 minutes due to %2 fail attempts</source>
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation>:</translation> <translation>:</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation></translation> <translation></translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished">USB端口</translation> <translation type="vanished">USB端口</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation></translation> <translation></translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation></translation> <translation></translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1867,19 +1878,19 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1910,7 +1921,7 @@
</message> </message>
<message> <message>
<source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to reboot this system?</source>
<translation>退</translation> <translation type="vanished">退</translation>
</message> </message>
<message> <message>
<source>LAN</source> <source>LAN</source>
@ -1921,9 +1932,9 @@
<translation type="vanished">线</translation> <translation type="vanished">线</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="931"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation>%1?</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1947,37 +1958,37 @@
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1023"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1023"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1025"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1025"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1027"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1027"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1029"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1029"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1031"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1031"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1033"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1033"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/loginoptionswidget.cpp" line="1035"/> <location filename="../src/widgets/loginoptionswidget.cpp" line="1035"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Wechat</source> <source>Wechat</source>
@ -1999,25 +2010,26 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished">线</translation> <translation>线</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished">线</translation> <translation>线</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation></translation> <translation></translation>
</message> </message>
@ -2176,7 +2188,7 @@
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="64"/> <location filename="../src/widgets/powerlistwidget.h" line="64"/>
<source>Hibernate</source> <source>Hibernate</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="65"/> <location filename="../src/widgets/powerlistwidget.h" line="65"/>
@ -2186,7 +2198,7 @@
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="78"/> <location filename="../src/widgets/powerlistwidget.h" line="78"/>
<source>Suspend</source> <source>Suspend</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="79"/> <location filename="../src/widgets/powerlistwidget.h" line="79"/>
@ -2197,12 +2209,12 @@
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="92"/> <location filename="../src/widgets/powerlistwidget.h" line="92"/>
<source>Restart</source> <source>Restart</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="106"/> <location filename="../src/widgets/powerlistwidget.h" line="106"/>
<source>Power Off</source> <source>Power Off</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/powerlistwidget.h" line="107"/> <location filename="../src/widgets/powerlistwidget.h" line="107"/>
@ -2315,7 +2327,7 @@
<message> <message>
<location filename="../src/common/biodefines.cpp" line="35"/> <location filename="../src/common/biodefines.cpp" line="35"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/common/biodefines.cpp" line="37"/> <location filename="../src/common/biodefines.cpp" line="37"/>
@ -2483,6 +2495,21 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2557,7 +2584,7 @@
<message> <message>
<location filename="../src/lock-dialog/lockdialogmodel.cpp" line="59"/> <location filename="../src/lock-dialog/lockdialogmodel.cpp" line="59"/>
<source>how long to show lock</source> <source>how long to show lock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2565,7 +2592,7 @@
<message> <message>
<location filename="../src/lock-dialog/lockdialogmodel.cpp" line="62"/> <location filename="../src/lock-dialog/lockdialogmodel.cpp" line="62"/>
<source>if show lock</source> <source>if show lock</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2654,12 +2681,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -24,7 +24,7 @@
<translation type="obsolete">使</translation> <translation type="obsolete">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1085"/> <location filename="../src/widgets/authdialog.cpp" line="1117"/>
<source>Retry</source> <source>Retry</source>
<translation></translation> <translation></translation>
</message> </message>
@ -53,125 +53,130 @@
<translation type="vanished">%1%2</translation> <translation type="vanished">%1%2</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1148"/> <location filename="../src/widgets/authdialog.cpp" line="1186"/>
<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/widgets/authdialog.cpp" line="1155"/> <location filename="../src/widgets/authdialog.cpp" line="1193"/>
<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/widgets/authdialog.cpp" line="1162"/> <location filename="../src/widgets/authdialog.cpp" line="1200"/>
<source>Account locked permanently.</source> <source>Account locked permanently.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="522"/> <location filename="../src/widgets/authdialog.cpp" line="549"/>
<location filename="../src/widgets/authdialog.cpp" line="565"/> <location filename="../src/widgets/authdialog.cpp" line="592"/>
<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/widgets/authdialog.cpp" line="527"/> <location filename="../src/widgets/authdialog.cpp" line="348"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/authdialog.cpp" line="554"/>
<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/widgets/authdialog.cpp" line="532"/> <location filename="../src/widgets/authdialog.cpp" line="559"/>
<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/widgets/authdialog.cpp" line="537"/> <location filename="../src/widgets/authdialog.cpp" line="564"/>
<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/widgets/authdialog.cpp" line="542"/> <location filename="../src/widgets/authdialog.cpp" line="569"/>
<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/widgets/authdialog.cpp" line="860"/> <location filename="../src/widgets/authdialog.cpp" line="887"/>
<source>Input Password</source> <source>Input Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="865"/> <location filename="../src/widgets/authdialog.cpp" line="892"/>
<source>Username</source> <source>Username</source>
<translation type="unfinished">使</translation> <translation type="unfinished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="928"/> <location filename="../src/widgets/authdialog.cpp" line="960"/>
<source>User name input error!</source> <source>User name input error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1005"/> <location filename="../src/widgets/authdialog.cpp" line="1037"/>
<source>login</source> <source>login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1382"/> <location filename="../src/widgets/authdialog.cpp" line="1420"/>
<location filename="../src/widgets/authdialog.cpp" line="1534"/> <location filename="../src/widgets/authdialog.cpp" line="1572"/>
<location filename="../src/widgets/authdialog.cpp" line="1675"/> <location filename="../src/widgets/authdialog.cpp" line="1713"/>
<location filename="../src/widgets/authdialog.cpp" line="1852"/> <location filename="../src/widgets/authdialog.cpp" line="1890"/>
<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/widgets/authdialog.cpp" line="1384"/> <location filename="../src/widgets/authdialog.cpp" line="1422"/>
<location filename="../src/widgets/authdialog.cpp" line="1536"/> <location filename="../src/widgets/authdialog.cpp" line="1574"/>
<location filename="../src/widgets/authdialog.cpp" line="1679"/> <location filename="../src/widgets/authdialog.cpp" line="1717"/>
<location filename="../src/widgets/authdialog.cpp" line="1681"/> <location filename="../src/widgets/authdialog.cpp" line="1719"/>
<location filename="../src/widgets/authdialog.cpp" line="1854"/> <location filename="../src/widgets/authdialog.cpp" line="1892"/>
<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>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1709"/> <location filename="../src/widgets/authdialog.cpp" line="1747"/>
<source>Abnormal network</source> <source>Abnormal network</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1716"/> <location filename="../src/widgets/authdialog.cpp" line="1754"/>
<source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source> <source>Face recognition waiting time out, please click refresh or enter the password to unlock.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1982"/> <location filename="../src/widgets/authdialog.cpp" line="2020"/>
<source>FingerPrint</source> <source>FingerPrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1984"/> <location filename="../src/widgets/authdialog.cpp" line="2022"/>
<source>FingerVein</source> <source>FingerVein</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1986"/> <location filename="../src/widgets/authdialog.cpp" line="2024"/>
<source>Iris</source> <source>Iris</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1988"/> <location filename="../src/widgets/authdialog.cpp" line="2026"/>
<source>Face</source> <source>Face</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1990"/> <location filename="../src/widgets/authdialog.cpp" line="2028"/>
<source>VoicePrint</source> <source>VoicePrint</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1992"/> <location filename="../src/widgets/authdialog.cpp" line="2030"/>
<source>Ukey</source> <source>Ukey</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1994"/> <location filename="../src/widgets/authdialog.cpp" line="2032"/>
<source>QRCode</source> <source>QRCode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -180,8 +185,8 @@
<translation type="vanished">使</translation> <translation type="vanished">使</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="703"/> <location filename="../src/widgets/authdialog.cpp" line="730"/>
<location filename="../src/widgets/authdialog.cpp" line="704"/> <location filename="../src/widgets/authdialog.cpp" line="731"/>
<source>Password cannot be empty</source> <source>Password cannot be empty</source>
<translation></translation> <translation></translation>
</message> </message>
@ -194,8 +199,8 @@
<translation type="vanished">%1.</translation> <translation type="vanished">%1.</translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1694"/> <location filename="../src/widgets/authdialog.cpp" line="1732"/>
<location filename="../src/widgets/authdialog.cpp" line="1698"/> <location filename="../src/widgets/authdialog.cpp" line="1736"/>
<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>
@ -224,13 +229,13 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="931"/> <location filename="../src/widgets/authdialog.cpp" line="963"/>
<location filename="../src/widgets/authdialog.cpp" line="936"/> <location filename="../src/widgets/authdialog.cpp" line="968"/>
<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/widgets/authdialog.cpp" line="547"/> <location filename="../src/widgets/authdialog.cpp" line="574"/>
<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>
@ -243,12 +248,13 @@
<translation type="vanished"> Ukey USB </translation> <translation type="vanished"> Ukey USB </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="857"/> <location filename="../src/widgets/authdialog.cpp" line="884"/>
<source>Password </source> <source>Password </source>
<translation> </translation> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/authdialog.cpp" line="1076"/> <location filename="../src/widgets/authdialog.cpp" line="346"/>
<location filename="../src/widgets/authdialog.cpp" line="1108"/>
<source>Login</source> <source>Login</source>
<translation></translation> <translation></translation>
</message> </message>
@ -368,31 +374,35 @@
<name>BlockWidget</name> <name>BlockWidget</name>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="40"/> <location filename="../src/widgets/blockwidget.cpp" line="40"/>
<location filename="../src/widgets/blockwidget.cpp" line="82"/>
<location filename="../src/widgets/blockwidget.cpp" line="135"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="44"/> <location filename="../src/widgets/blockwidget.cpp" line="44"/>
<location filename="../src/widgets/blockwidget.cpp" line="83"/>
<location filename="../src/widgets/blockwidget.cpp" line="136"/>
<source>Confrim</source> <source>Confrim</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="89"/> <location filename="../src/widgets/blockwidget.cpp" line="91"/>
<source>The following program is running to prevent the system from reboot!</source> <source>The following program is running to prevent the system from reboot!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="92"/> <location filename="../src/widgets/blockwidget.cpp" line="94"/>
<source>The following program is running to prevent the system from shutting down!</source> <source>The following program is running to prevent the system from shutting down!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="95"/> <location filename="../src/widgets/blockwidget.cpp" line="97"/>
<source>The following program is running to prevent the system from suspend!</source> <source>The following program is running to prevent the system from suspend!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/blockwidget.cpp" line="98"/> <location filename="../src/widgets/blockwidget.cpp" line="100"/>
<source>The following program is running to prevent the system from hibernate!</source> <source>The following program is running to prevent the system from hibernate!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -408,17 +418,18 @@
<context> <context>
<name>CharsWidget</name> <name>CharsWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="114"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="115"/>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="273"/>
<source>More</source> <source>More</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="128"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="129"/>
<source>ABC</source> <source>ABC</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="141"/> <location filename="../src/VirtualKeyboard/src/charswidget.cpp" line="142"/>
<source>123</source> <source>123</source>
<translation>123</translation> <translation>123</translation>
</message> </message>
@ -1883,17 +1894,17 @@
<context> <context>
<name>LightDMHelper</name> <name>LightDMHelper</name>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="99"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="105"/>
<source>failed to start session.</source> <source>failed to start session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="234"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="204"/>
<source>Login</source> <source>Login</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/lightdmhelper.cpp" line="242"/> <location filename="../src/lock-backend/lightdmhelper.cpp" line="213"/>
<source>Guest</source> <source>Guest</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -1937,7 +1948,7 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/lockwidget.cpp" line="923"/> <location filename="../src/widgets/lockwidget.cpp" line="944"/>
<source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source> <source>Multiple users are logged in at the same time.Are you sure you want to %1 this system?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2015,12 +2026,12 @@
<context> <context>
<name>MyNetworkWidget</name> <name>MyNetworkWidget</name>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="36"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="35"/>
<source>LAN</source> <source>LAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/widgets/mynetworkwidget.cpp" line="38"/> <location filename="../src/widgets/mynetworkwidget.cpp" line="37"/>
<source>WLAN</source> <source>WLAN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -2028,12 +2039,13 @@
<context> <context>
<name>NumbersWidget</name> <name>NumbersWidget</name>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="160"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="161"/>
<source>&amp;&amp;?!</source> <source>&amp;&amp;?!</source>
<translation>&amp;&amp;?!</translation> <translation>&amp;&amp;?!</translation>
</message> </message>
<message> <message>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="174"/> <location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="175"/>
<location filename="../src/VirtualKeyboard/src/numberswidget.cpp" line="310"/>
<source>Return</source> <source>Return</source>
<translation></translation> <translation></translation>
</message> </message>
@ -2507,6 +2519,21 @@
<translation type="vanished"></translation> <translation type="vanished"></translation>
</message> </message>
</context> </context>
<context>
<name>UserListWidget</name>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="46"/>
<location filename="../src/widgets/userlistwidget.cpp" line="99"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/userlistwidget.cpp" line="48"/>
<location filename="../src/widgets/userlistwidget.cpp" line="101"/>
<source>Guest</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>Utils</name> <name>Utils</name>
<message> <message>
@ -2678,12 +2705,12 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="48"/> <location filename="../src/lock-backend/main.cpp" line="49"/>
<source>Backend for the ukui ScreenSaver.</source> <source>Backend for the ukui ScreenSaver.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/lock-backend/main.cpp" line="54"/> <location filename="../src/lock-backend/main.cpp" line="55"/>
<source>lock the screen by startup</source> <source>lock the screen by startup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -153,7 +153,7 @@ set(backend_SRC
dbusifs/upowerhelper.cpp dbusifs/upowerhelper.cpp
dbusifs/enginedevice.cpp dbusifs/enginedevice.cpp
dbusifs/device.cpp dbusifs/device.cpp
dbusifs/accountservicehelper.cpp dbusifs/accountshelper.cpp
dbusifs/sessionhelper.cpp dbusifs/sessionhelper.cpp
dbusifs/uniauthservice.cpp dbusifs/uniauthservice.cpp
dbusifs/biometrichelper.cpp dbusifs/biometrichelper.cpp

View File

@ -18,6 +18,7 @@
#include "charswidget.h" #include "charswidget.h"
#include "commondef.h" #include "commondef.h"
#include <QEvent>
#include <QDebug> #include <QDebug>
CharsWidget::CharsWidget(QWidget *parent/* = nullptr*/) CharsWidget::CharsWidget(QWidget *parent/* = nullptr*/)
@ -253,3 +254,25 @@ void CharsWidget::onBtnClicked(QChar charId)
Q_EMIT specialBtnClicked(keyName); Q_EMIT specialBtnClicked(keyName);
} }
} }
void CharsWidget::changeEvent(QEvent *event)
{
if(event->type() == QEvent::LanguageChange){
refreshTranslate();
}
}
void CharsWidget::refreshTranslate()
{
QMap<KBButton*, QRect>::iterator itGeometry = m_mapBtnGeometrys.begin();
for (; itGeometry != m_mapBtnGeometrys.end(); itGeometry ++) {
KBButton *button = itGeometry.key();
if (button) {
if (button->objectName() == "btn_more") {
button->setText(tr("More"));
}
}
}
}

View File

@ -39,8 +39,12 @@ Q_SIGNALS:
void specialBtnClicked(QString keyName); void specialBtnClicked(QString keyName);
void normalBtnClicked(QChar c); void normalBtnClicked(QChar c);
protected:
void changeEvent(QEvent *event);
private: private:
void initUI(); void initUI();
void refreshTranslate();
private: private:
QMap<KBButton*, QRect> m_mapBtnGeometrys; QMap<KBButton*, QRect> m_mapBtnGeometrys;

View File

@ -24,6 +24,7 @@
#include <QScrollBar> #include <QScrollBar>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QVariant> #include <QVariant>
#include <QEvent>
#include <QDebug> #include <QDebug>
NumbersWidget::NumbersWidget(QWidget *parent) NumbersWidget::NumbersWidget(QWidget *parent)
@ -291,3 +292,23 @@ void NumbersWidget::onBtnClicked(QChar charId)
Q_EMIT specialBtnClicked(keyName); Q_EMIT specialBtnClicked(keyName);
} }
} }
void NumbersWidget::changeEvent(QEvent *event)
{
if(event->type() == QEvent::LanguageChange){
refreshTranslate();
}
}
void NumbersWidget::refreshTranslate()
{
QMap<QWidget*, QRect>::iterator itGeometry = m_mapBtnGeometrys.begin();
for (; itGeometry != m_mapBtnGeometrys.end(); itGeometry ++) {
KBButton *button = qobject_cast<KBButton *>(itGeometry.key());
if (button) {
if (button->objectName() == "btn_return") {
button->setText(tr("Return"));
}
}
}
}

View File

@ -42,8 +42,12 @@ Q_SIGNALS:
void specialBtnClicked(QString keyName); void specialBtnClicked(QString keyName);
void narmalBtnClicked(QChar charId); void narmalBtnClicked(QChar charId);
protected:
void changeEvent(QEvent *event);
private: private:
void initUI(); void initUI();
void refreshTranslate();
private: private:
QMap<QWidget*, QRect> m_mapBtnGeometrys; QMap<QWidget*, QRect> m_mapBtnGeometrys;

View File

@ -41,7 +41,7 @@ VirtualKeyboardWidget::VirtualKeyboardWidget(QWidget *parent)
, m_isVertical(false) , m_isVertical(false)
{ {
Q_INIT_RESOURCE(keyboard); Q_INIT_RESOURCE(keyboard);
setAttribute(Qt::WA_TranslucentBackground);//背景透明 //setAttribute(Qt::WA_TranslucentBackground);//背景透明
//setAutoFillBackground(true); //setAutoFillBackground(true);
setWindowFlags(Qt::FramelessWindowHint | setWindowFlags(Qt::FramelessWindowHint |
Qt::WindowStaysOnTopHint | Qt::WindowStaysOnTopHint |

View File

@ -21,7 +21,6 @@
#include <QObject> #include <QObject>
#include <QSettings> #include <QSettings>
#include <QTranslator>
#include <QPixmap> #include <QPixmap>
#include <QGSettings> #include <QGSettings>

View File

@ -203,6 +203,7 @@ enum SessionStatus
#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 DM_SESSION_INTERFACE "org.freedesktop.DisplayManager.Session"
#define SSWND_DBUS_SERVICE "org.ukui.ScreenSaverWnd" #define SSWND_DBUS_SERVICE "org.ukui.ScreenSaverWnd"
#define SSWND_DBUS_PATH "/" #define SSWND_DBUS_PATH "/"
@ -310,5 +311,13 @@ typedef enum {
#define FD_DBUS_SERVICE "org.freedesktop.DBus" #define FD_DBUS_SERVICE "org.freedesktop.DBus"
#define FD_DBUS_PATH "/org/freedesktop/DBus" #define FD_DBUS_PATH "/org/freedesktop/DBus"
#define FD_DBUS_INTERFACE "org.freedesktop.DBus" #define FD_DBUS_INTERFACE "org.freedesktop.DBus"
#define FD_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
#define ACCOUNTS_DBUS_SERVICE "org.freedesktop.Accounts"
#define ACCOUNTS_DBUS_PATH "/org/freedesktop/Accounts"
#define ACCOUNTS_DBUS_INTERFACE "org.freedesktop.Accounts"
#define ACCOUNTS_USER_DBUS_INTERFACE "org.freedesktop.Accounts.User"
#define ACCOUNTS_USER_LDM_SERVICE_INTERFACE "org.freedesktop.DisplayManager.AccountsService"
#endif // DEFINETYPES_H #endif // DEFINETYPES_H

View File

@ -15,34 +15,27 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>. * along with this program; if not, see <http://www.gnu.org/licenses/>.
* *
**/ **/
#include "accountservicehelper.h" #include "accountshelper.h"
#include "definetypes.h"
#include <QDBusConnection> #include <QDBusConnection>
#include <QDBusInterface> #include <QDBusInterface>
#include <QDBusConnectionInterface> #include <QDBusConnectionInterface>
#include <QDebug> #include <QDebug>
#include "userinfo.h"
const static QString accountsService = QStringLiteral("org.freedesktop.Accounts"); AccountsHelper::AccountsHelper(QObject *parent)
const static QString accountsPath = QStringLiteral("/org/freedesktop/Accounts");
const static QString accountsInterface = QStringLiteral("org.freedesktop.Accounts");
const static QString propertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties");
const static QString accountsUserInterface = QStringLiteral("org.freedesktop.Accounts.User");
AccountServiceHelper::AccountServiceHelper(QObject *parent)
: QObject(parent) : QObject(parent)
{ {
m_accountsInterface = new QDBusInterface(accountsService, initData();
accountsPath, initConnections();
accountsInterface,
QDBusConnection::systemBus(),
this);
} }
AccountServiceHelper::~AccountServiceHelper() AccountsHelper::~AccountsHelper()
{ {
} }
QString AccountServiceHelper::getUserLanguageByName(QString strUserName) QString AccountsHelper::getUserLanguageByName(QString strUserName)
{ {
QString strLanguage = ""; QString strLanguage = "";
if(!m_accountsInterface) if(!m_accountsInterface)
@ -51,9 +44,9 @@ QString AccountServiceHelper::getUserLanguageByName(QString strUserName)
if(!userPath.isValid()) if(!userPath.isValid())
qWarning() << "Get UserPath error:" << userPath.error(); qWarning() << "Get UserPath error:" << userPath.error();
else { else {
QDBusInterface userIface(accountsService, userPath.value().path(), QDBusInterface userIface(ACCOUNTS_DBUS_SERVICE, userPath.value().path(),
propertiesInterface, QDBusConnection::systemBus()); FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusReply<QDBusVariant> languageReply = userIface.call("Get", accountsUserInterface, "Language"); QDBusReply<QDBusVariant> languageReply = userIface.call("Get", ACCOUNTS_USER_DBUS_INTERFACE, "Language");
if(!languageReply.isValid()) if(!languageReply.isValid())
qWarning() << "Get User's language error" << languageReply.error(); qWarning() << "Get User's language error" << languageReply.error();
else { else {
@ -63,7 +56,7 @@ QString AccountServiceHelper::getUserLanguageByName(QString strUserName)
return strLanguage; return strLanguage;
} }
QString AccountServiceHelper::getUserBackgroundByName(QString strUserName) QString AccountsHelper::getUserBackgroundByName(QString strUserName)
{ {
QString strBackground = ""; QString strBackground = "";
if(!m_accountsInterface) if(!m_accountsInterface)
@ -72,9 +65,9 @@ QString AccountServiceHelper::getUserBackgroundByName(QString strUserName)
if(!userPath.isValid()) if(!userPath.isValid())
qWarning() << "Get UserPath error:" << userPath.error(); qWarning() << "Get UserPath error:" << userPath.error();
else { else {
QDBusInterface userIface(accountsService, userPath.value().path(), QDBusInterface userIface(ACCOUNTS_DBUS_SERVICE, userPath.value().path(),
propertiesInterface, QDBusConnection::systemBus()); FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusReply<QDBusVariant> backgroundReply = userIface.call("Get", accountsUserInterface, "BackgroundFile"); QDBusReply<QDBusVariant> backgroundReply = userIface.call("Get", ACCOUNTS_USER_DBUS_INTERFACE, "BackgroundFile");
if(!backgroundReply.isValid()) if(!backgroundReply.isValid())
qWarning() << "Get User's background error" << backgroundReply.error(); qWarning() << "Get User's background error" << backgroundReply.error();
else { else {
@ -84,7 +77,7 @@ QString AccountServiceHelper::getUserBackgroundByName(QString strUserName)
return strBackground; return strBackground;
} }
QString AccountServiceHelper::getUserSessionByName(QString strUserName) QString AccountsHelper::getUserSessionByName(QString strUserName)
{ {
QString strSession = ""; QString strSession = "";
if(!m_accountsInterface) if(!m_accountsInterface)
@ -93,9 +86,9 @@ QString AccountServiceHelper::getUserSessionByName(QString strUserName)
if(!userPath.isValid()) if(!userPath.isValid())
qWarning() << "Get UserPath error:" << userPath.error(); qWarning() << "Get UserPath error:" << userPath.error();
else { else {
QDBusInterface userIface(accountsService, userPath.value().path(), QDBusInterface userIface(ACCOUNTS_DBUS_SERVICE, userPath.value().path(),
propertiesInterface, QDBusConnection::systemBus()); FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusReply<QDBusVariant> sessionReply = userIface.call("Get", accountsUserInterface, "XSession"); QDBusReply<QDBusVariant> sessionReply = userIface.call("Get", ACCOUNTS_USER_DBUS_INTERFACE, "XSession");
if(!sessionReply.isValid()) if(!sessionReply.isValid())
qWarning() << "Get User's xsession error" << sessionReply.error(); qWarning() << "Get User's xsession error" << sessionReply.error();
else { else {
@ -105,7 +98,7 @@ QString AccountServiceHelper::getUserSessionByName(QString strUserName)
return strSession; return strSession;
} }
QString AccountServiceHelper::getAccountBackground(uid_t uid) QString AccountsHelper::getAccountBackground(uid_t uid)
{ {
QString strBackground = ""; QString strBackground = "";
if(!m_accountsInterface) if(!m_accountsInterface)
@ -114,9 +107,9 @@ QString AccountServiceHelper::getAccountBackground(uid_t uid)
if(!userPath.isValid()) if(!userPath.isValid())
qWarning() << "Get UserPath error:" << userPath.error(); qWarning() << "Get UserPath error:" << userPath.error();
else { else {
QDBusInterface userIface(accountsService, userPath.value().path(), QDBusInterface userIface(ACCOUNTS_DBUS_SERVICE, userPath.value().path(),
propertiesInterface, QDBusConnection::systemBus()); FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusReply<QDBusVariant> backgroundReply = userIface.call("Get", accountsUserInterface, "BackgroundFile"); QDBusReply<QDBusVariant> backgroundReply = userIface.call("Get", ACCOUNTS_USER_DBUS_INTERFACE, "BackgroundFile");
if(!backgroundReply.isValid()) if(!backgroundReply.isValid())
qWarning() << "Get User's BackgroundFile error" << backgroundReply.error(); qWarning() << "Get User's BackgroundFile error" << backgroundReply.error();
else { else {
@ -125,3 +118,39 @@ QString AccountServiceHelper::getAccountBackground(uid_t uid)
} }
return strBackground; return strBackground;
} }
void AccountsHelper::initData()
{
if (!m_accountsInterface) {
m_accountsInterface = new QDBusInterface(ACCOUNTS_DBUS_SERVICE,
ACCOUNTS_DBUS_PATH,
ACCOUNTS_DBUS_INTERFACE,
QDBusConnection::systemBus(),
this);
}
}
void AccountsHelper::initConnections()
{
connect(m_accountsInterface, SIGNAL(UserAdded(QDBusObjectPath)), this, SIGNAL(UserAdded(QDBusObjectPath)));
connect(m_accountsInterface, SIGNAL(UserDeleted(QDBusObjectPath)), this, SIGNAL(UserRemoved(QDBusObjectPath)));
}
QStringList AccountsHelper::getUserList()
{
QStringList listUsers;
if (!m_accountsInterface)
return listUsers;
QDBusMessage ret = m_accountsInterface->call("ListCachedUsers");
QList<QVariant> outArgs = ret.arguments();
QVariant first = outArgs.at(0);
const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
QDBusObjectPath path;
dbusArgs.beginArray();
while (!dbusArgs.atEnd()) {
dbusArgs >> path;
listUsers << path.path();
}
dbusArgs.endArray();
return listUsers;
}

View File

@ -20,14 +20,16 @@
#include <QObject> #include <QObject>
#include <QDBusInterface> #include <QDBusInterface>
#include <QMap>
#include <QDBusObjectPath>
class AccountServiceHelper : public QObject class AccountsHelper : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AccountServiceHelper(QObject *parent = nullptr); explicit AccountsHelper(QObject *parent = nullptr);
virtual ~AccountServiceHelper(); virtual ~AccountsHelper();
QString getUserLanguageByName(QString strUserName); QString getUserLanguageByName(QString strUserName);
@ -37,6 +39,16 @@ public:
QString getAccountBackground(uid_t uid); QString getAccountBackground(uid_t uid);
QStringList getUserList();
Q_SIGNALS:
void UserAdded(const QDBusObjectPath &path);
void UserRemoved(const QDBusObjectPath &path);
private:
void initData();
void initConnections();
private: private:
QDBusInterface *m_accountsInterface = nullptr; QDBusInterface *m_accountsInterface = nullptr;
}; };

View File

@ -33,7 +33,7 @@
#include "switchuserutils.h" #include "switchuserutils.h"
#include "pamauthenticate.h" #include "pamauthenticate.h"
#include "upowerhelper.h" #include "upowerhelper.h"
#include "accountservicehelper.h" #include "accountshelper.h"
#include "sessionhelper.h" #include "sessionhelper.h"
#include "sessionwatcher.h" #include "sessionwatcher.h"
#include "freedesktophelper.h" #include "freedesktophelper.h"
@ -56,7 +56,7 @@ void DbusUpperInterface::initData()
{ {
m_bLockState = false; m_bLockState = false;
m_bSlpState = false; m_bSlpState = false;
m_accountsHelper = new AccountServiceHelper(this); m_accountsHelper = new AccountsHelper(this);
m_lightDmHelper = new LightDMHelper(m_accountsHelper, this); m_lightDmHelper = new LightDMHelper(m_accountsHelper, this);
m_login1Helper = new Login1Helper(this); m_login1Helper = new Login1Helper(this);
m_config = new Configuration(this); m_config = new Configuration(this);

View File

@ -37,7 +37,7 @@ class QJsonObject;
class PamAuthenticate; class PamAuthenticate;
class UsdHelper; class UsdHelper;
class UpowerHelper; class UpowerHelper;
class AccountServiceHelper; class AccountsHelper;
class SessionHelper; class SessionHelper;
class SessionWatcher; class SessionWatcher;
class BioAuthenticate; class BioAuthenticate;
@ -381,7 +381,7 @@ private:
PamAuthenticate *m_pamAuth = nullptr; PamAuthenticate *m_pamAuth = nullptr;
UsdHelper *m_usdHelper = nullptr; UsdHelper *m_usdHelper = nullptr;
UpowerHelper *m_upowerHelper = nullptr; UpowerHelper *m_upowerHelper = nullptr;
AccountServiceHelper *m_accountsHelper = nullptr; AccountsHelper *m_accountsHelper = nullptr;
bool lockState = false; bool lockState = false;
SessionHelper *m_sessionHelper = nullptr; SessionHelper *m_sessionHelper = nullptr;
SessionWatcher *m_sessionWatcher = nullptr; SessionWatcher *m_sessionWatcher = nullptr;

View File

@ -22,14 +22,21 @@
#include "securityuser.h" #include "securityuser.h"
#include <pwd.h> #include <pwd.h>
#include "proxymodel.h" #include "proxymodel.h"
#include "accountservicehelper.h" #include "accountshelper.h"
#include "definetypes.h"
#include <QDBusArgument>
#include <QDBusMessage>
#include <QVariantMap>
LightDMHelper::LightDMHelper(AccountServiceHelper *accountHelper, QObject *parent) LightDMHelper::LightDMHelper(AccountsHelper *accountHelper, QObject *parent)
: QLightDM::Greeter(parent) : QLightDM::Greeter(parent)
, m_sessionsModel(nullptr) , m_sessionsModel(nullptr)
, m_secUser(SecurityUser::instance()) , m_secUser(SecurityUser::instance())
, m_strCurUserName("") , m_strCurUserName("")
, m_accountServiceHelper(accountHelper) , m_accountServiceHelper(accountHelper)
, m_ldmSessions(new QMap<QString, std::shared_ptr<LightDMSessionInfo>>())
, m_mapUsers(new QMap<QString, UserInfoPtr>())
, m_dbusIfsLDM(nullptr)
{ {
//连接到lightdm //连接到lightdm
if(!connectToDaemonSync()){ if(!connectToDaemonSync()){
@ -46,11 +53,10 @@ void LightDMHelper::initData()
updateSessionsInfo(); updateSessionsInfo();
setSession(defaultSessionHint()); setSession(defaultSessionHint());
// 获取用户信息 // 获取用户信息
initLDMSessionsInfo();
m_isShowManualLogin = showManualLoginHint(); m_isShowManualLogin = showManualLoginHint();
if(!hideUsersHint()){ if(!hideUsersHint()){
m_modelUsers = new UsersModel(this); initAccountsUsersInfo();
m_modelUsers->setSourceModel(new QLightDM::UsersModel(this));
connect(m_modelUsers, &UsersModel::userInfoChanged, this, &LightDMHelper::onUsersChanged);
if(hasValidUsers() == 0) { if(hasValidUsers() == 0) {
m_isShowManualLogin = true; m_isShowManualLogin = true;
} }
@ -127,7 +133,7 @@ bool LightDMHelper::setCurrentUser(QString strUserName)
UserInfoPtr LightDMHelper::findUserByUid(uid_t id) UserInfoPtr LightDMHelper::findUserByUid(uid_t id)
{ {
for (auto userInfoPtr : m_listUsers) { for (auto userInfoPtr : m_mapUsers->values()) {
if (userInfoPtr->uid() == id) { if (userInfoPtr->uid() == id) {
return userInfoPtr; return userInfoPtr;
} }
@ -137,7 +143,7 @@ UserInfoPtr LightDMHelper::findUserByUid(uid_t id)
UserInfoPtr LightDMHelper::findUserByName(QString strName) UserInfoPtr LightDMHelper::findUserByName(QString strName)
{ {
for (auto userInfoPtr : m_listUsers) { for (auto userInfoPtr : m_mapUsers->values()) {
if (userInfoPtr->name() == strName) { if (userInfoPtr->name() == strName) {
return userInfoPtr; return userInfoPtr;
} }
@ -147,7 +153,7 @@ UserInfoPtr LightDMHelper::findUserByName(QString strName)
bool LightDMHelper::hasSameUser(const UserInfoPtr userInfoPtr) bool LightDMHelper::hasSameUser(const UserInfoPtr userInfoPtr)
{ {
for (auto user : m_listUsers) { for (auto user : m_mapUsers->values()) {
if (user->uid() == userInfoPtr->uid() if (user->uid() == userInfoPtr->uid()
&& user->name() == userInfoPtr->name()) { && user->name() == userInfoPtr->name()) {
return true; return true;
@ -158,12 +164,9 @@ bool LightDMHelper::hasSameUser(const UserInfoPtr userInfoPtr)
bool LightDMHelper::hasValidUsers() bool LightDMHelper::hasValidUsers()
{ {
if (!m_modelUsers)
return false;
int count = 0; int count = 0;
for(int i = 0; i < m_modelUsers->rowCount(QModelIndex()); i++){ for (auto user : m_mapUsers->values()) {
QString name = m_modelUsers->index(i).data(QLightDM::UsersModel::NameRole).toString(); if(m_secUser->isSecrityUser(user->name()))
if(m_secUser->isSecrityUser(name))
count++; count++;
} }
return (bool)(count>0); return (bool)(count>0);
@ -182,51 +185,18 @@ bool LightDMHelper::isSameUser(UserInfoPtr userA, UserInfoPtr userB)
void LightDMHelper::onUsersChanged() void LightDMHelper::onUsersChanged()
{ {
if (!m_modelUsers)
return ;
updateUsersInfo(); updateUsersInfo();
Q_EMIT usersInfoChanged(); Q_EMIT usersInfoChanged();
} }
void LightDMHelper::updateUsersInfo() void LightDMHelper::updateUsersInfo()
{ {
m_listUsers.clear(); QList<UserInfoPtr> userInfos = m_mapUsers->values();
if (m_modelUsers) { for (auto user : userInfos) {
for(int i = 0; i < m_modelUsers->rowCount(QModelIndex()); i++){ if (isUserLoggined(user->name())) {
QString name = m_modelUsers->index(i).data(QLightDM::UsersModel::NameRole).toString(); user->updateLoggedIn(true);
if(m_secUser->isSecrityUser(name)) { } else {
std::shared_ptr<UserInfo> userInfoPtr = std::make_shared<UserInfo>(); user->updateLoggedIn(false);
userInfoPtr->updateName(name);
uid_t uid = m_modelUsers->index(i).data(QLightDM::UsersModel::UidRole).toUInt();
userInfoPtr->updateUid(uid);
QString strRealName = m_modelUsers->index(i).data(QLightDM::UsersModel::RealNameRole).toString();
if (strRealName.isEmpty()) {
strRealName = name;
}
userInfoPtr->updateFullName(strRealName);
QString strBackGround = m_modelUsers->index(i).data(QLightDM::UsersModel::BackgroundPathRole).toString();
if (!strBackGround.isEmpty() && QFileInfo(strBackGround).exists()){
userInfoPtr->updateBackground(strBackGround);
} else {
if (m_accountServiceHelper) {
strBackGround = m_accountServiceHelper->getAccountBackground(uid);
if (!strBackGround.isEmpty() && QFileInfo(strBackGround).exists()){
userInfoPtr->updateBackground(strBackGround);
}
}
}
QString strImgHead = m_modelUsers->index(i).data(QLightDM::UsersModel::ImagePathRole).toString();
if (!strImgHead.isEmpty() && QFileInfo(strImgHead).exists()){
userInfoPtr->updateHeadImage(strImgHead);
}
bool isLoggedIn = m_modelUsers->index(i).data(QLightDM::UsersModel::LoggedInRole).toBool();
userInfoPtr->updateLoggedIn(isLoggedIn);
if (!hasSameUser(userInfoPtr)) {
m_listUsers.append(userInfoPtr);
}
}
} }
} }
if (m_isShowManualLogin) { if (m_isShowManualLogin) {
@ -234,7 +204,8 @@ void LightDMHelper::updateUsersInfo()
userInfoPtr->updateFullName(tr("Login")); userInfoPtr->updateFullName(tr("Login"));
userInfoPtr->updateName("*login"); userInfoPtr->updateName("*login");
if (!hasSameUser(userInfoPtr)) { if (!hasSameUser(userInfoPtr)) {
m_listUsers.append(userInfoPtr); const QString path = userInfoPtr->path().isEmpty() ? userInfoPtr->name() : userInfoPtr->path();
m_mapUsers->insert(path, userInfoPtr);
} }
} }
if (hasGuestAccountHint()) { if (hasGuestAccountHint()) {
@ -242,7 +213,8 @@ void LightDMHelper::updateUsersInfo()
userInfoPtr->updateFullName(tr("Guest")); userInfoPtr->updateFullName(tr("Guest"));
userInfoPtr->updateName("*guest"); userInfoPtr->updateName("*guest");
if (!hasSameUser(userInfoPtr)) { if (!hasSameUser(userInfoPtr)) {
m_listUsers.append(userInfoPtr); const QString path = userInfoPtr->path().isEmpty() ? userInfoPtr->name() : userInfoPtr->path();
m_mapUsers->insert(path, userInfoPtr);
} }
} }
} }
@ -261,5 +233,201 @@ void LightDMHelper::updateSessionsInfo()
QList<UserInfoPtr> LightDMHelper::getUsersInfo() QList<UserInfoPtr> LightDMHelper::getUsersInfo()
{ {
return m_listUsers; return m_mapUsers->values();
}
bool LightDMHelper::isUserLoggined(const QString &strUserName)
{
QList<std::shared_ptr<LightDMSessionInfo>> sessionList = m_ldmSessions->values();
auto it = std::find_if(sessionList.begin(), sessionList.end(), [strUserName](std::shared_ptr<LightDMSessionInfo> &session) {
return session->userName() == strUserName;
});
if (it != sessionList.end()) {
return true;
}
return false;
}
void LightDMHelper::initLDMSessionsInfo()
{
if (!m_dbusIfsLDM) {
m_dbusIfsLDM = new QDBusInterface(DM_DBUS_SERVICE, DM_DBUS_PATH, DM_DBUS_INTERFACE, QDBusConnection::systemBus(), this);
connect(m_dbusIfsLDM, SIGNAL(SessionAdded(QDBusObjectPath)), this, SLOT(onLDMSessionAdded(QDBusObjectPath)));
connect(m_dbusIfsLDM, SIGNAL(SessionRemoved(QDBusObjectPath)), this, SLOT(onLDMSessionRemoved(QDBusObjectPath)));
QStringList listSessions;
QDBusInterface ifLDMProp(DM_DBUS_SERVICE, DM_DBUS_PATH, FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusMessage ret = ifLDMProp.call("GetAll", DM_DBUS_INTERFACE);
QList<QVariant> outArgs = ret.arguments();
QVariant first = outArgs.at(0);
const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
dbusArgs.beginMap();
while(!dbusArgs.atEnd()) {
QString key;
QVariant value;
dbusArgs.beginMapEntry();
dbusArgs >> key >> value;
if (key == "Sessions") {
const QDBusArgument &dbusObjPaths = value.value<QDBusArgument>();
QDBusObjectPath path;
dbusObjPaths.beginArray();
while (!dbusObjPaths.atEnd()) {
dbusObjPaths >> path;
listSessions << path.path();
}
dbusObjPaths.endArray();
}
dbusArgs.endMapEntry();
}
dbusArgs.endMap();
for (auto session : listSessions) {
std::shared_ptr<LightDMSessionInfo> ldmSessionInfo(new LightDMSessionInfo(session, this));
m_ldmSessions->insert(session, ldmSessionInfo);
}
}
}
void LightDMHelper::onLDMSessionAdded(QDBusObjectPath objPath)
{
qDebug()<< "Add LDM Session, path:"<<objPath.path();
if (m_ldmSessions->contains(objPath.path())) {
return;
}
std::shared_ptr<LightDMSessionInfo> ldmSessionInfo(new LightDMSessionInfo(objPath.path(), this));
m_ldmSessions->insert(objPath.path(), ldmSessionInfo);
onUsersChanged();
}
void LightDMHelper::onLDMSessionRemoved(QDBusObjectPath objPath)
{
if (!m_ldmSessions->contains(objPath.path())) {
return;
}
const std::shared_ptr<LightDMSessionInfo> session = m_ldmSessions->value(objPath.path());
m_ldmSessions->remove(objPath.path());
onUsersChanged();
}
void LightDMHelper::initAccountsUsersInfo()
{
if (m_accountServiceHelper) {
QStringList listUsers = m_accountServiceHelper->getUserList();
for (auto user : listUsers) {
LocalUserInfoPtr userInfo(new LocalUserInfo(user, this));
connect(userInfo.get(), &UserInfo::userPropChanged, this, &LightDMHelper::onUsersChanged);
m_mapUsers->insert(user, userInfo);
}
connect(m_accountServiceHelper, SIGNAL(UserAdded(QDBusObjectPath)), this, SLOT(onUserAdded(QDBusObjectPath)));
connect(m_accountServiceHelper, SIGNAL(UserRemoved(QDBusObjectPath)), this, SLOT(onUserRemoved(QDBusObjectPath)));
}
}
void LightDMHelper::onUserAdded(QDBusObjectPath objPath)
{
qDebug()<< "Add Accounts User, path:"<<objPath.path();
if (m_mapUsers->contains(objPath.path())) {
return;
}
LocalUserInfoPtr userInfo(new LocalUserInfo(objPath.path(), this));
connect(userInfo.get(), &UserInfo::userPropChanged, this, &LightDMHelper::onUsersChanged);
m_mapUsers->insert(objPath.path(), userInfo);
onUsersChanged();
}
void LightDMHelper::onUserRemoved(QDBusObjectPath objPath)
{
if (!m_mapUsers->contains(objPath.path())) {
return;
}
const UserInfoPtr userInfo = m_mapUsers->value(objPath.path());
qDebug()<< "Remove Accounts User, name:"<<userInfo->name();
m_mapUsers->remove(objPath.path());
onUsersChanged();
}
LightDMSessionInfo::LightDMSessionInfo(const QString &strPath, QObject* parent)
: QObject(parent)
, m_strPath(strPath)
{
initData();
initConnections();
}
LightDMSessionInfo::~LightDMSessionInfo()
{
if (m_propertiesChangedConnected) {
QDBusConnection::systemBus().disconnect(DM_DBUS_SERVICE,
m_strPath,
FD_PROPERTIES_INTERFACE,
"PropertiesChanged",
this,
SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
m_propertiesChangedConnected = false;
}
}
void LightDMSessionInfo::initData()
{
QDBusInterface ifaceExtra(DM_DBUS_SERVICE, m_strPath, FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusMessage ret = ifaceExtra.call("GetAll", DM_SESSION_INTERFACE);
QList<QVariant> outArgs = ret.arguments();
QVariant first = outArgs.at(0);
const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
dbusArgs.beginMap();
while(!dbusArgs.atEnd()) {
QString key;
QVariant value;
dbusArgs.beginMapEntry();
dbusArgs >> key >> value;
if (key == "Seat") {
m_strSeatPath = value.toString();
} else if (key == "UserName") {
m_strUserName = value.toString();
}
dbusArgs.endMapEntry();
}
dbusArgs.endMap();
}
void LightDMSessionInfo::initConnections()
{
if (!m_propertiesChangedConnected) {
QDBusConnection::systemBus().connect(DM_DBUS_SERVICE,
m_strPath,
FD_PROPERTIES_INTERFACE,
"PropertiesChanged",
this,
SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
m_propertiesChangedConnected = true;
}
}
void LightDMSessionInfo::onPropertiesChanged(const QString& interfaceName,
const QVariantMap& changedProperties,
const QStringList& invalidatedProperties)
{
Q_UNUSED(invalidatedProperties);
if (interfaceName == DM_SESSION_INTERFACE) {
QVariantMap::const_iterator itVar = changedProperties.constBegin();
for ( ; itVar != changedProperties.constEnd(); itVar++) {
QVariant varValue = itVar.value();
if(itVar.key() == "Seat") {
m_strSeatPath = varValue.toString();
} else if(itVar.key() == "UserName") {
m_strUserName = varValue.toString();
}
}
}
}
QDebug operator <<(QDebug stream, const LightDMSessionInfo &sessionInfo)
{
stream << "["
<< sessionInfo.path()
<< sessionInfo.userName()
<< sessionInfo.seatPath()
<< "]";
return stream;
} }

View File

@ -24,11 +24,13 @@
#include <QLightDM/UsersModel> #include <QLightDM/UsersModel>
#include <QList> #include <QList>
#include <QModelIndex> #include <QModelIndex>
#include <QDBusInterface>
#include "userinfo.h" #include "userinfo.h"
class SecurityUser; class SecurityUser;
class UsersModel; class UsersModel;
class AccountServiceHelper; class AccountsHelper;
class LightDMSessionInfo;
/** /**
* @brief lightdm工具类 * @brief lightdm工具类
* *
@ -42,7 +44,7 @@ public:
* *
* @param parent * @param parent
*/ */
explicit LightDMHelper(AccountServiceHelper *accountHelper, QObject *parent = nullptr); explicit LightDMHelper(AccountsHelper *accountHelper, QObject *parent = nullptr);
public: public:
/** /**
@ -103,6 +105,14 @@ public Q_SLOTS:
*/ */
void onUsersChanged(); void onUsersChanged();
void onLDMSessionAdded(QDBusObjectPath objPath);
void onLDMSessionRemoved(QDBusObjectPath objPath);
void onUserAdded(QDBusObjectPath objPath);
void onUserRemoved(QDBusObjectPath objPath);
Q_SIGNALS: Q_SIGNALS:
/** /**
* @brief * @brief
@ -153,16 +163,51 @@ private:
void updateSessionsInfo(); void updateSessionsInfo();
void initLDMSessionsInfo();
bool isUserLoggined(const QString &strUserName);
void initAccountsUsersInfo();
private: private:
bool m_isShowManualLogin; /**< 是否显示手动登录 */ bool m_isShowManualLogin; /**< 是否显示手动登录 */
QString m_strSession; /**< 当前会话 */ QString m_strSession; /**< 当前会话 */
QString m_strCurUserName; /**< 当前选择用户 */ QString m_strCurUserName; /**< 当前选择用户 */
QList<UserInfoPtr> m_listUsers; /**< 用户信息列表 */
SecurityUser *m_secUser = nullptr; /**< 安全用户信息指针 */ SecurityUser *m_secUser = nullptr; /**< 安全用户信息指针 */
QLightDM::SessionsModel *m_sessionsModel; /**< lightdm 会话数据指针 */ QLightDM::SessionsModel *m_sessionsModel; /**< lightdm 会话数据指针 */
QList<QString> m_listSessions; /**< 会话列表 */ QList<QString> m_listSessions; /**< 会话列表 */
UsersModel *m_modelUsers = nullptr; /**< lightdm 用户数据指针 */ QMap<QString, UserInfoPtr> *m_mapUsers; /**< accounts 用户信息列表指针 */
AccountServiceHelper *m_accountServiceHelper = nullptr; AccountsHelper *m_accountServiceHelper = nullptr;
QMap<QString, std::shared_ptr<LightDMSessionInfo>> *m_ldmSessions;
QDBusInterface *m_dbusIfsLDM;
}; };
class LightDMSessionInfo : public QObject
{
Q_OBJECT
public:
explicit LightDMSessionInfo(const QString &strPath, QObject* parent = nullptr);
virtual ~LightDMSessionInfo();
inline QString path() const { return m_strPath; }
inline QString userName() const { return m_strUserName; }
inline QString seatPath() const { return m_strSeatPath; }
private:
void initData();
void initConnections();
private Q_SLOTS:
void onPropertiesChanged(const QString&, const QVariantMap&, const QStringList&);
private:
QString m_strPath;
bool m_propertiesChangedConnected = false;
QString m_strSeatPath;
QString m_strUserName;
};
QDebug operator <<(QDebug stream, const LightDMSessionInfo &userInfo);
#endif // LIGHTDMHELPER_H #endif // LIGHTDMHELPER_H

View File

@ -0,0 +1,71 @@
#include "languagesetting.h"
#include <QApplication>
#include "definetypes.h"
#include <QDebug>
LanguageSetting* LanguageSetting::m_singleInstance = nullptr;
LanguageSetting::LanguageSetting(QObject *parent)
: QObject(parent)
{
}
LanguageSetting::~LanguageSetting()
{
}
LanguageSetting* LanguageSetting::instance(QObject *parent)
{
if(m_singleInstance == nullptr)
m_singleInstance = new LanguageSetting(parent);
return m_singleInstance;
}
void LanguageSetting::onLanguageChanged(QString languageCode)
{
if(languageCode == "")
return ;
if(m_strLanguageCode == languageCode) {
return;
}
qDebug()<<"onLanguageChanged "<<languageCode;
Q_EMIT languageChanged(false);
if (m_translator) {
qApp->removeTranslator(m_translator);
delete m_translator;
m_translator = nullptr;
}
m_translator = new QTranslator(this);
QString qmFile;
if (languageCode.startsWith("zh_CN")) { /*这里写的有问题忘记之前为什么写了会导致繁体也会加载zh_CN*/
qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg("zh_CN");
setenv("LANGUAGE","zh_CN",1);
setenv("LANG","zh_CN",1);
setlocale(LC_ALL,"zh_CN.utf8");
QLocale lang("zh_CN");
/*这里设置一个QLocale的默认值用来影响插件的语言。插件加载翻译文件时不使用QLocale::system().name()来获取语言,
* 使QLocale local; local.name() ,*/
QLocale::setDefault(lang);
} else {
qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg(languageCode);
setenv("LANGUAGE",languageCode.toLatin1().data(),1);
setenv("LANG",languageCode.toLatin1().data(),1);
setlocale(LC_ALL,"");
QLocale lang(languageCode);
/*这里设置一个QLocale的默认值用来影响插件的语言。插件加载翻译文件时不使用QLocale::system().name()来获取语言,
* 使QLocale local; local.name() ,*/
QLocale::setDefault(languageCode);
}
m_translator->load(qmFile);
qApp->installTranslator(m_translator);
qDebug() << "load translation file " << qmFile;
m_strLanguageCode = languageCode;
Q_EMIT languageChanged(true);
}

View File

@ -0,0 +1,29 @@
#ifndef LANGUAGESETTING_H
#define LANGUAGESETTING_H
#include <QObject>
#include <QTranslator>
class LanguageSetting : public QObject
{
Q_OBJECT
public:
static LanguageSetting *instance(QObject *parent = nullptr);
void onLanguageChanged(QString languageCode);
Q_SIGNALS:
void languageChanged(bool isCompleted);
private:
LanguageSetting(QObject *parent = nullptr);
virtual ~LanguageSetting();
private:
static LanguageSetting *m_singleInstance;
QTranslator *m_translator = nullptr;
QString m_strLanguageCode;
};
#endif // LANGUAGESETTING_H

View File

@ -178,7 +178,26 @@ void LockDialogModel::updateSessionsInfo(QStringList list)
void LockDialogModel::updateUsersInfo(QList<UserInfoPtr> list) void LockDialogModel::updateUsersInfo(QList<UserInfoPtr> list)
{ {
m_listUsersInfo = list; for (auto userinfo : list) {
if (m_listUsersInfo.contains(userinfo)) {
UserInfoPtr changedUserInfo = findUserByName(userinfo->name());
if (changedUserInfo) {
changedUserInfo->updateUid(userinfo->uid());
changedUserInfo->updateFullName(userinfo->fullName());
changedUserInfo->updateHeadImage(userinfo->headImage());
changedUserInfo->updateLang(userinfo->lang());
changedUserInfo->updateLoggedIn(userinfo->isLoggedIn());
changedUserInfo->updateBackground(userinfo->backGround());
}
} else {
m_listUsersInfo.append(userinfo);
}
}
foreach (auto userinfo, m_listUsersInfo) {
if (!list.contains(userinfo)) {
m_listUsersInfo.removeOne(userinfo);
}
}
Q_EMIT usersInfoChanged(); Q_EMIT usersInfoChanged();
} }
@ -190,7 +209,26 @@ void LockDialogModel::updateAgreementInfo(AgreementInfoPtr agreementInfo)
void LockDialogModel::onUsersInfoChanged(QList<UserInfoPtr> list) void LockDialogModel::onUsersInfoChanged(QList<UserInfoPtr> list)
{ {
m_listUsersInfo = list; for (auto userinfo : list) {
if (m_listUsersInfo.contains(userinfo)) {
UserInfoPtr changedUserInfo = findUserByName(userinfo->name());
if (changedUserInfo) {
changedUserInfo->updateUid(userinfo->uid());
changedUserInfo->updateFullName(userinfo->fullName());
changedUserInfo->updateHeadImage(userinfo->headImage());
changedUserInfo->updateLang(userinfo->lang());
changedUserInfo->updateLoggedIn(userinfo->isLoggedIn());
changedUserInfo->updateBackground(userinfo->backGround());
}
} else {
m_listUsersInfo.append(userinfo);
}
}
foreach (auto userinfo, m_listUsersInfo) {
if (!list.contains(userinfo)) {
m_listUsersInfo.removeOne(userinfo);
}
}
Q_EMIT usersInfoChanged(); Q_EMIT usersInfoChanged();
} }

View File

@ -42,6 +42,7 @@
#include "screensaverwndadaptor.h" #include "screensaverwndadaptor.h"
#include "pluginsloader.h" #include "pluginsloader.h"
#include "msysdbus.h" #include "msysdbus.h"
#include "languagesetting.h"
FullBackgroundWidget *window = nullptr; FullBackgroundWidget *window = nullptr;
@ -122,12 +123,7 @@ int main(int argc, char *argv[])
qInfo()<<"Start "<<app.arguments(); qInfo()<<"Start "<<app.arguments();
//加载翻译文件 //加载翻译文件
QString locale = QLocale::system().name(); LanguageSetting::instance()->onLanguageChanged(QLocale::system().name());
QTranslator translator;
QString qmFile = QString(WORKING_DIRECTORY"/i18n_qm/%1.qm").arg(locale);
translator.load(qmFile);
app.installTranslator(&translator);
qDebug() << "load translation file " << qmFile;
window = new FullBackgroundWidget(lockDialogModel); window = new FullBackgroundWidget(lockDialogModel);

View File

@ -17,9 +17,16 @@
**/ **/
#include "userinfo.h" #include "userinfo.h"
#include "global_utils.h" #include "global_utils.h"
#include "definetypes.h"
#include <QDBusConnection>
#include <QDBusMessage>
#include <QDBusInterface>
#include <QDBusArgument>
#include <QFile>
UserInfo::UserInfo() UserInfo::UserInfo(QObject *parent)
: m_isLoggedIn(false) : QObject(parent)
, m_isLoggedIn(false)
, m_uId(-1) , m_uId(-1)
, m_strBackground(DEFAULT_BACKGROUND_PATH) , m_strBackground(DEFAULT_BACKGROUND_PATH)
, m_strLang(qgetenv("LANG")) , m_strLang(qgetenv("LANG"))
@ -29,7 +36,8 @@ UserInfo::UserInfo()
} }
UserInfo::UserInfo(const UserInfo &userInfo) UserInfo::UserInfo(const UserInfo &userInfo)
: m_isLoggedIn(userInfo.m_isLoggedIn) : QObject(userInfo.parent())
, m_isLoggedIn(userInfo.m_isLoggedIn)
, m_uId(userInfo.m_uId) , m_uId(userInfo.m_uId)
, m_strHeadImage(userInfo.m_strHeadImage) , m_strHeadImage(userInfo.m_strHeadImage)
, m_strFullName(userInfo.m_strFullName) , m_strFullName(userInfo.m_strFullName)
@ -50,22 +58,11 @@ bool UserInfo::operator==(const UserInfo &userInfo) const
return userInfo.uid() == m_uId && userInfo.name() == m_strName; return userInfo.uid() == m_uId && userInfo.name() == m_strName;
} }
UserInfo& UserInfo::operator=(const UserInfo &userInfo)
{
if (this == &userInfo) return *this;
updateLoggedIn(userInfo.isLoggedIn());
updateUid(userInfo.uid());
updateHeadImage(userInfo.headImage());
updateFullName(userInfo.fullName());
updateBackground(userInfo.backGround());
updateLang(userInfo.lang());
updateName(userInfo.name());
return *this;
}
void UserInfo::updateLoggedIn(const bool &isLoggedIn) void UserInfo::updateLoggedIn(const bool &isLoggedIn)
{ {
if (isLoggedIn == m_isLoggedIn) {
return ;
}
m_isLoggedIn = isLoggedIn; m_isLoggedIn = isLoggedIn;
} }
@ -112,3 +109,182 @@ QDebug operator <<(QDebug stream, const UserInfo &userInfo)
<< "]"; << "]";
return stream; return stream;
} }
LocalUserInfo::LocalUserInfo(const uid_t &uId, QObject* parent)
: UserInfo(parent)
, m_strPath("/org/freedesktop/Accounts/User" + QString::number(uId))
{
initData();
initConnections();
}
LocalUserInfo::LocalUserInfo(const QString &strPath, QObject* parent)
: UserInfo(parent)
, m_strPath(strPath)
{
initData();
initConnections();
}
LocalUserInfo::LocalUserInfo(const LocalUserInfo &localUser)
: UserInfo(localUser)
, m_strPath(localUser.path())
{
if (m_strPath.isEmpty()) {
m_strPath = QString("/org/freedesktop/Accounts/User" + QString::number(localUser.uid()));
}
initConnections();
}
LocalUserInfo::~LocalUserInfo()
{
if (m_propertiesChangedConnected) {
QDBusConnection::systemBus().disconnect(ACCOUNTS_DBUS_SERVICE,
m_strPath,
FD_PROPERTIES_INTERFACE,
"PropertiesChanged",
this,
SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
m_propertiesChangedConnected = false;
}
}
void LocalUserInfo::initData()
{
QDBusInterface ifaceExtra(ACCOUNTS_DBUS_SERVICE, m_strPath, FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
QDBusMessage ret = ifaceExtra.call("GetAll", ACCOUNTS_USER_LDM_SERVICE_INTERFACE);
QList<QVariant> outArgs = ret.arguments();
QVariant first = outArgs.at(0);
const QDBusArgument &dbusArgsExtra = first.value<QDBusArgument>();
dbusArgsExtra.beginMap();
while(!dbusArgsExtra.atEnd()) {
QString key;
QVariant value;
dbusArgsExtra.beginMapEntry();
dbusArgsExtra >> key >> value;
if(key == "BackgroundFile") {
QString strBackground = value.toString();
if(strBackground.isEmpty() || !QFile(strBackground).exists() || !QFile(strBackground).size()) {
m_strBackground = DEFAULT_BACKGROUND_PATH;
} else {
m_strBackground = strBackground;
}
}
dbusArgsExtra.endMapEntry();
}
dbusArgsExtra.endMap();
QDBusInterface iface(ACCOUNTS_DBUS_SERVICE, m_strPath, FD_PROPERTIES_INTERFACE, QDBusConnection::systemBus());
ret = iface.call("GetAll", ACCOUNTS_USER_DBUS_INTERFACE);
outArgs = ret.arguments();
first = outArgs.at(0);
const QDBusArgument &dbusArgs = first.value<QDBusArgument>();
dbusArgs.beginMap();
while(!dbusArgs.atEnd()) {
QString key;
QVariant value;
dbusArgs.beginMapEntry();
dbusArgs >> key >> value;
if(key == "UserName") {
m_strName = value.toString();
} else if(key == "RealName") {
m_strFullName = value.toString();
} else if(key == "IconFile") {
QString strHeadImage = value.toString();
if(strHeadImage.isEmpty() || !QFile(strHeadImage).exists() || !QFile(strHeadImage).size()) {
m_strHeadImage = getDefaultFace();
} else {
m_strHeadImage = strHeadImage;
}
} else if(key == "Uid") {
m_uId = value.toUInt();
} else if(key == "Language") {
m_strLang = value.toString();
} else if (key == "BackgroundFile") {
QString strBackground = value.toString();
if(!strBackground.isEmpty() && QFile(strBackground).exists() && QFile(strBackground).size()) {
m_strBackground = strBackground;
}
}
dbusArgs.endMapEntry();
}
dbusArgs.endMap();
if(m_strFullName.isEmpty()) {
m_strFullName = m_strName;
}
}
void LocalUserInfo::initConnections()
{
if (!m_propertiesChangedConnected) {
QDBusConnection::systemBus().connect(ACCOUNTS_DBUS_SERVICE,
m_strPath,
FD_PROPERTIES_INTERFACE,
"PropertiesChanged",
this,
SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
m_propertiesChangedConnected = true;
}
}
void LocalUserInfo::onPropertiesChanged(const QString& interfaceName,
const QVariantMap& changedProperties,
const QStringList& invalidatedProperties)
{
Q_UNUSED(invalidatedProperties);
if (interfaceName == ACCOUNTS_USER_DBUS_INTERFACE) {
QVariantMap::const_iterator itVar = changedProperties.constBegin();
bool isChanged = false;
for ( ; itVar != changedProperties.constEnd(); itVar++) {
QVariant varValue = itVar.value();
if(itVar.key() == "UserName") {
m_strName = varValue.toString();
isChanged = true;
} else if(itVar.key() == "RealName") {
m_strFullName = varValue.toString();
isChanged = true;
} else if(itVar.key() == "IconFile") {
QString strHeadImage = varValue.toString();
if(strHeadImage.isEmpty() || !QFile(strHeadImage).exists() || !QFile(strHeadImage).size()) {
m_strHeadImage = getDefaultFace();
} else {
m_strHeadImage = strHeadImage;
}
isChanged = true;
} else if(itVar.key() == "Uid") {
m_uId = varValue.toUInt();
isChanged = true;
} else if(itVar.key() == "Language") {
m_strLang = varValue.toString();
isChanged = true;
} else if (itVar.key() == "BackgroundFile") {
QString strBackground = varValue.toString();
if(!strBackground.isEmpty() && QFile(strBackground).exists() && QFile(strBackground).size()) {
m_strBackground = strBackground;
isChanged = true;
}
}
}
if(m_strFullName.isEmpty()) {
m_strFullName = m_strName;
}
if (isChanged)
Q_EMIT userPropChanged(m_strName);
}
}
QDebug operator <<(QDebug stream, const LocalUserInfo &userInfo)
{
stream << "["
<< userInfo.path()
<< userInfo.uid()
<< userInfo.name()
<< userInfo.fullName()
<< userInfo.headImage()
<< userInfo.backGround()
<< userInfo.isLoggedIn()
<< userInfo.lang()
<< "]";
return stream;
}

View File

@ -22,15 +22,15 @@
#include <memory> #include <memory>
#include <QDebug> #include <QDebug>
class UserInfo class UserInfo : public QObject
{ {
Q_OBJECT
public: public:
UserInfo(); explicit UserInfo(QObject *parent = nullptr);
UserInfo(const UserInfo &userInfo); explicit UserInfo(const UserInfo &userInfo);
virtual ~UserInfo(); virtual ~UserInfo();
bool operator==(const UserInfo &userInfo) const; bool operator==(const UserInfo &userInfo) const;
UserInfo& operator=(const UserInfo &userInfo);
public: public:
inline bool isLoggedIn() const { return m_isLoggedIn; } inline bool isLoggedIn() const { return m_isLoggedIn; }
@ -41,6 +41,9 @@ public:
inline QString lang() const { return m_strLang; } inline QString lang() const { return m_strLang; }
inline QString name() const { return m_strName; } inline QString name() const { return m_strName; }
virtual inline QString path() const { return QString(); }
public:
void updateLoggedIn(const bool &isLoggedIn); void updateLoggedIn(const bool &isLoggedIn);
void updateUid(const uid_t &id); void updateUid(const uid_t &id);
void updateHeadImage(const QString &path); void updateHeadImage(const QString &path);
@ -49,6 +52,9 @@ public:
void updateLang(const QString &lang); void updateLang(const QString &lang);
void updateName(const QString &name); void updateName(const QString &name);
Q_SIGNALS:
void userPropChanged(const QString &userName);
protected: protected:
bool m_isLoggedIn; // 是否已登录 bool m_isLoggedIn; // 是否已登录
uid_t m_uId; // 用户 uid uid_t m_uId; // 用户 uid
@ -63,4 +69,32 @@ typedef std::shared_ptr<UserInfo> UserInfoPtr;
QDebug operator <<(QDebug stream, const UserInfo &userInfo); QDebug operator <<(QDebug stream, const UserInfo &userInfo);
class LocalUserInfo : public UserInfo
{
Q_OBJECT
public:
explicit LocalUserInfo(const uid_t &uId, QObject* parent = nullptr);
explicit LocalUserInfo(const QString &strPath, QObject* parent = nullptr);
explicit LocalUserInfo(const LocalUserInfo &localUser);
virtual ~LocalUserInfo();
inline QString path() const override { return m_strPath; }
private:
void initData();
void initConnections();
private Q_SLOTS:
void onPropertiesChanged(const QString&, const QVariantMap&, const QStringList&);
private:
QString m_strPath;
bool m_propertiesChangedConnected = false;
};
typedef std::shared_ptr<LocalUserInfo> LocalUserInfoPtr;
QDebug operator <<(QDebug stream, const LocalUserInfo &userInfo);
#endif // USERINFO_H #endif // USERINFO_H

View File

@ -17,8 +17,17 @@
#include <sys/types.h> #include <sys/types.h>
#include <pwd.h> #include <pwd.h>
#include "../lock-dialog/pam-tally.h" #include "../lock-dialog/pam-tally.h"
#include "global_utils.h"
AuthDialog::AuthDialog(LockDialogModel *model, UserInfo userInfo, QWidget *parent) #define WIDGET_HEIGHT_HEADTIP (40*scale)
#define WIDGET_HEIGHT_HEADIMAGE (154*scale)
#define WIDGET_HEIGHT_USERNAME (40*scale)
#define WIDGET_HEIGHT_PASSWDEDIT (80*scale)
#define WIDGET_HEIGHT_SPACING (16*scale)
#define WIDGET_HEIGHT_CUSTOM (WIDGET_HEIGHT_HEADIMAGE+WIDGET_HEIGHT_USERNAME+WIDGET_HEIGHT_PASSWDEDIT+WIDGET_HEIGHT_SPACING*2)
#define WIDGET_HEIGHT_LOGINOPTS (104*scale)
AuthDialog::AuthDialog(LockDialogModel *model, UserInfoPtr userInfo, QWidget *parent)
: QWidget(parent) : QWidget(parent)
, m_modelLockDialog(model) , m_modelLockDialog(model)
, m_isLockingFlg(false) , m_isLockingFlg(false)
@ -33,7 +42,7 @@ void AuthDialog::initUI()
{ {
QVBoxLayout *mainLayout = new QVBoxLayout(this); QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->setAlignment(Qt::AlignCenter); mainLayout->setAlignment(Qt::AlignCenter);
mainLayout->setSpacing(16); mainLayout->setSpacing(WIDGET_HEIGHT_SPACING);
mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setContentsMargins(0, 0, 0, 0);
m_curFontSize = m_modelLockDialog->getCurFontSize(); m_curFontSize = m_modelLockDialog->getCurFontSize();
m_ptToPx = m_modelLockDialog->getPtToPx(); m_ptToPx = m_modelLockDialog->getPtToPx();
@ -50,12 +59,12 @@ void AuthDialog::initUI()
// 密码输入框 // 密码输入框
m_editWidget = new QWidget(this); m_editWidget = new QWidget(this);
//错误信息提示
m_messageWidget = new QWidget(this);
// ukey // ukey
m_ukeyPasswdWidget = new QWidget(this); m_ukeyPasswdWidget = new QWidget(this);
// custom widget
m_customWidget = new QWidget(this);
// login option // login option
m_widgetLoginOpts = new QWidget(this); m_widgetLoginOpts = new QWidget(this);
@ -65,6 +74,7 @@ void AuthDialog::initUI()
mainLayout->addWidget(m_nameWidget); mainLayout->addWidget(m_nameWidget);
mainLayout->addWidget(m_editWidget); mainLayout->addWidget(m_editWidget);
mainLayout->addWidget(m_ukeyPasswdWidget); mainLayout->addWidget(m_ukeyPasswdWidget);
mainLayout->addWidget(m_customWidget);
mainLayout->addWidget(m_widgetLoginOpts); mainLayout->addWidget(m_widgetLoginOpts);
mainLayout->addStretch(); mainLayout->addStretch();
@ -73,6 +83,7 @@ void AuthDialog::initUI()
initNameWidget(); initNameWidget();
initEditWidget(); initEditWidget();
initUkeyPasswordWidget(); initUkeyPasswordWidget();
initCustomAuthWidget();
initLoginoptionWidget(); initLoginoptionWidget();
initConnections(); initConnections();
@ -116,31 +127,29 @@ void AuthDialog::resizeEvent(QResizeEvent *event)
void AuthDialog::updateAuthSize() void AuthDialog::updateAuthSize()
{ {
this->layout()->setSpacing(16*scale); this->layout()->setSpacing(WIDGET_HEIGHT_SPACING);
if (m_tipWidget) if (m_tipWidget)
m_tipWidget->setFixedSize(this->width(), 40*scale); m_tipWidget->setFixedSize(this->width(), WIDGET_HEIGHT_HEADTIP);
if (m_headerWidget) if (m_headerWidget)
m_headerWidget->setFixedSize(this->width(), 154*scale); m_headerWidget->setFixedSize(this->width(), WIDGET_HEIGHT_HEADIMAGE);
if (m_nameWidget) if (m_nameWidget)
m_nameWidget->setFixedSize(this->width(), 40*scale); m_nameWidget->setFixedSize(this->width(), WIDGET_HEIGHT_USERNAME);
if (m_editWidget) if (m_editWidget)
m_editWidget->setFixedSize(this->width(), 80*scale); m_editWidget->setFixedSize(this->width(), WIDGET_HEIGHT_PASSWDEDIT);
if (m_messageWidget)
m_messageWidget->setFixedSize(this->width(), 40*scale);
if (m_ukeyPasswdWidget) if (m_ukeyPasswdWidget)
m_ukeyPasswdWidget->setFixedSize(this->width(), 80*scale); m_ukeyPasswdWidget->setFixedSize(this->width(), WIDGET_HEIGHT_PASSWDEDIT);
if (m_widgetLoginOpts) if (m_widgetLoginOpts)
m_widgetLoginOpts->setFixedSize(this->width(), 104*scale); m_widgetLoginOpts->setFixedSize(this->width(), WIDGET_HEIGHT_LOGINOPTS);
if (m_labelLoginTypeTip) { if (m_labelLoginTypeTip) {
m_labelLoginTypeTip->setFixedSize(m_tipWidget->size()); m_labelLoginTypeTip->setFixedSize(m_tipWidget->size());
m_labelLoginTypeTip->setFontSize((14 + m_curFontSize)*m_ptToPx); m_labelLoginTypeTip->setFontSize((14 + m_curFontSize)*m_ptToPx);
} }
if (m_labelHeadImg) if (m_labelHeadImg)
m_labelHeadImg->setFixedSize(154*scale, 154*scale); m_labelHeadImg->setFixedSize(WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE);
if (m_labelFace) if (m_labelFace)
m_labelFace->setFixedSize(154*scale, 154*scale); m_labelFace->setFixedSize(WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE);
if (m_labelQRCode) if (m_labelQRCode)
m_labelQRCode->setFixedSize(154*scale, 154*scale); m_labelQRCode->setFixedSize(WIDGET_HEIGHT_HEADIMAGE, WIDGET_HEIGHT_HEADIMAGE);
if (m_labelQRCodeTip) if (m_labelQRCodeTip)
m_labelQRCodeTip->setFixedSize(22*scale, 22*scale); m_labelQRCodeTip->setFixedSize(22*scale, 22*scale);
if (m_labelQRCodeMsg) { if (m_labelQRCodeMsg) {
@ -148,7 +157,7 @@ void AuthDialog::updateAuthSize()
m_labelQRCodeMsg->setFontSize((14 + m_curFontSize)*m_ptToPx); m_labelQRCodeMsg->setFontSize((14 + m_curFontSize)*m_ptToPx);
} }
if (m_nameLabel) { if (m_nameLabel) {
m_nameLabel->setFixedSize(this->width(), 40*scale); m_nameLabel->setFixedSize(this->width(), WIDGET_HEIGHT_USERNAME);
m_nameLabel->setFontSize((24 + m_curFontSize)*m_ptToPx); m_nameLabel->setFontSize((24 + m_curFontSize)*m_ptToPx);
} }
if (m_passwordEdit) { if (m_passwordEdit) {
@ -179,8 +188,9 @@ void AuthDialog::updateAuthSize()
} }
if (m_tipWidget && bottomListWidget) if (m_tipWidget && bottomListWidget)
m_optionTip->setFixedSize(bottomListWidget->width(), 32*scale); m_optionTip->setFixedSize(bottomListWidget->width(), 32*scale);
if (m_customWidget)
m_customWidget->setFixedSize(width(), WIDGET_HEIGHT_CUSTOM);
updateUI(); updateUI();
} }
void AuthDialog::initTipWidget() void AuthDialog::initTipWidget()
@ -324,30 +334,60 @@ void AuthDialog::initLoginoptionWidget()
// btnsLayout->addWidget(bottomListWidget); // btnsLayout->addWidget(bottomListWidget);
// loginoptionLayout->addLayout(btnsLayout); // loginoptionLayout->addLayout(btnsLayout);
m_customWidget = new QWidget(this); }
m_layoutCustom = new QHBoxLayout();
m_layoutCustom->setSpacing(0); void AuthDialog::initCustomAuthWidget()
m_layoutCustom->setContentsMargins(0,0,0,0); {
m_customWidget->setLayout(m_layoutCustom); if (m_customWidget) {
m_customWidget->hide(); m_layoutCustom = new QHBoxLayout(m_customWidget);
m_customWidget->setFixedSize(width(), 376+100); m_layoutCustom->setSpacing(0);
m_layoutCustom->setContentsMargins(0,0,0,0);
m_layoutCustom->setAlignment(Qt::AlignVCenter);
m_customWidget->hide();
}
} }
void AuthDialog::updateUI() void AuthDialog::updateUI()
{ {
QPixmap p(m_curUserInfo.headImage()); QPixmap p(m_curUserInfo->headImage());
QPixmap userIcon = scaledPixmap(p); QPixmap userIcon = scaledPixmap(p);
userIcon = userIcon.scaled(154*scale, 154*scale, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); userIcon = userIcon.scaled(154*scale, 154*scale, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
userIcon = PixmapToRound(userIcon, 77*scale); userIcon = PixmapToRound(userIcon, 77*scale);
m_labelHeadImg->setPixmap(userIcon); m_labelHeadImg->setPixmap(userIcon);
m_nameLabel->setText(m_curUserInfo.fullName()); if (m_curUserInfo->name() == "*login") {
m_nameLabel->setText(tr("Login"));
} else if (m_curUserInfo->name() == "*guest") {
m_nameLabel->setText(tr("Guest"));
} else {
m_nameLabel->setText(m_curUserInfo->fullName());
}
m_fRetryButton->setStyleSheet(QString("QPushButton{border-radius: %1px; border:0px solid white;background-color: rgba(255,255,255,10%);}" m_fRetryButton->setStyleSheet(QString("QPushButton{border-radius: %1px; border:0px solid white;background-color: rgba(255,255,255,10%);}"
"QPushButton::hover{background-color: rgb(255,255,255,30%);}" "QPushButton::hover{background-color: rgb(255,255,255,30%);}"
"QPushButton::pressed {background-color: rgba(255,255,255,40%);}").arg((int)(77*scale))); "QPushButton::pressed {background-color: rgba(255,255,255,40%);}").arg((int)(77*scale)));
m_fRetryButton->setFixedSize(154*scale, 154*scale); m_fRetryButton->setFixedSize(154*scale, 154*scale);
m_fRetryButton->setIconSize(QSize(48*scale, 48*scale)); m_fRetryButton->setIconSize(QSize(48*scale, 48*scale));
qDebug()<<"AuthDialog updateUI:"<<isGreeterMode() << ","<<m_curUserInfo->isLoggedIn();
if (!isGreeterMode() && m_curUserInfo->isLoggedIn()) {
QPixmap iconLogin = QIcon::fromTheme("system-lock-screen-symbolic").pixmap(12,12);
iconLogin = drawSymbolicColoredPixmap(iconLogin, "white");
if (m_passwordEdit) {
m_passwordEdit->setIcon(iconLogin, iconLogin.size());
}
if (m_ukeyPasswordEdit) {
m_ukeyPasswordEdit->setIcon(iconLogin, iconLogin.size());
}
} else {
QPixmap iconLogin = QIcon::fromTheme("go-next-symbolic").pixmap(20,20);
iconLogin = drawSymbolicColoredPixmap(iconLogin, "white");
if (m_passwordEdit) {
m_passwordEdit->setIcon(iconLogin, iconLogin.size());
}
if (m_ukeyPasswordEdit) {
m_ukeyPasswordEdit->setIcon(iconLogin, iconLogin.size());
}
}
} }
void AuthDialog::startLoadingUkey() void AuthDialog::startLoadingUkey()
@ -397,11 +437,12 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_PASSWORD: case LOGINOPT_TYPE_PASSWORD:
{ {
m_editWidget->show(); m_editWidget->show();
m_headerWidget->show();
m_nameWidget->show();
m_labelHeadImg->show(); m_labelHeadImg->show();
m_labelQRCode->hide(); m_labelQRCode->hide();
m_labelFace->hide(); m_labelFace->hide();
m_fRetryButton->hide(); m_fRetryButton->hide();
m_nameWidget->show();
m_ukeyPasswdWidget->hide(); m_ukeyPasswdWidget->hide();
m_ukeyPasswordEdit->clearFocus(); m_ukeyPasswordEdit->clearFocus();
m_customWidget->hide(); m_customWidget->hide();
@ -411,11 +452,12 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_FACE: case LOGINOPT_TYPE_FACE:
{ {
m_editWidget->show(); m_editWidget->show();
m_headerWidget->show();
m_nameWidget->show();
m_labelHeadImg->hide(); m_labelHeadImg->hide();
m_labelQRCode->hide(); m_labelQRCode->hide();
m_labelFace->show(); m_labelFace->show();
m_fRetryButton->hide(); m_fRetryButton->hide();
m_nameWidget->show();
m_ukeyPasswdWidget->hide(); m_ukeyPasswdWidget->hide();
m_ukeyPasswordEdit->clearFocus(); m_ukeyPasswordEdit->clearFocus();
m_customWidget->hide(); m_customWidget->hide();
@ -431,8 +473,9 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_IRIS: case LOGINOPT_TYPE_IRIS:
{ {
m_editWidget->show(); m_editWidget->show();
m_labelHeadImg->show(); m_headerWidget->show();
m_nameWidget->show(); m_nameWidget->show();
m_labelHeadImg->show();
m_labelQRCode->hide(); m_labelQRCode->hide();
m_labelFace->hide(); m_labelFace->hide();
m_fRetryButton->hide(); m_fRetryButton->hide();
@ -445,11 +488,12 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_QRCODE: case LOGINOPT_TYPE_QRCODE:
{ {
m_editWidget->show(); m_editWidget->show();
m_headerWidget->show();
m_nameWidget->show();
m_labelHeadImg->hide(); m_labelHeadImg->hide();
setQRCodeMsg(""); setQRCodeMsg("");
m_labelQRCode->show(); m_labelQRCode->show();
m_labelFace->hide(); m_labelFace->hide();
m_nameWidget->show();
m_fRetryButton->hide(); m_fRetryButton->hide();
m_ukeyPasswdWidget->hide(); m_ukeyPasswdWidget->hide();
m_ukeyPasswordEdit->clearFocus(); m_ukeyPasswordEdit->clearFocus();
@ -460,8 +504,9 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_GENERAL_UKEY: case LOGINOPT_TYPE_GENERAL_UKEY:
{ {
m_editWidget->show(); m_editWidget->show();
m_labelHeadImg->show(); m_headerWidget->show();
m_nameWidget->show(); m_nameWidget->show();
m_labelHeadImg->show();
m_labelQRCode->hide(); m_labelQRCode->hide();
m_labelFace->hide(); m_labelFace->hide();
m_fRetryButton->hide(); m_fRetryButton->hide();
@ -476,12 +521,9 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
case LOGINOPT_TYPE_CUSTOM: case LOGINOPT_TYPE_CUSTOM:
{ {
m_editWidget->hide(); m_editWidget->hide();
m_labelHeadImg->hide(); m_headerWidget->hide();
setQRCodeMsg("");
m_labelQRCode->hide();
m_nameWidget->hide(); m_nameWidget->hide();
m_labelFace->hide(); setQRCodeMsg("");
m_fRetryButton->hide();
m_ukeyPasswdWidget->hide(); m_ukeyPasswdWidget->hide();
m_ukeyPasswordEdit->clearFocus(); m_ukeyPasswordEdit->clearFocus();
LoginAuthInterface* plugin = m_loginOpts->getCustomLoginAuth(); LoginAuthInterface* plugin = m_loginOpts->getCustomLoginAuth();
@ -509,7 +551,7 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
return; return;
} }
if (uLoginOptType != m_uCurLoginOptType || (m_deviceInfo && m_deviceInfo->id != m_nLastDeviceId) || m_curUserInfo.name() != m_lastUserName) { if (uLoginOptType != m_uCurLoginOptType || (m_deviceInfo && m_deviceInfo->id != m_nLastDeviceId) || m_curUserInfo->name() != m_lastUserName) {
clearMessage(); clearMessage();
switch(uLoginOptType) { switch(uLoginOptType) {
case LOGINOPT_TYPE_PASSWORD: case LOGINOPT_TYPE_PASSWORD:
@ -570,37 +612,10 @@ void AuthDialog::switchLoginOptType(unsigned uLoginOptType, bool faceBtnClicked)
m_nLastDeviceId = -1; m_nLastDeviceId = -1;
} }
m_lastUserName = m_curUserInfo.name(); m_lastUserName = m_curUserInfo->name();
m_uCurLoginOptType = uLoginOptType; m_uCurLoginOptType = uLoginOptType;
} }
/**
* @brief LoginWindow::setFace
* @param faceFile
*
*
*/
void AuthDialog::setFace(const QString& facePath)
{
QFile faceFile(facePath);
QPixmap faceImage;
m_labelHeadImg->setFixedSize(154,154);
//如果头像文件不存在,则使用默认头像
if(faceFile.exists()){
faceImage.load(facePath);
}
else{
faceImage.load(m_strDefaultFace);
}
//faceImage = cutPixmap(faceImage);
faceImage = faceImage.scaled(154,154, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
faceImage = PixmapToRound(faceImage,77);
m_labelHeadImg->setAlignment(Qt::AlignCenter);
m_labelHeadImg->setPixmap(faceImage);
m_face = facePath;
}
void AuthDialog::setQRCode(QImage& imgQRCode) void AuthDialog::setQRCode(QImage& imgQRCode)
{ {
if (imgQRCode.isNull()) { if (imgQRCode.isNull()) {
@ -674,7 +689,7 @@ void AuthDialog::onRespondUkey(const QString &text)
{ {
if (m_loginOpts && m_deviceInfo){ if (m_loginOpts && m_deviceInfo){
m_loginOpts->SetExtraInfo(text,"pincode"); m_loginOpts->SetExtraInfo(text,"pincode");
m_loginOpts->startAuth(m_deviceInfo, m_curUserInfo.uid()); m_loginOpts->startAuth(m_deviceInfo, m_curUserInfo->uid());
} }
} }
@ -892,11 +907,11 @@ void AuthDialog::onPamShowPrompt(QString strPrompt, int nType)
void AuthDialog::onPamAuthCompleted() void AuthDialog::onPamAuthCompleted()
{ {
if (m_curUserInfo.name().isEmpty()) if (m_curUserInfo->name().isEmpty())
return ; return ;
m_passwordEdit->stopWaiting(); m_passwordEdit->stopWaiting();
bool isAuthenticated = (Q_EMIT m_modelLockDialog->pamIsAuthenticated()); bool isAuthenticated = (Q_EMIT m_modelLockDialog->pamIsAuthenticated());
qDebug()<<"onPamAuthCompleted:"<<isAuthenticated<<m_curUserInfo.name(); qDebug()<<"onPamAuthCompleted:"<<isAuthenticated<<m_curUserInfo->name();
if(isAuthenticated) { if(isAuthenticated) {
if((m_bRecvPrompt && !m_bHasUnacknowledgedMsg ) || m_bDirectLogin) { if((m_bRecvPrompt && !m_bHasUnacknowledgedMsg ) || m_bDirectLogin) {
m_bDirectLogin = false; m_bDirectLogin = false;
@ -905,12 +920,12 @@ void AuthDialog::onPamAuthCompleted()
m_passwordEdit->readOnly(false); m_passwordEdit->readOnly(false);
m_passwordEdit->clear(); m_passwordEdit->clear();
clearMessage(); clearMessage();
m_failMap.remove(m_curUserInfo.uid()); m_failMap.remove(m_curUserInfo->uid());
setLoginTypeTip(""); setLoginTypeTip("");
setUkeyTypeTip(""); setUkeyTypeTip("");
authMode = UNKNOWN; authMode = UNKNOWN;
m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD; m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD;
Q_EMIT authSucceed(m_curUserInfo.name()); Q_EMIT authSucceed(m_curUserInfo->name());
} else { } else {
qDebug()<<"m_bRecvPrompt = "<<m_bRecvPrompt<<" m_bHasUnacknowledgedMsg = "<<m_bHasUnacknowledgedMsg; qDebug()<<"m_bRecvPrompt = "<<m_bRecvPrompt<<" m_bHasUnacknowledgedMsg = "<<m_bHasUnacknowledgedMsg;
@ -968,17 +983,17 @@ void AuthDialog::onRespond(const QString &strRes)
qInfo()<<"Wait for input passwd!"; qInfo()<<"Wait for input passwd!";
return; return;
} }
if (m_curUserInfo.name().isEmpty()) { if (m_curUserInfo->name().isEmpty()) {
qInfo()<<"No user be selected!!"; qInfo()<<"No user be selected!!";
return ; return ;
} }
m_bHasUnacknowledgedMsg = false; m_bHasUnacknowledgedMsg = false;
clearMessage(); clearMessage();
qDebug()<<"onRespond:"<<m_curUserInfo.name(); qDebug()<<"onRespond:"<<m_curUserInfo->name();
if(m_curUserInfo.name() == "*guest"){ if(m_curUserInfo->name() == "*guest"){
Q_EMIT m_modelLockDialog->pamAuthenticate(m_curUserInfo.name()); Q_EMIT m_modelLockDialog->pamAuthenticate(m_curUserInfo->name());
} else if(m_curUserInfo.name() == "*login") { //用户输入用户名 } else if(m_curUserInfo->name() == "*login") { //用户输入用户名
m_isManual = true; m_isManual = true;
m_isNameLogin = true; m_isNameLogin = true;
@ -1000,19 +1015,19 @@ void AuthDialog::onRespond(const QString &strRes)
void AuthDialog::startAuth() void AuthDialog::startAuth()
{ {
if (!m_curUserInfo.name().isEmpty()) { if (!m_curUserInfo->name().isEmpty()) {
m_bRecvPrompt = false; m_bRecvPrompt = false;
m_bHasUnacknowledgedMsg = false; m_bHasUnacknowledgedMsg = false;
//用户认证 //用户认证
if(m_curUserInfo.name() == "*guest") { //游客登录 if(m_curUserInfo->name() == "*guest") { //游客登录
qDebug() << "guest login"; qDebug() << "guest login";
m_passwordEdit->show(); m_passwordEdit->show();
m_passwordEdit->setPrompt(tr("login")); m_passwordEdit->setPrompt(tr("login"));
} else if(m_curUserInfo.name() == "*login") { //手动输入用户名 } else if(m_curUserInfo->name() == "*login") { //手动输入用户名
Q_EMIT m_modelLockDialog->pamAuthenticate(""); Q_EMIT m_modelLockDialog->pamAuthenticate("");
} else { } else {
qDebug() << "login: " << m_curUserInfo.name(); qDebug() << "login: " << m_curUserInfo->name();
Q_EMIT m_modelLockDialog->pamAuthenticate(m_curUserInfo.name()); Q_EMIT m_modelLockDialog->pamAuthenticate(m_curUserInfo->name());
m_passwordEdit->clear(); m_passwordEdit->clear();
m_passwordEdit->readOnly(true); m_passwordEdit->readOnly(true);
} }
@ -1032,15 +1047,15 @@ void AuthDialog::stopAuth()
clearMessage(); clearMessage();
} }
void AuthDialog::onCurUserInfoChanged(const UserInfo &userInfo) void AuthDialog::onCurUserInfoChanged(UserInfoPtr userInfo)
{ {
if (m_curUserInfo.uid() > -1 && userInfo.uid() == m_curUserInfo.uid()) { if (m_curUserInfo->uid() > -1 && userInfo->uid() == m_curUserInfo->uid()) {
m_curUserInfo = userInfo; m_curUserInfo = userInfo;
updateUI(); updateUI();
} }
} }
void AuthDialog::onCurUserChanged(const UserInfo &userInfo) void AuthDialog::onCurUserChanged(UserInfoPtr userInfo)
{ {
if(m_loginOpts){ if(m_loginOpts){
m_loginOpts->stopAuth(); m_loginOpts->stopAuth();
@ -1100,13 +1115,13 @@ void AuthDialog::onMessageButtonClicked()
m_passwordEdit->clear(); m_passwordEdit->clear();
clearMessage(); clearMessage();
m_failMap.remove(m_curUserInfo.uid()); m_failMap.remove(m_curUserInfo->uid());
setLoginTypeTip(""); setLoginTypeTip("");
setUkeyTypeTip(""); setUkeyTypeTip("");
authMode = UNKNOWN; authMode = UNKNOWN;
m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD; m_uCurLoginOptType = LOGINOPT_TYPE_PASSWORD;
Q_EMIT authSucceed(m_curUserInfo.name()); Q_EMIT authSucceed(m_curUserInfo->name());
} else { } else {
m_messageButton->hide(); m_messageButton->hide();
m_messageLabel->setText(""); m_messageLabel->setText("");
@ -1124,14 +1139,14 @@ void AuthDialog::clearMessage()
bool AuthDialog::unlockUserTimer() bool AuthDialog::unlockUserTimer()
{ {
if (m_curUserInfo.name().isEmpty()) if (m_curUserInfo->name().isEmpty())
return false; return false;
int failed_count = 0; int failed_count = 0;
int time_left = 0; int time_left = 0;
int deny = 0; int deny = 0;
int fail_time =0; int fail_time =0;
int unlock_time = 0; int unlock_time = 0;
QString curUserName = m_curUserInfo.name(); QString curUserName = m_curUserInfo->name();
if (NULL == curUserName.toLatin1().data()) { if (NULL == curUserName.toLatin1().data()) {
qDebug() << "get user info failed." ; qDebug() << "get user info failed." ;
@ -1236,7 +1251,7 @@ void AuthDialog::pamBioSuccess()
if(m_deviceInfo && m_deviceInfo->deviceType == LOGINOPT_TYPE_GENERAL_UKEY){ if(m_deviceInfo && m_deviceInfo->deviceType == LOGINOPT_TYPE_GENERAL_UKEY){
//ukey时不调用ukey认证 //ukey时不调用ukey认证
}else{ }else{
m_loginOpts->startAuth(m_deviceInfo, m_curUserInfo.uid()); m_loginOpts->startAuth(m_deviceInfo, m_curUserInfo->uid());
} }
if (m_deviceInfo) { if (m_deviceInfo) {
@ -1349,10 +1364,10 @@ void AuthDialog::performBiometricAuth()
//获取默认设备 //获取默认设备
if (m_loginOpts) { if (m_loginOpts) {
if(m_curUserInfo.name() == "*login") if(m_curUserInfo->name() == "*login")
m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName); m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName);
else else
m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo.name()); m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo->name());
if (m_isCustomDefault) { // 认证插件配置默认插件认证 if (m_isCustomDefault) { // 认证插件配置默认插件认证
if (m_loginOpts) { if (m_loginOpts) {
@ -1387,7 +1402,7 @@ void AuthDialog::performBiometricAuth()
} }
//已经错误超过3次 //已经错误超过3次
if(m_failMap.contains(m_curUserInfo.uid()) && m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] >= maxFailedTimes) if(m_failMap.contains(m_curUserInfo->uid()) && m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] >= maxFailedTimes)
{ {
if (m_deviceInfo->deviceType == UniT_Remote) { if (m_deviceInfo->deviceType == UniT_Remote) {
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType))); setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType)));
@ -1424,11 +1439,11 @@ void AuthDialog::skipBiometricAuth()
void AuthDialog::initBiometricWidget() void AuthDialog::initBiometricWidget()
{ {
if(m_loginOpts) { if(m_loginOpts) {
m_loginOpts->setUser(m_curUserInfo.uid()); m_loginOpts->setUser(m_curUserInfo->uid());
} else { } else {
QHBoxLayout *optsLayout = new QHBoxLayout(m_widgetLoginOpts); QHBoxLayout *optsLayout = new QHBoxLayout(m_widgetLoginOpts);
optsLayout->setContentsMargins(0,0,0,0); optsLayout->setContentsMargins(0,0,0,0);
m_loginOpts = new LoginOptionsWidget(m_biometricProxy, m_curUserInfo.uid(), m_uniauthService, m_widgetLoginOpts); m_loginOpts = new LoginOptionsWidget(m_biometricProxy, m_curUserInfo->uid(), m_uniauthService, m_widgetLoginOpts);
optsLayout->addWidget(m_loginOpts); optsLayout->addWidget(m_loginOpts);
connect(m_loginOpts, &LoginOptionsWidget::authComplete, connect(m_loginOpts, &LoginOptionsWidget::authComplete,
this, &AuthDialog::onBiometricAuthComplete); this, &AuthDialog::onBiometricAuthComplete);
@ -1442,7 +1457,7 @@ void AuthDialog::initBiometricWidget()
this, &AuthDialog::onLoginOptsCount); this, &AuthDialog::onLoginOptsCount);
connect(m_loginOpts, &LoginOptionsWidget::updateAuthMsg, connect(m_loginOpts, &LoginOptionsWidget::updateAuthMsg,
this, &AuthDialog::setLoginMsg); this, &AuthDialog::setLoginMsg);
m_loginOpts->setUser(m_curUserInfo.uid()); m_loginOpts->setUser(m_curUserInfo->uid());
} }
qDebug()<<"OptsCount:"<<m_loginOpts->getLoginOptCount(); qDebug()<<"OptsCount:"<<m_loginOpts->getLoginOptCount();
@ -1503,7 +1518,7 @@ void AuthDialog::onLoginOptsCount(unsigned uCount)
} }
//获取默认设备 //获取默认设备
if(m_curUserInfo.name() == "*login"){ if(m_curUserInfo->name() == "*login"){
if(isLoadingUkey){ if(isLoadingUkey){
m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName,UniT_General_Ukey); m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName,UniT_General_Ukey);
}else{ }else{
@ -1511,9 +1526,9 @@ void AuthDialog::onLoginOptsCount(unsigned uCount)
} }
} else{ } else{
if(isLoadingUkey){ if(isLoadingUkey){
m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo.name(),UniT_General_Ukey); m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo->name(),UniT_General_Ukey);
}else{ }else{
m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo.name()); m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo->name());
} }
} }
@ -1539,7 +1554,7 @@ void AuthDialog::onLoginOptsCount(unsigned uCount)
} }
//已经错误超过3次 //已经错误超过3次
if(m_failMap.contains(m_curUserInfo.uid()) && m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] >= maxFailedTimes) if(m_failMap.contains(m_curUserInfo->uid()) && m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] >= maxFailedTimes)
{ {
if (m_deviceInfo->deviceType == UniT_Remote) { if (m_deviceInfo->deviceType == UniT_Remote) {
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType))); setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType)));
@ -1620,7 +1635,7 @@ void AuthDialog::onDeviceChanged(unsigned uCurLoginOptType, const DeviceInfoPtr
if(deviceInfo) if(deviceInfo)
qDebug() << "device changed: " << *deviceInfo; qDebug() << "device changed: " << *deviceInfo;
if(deviceInfo && m_failMap[m_curUserInfo.uid()][deviceInfo->id] >= maxFailedTimes){ if(deviceInfo && m_failMap[m_curUserInfo->uid()][deviceInfo->id] >= maxFailedTimes){
qDebug() << "Failed MAX!!"; qDebug() << "Failed MAX!!";
return ; return ;
} }
@ -1670,18 +1685,18 @@ void AuthDialog::onBiometricAuthComplete(bool result, int nStatus)
return; return;
} else if (nStatus >= 2 && nStatus != 5){ } else if (nStatus >= 2 && nStatus != 5){
if (m_deviceInfo) { if (m_deviceInfo) {
if(m_failMap.contains(m_curUserInfo.uid()) && m_failMap[m_curUserInfo.uid()].contains(m_deviceInfo->id)){ if(m_failMap.contains(m_curUserInfo->uid()) && m_failMap[m_curUserInfo->uid()].contains(m_deviceInfo->id)){
m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] = m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] + 1; m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] = m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] + 1;
}else{ }else{
m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] = 1; m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] = 1;
} }
qDebug()<<"Failed count:"<<m_failMap[m_curUserInfo.uid()][m_deviceInfo->id]<<",Max:"<<maxFailedTimes; qDebug()<<"Failed count:"<<m_failMap[m_curUserInfo->uid()][m_deviceInfo->id]<<",Max:"<<maxFailedTimes;
if (m_deviceInfo->deviceType == BioT_Face) { if (m_deviceInfo->deviceType == BioT_Face) {
QImage imgFailed; QImage imgFailed;
setFaceImg(imgFailed, 1); setFaceImg(imgFailed, 1);
m_fTimeoutTimes = 0; m_fTimeoutTimes = 0;
} }
if(m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] >= maxFailedTimes){ if(m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] >= maxFailedTimes){
if (m_deviceInfo->deviceType == UniT_Remote) { if (m_deviceInfo->deviceType == UniT_Remote) {
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType))); setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType)));
QImage nullImage; QImage nullImage;
@ -1704,11 +1719,11 @@ void AuthDialog::onBiometricAuthComplete(bool result, int nStatus)
if(m_deviceInfo->deviceType == LOGINOPT_TYPE_GENERAL_UKEY){ if(m_deviceInfo->deviceType == LOGINOPT_TYPE_GENERAL_UKEY){
setUkeyTypeTip(tr("Failed to verify %1, you still have %2 verification opportunities") setUkeyTypeTip(tr("Failed to verify %1, you still have %2 verification opportunities")
.arg(getDeviceType_tr(m_deviceInfo->deviceType)) .arg(getDeviceType_tr(m_deviceInfo->deviceType))
.arg(maxFailedTimes-m_failMap[m_curUserInfo.uid()][m_deviceInfo->id])); .arg(maxFailedTimes-m_failMap[m_curUserInfo->uid()][m_deviceInfo->id]));
}else { }else {
setLoginTypeTip(tr("Failed to verify %1, you still have %2 verification opportunities") setLoginTypeTip(tr("Failed to verify %1, you still have %2 verification opportunities")
.arg(getDeviceType_tr(m_deviceInfo->deviceType)) .arg(getDeviceType_tr(m_deviceInfo->deviceType))
.arg(maxFailedTimes-m_failMap[m_curUserInfo.uid()][m_deviceInfo->id])); .arg(maxFailedTimes-m_failMap[m_curUserInfo->uid()][m_deviceInfo->id]));
} }
} }
} }
@ -1831,10 +1846,10 @@ void AuthDialog::onBiometricDbusChanged(bool bActive)
//获取默认设备 //获取默认设备
if (m_loginOpts) { if (m_loginOpts) {
if(m_curUserInfo.name() == "*login") if(m_curUserInfo->name() == "*login")
m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName); m_deviceName = m_loginOpts->getDefaultDevice(m_strManualLoginName);
else else
m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo.name()); m_deviceName = m_loginOpts->getDefaultDevice(m_curUserInfo->name());
} }
qDebug() << m_deviceName; qDebug() << m_deviceName;
if (m_deviceInfo) { if (m_deviceInfo) {
@ -1858,7 +1873,7 @@ void AuthDialog::onBiometricDbusChanged(bool bActive)
} }
//已经错误超过3次 //已经错误超过3次
if(m_failMap.contains(m_curUserInfo.uid()) && m_failMap[m_curUserInfo.uid()][m_deviceInfo->id] >= maxFailedTimes) { if(m_failMap.contains(m_curUserInfo->uid()) && m_failMap[m_curUserInfo->uid()][m_deviceInfo->id] >= maxFailedTimes) {
if (m_deviceInfo->deviceType == UniT_Remote) { if (m_deviceInfo->deviceType == UniT_Remote) {
setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType))); setLoginTypeTip(tr("Failed to verify %1, please enter password to unlock").arg(getDeviceType_tr(m_deviceInfo->deviceType)));
} else { } else {
@ -1951,17 +1966,12 @@ QString AuthDialog::onCustomRequest(QString strReqJson)
if (reqType == "GetInformations") { // 请求信息 if (reqType == "GetInformations") { // 请求信息
QString strType = rootObj.value("Type").toString(); QString strType = rootObj.value("Type").toString();
if (strType.contains("CurrentUser")) { // 当前用户信息 if (strType.contains("CurrentUser")) { // 当前用户信息
if (m_curUserInfo.uid() >= 0 && !m_curUserInfo.name().isEmpty() && !m_curUserInfo.name().startsWith("*")) { if (m_curUserInfo->uid() >= 0 && !m_curUserInfo->name().isEmpty() && !m_curUserInfo->name().startsWith("*")) {
QJsonObject user; QJsonObject user;
user["Name"] = m_curUserInfo.name(); user["Name"] = m_curUserInfo->name();
user["Id"] = (double)(m_curUserInfo.uid()); user["Id"] = (double)(m_curUserInfo->uid());
QFile faceFile(m_face); user["HeadImg"] = m_curUserInfo->headImage();
if (!faceFile.exists()) { user["RealName"] = m_curUserInfo->fullName();
user["HeadImg"] = m_strDefaultFace;
} else {
user["HeadImg"] = m_face;
}
user["RealName"] = m_curUserInfo.fullName();
contentObj["CurrentUser"] = user; contentObj["CurrentUser"] = user;
} else { } else {
retObj["Ret"] = -1; retObj["Ret"] = -1;

View File

@ -25,7 +25,7 @@ class AuthDialog : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit AuthDialog(LockDialogModel *model, UserInfo userInfo, QWidget *parent = nullptr); explicit AuthDialog(LockDialogModel *model, UserInfoPtr userInfo, QWidget *parent = nullptr);
void initUI(); void initUI();
void switchLoginOptType(unsigned uLoginOptType,bool faceBtnClicked = false); void switchLoginOptType(unsigned uLoginOptType,bool faceBtnClicked = false);
@ -33,8 +33,8 @@ public:
public: public:
void startAuth(); void startAuth();
void stopAuth(); void stopAuth();
void onCurUserChanged(const UserInfo &userInfo); void onCurUserChanged(UserInfoPtr userInfo);
void onCurUserInfoChanged(const UserInfo &userInfo); void onCurUserInfoChanged(UserInfoPtr userInfo);
void updateUI(); void updateUI();
void updateAuthSize(); void updateAuthSize();
@ -125,6 +125,7 @@ private:
void initMessagerWidget(); void initMessagerWidget();
void initUkeyPasswordWidget(); void initUkeyPasswordWidget();
void initLoginoptionWidget(); void initLoginoptionWidget();
void initCustomAuthWidget();
void showAuthenticated(bool successful = true); void showAuthenticated(bool successful = true);
void initConnections(); void initConnections();
@ -140,7 +141,6 @@ private:
void restartBioAuth(); void restartBioAuth();
void waitBiometricServiceStatus(); void waitBiometricServiceStatus();
QString getDeviceType_tr(int deviceType); QString getDeviceType_tr(int deviceType);
void setFace(const QString& facePath);
void updatePixmap(); void updatePixmap();
@ -157,7 +157,6 @@ private:
KLabel *m_nameLabel = nullptr; //用户名 KLabel *m_nameLabel = nullptr; //用户名
QWidget *m_editWidget = nullptr; QWidget *m_editWidget = nullptr;
QWidget *m_messageWidget = nullptr;
IconEdit *m_passwordEdit = nullptr; //密码输入框 IconEdit *m_passwordEdit = nullptr; //密码输入框
KLabel *m_messageLabel = nullptr; //PAM消息显示 KLabel *m_messageLabel = nullptr; //PAM消息显示
QPushButton *m_messageButton = nullptr; //免密登录按钮 QPushButton *m_messageButton = nullptr; //免密登录按钮
@ -184,7 +183,7 @@ private:
BioButtonListWidget *bottomListWidget = nullptr; BioButtonListWidget *bottomListWidget = nullptr;
UserInfo m_curUserInfo; UserInfoPtr m_curUserInfo;
bool m_bRecvPrompt = false; bool m_bRecvPrompt = false;
bool m_bHasUnacknowledgedMsg = false; bool m_bHasUnacknowledgedMsg = false;
bool m_bDirectLogin = false; bool m_bDirectLogin = false;

View File

@ -21,6 +21,7 @@
#include <QDebug> #include <QDebug>
#include <QStyleOption> #include <QStyleOption>
#include <QPainter> #include <QPainter>
#include <QEvent>
BatteryWidget::BatteryWidget(LockDialogModel *model, QWidget *parent) : BatteryWidget::BatteryWidget(LockDialogModel *model, QWidget *parent) :
QWidget(parent), QWidget(parent),
@ -107,14 +108,14 @@ void BatteryWidget::paintEvent(QPaintEvent *event)
void BatteryWidget::onBatteryChanged(QStringList args) void BatteryWidget::onBatteryChanged(QStringList args)
{ {
int battery = args.at(0).toInt(); m_nCurBatteryValue = args.at(0).toInt();
int batteryState = args.at(1).toInt(); m_nCurBatteryState = args.at(1).toInt();
if (batteryState == 1 || batteryState == 5) { if (m_nCurBatteryState == 1 || m_nCurBatteryState == 5) {
mStatusLabel->setText(tr("Charging...")); mStatusLabel->setText(tr("Charging..."));
} else if (batteryState == 4) { } else if (m_nCurBatteryState == 4) {
mStatusLabel->setText(tr("fully charged")); mStatusLabel->setText(tr("fully charged"));
} }
if (batteryState == 4 || batteryState == 1 || batteryState == 5) { if (m_nCurBatteryState == 4 || m_nCurBatteryState == 1 || m_nCurBatteryState == 5) {
mStatusLabel->setVisible(true); mStatusLabel->setVisible(true);
mModeLabel->setText(tr("PowerMode")); mModeLabel->setText(tr("PowerMode"));
} else { } else {
@ -122,10 +123,35 @@ void BatteryWidget::onBatteryChanged(QStringList args)
mModeLabel->setText(tr("BatteryMode")); mModeLabel->setText(tr("BatteryMode"));
} }
mValueLabel->setText(QString("<font size='5';font color=#262626>%1</font>%").arg(battery)); mValueLabel->setText(QString("<font size='5';font color=#262626>%1</font>%").arg(m_nCurBatteryValue));
} }
void BatteryWidget::onBatteryStatusChanged(QString iconName) void BatteryWidget::onBatteryStatusChanged(QString iconName)
{ {
mIconBtn->setIcon(QIcon::fromTheme(iconName)); mIconBtn->setIcon(QIcon::fromTheme(iconName));
} }
void BatteryWidget::changeEvent(QEvent *event)
{
if(event->type() == QEvent::LanguageChange){
refreshTranslate();
}
}
void BatteryWidget::refreshTranslate()
{
if (m_nCurBatteryState == 1 || m_nCurBatteryState == 5) {
mStatusLabel->setText(tr("Charging..."));
} else if (m_nCurBatteryState == 4) {
mStatusLabel->setText(tr("fully charged"));
}
if (m_nCurBatteryState == 4 || m_nCurBatteryState == 1 || m_nCurBatteryState == 5) {
mStatusLabel->setVisible(true);
mModeLabel->setText(tr("PowerMode"));
} else {
mStatusLabel->setVisible(false);
mModeLabel->setText(tr("BatteryMode"));
}
mValueLabel->setText(QString("<font size='5';font color=#262626>%1</font>%").arg(m_nCurBatteryValue));
}

View File

@ -38,6 +38,7 @@ public:
protected: protected:
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
void changeEvent(QEvent *event);
private: private:
LockDialogModel *m_modelLockDialog = nullptr; LockDialogModel *m_modelLockDialog = nullptr;
@ -46,11 +47,13 @@ private:
QLabel *mValueLabel; QLabel *mValueLabel;
QLabel *mStatusLabel; QLabel *mStatusLabel;
QPoint mPoint; QPoint mPoint;
int m_nCurBatteryValue;
int m_nCurBatteryState;
private Q_SLOTS: private Q_SLOTS:
void onBatteryChanged(QStringList args); void onBatteryChanged(QStringList args);
void onBatteryStatusChanged(QString iconName); void onBatteryStatusChanged(QString iconName);
void refreshTranslate();
}; };
#endif // BATTERYWIDGET_H #endif // BATTERYWIDGET_H

View File

@ -79,6 +79,8 @@ void BlockWidget::setTips(const QString tips)
m_tipLabel->show(); m_tipLabel->show();
m_listView->hide(); m_listView->hide();
m_tipLabel->setText(tips); m_tipLabel->setText(tips);
m_cancelButton->setText(tr("Cancel"));
m_confirmButton->setText(tr("Confrim"));
} }
void BlockWidget::setWarning(QStringList list, int type) void BlockWidget::setWarning(QStringList list, int type)
@ -130,5 +132,7 @@ void BlockWidget::setWarning(QStringList list, int type)
"QPushButton:pressed {background: rgba(255, 255, 255, 0.3);border-radius: 8px;}"); "QPushButton:pressed {background: rgba(255, 255, 255, 0.3);border-radius: 8px;}");
sysFont.setPointSize((16 + m_curFontSize) *m_ptToPx); sysFont.setPointSize((16 + m_curFontSize) *m_ptToPx);
m_cancelButton->setFont(sysFont); m_cancelButton->setFont(sysFont);
m_cancelButton->setText(tr("Cancel"));
m_confirmButton->setText(tr("Confrim"));
} }

View File

@ -545,6 +545,7 @@ void FullBackgroundWidget::showEvent(QShowEvent *event)
{ {
if(QX11Info::isPlatformX11()) if(QX11Info::isPlatformX11())
tryGrabKeyboard(); tryGrabKeyboard();
KWindowSystem::setType(this->winId(), NET::ScreenLock);
} }
void FullBackgroundWidget::tryGrabKeyboard() void FullBackgroundWidget::tryGrabKeyboard()

View File

@ -63,12 +63,9 @@ IconEdit::IconEdit(LockDialogModel *model, QWidget *parent)
m_iconButton = new QPushButton(this); m_iconButton = new QPushButton(this);
m_iconButton->installEventFilter(this); m_iconButton->installEventFilter(this);
m_iconButton->setFixedSize(24, 24); m_iconButton->setFixedSize(24*scale, 24*scale);
m_iconButton->setIconSize(QSize(24, 24));
m_iconButton->setProperty("isRoundButton", true); m_iconButton->setProperty("isRoundButton", true);
m_iconButton->setProperty("isImportant", true); m_iconButton->setProperty("isImportant", true);
setIcon(QIcon::fromTheme("go-next-symbolic"));
QHBoxLayout *layout = new QHBoxLayout(this); QHBoxLayout *layout = new QHBoxLayout(this);
layout->setContentsMargins(1, 1, 8, 1); layout->setContentsMargins(1, 1, 8, 1);
@ -141,11 +138,12 @@ bool IconEdit::eventFilter(QObject *obj, QEvent *event)
return false; return false;
} }
void IconEdit::setIcon(const QIcon &icon) void IconEdit::setIcon(const QIcon &icon, const QSize &size)
{ {
m_iconButton->setIcon(icon); m_iconButton->setIcon(icon);
m_iconButton->setText(""); m_iconButton->setText("");
m_iconButton->setIconSize(QSize(24, 24)); m_sizeIconBtn = size;
m_iconButton->setIconSize(QSize(m_sizeIconBtn.width()*scale, m_sizeIconBtn.height()*scale));
m_icon = icon; m_icon = icon;
m_iconText = ""; m_iconText = "";
} }
@ -230,7 +228,7 @@ void IconEdit::stopWaiting()
m_edit->setReadOnly(false); m_edit->setReadOnly(false);
if (!m_icon.isNull()) { if (!m_icon.isNull()) {
m_iconButton->setIcon(m_icon); m_iconButton->setIcon(m_icon);
m_iconButton->setIconSize(QSize(24*scale, 24*scale)); m_iconButton->setIconSize(QSize(m_sizeIconBtn.width()*scale, m_sizeIconBtn.height()*scale));
} else { } else {
m_iconButton->setText(m_iconText); m_iconButton->setText(m_iconText);
} }

View File

@ -38,7 +38,7 @@ class IconEdit : public QWidget
public: public:
IconEdit(LockDialogModel *model,QWidget *parent = 0); IconEdit(LockDialogModel *model,QWidget *parent = 0);
void setIcon(const QIcon &icon); void setIcon(const QIcon &icon, const QSize &size);
void clear(); void clear();
void clearText(); void clearText();
void setPrompt(const QString &); void setPrompt(const QString &);
@ -79,6 +79,7 @@ private:
QTimer *m_timer = nullptr; QTimer *m_timer = nullptr;
QPixmap m_waitingPixmap; QPixmap m_waitingPixmap;
bool m_capsState = false; bool m_capsState = false;
QSize m_sizeIconBtn;
}; };
#endif // ICONEDIT_H #endif // ICONEDIT_H

View File

@ -32,6 +32,7 @@
#include "blockwidget.h" #include "blockwidget.h"
#include "pluginsloader.h" #include "pluginsloader.h"
#include "global_utils.h" #include "global_utils.h"
#include "../lock-dialog/languagesetting.h"
#define BLUR_RADIUS 300 #define BLUR_RADIUS 300
#define RIGHT_MARGIN 24 #define RIGHT_MARGIN 24
@ -45,10 +46,7 @@ LockWidget::LockWidget(LockDialogModel *model, QWidget *parent)
, m_modelLockDialog(model) , m_modelLockDialog(model)
{ {
scale = 1.0; scale = 1.0;
UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(m_modelLockDialog->defaultUserName()); m_curUserInfo = m_modelLockDialog->findUserByName(m_modelLockDialog->defaultUserName());
if (ptrUser) {
m_curUserInfo = *ptrUser;
}
initUI(); initUI();
initConnections(); initConnections();
initUsdMediaKeys(); initUsdMediaKeys();
@ -193,7 +191,7 @@ void LockWidget::resizeEvent(QResizeEvent *event)
m_powerListWidget->move((width() - m_powerListWidget->width())/2, (height() - m_powerListWidget->height())/2 - BOTTOM_MARGIN*scale); m_powerListWidget->move((width() - m_powerListWidget->width())/2, (height() - m_powerListWidget->height())/2 - BOTTOM_MARGIN*scale);
updateBottomButton(); updateBottomButton();
if (m_curUserInfo.isLoggedIn() && m_sessionButton) { if (m_curUserInfo->isLoggedIn() && m_sessionButton) {
buttonListWidget->setFixedSize(QSize(48*(buttonListWidget->count() - 1) + buttonListWidget->spacing()*2*(buttonListWidget->count() - 1), 64)); buttonListWidget->setFixedSize(QSize(48*(buttonListWidget->count() - 1) + buttonListWidget->spacing()*2*(buttonListWidget->count() - 1), 64));
} else { } else {
buttonListWidget->setFixedSize(QSize(48*buttonListWidget->count() + buttonListWidget->spacing()*2*buttonListWidget->count(), 64)); buttonListWidget->setFixedSize(QSize(48*buttonListWidget->count() + buttonListWidget->spacing()*2*buttonListWidget->count(), 64));
@ -311,6 +309,7 @@ void LockWidget::initConnections()
connect(authDialog, &AuthDialog::customRequestAccount, connect(authDialog, &AuthDialog::customRequestAccount,
this, &LockWidget::onCustomRequestAccount); this, &LockWidget::onCustomRequestAccount);
} }
connect(LanguageSetting::instance(this), &LanguageSetting::languageChanged, this, &LockWidget::onLanguageChanged);
} }
void LockWidget::initTimeWidget() void LockWidget::initTimeWidget()
{ {
@ -329,6 +328,10 @@ void LockWidget::initUserWidget()
connect(m_userListWidget, &UserListWidget::userSelected, m_modelLockDialog, [=](QString strUserName){ connect(m_userListWidget, &UserListWidget::userSelected, m_modelLockDialog, [=](QString strUserName){
SwitchToUser(strUserName); SwitchToUser(strUserName);
}); });
connect(m_userListWidget, &UserListWidget::widgetSizeChanged, m_modelLockDialog, [=](){
m_userListWidget->move(width() - m_userListWidget->width() - RIGHT_MARGIN,
height()- BOTTOM_MARGIN*scale - buttonListWidget->height() - buttonListWidget->spacing()*scale - m_userListWidget->height());
});
m_userListWidget->clearFocus(); m_userListWidget->clearFocus();
m_userListWidget->move(width() - m_userListWidget->width() - RIGHT_MARGIN, m_userListWidget->move(width() - m_userListWidget->width() - RIGHT_MARGIN,
height()- BOTTOM_MARGIN*scale - buttonListWidget->height() - buttonListWidget->spacing()*scale - m_userListWidget->height()); height()- BOTTOM_MARGIN*scale - buttonListWidget->height() - buttonListWidget->spacing()*scale - m_userListWidget->height());
@ -385,7 +388,7 @@ void LockWidget::initButtonWidget()
buttonListWidget->setItemWidget(m_btnItemSession, m_sessionButton); buttonListWidget->setItemWidget(m_btnItemSession, m_sessionButton);
buttonListWidget->addItem(m_btnItemSession); buttonListWidget->addItem(m_btnItemSession);
m_sessionButton->setObjectName("BtnSession"); m_sessionButton->setObjectName("BtnSession");
if (m_curUserInfo.isLoggedIn()) { if (m_curUserInfo->isLoggedIn()) {
buttonListWidget->setItemHidden(m_btnItemSession, true); buttonListWidget->setItemHidden(m_btnItemSession, true);
} else { } else {
buttonListWidget->setItemHidden(m_btnItemSession, false); buttonListWidget->setItemHidden(m_btnItemSession, false);
@ -494,7 +497,7 @@ void LockWidget::initButtonWidget()
}); });
} }
if (m_curUserInfo.isLoggedIn() && m_sessionButton) { if (m_curUserInfo->isLoggedIn() && m_sessionButton) {
buttonListWidget->setFixedSize(QSize(48*(buttonListWidget->count() - 1) + buttonListWidget->spacing()*2*(buttonListWidget->count() - 1), 64)); buttonListWidget->setFixedSize(QSize(48*(buttonListWidget->count() - 1) + buttonListWidget->spacing()*2*(buttonListWidget->count() - 1), 64));
} else { } else {
buttonListWidget->setFixedSize(QSize(48*buttonListWidget->count() + buttonListWidget->spacing()*2*buttonListWidget->count(), 64)); buttonListWidget->setFixedSize(QSize(48*buttonListWidget->count() + buttonListWidget->spacing()*2*buttonListWidget->count(), 64));
@ -642,9 +645,9 @@ void LockWidget::onUsersInfoChanged()
height()- BOTTOM_MARGIN*scale - buttonListWidget->height() - buttonListWidget->spacing()*scale - m_userListWidget->height()); height()- BOTTOM_MARGIN*scale - buttonListWidget->height() - buttonListWidget->spacing()*scale - m_userListWidget->height());
} }
} }
UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(m_curUserInfo.name()); UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(m_curUserInfo->name());
if (ptrUser) { if (ptrUser) {
m_curUserInfo = *ptrUser; m_curUserInfo = ptrUser;
if (authDialog) { if (authDialog) {
authDialog->onCurUserInfoChanged(m_curUserInfo); authDialog->onCurUserInfoChanged(m_curUserInfo);
} }
@ -654,11 +657,16 @@ void LockWidget::onUsersInfoChanged()
void LockWidget::onCurUserChanged(const QString &strUserName) void LockWidget::onCurUserChanged(const QString &strUserName)
{ {
UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(strUserName); UserInfoPtr ptrUser = m_modelLockDialog->findUserByName(strUserName);
if (ptrUser && authDialog) { if (ptrUser) {
m_curUserInfo = *ptrUser; m_curUserInfo = ptrUser;
authDialog->onCurUserChanged(m_curUserInfo); qDebug()<<"CurUserInfo:"<<*m_curUserInfo;
if (m_curUserInfo->name() != "*login" && m_curUserInfo->name() != "*guest") {
LanguageSetting::instance()->onLanguageChanged(m_curUserInfo->lang());
}
if (authDialog)
authDialog->onCurUserChanged(m_curUserInfo);
} }
if (m_btnItemSession && m_curUserInfo.isLoggedIn()) { if (m_btnItemSession && m_curUserInfo->isLoggedIn()) {
buttonListWidget->setItemHidden(m_btnItemSession, true); buttonListWidget->setItemHidden(m_btnItemSession, true);
} else { } else {
buttonListWidget->setItemHidden(m_btnItemSession, false); buttonListWidget->setItemHidden(m_btnItemSession, false);
@ -795,6 +803,7 @@ void LockWidget::onShowNetworkWidget()
m_networkWidget = new MyNetworkWidget(this); m_networkWidget = new MyNetworkWidget(this);
m_networkWidget->installEventFilter(this); m_networkWidget->installEventFilter(this);
} }
m_networkWidget->loadNetPlugin();
m_networkWidget->setGeometry(this->width() - m_networkWidget->width() - RIGHT_MARGIN*scale, m_networkWidget->setGeometry(this->width() - m_networkWidget->width() - RIGHT_MARGIN*scale,
this->height() - m_networkWidget->height() - BOTTOM_MARGIN*scale - buttonListWidget->spacing()*scale - buttonListWidget->height(), this->height() - m_networkWidget->height() - BOTTOM_MARGIN*scale - buttonListWidget->spacing()*scale - buttonListWidget->height(),
m_networkWidget->width(), m_networkWidget->width(),
@ -1053,3 +1062,12 @@ void LockWidget::SwitchToUser(QString strUserName)
} }
} }
} }
void LockWidget::onLanguageChanged(bool isCompleted)
{
if (isCompleted) {
if (m_networkWidget) {
m_networkWidget->unloadNetPlugin();
}
}
}

View File

@ -119,6 +119,8 @@ private Q_SLOTS:
void onSessionActiveChanged(bool isActive); void onSessionActiveChanged(bool isActive);
void onLanguageChanged(bool isCompleted);
Q_SIGNALS: Q_SIGNALS:
void authSucceed(QString strUserName); void authSucceed(QString strUserName);
@ -138,7 +140,7 @@ private:
LockDialogModel *m_modelLockDialog = nullptr; LockDialogModel *m_modelLockDialog = nullptr;
UserInfo m_curUserInfo; UserInfoPtr m_curUserInfo;
AuthDialog *authDialog = nullptr; AuthDialog *authDialog = nullptr;
QTimer *m_timerChkActive = nullptr; QTimer *m_timerChkActive = nullptr;

View File

@ -16,7 +16,6 @@ MyNetworkWidget::MyNetworkWidget(QWidget *parent) : QWidget(parent)
{ {
setObjectName("m_networkWidget"); setObjectName("m_networkWidget");
setStyleSheet("#m_networkWidget{background-color: white; border-radius:12px;}"); setStyleSheet("#m_networkWidget{background-color: white; border-radius:12px;}");
loadNetPlugin();
} }
void MyNetworkWidget::loadNetPlugin() void MyNetworkWidget::loadNetPlugin()

View File

@ -12,6 +12,9 @@ class MyNetworkWidget : public QWidget
public: public:
explicit MyNetworkWidget(QWidget *parent = nullptr); explicit MyNetworkWidget(QWidget *parent = nullptr);
void loadNetPlugin();
void unloadNetPlugin();
private Q_SLOTS: private Q_SLOTS:
/** /**
* @brief 线线 * @brief 线线
@ -25,8 +28,6 @@ private Q_SLOTS:
void paintEvent(QPaintEvent *p1); void paintEvent(QPaintEvent *p1);
private: private:
void loadNetPlugin();
void unloadNetPlugin();
void sendNetPluginVisible(bool visible); void sendNetPluginVisible(bool visible);
QPluginLoader netloader; QPluginLoader netloader;

View File

@ -143,3 +143,32 @@ void PowerListWidget::setSystemPowerStatus(QString statusName)
qWarning() << __LINE__ << __FUNCTION__ << statusName; qWarning() << __LINE__ << __FUNCTION__ << statusName;
} }
void PowerListWidget::changeEvent(QEvent *event)
{
if(event->type() == QEvent::LanguageChange){
refreshTranslate();
}
}
void PowerListWidget::refreshTranslate()
{
for (int i = 0; i < sizeof(powerBtnList)/sizeof(powerBtnList[0]) ; i++)
{
if (powerBtnList[i].setFuncName == "Hibernate") {
powerBtnList[i].m_strName = tr("Hibernate");
powerBtnList[i].m_strToolTip = tr("Turn off your computer, but the app stays open. When the computer is turned on, it can be restored to the state you left");
} else if (powerBtnList[i].setFuncName == "Suspend") {
powerBtnList[i].m_strName = tr("Suspend");
powerBtnList[i].m_strToolTip = tr("The computer stays on, but consumes less power. The app stays open and can quickly wake up and revert to where you left off");
} else if (powerBtnList[i].setFuncName == "Reboot") {
powerBtnList[i].m_strName = tr("Restart");
powerBtnList[i].m_strToolTip = tr("The computer stays on, but consumes less power. The app stays open and can quickly wake up and revert to where you left off");
} else if (powerBtnList[i].setFuncName == "PowerOff") {
powerBtnList[i].m_strName = tr("Power Off");
powerBtnList[i].m_strToolTip = tr("Close all apps, and then shut down your computer");
}
}
onUpdateListInfo();
}

View File

@ -121,6 +121,7 @@ public:
protected: protected:
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
void changeEvent(QEvent *event);
Q_SIGNALS: Q_SIGNALS:
void mulUsersLogined(QString inhibitType); void mulUsersLogined(QString inhibitType);
@ -143,6 +144,7 @@ private:
void initUI(); void initUI();
void initBtnShowFlag(); void initBtnShowFlag();
void initConnections(); void initConnections();
void refreshTranslate();
// void initDBusInterface(); // void initDBusInterface();
}; };

View File

@ -44,8 +44,6 @@ void SessionListWidget::initConnections()
{ {
// 响应点击事件 // 响应点击事件
connect(this, &SessionListWidget::itemClicked, this, &SessionListWidget::onListItemClicked); connect(this, &SessionListWidget::itemClicked, this, &SessionListWidget::onListItemClicked);
connect(m_modelLockDialog, &LockDialogModel::usersInfoChanged, this, &SessionListWidget::onUpdateListInfo);
} }
void SessionListWidget::onUpdateListInfo() void SessionListWidget::onUpdateListInfo()
@ -66,6 +64,7 @@ void SessionListWidget::onListItemClicked(QListWidgetItem *item)
QWidget *widget = itemWidget(item); QWidget *widget = itemWidget(item);
SessionItemWidget *currentItem = qobject_cast<SessionItemWidget *>(widget); SessionItemWidget *currentItem = qobject_cast<SessionItemWidget *>(widget);
if (currentItem) { if (currentItem) {
this->hide();
Q_EMIT sessionSelected(currentItem->sessionName()); Q_EMIT sessionSelected(currentItem->sessionName());
} }
} }

View File

@ -42,7 +42,13 @@ void UserListWidget::onUpdateListInfo()
UserItemWidget *itemWidget = new UserItemWidget(this); UserItemWidget *itemWidget = new UserItemWidget(this);
QPixmap p(user->headImage()); QPixmap p(user->headImage());
itemWidget->setUserPixmap(p); itemWidget->setUserPixmap(p);
itemWidget->setUserNickName(user->fullName()); if (user->name() == "*login") {
itemWidget->setUserNickName(tr("Login"));
} else if (user->name() == "*guest") {
itemWidget->setUserNickName(tr("Guest"));
} else {
itemWidget->setUserNickName(user->fullName());
}
itemWidget->setUserStatus(user->isLoggedIn()); itemWidget->setUserStatus(user->isLoggedIn());
if (user->fullName() == m_modelLockDialog->currentUserName()) { if (user->fullName() == m_modelLockDialog->currentUserName()) {
setCurrentItem(userItem, QItemSelectionModel::SelectionFlag::SelectCurrent); setCurrentItem(userItem, QItemSelectionModel::SelectionFlag::SelectCurrent);
@ -71,4 +77,30 @@ void UserListWidget::updateWidgetSize()
setFixedHeight(count() * 40 + 10); setFixedHeight(count() * 40 + 10);
} }
adjustSize(); adjustSize();
Q_EMIT widgetSizeChanged();
}
void UserListWidget::changeEvent(QEvent *event)
{
if(event->type() == QEvent::LanguageChange){
refreshTranslate();
}
}
void UserListWidget::refreshTranslate()
{
for (int n = 0; n < count(); n++) {
QListWidgetItem *widgetItem = item(n);
if (widgetItem) {
QWidget *widget = itemWidget(widgetItem);
UserItemWidget *item = qobject_cast<UserItemWidget *>(widget);
if (item) {
if (item->getUserName() == "*login") {
item->setUserNickName(tr("Login"));
} else if (item->getUserName() == "*guest") {
item->setUserNickName(tr("Guest"));
}
}
}
}
} }

View File

@ -22,10 +22,15 @@ public Q_SLOTS:
Q_SIGNALS: Q_SIGNALS:
void userSelected(QString strUserName); void userSelected(QString strUserName);
void widgetSizeChanged();
protected:
void changeEvent(QEvent *event);
private: private:
void initUI(); void initUI();
void initConnections(); void initConnections();
void refreshTranslate();
private: private:
LockDialogModel *m_modelLockDialog = nullptr; LockDialogModel *m_modelLockDialog = nullptr;