diff --git a/images/main/addFingerprint/0.jpg b/images/main/addFingerprint/0.jpg new file mode 100644 index 00000000..0a47e0f0 Binary files /dev/null and b/images/main/addFingerprint/0.jpg differ diff --git a/images/main/addFingerprint/1.jpg b/images/main/addFingerprint/1.jpg new file mode 100644 index 00000000..9a4969ae Binary files /dev/null and b/images/main/addFingerprint/1.jpg differ diff --git a/images/main/addFingerprint/2.jpg b/images/main/addFingerprint/2.jpg new file mode 100644 index 00000000..9d406f68 Binary files /dev/null and b/images/main/addFingerprint/2.jpg differ diff --git a/images/main/addFingerprint/3.jpg b/images/main/addFingerprint/3.jpg new file mode 100644 index 00000000..a77ed1eb Binary files /dev/null and b/images/main/addFingerprint/3.jpg differ diff --git a/images/main/addFingerprint/4.jpg b/images/main/addFingerprint/4.jpg new file mode 100644 index 00000000..9460856e Binary files /dev/null and b/images/main/addFingerprint/4.jpg differ diff --git a/images/main/addFingerprint/5.jpg b/images/main/addFingerprint/5.jpg new file mode 100644 index 00000000..65163705 Binary files /dev/null and b/images/main/addFingerprint/5.jpg differ diff --git a/images/main/addFingerprint/6.jpg b/images/main/addFingerprint/6.jpg new file mode 100644 index 00000000..7d2f537d Binary files /dev/null and b/images/main/addFingerprint/6.jpg differ diff --git a/lan/lan_ar.json b/lan/lan_ar.json index b8d40192..c02a2a5f 100644 --- a/lan/lan_ar.json +++ b/lan/lan_ar.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟", diff --git a/lan/lan_bg.json b/lan/lan_bg.json index 973987ea..1c8b56e0 100644 --- a/lan/lan_bg.json +++ b/lan/lan_bg.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?", diff --git a/lan/lan_bn.json b/lan/lan_bn.json index 7badc5ab..4d0f1c94 100644 --- a/lan/lan_bn.json +++ b/lan/lan_bn.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?", diff --git a/lan/lan_cs.json b/lan/lan_cs.json index e3bce170..b59b5c06 100644 --- a/lan/lan_cs.json +++ b/lan/lan_cs.json @@ -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?", diff --git a/lan/lan_da.json b/lan/lan_da.json index 2c816ee0..6f62fcd4 100644 --- a/lan/lan_da.json +++ b/lan/lan_da.json @@ -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?", diff --git a/lan/lan_de.json b/lan/lan_de.json index 1e161734..1c86e85e 100644 --- a/lan/lan_de.json +++ b/lan/lan_de.json @@ -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?", diff --git a/lan/lan_el.json b/lan/lan_el.json index 8fbb36ec..04c3ef24 100644 --- a/lan/lan_el.json +++ b/lan/lan_el.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;", diff --git a/lan/lan_en.json b/lan/lan_en.json index 2e5dc1cc..28b0d715 100644 --- a/lan/lan_en.json +++ b/lan/lan_en.json @@ -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?", diff --git a/lan/lan_es.json b/lan/lan_es.json index 80e19c93..bc944084 100644 --- a/lan/lan_es.json +++ b/lan/lan_es.json @@ -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?", diff --git a/lan/lan_et.json b/lan/lan_et.json index 24f29906..c44617c6 100644 --- a/lan/lan_et.json +++ b/lan/lan_et.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?", diff --git a/lan/lan_fi.json b/lan/lan_fi.json index d85b91e5..444a2598 100644 --- a/lan/lan_fi.json +++ b/lan/lan_fi.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?", diff --git a/lan/lan_fr.json b/lan/lan_fr.json index 9bb8fc1c..a002f18a 100644 --- a/lan/lan_fr.json +++ b/lan/lan_fr.json @@ -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?", diff --git a/lan/lan_he.json b/lan/lan_he.json index 5481005d..b376c53a 100644 --- a/lan/lan_he.json +++ b/lan/lan_he.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?", diff --git a/lan/lan_hi.json b/lan/lan_hi.json index aaf974d0..85e44e4e 100644 --- a/lan/lan_hi.json +++ b/lan/lan_hi.json @@ -1084,6 +1084,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "रीसेट के बाद, लॉक के मेटाकार्पल नसों को हटा दिया जाएगा। क्या आप निश्चित रूप से रीसेट करना चाहते हैं?", diff --git a/lan/lan_hk.json b/lan/lan_hk.json index c3026b24..39c8954d 100644 --- a/lan/lan_hk.json +++ b/lan/lan_hk.json @@ -1083,6 +1083,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?", diff --git a/lan/lan_hr.json b/lan/lan_hr.json index 6d16c1ee..0017b27e 100644 --- a/lan/lan_hr.json +++ b/lan/lan_hr.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?", diff --git a/lan/lan_hu.json b/lan/lan_hu.json index e48ff904..b6436712 100644 --- a/lan/lan_hu.json +++ b/lan/lan_hu.json @@ -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?", diff --git a/lan/lan_hy.json b/lan/lan_hy.json index 0b83d204..bdeceeb8 100644 --- a/lan/lan_hy.json +++ b/lan/lan_hy.json @@ -1084,6 +1084,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Վերագործարկումից հետո կողպեքի մետակարպալ երակները կջնջվեն: Իրո՞ք ցանկանում եք վերակայել:", diff --git a/lan/lan_id.json b/lan/lan_id.json index 8049dddf..6cdb1f86 100644 --- a/lan/lan_id.json +++ b/lan/lan_id.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?", diff --git a/lan/lan_it.json b/lan/lan_it.json index 85e2c038..81a87fea 100644 --- a/lan/lan_it.json +++ b/lan/lan_it.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?", diff --git a/lan/lan_ja.json b/lan/lan_ja.json index ef964bea..4759b7b7 100644 --- a/lan/lan_ja.json +++ b/lan/lan_ja.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。", diff --git a/lan/lan_ka.json b/lan/lan_ka.json index 67aaa6f8..67da6775 100644 --- a/lan/lan_ka.json +++ b/lan/lan_ka.json @@ -1084,6 +1084,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "გადატვირთვის შემდეგ, საკეტის მეტაკარპალური ვენები წაიშლება. დარწმუნებული ხართ, რომ გსურთ გადატვირთვა?", diff --git a/lan/lan_keys.json b/lan/lan_keys.json index aff5bacc..1ce0f04b 100755 --- a/lan/lan_keys.json +++ b/lan/lan_keys.json @@ -1085,6 +1085,7 @@ "乌尔都语": "乌尔都语", "亚美尼亚语": "亚美尼亚语", "格鲁吉亚语": "格鲁吉亚语", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?", diff --git a/lan/lan_kk.json b/lan/lan_kk.json index 6c6716fc..e61cda34 100644 --- a/lan/lan_kk.json +++ b/lan/lan_kk.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?", diff --git a/lan/lan_ko.json b/lan/lan_ko.json index e9fae44f..c3eecdce 100644 --- a/lan/lan_ko.json +++ b/lan/lan_ko.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?", diff --git a/lan/lan_lt.json b/lan/lan_lt.json index cfd24cce..e970baa7 100644 --- a/lan/lan_lt.json +++ b/lan/lan_lt.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?", diff --git a/lan/lan_ms.json b/lan/lan_ms.json index 833b1381..65b73957 100644 --- a/lan/lan_ms.json +++ b/lan/lan_ms.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?", diff --git a/lan/lan_nl.json b/lan/lan_nl.json index 485d6e46..05a39d0f 100644 --- a/lan/lan_nl.json +++ b/lan/lan_nl.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?", diff --git a/lan/lan_pl.json b/lan/lan_pl.json index 85dc5f65..7414a8de 100644 --- a/lan/lan_pl.json +++ b/lan/lan_pl.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?", diff --git a/lan/lan_pt.json b/lan/lan_pt.json index a93f60e2..54140af7 100644 --- a/lan/lan_pt.json +++ b/lan/lan_pt.json @@ -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?", diff --git a/lan/lan_pt_br.json b/lan/lan_pt_br.json new file mode 100644 index 00000000..d21f2d6e --- /dev/null +++ b/lan/lan_pt_br.json @@ -0,0 +1,1170 @@ +{ + "星锁": "Bloqueio de estrelas", + "锁通通": "Travar Tongtong", + "点击开锁,长按闭锁": "Clique em Desbloquear e pressione e segure Travar", + "考勤": "Assiduidade", + "考勤设置": "Configurações de presença", + "电子钥匙": "Chave eletrônica", + "添加卡": "Adicionar cartões", + "卡号": "Número do cartão", + "添加指纹": "Adicionar uma impressão digital", + "指纹号": "Número da impressão digital", + "遥控": "controle remoto", + "添加人脸": "Adicionar rostos", + "门锁日志": "Registro da fechadura da porta", + "密码号": "Número da senha", + "添加者": "somador", + "添加时间": "Adicionar tempo", + "重置": "repor", + "请输入手机号或者邮箱": "Digite seu número de celular ou endereço de e-mail", + "工作时间": "Horário de trabalho", + "工作日设置": "Configuração de dia da semana", + "星期一": "Segunda-feira", + "星期二": "Terça-feira", + "星期三": "Quarta-feira", + "星期四": "Quinta-feira", + "星期五": "Sexta-feira", + "星期六": "Sábado", + "星期日": "Domingo", + "简写周一": "Segunda-feira curta", + "简写周二": "Terça-feira curta", + "简写周三": "Quarta-feira curta", + "简写周四": "Quinta-feira curta", + "简写周五": "Sexta-feira curta", + "简写周六": "Sábado curto", + "简写周日": "Domingo curto", + "周一": "Segunda-feira", + "周二": "Terça-feira", + "周三": "Quarta-feira", + "周四": "Quinta-feira", + "周五": "Sexta-feira", + "周六": "Sábado", + "周日": "Domingo", + "群发钥匙": "Distribuir chaves em grupos", + "锁": "fechadura", + "请添加": "Por favor, adicione", + "允许远程开锁": "Permite o desbloqueio remoto", + "请输入验证码": "Insira o código de verificação", + "获取密码": "Obter a senha", + "请给密码命名": "Por favor, dê um nome à senha", + "密码有限期为6个小时,只能使用一次": "As senhas são limitadas a 6 horas e só podem ser usadas uma vez", + "手动输入6-9位数字作为密码。可在锁旁边通过手机蓝牙添加,也可以通过网关远程添加": "Insira manualmente de 6 a 9 dígitos como senha. Ele pode ser adicionado via Bluetooth em seu telefone ao lado da fechadura ou remotamente através do gateway", + "获取": "buscar", + "添加": "Acrescentar", + "删除公司": "Excluir a empresa", + "密码详情": "Detalhes da senha", + "修改密码": "Altere sua senha", + "添加虹膜": "Adicione a íris", + "添加门磁": "Adicionar ímãs de porta", + "添加无线键盘": "Adicionar um teclado sem fio", + "添加手掌": "Adicione palmas das mãos", + "请输入员工账号": "Insira o número da conta do funcionário", + "批量授权锁": "Bloqueios de autorização em massa", + "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "Os administradores autorizados têm permissões importantes para operar esse bloqueio, portanto, certifique-se de enviá-lo apenas para pessoas em quem você confia", + "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "Depois que o recurso estiver ativado, você poderá desbloquear remotamente por meio do gateway. Esse recurso só pode ser ativado e desativado por meio do Bluetooth do telefone próximo à fechadura.", + "功能开启后,你将可以通过网关远程开锁。": "Depois que o recurso estiver ativado, você poderá desbloquear remotamente por meio do gateway.", + "排列方式": "Arranjo", + "早到榜": "Chegue cedo na lista", + "迟到榜": "Lista de atrasados", + "当前模式": "Modo atual", + "勤奋榜": "Lista de diligências", + "延迟时间": "Tempo de atraso", + "经过以上设定的时间,锁会自动关闭。开启或修改设置后,请先开一次锁,使时间生效。": "Após o tempo definido acima, a fechadura fechará automaticamente. Depois de ativar ou modificar as configurações, abra o cadeado uma vez para que o tempo entre em vigor.", + "时间": "Hora", + "开始时间": "Hora de início", + "结束时间": "Hora de término", + "工作时间设置": "Configuração de horário de trabalho", + "常开模式": "Modo normalmente aberto", + "常开时间": "Horário normal", + "常开日期": "Datas regulares de abertura", + "添加员工": "Adicionar funcionários", + "编辑员工": "Equipe editorial", + "节假日": "Férias", + "打卡方式": "Método de check-in", + "员工是否有钥匙": "Se o funcionário tem uma chave", + "上班时间": "Horário de trabalho", + "下班时间": "Fora do horário de expediente", + "本周": "Semana", + "单休": "Descanso individual", + "双休": "Semana", + "单双休": "Feriados ímpares e duplos", + "年": "ano", + "月": "mês", + "放假日期": "Datas de feriados", + "补班日期": "Data de reposição", + "添加假日": "Adicionar feriados", + "开始日期": "Data de início", + "必填": "Necessário", + "结束日期": "Data de término", + "日榜": "Lista diária", + "月榜": "Lista mensal", + "考勤记录": "Registros de presença", + "假日信息": "Informações de férias", + "基本信息": "Informações básicas", + "无线键盘": "Teclado sem fio", + "选择无线键盘": "Selecione Teclado sem fio", + "门磁": "Ímã de porta", + "自动闭锁": "Travamento automático", + "锁声音": "Som de bloqueio", + "防撬报警": "Alarme anti-intromissão", + "重置键": "Redefinir chave", + "锁时间": "Tempo de bloqueio", + "诊断": "Diagnóstico", + "上传数据": "Carregar dados", + "导入其他锁数据": "Importar dados de bloqueio adicionais", + "锁升级": "Atualização de bloqueio", + "标记房态": "Marcar o estado da sala", + "开锁提醒": "Lembrete de lockpick", + "微信二维码": "Código QR do WeChat", + "拥有电子钥匙的人,通过微信扫一扫这个二维码,即可开门。每把锁的二维码都不相同,你可以将其打印出来贴在对应的锁旁边": "Pessoas com chaves eletrônicas podem escanear esse código QR através do WeChat para abrir a porta. O código QR é diferente para cada fechadura e você pode imprimi-lo e colá-lo ao lado da fechadura correspondente", + "锁编号": "Número da fechadura", + "电量": "Eletricidade", + "锁分组": "Agrupamento de bloqueios", + "选择分组": "Selecione Agrupamento", + "创建新分组": "Criar um novo grupo", + "管理员开锁密码": "Senha de desbloqueio do administrador", + "更新": "atualização", + "电量信息可以通过网关远程更新,或通过手机蓝牙在锁旁边更新": "As informações da bateria podem ser atualizadas remotamente através do gateway ou ao lado da fechadura via Bluetooth no seu telefone", + "当屏幕闪烁时,点击下一步": "Quando a tela piscar, toque em Avançar", + "输入*529#或按设置键": "Digite *529# ou pressione a tecla de configuração", + "长按重置键2秒": "Pressione e segure o botão de reinicialização por 2 segundos", + "附近的设备": "Dispositivos próximos", + "暂无数据": "Não há dados disponíveis", + "通过门磁可查询门的开、关状态。每把锁咳添加一个门磁": "O sensor da porta pode consultar o status de abertura e fechamento da porta. Adicione um ímã de porta a cada tosse de fechadura", + "开始": "Começar", + "全天": "o dia todo", + "你可以设置多个常开时间段,在设置的时间段内,锁被打开后一直处于打开的状态。": "Você pode definir vários períodos de tempo sempre ativos durante os quais a fechadura permanece aberta depois de aberta.", + "请选择锁音量": "Selecione o volume de bloqueio", + "功能开启后,你将可以听到智能锁的提示音。包括电量过低,密码错误等提示。": "Assim que o recurso for ativado, você poderá ouvir o bipe do bloqueio inteligente. Incluindo bateria fraca, senha errada, etc.", + "低": "baixo", + "较低": "Abaixar", + "中": "meio", + "较高": "Maior", + "高": "alto", + "开启后,锁被撬动时,会发出报警声": "Quando aberto, um som de alarme soará quando a fechadura for arrancada", + "关闭后,重置键无效,锁要通过app删除后才能重新添加": "Após o fechamento, a chave de reinicialização é inválida e o bloqueio só pode ser adicionado novamente depois de ser removido por meio do aplicativo", + "校准时间": "Tempo de calibração", + "诊断是读取锁内的配置信息并上传,以便工作人员分析故障的原因": "O diagnóstico deve ler as informações de configuração dentro da fechadura e carregá-las para que o trabalhador possa analisar a causa da falha", + "上传": "carregar", + "本操作将上传锁内数据到服务器,过程可能需要几分钟,请耐心等待": "Esta operação fará o upload dos dados da fechadura para o servidor, o processo pode demorar alguns minutos, por favor, seja paciente", + "请选择要从哪把锁导入": "Selecione de qual cadeado você deseja importar", + "有新版本": "Há uma nova versão", + "当前版本": "Versão atual", + "升级": "melhoramento", + "空闲": "tempo livre", + "已入住": "Check-in", + "英文": "Inglês", + "简体中文": "Chinês simplificado", + "多语言": "Poliglota", + "添加锁": "Adicionar um cadeado", + "锁地址": "Endereço de bloqueio", + "选择锁类型": "Selecione o tipo de bloqueio", + "NFC无源锁": "Bloqueio passivo NFC", + "添加设备": "Adicionar equipamento", + "网关": "porta", + "客服": "Cliente", + "设置": "Preparar", + "更多设置": "Mais configurações", + "消息推送": "Envio de mensagem", + "锁用户管理": "Bloquear o gerenciamento de usuários", + "拥有的钥匙": "A chave para a posse de bola", + "批量授权": "Licenciamento em massa", + "关联设备": "Dispositivos associados", + "关联姓名": "Nome associado", + "转移智能锁": "Transferência de bloqueio inteligente", + "选择锁": "Selecione Bloquear", + "接收人信息": "Informações do destinatário", + "转移网关": "Gateway de transferência", + "锁屏": "Tela de bloqueio", + "已关闭": "Fechado", + "已开启": "Abrir", + "开启": "Abrir", + "确定要开启重置键?": "Tem certeza de que deseja ativar o botão de reinicialização?", + "确定要关闭重置键?": "Tem certeza de que deseja desligar a chave de reset?", + "隐藏无效开锁权限": "Ocultar permissões de desbloqueio inválidas", + "APP开锁时需手机连网的锁": "Quando o APP é desbloqueado, o bloqueio do celular é conectado à Internet", + "增值服务": "Serviços de valor agregado", + "关于": "sobre", + "退出": "renunciar", + "删除账号": "Excluir sua conta", + "个人信息": "Informações pessoais", + "头像": "Avatar", + "昵称": "apelido", + "请输入昵称": "Por favor, insira um apelido", + "修改昵称": "Modificar o apelido", + "修改账号": "Modifique sua conta", + "重置密码": "Redefina sua senha", + "安全问题": "Problemas de segurança", + "为了你的账号安全,修改账号前请先使用验证码验证": "Para a segurança de sua conta, use um código de verificação antes de modificá-la", + "请输入新账号": "Insira um novo número de conta", + "找回密码和登录新设备时,可通过绑定的手机验证": "Ao recuperar sua senha e fazer login em um novo dispositivo, você pode autenticar com seu telefone vinculado", + "找回密码和登录新设备时,可通过绑定的邮箱验证": "Ao recuperar sua senha e fazer login em um novo dispositivo, você pode verificá-la por meio do endereço de e-mail vinculado", + "原密码": "Senha original", + "新密码": "Nova senha", + "确认密码": "Confirme a senha", + "当你手机丢了,可以通过回答设置的安全问题来登录新设备": "Quando você perde seu telefone, pode entrar em um novo dispositivo respondendo às perguntas de segurança configuradas", + "问题一": "Pergunta 1", + "问题二": "Pergunta 2", + "问题三": "Pergunta 3", + "请输入你的答案": "Por favor, digite sua resposta", + "即将到期": "Expirando em breve", + "去授权": "Desautorização", + "修改名称": "Modifique o nome", + "状态": "estado", + "WiFi名称": "Nome do WiFi", + "网络MAC": "Rede MAC", + "网关升级": "Atualizações de gateway", + "网关连接的锁": "Bloqueio para conexão de gateway", + "信号强": "Sinal forte", + "选择网关类型": "Selecione o tipo de gateway", + "添加网关": "Adicionar um gateway", + "重新通电": "Reenergizar", + "指示灯": "Luz", + "网关通电后,长按重置按钮5秒,蓝色指示灯闪烁时点击下一步": "Depois que o gateway for ligado, pressione e segure o botão de reinicialização por 5 segundos e clique em Avançar quando a luz azul piscar", + "选择网关": "Selecione Gateway", + "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "A rede WiFi 5G não é suportada, selecione a rede WiFi 2.4G para configurar", + "WiFi密码": "Senha WiFi", + "请输入WiFi密码": "Por favor, digite a senha WiFi", + "网关名称": "Nome do gateway", + "请输入网关名称": "Digite o nome do gateway", + "IP地址": "Endereço IP", + "子网掩码": "Máscara de sub-rede", + "默认网关": "Gateway padrão", + "自动获取DNS服务器地址": "Obtenha automaticamente endereços de servidor DNS", + "首选DNS": "DNS é preferencial", + "备选DNS": "DNS alternativo", + "不使用静态IP": "Não use IPs estáticos", + "使用静态IP": "Usar um IP estático", + "请输入IP地址": "Digite o endereço IP", + "请输入子网掩码": "Insira a máscara de sub-rede", + "请输入默认网关": "Insira o gateway padrão", + "所有锁": "Todas as fechaduras", + "搜索所有类型的锁": "Pesquise todos os tipos de fechaduras", + "门锁": "Fechadura", + "挂锁": "cadeado", + "保险箱锁": "Bloqueio seguro", + "智能门禁": "Controle de acesso inteligente", + "车位锁": "Bloqueio de estacionamento", + "摸亮触摸屏": "Toque na tela sensível ao toque", + "摸亮触摸屏,锁进入可添加状态,点击下一步": "Toque na tela sensível ao toque, bloqueie para o estado adicionável e clique em Avançar", + "附近的锁": "Eclusas próximas", + "如需修改名字请重新命名,点击确定添加锁": "Se você precisar alterar o nome, renomeie-o e clique em OK para adicionar um cadeado", + "添加锁时,手机必须在锁旁边": "Ao adicionar um cadeado, o telefone deve estar próximo ao cadeado", + "登录": "login", + "注册": "inscrever", + "我已阅读并同意": "Eu li e concordo", + "验证码": "CAPTCHA", + "密码必须是8-20位,至少包括数字/字母/符号中的2种": "A senha deve ter de 8 a 20 dígitos e incluir pelo menos 2 dos números/letras/símbolos", + "手机": "celular", + "邮箱": "caixa de correio", + "请输入邮箱": "Por favor, digite seu endereço de e-mail", + "国家/地区": "País", + "你所在的国家/地区": "Seu país", + "选择国家/地区": "Selecione um país", + "获取验证码": "Obter um código de verificação", + "商务合作": "Cooperação empresarial", + "电脑网页版": "Versão web para computador", + "酒店系统": "Sistema hoteleiro", + "说明书网页版": "Manual de instruções versão web", + "高级功能": "Recursos avançados", + "记录保存": "Manutenção de registros", + "您可通过短信将密码、电子钥匙信息发给接收人。": "Você pode enviar a senha e as informações da chave eletrônica para o destinatário via SMS.", + "您可通过邮件将密码、电子钥匙信息发给接收人。": "Você pode enviar a senha e as informações da chave eletrônica para o destinatário por e-mail.", + "购买实名认证提示": "Comprar dicas de autenticação de nome real", + "请选择你希望的实名认证频次": "Selecione a frequência de autenticação de nome real desejada", + "仅首次": "Apenas pela primeira vez", + "每日一次": "Uma vez por dia", + "每周一次": "Uma vez por semana", + "每月一次": "Uma vez por mês", + "当前状态": "Status atual", + "试用中": "Julgamento", + "高级功能权益内容": "Conteúdo de benefício de recurso premium", + "短信模板": "Modelos de SMS", + "邮件模板": "Modelos de e-mail", + "发卡工具": "Ferramenta de emissão de cartões", + "购买高级功能须知": "Aviso para compra de recursos premium", + "购买高级功能提示": "Dicas para comprar recursos premium", + "免费体验": "Experimente gratuitamente", + "立即开通": "Ative imediatamente", + "购买短信": "Comprar SMS", + "购买邮件": "Comprar correio", + "购买实名认证次数": "O número de compras de autenticação de nome real", + "开通高级功能": "Ativar recursos avançados", + "选择套餐": "Escolha um pacote", + "支付方式": "Métodos de pagamento", + "支付宝": "Alipay", + "去支付": "Vá pagar", + "你可以自己定义模版的内容,用于发送密码或电子钥匙信息给他人": "Você pode definir o conteúdo do seu modelo para enviar senhas ou mensagens de chave eletrônica para outras pessoas", + "高级功能仅能用于你自己的锁": "Os recursos avançados estão disponíveis apenas para suas próprias fechaduras", + "新建模板": "Criar um novo modelo", + "类型": "tipo", + "模版内容": "Conteúdo do modelo", + "预览": "Visualizar", + "房间名": "Nome do quarto", + "预计产生短信条数": "Número esperado de mensagens SMS", + "功能开启后,已失效较长时间的密码、电子钥匙、卡、指纹等开锁权限将被隐藏,不在列表里显示。": "Depois que a função for habilitada, as permissões de desbloqueio, como senhas, chaves eletrônicas, cartões, impressões digitais, etc., que são inválidas há muito tempo, serão ocultadas e não serão exibidas na lista.", + "对于选中的这些锁,当用户用APP开锁时,他的手机需要是连网的,否则无法开锁": "Para esses bloqueios, quando o usuário usa o APP para desbloquear, seu celular precisa estar conectado à Internet, caso contrário, ele não pode ser desbloqueado", + "配置WiFi": "Configurar WiFi", + "请输入WiFi名字": "Por favor, digite o nome do WiFi", + "WiFi配网": "Rede Wi-Fi", + "胁迫卡": "Cartão de coerção", + "员工是否有密码": "Se o funcionário tem uma senha", + "员工是否有卡": "Se o funcionário tem um cartão", + "员工是否有指纹": "Se o funcionário tem impressões digitais", + "获取钥匙": "Obtenha a chave", + "获取卡": "Obtenha o cartão", + "获取指纹": "Obter impressões digitais", + "安全验证": "Verificação de segurança", + "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Após excluir sua conta, todas as suas informações e registros relacionados serão completamente excluídos da plataforma e não poderão ser recuperados.", + "监控": "monitor", + "视频日志": "Registro de vídeo", + "开门器": "Abridor de portão", + "面容开锁": "O rosto está desbloqueado", + "开门方向设置": "A direção de abertura da porta está definida", + "电机功率设置": "Configuração de potência do motor", + "开锁时是否需联网": "Se você precisa estar conectado à Internet ao desbloquear", + "选择要加入分组的锁": "Selecione o cadeado que você deseja que junte o grupo", + "锁数量": "Número de bloqueios", + "小米IOT平台": "Plataforma Xiaomi IOT", + "面容开锁设置": "Configurações de desbloqueio facial", + "感应距离": "Distância de indução", + "防误开": "Evite a abertura acidental", + "防误开已关闭,关门后仍可使用面容开锁": "A abertura anti-acidental é fechada e o desbloqueio facial ainda pode ser usado após o fechamento", + "添加和使用面容开锁时": "Ao adicionar e usar o desbloqueio facial", + "添加和使用面容开锁时提示": "Dicas ao adicionar e usar desbloqueios faciais", + "秒": "segundo", + "请根据门锁实际情况,请谨慎选择电机功率:": "Por favor, escolha a potência do motor com cuidado de acordo com a situação real da fechadura da porta:", + "小功率:": "Baixa potência:", + "耗电少": "Baixo consumo de energia", + "大功率": "de alta potência", + "大功率提示": "Pontas de alta potência", + "开门方向设置提示": "Defina um prompt para a direção de abertura da porta", + "左开": "Abrir à esquerda", + "右开": "Abrir à direita", + "判断方法:": "Como julgar:", + "判断方法内容": "Conteúdo do método de julgamento", + "录像时段": "Sessão de vídeo", + "密码": "senha", + "卡": "cartão", + "指纹": "impressão digital", + "人脸": "Rosto humano", + "配件商城": "Loja de acessórios", + "公司名称": "Nome da empresa", + "请输入公司名字": "Digite o nome da sua empresa", + "提示": "rápido", + "是否删除?": "Ele foi excluído?", + "员工信息": "Informações do funcionário", + "员工": "empregado", + "打卡方式无效": "O método de registro de ponto é inválido", + "中国": "China", + "选择钥匙": "Selecionar chaves", + "编辑": "editar", + "无": "não", + "有": "Sim", + "请输入姓名": "Por favor, digite seu nome", + "获取人脸": "Obter rostos", + "选择密码": "Selecione a senha", + "选择卡": "Selecione o cartão", + "选择指纹": "Selecione Impressão digital", + "选择人脸": "Selecionar rosto", + "员工是否有人脸": "Se o funcionário tem um rosto", + "同时删除员工钥匙": "Exclua também as chaves dos funcionários", + "删除": "Excluir", + "确定要删除员工吗?": "Tem certeza de que deseja remover um funcionário?", + "月统计": "Estatísticas mensais", + "迟到": "Tarde", + "早退": "Cedo", + "未打卡": "Não cronometrado", + "钥匙将在": "A chave será", + "天后失效": "A Rainha do Céu é inválida", + "电量更新时间:": "Tempo de atualização da bateria:", + "新增配件": "Novos acessórios", + "钥匙不可用": "A chave não está disponível", + "正在开锁中...": "Arrombando fechaduras...", + "你的钥匙": "Suas chaves", + "常开模式启动!长按闭锁": "Normalmente, o modo aberto é iniciado! Pressione e segure para travar", + "演示模式": "Modo de demonstração", + "请先同意用户协议及隐私政策": "Por favor, concorde com o Contrato do Usuário e a Política de Privacidade primeiro", + "用户协议": "Contrato do Usuário", + "隐私政策": "Política de privacidade", + "注册成功": "O registro foi bem-sucedido", + "你所在的": "Você é", + "手机号": "Número de telefone celular", + "忘记密码": "Esqueci a senha", + "重置成功": "A redefinição foi bem-sucedida", + "确定要退出吗?": "Tem certeza de que quer parar?", + "功能暂未开放": "A função ainda não está aberta", + "设置成功": "A configuração foi bem-sucedida", + "删除成功": "Exclusão bem-sucedida", + "单次": "Único", + "永久": "perpétuo", + "限时": "Tempo limitado", + "自定义": "Personalização", + "清空码": "Limpe o código", + "循环": "circular", + "工作日": "Semana", + "每日": "diário", + "周末": "fim de semana", + "确定要删除吗?": "Tem certeza de que deseja excluí-lo?", + "该锁的密码都将被删除": "A senha do cadeado será excluída", + "已过期": "Expirado", + "该锁的电子钥匙都将被删除": "A chave eletrônica da fechadura será excluída", + "同时删除其发送的所有钥匙,钥匙删除后不能恢复": "Ao mesmo tempo, todas as chaves enviadas por ele são excluídas e as chaves não podem ser restauradas depois de excluídas", + "删除钥匙会在用户APP连网后生效": "A chave de exclusão entrará em vigor depois que o aplicativo do usuário estiver conectado à Internet", + "有效时间": "Tempo de validade", + "接收者": "Receptor", + "仅管理自己创建的用户": "Gerencie apenas os usuários que você cria", + "远程开锁": "Desbloqueio remoto", + "请输入钥匙名称": "Digite o nome da chave", + "修改成功": "A modificação foi bem-sucedida", + "冻结": "congelar", + "解除冻结": "Descongelar", + "授权": "autorização", + "取消授权": "Cancelar autorização", + "同时解冻其发送的钥匙": "Ao mesmo tempo, descongele a chave enviada", + "会在用户APP连网后生效": "Ele entrará em vigor depois que o aplicativo do usuário se conectar à Internet", + "同时冻结其发送的钥匙": "Congele também as chaves que envia", + "冻结会在用户APP连网后生效": "O congelamento entrará em vigor depois que o usuário estiver conectado à Internet", + "取消授权会在用户APP连网后生效": "O cancelamento da autorização entrará em vigor depois que o usuário estiver conectado à Internet", + "授权用户拥有管理员的大部分权限,比如发送钥匙、发送密码": "Os usuários autorizados têm a maioria das permissões do administrador, como enviar chaves e enviar senhas", + "失效时间需晚于生效时间": "O tempo de expiração é posterior ao tempo efetivo", + "生效时间需晚于当前时间": "A hora efetiva deve ser posterior à hora atual", + "失效日期需晚于生效日期": "A data de expiração deve ser posterior à data efetiva", + "修改有效期": "Modificar o período de validade", + "生效日期": "Data de vigência", + "失效日期": "Data de validade", + "开锁": "destravar", + "开锁成功": "Desbloqueie com sucesso", + "请选择锁": "Por favor, selecione o bloqueio", + "请选择接收者": "Selecione o destinatário", + "请选择有效期": "Selecione a data de validade", + "请选择发送方式": "Selecione o método de envio", + "请选择结束时间": "Selecione um horário de término", + "完成": "acabar", + "有效日": "Data de vigência", + "发送成功": "Enviado com sucesso", + "请选择开始时间": "Selecione um horário de início", + "选择用户": "Selecionar usuários", + "已选中": "Selecionado", + "确定": "Tem certeza", + "请选择要发送的锁": "Selecione o cadeado que deseja enviar", + "人脸实名认证指的是用户在使用手机APP开锁时,需要先进行本人人脸验证,验证通过才能开锁。": "A autenticação de nome real facial significa que, quando os usuários usam o aplicativo móvel para desbloquear, eles precisam verificar seu rosto primeiro e somente após a verificação podem desbloquear o bloqueio.", + "分享": "Compartilhar", + "请输入接收者账号": "Insira a conta do destinatário", + "接收者号码未注册,请重新发送": "O número do destinatário não está registrado, por favor, reenvie-o", + "是否发送电子钥匙给未注册账号": "Se uma chave eletrônica deve ser enviada para uma conta não registrada", + "取消": "Cancelar", + "标记成功": "Marcar com sucesso", + "微信好友": "Amigos do WeChat", + "短信": "SMS", + "邮件": "correio", + "更多": "mais", + "您好,您的电子钥匙生成成功": "Olá, sua chave eletrônica foi gerada com sucesso", + "生效时间不能小于当前时间": "O tempo efetivo não pode ser menor que o tempo atual", + "结束时间不能小于当前时间": "A hora de término não pode ser menor que a hora atual", + "是否为管理员": "Se você é um administrador", + "已连接到锁,请将卡靠近门锁的读卡区": "Se você estiver conectado a uma fechadura, segure o cartão próximo à área de leitura da fechadura da porta", + "尝试连接设备...": "Tente conectar dispositivos...", + "地理位置": "Localização geográfica", + "检查以确保以下地址是正确的": "Verifique se o seguinte endereço está correto", + "地图加载中,请稍候。。": "O mapa está carregando, aguarde um momento.", + "跳过": "Saltitar", + "还未获取到位置信息哦,请耐心等待一下!": "Ainda não recebi as informações de localização, então, por favor, seja paciente!", + "请填写信息": "Por favor, preencha as informações", + "有效期": "Data de validade", + "生效时间": "Tempo efetivo", + "失效时间": "Tempo de expiração", + "上传成功": "O upload foi bem-sucedido", + "未生效": "Não está em vigor", + "已生效": "entrou em vigor", + "指纹详情": "Detalhes da impressão digital", + "添加过程中,请根据提示,在指纹采集器上进行多次的抬起按压": "Durante o processo de adição, levante e pressione o coletor de impressões digitais várias vezes, conforme solicitado", + "开始添加": "Comece a adicionar", + "请将您的手指按下": "Por favor, pressione o dedo", + "根据提示,抬起手指后再进行下一次指纹采集": "Siga as instruções para levantar o dedo antes da próxima coleta de impressões digitais", + "添加成功": "Adicionar com sucesso", + "更新成功": "A atualização foi bem-sucedida", + "搜索": "Procurar", + "重置后,该锁的卡都将被删除哦,确认要重置吗?": "Após a redefinição, o cartão da fechadura será excluído, você confirma que deseja redefini-lo?", + "已失效": "Ele expirou", + "卡详情": "Detalhes do cartão", + "请输入": "Por favor, digite", + "关闭后,智能锁将设置为全天常开模式,直到手动关闭": "Quando desligado, o bloqueio inteligente será definido para o modo sempre ativo ao longo do dia até que seja desligado manualmente", + "请输入小于或等于60的数字": "Insira um número menor ou igual a 60", + "操作成功": "A operação foi bem-sucedida", + "管理员密码相同,无需修改": "A senha do administrador é a mesma e não precisa ser alterada", + "请输入6-9位数字": "Digite de 6 a 9 dígitos", + "请输入6-9位管理员密码": "Digite a senha de administrador de 6 a 9 dígitos", + "请输入新的管理员密码": "Digite sua nova senha de administrador", + "未分组": "Não agrupado", + "请输入分组名称": "Insira um nome de grupo", + "创建成功": "Criado com sucesso", + "设置锁分组成功": "Definir o agrupamento de bloqueios com êxito", + "电池1电量": "Bateria 1 carga", + "电池2电量": "Carga da bateria 2", + "电量更新时间": "Tempo de atualização da bateria", + "锁电量更新成功": "A atualização da bateria de bloqueio foi bem-sucedida", + "您的钥匙未生效": "Sua chave não está ativa", + "您的钥匙已冻结": "Suas chaves estão congeladas", + "您的钥匙已过期": "Sua chave expirou", + "常开模式开启": "O modo normalmente aberto está ativado", + "超级管理员": "Super administrador", + "授权管理员": "Administradores autorizados", + "普通用户": "Usuários regulares", + "余": "Eu", + "天": "céu", + "删除锁后,所有信息都会一起删除,确定删除锁吗?": "Depois de excluir o bloqueio, todas as informações serão excluídas juntas, você tem certeza de que deseja excluir o bloqueio?", + "请输入登录密码": "Por favor, digite sua senha de login", + "删除设备失败,请确保在设备附近,设备未被连接,设备已打开": "A exclusão do dispositivo falha, verifique se ele está próximo ao dispositivo, se o dispositivo não está conectado e se o dispositivo está ligado", + "用户无权限": "O usuário não tem permissões", + "创建公司后,考勤功能才能使用": "O recurso de presença só está disponível depois que você cria uma empresa", + "是否删除钥匙?": "Você exclui a chave?", + "邮箱绑定成功": "O e-mail foi vinculado com sucesso", + "手机绑定成功": "O telefone está vinculado com sucesso", + "网络访问失败,请检查网络是否正常": "Se o acesso à rede falhar, verifique se a rede está normal", + "清空": "vazio", + "是否清空?": "Está vazio?", + "消息详情": "Detalhes da mensagem", + "创建时间": "Tempo de criação", + "管理员详情": "Detalhes do administrador", + "当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息会推送给管理员,该功能需要锁联网。": "Quando a coerção requer o desbloqueio forçado, o uso do cartão de coerção acionará um alarme e as informações do alarme serão enviadas ao administrador, o que requer que a fechadura esteja conectada.", + "请不要将胁迫卡用于日常开锁": "Por favor, não use o Cartão de Estresse para arrombamento diário", + "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息会推送给管理员,该功能需要锁联网。": "Quando um bloqueio forçado é desbloqueado à força, o uso de uma impressão digital coagida acionará um alarme e as informações do alarme serão enviadas ao administrador, o que requer uma rede de bloqueio.", + "请不要将胁迫指纹用于日常开锁": "Por favor, não use impressões digitais coercitivas para arrombamento diário", + "创建公司": "Criar uma empresa", + "公司名称不能超过30个字符": "O nome da empresa não pode exceder 30 caracteres", + "公司名称不能小于6个字符": "O nome da empresa não pode ter menos de 6 caracteres", + "WIFI列表": "Lista de WIFI", + "刷新": "Liberado", + "手动配网": "Distribuição manual de rede", + "远距离": "Longa distância", + "中距离": "Alcance médio", + "近距离": "De perto", + "锁时间更新成功": "A atualização do tempo de bloqueio foi bem-sucedida", + "锁用户": "Bloquear usuários", + "请选择常开日期": "Selecione uma data de abertura regular", + "结束时间不能小于开始时间哦": "A hora de término não deve ser menor que a hora de início", + "介绍": "apresentar", + "个人信息收集清单": "Lista de coleta de informações pessoais", + "应用权限说明": "Descrição das permissões do aplicativo", + "第三方信息共享清单": "Lista de compartilhamento de informações de terceiros", + "请选择您的位置": "Selecione sua localização", + "请先选择位置": "Selecione um local primeiro", + "管理员密码": "Senha de administrador", + "如需修改,请输入新的管理员密码(6位),点击确定即可修改": "Se você precisar modificá-lo, digite a nova senha de administrador (6 dígitos) e clique em OK para modificá-lo", + "修改": "revisar", + "网络摄像头": "Webcam", + "重命名": "renomear", + "分组下的锁将被移到未分组里": "Os bloqueios sob o grupo serão movidos para desagrupados", + "编辑成功": "Edite com sucesso", + "当前网络": "Rede atual", + "位置信息": "Informação de localização", + "请输入wifi名称": "Por favor, digite o nome do wifi", + "厂商": "Fabricantes", + "型号": "Modelo", + "密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。": "Depois que a senha for gerada, use-a uma vez antes das 23:59 do mesmo dia para ativá-la, caso contrário, ela será inválida se não for ativada após as 0:00. Depois que a senha for ativada, ela poderá ser usada quantas vezes você quiser durante o período de validade.", + "密码生成后,请在当日23:59前使用,否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。": "Depois que a senha for gerada, use-a antes das 23:59 do mesmo dia, caso contrário, ela expirará após as 0:00. O código de limpeza é usado para limpar todas as senhas geradas antes das 0:00 de hoje.", + "密码生成后,请在当日23:59前使用,否则过0点后失效。": "Depois que a senha for gerada, use-a antes das 23:59 do mesmo dia, caso contrário, ela expirará após as 0:00.", + "清空密码底部提示": "Limpe o prompt na parte inferior da senha", + "密码不一致哦": "A senha é inconsistente", + "相机": "câmera", + "相册": "Álbum", + "读写": "Ler e escrever", + "定位": "Posicionamento", + "需要访问相机权限才能拍照上传文件例如头像上传": "O acesso à permissão da câmera é necessário para tirar fotos e fazer upload de arquivos, como uploads de avatar", + "需要访问相机权限才能使用相册图片上传文件上传头像": "A permissão da câmera é necessária para fazer upload de um avatar com um arquivo de upload de imagem do álbum", + "需要访问读写权限才能使用本地图片上传头像": "O acesso de leitura e gravação é necessário para fazer upload de avatares usando imagens locais", + "需要访问定位权限才能使用添加钥匙功能的位置信息": "O acesso ao local é necessário para usar o recurso Adicionar chave", + "申请": "aplicação", + "权限": "Permissões", + "不允许": "Não permitido", + "允许": "permitir", + "权限被拒绝": "As permissões são negadas", + "请手动在系统设置中开启": "Por favor, ligue-o manualmente nas configurações do sistema", + "权限以继续使用应用": "Permissão para continuar usando o aplicativo", + "去设置": "Vá para as configurações", + "虹膜": "íris", + "手掌": "palmeira", + "商城": "centro comercial", + "我的": "É meu", + "微信公众号推送": "Push de conta pública do WeChat", + "蓝牙": "Bluetooth", + "需要访问蓝牙权限才能使用添加钥匙功能的位置信息": "O acesso Bluetooth é necessário para usar as informações de localização do recurso Adicionar chave", + "请输入Email": "Por favor, digite seu e-mail", + "请输入手机号": "Por favor, digite seu número de celular", + "家人到家": "A família chegou em casa", + "添加家人": "Adicionar membros da família", + "若锁没有联网,除电子钥匙外,密码、卡、指纹等开门提醒无法及时发送,请根据你的实际情况选择。": "Se a fechadura não estiver conectada à Internet, exceto pela chave eletrônica, senha, cartão, impressão digital e outros lembretes de abertura de porta não puderem ser enviados a tempo, escolha de acordo com sua situação real.", + "消息提醒": "Alertas de mensagens", + "开门通知": "Aviso de abertura de porta", + "N天未开门": "N dias não abriram", + "门未关好": "A porta não está fechada", + "防拆报警": "Alarme anti-demolição", + "低电量提醒": "Alerta de bateria fraca", + "胁迫开门": "Forçado a abrir a porta", + "有人按门铃": "Alguém tocou a campainha", + "有人出现在门口": "Alguém apareceu na porta", + "提醒方式": "Método de lembrete", + "开门方式": "Como abrir a porta", + "请选择": "Por favor, selecione", + "家人": "família", + "保存": "Salvar", + "APP推送": "Envio de APP", + "管理员": "administrador", + "未启用": "Não habilitado", + "已启用": "Habilitado", + "省电模式": "Modo de economia de energia", + "逗留抓拍模式": "Modo de captura de permanência", + "实时监控模式": "Modo de monitoramento em tempo real", + "自定义模式": "Modo personalizado", + "猫眼设置": "Configuração de olho de gato", + "猫眼工作模式": "Modo de trabalho Maoyan", + "自动亮屏": "Ligar automaticamente a tela", + "亮屏持续时间": "Duração da tela", + "逗留警告": "Fique avisado", + "异常警告": "Aviso anormal", + "短信提醒": "Lembretes por SMS", + "邮件提醒": "Alertas por e-mail", + "关锁": "Fechadura", + "功能": "função", + "配件": "Acessórios", + "N天未开门提醒": "N dias sem abrir o lembrete da porta", + "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警消息会推送给管理员,该功能需要锁联网": "Quando uma impressão digital forçada é necessária para forçar o desbloqueio de um bloqueio, um alarme é acionado e a mensagem de alarme é enviada ao administrador, o que requer uma rede de bloqueio", + "胁迫指纹": "Impressão digital coercitiva", + "指纹列表": "Lista de impressões digitais", + "经过以上设定的时间,锁没有被开启,系统会给指定对象发送提醒消息,该功能需要锁联网": "Após o tempo definido acima, a fechadura não é aberta e o sistema enviará uma mensagem de lembrete para o objeto designado, o que requer que a fechadura esteja conectada à rede", + "打开提醒后,当锁电量低于20%、10%和5%,系统会给指定对象发送提醒消息。电量读取方式:网关读取或APP读取。": "Depois de ativar o lembrete, quando a taxa de bloqueio for inferior a 20%, 10% e 5%, o sistema enviará uma mensagem de lembrete para o objeto especificado. Método de leitura de energia: leitura de gateway ou leitura de APP.", + "未开门时间": "Sem horário de funcionamento", + "添加和使用面容开锁时:": "Ao adicionar e usar o desbloqueio facial:", + "云存": "Diz-se que existe", + "本地": "local", + "3天滚动储存": "Armazene continuamente por 3 dias", + "去升级": "Vá atualizar", + "下载列表": "Baixe a lista", + "已下载": "Baixado", + "全部视频": "Todos os vídeos", + "已为本设备免费提供3大滚动视频储存服务": "3 principais serviços de armazenamento de vídeo de rolagem foram fornecidos gratuitamente para este dispositivo", + "视频播放": "Reprodução de vídeo", + "全选": "Selecionar tudo", + "请选择要删除的视频": "Selecione o vídeo que deseja excluir", + "请选择要下载的视频": "Selecione o vídeo que deseja baixar", + "欢迎使用": "Bem-vindo", + "用户协议和隐私政策概要": "Resumo do Contrato do Usuário e Política de Privacidade", + "协议概要": "Resumo do acordo", + "感谢您使用本应用。我们非常重视您的个人信息和隐私保护,在使用本产品之前,请认真阅读": "Obrigado por usar este aplicativo. Levamos suas informações pessoais e privacidade muito a sério, leia atentamente antes de usar este produto", + "《用户协议》": "Contrato do Usuário", + "和": "e", + "《隐私政策》": "Política de privacidade", + "的全部内容。点击“同意”即表示您同意并接受全部条款。若选择不同意,将无法使用我们的产品和服务,并会退出应用。": "O conteúdo completo. Ao clicar em \"Concordo\", você concorda e aceita todos os termos. Se você optar por não concordar, não poderá usar nossos produtos e serviços e sairá do aplicativo.", + "不同意": "discordar", + "同意": "concordar", + "该功能是高级功能,请开通后再使用": "Esse recurso é um recurso avançado, portanto, ative-o antes de usá-lo", + "常用程序": "Procedimentos comuns", + "该锁已被重置": "O bloqueio foi redefinido", + "需要访问读写权限才能使用手动升级固件": "O acesso de leitura e gravação é necessário para usar atualizações manuais de firmware", + "错误D固件,请选择正确的文件": "Erro D firmware, selecione o arquivo correto", + "非SYD固件,请选择正确的文件": "Firmware não SYD, selecione o arquivo correto", + "文件校验失败 0x01": "A validação do arquivo falha 0x01", + "解析元数据失败,请选择正确的文件": "A análise de metadados falha, selecione o arquivo correto", + "文件校验失败 0x02": "A verificação de arquivos falha 0x02", + "文件校验失败 0x03": "A validação do arquivo falha 0x03", + "固件升级完成": "A atualização do firmware está concluída", + "记录": "Gravação", + "开通高级功能后才可以对锁进行管理": "Você só pode gerenciar o bloqueio depois de ativar as funções avançadas", + "去开通": "Vá para a abertura", + "实名认证": "Autenticação de nome real", + "当前剩余数量": "Quantidade restante atual", + "购买": "compra", + "实名认证为付费功能,请购买后再使用": "A autenticação de nome real é um recurso pago, portanto, use-o após a compra", + "退出添加": "Sair da adição", + "管理员已满": "O administrador está cheio", + "用户已满": "O usuário está cheio", + "锁上面添加指纹已满": "A fechadura está cheia de impressões digitais", + "指纹已存在": "A impressão digital já está lá", + "锁上面添加人脸已满": "A fechadura está cheia de rostos", + "人脸已存在": "O rosto humano já está lá", + "锁上面添加卡已满": "O cartão adicionado acima da fechadura está cheio", + "卡已存在": "O cartão já existe", + "锁上面添加密码已满": "A senha adicionada ao bloqueio está cheia", + "密码已存在": "A senha já existe", + "请输入密码": "Por favor, digite sua senha", + "暂无密码,无需重置": "Sem senha e sem necessidade de redefinir", + "真实姓名": "Nome verdadeiro", + "身份证号": "Número de identificação", + "请输入真实姓名": "Por favor, digite seu nome verdadeiro", + "请输入身份证号": "Por favor, digite seu número de identificação", + "请输入身份证号和真实姓名": "Digite seu número de identificação e nome real", + "点击返回设备配对": "Toque em Voltar ao emparelhamento do dispositivo", + "无法连接?尝试升级": "Não consegue se conectar? Tente atualizar", + "固件升级提示": "Prompt de atualização de firmware", + "请先获取固件文件到手机本地,再选择升级": "Obtenha o arquivo de firmware localmente em seu telefone antes de selecionar Atualizar", + "固件升级中": "Atualização de firmware em andamento", + "取消升级": "Cancelar a atualização", + "固件传输中": "Firmware em trânsito", + "关闭": "Desligar", + "传输中'": "Em trânsito»", + "操作记录": "Registro de operação", + "修改姓名": "Alterar o nome", + "传输中": "em trânsito", + "发送人": "Remetente por", + "发送时间": "Horário de envio", + "钥匙详情": "Detalhes principais", + "姓名": "nome", + "发送": "Enviar", + "请确认姓名全名和身份证号码是否正确": "Certifique-se de que seu nome completo e número de identificação estejam corretos", + "传输期间请勿离开当前页面": "Não saia da página atual durante a transferência", + "机型": "Modelos", + "硬件版本": "Versão de hardware", + "固件版本": "Versão do firmware", + "手动升级": "Atualizar manualmente", + "设备连接中...": "Dispositivo conectando...", + "未避免异常情况,请在门打开时升级": "Se uma exceção não for evitada, escale quando a porta estiver aberta", + "钥匙无效": "A chave é inválida", + "操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "Se a operação falhar, verifique se o bloqueio está próximo ou reinicie o Bluetooth do telefone e tente novamente.", + "如果是全自动锁,请使屏幕变亮": "Se for um bloqueio totalmente automático, ilumine a tela", + "正在尝试闭锁……": "Tentando bloquear ......", + "清空记录": "Limpar o registro", + "是否要删除操作记录?": "Deseja excluir o log de operação?", + "被删除的记录不能恢复": "Os registros excluídos não podem ser recuperados", + "全部事件": "Todos os eventos", + "开锁事件": "Evento de arrombamento", + "异常事件": "Eventos incomuns", + "门铃事件": "Incidente da campainha", + "视频事件": "Eventos de vídeo", + "请开启蓝牙": "Por favor, ligue o Bluetooth", + "请选择有效日": "Selecione a data de vigência", + "公司名字长度不能小于 6 ": "O nome da empresa não pode ter menos de 6 de comprimento ", + "已是最新版本": "É a versão mais recente", + "一": "Um", + "二": "Dois", + "三": "Três", + "四": "Quatro", + "五": "Cinco", + "六": "Seis", + "日": "dia", + "新建短信模版": "Criar um novo modelo de SMS", + "新建邮件模版": "Criar um novo modelo de e-mail", + "自定义短信模版": "Personalizar modelos de SMS", + "自定义邮件模版": "Personalizar o modelo de e-mail", + "名称": "nome", + "星星锁": "Bloqueio de estrelas", + "无考勤记录": "Sem registros de presença", + "大家干劲十足": "Todo mundo está cheio de energia", + "工作时长未出炉": "O horário de trabalho não foi divulgado", + "国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "A escolha do país e da região afetará a segurança dos dados e você está selecionando a Albânia, confirme antes de prosseguir", + "确认国家或地区": "Confirme o país ou a região", + "我知道了": "Eu sei", + "为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "Para que você receba notificações e atualizações importantes em tempo hábil, precisamos obter permissões de notificação. Clique no botão \"OK\" e ative as permissões de notificação na página de configurações.", + "开启后,可通过长按锁上的设置键重新上电,用APP重新添加": "Depois de ligá-lo, você pode religá-lo pressionando longamente o botão de configuração na fechadura e adicioná-lo novamente com o APP", + "已有": "Há", + "新增": "Novo", + "账号格式错误": "O formato da conta está incorreto", + "接收者信息为空": "As informações do destinatário estão vazias", + "请输入时间(秒)": "Insira o tempo (segundos)", + "加载数据失败": "Falha ao carregar dados", + "重试": "Repetir", + "升级中,是否退出": "Durante a atualização, se você deve sacar", + "下一步": "Próximo", + "公寓": "apartamento", + "个人用户": "Usuários individuais", + "星寓": "Residência Star", + "账号": "Conta", + "请输入手机号或email": "Por favor, digite seu número de celular ou e-mail", + "请输入星寓管理员的账号": "Introduza o número da conta do administrador do Star Residence", + "选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权": "O bloqueio inteligente selecionado será transferido para a conta que você inseriu e você perderá o controle do bloqueio", + "暂不支持跨平台转移,敬请期待": "A transferência entre plataformas não é suportada por enquanto, portanto, fique atento", + "移除坏锁": "Remova o bloqueio defeituoso", + "转移确认": "Confirmação de transferência", + "本次共转移": "Desta vez, foi transferido", + "把智能锁": "Coloque a fechadura inteligente", + "确认": "Confirmar", + "移除成功": "A remoção foi bem-sucedida", + "转移成功": "A transferência foi bem-sucedida", + "该已锁被删除": "A fechadura foi removida", + "授权管理员只能查看和管理自己下发的钥匙、密码等权限": "Os administradores autorizados só podem exibir e gerenciar as chaves, senhas e outras permissões emitidas por eles mesmos", + "添加授权管理员": "Adicionar um administrador de autorização", + "导出记录": "Exportar o registro", + "选择时间段": "Selecione um período de tempo", + "导出": "Exportação", + "批量导出": "Exportação em massa", + "读取记录": "Leia o registro", + "设备": "equipamento", + "消息": "Mensagem", + "智能分析": "Análise inteligente", + "精准识别设备事件,过滤无效信息": "Identifique com precisão os eventos do dispositivo e filtre informações inválidas", + "系统设置": "Configurações do sistema", + "系统的全局配置在此项内进行设置": "A configuração global do sistema é definida neste item", + "导出操作记录": "Exportar o registro da operação", + "立即查看": "Confira agora", + "导出成功": "Exportação bem-sucedida", + "发送钥匙": "Enviar chaves", + "进度": "Progresso", + "失败": "falhar", + "人脸详情": "Detalhes do rosto", + "感应到门前约1.5米有人时,将自动启动面部识别开锁。": "Quando detectar que há uma pessoa a cerca de 1,5 metros na frente da porta, ele iniciará automaticamente o desbloqueio do reconhecimento facial.", + "感应到门前约0.8米有人时,将自动启动面部识别开锁。": "Quando detectar que há uma pessoa a cerca de 0,8 metros na frente da porta, ele iniciará automaticamente o desbloqueio do reconhecimento facial.", + "感应到门前约0.5米有人时,将自动启动面部识别开锁。": "Quando detectar que há uma pessoa a cerca de 0,5 metros na frente da porta, ele iniciará automaticamente o desbloqueio do reconhecimento facial.", + "感应距离已关闭,需手动触摸键盘任意键,进行面部识别开锁。": "A distância de detecção está desativada e você precisa tocar manualmente em qualquer tecla do teclado para desbloquear a fechadura com reconhecimento facial.", + "防误开已打开,开锁后": "A abertura anti-acidental foi ativada, após o desbloqueio", + "秒内不可使用面容开锁": "O desbloqueio facial não pode ser usado por segundos", + "掌静脉": "Veia palmar", + "添加掌静脉": "Adicionar veia palmar", + "胁迫掌静脉": "Estresse nas veias da palma da mão", + "请不要将胁迫掌静脉用于日常开锁": "Não use a veia palmar coercitiva para arrombamento diário", + "已连接到锁,请自然张开手掌,掌心正对摄像头": "Se você estiver conectado à fechadura, abra a palma da mão naturalmente e fique de frente para a câmera com a palma da mão voltada para você", + "掌静脉详情": "Detalhes da veia palmar", + "掌静脉号": "Número da veia palmar", + "蓝牙未打开,请到设置里面打开蓝牙": "O Bluetooth não está ativado, vá para as configurações para ativar o Bluetooth", + "删除用户时,会将用户拥有的钥匙一起删除。": "Quando você exclui um usuário, as chaves que o usuário possui são excluídas junto com ele.", + "配置网络": "Configurar a rede", + "你好": "Olá", + "成功": "suceder", + "类型选择": "Seleção de tipo", + "请选择要使用哪种类型": "Selecione o tipo que deseja usar", + "系统邮件(推荐)": "E-mail do sistema (recomendado)", + "系统短信(推荐)": "SMS do sistema (recomendado)", + "邮件将从软件平台直接发给用户,请根据需要在软件里购买邮件数量。": "Os e-mails serão enviados diretamente aos usuários da plataforma de software, compre o número de e-mails no software conforme necessário.", + "短信将从软件平台直接发给用户,请根据需要在软件里购买短信数量。": "O SMS será enviado diretamente ao usuário a partir da plataforma de software, adquira o número de mensagens SMS no software conforme necessário.", + "个人邮件": "Correio pessoal", + "个人短信": "Mensagens de texto pessoais", + "邮件将从你的个人邮箱发给用户": "Os e-mails serão enviados aos usuários de sua caixa de correio pessoal", + "短信将从你的个人手机号发给用户,费用由运营商从你的手机号扣除": "O SMS será enviado ao usuário a partir do seu número de celular pessoal, e a operadora deduzirá a taxa do seu número de celular", + "为了更好地应用体验,请确定权限": "Para uma melhor experiência no aplicativo, determine as permissões", + "您第一次拒绝权限,请确定权限": "Na primeira vez que você negar permissões, confirme as permissões", + "您第二次拒绝权限,请去应用设置开启权限": "Se você negar permissão pela segunda vez, acesse as configurações do aplicativo para ativar a permissão", + "去应用市场": "Ir para o mercado de aplicativos", + "温馨提示": "Dicas", + "关闭应用": "Feche o aplicativo", + "开启微信接收报警消息需要先关注": "Ativar o WeChat para receber mensagens de alarme requer atenção primeiro", + "微信公众号,请保存二维码并使用微信扫一扫设置": "Conta pública do WeChat, salve o código QR e use o WeChat para verificar as configurações", + "实名认证为付费功能,请联系锁的管理员购买后再使用": "A autenticação de nome real é um recurso pago, entre em contato com o administrador da fechadura antes de comprar", + "位置权限": "Permissões de localização", + "请开启位置权限,应用需要位置权限才可以完成智能锁和网关的蓝牙操作": "Ative as permissões de localização, o aplicativo requer permissões de localização para concluir a operação Bluetooth da fechadura inteligente e do gateway", + "相机/相册权限": "Permissões de câmera/álbum", + "请开启本地存储权限,允许应用读写设备上的照片及文件": "Ative as permissões de armazenamento local para permitir que os aplicativos leiam e gravem fotos e arquivos no seu dispositivo", + "点击选择": "Clique em Selecionar", + "微信": "Bate-papo", + "朋友圈": "Círculo de amigos", + "QQ空间": "Espaço QQ", + "微博": "Weibo", + "链接": "link", + "今天": "Hoje", + "密码错误": "Senha errada", + "网络中断": "Interrupções de rede", + "钥匙不存在": "A chave não existe", + "钥匙过期": "A chave expira", + "钥匙已存在": "A chave já está lá", + "密码失效": "Invalidação de senha", + "门锁时间异常": "O tempo de travamento da porta é anormal", + "APP(手机)未联网": "O APP (celular) não está conectado à Internet", + "数据不存在": "Os dados não existem", + "待接收": "Para ser recebido", + "已冻结": "Congelado", + "已删除": "Deletado", + "未知": "Desconhecido", + "拖动下方滑块完成拼图": "Arraste o controle deslizante abaixo para completar o quebra-cabeça", + "验证成功": "A verificação foi bem-sucedida", + "验证失败": "Falha na verificação", + "向右拖动滑块填充拼图": "Arraste o controle deslizante para a direita para preencher o quebra-cabeça", + "请先获取到位置信息哦": "Por favor, obtenha as informações de localização primeiro", + "请选择国家": "Selecione um país", + "获取锁信息": "Obter informações de bloqueio", + "锁数据异常,请重试": "Os dados de bloqueio estão anormais, tente novamente", + "连接设备中...": "Conectando dispositivos...", + "把锁": "Fechadura", + "条": "tira", + "封": "envelope", + "次": "vezes", + "支付成功": "O pagamento foi bem-sucedido", + "查看详情": "Ver detalhes", + "请输入模板名称": "Insira um nome de modelo", + "模版类型": "Tipo de modelo", + "再返回一次退出": "Volte e saia uma vez", + "请先添加锁": "Por favor, adicione o bloqueio primeiro", + "可视对讲": "Vídeo porteiro", + "详细日志": "Registro detalhado", + "已复制到剪切板": "Copiado para a área de transferência", + "拍照": "fotografia", + "从相册选择": "Selecione no álbum", + "选择问题": "Selecione a pergunta", + "确认长度不足8位": "Confirme se o comprimento é inferior a 8 dígitos", + "新密码长度不足8位": "A nova senha tem menos de 8 dígitos", + "两次密码不一致": "A senha é inconsistente duas vezes", + "请点击获取验证码,验证码将发送到": "Clique em Obter código de verificação e o código de verificação será enviado para", + "切换": "Entrega", + "验证": "verificar", + "验证成功,账号已删除": "A verificação foi bem-sucedida e a conta foi excluída", + "该密码不是自定义密码,无法修改": "Essa senha não é uma senha personalizada e não pode ser modificada", + "请选择设备要关联哪些姓名": "Selecione quais nomes você deseja associar ao seu dispositivo", + "请选择姓名要关联哪些设备": "Selecione o nome com o qual deseja associar os dispositivos", + "确定要移除所选中的坏锁吗?": "Tem certeza de que deseja remover o bloqueio incorreto selecionado?", + "邮件通知": "Notificações por e-mail", + "短信通知": "Notificações por SMS", + "您好,您的授权管理员生成成功": "Olá, seu administrador autorizado foi gerado com sucesso", + "请输入接收者姓名": "Digite o nome do destinatário", + "版本更新": "Atualização de versão", + "下次再说": "Da próxima vez", + "配网成功": "A rede de distribuição foi bem-sucedida", + "配网失败": "Falha na rede de distribuição", + "该锁的无线键盘都将被删除": "O teclado sem fio da fechadura será removido", + "实时画面": "Imagem ao vivo", + "适合门口较为安全的环境。": "É adequado para um ambiente relativamente seguro na entrada.", + "仅发生特定事件才录像,并可查看实时画面。": "Apenas eventos específicos são gravados e a transmissão ao vivo pode ser visualizada.", + "一般情况下,满电可使用7-8个月": "Geralmente, uma carga completa pode durar de 7 a 8 meses", + "有人逗留或发生特定事件才录像,可随时查看": "As gravações são feitas apenas quando alguém está hospedado ou ocorre um evento específico e podem ser visualizadas a qualquer momento", + "实时画面。": "Imagem ao vivo.", + "一般情况下,满电可使用5~6个月。": "Em circunstâncias normais, pode ser usado por 5 ~ 6 meses com carga total.", + "适合门口人员复杂、较不安全的环境。": "É adequado para ambientes complexos e inseguros na porta.", + "有人出现就录像,可随时查看实时画面。": "Quando alguém aparece, ele grava e pode ver a imagem ao vivo a qualquer momento.", + "一般情况下,满电可使用2~4个月。": "Em circunstâncias normais, pode ser usado por 2 ~ 4 meses com carga total.", + "根据您家门口实际情况设置录像和实时画面功能。": "Configure as funções de vídeo e visualização ao vivo de acordo com a situação real à sua porta.", + "可使用时长由具体设置决定。": "A duração do uso é determinada pelas configurações específicas.", + "查看": "Vista", + "有人按门铃或发生": "Alguém toca a campainha ou acontece", + "异常事件时": "Eventos anormais", + "不录像": "Sem vídeo", + "有人出现、按门铃": "Alguém aparece e toca a campainha", + "或发生异常事件时": "ou quando ocorre um evento anormal", + "逗留达到10秒": "Fique por 10 segundos", + "约1.5米": "Cerca de 1,5 metros", + "随时": "sempre", + "立即录像": "Grave imediatamente", + "录像时机": "Tempo do vídeo", + "有人出现时录像": "Gravação de vídeo quando alguém aparece", + "人体侦测距离": "Distância de detecção humana", + "查看实时画面": "Ver feed ao vivo", + "自定义时间": "Horário personalizado", + "当日": "Dia", + "次日": "Próximo", + "自定义时段": "Intervalos de tempo personalizados", + "发生事件时查看": "Exibir como um evento ocorre", + "实时查看": "Visualização em tempo real", + "有人在门口出现10秒后开始录像。": "Alguém apareceu na porta por 10 segundos e começou a gravar.", + "有人按门铃时立即录像。": "Gravando assim que alguém toca a campainha.", + "有人出现在门前1.5米范围时启动录像": "Alguém apareceu na frente da porta a 1,5 metros para iniciar o vídeo", + "约0.8米": "Cerca de 0,8 metros", + "约3.0米": "Aprox. 3,0 metros", + "添加指纹失败": "Falha na adição de impressões digitais", + "项": "item", + "播放中": "Jogando agora", + "下载": "Baixar", + "暂无下载内容": "Nenhum conteúdo para download no momento", + "亮度": "brilho", + "音量": "volume", + "快进至": "Avanço rápido para", + "快退至": "Recue rapidamente", + "暂无视频信息": "Ainda não há informações sobre o vídeo", + "加载出错": "Erro de carregamento", + "请单人正对门锁,距离一个成年人手臂长度": "Por favor, enfrente a fechadura da porta para uma pessoa, à distância de um adulto", + "(约0.6米)。": "(cerca de 0,6 metros).", + "保持脸部无遮挡,露出五官。": "Mantenha seu rosto desobstruído e mostre suas características faciais.", + "准备好了,开始添加": "Pronto, comece a adicionar", + "正在录入中...": "Entrar...", + "添加人脸失败": "Falha ao adicionar rostos", + "重置后,该锁的人脸都将被删除哦,确认要重置吗?": "Após a redefinição, a face da fechadura será excluída, você confirma que deseja redefini-la?", + "人脸号": "Número da face", + "虹膜详情": "Detalhes da íris", + "虹膜号": "Número da íris", + "选择设备类型": "Selecione o tipo de dispositivo", + "照明灯具": "Luminárias", + "电动窗帘": "Cortinas motorizadas", + "门窗传感器": "Sensores de portas e janelas", + "传感器": "sensor", + "清除数据成功": "A limpeza de dados foi bem-sucedida", + "1.锁没有联网,密码、IC卡、指纹等开门记录无法实时上传,可以点击右上角按钮,然后读取记录。": "1. A fechadura não está conectada à Internet e a senha, cartão IC, impressão digital e outros registros de abertura de porta não podem ser carregados em tempo real, você pode clicar no botão no canto superior direito e ler o registro.", + "2.如果您需要保留历史记录,可以点击右上角按钮,然后导出记录": "2. Se você precisar manter o histórico, clique no botão no canto superior direito e exporte o registro", + "看不到操作记录,可能原因有": "Não consigo ver o registro da operação, pode haver um motivo", + "操作记录详情": "Detalhes do log de operação", + "操作时间": "Tempo de operação", + "此模块功能需要锁联网后设置方可生效": "Esta função do módulo precisa ser bloqueada na Internet antes de entrar em vigor", + "用户已存在": "O usuário já existe", + "钥匙数量已到上限": "O número de chaves atingiu o limite", + "附近没有可用网关": "Não há gateways disponíveis nas proximidades", + "正在创建安全连接...": "Criando uma conexão segura...", + "监视状态下不能发送录音": "As gravações não podem ser enviadas enquanto monitoradas", + "挂断": "Desligar", + "监视中暂不能开锁": "A fechadura não pode ser desbloqueada durante a vigilância", + "长按说话": "Pressione e segure para falar", + "松开发送": "Desenvolvimento solto", + "请输入6位数字开锁密码": "Digite o código de desbloqueio de 6 dígitos", + "请输入开锁密码": "Digite o código de desbloqueio", + "接收者在有效期内可以不限次数使用": "O destinatário pode usá-lo quantas vezes quiser durante o período de validade", + "接收者可以使用此App开关锁": "O destinatário pode ativar e desativar o bloqueio usando este aplicativo", + "单次钥匙有效期为1小时,只能使用一次": "Uma única chave é válida por 1 hora e só pode ser usada uma vez", + "接收者可以在有效期内的固定时间段里,不限次数使用": "O destinatário pode usá-lo quantas vezes quiser por um período fixo de tempo durante o período de validade", + "获取模板失败": "Falha ao obter o modelo", + "微信通知": "Notificação do WeChat", + "系统短信": "SMS do sistema", + "系统邮件": "Correio do sistema", + "模板": "modelo", + "新建模版": "Nova versão de modelagem", + "您好,您的密码是": "Olá, sua senha é", + "密码名字": "Nome da senha", + "请输入6-9位密码": "Digite uma senha de 6 a 9 dígitos", + "设置密码": "Definir uma senha", + "操作成功,密码为": "A operação foi bem-sucedida e a senha é", + "类型:自定义-永久": "Tipo: Personalizado - Permanente", + "实时播放": "Reprodução em tempo real", + "点击对讲": "Clique em Interfone", + "长按开锁": "Pressione e segure para desbloquear", + "接听失败": "Falha ao responder", + "请在锁设置中开启远程开锁": "Ative o desbloqueio remoto nas configurações de bloqueio", + "接听": "Responder", + "截图已保存到相册": "A captura de tela é salva no álbum", + "录屏已保存到相册": "A gravação de tela foi salva no álbum", + "添加遥控": "Adicionar controle remoto", + "已连接到锁,请按遥控": "Ele está conectado à fechadura, pressione o controle remoto", + "遥控号": "Número do controle remoto", + "遥控详情": "Detalhes do controle remoto", + "照明": "Iluminando", + "退出演示模式": "Sair do modo de demonstração", + "提示:当前界面为展示界面,添加设备后才能继续使用": "Dica: A interface atual é uma interface de exibição e você pode continuar a usá-la depois de adicionar um dispositivo", + "门已上锁": "A porta está trancada", + "您的账号在异地登录,如非本人,请尽快修改密码": "Se sua conta estiver conectada em um local diferente, altere sua senha o mais rápido possível", + "开门成功": "A porta foi aberta com sucesso", + "开门失败": "Falha ao abrir a porta", + "呼叫提醒": "Lembretes de chamadas", + "收到来自": "recebido de", + "锁的呼叫": "Chamada de bloqueio", + "加载数据中": "Carregando dados", + "搜索所有锁类型": "Pesquisar todos os tipos de fechadura", + "锁电量更新时间": "Bloqueie o tempo de atualização da bateria", + "1月": "Janeiro", + "2月": "Fevereiro", + "3月": "Março", + "4月": "Abril", + "5月": "Maio", + "6月": "Junho", + "7月": "Julho", + "8月": "Agosto", + "9月": "Setembro", + "10月": "Outubro", + "11月": "Novembro", + "12月": "Dezembro", + "热门城市": "Cidades populares", + "导出锁数据": "Exportar dados de bloqueio", + "一键开锁": "Desbloqueio com um clique", + "已开通": "Aberto", + "繁体中文": "Chinês tradicional", + "法语": "Francês", + "俄语": "Russo", + "德语": "Alemão", + "日语": "Japonês", + "韩语": "Coreano", + "意大利语": "Italiano", + "乌克兰语": "Ucraniano", + "葡萄牙语": "Português", + "西班牙语": "Espanhol", + "阿拉伯语": "Árabe", + "越南语": "Vietnamita", + "马来语": "Malaio", + "荷兰语": "Holandês", + "罗马尼亚语": "Romeno", + "立陶宛语": "Lituano", + "瑞典语": "Sueco", + "爱沙尼亚语": "Estoniano", + "波兰语": "Polonês", + "斯洛伐克语": "Eslovaco", + "捷克语": "Tcheco", + "希腊语": "Grego", + "希伯来语": "Hebraico", + "塞尔维亚语": "Sérvio", + "土耳其语": "Turco", + "匈牙利语": "Húngaro", + "保加利亚语": "Búlgaro", + "哈萨克斯坦语": "Cazaquistão", + "孟加拉语": "Bengalês", + "克罗地亚语": "Croata", + "泰语": "Tailandês", + "印度尼西亚语": "Indonésio", + "芬兰语": "Finlandês", + "丹麦语": "Dinamarquês", + "印地语": "Hindi", + "乌尔都语": "Urdu", + "亚美尼亚语": "Armênio", + "格鲁吉亚语": "Georgiano", + "巴西葡萄牙语": "Português do Brasil", + "繁体中文(中国台湾)": "Chinês Tradicional (Taiwan, China)", + "繁体中文(中国香港)": "Chinês Tradicional (Hong Kong, China)", + "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Após a reinicialização, as veias palmares da fechadura serão excluídas, você confirma que deseja redefini-la?", + "在线": "online", + "离线": "offline", + "购买记录": "Histórico de compras", + "使用记录": "Registros de uso", + "失效时间要大于当前时间": "O tempo de expiração é maior que o tempo atual", + "修改名字": "Alterar o nome", + "时": "Hora", + "分": "dividir", + "您可以使用Alexa进行开锁、闭锁和查看锁状态": "Você pode usar o Alexa para desbloquear, travar e visualizar o status do bloqueio", + "支持的国家": "Países com suporte", + "支持的国家值": "Valores de país compatíveis", + "操作流程": "Processo de operação", + "操作流程值": "Valor do fluxo de operação", + "支持的语言": "Idiomas suportados", + "英语": "Inglês", + "Google Home操作流程的值": "O valor do fluxo de operação do Google Home", + "密码需至少包含数字/字母/字符中的2种组合": "A senha deve conter pelo menos 2 combinações de números, letras e caracteres", + "已开锁": "Desbloqueado", + "已闭锁": "Está bloqueado", + "两次密码不一致哦": "A senha é inconsistente duas vezes", + "中功率": "Potência média", + "常规使用": "Uso regular", + "扫描设备": "Escaneie o dispositivo", + "删除失败,网关可能已经离线,是否强制删除该数据?": "Se a exclusão falhar, o gateway pode estar offline, os dados são excluídos à força?", + "超级管理员英文": "Super admin Inglês", + "授权管理员英文": "Administrador autorizado Inglês", + "普通管理员英文": "Administrador geral Inglês", + "网关设备英文": "Dispositivo de gateway em inglês", + "手机需联网英文": "O celular deve estar conectado à Internet em inglês", + "年简称": "Abreviatura do ano", + "月简称": "Abreviatura mensal", + "日简称": "Abreviatura do dia", + "时简称": "Abreviatura de tempo", + "分简称": "Abreviação", + "跟随系统": "Siga o sistema", + "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais da fechadura serão excluídas, você confirma que deseja redefini-la?", + "通话未接通,已挂断": "A chamada não está conectada e foi desligada", + "通话异常中断": "As chamadas são interrompidas de forma anormal", + "通话连接失败": "Falha na conexão da chamada", + "已挂断": "Desligou", + "正在说话...": "Falação...", + "设备不在线": "O dispositivo não está online", + "设备未配网": "O equipamento não está equipado com uma rede", + "已静音": "Foi silenciado", + "该锁的远程开锁功能未启用": "O recurso de desbloqueio remoto não está habilitado para este bloqueio", + "下载完成,请到相册查看": "Uma vez baixado, por favor, vá para o álbum de fotos para ver", + "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Se você não conseguir monitorar quando o Cat's Eye estiver definido para o modo de economia de energia, mude para um modo diferente nas configurações do Cat's Eye", + "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "O desbloqueio remoto não é possível quando o CatEye está definido para o modo de economia de energia, mude para um modo diferente nas configurações do CatEye", + "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto da fechadura será excluído, você confirma que ele precisa ser redefinido?", + "版本说明": "Impressão", + "呼叫目标": "Destino da chamada", + "管理员APP": "Admin APP", + "可视门铃码": "Código visual da campainha", + "电子反锁": "Antibloqueio eletrônico", + "双重认证": "Autenticação de dois fatores", + "双锁联动": "Articulação de trava dupla", + "1.用智能锁APP添加锁和网关": "1. Adicione fechaduras e gateways com o aplicativo de bloqueio inteligente", + "2.在APP里开启锁的远程开锁功能(这个功能默认是关闭的)。如果没有这个选项,则锁不支持Google Home": "2. Ative a função de desbloqueio remoto da fechadura no APP (esta função está desativada por padrão). Se você não tiver essa opção, o cadeado não é compatível com o Google Home", + "3.安装Google Home APP,点击左上角的加号按钮": "3. Instale o aplicativo Google Home e clique no botão de adição no canto superior esquerdo", + "4.在设置页面,选择与Google协同工作": "4. Na página de configurações, selecione Trabalhar com o Google", + "5.搜索": "5. Pesquisa", + ",并用智能锁APP的账号和密码进行授权": "e autorizar com a conta e senha do APP smart lock", + "暂无最新记录": "Não há registro mais recente", + "请将手机切换至2.4G WiFi进行手动连接": "Mude seu telefone para WiFi 2.4G para conexão manual", + "请扫描可视门铃码二维码": "Por favor, digitalize o código QR do código da campainha de vídeo", + "请确保网络是2.4GHz Wi-Fi": "Certifique-se de que a rede seja Wi-Fi de 2.4 GHz", + "已选": "Eleito", + "是否要远程开锁": "Se deseja desbloquear remotamente", + "国家地区的选择将影响数据安全,你当前选择的是": "A escolha do país afetará a segurança dos dados, e você atualmente escolhe", + "请确认后再继续": "Por favor, confirme antes de prosseguir", + "需要相机权限": "Permissão da câmera necessária", + "此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "Esse recurso só pode ser ativado e desativado por meio do Bluetooth do telefone próximo à fechadura", + "网关添加成功": "O gateway foi adicionado com êxito", + "第三方平台设置": "Configurações de plataforma de terceiros", + "涂鸦智能": "Tuya Smart", + "锁语音包设置": "Bloquear as configurações do pacote de voz", + "语音包设置": "Configurações do pacote de voz", + "(中国台湾)": "(中国台湾)", + "男声": "Macho", + "女声": "Garota" +} \ No newline at end of file diff --git a/lan/lan_ro.json b/lan/lan_ro.json index 7592582a..7a262cc8 100644 --- a/lan/lan_ro.json +++ b/lan/lan_ro.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?", diff --git a/lan/lan_ru.json b/lan/lan_ru.json index ebf8712c..f26f445e 100644 --- a/lan/lan_ru.json +++ b/lan/lan_ru.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?", diff --git a/lan/lan_sk.json b/lan/lan_sk.json index 6f33ec14..9fcffe2b 100644 --- a/lan/lan_sk.json +++ b/lan/lan_sk.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?", diff --git a/lan/lan_sr_cyrl.json b/lan/lan_sr_cyrl.json index 8e017246..d409e335 100644 --- a/lan/lan_sr_cyrl.json +++ b/lan/lan_sr_cyrl.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?", diff --git a/lan/lan_sv.json b/lan/lan_sv.json index 1d3a7b05..8c54e95b 100644 --- a/lan/lan_sv.json +++ b/lan/lan_sv.json @@ -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?", diff --git a/lan/lan_th.json b/lan/lan_th.json index da3fe4ed..e8480118 100644 --- a/lan/lan_th.json +++ b/lan/lan_th.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?", diff --git a/lan/lan_tr.json b/lan/lan_tr.json index d870329b..fe782f33 100644 --- a/lan/lan_tr.json +++ b/lan/lan_tr.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?", diff --git a/lan/lan_tw.json b/lan/lan_tw.json index f49c8e3e..619f4344 100644 --- a/lan/lan_tw.json +++ b/lan/lan_tw.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?", diff --git a/lan/lan_uk.json b/lan/lan_uk.json index c0bcfcd9..d4f4e101 100644 --- a/lan/lan_uk.json +++ b/lan/lan_uk.json @@ -1082,6 +1082,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?", diff --git a/lan/lan_ur.json b/lan/lan_ur.json index 45f7a811..b8a224a7 100644 --- a/lan/lan_ur.json +++ b/lan/lan_ur.json @@ -1084,6 +1084,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "繁体中文(中国台湾)": "繁體中文(中國臺灣)", "繁体中文(中国香港)": "繁體中文(中國香港)", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ری سیٹ کرنے کے بعد ، لاک کی میٹاکارپل رگیں حذف کردی جائیں گی۔ کیا آپ واقعی دوبارہ ترتیب دینا چاہتے ہیں؟", diff --git a/lan/lan_vi.json b/lan/lan_vi.json index e037b39a..2e73e433 100644 --- a/lan/lan_vi.json +++ b/lan/lan_vi.json @@ -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?", diff --git a/lan/lan_zh.json b/lan/lan_zh.json index 913c7bf3..224d2160 100755 --- a/lan/lan_zh.json +++ b/lan/lan_zh.json @@ -1087,6 +1087,7 @@ "乌尔都语": "اوردو", "亚美尼亚语": "Հայերեն", "格鲁吉亚语": "ქართული", + "巴西葡萄牙语": "Português do Brasil", "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?", "在线": "在线", "离线": "离线", diff --git a/langAzure.py b/langAzure.py new file mode 100644 index 00000000..a42bd87a --- /dev/null +++ b/langAzure.py @@ -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() \ No newline at end of file diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart index dbbe4187..e9f93968 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart @@ -321,24 +321,23 @@ class _DoorLockLogPageState extends State with RouteAware { } else { return item.recordStr ?? ''; } - case 20: return '${formatTimestampToHHmm(item.operateDate!)} ' + '密码'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'+'(${'密码'.tr}:${item.keyboardPwd})'; case 30: return '${formatTimestampToHHmm(item.operateDate!)} ' + '卡'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 40: if (item.username != null && item.username != '') { return '${formatTimestampToHHmm(item.operateDate!)} ' + '蓝牙'.tr + '开锁'.tr + '(' + - 'ID'.tr + + '${'昵称'.tr}'.tr + ':${item.username})'; } else { return '${formatTimestampToHHmm(item.operateDate!)} ' + @@ -353,55 +352,58 @@ class _DoorLockLogPageState extends State with RouteAware { return '${formatTimestampToHHmm(item.operateDate!)} ' + '组合模式'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 60: return '${formatTimestampToHHmm(item.operateDate!)} ' + - '添加指纹'.tr + - '(ID:${item.username})'; + '添加'.tr + + '指纹'.tr + + '(${'昵称'.tr}:${item.username})'; case 70: return '${formatTimestampToHHmm(item.operateDate!)} ' + - '添加密码'.tr + - '(ID:${item.username})'; + '添加'.tr + + '密码'.tr + + '(${'昵称'.tr}:${item.username})'; case 80: return '${formatTimestampToHHmm(item.operateDate!)} ' + - '添加卡'.tr + - '(ID:${item.username})'; + '添加'.tr + + '卡'.tr + + '(${'昵称'.tr}:${item.username})'; case 90: return '${formatTimestampToHHmm(item.operateDate!)} ' + '删除'.tr + '指纹'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 100: return '${formatTimestampToHHmm(item.operateDate!)} ' + '删除'.tr + '密码'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 110: return '${formatTimestampToHHmm(item.operateDate!)} ' + '删除'.tr + '卡'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 160: return '${formatTimestampToHHmm(item.operateDate!)} ' + '人脸'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 190: return '${formatTimestampToHHmm(item.operateDate!)} ' + '胁迫指纹'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 200: return '${formatTimestampToHHmm(item.operateDate!)} ' + '胁迫密码'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; case 210: return '${formatTimestampToHHmm(item.operateDate!)} ' + '胁迫卡片'.tr + '开锁'.tr + - '(ID:${item.username})'; + '(${'昵称'.tr}:${item.username})'; default: return item.recordStr ?? ''; } diff --git a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart index a330385d..b9c5c90f 100755 --- a/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart +++ b/lib/main/lockDetail/fingerprint/addFingerprint/addFingerprint_page.dart @@ -123,25 +123,25 @@ class _AddFingerprintPageState extends State with RouteAware String iconPath = ''; switch (number) { case 1: - iconPath = 'images/main/icon_addFingerprint_fingerprint_one.png'; + iconPath = 'images/main/addFingerprint/1.jpg'; break; case 2: - iconPath = 'images/main/icon_addFingerprint_fingerprint_two.png'; + iconPath = 'images/main/addFingerprint/2.jpg'; break; case 3: - iconPath = 'images/main/icon_addFingerprint_fingerprint_three.png'; + iconPath = 'images/main/addFingerprint/3.jpg'; break; case 4: - iconPath = 'images/main/icon_addFingerprint_fingerprint_four.png'; + iconPath = 'images/main/addFingerprint/4.jpg'; break; case 5: - iconPath = 'images/main/icon_addFingerprint_fingerprint_five.png'; + iconPath = 'images/main/addFingerprint/5.jpg'; break; case 6: - iconPath = 'images/main/icon_addFingerprint_fingerprint_six.png'; + iconPath = 'images/main/addFingerprint/6.jpg'; break; default: - iconPath = 'images/main/icon_addFingerprint_fingerprint_one.png'; + iconPath = 'images/main/addFingerprint/0.jpg'; break; } return iconPath; diff --git a/lib/main/lockDetail/lockDetail/ActivateInfoResponse.dart b/lib/main/lockDetail/lockDetail/ActivateInfoResponse.dart new file mode 100644 index 00000000..7c5ce8a1 --- /dev/null +++ b/lib/main/lockDetail/lockDetail/ActivateInfoResponse.dart @@ -0,0 +1,67 @@ +class ActivateInfoResponse { + ActivateInfoResponse({ + this.description, + this.errorCode, + this.data, // 现在是一个 List + this.errorMsg, + }); + + ActivateInfoResponse.fromJson(dynamic json) { + description = json['description']; + errorCode = json['errorCode']; + // 修改这里:如果 json['data'] 是列表,则解析为 List;否则为空列表 + data = json['data'] != null + ? (json['data'] as List).map((item) => ActivateInfo.fromJson(item)).toList() + : []; + errorMsg = json['errorMsg']; + } + + String? description; + int? errorCode; + List? data; // 改为 List + String? errorMsg; + + Map toJson() { + final map = {}; + map['description'] = description; + map['errorCode'] = errorCode; + if (data != null) { + // 修改这里:将 List 转换为 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 toJson() { + final map = {}; + map['platformName'] = platformName; + map['platform'] = platform; + return map; + } + + @override + String toString() { + return 'ActivateInfo{platformName: $platformName, platform: $platform}'; + } +} diff --git a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart index 656dc238..2d930e9a 100755 --- a/lib/main/lockDetail/lockDetail/lockDetail_logic.dart +++ b/lib/main/lockDetail/lockDetail/lockDetail_logic.dart @@ -371,10 +371,35 @@ class LockDetailLogic extends BaseGetXController { final int userNo = (indexList[1] * 256) + indexList[2]; indexMap['user'] = userNo.toString(); // AppLog.log('userNouserNouserNouserNo:$userNo'); + if (userNo == 0xFFFF) { + // 离线密码情况:16进制格式,去除结束符F(0x1F)及其之后的内容 + final List passwordData = + indexList.sublist(7, 17); // 取10个字节 + // 找到结束符F(0x1F)的位置 + int endIndex = passwordData.indexOf(0x1F); + if (endIndex == -1) { + // 如果没有结束符,取全部数据 + endIndex = passwordData.length; + } + // 只取结束符前的部分(不包括结束符) + final List 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 passwordData = indexList.sublist(7, 17); + final String password = utf8String(passwordData); + indexMap['password'] = password.toString(); + } - final List passwordData = indexList.sublist(7, 17); - final String password = utf8String(passwordData); - indexMap['password'] = password.toString(); // AppLog.log('passwordpasswordpassword:$password'); indexMap['success'] = '1'; diff --git a/lib/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_logic.dart b/lib/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_logic.dart index ddd118a4..b0dba54f 100644 --- a/lib/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_logic.dart +++ b/lib/main/lockDetail/lockSet/thirdPartyPlatform/third_party_platform_logic.dart @@ -1,5 +1,8 @@ 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/network/api_repository.dart'; +import 'package:star_lock/network/start_company_api.dart'; import 'package:star_lock/tools/baseGetXController.dart'; class ThirdPartyPlatformLogic extends BaseGetXController { @@ -11,6 +14,24 @@ class ThirdPartyPlatformLogic extends BaseGetXController { // 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 void dispose() { dismissEasyLoading(); diff --git a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart index 7b99294e..a72c9e7d 100755 --- a/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart +++ b/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart @@ -295,21 +295,24 @@ class _PasswordKeyPerpetualPageState extends State action: () { final PDuration selectDate = PDuration.parse(DateTime.tryParse(state.endTime.value)); - Pickers.showDatePicker(context, - selectDate: selectDate, - // maxDate传入三年以后得今天的时间 - maxDate: PDuration( - year: DateTime.now().year + 3, - month: DateTime.now().month, - day: DateTime.now().day), - minDate: PDuration( - year: DateTime.now().year, - month: DateTime.now().month, - day: DateTime.now().day), - mode: DateMode.YMDH, - hourShow24: true, onConfirm: (PDuration p) { - state.endTime.value = DateTool().getYMDHNDateString(p, 4); - }); + Pickers.showDatePicker( + context, + selectDate: selectDate, + // maxDate传入三年以后得今天的时间 + maxDate: PDuration( + year: DateTime.now().year + 3, + month: DateTime.now().month, + day: DateTime.now().day), + minDate: PDuration( + year: DateTime.now().year, + month: DateTime.now().month, + day: DateTime.now().day), + mode: DateMode.YMDH, + hourShow24: true, + onConfirm: (PDuration p) { + state.endTime.value = DateTool().getYMDHNDateString(p, 4); + }, + ); }), Container(height: 10.h), ], @@ -427,19 +430,20 @@ class _PasswordKeyPerpetualPageState extends State CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XL_WIFI), child: CommonItem( - leftTitel: '结束日期'.tr, - rightTitle: state.endTime.value, - isHaveLine: true, - isHaveDirection: true, - action: () { - final PDuration selectDate = - PDuration.parse(DateTime.tryParse(state.endTime.value)); - Pickers.showDatePicker(context, - selectDate: selectDate, - mode: DateMode.YMDH, onConfirm: (PDuration p) { - state.endTime.value = DateTool().getYMDHNDateString(p, 4); - }); - }), + leftTitel: '结束日期'.tr, + rightTitle: state.endTime.value, + isHaveLine: true, + isHaveDirection: true, + action: () { + final PDuration selectDate = + PDuration.parse(DateTime.tryParse(state.endTime.value)); + Pickers.showDatePicker(context, + selectDate: selectDate, + mode: DateMode.YMDH, onConfirm: (PDuration p) { + state.endTime.value = DateTool().getYMDHNDateString(p, 4); + }); + }, + ), ), CommonItem( leftTitel: '生效时间'.tr, @@ -458,20 +462,26 @@ class _PasswordKeyPerpetualPageState extends State }, hourShow24: true); }), CommonItem( - leftTitel: '失效时间'.tr, - rightTitle: state.loopFailureDate.value, - isHaveDirection: true, - action: () { - final PDuration selectDate = PDuration.parse( - DateTool().dateToDateTime(state.loopFailureDate.value, 0)); - Pickers.showDatePicker(context, - selectDate: selectDate, - mode: DateMode.H, onConfirm: (PDuration p) { + leftTitel: '失效时间'.tr, + rightTitle: state.loopFailureDate.value, + isHaveDirection: true, + action: () { + final PDuration selectDate = PDuration.parse( + DateTool().dateToDateTime(state.loopFailureDate.value, 0)); + Pickers.showDatePicker( + context, + selectDate: selectDate, + mode: DateMode.H, + onConfirm: (PDuration p) { state.loopFailureDate.value = DateTool().getYMDHNDateString(p, 5); state.loopEndHours.value = p.hour!; - }, hourShow24: true); - }), + state.endTime.value = DateTool().getYMDHNDateString(p, 4); + }, + hourShow24: true, + ); + }, + ), ], ); } diff --git a/lib/network/api.dart b/lib/network/api.dart index 412af193..31354efa 100755 --- a/lib/network/api.dart +++ b/lib/network/api.dart @@ -305,4 +305,6 @@ abstract class Api { '/lockSetting/updateLockSetting'; // 设置语音包 final String reportBuyRequestURL = '/service/reportBuyRequest'; // 上报增值服务购买请求 + final String getActivateInfoURL = + '/api/authCode/getTppSupport'; // 查询ttp } diff --git a/lib/network/start_company_api.dart b/lib/network/start_company_api.dart new file mode 100644 index 00000000..e5f4c1f2 --- /dev/null +++ b/lib/network/start_company_api.dart @@ -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 getActivateInfo({ + required String model, + }) async { + final response = await post( + _startChartHost + getActivateInfoURL.toUrl, + jsonEncode({ + 'model': model, + + }), + isUnShowLoading: true, + isUserBaseUrl: false, + ); + return ActivateInfoResponse.fromJson(response.body); + } +} diff --git a/lib/translations/app_dept.dart b/lib/translations/app_dept.dart index 8887396d..da78804a 100755 --- a/lib/translations/app_dept.dart +++ b/lib/translations/app_dept.dart @@ -60,6 +60,7 @@ extension ExtensionAppDept on AppDept { const Locale hyL = Locale('hy', 'AM'); const Locale kaL = Locale('ka', 'GE'); const Locale srCyrillic = Locale('sr', 'RS'); + const Locale ptBrL = Locale('pt', 'BR'); return [ enL, @@ -102,7 +103,8 @@ extension ExtensionAppDept on AppDept { urL, hyL, kaL, - srCyrillic + srCyrillic, + ptBrL ]; } } @@ -195,6 +197,8 @@ enum LanguageType { armenian, //格鲁吉亚语 georgian, + // 巴西葡萄牙语 + brazilianPortuguese, } extension ExtensionLanguageType on LanguageType { @@ -324,6 +328,9 @@ extension ExtensionLanguageType on LanguageType { case LanguageType.georgian: str = '格鲁吉亚语'.tr; break; + case LanguageType.brazilianPortuguese: + str = '巴西葡萄牙语'.tr; + break; } return str; } @@ -364,7 +371,11 @@ extension ExtensionLanguageType on LanguageType { languageType = LanguageType.italian; break; case 'pt': - languageType = LanguageType.portuguese; + if (countryCode.toLowerCase() == 'br') { + languageType = LanguageType.brazilianPortuguese; + } else { + languageType = LanguageType.portuguese; + } break; case 'es': languageType = LanguageType.spanish; @@ -671,6 +682,11 @@ extension ExtensionLanguageType on LanguageType { return locale; } break; + case LanguageType.brazilianPortuguese: + if (locale.languageCode == 'pt' && locale.countryCode == 'BR') { + return locale; + } + break; case LanguageType.system: // TODO: Handle this case. break; diff --git a/lib/translations/translation_loader.dart b/lib/translations/translation_loader.dart index 5a6c1b51..c75ef233 100755 --- a/lib/translations/translation_loader.dart +++ b/lib/translations/translation_loader.dart @@ -82,6 +82,7 @@ class TranslationLoader { static Map _urMap = {}; static Map _hyMap = {}; static Map _kaMap = {}; + static Map _ptBrMap = {}; static Map get zhDic => _zhMap; static Map get enDic => _enMap; @@ -126,6 +127,7 @@ class TranslationLoader { static Map get urMap => _urMap; static Map get hyMap => _hyMap; static Map get kaMap => _kaMap; + static Map get ptBrMap => _ptBrMap; static Future loadTranslation() async { _zhMap = await _loadJsonFile('lan/lan_zh.json'); @@ -171,6 +173,7 @@ class TranslationLoader { _urMap = await _loadJsonFile('lan/lan_ur.json'); _hyMap = await _loadJsonFile('lan/lan_hy.json'); _kaMap = await _loadJsonFile('lan/lan_ka.json'); + _ptBrMap = await _loadJsonFile('lan/lan_pt_br.json'); } static Future> _loadJsonFile(String filePath) async =>