Merge branch 'develop_sky_liyi' into 'develop_sky'
Develop sky liyi See merge request StarlockTeam/app-starlock!243
BIN
images/main/addFingerprint/0.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
images/main/addFingerprint/1.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
images/main/addFingerprint/2.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
images/main/addFingerprint/3.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
images/main/addFingerprint/4.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
images/main/addFingerprint/5.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
images/main/addFingerprint/6.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetování budou metakarpální žíly zámku odstraněny. Jste si jistý, že chcete resetovat?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetování budou metakarpální žíly zámku odstraněny. Jste si jistý, že chcete resetovat?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter nulstilling, de metacarpal vener i låsen vil blive slettet. Er du sikker på at du vil nulstille?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter nulstilling, de metacarpal vener i låsen vil blive slettet. Er du sikker på at du vil nulstille?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Mittelhand adern des Schlosses gelöscht. Sind Sie sicher, dass Sie zurücksetzen wollen?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Mittelhand adern des Schlosses gelöscht. Sind Sie sicher, dass Sie zurücksetzen wollen?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;",
|
||||||
|
|||||||
@ -1084,6 +1084,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "After reset, the metacarpal veins of the lock will be deleted. Are you sure you want to reset?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "After reset, the metacarpal veins of the lock will be deleted. Are you sure you want to reset?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminarán las venas metacarpiales de la cerradura. ¿Está seguro de que desea restablecer?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminarán las venas metacarpiales de la cerradura. ¿Está seguro de que desea restablecer?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Après réinitialisation, les veines métacarpiennes de la serrure seront supprimées. Êtes-vous sûr de vouloir réinitialiser?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Après réinitialisation, les veines métacarpiennes de la serrure seront supprimées. Êtes-vous sûr de vouloir réinitialiser?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?",
|
||||||
|
|||||||
@ -1084,6 +1084,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "रीसेट के बाद, लॉक के मेटाकार्पल नसों को हटा दिया जाएगा। क्या आप निश्चित रूप से रीसेट करना चाहते हैं?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "रीसेट के बाद, लॉक के मेटाकार्पल नसों को हटा दिया जाएगा। क्या आप निश्चित रूप से रीसेट करना चाहते हैं?",
|
||||||
|
|||||||
@ -1083,6 +1083,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "A reset után a zár metakarpális erei törlődnek. Biztos vagy benne, hogy vissza akarsz állítani?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "A reset után a zár metakarpális erei törlődnek. Biztos vagy benne, hogy vissza akarsz állítani?",
|
||||||
|
|||||||
@ -1084,6 +1084,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Վերագործարկումից հետո կողպեքի մետակարպալ երակները կջնջվեն: Իրո՞ք ցանկանում եք վերակայել:",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Վերագործարկումից հետո կողպեքի մետակարպալ երակները կջնջվեն: Իրո՞ք ցանկանում եք վերակայել:",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。",
|
||||||
|
|||||||
@ -1084,6 +1084,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "გადატვირთვის შემდეგ, საკეტის მეტაკარპალური ვენები წაიშლება. დარწმუნებული ხართ, რომ გსურთ გადატვირთვა?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "გადატვირთვის შემდეგ, საკეტის მეტაკარპალური ვენები წაიშლება. დარწმუნებული ხართ, რომ გსურთ გადატვირთვა?",
|
||||||
|
|||||||
@ -1085,6 +1085,7 @@
|
|||||||
"乌尔都语": "乌尔都语",
|
"乌尔都语": "乌尔都语",
|
||||||
"亚美尼亚语": "亚美尼亚语",
|
"亚美尼亚语": "亚美尼亚语",
|
||||||
"格鲁吉亚语": "格鲁吉亚语",
|
"格鲁吉亚语": "格鲁吉亚语",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Após a reinicialização, as veias do metacarpo do bloqueio serão excluídas. Tens a certeza que queres reiniciar?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Após a reinicialização, as veias do metacarpo do bloqueio serão excluídas. Tens a certeza que queres reiniciar?",
|
||||||
|
|||||||
1170
lan/lan_pt_br.json
Normal file
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter återställd, de metakarpal venerna i låset tas bort. Är du säker på att du vill återställa?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter återställd, de metakarpal venerna i låset tas bort. Är du säker på att du vill återställa?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?",
|
||||||
|
|||||||
@ -1084,6 +1084,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ری سیٹ کرنے کے بعد ، لاک کی میٹاکارپل رگیں حذف کردی جائیں گی۔ کیا آپ واقعی دوبارہ ترتیب دینا چاہتے ہیں؟",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ری سیٹ کرنے کے بعد ، لاک کی میٹاکارپل رگیں حذف کردی جائیں گی۔ کیا آپ واقعی دوبارہ ترتیب دینا چاہتے ہیں؟",
|
||||||
|
|||||||
@ -1082,6 +1082,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
|
||||||
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
"繁体中文(中国香港)": "繁體中文(中國香港)",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sau khi đặt lại, các tĩnh mạch metacarpal của khóa sẽ bị xóa. Bạn có chắc muốn thiết lập lại không?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sau khi đặt lại, các tĩnh mạch metacarpal của khóa sẽ bị xóa. Bạn có chắc muốn thiết lập lại không?",
|
||||||
|
|||||||
@ -1087,6 +1087,7 @@
|
|||||||
"乌尔都语": "اوردو",
|
"乌尔都语": "اوردو",
|
||||||
"亚美尼亚语": "Հայերեն",
|
"亚美尼亚语": "Հայերեն",
|
||||||
"格鲁吉亚语": "ქართული",
|
"格鲁吉亚语": "ქართული",
|
||||||
|
"巴西葡萄牙语": "Português do Brasil",
|
||||||
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
|
||||||
"在线": "在线",
|
"在线": "在线",
|
||||||
"离线": "离线",
|
"离线": "离线",
|
||||||
|
|||||||
348
langAzure.py
Normal file
@ -0,0 +1,348 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
import datetime
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from typing import Dict
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# 运行格式方式一:python langAzure.py
|
||||||
|
# 运行格式方式二:python3 langAzure.py
|
||||||
|
|
||||||
|
# 语言文件路径
|
||||||
|
path = "./resources/lang/"
|
||||||
|
# 原语言
|
||||||
|
SOURCE_LANG = 'en_US'
|
||||||
|
|
||||||
|
# 过滤不翻译的语言
|
||||||
|
FILTER_LANG = ['zh_CN', 'en_US']
|
||||||
|
|
||||||
|
# Azure翻译语言映射,基于: https://docs.azure.cn/zh-cn/ai-services/translator/text-translation/reference/v3/translate
|
||||||
|
# 语言代码:https://api.translator.azure.cn/languages?api-version=3.0&scope=translation
|
||||||
|
AZURE_LANG_MAP = {
|
||||||
|
# 'zh_CN': {
|
||||||
|
# 'name': '简体中文',
|
||||||
|
# 'code': 'zh-Hans'
|
||||||
|
# },
|
||||||
|
# 'zh_TW': {
|
||||||
|
# 'name': '繁体中文',
|
||||||
|
# 'code': 'zh-Hant',
|
||||||
|
# },
|
||||||
|
# 'zh_HK': {
|
||||||
|
# 'name': '粤语(繁体)',
|
||||||
|
# 'code': 'yue',
|
||||||
|
# },
|
||||||
|
# 'en_US': {
|
||||||
|
# 'name': '英文',
|
||||||
|
# 'code': 'en',
|
||||||
|
# },
|
||||||
|
# 'fr_FR': {
|
||||||
|
# 'name': '法语',
|
||||||
|
# 'code': 'fr',
|
||||||
|
# },
|
||||||
|
# 'ru_RU': {
|
||||||
|
# 'name': '俄语',
|
||||||
|
# 'code': 'ru',
|
||||||
|
# },
|
||||||
|
# 'de_DE': {
|
||||||
|
# 'name': '德语',
|
||||||
|
# 'code': 'de',
|
||||||
|
# },
|
||||||
|
# 'ja_JP': {
|
||||||
|
# 'name': '日语',
|
||||||
|
# 'code': 'ja',
|
||||||
|
# },
|
||||||
|
# 'ko_KR': {
|
||||||
|
# 'name': '韩语',
|
||||||
|
# 'code': 'ko',
|
||||||
|
# },
|
||||||
|
# 'it_IT': {
|
||||||
|
# 'name': '意大利语',
|
||||||
|
# 'code': 'it',
|
||||||
|
# },
|
||||||
|
# 'pt_PT': {
|
||||||
|
# 'name': '葡萄牙语',
|
||||||
|
# 'code': 'pt-PT',
|
||||||
|
# },
|
||||||
|
# 'es_ES': {
|
||||||
|
# 'name': '西班牙语',
|
||||||
|
# 'code': 'es',
|
||||||
|
# },
|
||||||
|
# 'ar_SA': {
|
||||||
|
# 'name': '阿拉伯语',
|
||||||
|
# 'code': 'ar',
|
||||||
|
# },
|
||||||
|
# 'vi_VN': {
|
||||||
|
# 'name': '越南语',
|
||||||
|
# 'code': 'vi',
|
||||||
|
# },
|
||||||
|
# 'ms_MY': {
|
||||||
|
# 'name': '马来语',
|
||||||
|
# 'code': 'ms',
|
||||||
|
# },
|
||||||
|
# 'nl_NL': {
|
||||||
|
# 'name': '荷兰语',
|
||||||
|
# 'code': 'nl',
|
||||||
|
# },
|
||||||
|
# 'ro_RO': {
|
||||||
|
# 'name': '罗马尼亚语',
|
||||||
|
# 'code': 'ro',
|
||||||
|
# },
|
||||||
|
# 'lt_LT': {
|
||||||
|
# 'name': '立陶宛语',
|
||||||
|
# 'code': 'lt',
|
||||||
|
# },
|
||||||
|
# 'sv_SE': {
|
||||||
|
# 'name': '瑞典语',
|
||||||
|
# 'code': 'sv',
|
||||||
|
# },
|
||||||
|
# 'et_EE': {
|
||||||
|
# 'name': '爱沙尼亚语',
|
||||||
|
# 'code': 'et',
|
||||||
|
# },
|
||||||
|
# 'pl_PL': {
|
||||||
|
# 'name': '波兰语',
|
||||||
|
# 'code': 'pl',
|
||||||
|
# },
|
||||||
|
# 'sk_SK': {
|
||||||
|
# 'name': '斯洛伐克语',
|
||||||
|
# 'code': 'sk',
|
||||||
|
# },
|
||||||
|
# 'cs_CZ': {
|
||||||
|
# 'name': '捷克语',
|
||||||
|
# 'code': 'cs',
|
||||||
|
# },
|
||||||
|
# 'el_GR': {
|
||||||
|
# 'name': '希腊语',
|
||||||
|
# 'code': 'el',
|
||||||
|
# },
|
||||||
|
# 'he_IL': {
|
||||||
|
# 'name': '希伯来语',
|
||||||
|
# 'code': 'he',
|
||||||
|
# },
|
||||||
|
# 'tr_TR': {
|
||||||
|
# 'name': '土耳其语',
|
||||||
|
# 'code': 'tr',
|
||||||
|
# },
|
||||||
|
# 'hu_HU': {
|
||||||
|
# 'name': '匈牙利语',
|
||||||
|
# 'code': 'hu',
|
||||||
|
# },
|
||||||
|
# 'bg_BG': {
|
||||||
|
# 'name': '保加利亚语',
|
||||||
|
# 'code': 'bg',
|
||||||
|
# },
|
||||||
|
# 'kk_KZ': {
|
||||||
|
# 'name': '哈萨克语',
|
||||||
|
# 'code': 'kk',
|
||||||
|
# },
|
||||||
|
# 'bn_BD': {
|
||||||
|
# 'name': '孟加拉语',
|
||||||
|
# 'code': 'bn',
|
||||||
|
# },
|
||||||
|
# 'hr_HR': {
|
||||||
|
# 'name': '克罗地亚语',
|
||||||
|
# 'code': 'hr',
|
||||||
|
# },
|
||||||
|
# 'th_TH': {
|
||||||
|
# 'name': '泰语',
|
||||||
|
# 'code': 'th',
|
||||||
|
# },
|
||||||
|
# 'id_ID': {
|
||||||
|
# 'name': '印尼语',
|
||||||
|
# 'code': 'id',
|
||||||
|
# },
|
||||||
|
# 'fi_FI': {
|
||||||
|
# 'name': '芬兰语',
|
||||||
|
# 'code': 'fi',
|
||||||
|
# },
|
||||||
|
# 'da_DK': {
|
||||||
|
# 'name': '丹麦语',
|
||||||
|
# 'code': 'da',
|
||||||
|
# },
|
||||||
|
# 'uk_UA': {
|
||||||
|
# 'name': '乌克兰语',
|
||||||
|
# 'code': 'uk',
|
||||||
|
# },
|
||||||
|
# 'sr_RS': {
|
||||||
|
# 'name': '塞尔维亚语(西里尔)',
|
||||||
|
# 'code': 'sr-Cyrl',
|
||||||
|
# },
|
||||||
|
# 'hi_IN': {
|
||||||
|
# 'name': '印地语',
|
||||||
|
# 'code': 'hi',
|
||||||
|
# },
|
||||||
|
# 'ur_PK': {
|
||||||
|
# 'name': '乌尔都语',
|
||||||
|
# 'code': 'ur',
|
||||||
|
# },
|
||||||
|
# 'hy_AM': {
|
||||||
|
# 'name': '亚美尼亚语',
|
||||||
|
# 'code': 'hy',
|
||||||
|
# },
|
||||||
|
# 'ka_GE': {
|
||||||
|
# 'name': '格鲁吉亚语',
|
||||||
|
# 'code': 'ka',
|
||||||
|
# },
|
||||||
|
'pt_BR': {
|
||||||
|
'name': '葡萄牙语 (巴西)',
|
||||||
|
'code': 'pt',
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================== 以下为固定代码,非必要请勿修改 ===============================
|
||||||
|
|
||||||
|
# Azure配置
|
||||||
|
AZURE_CONFIG = {
|
||||||
|
'api_url': 'https://api.cognitive.microsofttranslator.com',
|
||||||
|
'subscription_key': '5UGFXbyyyIlwtvFbl5HUeWeHffW9aKLNIiZlqWsRZuLaFSmXfxfzJQQJ99BGAC3pKaRXJ3w3AAAbACOGpL8p', # 替换为您的订阅密钥
|
||||||
|
'region': 'eastasia', # 替换为您的区域,例如 'eastasia'
|
||||||
|
}
|
||||||
|
|
||||||
|
def main():
|
||||||
|
en_path = path + SOURCE_LANG + ".json"
|
||||||
|
# 判断文件是否存在
|
||||||
|
if not os.path.exists(en_path):
|
||||||
|
print('文件不存在:', en_path)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# 读取文件内容
|
||||||
|
en_us_content = read_file(en_path)
|
||||||
|
|
||||||
|
# 把json转数组
|
||||||
|
en_us_data = json.loads(en_us_content)
|
||||||
|
|
||||||
|
# 遍历AZURE_LANG_MAP
|
||||||
|
for key in AZURE_LANG_MAP:
|
||||||
|
# 过滤掉不翻译的语言
|
||||||
|
if key in FILTER_LANG:
|
||||||
|
continue
|
||||||
|
|
||||||
|
lang_path = path + key + ".json"
|
||||||
|
# 验证文件是否存在,如果不存在即创建
|
||||||
|
if not os.path.exists(lang_path):
|
||||||
|
create_file(lang_path)
|
||||||
|
|
||||||
|
data_content = read_file(lang_path)
|
||||||
|
if data_content.strip(): # Check if the file is not empty
|
||||||
|
datas = json.loads(data_content)
|
||||||
|
else:
|
||||||
|
datas = {}
|
||||||
|
|
||||||
|
total = len(en_us_data) # 总数
|
||||||
|
current = 0 # 当前数
|
||||||
|
|
||||||
|
for en_us_key in en_us_data:
|
||||||
|
current += 1
|
||||||
|
|
||||||
|
# 检查key是否包含中文
|
||||||
|
has_chinese = bool(re.search(r'[\u4e00-\u9fff]', en_us_key))
|
||||||
|
text_to_translate = en_us_key if has_chinese else en_us_data[en_us_key]
|
||||||
|
|
||||||
|
print('语言:%s 正在翻译处理第%d/%d批数据 是否中文:%s' % (key, current, total, has_chinese))
|
||||||
|
# 过滤已存在的key
|
||||||
|
if en_us_key in datas:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 异常处理
|
||||||
|
try:
|
||||||
|
if has_chinese:
|
||||||
|
# 从中文翻译到目标语言
|
||||||
|
datas[en_us_key] = azure_translation('zh-Hans', AZURE_LANG_MAP[key]['code'], text_to_translate)
|
||||||
|
else:
|
||||||
|
# 从英文翻译到目标语言
|
||||||
|
datas[en_us_key] = azure_translation(AZURE_LANG_MAP[SOURCE_LANG]['code'], AZURE_LANG_MAP[key]['code'], text_to_translate)
|
||||||
|
|
||||||
|
# 延迟1秒避免API限制
|
||||||
|
#time.sleep(1)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print('翻译异常:', e.args, 'key:', en_us_key, 'content:', en_us_data[en_us_key])
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 写入文件
|
||||||
|
with open(lang_path, 'w', encoding='utf-8') as file:
|
||||||
|
json.dump(datas, file, ensure_ascii=False, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
def azure_translation(source_language, target_language, text):
|
||||||
|
"""
|
||||||
|
使用Azure翻译API进行文本翻译
|
||||||
|
|
||||||
|
Args:
|
||||||
|
source_language: 源语言代码
|
||||||
|
target_language: 目标语言代码
|
||||||
|
text: 要翻译的文本
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
翻译后的文本
|
||||||
|
"""
|
||||||
|
# 构建API端点
|
||||||
|
endpoint = f"{AZURE_CONFIG['api_url']}/translate"
|
||||||
|
|
||||||
|
# 设置参数
|
||||||
|
params = {
|
||||||
|
'api-version': '3.0',
|
||||||
|
'from': source_language,
|
||||||
|
'to': target_language
|
||||||
|
}
|
||||||
|
|
||||||
|
# 设置请求头
|
||||||
|
headers = {
|
||||||
|
'Ocp-Apim-Subscription-Key': AZURE_CONFIG['subscription_key'],
|
||||||
|
'Ocp-Apim-Subscription-Region': AZURE_CONFIG['region'],
|
||||||
|
'Content-type': 'application/json',
|
||||||
|
'X-ClientTraceId': str(datetime.datetime.now().timestamp())
|
||||||
|
}
|
||||||
|
|
||||||
|
# 构建请求体
|
||||||
|
body = [{'text': text}]
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 发送请求
|
||||||
|
response = requests.post(endpoint, params=params, headers=headers, json=body)
|
||||||
|
|
||||||
|
# 检查响应状态
|
||||||
|
if response.status_code != 200:
|
||||||
|
raise Exception(f"Azure翻译API请求失败,状态码:{response.status_code},响应:{response.text}")
|
||||||
|
|
||||||
|
# 解析响应
|
||||||
|
result = response.json()
|
||||||
|
|
||||||
|
# 提取翻译结果
|
||||||
|
if result and len(result) > 0 and 'translations' in result[0]:
|
||||||
|
return result[0]['translations'][0]['text']
|
||||||
|
else:
|
||||||
|
raise Exception(f"Azure翻译API响应格式异常:{result}")
|
||||||
|
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
raise Exception(f"Azure翻译API网络请求异常:{str(e)}")
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
raise Exception(f"Azure翻译API响应JSON解析异常:{str(e)}")
|
||||||
|
|
||||||
|
|
||||||
|
# 创建文件
|
||||||
|
def create_file(file_path):
|
||||||
|
with open(file_path, 'w') as file:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# 读取文件内容
|
||||||
|
def read_file(file_path):
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as file:
|
||||||
|
content = file.read()
|
||||||
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# 检查配置
|
||||||
|
if AZURE_CONFIG['subscription_key'] == 'YOUR_SUBSCRIPTION_KEY':
|
||||||
|
print("错误:请先在脚本中配置您的Azure订阅密钥")
|
||||||
|
print("请修改AZURE_CONFIG中的subscription_key和region")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
main()
|
||||||
@ -321,24 +321,23 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
} else {
|
} else {
|
||||||
return item.recordStr ?? '';
|
return item.recordStr ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'密码'.tr +
|
'密码'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})'+'(${'密码'.tr}:${item.keyboardPwd})';
|
||||||
case 30:
|
case 30:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'卡'.tr +
|
'卡'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 40:
|
case 40:
|
||||||
if (item.username != null && item.username != '') {
|
if (item.username != null && item.username != '') {
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'蓝牙'.tr +
|
'蓝牙'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(' +
|
'(' +
|
||||||
'ID'.tr +
|
'${'昵称'.tr}'.tr +
|
||||||
':${item.username})';
|
':${item.username})';
|
||||||
} else {
|
} else {
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
@ -353,55 +352,58 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'组合模式'.tr +
|
'组合模式'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 60:
|
case 60:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'添加指纹'.tr +
|
'添加'.tr +
|
||||||
'(ID:${item.username})';
|
'指纹'.tr +
|
||||||
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 70:
|
case 70:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'添加密码'.tr +
|
'添加'.tr +
|
||||||
'(ID:${item.username})';
|
'密码'.tr +
|
||||||
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 80:
|
case 80:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'添加卡'.tr +
|
'添加'.tr +
|
||||||
'(ID:${item.username})';
|
'卡'.tr +
|
||||||
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 90:
|
case 90:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'删除'.tr +
|
'删除'.tr +
|
||||||
'指纹'.tr +
|
'指纹'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 100:
|
case 100:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'删除'.tr +
|
'删除'.tr +
|
||||||
'密码'.tr +
|
'密码'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 110:
|
case 110:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'删除'.tr +
|
'删除'.tr +
|
||||||
'卡'.tr +
|
'卡'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
|
|
||||||
case 160:
|
case 160:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'人脸'.tr +
|
'人脸'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 190:
|
case 190:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'胁迫指纹'.tr +
|
'胁迫指纹'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 200:
|
case 200:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'胁迫密码'.tr +
|
'胁迫密码'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
case 210:
|
case 210:
|
||||||
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
return '${formatTimestampToHHmm(item.operateDate!)} ' +
|
||||||
'胁迫卡片'.tr +
|
'胁迫卡片'.tr +
|
||||||
'开锁'.tr +
|
'开锁'.tr +
|
||||||
'(ID:${item.username})';
|
'(${'昵称'.tr}:${item.username})';
|
||||||
default:
|
default:
|
||||||
return item.recordStr ?? '';
|
return item.recordStr ?? '';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,25 +123,25 @@ class _AddFingerprintPageState extends State<AddFingerprintPage> with RouteAware
|
|||||||
String iconPath = '';
|
String iconPath = '';
|
||||||
switch (number) {
|
switch (number) {
|
||||||
case 1:
|
case 1:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_one.png';
|
iconPath = 'images/main/addFingerprint/1.jpg';
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_two.png';
|
iconPath = 'images/main/addFingerprint/2.jpg';
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_three.png';
|
iconPath = 'images/main/addFingerprint/3.jpg';
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_four.png';
|
iconPath = 'images/main/addFingerprint/4.jpg';
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_five.png';
|
iconPath = 'images/main/addFingerprint/5.jpg';
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_six.png';
|
iconPath = 'images/main/addFingerprint/6.jpg';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
iconPath = 'images/main/icon_addFingerprint_fingerprint_one.png';
|
iconPath = 'images/main/addFingerprint/0.jpg';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return iconPath;
|
return iconPath;
|
||||||
|
|||||||
67
lib/main/lockDetail/lockDetail/ActivateInfoResponse.dart
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
class ActivateInfoResponse {
|
||||||
|
ActivateInfoResponse({
|
||||||
|
this.description,
|
||||||
|
this.errorCode,
|
||||||
|
this.data, // 现在是一个 List<ActivateInfo>
|
||||||
|
this.errorMsg,
|
||||||
|
});
|
||||||
|
|
||||||
|
ActivateInfoResponse.fromJson(dynamic json) {
|
||||||
|
description = json['description'];
|
||||||
|
errorCode = json['errorCode'];
|
||||||
|
// 修改这里:如果 json['data'] 是列表,则解析为 List<ActivateInfo>;否则为空列表
|
||||||
|
data = json['data'] != null
|
||||||
|
? (json['data'] as List).map((item) => ActivateInfo.fromJson(item)).toList()
|
||||||
|
: [];
|
||||||
|
errorMsg = json['errorMsg'];
|
||||||
|
}
|
||||||
|
|
||||||
|
String? description;
|
||||||
|
int? errorCode;
|
||||||
|
List<ActivateInfo>? data; // 改为 List<ActivateInfo>
|
||||||
|
String? errorMsg;
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final map = <String, dynamic>{};
|
||||||
|
map['description'] = description;
|
||||||
|
map['errorCode'] = errorCode;
|
||||||
|
if (data != null) {
|
||||||
|
// 修改这里:将 List<ActivateInfo> 转换为 JSON 列表
|
||||||
|
map['data'] = data!.map((item) => item.toJson()).toList();
|
||||||
|
}
|
||||||
|
map['errorMsg'] = errorMsg;
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ActivateInfoResponse{description: $description, errorCode: $errorCode, data: $data, errorMsg: $errorMsg}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ActivateInfo {
|
||||||
|
String? platformName;
|
||||||
|
int? platform;
|
||||||
|
|
||||||
|
ActivateInfo({
|
||||||
|
this.platformName,
|
||||||
|
this.platform,
|
||||||
|
});
|
||||||
|
|
||||||
|
ActivateInfo.fromJson(dynamic json) {
|
||||||
|
platformName = json['platformName'] ?? '';
|
||||||
|
platform = json['platform'] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final map = <String, dynamic>{};
|
||||||
|
map['platformName'] = platformName;
|
||||||
|
map['platform'] = platform;
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ActivateInfo{platformName: $platformName, platform: $platform}';
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -371,10 +371,35 @@ class LockDetailLogic extends BaseGetXController {
|
|||||||
final int userNo = (indexList[1] * 256) + indexList[2];
|
final int userNo = (indexList[1] * 256) + indexList[2];
|
||||||
indexMap['user'] = userNo.toString();
|
indexMap['user'] = userNo.toString();
|
||||||
// AppLog.log('userNouserNouserNouserNo:$userNo');
|
// AppLog.log('userNouserNouserNouserNo:$userNo');
|
||||||
|
if (userNo == 0xFFFF) {
|
||||||
|
// 离线密码情况:16进制格式,去除结束符F(0x1F)及其之后的内容
|
||||||
|
final List<int> passwordData =
|
||||||
|
indexList.sublist(7, 17); // 取10个字节
|
||||||
|
// 找到结束符F(0x1F)的位置
|
||||||
|
int endIndex = passwordData.indexOf(0x1F);
|
||||||
|
if (endIndex == -1) {
|
||||||
|
// 如果没有结束符,取全部数据
|
||||||
|
endIndex = passwordData.length;
|
||||||
|
}
|
||||||
|
// 只取结束符前的部分(不包括结束符)
|
||||||
|
final List<int> actualPasswordData =
|
||||||
|
passwordData.sublist(0, endIndex);
|
||||||
|
// 转换为十六进制字符串
|
||||||
|
String passwordHex = actualPasswordData
|
||||||
|
.map((byte) => byte.toRadixString(16).padLeft(2, '0'))
|
||||||
|
.join();
|
||||||
|
// 过滤掉字母部分
|
||||||
|
passwordHex = passwordHex.replaceAll(RegExp(r'[^0-9]'), '');
|
||||||
|
|
||||||
|
indexMap['password'] = passwordHex;
|
||||||
|
// indexMap['password'] = passwordHex; // 存储十六进制字符串表示
|
||||||
|
AppLog.log('离线密码开锁:$passwordHex');
|
||||||
|
} else {
|
||||||
|
final List<int> passwordData = indexList.sublist(7, 17);
|
||||||
|
final String password = utf8String(passwordData);
|
||||||
|
indexMap['password'] = password.toString();
|
||||||
|
}
|
||||||
|
|
||||||
final List<int> passwordData = indexList.sublist(7, 17);
|
|
||||||
final String password = utf8String(passwordData);
|
|
||||||
indexMap['password'] = password.toString();
|
|
||||||
// AppLog.log('passwordpasswordpassword:$password');
|
// AppLog.log('passwordpasswordpassword:$password');
|
||||||
|
|
||||||
indexMap['success'] = '1';
|
indexMap['success'] = '1';
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_state.dart';
|
import 'package:star_lock/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_state.dart';
|
||||||
|
import 'package:star_lock/network/api_repository.dart';
|
||||||
|
import 'package:star_lock/network/start_company_api.dart';
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
class ThirdPartyPlatformLogic extends BaseGetXController {
|
class ThirdPartyPlatformLogic extends BaseGetXController {
|
||||||
@ -11,6 +14,24 @@ class ThirdPartyPlatformLogic extends BaseGetXController {
|
|||||||
// dismissEasyLoading();
|
// dismissEasyLoading();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 查询TPP支持
|
||||||
|
void getActivateInfo() async {
|
||||||
|
final model = state.lockSetInfoData.value.lockBasicInfo?.model;
|
||||||
|
if (model != null && model != '') {
|
||||||
|
final response = await StartCompanyApi.to.getActivateInfo(model: model);
|
||||||
|
if (response.errorCode!.codeIsSuccessful) {
|
||||||
|
AppLog.log('${response.data}');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onReady() async {
|
||||||
|
// TODO: implement onReady
|
||||||
|
super.onReady();
|
||||||
|
getActivateInfo();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
dismissEasyLoading();
|
dismissEasyLoading();
|
||||||
|
|||||||
@ -295,21 +295,24 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
|||||||
action: () {
|
action: () {
|
||||||
final PDuration selectDate =
|
final PDuration selectDate =
|
||||||
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||||
Pickers.showDatePicker(context,
|
Pickers.showDatePicker(
|
||||||
selectDate: selectDate,
|
context,
|
||||||
// maxDate传入三年以后得今天的时间
|
selectDate: selectDate,
|
||||||
maxDate: PDuration(
|
// maxDate传入三年以后得今天的时间
|
||||||
year: DateTime.now().year + 3,
|
maxDate: PDuration(
|
||||||
month: DateTime.now().month,
|
year: DateTime.now().year + 3,
|
||||||
day: DateTime.now().day),
|
month: DateTime.now().month,
|
||||||
minDate: PDuration(
|
day: DateTime.now().day),
|
||||||
year: DateTime.now().year,
|
minDate: PDuration(
|
||||||
month: DateTime.now().month,
|
year: DateTime.now().year,
|
||||||
day: DateTime.now().day),
|
month: DateTime.now().month,
|
||||||
mode: DateMode.YMDH,
|
day: DateTime.now().day),
|
||||||
hourShow24: true, onConfirm: (PDuration p) {
|
mode: DateMode.YMDH,
|
||||||
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
hourShow24: true,
|
||||||
});
|
onConfirm: (PDuration p) {
|
||||||
|
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||||
|
},
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
Container(height: 10.h),
|
Container(height: 10.h),
|
||||||
],
|
],
|
||||||
@ -427,19 +430,20 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
|||||||
CommonDataManage().currentKeyInfo.model ==
|
CommonDataManage().currentKeyInfo.model ==
|
||||||
IoModelVendor.model_XL_WIFI),
|
IoModelVendor.model_XL_WIFI),
|
||||||
child: CommonItem(
|
child: CommonItem(
|
||||||
leftTitel: '结束日期'.tr,
|
leftTitel: '结束日期'.tr,
|
||||||
rightTitle: state.endTime.value,
|
rightTitle: state.endTime.value,
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
final PDuration selectDate =
|
final PDuration selectDate =
|
||||||
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||||
Pickers.showDatePicker(context,
|
Pickers.showDatePicker(context,
|
||||||
selectDate: selectDate,
|
selectDate: selectDate,
|
||||||
mode: DateMode.YMDH, onConfirm: (PDuration p) {
|
mode: DateMode.YMDH, onConfirm: (PDuration p) {
|
||||||
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||||
});
|
});
|
||||||
}),
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '生效时间'.tr,
|
leftTitel: '生效时间'.tr,
|
||||||
@ -458,20 +462,26 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
|||||||
}, hourShow24: true);
|
}, hourShow24: true);
|
||||||
}),
|
}),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '失效时间'.tr,
|
leftTitel: '失效时间'.tr,
|
||||||
rightTitle: state.loopFailureDate.value,
|
rightTitle: state.loopFailureDate.value,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
final PDuration selectDate = PDuration.parse(
|
final PDuration selectDate = PDuration.parse(
|
||||||
DateTool().dateToDateTime(state.loopFailureDate.value, 0));
|
DateTool().dateToDateTime(state.loopFailureDate.value, 0));
|
||||||
Pickers.showDatePicker(context,
|
Pickers.showDatePicker(
|
||||||
selectDate: selectDate,
|
context,
|
||||||
mode: DateMode.H, onConfirm: (PDuration p) {
|
selectDate: selectDate,
|
||||||
|
mode: DateMode.H,
|
||||||
|
onConfirm: (PDuration p) {
|
||||||
state.loopFailureDate.value =
|
state.loopFailureDate.value =
|
||||||
DateTool().getYMDHNDateString(p, 5);
|
DateTool().getYMDHNDateString(p, 5);
|
||||||
state.loopEndHours.value = p.hour!;
|
state.loopEndHours.value = p.hour!;
|
||||||
}, hourShow24: true);
|
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||||
}),
|
},
|
||||||
|
hourShow24: true,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -305,4 +305,6 @@ abstract class Api {
|
|||||||
'/lockSetting/updateLockSetting'; // 设置语音包
|
'/lockSetting/updateLockSetting'; // 设置语音包
|
||||||
final String reportBuyRequestURL =
|
final String reportBuyRequestURL =
|
||||||
'/service/reportBuyRequest'; // 上报增值服务购买请求
|
'/service/reportBuyRequest'; // 上报增值服务购买请求
|
||||||
|
final String getActivateInfoURL =
|
||||||
|
'/api/authCode/getTppSupport'; // 查询ttp
|
||||||
}
|
}
|
||||||
|
|||||||
41
lib/network/start_company_api.dart
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/main/lockDetail/lockDetail/ActivateInfoResponse.dart';
|
||||||
|
import 'package:star_lock/network/api_provider.dart';
|
||||||
|
import 'package:star_lock/network/api_provider_base.dart';
|
||||||
|
import 'package:star_lock/talk/starChart/entity/relay_info_entity.dart';
|
||||||
|
import 'package:star_lock/talk/starChart/entity/report_information_data.dart';
|
||||||
|
import 'package:star_lock/talk/starChart/entity/star_chart_register_node_entity.dart';
|
||||||
|
import 'package:star_lock/tools/storage.dart';
|
||||||
|
|
||||||
|
class StartCompanyApi extends BaseProvider {
|
||||||
|
// 星图url
|
||||||
|
String _startChartHost = 'https://company.skychip.top';
|
||||||
|
|
||||||
|
static StartCompanyApi get to => Get.put(StartCompanyApi());
|
||||||
|
|
||||||
|
// 设置星图host
|
||||||
|
set startChartHost(String value) {
|
||||||
|
_startChartHost = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取星图host
|
||||||
|
String get startChartHost => _startChartHost;
|
||||||
|
|
||||||
|
// ttp查询
|
||||||
|
Future<ActivateInfoResponse> getActivateInfo({
|
||||||
|
required String model,
|
||||||
|
}) async {
|
||||||
|
final response = await post(
|
||||||
|
_startChartHost + getActivateInfoURL.toUrl,
|
||||||
|
jsonEncode(<String, dynamic>{
|
||||||
|
'model': model,
|
||||||
|
|
||||||
|
}),
|
||||||
|
isUnShowLoading: true,
|
||||||
|
isUserBaseUrl: false,
|
||||||
|
);
|
||||||
|
return ActivateInfoResponse.fromJson(response.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -60,6 +60,7 @@ extension ExtensionAppDept on AppDept {
|
|||||||
const Locale hyL = Locale('hy', 'AM');
|
const Locale hyL = Locale('hy', 'AM');
|
||||||
const Locale kaL = Locale('ka', 'GE');
|
const Locale kaL = Locale('ka', 'GE');
|
||||||
const Locale srCyrillic = Locale('sr', 'RS');
|
const Locale srCyrillic = Locale('sr', 'RS');
|
||||||
|
const Locale ptBrL = Locale('pt', 'BR');
|
||||||
|
|
||||||
return [
|
return [
|
||||||
enL,
|
enL,
|
||||||
@ -102,7 +103,8 @@ extension ExtensionAppDept on AppDept {
|
|||||||
urL,
|
urL,
|
||||||
hyL,
|
hyL,
|
||||||
kaL,
|
kaL,
|
||||||
srCyrillic
|
srCyrillic,
|
||||||
|
ptBrL
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,6 +197,8 @@ enum LanguageType {
|
|||||||
armenian,
|
armenian,
|
||||||
//格鲁吉亚语
|
//格鲁吉亚语
|
||||||
georgian,
|
georgian,
|
||||||
|
// 巴西葡萄牙语
|
||||||
|
brazilianPortuguese,
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ExtensionLanguageType on LanguageType {
|
extension ExtensionLanguageType on LanguageType {
|
||||||
@ -324,6 +328,9 @@ extension ExtensionLanguageType on LanguageType {
|
|||||||
case LanguageType.georgian:
|
case LanguageType.georgian:
|
||||||
str = '格鲁吉亚语'.tr;
|
str = '格鲁吉亚语'.tr;
|
||||||
break;
|
break;
|
||||||
|
case LanguageType.brazilianPortuguese:
|
||||||
|
str = '巴西葡萄牙语'.tr;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
@ -364,7 +371,11 @@ extension ExtensionLanguageType on LanguageType {
|
|||||||
languageType = LanguageType.italian;
|
languageType = LanguageType.italian;
|
||||||
break;
|
break;
|
||||||
case 'pt':
|
case 'pt':
|
||||||
languageType = LanguageType.portuguese;
|
if (countryCode.toLowerCase() == 'br') {
|
||||||
|
languageType = LanguageType.brazilianPortuguese;
|
||||||
|
} else {
|
||||||
|
languageType = LanguageType.portuguese;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'es':
|
case 'es':
|
||||||
languageType = LanguageType.spanish;
|
languageType = LanguageType.spanish;
|
||||||
@ -671,6 +682,11 @@ extension ExtensionLanguageType on LanguageType {
|
|||||||
return locale;
|
return locale;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case LanguageType.brazilianPortuguese:
|
||||||
|
if (locale.languageCode == 'pt' && locale.countryCode == 'BR') {
|
||||||
|
return locale;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case LanguageType.system:
|
case LanguageType.system:
|
||||||
// TODO: Handle this case.
|
// TODO: Handle this case.
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -82,6 +82,7 @@ class TranslationLoader {
|
|||||||
static Map<String, String> _urMap = <String, String>{};
|
static Map<String, String> _urMap = <String, String>{};
|
||||||
static Map<String, String> _hyMap = <String, String>{};
|
static Map<String, String> _hyMap = <String, String>{};
|
||||||
static Map<String, String> _kaMap = <String, String>{};
|
static Map<String, String> _kaMap = <String, String>{};
|
||||||
|
static Map<String, String> _ptBrMap = <String, String>{};
|
||||||
|
|
||||||
static Map<String, String> get zhDic => _zhMap;
|
static Map<String, String> get zhDic => _zhMap;
|
||||||
static Map<String, String> get enDic => _enMap;
|
static Map<String, String> get enDic => _enMap;
|
||||||
@ -126,6 +127,7 @@ class TranslationLoader {
|
|||||||
static Map<String, String> get urMap => _urMap;
|
static Map<String, String> get urMap => _urMap;
|
||||||
static Map<String, String> get hyMap => _hyMap;
|
static Map<String, String> get hyMap => _hyMap;
|
||||||
static Map<String, String> get kaMap => _kaMap;
|
static Map<String, String> get kaMap => _kaMap;
|
||||||
|
static Map<String, String> get ptBrMap => _ptBrMap;
|
||||||
|
|
||||||
static Future<void> loadTranslation() async {
|
static Future<void> loadTranslation() async {
|
||||||
_zhMap = await _loadJsonFile('lan/lan_zh.json');
|
_zhMap = await _loadJsonFile('lan/lan_zh.json');
|
||||||
@ -171,6 +173,7 @@ class TranslationLoader {
|
|||||||
_urMap = await _loadJsonFile('lan/lan_ur.json');
|
_urMap = await _loadJsonFile('lan/lan_ur.json');
|
||||||
_hyMap = await _loadJsonFile('lan/lan_hy.json');
|
_hyMap = await _loadJsonFile('lan/lan_hy.json');
|
||||||
_kaMap = await _loadJsonFile('lan/lan_ka.json');
|
_kaMap = await _loadJsonFile('lan/lan_ka.json');
|
||||||
|
_ptBrMap = await _loadJsonFile('lan/lan_pt_br.json');
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<Map<String, String>> _loadJsonFile(String filePath) async =>
|
static Future<Map<String, String>> _loadJsonFile(String filePath) async =>
|
||||||
|
|||||||