fix: 1、添加繁体香港。2、修复简体、繁体(台湾)、繁体(香港)传入显示问题。3、修复网关模块bug。4、添加网关强制删除功能。5、添加网关扫描设备功能。6、修复国际化其他bug

This commit is contained in:
魏少阳 2024-12-13 10:59:42 +08:00
parent 5e4a08e803
commit 4d98561545
69 changed files with 1824 additions and 464 deletions

View File

@ -216,7 +216,6 @@
"添加网关": "إضافة بوابة",
"重新通电": "إعادة توصيل الطاقة",
"指示灯": "مصباح مؤشر",
"将网关重新通电,指示灯交替闪烁时点击下一步": "انقر فوق التالي عندما فلاش الضوء بالتناوب",
"选择网关": "اختر بوابة",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G غير مدعوم. يرجى اختيار واي فاي 2.4G.",
"WiFi密码": "واي فاي Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "يجب أن تحتوي كلمة المرور على الأقل على 2 مما يلي: الأرقام والحروف والأحرف الخاصة",
"已开锁": "غير مقفل",
"已闭锁": "مقفل",
"两次密码不一致哦": "كلمات المرور غير متسقة"
"两次密码不一致哦": "كلمات المرور غير متسقة",
"中功率": "قوة متوسطة",
"常规使用": "استخدام منتظم",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ ، وانقر بعد ذلك عندما يومض مصباح المؤشر بالتناوب",
"扫描设备": "جهاز المسح الضوئي",
"删除失败,网关可能已经离线,是否强制删除该数据?": "فشل الحذف. ربما تكون البوابة قد اختفت دون اتصال. هل تريد فرض حذف البيانات ؟"
}

View File

@ -217,7 +217,6 @@
"添加网关": "Добавяне на шлюз",
"重新通电": "Повторно свързване на захранването",
"指示灯": "Индикаторна светлина",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Щракнете върху следващия, когато светлинната светкавица се редува",
"选择网关": "Изберете шлюз",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g не се поддържа,. моля, изберете wifi от 2.4g.",
"WiFi密码": "Wifi passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Паролата трябва да съдържа поне 2 от следните: числа, букви и специални символи",
"已开锁": "Отключена",
"已闭锁": "Заключен",
"两次密码不一致哦": "Паролите са непоследователни"
"两次密码不一致哦": "Паролите са непоследователни",
"中功率": "Средна мощност",
"常规使用": "Редовна употреба",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди и щракнете върху следващия, когато индикаторната светлина мига алтернативно",
"扫描设备": "Сканиране устройство",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Изтриването не успя. Портата може да е отишла офлайн. Искате ли да принудите изтриване на данните?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "বিরোধী",
"重新通电": "পরীক্ষা",
"指示灯": "কেয়ানারেটরলাইট",
"将网关重新通电,指示灯交替闪烁时点击下一步": "বিকশিত",
"选择网关": "সিওসিকারওয়ে",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5 gisnoteigpped,.",
"WiFi密码": "উইফিক",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "ইসওয়ার্ডমস্টস্টেটলিয়াস্ট 2ofthefক্লোভিং:",
"已开锁": "কনুকলচকেড",
"已闭锁": "লোকচকেড",
"两次密码不一致哦": "Thepasswordsare pencay"
"两次密码不一致哦": "Thepasswordsare pencay",
"中功率": "উইউমপোওয়ার",
"常规使用": "গ্যারিউস",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "অ্যারাস্টার্টিউইসপোভেরেডন, প্রেস এবং টিপেস্টেট্রিসেট গানttonfor5sononds, এবং চক্লিক উইভেন্থে-উইন্টার",
"扫描设备": "সিস্কান্লিভাইস",
"删除失败,网关可能已经离线,是否强制删除该数据?": "ডাইজেজেশনিমেরিলেড। টিভওয়েমাইয়ানভিগনোনোআরলাইন। ডো ডাউনডেটা?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Přidat bránu",
"重新通电": "Znovu připojit napájení",
"指示灯": "Indikační světlo",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klepněte na tlačítko další, když světlo záblesky střídavě",
"选择网关": "Zvolte bránu",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g není podporována,. vyberte wifi 2.4g.",
"WiFi密码": "Wifi passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Heslo musí obsahovat alespoň 2 z těchto údajů: čísla, písmena a zvláštní znaky",
"已开锁": "Odemčeno",
"已闭锁": "Zamčeno",
"两次密码不一致哦": "Hesla jsou nekonzistentní"
"两次密码不一致哦": "Hesla jsou nekonzistentní",
"中功率": "Střední síla",
"常规使用": "Pravidelné použití",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund a klepněte na tlačítko next",
"扫描设备": "Skenovat zařízení",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Odstranění se nezdařilo. Brána možná byla offline. Chcete vynutit smazat data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Tilføj gatewayName",
"重新通电": "Tilslut kraften",
"指示灯": "Indikator Lys",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klik næste, når lyset blinker skiftevist",
"选择网关": "Vælg gatewayName",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G understøttes ikke, Vælg et WiFi på 2.4G.",
"WiFi密码": "WiFi- adgangskort",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Adgangskoden skal indeholde mindst 2 af følgende: tal, bogstaver og særlige tegn",
"已开锁": "Ulåset",
"已闭锁": "Låset",
"两次密码不一致哦": "Adgangskoderne er inkonsekvente"
"两次密码不一致哦": "Adgangskoderne er inkonsekvente",
"中功率": "Mellem effekt",
"常规使用": "Regelmæssig anvendelse",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Når gateway er tændt, tryk og hold nulstillingsknappen i 5 sekunder, og klik Next, når indikator lys blinker skiftevist",
"扫描设备": "Scan- enhed",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Sletning mislykkedes. Porten er måske offline. Vil du tvinge slette data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Gateway hinzufügen",
"重新通电": "Re Verbinden Sie die Strom versorgung",
"指示灯": "Anzeige leuchte",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klicken Sie als nächstes, wenn das Licht abwechselnd blinkt",
"选择网关": "Wählen Sie Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G wird nicht unterstützt, Bitte wählen Sie ein WiFi von 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Das Passwort muss mindestens 2 der folgenden Zahlen enthalten: Zahlen, Buchstaben und Sonder zeichen",
"已开锁": "Entsperrt",
"已闭锁": "Gesperrt",
"两次密码不一致哦": "Die Passwörter sind inkonsistent"
"两次密码不一致哦": "Die Passwörter sind inkonsistent",
"中功率": "Mittlere Leistung",
"常规使用": "Regelmäßige Verwendung",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden, und klicken Sie auf Weiter, wenn die Kontroll leuchte blinkt abwechselnd",
"扫描设备": "Scan-Gerät",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Löschung fehl geschlagen. Das Gateway ist möglicher weise offline gegangen. Möchten Sie das Löschen der Daten erzwingen?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Προσθήκη πύλης",
"重新通电": "Συνδέστε τη δύναμη",
"指示灯": "Φως δείκτης",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Κάντε κλικ στο επόμενο όταν το φως αναβοσβήνει εναλλάξα",
"选择网关": "Επιλογή πύλης",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "Το 5G δεν υποστηρίζεται.Παρακαλώ επιλέξτε ένα WiFi των 2.4G.",
"WiFi密码": "WiFi",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 2 από τα ακόλουθα: αριθμούς, γράμματα και ειδικούς χαρακτήρες.",
"已开锁": "Ξεκλείδωμα",
"已闭锁": "Κλειδωμένο",
"两次密码不一致哦": "Οι κωδικοί πρόσβασης δεν είναι συνεπείς."
"两次密码不一致哦": "Οι κωδικοί πρόσβασης δεν είναι συνεπείς.",
"中功率": "Μέση ισχύς",
"常规使用": "Κανονική χρήση:",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πατήστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα, και κάντε κλικ Next όταν το φως δείκτη αναβοσβήνει εναλλάξα",
"扫描设备": "Συσκευή σάρωσης",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Η διαγραφή απέτυχε. Η πύλη μπορεί να έχει εκτός λειτουργίας. Θέλετε να αναγκάσετε τη διαγραφή των δεδομένων;"
}

View File

@ -217,7 +217,7 @@
"添加网关": "Add Gateway",
"重新通电": "Re Connect the Power",
"指示灯": "Indicator Light",
"网关重新通电,指示灯交替闪烁时点击下一步": "Click next when the light flash alternately",
"网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds, and click Next when the indicator light flashes alternately",
"选择网关": "Choose Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G is not supported,.Please select a WiFi of 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1112,5 +1112,7 @@
"中功率": "Medium power",
"常规使用": "Regular use",
"扫描设备": "Scan device",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Deletion failed. The gateway may have gone offline. Do you want to force delete the data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Agregar puerta de enlace",
"重新通电": "Re conectar el poder",
"指示灯": "Luz indicadora",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Haga clic en siguiente cuando la luz parpadee alternativamente",
"选择网关": "Elegir puerta de enlace",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G no es compatible, Seleccione un WiFi de 2,4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "La contraseña debe contener al menos 2 de los siguientes: números, letras y caracteres especiales",
"已开锁": "Desbloqueado",
"已闭锁": "Bloqueado",
"两次密码不一致哦": "Las contraseñas son inconsistentes"
"两次密码不一致哦": "Las contraseñas son inconsistentes",
"中功率": "Potencia media",
"常规使用": "Uso regular",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos y haga clic en Siguiente cuando la luz indicadora parpadee alternativamente",
"扫描设备": "Dispositivo de exploración",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Falló la eliminación. Es posible que la puerta de enlace se haya desconectado. ¿Desea forzar la eliminación de los datos?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Lisa väravi",
"重新通电": "Ühendage võimsust",
"指示灯": "Näitaja Valguse",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klõpsa järgmine, kui valgus vilgutab vaheldumisel",
"选择网关": "Vali väravatee",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G ei ole toetatud, Palun valige WiFi 2.4G.",
"WiFi密码": "WiFi Passivorm",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Parool peab sisaldama vähemalt kahte järgmistest: numbreid, tähti ja erimärkid",
"已开锁": "Lukustatud",
"已闭锁": "Lukustatud",
"两次密码不一致哦": "Paroolid ei ole järjekindlad"
"两次密码不一致哦": "Paroolid ei ole järjekindlad",
"中功率": "Keskmine võimse",
"常规使用": "Regulaarne kasutamine",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage ja hoidke nuppu 5 sekundit, ja klõpsa Järgmine, kui indikaator valgus vilgub vaheldumisel",
"扫描设备": "Skaneerimisseade",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Kustutamine nurjus. Värav võis välja lülitada. Kas soovid kustutada andmed?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Lisää porttiComment",
"重新通电": "Yhdistä teho",
"指示灯": "Indikaattori Valo",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klikkaa seuraavaa, kun valo välähti vuorotellen.",
"选择网关": "Valitse porttiName",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G ei ole tuettu, valitse 2.4G:n WiFi.",
"WiFi密码": "WiFi",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Salasanassa on oltava vähintään kaksi seuraavista: numeroita, kirjaimia ja erityismerkkejä",
"已开锁": "Avaa lukitus",
"已闭锁": "Lukittu",
"两次密码不一致哦": "Salasanat ovat epäjohdonmukaiset."
"两次密码不一致哦": "Salasanat ovat epäjohdonmukaiset.",
"中功率": "Keskimääräinen teho",
"常规使用": "Säännöllinen käyttö",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä painiketta nollauspainiketta 5 sekunnin ajan, ja klikkaa Seuraava kun ilmaisin valo vilkkuu vuorotellensa",
"扫描设备": "Skannauslaite",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Poisto epäonnistui. Portti on ehkä pois päältä. Haluatko pakottaa poistamaan tiedot?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Ajouter une passerelle",
"重新通电": "Re reliez la puissance",
"指示灯": "Indicateur de lumière",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Cliquez sur suivant lorsque la lumière clignote alternativement",
"选择网关": "Choisissez la passerelle",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G n'est pas pris en charge,. Veuillez sélectionner un WiFi de 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Le mot de passe doit contenir au moins deux des éléments suivants: chiffres, lettres et caractères spéciaux",
"已开锁": "Déverrouillé",
"已闭锁": "Verrouillé",
"两次密码不一致哦": "Les mots de passe sont incohérents"
"两次密码不一致哦": "Les mots de passe sont incohérents",
"中功率": "Puissance moyenne",
"常规使用": "Utilisation régulière",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Une fois la passerelle allumée, appuyez et maintenez enfoncé le bouton de réinitialisation pendant 5 secondes, puis cliquez sur Suivant lorsque le voyant clignote alternativement",
"扫描设备": "Appareil de numérisation",
"删除失败,网关可能已经离线,是否强制删除该数据?": "La suppression a échoué. La passerelle est peut-être hors ligne. Voulez-vous forcer la suppression des données?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "הוספת שער",
"重新通电": "לחבר מחדש את הכוח",
"指示灯": "אור מחוון",
"将网关重新通电,指示灯交替闪烁时点击下一步": "לחץ על הבא כאשר הבזק אור לסירוגין",
"选择网关": "בחר שער",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g אינו נתמך,. בחר WiFi של 2.4g.",
"WiFi密码": "הפסח",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "הסיסמה חייבת להכיל לפחות 2 מאלה: מספרים, אותיות ותווים מיוחדים",
"已开锁": "נעול",
"已闭锁": "נעול",
"两次密码不一致哦": "הסיסמאות אינן עקביות"
"两次密码不一致哦": "הסיסמאות אינן עקביות",
"中功率": "כוח בינוני",
"常规使用": "שימוש קבוע",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "לאחר השער מופעל, לחץ והחזק את כפתור איפוס עבור 5 שניות, ולחץ על הבא כאשר מחוון אור מהבהב לסירוגין",
"扫描设备": "התקן סריקה",
"删除失败,网关可能已经离线,是否强制删除该数据?": "מחיקה נכשלה. ייתכן שהשער נעלם מהרשת. האם ברצונך לאלץ למחוק את הנתונים?"
}

1114
lan/lan_hk.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -216,7 +216,6 @@
"添加网关": "Dodaj prolaz",
"重新通电": "Poveži moć",
"指示灯": "Svjetlo pokazatelja",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Kliknite sljedeći kada svjetlo bljesno",
"选择网关": "Izaberite prolaz",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G nije podržan, molimo odaberite WiFi od 2.4G.",
"WiFi密码": "WiFi prolaz",
@ -250,13 +249,13 @@
"注册": "Prijavi",
"我已阅读并同意": "Èitao sam i pristao",
"验证码": "Kod",
"密码必须是8-20位至少包括数字\/字母\/符号中的2种": "Vaša lozinka mora imati 8-20 znakova i sadržavati najmanje dvije vrste brojeva, slova i simbola",
"密码必须是8-20位至少包括数字/字母/符号中的2种": "Vaša lozinka mora imati 8-20 znakova i sadržavati najmanje dvije vrste brojeva, slova i simbola",
"手机": "Telefon:",
"邮箱": "Emal",
"请输入邮箱": "Unesite svoj email",
"国家\/地区": "Država\/Regija",
"你所在的国家\/地区": "Vaša zemlja\/regija",
"选择国家\/地区": "Odaberite svoju zemlju ili regiju.",
"国家/地区": "Država/Regija",
"你所在的国家/地区": "Vaša zemlja/regija",
"选择国家/地区": "Odaberite svoju zemlju ili regiju.",
"获取验证码": "Dobavi kodu",
"商务合作": "Posao",
"电脑网页版": "Web sistem",
@ -518,7 +517,7 @@
"是否删除钥匙?": "Obriši ovaj ekey?",
"邮箱绑定成功": "Uspeh koji se obavezuju e- pošta",
"手机绑定成功": "Uspeh vezivanja mobilnih telefona",
"网络访问失败,请检查网络是否正常": "Zahtjev Neuspješno.Network nedostupna,Molim provjerite i spojite vaš uređaj na 3G\/4G\/WIFI",
"网络访问失败,请检查网络是否正常": "Zahtjev Neuspješno.Network nedostupna,Molim provjerite i spojite vaš uređaj na 3G/4G/WIFI",
"清空": "_Očisti",
"是否清空?": "Jasno?",
"消息详情": "Informacije o poruku",
@ -742,8 +741,8 @@
"无考勤记录": "Nema zapisa",
"大家干劲十足": "Svi dolaze na vrijeme.",
"工作时长未出炉": "Nema radnog vremena",
"国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "Izbor zemlje\/regije će utjecati na sigurnost podataka.Trenutno ste odabrali Albaniju, molimo potvrdite prije nastavka.",
"确认国家或地区": "Potvrdi državu\/regiju",
"国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续": "Izbor zemlje/regije će utjecati na sigurnost podataka.Trenutno ste odabrali Albaniju, molimo potvrdite prije nastavka.",
"确认国家或地区": "Potvrdi državu/regiju",
"我知道了": "Imam ga.",
"为了让您及时收到重要通知和更新,我们需要获取通知权限。请点击“确定”按钮,然后在设置页面中启用通知权限。": "Za primanje važnih ažuriranja, molimo kliknite 'OK' i omogućite obavijesti u postavkama.",
"开启后可通过长按锁上的设置键重新上电用APP重新添加": "Nakon uključenja, možete ponovno uključiti pritisnuti tipku za postavljanje na bravi, i ponovno dodati s APP-om.",
@ -764,7 +763,7 @@
"请输入星寓管理员的账号": "Molimo unesite račun upravitelja zvjezdanog stana",
"选中的智能锁将会转移到您输入的账号中,您将失去锁的管理权": "Svi podaci odabranih brava bit će trajno preneseni primatelju.",
"暂不支持跨平台转移,敬请期待": "Transfer preko platforme nije podržan za sada, molim vas da se radujete tome",
"移除坏锁": "Pomjeri neispravne\/oštećene brave u smeće",
"移除坏锁": "Pomjeri neispravne/oštećene brave u smeće",
"转移确认": "Potvrdi prijenos.",
"本次共转移": "Ovaj put ukupno.",
"把智能锁": "Pametna brava",
@ -832,7 +831,7 @@
"实名认证为付费功能,请联系锁的管理员购买后再使用": "Autentifikacija stvarnih imena je plaćena funkcija, molimo kontaktirajte administratora za kupnju i korištenje.",
"位置权限": "Dozvola za lokaciju",
"请开启位置权限,应用需要位置权限才可以完成智能锁和网关的蓝牙操作": "Molimo odobrite aplikaciju za korištenje vašeg locacijana.Koristi se za skeniranje BLE brave i prolazi.",
"相机\/相册权限": "Dozvola kamere\/Album",
"相机/相册权限": "Dozvola kamere/Album",
"请开启本地存储权限,允许应用读写设备上的照片及文件": "Molimo da odobrite aplikaciju za čitanje i pisanje fotografije i datoteke iz Skladišta.",
"点击选择": "Kliknite za odabir",
"微信": "WeChat",
@ -983,7 +982,7 @@
"请输入6位数字开锁密码": "Unesite 6-cifrenu otključavanju",
"请输入开锁密码": "Unesite zaporku otključanje",
"接收者在有效期内可以不限次数使用": "Primatelji mogu koristiti ekeys za neograničeno vrijeme u razdoblju valjanosti.",
"接收者可以使用此App开关锁": "Primatelj može zaključati\/otključati po ovoj aplikaciji.",
"接收者可以使用此App开关锁": "Primatelj može zaključati/otključati po ovoj aplikaciji.",
"单次钥匙有效期为1小时只能使用一次": "Jedanput ekey vrijedi jedan sat i može se koristiti samo jednom.",
"接收者可以在有效期内的固定时间段里,不限次数使用": "Primatelji mogu koristiti ekeys za neograničeno vrijeme unutar fiksnog ciklusa vremena.",
"获取模板失败": "Nisam uspio dobaviti šablon",
@ -1046,7 +1045,7 @@
"五": "Pet.",
"六": "Šest.",
"日": "Sunce",
"英文": "English",
"英文": "English",
"简体中文": "简体中文",
"繁体中文": "繁體中文",
"法语": "Français",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Lozinka mora sadržavati najmanje 2 od sljedećih: brojeve, slova i posebne znakove",
"已开锁": "Otključan",
"已闭锁": "Zaključano",
"两次密码不一致哦": "Šifre nisu dosljedne"
"两次密码不一致哦": "Šifre nisu dosljedne",
"中功率": "Srednja snaga",
"常规使用": "Redovna upotreba",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Nakon što se prolaz ukljuèi, pritisnite i zadržite dugme za reset 5 sekundi, i kliknite Sljedeća kada svjetlost indikatora izmijeniti",
"扫描设备": "Skeniraj uređaj",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Brisanje nije uspjelo. Prolaz je možda nestao. Želite li prisiliti brisati podatke?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Gateway hozzáadása",
"重新通电": "Újra csatlakoztassa a hatalom",
"指示灯": "Jelző fény",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Kattintson a tovább, ha a fény vaku felváltva",
"选择网关": "Válaszd az átjárót",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g nem támogatott,. kérjük, válassza ki a wifi 2.4g.",
"WiFi密码": "Wifi passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "A jelszónak a következők közül legalább 2 kell tartalmaznia: számok, betűk és speciális karakterek",
"已开锁": "Unlocked",
"已闭锁": "Locked",
"两次密码不一致哦": "A jelszavak nem következetesek"
"两次密码不一致哦": "A jelszavak nem következetesek",
"中功率": "Közepes teljesítmény",
"常规使用": "Rendszeres használat",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Miután az átjáró be van kapcsolva, nyomja meg és tartsa a reset gombot 5 másodpercig, és kattintson a következő gombra, amikor a jelző fény felváltva villog",
"扫描设备": "Beolvasási eszköz",
"删除失败,网关可能已经离线,是否强制删除该数据?": "A törlés nem sikerült. Az átjáró lehet, hogy offline lett. Szeretné kényszeríteni az adatok törlését?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Tambah Gateway",
"重新通电": "Sambungkan kembali daya",
"指示灯": "Lampu indikator",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klik berikutnya ketika lampu berkedip secara bersamaan",
"选择网关": "Pilih Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G belum support Gan, silakan pilih WiFi 2.4G",
"WiFi密码": "WiFi Pass",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Kata sandi harus berisi setidaknya 2 karakter berikut: angka, huruf, dan karakter khusus",
"已开锁": "Tidak terkunci",
"已闭锁": "Terkunci",
"两次密码不一致哦": "Kata sandi tidak konsisten"
"两次密码不一致哦": "Kata sandi tidak konsisten",
"中功率": "Kekuatan sedang",
"常规使用": "Penggunaan biasa",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Setelah gateway menyala, tekan dan tahan tombol reset selama 5 detik, dan klik berikutnya ketika lampu indikator berkedip secara bersamaan",
"扫描设备": "Perangkat Pindai",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Gateway mungkin telah offline. Ingin menghapus data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Aggiungi gateway",
"重新通电": "Ri collegare il potere",
"指示灯": "Indicatore luminoso",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Clicca dopo quando la luce lampeggia alternativamente",
"选择网关": "Scegli Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "Il 5G non è supportato, Si prega di selezionare un WiFi di 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "La password deve contenere almeno 2 dei seguenti: numeri, lettere e caratteri speciali",
"已开锁": "Sbloccato",
"已闭锁": "Bloccato",
"两次密码不一致哦": "Le password sono incoerenti"
"两次密码不一致哦": "Le password sono incoerenti",
"中功率": "Potenza media",
"常规使用": "Uso regolare",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Dopo aver acceso il gateway, tenere premuto il pulsante di ripristino per 5 secondi e fare clic su Avanti quando l'indicatore luminoso lampeggia alternativamente",
"扫描设备": "Dispositivo di scansione",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Eliminazione non riuscita. Il gateway potrebbe essere andato offline. Vuoi forzare l'eliminazione dei dati?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "ゲートウェイの追加",
"重新通电": "力を接続して下さい",
"指示灯": "インジケータライト",
"将网关重新通电,指示灯交替闪烁时点击下一步": "ライトが交互に点滅するときに次をクリックしてください",
"选择网关": "ゲートウェイの選択",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5Gはサポートされていません。2.4GのWiFiを選択してください。",
"WiFi密码": "WiFiの通路",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "パスワードには、数字、文字、特殊文字のうち少なくとも2つを含める必要があります。",
"已开锁": "ロック解除",
"已闭锁": "ロック済み",
"两次密码不一致哦": "パスワードが一致しない"
"两次密码不一致哦": "パスワードが一致しない",
"中功率": "ミディアムパワー",
"常规使用": "通常の使用",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続け、インジケーターライトが交互に点滅したら [次へ] をクリックします。",
"扫描设备": "スキャン装置",
"删除失败,网关可能已经离线,是否强制删除该数据?": "削除に失敗しました。ゲートウェイがオフラインになった可能性があります。強制的にデータを削除しますか?"
}

View File

@ -219,7 +219,7 @@
"添加网关": "添加网关",
"重新通电": "重新通电",
"指示灯": "指示灯",
"网关重新通电,指示灯交替闪烁时点击下一步": "网关重新通电,指示灯交替闪烁时点击下一步",
"网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步",
"选择网关": "选择网关",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络请选择2.4G WiFi网络进行配置",
"WiFi密码": "WiFi密码",
@ -1110,5 +1110,7 @@
"两次密码不一致哦": "两次密码不一致哦",
"中功率": "中功率",
"常规使用": "常规使用"
"常规使用": "常规使用",
"扫描设备": "扫描设备",
"删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Шлюзді қосу",
"重新通电": "Қуатты қосылу",
"指示灯": "Нұсқасы:",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Төменгі жарықты ауыстырғанда келесі басыңыз",
"选择网关": "Шығыс таңдау",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G қолдауы жоқ.",
"WiFi密码": "WiFi өту",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Парольді келесінің кемінде 2- кемде болу керек: сандар, әріптер мен арнаулы таңбалары",
"已开锁": "Жүктеу",
"已闭锁": "Бұғатталған",
"两次密码不一致哦": "Парольдер болмаған"
"两次密码不一致哦": "Парольдер болмаған",
"中功率": "Орташа қуары",
"常规使用": "Қалыпты қолданылсын",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Келесі періңізнен соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз, Индикаторның жарықты ауыстырғанда, келесі басыңыз",
"扫描设备": "Сканер құрылғысы",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Өшіру жаңылысы. Келесі жіберді. Деректерді өшіргіңіз келе ме?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "게이트웨이 추가",
"重新通电": "전원을 다시 연결하십시오.",
"指示灯": "표시등",
"将网关重新通电,指示灯交替闪烁时点击下一步": "빛이 번갈아 깜박일 때 다음을 클릭하십시오.",
"选择网关": "게이트웨이 선택",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G 는 지원되지 않습니다. 2.4G 의 WiFi를 선택하십시오.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "암호에는 숫자, 문자 및 특수 문자 중 2 개 이상이 있어야합니다.",
"已开锁": "잠금 해제",
"已闭锁": "잠긴",
"两次密码不一致哦": "암호가 일치하지 않습니다."
"两次密码不一致哦": "암호가 일치하지 않습니다.",
"中功率": "중간 전력",
"常规使用": "정사이즈 사용",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "게이트웨이의 전원이 켜진 후 5 초 동안 리셋 버튼을 누르고 누르고 표시등이 번갈아 깜박이면 다음 을 클릭하십시오.",
"扫描设备": "스캔 장치",
"删除失败,网关可能已经离线,是否强制删除该数据?": "삭제가 실패했습니다. 게이트웨이가 오프라인 상태일 수 있다. 강제로 데이터 삭제를 하시겠습니까?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Pridėti vartai",
"重新通电": "Vėl prijungti maitinimo",
"指示灯": "Indikatoriaus šviesa",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Spustelėkite toliau, kai šviesos blykstė pakaitomis",
"选择网关": "Pasirinkite vartai",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g nepalaikomas,. pasirinkite 2.4g wifi.",
"WiFi密码": "Wifi passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Slaptažodyje turi būti bent 2 iš šių: skaičiai, raidės ir specialūs simboliai",
"已开锁": "Atrakinta",
"已闭锁": "Užrakinta",
"两次密码不一致哦": "Slaptažodžiai yra nenuoseklūs"
"两次密码不一致哦": "Slaptažodžiai yra nenuoseklūs",
"中功率": "Vidutinės galios",
"常规使用": "Reguliarus naudojimas",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite reset mygtuką ir spustelėkite toliau, kai indikatoriaus lemputė mirksi pakaitomis.",
"扫描设备": "Nuskaitymo įrenginys",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ištrynimas nepavyko. Vartai gali būti neprisijungę. Ar norite priversti ištrinti duomenis?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Tambah pintu masuk",
"重新通电": "Sambung semula kuasa",
"指示灯": "Lampu penunjuk",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klik seterusnya apabila kilat cahaya bergantian",
"选择网关": "Pilih Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G tidak disokong,. Sila pilih WiFi 2.4G.",
"WiFi密码": "Laluan WiFi",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Kata laluan mesti mengandungi sekurang-kurangnya 2 daripada yang berikut: nombor, huruf, dan aksara khas",
"已开锁": "Dikunci",
"已闭锁": "Dikunci",
"两次密码不一致哦": "Kata laluan tidak konsisten"
"两次密码不一致哦": "Kata laluan tidak konsisten",
"中功率": "Kuasa sederhana",
"常规使用": "Penggunaan biasa",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat, dan klik seterusnya apabila lampu penunjuk berkelip bergantian",
"扫描设备": "Imbas peranti",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Pintu masuk mungkin telah pergi di luar talian. Adakah anda mahu memaksa memadam data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Gateway toevoegen",
"重新通电": "Verbind de stroom opnieuw",
"指示灯": "Indicatielampje",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klik op Volgende wanneer het lampje afwisselend knippert",
"选择网关": "Gateway kiezen",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G wordt niet ondersteund. Selecteer een WiFi van 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Het wachtwoord moet ten minste 2 van de volgende bevatten: cijfers, letters en speciale tekens",
"已开锁": "Ontgrendeld",
"已闭锁": "Vergrendeld",
"两次密码不一致哦": "De wachtwoorden zijn inconsistent"
"两次密码不一致哦": "De wachtwoorden zijn inconsistent",
"中功率": "Middelgroot vermogen",
"常规使用": "Regelmatig gebruik",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt en klikt u op Volgende wanneer het indicatielampje afwisselend knippert",
"扫描设备": "Scan apparaat",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Verwijdering is mislukt. De gateway is mogelijk offline gegaan. Wilt u de gegevens forceren verwijderen?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Dodaj bramę",
"重新通电": "Ponownie podłącz zasilanie",
"指示灯": "Wskaźnik świetlny",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Kliknij następny, gdy światło mignie na przemian",
"选择网关": "Wybierz Bramę",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G nie jest obsługiwane, proszę wybrać WiFi 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Hasło musi zawierać co najmniej 2 z następujących elementów: cyfry, litery i znaki specjalne",
"已开锁": "Odblokowany",
"已闭锁": "Zamknięty",
"两次密码不一致哦": "Hasła są niespójne"
"两次密码不一致哦": "Hasła są niespójne",
"中功率": "Średnia moc",
"常规使用": "Regularne stosowanie",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund i kliknij przycisk Dalej, gdy wskaźnik miga na przemian",
"扫描设备": "Urządzenie skanujące",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Usunięcie nie powiodło się. Brama mogła zostać wyłączona. Czy chcesz wymusić usunięcie danych?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Adicionar Gateway",
"重新通电": "Re Conecte o Poder",
"指示灯": "Luz indicadora",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Clique próximo quando a luz piscar alternadamente",
"选择网关": "Escolha o Gateway",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G não é suportado,. Por favor, selecione um WiFi de 2.4G.",
"WiFi密码": "WiFi Passar",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "A senha deve conter pelo menos 2 dos seguintes elementos: números, letras e caracteres especiais.",
"已开锁": "Desbloqueado",
"已闭锁": "Trancado",
"两次密码不一致哦": "As senhas são inconsistentes"
"两次密码不一致哦": "As senhas são inconsistentes",
"中功率": "Potência média",
"常规使用": "Uso regular",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos e clique em Next quando a luz indicadora pisca alternadamente",
"扫描设备": "Digitalizar dispositivo",
"删除失败,网关可能已经离线,是否强制删除该数据?": "A eliminação falhou. O gateway pode ter ficado offline. Você quer forçar a exclusão dos dados?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Adaugă poartă",
"重新通电": "Reconectează puterea",
"指示灯": "Indicator de lumină",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Faceţi clic pe următorul când lumina aprinde alternativ.",
"选择网关": "Alege port",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G nu este suportat.Vă rugăm să selectați un WiFi de 2.4G.",
"WiFi密码": "WiFi PasswardComment",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Parola trebuie să conțină cel puțin 2 dintre următoarele: numere, litere și caractere speciale",
"已开锁": "Deblocat",
"已闭锁": "Blocat",
"两次密码不一致哦": "Parolele sunt inconsistente"
"两次密码不一致哦": "Parolele sunt inconsistente",
"中功率": "Putere medie",
"常规使用": "Utilizare regulată",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "După ce poarta este pornită, apăsați și țineți butonul de resetare timp de 5 secunde, și faceți clic pe Următor atunci când lumina indicatorului se aprinde alternativ.",
"扫描设备": "Dispozitiv de scanare",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ștergerea a eșuat. Poarta poate s-a oprit. Doriți să forțați ștergerea datelor?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Добавить шлюз",
"重新通电": "Re Подключите питание",
"指示灯": "Световой индикатор",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Нажмите дальше, когда свет начнет попеременно мигать",
"选择网关": "Выберите шлюз",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G не поддерживается. Выберите Wi-Fi 2,4G.",
"WiFi密码": "WiFi Пассвард",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Пароль должен содержать не менее 2 из следующих символов: цифры, буквы и специальные символы.",
"已开锁": "Разблокирован",
"已闭锁": "Заперт",
"两次密码不一致哦": "Пароли являются несовместимыми"
"两次密码不一致哦": "Пароли являются несовместимыми",
"中功率": "Средняя мощность",
"常规使用": "Регулярное использование",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд и нажмите «Далее», когда индикатор попеременно начнет мигать.",
"扫描设备": "Устройство сканирования",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ошибка удаления. Возможно, шлюз ушел в автономный режим. Хотите ли вы принудительно удалить данные?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Pridať bránu",
"重新通电": "Re pripojiť napájanie",
"指示灯": "Indikátorové svetlo",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Kliknite na ďalšie, keď svetlo záblesk striedavo",
"选择网关": "Vyberte bránu",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g nie je podporovaný,. vyberte wifi z 2.4g.",
"WiFi密码": "Wifi passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Heslo musí obsahovať najmenej 2 z nasledujúcich: čísla, písmená a špeciálne znaky",
"已开锁": "Odomknuté",
"已闭锁": "Uzamknutý",
"两次密码不一致哦": "Heslá sú nekonzistentné"
"两次密码不一致哦": "Heslá sú nekonzistentné",
"中功率": "Stredný výkon",
"常规使用": "Pravidelné použitie",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset po dobu 5 sekúnd a kliknite na ďalšie, keď indikátorové svetlo záblesky striedavo",
"扫描设备": "Skenovanie zariadenia",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Vymazanie sa nepodarilo. Brána môže ísť offline. Chcete vynútiť odstránenie údajov?"
}

View File

@ -217,7 +217,6 @@
"添加网关": "Додај Гатеваи",
"重新通电": "Поново прикључите напајање",
"指示灯": "Индикаторска лампица",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Кликните следеће када светло трепери наизменично",
"选择网关": "Изаберите Гатеваи",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G није подржан. Молимо Вас да изаберете ВиФи од 2.4G.",
"WiFi密码": "Ви -Фи Пассвард",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Лозинка мора да садржи најмање 2 од следећег: бројеве, слова и специјалне знакове",
"已开锁": "Откљуиана",
"已闭锁": "Закљуиана",
"两次密码不一致哦": "Лозинке су недоследне"
"两次密码不一致哦": "Лозинке су недоследне",
"中功率": "Средња снага",
"常规使用": "Редовна употреба",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди, и кликните Следећи када индикатор трепери наизменично",
"扫描设备": "Уређај за скенирање",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Брисање није успело. Гатеваи је можда отишао ван мреже. Да ли желите да присилите брисање података?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Lägg till gatewe",
"重新通电": "Uppkoppla kraften",
"指示灯": "Indikator Ljus",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Klicka nästa när ljuset blinkar växelvist",
"选择网关": "Välj gatewe",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G stöds inte, välj ett WiFi på 2.4G.",
"WiFi密码": "WiFi Passward...",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Lösenordet måste innehålla minst två av följande: siffror, bokstäver och specialtecken.",
"已开锁": "Olås",
"已闭锁": "Låst",
"两次密码不一致哦": "Lösenord är inkonsekventa"
"两次密码不一致哦": "Lösenord är inkonsekventa",
"中功率": "Medelse",
"常规使用": "Regelbunden användning",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "När gateway är på, tryck och håll omställningsknappen i 5 sekunder, och klicka Nästa när indikatorljuset blinkar växelvist",
"扫描设备": "Söka enheter",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Borttagning misslyckades. Porten kan ha gått offline. Vill du tvinga bort data?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "เพิ่มเกตเวย์",
"重新通电": "เชื่อมต่อพลังงานอีกครั้ง",
"指示灯": "ไฟแสดงสถานะ",
"将网关重新通电,指示灯交替闪烁时点击下一步": "คลิกถัดไปเมื่อไฟกะพริบสลับกัน",
"选择网关": "เลือกเกตเวย์",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "ไม่รองรับ5G ครับรบกวนเลือก WIFI 2.4G นะครับ",
"WiFi密码": "WIFI passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "รหัสผ่านต้องมีอย่างน้อย2รายการต่อไปนี้: ตัวเลขตัวอักษรและอักขระพิเศษ",
"已开锁": "ปลดล็อคแล้ว",
"已闭锁": "ล็อคล็อคได้",
"两次密码不一致哦": "รหัสผ่านไม่สอดคล้องกัน"
"两次密码不一致哦": "รหัสผ่านไม่สอดคล้องกัน",
"中功率": "กำลังไฟปานกลาง",
"常规使用": "ใช้เป็นประจำ",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีและคลิกถัดไปเมื่อไฟแสดงสถานะกะพริบสลับกัน",
"扫描设备": "อุปกรณ์สแกน",
"删除失败,网关可能已经离线,是否强制删除该数据?": "การลบล้มเหลวเกตเวย์อาจออฟไลน์ไปแล้วคุณต้องการบังคับให้ลบข้อมูลหรือไม่?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Ağ geçidi ekle",
"重新通电": "Gücü tekrar bağlayın",
"指示灯": "Gösterge ışığı",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Işık dönüşümlü olarak yanıp söndüğünde İleri'ye tıklayın",
"选择网关": "Ağ geçidini seç",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5g desteklenmiyor. lütfen 2.4g wifi seçin.",
"WiFi密码": "Wifi geçidi",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Şifre aşağıdakilerden en az 2 tane içermelidir: sayılar, harfler ve özel karakterler",
"已开锁": "Unlocked",
"已闭锁": "Kilitli",
"两次密码不一致哦": "Şifreler tutarsız"
"两次密码不一致哦": "Şifreler tutarsız",
"中功率": "Orta güç",
"常规使用": "Düzenli kullanım",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Ağ geçidi açıldıktan sonra, sıfırlama düğmesine 5 saniye basılı tutun ve gösterge ışığı dönüşümlü olarak yanıp söndüğünde İleri'ye tıklayın.",
"扫描设备": "Tarama cihazı",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Silme başarısız oldu. Ağ geçidi çevrimdışı geçmiş olabilir. Verileri silmeye zorlamak ister misiniz?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "添加網關",
"重新通电": "重新連接電源",
"指示灯": "指示燈",
"将网关重新通电,指示灯交替闪烁时点击下一步": "當燈光交替閃爍時,單擊 「下一步」",
"选择网关": "選擇網關",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "不支持5g,請選擇2.4的WiFi。",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "密碼必須至少包含以下兩項: 數字、字母和特殊字符",
"已开锁": "已解鎖",
"已闭锁": "已鎖定",
"两次密码不一致哦": "密碼不一致"
"两次密码不一致哦": "密碼不一致",
"中功率": "媒介權力",
"常规使用": "經常使用",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘,當指示燈交替閃爍時單擊Next",
"扫描设备": "掃描設備",
"删除失败,网关可能已经离线,是否强制删除该数据?": "刪除失敗。 網關可能已脫機。 是否要強制刪除數據?"
}

View File

@ -217,7 +217,6 @@
"添加网关": "Додати шлюз",
"重新通电": "Повторно підключіть живлення",
"指示灯": "Світловий індикатор",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Натисніть далі, коли індикатор почне блимати по черзі",
"选择网关": "Виберіть шлюз",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G не підтримується,. Будь ласка, виберіть Wi-Fi 2.4G.",
"WiFi密码": "WiFi Passward",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Пароль повинен містити не менше 2 з наступних: цифри, букви та спеціальні символи",
"已开锁": "Розблокована",
"已闭锁": "Заблокований",
"两次密码不一致哦": "Паролі несумісні"
"两次密码不一致哦": "Паролі несумісні",
"中功率": "Середня потужність",
"常规使用": "Регулярне використання",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд, а потім натисніть «Далі», коли індикатор почне блимати по черзі",
"扫描设备": "Сканування пристрою",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Видалення не вдалося. Можливо, шлюз перейшов в автономний режим. Ви хочете примусово видалити дані?"
}

View File

@ -216,7 +216,6 @@
"添加网关": "Thêm cổng",
"重新通电": "Kết nối lại nguồn điện",
"指示灯": "Đèn báo",
"将网关重新通电,指示灯交替闪烁时点击下一步": "Nhấp vào tiếp theo khi đèn nhấp nháy xen kẽ",
"选择网关": "Chọn cổng",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "Không hỗ trợ 5g ạ. Vui lòng chọn Wifi 2.4G.",
"WiFi密码": "Wifi chuyển tiếp",
@ -1106,5 +1105,10 @@
"密码需至少包含数字/字母/字符中的2种组合": "Mật khẩu phải chứa ít nhất 2 trong số những điều sau: số, chữ cái và ký tự đặc biệt",
"已开锁": "Đã mở khóa",
"已闭锁": "Khóa",
"两次密码不一致哦": "Mật khẩu không nhất quán"
"两次密码不一致哦": "Mật khẩu không nhất quán",
"中功率": "Công suất trung bình",
"常规使用": "Sử dụng thường xuyên",
"网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút đặt lại trong 5 giây và Nhấp vào tiếp theo khi đèn báo nhấp nháy luân phiên",
"扫描设备": "Thiết bị quét",
"删除失败,网关可能已经离线,是否强制删除该数据?": "Xóa thất bại. Cổng có thể đã tắt. Bạn có muốn buộc xóa dữ liệu không?"
}

View File

@ -218,7 +218,7 @@
"添加网关": "添加网关",
"重新通电": "重新通电",
"指示灯": "指示灯",
"网关重新通电,指示灯交替闪烁时点击下一步": "网关重新通电,指示灯交替闪烁时点击下一步",
"网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步",
"选择网关": "选择网关",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络请选择2.4G WiFi网络进行配置",
"WiFi密码": "WiFi密码",
@ -1110,6 +1110,7 @@
"两次密码不一致哦": "两次密码不一致哦",
"中功率": "中功率",
"常规使用": "常规使用"
"常规使用": "常规使用",
"扫描设备": "扫描设备",
"删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
}

View File

@ -3,12 +3,14 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/blue/blue_manage.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/main/lockMian/lockMain/lockMain_logic.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
import 'package:star_lock/tools/app_manager.dart';
import 'package:star_lock/tools/bindings/app_binding.dart';
import 'package:star_lock/tools/change_language_format.dart';
import 'package:star_lock/tools/storage.dart';
import 'package:star_lock/translations/app_dept.dart';
@ -57,30 +59,40 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver, BaseWidget {
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
// localeResolutionCallback用于在启动时动态确定应该使用哪种语言和地区
localeResolutionCallback:
(Locale? locale, Iterable<Locale> supportedLocales) {
if (!supportedLocales.contains(locale)) {
final int idx = appSupportedLocales.indexWhere((Locale element) =>
element.languageCode == locale!.languageCode);
if (idx != -1) {
locale = appSupportedLocales[idx];
if (widget.isLogin) {
//
if (StoreService.to.getLanguageCode()!.isNotEmpty) {
locale = appDept.deptSupportedLocales
.where((Locale element) =>
element.toString() == StoreService.to.getLanguageCode())
.first;
} else {
locale = Get.locale;
//
locale = Get.deviceLocale;
}
} else {
//
locale = Get.deviceLocale;
}
AppManager().setLanCode(
code: '${locale!.languageCode}_${locale.countryCode}');
// AppLog.log('1111locale:$locale');
return locale;
locale = ChangeLanguageFormat.convertLocale(locale!);
return supportedLocales.contains(locale)
? locale
: supportedLocales.first;
},
// 使
locale: StoreService.to.getLanguageCode()!.isNotEmpty
? appDept.deptSupportedLocales
.where((Locale element) =>
element.languageCode == StoreService.to.getLanguageCode())
element.languageCode.toString() ==
StoreService.to.getLanguageCode())
.first
: Get.deviceLocale,
// locale: Get.deviceLocale,
fallbackLocale: Get.locale,
// fallbackLocale用于指定在无法找到匹配的语言时使
fallbackLocale: Get.deviceLocale,
theme: ThemeData(
scaffoldBackgroundColor: const Color(0xFFF6F6F6),
backgroundColor: const Color(0xFFF6F6F6),

View File

@ -754,6 +754,7 @@ class BlueManage {
Future<void> stopScan() async {
try {
await FlutterBluePlus.stopScan();
AppLog.log('调用停止扫描成功');
} catch (e) {
AppLog.log('停止扫描失败');
}

View File

@ -76,7 +76,7 @@ class StarLockLoginLogic extends BaseGetXController {
Future<void> checkIpAction() async {
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
if (entity.errorCode!.codeIsSuccessful) {
if (state.countryName.value == entity.data!.name) {
if (state.countryName == entity.data!.name) {
ShowTipView().showSureAlertDialog(
'国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr,
tipTitle: '确认国家或地区'.tr,

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -48,8 +47,8 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
haveBack: false,
backgroundColor: AppColors.mainColor,
actionsList: <Widget>[
IconButton(
onPressed: (){
IconButton(
onPressed: () {
WechatManageTool.getAppInfo(CustomerTool.openCustomerService);
},
icon: const Icon(
@ -84,15 +83,14 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
width: 110.w, height: 110.w))),
SizedBox(height: 50.w),
Obx(() => CommonItem(
leftTitel:
'你所在的国家/地区'.tr,
leftTitel: '你所在的国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isPadding: false,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${state.countryName.value} +${state.countryCode.value}',
'${state.countryName} +${state.countryCode.value}',
textAlign: TextAlign.end,
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
@ -103,7 +101,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
state.countryKey = result['countryName'];
logic.checkIpAction();
}
},
@ -123,7 +121,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
height: 36.w,
),
),
hintText:'请输入手机号或者邮箱'.tr,
hintText: '请输入手机号或者邮箱'.tr,
// keyboardType: TextInputType.number,
inputFormatters: <TextInputFormatter>[
// FilteringTextInputFormatter.allow(RegExp('[0-9]')),
@ -185,8 +183,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'用户协议'.tr}',
child: Text('${'用户协议'.tr}',
style: TextStyle(
color: AppColors.mainColor,
fontSize: 20.sp)),
@ -201,8 +198,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'隐私政策'.tr}',
child: Text('${'隐私政策'.tr}',
style: TextStyle(
color: AppColors.mainColor,
fontSize: 20.sp)),
@ -246,8 +242,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
height: 50.h,
// color: Colors.red,
child: Center(
child: Text(
'${'忘记密码'.tr}',
child: Text('${'忘记密码'.tr}',
style: TextStyle(
fontSize: 22.sp, color: AppColors.mainColor)),
),

View File

@ -10,7 +10,10 @@ class StarLockLoginState {
RxBool agree = false.obs;
RxString countryCode = '86'.obs;
RxString countryName = '中国'.tr.obs;
RxString countryKey = '中国'.tr.obs;
///
String get countryName => countryKey.value.tr;
RxString emailOrPhone = ''.obs;
RxString pwd = ''.obs;

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -65,8 +64,9 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
),
),
IconButton(
onPressed: (){
WechatManageTool.getAppInfo(CustomerTool.openCustomerService);
onPressed: () {
WechatManageTool.getAppInfo(
CustomerTool.openCustomerService);
},
icon: Icon(
Icons.support_agent,
@ -82,7 +82,7 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
state.countryKey.value = result['countryName'];
logic.checkIpAction();
}
},
@ -104,7 +104,7 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
),
Obx(() {
return Text(
'${state.countryName.value} +${state.countryCode.value}',
'${state.countryName} +${state.countryCode.value}',
style: TextStyle(
fontSize: 22.sp,
color: AppColors.mainColor),
@ -327,7 +327,8 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
Widget _buildBottomAgreement() {
return Container(
width: 1.sw,
padding: EdgeInsets.only(left: 40.w, bottom:30.w, right: 40.w, top: 40.h),
padding:
EdgeInsets.only(left: 40.w, bottom: 30.w, right: 40.w, top: 40.h),
child: Wrap(
// mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
@ -351,40 +352,32 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
width: 20.w,
height: 20.w,
),
)
)),
))),
SizedBox(
width: 10.w,
),
Text(
'我已阅读并同意'.tr,
style:
TextStyle(color: const Color(0xff333333), fontSize: 20.sp),
'我已阅读并同意'.tr,
style: TextStyle(color: const Color(0xff333333), fontSize: 20.sp),
),
GestureDetector(
child: Text(
'${'用户协议'.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
child: Text('${'用户协议'.tr}',
style: TextStyle(color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {
Get.toNamed(Routers.webviewShowPage,
arguments: <String, String>{
'url': XSConstantMacro.userAgreementURL,
'title': '用户协议'.tr
});
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
'url': XSConstantMacro.userAgreementURL,
'title': '用户协议'.tr
});
},
),
GestureDetector(
child: Text(
'${'隐私政策'.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
child: Text('${'隐私政策'.tr}',
style: TextStyle(color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {
Get.toNamed(Routers.webviewShowPage,
arguments: <String, String>{
'url': XSConstantMacro.privacyPolicyURL,
'title': '隐私政策'.tr
});
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
'url': XSConstantMacro.privacyPolicyURL,
'title': '隐私政策'.tr
});
},
)

View File

@ -206,7 +206,7 @@ class NearbyLockLogic extends BaseGetXController {
state.lockInfo['serialNum0'] = serialNum0Str;
// state.lockInfo["serialNum0"] = "${DateTime.now().millisecondsSinceEpoch ~/ 10}";
index = index + 16;
AppLog.log('厂商序列号 serialNum0Str:${serialNum0Str.length}');
AppLog.log('厂商序列号 serialNum0Str:$serialNum0Str');
//
final List<int> serialNum1 = reply.data.sublist(index, index + 16);

View File

@ -24,7 +24,7 @@ class GatewayConfigurationWifiLogic extends BaseGetXController {
Future<void> gatewayDistributionNetwork() async {
final LoginEntity entity = await ApiRepository.to
.gatewayDistributionNetwork(
gatewayName: state.gatewayNamePasswardTF.text,
gatewayName: state.gatewayNameTF.text,
gatewayMac: state.gatewayModel.mac,
serialNumber: state.gatewayModel.serialNum,
gatewayType: 2,
@ -104,6 +104,7 @@ class GatewayConfigurationWifiLogic extends BaseGetXController {
default:
//
dismissEasyLoading();
cancelBlueConnetctToastTimer();
showToast('配网失败'.tr);
break;
}
@ -123,7 +124,7 @@ class GatewayConfigurationWifiLogic extends BaseGetXController {
return;
}
if (state.gatewayNamePasswardTF.text.isEmpty) {
if (state.gatewayNameTF.text.isEmpty) {
showToast('请输入网关名称'.tr);
return;
}

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -21,9 +20,12 @@ class GatewayConfigurationWifiPage extends StatefulWidget {
_GatewayConfigurationWifiPageState();
}
class _GatewayConfigurationWifiPageState extends State<GatewayConfigurationWifiPage> with RouteAware {
final GatewayConfigurationWifiLogic logic = Get.put(GatewayConfigurationWifiLogic());
final GatewayConfigurationWifiState state = Get.find<GatewayConfigurationWifiLogic>().state;
class _GatewayConfigurationWifiPageState
extends State<GatewayConfigurationWifiPage> with RouteAware {
final GatewayConfigurationWifiLogic logic =
Get.put(GatewayConfigurationWifiLogic());
final GatewayConfigurationWifiState state =
Get.find<GatewayConfigurationWifiLogic>().state;
@override
Widget build(BuildContext context) {
@ -53,16 +55,13 @@ class _GatewayConfigurationWifiPageState extends State<GatewayConfigurationWifiP
isHaveRightWidget: true,
allHeight: 80.h,
isHaveLine: true,
rightWidget: getTFWidget(
state.wifiNameTF,
'请输入wifi名称'.tr)),
rightWidget: getTFWidget(state.wifiNameTF, '请输入wifi名称'.tr)),
CommonItem(
leftTitel: 'WiFi密码'.tr,
rightTitle: '',
isHaveRightWidget: true,
rightWidget: getTFWidget(
state.wifiPasswardTF,
'请输入WiFi密码'.tr)),
rightWidget:
getTFWidget(state.wifiPasswardTF, '请输入WiFi密码'.tr)),
SizedBox(
height: 10.h,
),
@ -70,8 +69,8 @@ class _GatewayConfigurationWifiPageState extends State<GatewayConfigurationWifiP
leftTitel: '网关名称'.tr,
rightTitle: '',
isHaveRightWidget: true,
rightWidget: getTFWidget(state.gatewayNamePasswardTF,
'请输入网关名称'.tr)),
rightWidget:
getTFWidget(state.gatewayNameTF, '请输入网关名称'.tr)),
SizedBox(
height: 10.h,
),
@ -214,16 +213,16 @@ class _GatewayConfigurationWifiPageState extends State<GatewayConfigurationWifiP
hintStyle: TextStyle(fontSize: 22.sp),
focusedBorder: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
BorderSide(width: 0, color: Colors.transparent)),
disabledBorder: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
BorderSide(width: 0, color: Colors.transparent)),
enabledBorder: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
BorderSide(width: 0, color: Colors.transparent)),
border: const OutlineInputBorder(
borderSide:
BorderSide(width: 0, color: Colors.transparent)),
BorderSide(width: 0, color: Colors.transparent)),
contentPadding: const EdgeInsets.symmetric(vertical: 0),
),
),

View File

@ -12,6 +12,7 @@ class GatewayConfigurationWifiState {
if (map['gatewayModel'] != null && map['gatewayModel'] != '') {
gatewayModel = map['gatewayModel'];
gatewayNameTF.text = gatewayModel.gatewayName;
// AppLog.log('gatewayModel.mac:${gatewayModel.mac} gatewayModel.mac:${gatewayModel.mac}');
}
}
@ -21,7 +22,7 @@ class GatewayConfigurationWifiState {
final TextEditingController wifiNameTF = TextEditingController();
final TextEditingController wifiPasswardTF = TextEditingController();
final TextEditingController gatewayNamePasswardTF = TextEditingController();
final TextEditingController gatewayNameTF = TextEditingController();
final TextEditingController ipAddressTF = TextEditingController();
final TextEditingController subnetMaskTF = TextEditingController();
final TextEditingController defaultGatewayTF = TextEditingController();

View File

@ -1,4 +1,5 @@
class GetGatewayInfoModel {
late String gatewayName;
late String mac;
late String serialNum;
late String gatewayVersion;

View File

@ -47,6 +47,9 @@ class SelectGatewayListLogic extends BaseGetXController {
dismissEasyLoading();
final GetGatewayInfoModel gatewayModel = GetGatewayInfoModel();
gatewayModel.gatewayName =
state.currentDevice!.advertisementData.advName;
// MAC地址
int index = 3;
final List<int> macList = reply.data.sublist(index, index + 20);
@ -95,6 +98,7 @@ class SelectGatewayListLogic extends BaseGetXController {
void startScanBlueList() {
BlueManage().startScan(2000, DeviceType.gateway, (List<ScanResult> list) {
AppLog.log('ScanResultList:$list');
state.devices.clear();
for (int i = 0; i < list.length; i++) {
final ScanResult device = list[i];
@ -110,9 +114,9 @@ class SelectGatewayListLogic extends BaseGetXController {
});
}
void stopScanBlueList() {
Future<void> stopScanBlueList() async {
// BlueManage().disconnect();
BlueManage().stopScan();
await BlueManage().stopScan();
}
void blueDisconnect() {
@ -162,9 +166,9 @@ class SelectGatewayListLogic extends BaseGetXController {
dismissEasyLoading();
});
BlueManage().blueSendData(device.advertisementData.advName,
(BluetoothConnectionState state) async {
(BluetoothConnectionState bluetoothConnectionState) async {
// AppLog.log('点击要添加的设备了');
if (state == BluetoothConnectionState.connected) {
if (bluetoothConnectionState == BluetoothConnectionState.connected) {
dismissEasyLoading();
//
@ -194,6 +198,8 @@ class SelectGatewayListLogic extends BaseGetXController {
@override
void onReady() {
super.onReady();
AppLog.log('扫描网关列表 onReadyonReady被调用了');
getNearByLimits();
}

View File

@ -4,6 +4,7 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../../appRouters.dart';
@ -57,6 +58,7 @@ class _SelectGatewayListPageState extends State<SelectGatewayListPage>
itemBuilder: (BuildContext c, int index) {
final ScanResult device = state.devices[index];
return _selectGatewayListListItem(device, () {
state.currentDevice = device;
logic.connect(device);
});
})),
@ -162,19 +164,22 @@ class _SelectGatewayListPageState extends State<SelectGatewayListPage>
///
@override
void didPop() {
Future<void> didPop() async {
super.didPop();
EasyLoading.isShow ? EasyLoading.dismiss() : null;
logic.cancelBlueConnetctToastTimer();
logic.blueDisconnect();
logic.stopScanBlueList();
await Future.delayed(Duration(milliseconds: 500));
await logic.stopScanBlueList();
AppLog.log('停止网关列表 didPop被调用了');
}
///
@override
void didPopNext() {
super.didPopNext();
AppLog.log('扫描网关列表 didPopNext被调用了');
logic.blueDisconnect();
logic.startScanBlueList();
}

View File

@ -1,9 +1,9 @@
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
class SelectGatewayListState{
class SelectGatewayListState {
RxList<ScanResult> devices = <ScanResult>[].obs;
RxBool ifCurrentScreen = true.obs; // ,
}
ScanResult? currentDevice;
}

View File

@ -53,7 +53,7 @@ class _SelectGatewayTypeNextTipPageState
padding: EdgeInsets.all(20.w),
child: Center(
child: Text(
'网关重新通电,指示灯交替闪烁时点击下一步'.tr,
'网关通电长按重置按钮5秒,指示灯交替闪烁时点击下一步'.tr,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18.sp),
))),

View File

@ -1,6 +1,6 @@
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../login/login/entity/LoginEntity.dart';
import '../../../network/api_repository.dart';
import 'gatewayConnectionLockList_entity.dart';
import 'gatewayConnectionLockList_state.dart';
@ -9,20 +9,28 @@ class GatewayConnectionLockListLogic extends BaseGetXController {
GatewayConnectionLockListState state = GatewayConnectionLockListState();
// -
Future<GatewayConnectionLockListEntity> gatewayConnectionLockListDataRequest() async {
final GatewayConnectionLockListEntity entity = await ApiRepository.to.gatewayConnectionLockLoadData(
gatewayId:state.gatewayId.value
);
Future<GatewayConnectionLockListEntity>
gatewayConnectionLockListDataRequest() async {
final GatewayConnectionLockListEntity entity = await ApiRepository.to
.gatewayConnectionLockLoadData(gatewayId: state.gatewayId.value);
if (entity.errorCode!.codeIsSuccessful) {
state.itemDataList.value = entity.data!.list!;
}
return entity;
}
Future<void> gatewayScanDevice() async {
final LoginEntity entity = await ApiRepository.to
.gatewayScanDevice(gatewayId: state.gatewayId.value);
if (entity.errorCode!.codeIsSuccessful) {
gatewayConnectionLockListDataRequest();
}
}
@override
void onReady() {
super.onReady();
gatewayConnectionLockListDataRequest();
}
}
}

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@ -14,21 +13,31 @@ class GatewayConnectionLockListPage extends StatefulWidget {
const GatewayConnectionLockListPage({Key? key}) : super(key: key);
@override
State<GatewayConnectionLockListPage> createState() => _GatewayConnectionLockListPageState();
State<GatewayConnectionLockListPage> createState() =>
_GatewayConnectionLockListPageState();
}
class _GatewayConnectionLockListPageState extends State<GatewayConnectionLockListPage> {
final GatewayConnectionLockListLogic logic = Get.put(GatewayConnectionLockListLogic());
final GatewayConnectionLockListState state = Get.find<GatewayConnectionLockListLogic>().state;
class _GatewayConnectionLockListPageState
extends State<GatewayConnectionLockListPage> {
final GatewayConnectionLockListLogic logic =
Get.put(GatewayConnectionLockListLogic());
final GatewayConnectionLockListState state =
Get.find<GatewayConnectionLockListLogic>().state;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: '网关'.tr,
haveBack:true,
backgroundColor: AppColors.mainColor
barTitle: '网关'.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
TextButton(
onPressed: logic.gatewayScanDevice,
child: Text('扫描设备'.tr,
style: TextStyle(color: Colors.white, fontSize: 22.sp)))
],
),
body: Column(
children: <Widget>[
@ -36,41 +45,51 @@ class _GatewayConnectionLockListPageState extends State<GatewayConnectionLockLis
width: 1.sw,
color: Colors.grey.shade300,
padding: EdgeInsets.all(10.h),
child: Text('网关连接的锁'.tr, style: TextStyle(fontSize: 24.sp))
),
child: Text('网关连接的锁'.tr, style: TextStyle(fontSize: 24.sp))),
Obx(() => Expanded(
child:
state.itemDataList.value.isNotEmpty ?
ListView.builder(
itemCount:10,
itemBuilder: (BuildContext c, int index){
final GatewayConnectionLockItemEntity entity = state.itemDataList[index];
return _gatewayConnectionLockListItem('images/mine/icon_mine_gatewaySignal_prompt.png', entity.lockAlias ?? '', '信号强'.tr,(){
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
});
}
):NoData(),
))
child: state.itemDataList.value.isNotEmpty
? ListView.builder(
itemCount: 10,
itemBuilder: (BuildContext c, int index) {
final GatewayConnectionLockItemEntity entity =
state.itemDataList[index];
return _gatewayConnectionLockListItem(
'images/mine/icon_mine_gatewaySignal_prompt.png',
entity.lockAlias ?? '',
'信号强'.tr, () {
// Navigator.pushNamed(context, Routers.gatewayDetailPage);
});
})
: NoData(),
))
],
),
);
}
Widget _gatewayConnectionLockListItem(String lockTypeIcon, String gateWayName, String signalStrength, Function() action){
Widget _gatewayConnectionLockListItem(String lockTypeIcon, String gateWayName,
String signalStrength, Function() action) {
return GestureDetector(
onTap: action,
child: Container(
// height: 100.h,
margin: const EdgeInsets.only(bottom: 2),
padding: EdgeInsets.only(left: 15.w, right: 20.w, top: 15.h, bottom: 15.h),
decoration: BoxDecoration(
padding:
EdgeInsets.only(left: 15.w, right: 20.w, top: 15.h, bottom: 15.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Row(
children: <Widget>[
Image.asset(lockTypeIcon, width: 70.w, height: 70.w,),
SizedBox(width: 20.w,),
Image.asset(
lockTypeIcon,
width: 70.w,
height: 70.w,
),
SizedBox(
width: 20.w,
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
@ -78,24 +97,35 @@ class _GatewayConnectionLockListPageState extends State<GatewayConnectionLockLis
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(gateWayName, style: TextStyle(fontSize: 24.sp, fontWeight: FontWeight.w500)),
Text(gateWayName,
style: TextStyle(
fontSize: 24.sp, fontWeight: FontWeight.w500)),
],
),
SizedBox(height:5.h),
SizedBox(height: 5.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 30.w, height: 30.w,),
SizedBox(width: 10.w,),
Text(signalStrength, style: TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w500), ),
Image.asset(
'images/mine/icon_mine_gatewaySignal_strong.png',
width: 30.w,
height: 30.w,
),
SizedBox(
width: 10.w,
),
Text(
signalStrength,
style: TextStyle(
fontSize: 22.sp, fontWeight: FontWeight.w500),
),
],
),
SizedBox(width:20.h),
SizedBox(width: 20.h),
],
),
),
SizedBox(width:20.h),
SizedBox(width: 20.h),
],
),
),

View File

@ -1,36 +1,38 @@
import 'package:get/get.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../login/login/entity/LoginEntity.dart';
import '../../../network/api_repository.dart';
import '../../../tools/showTipView.dart';
import 'gatewayDetail_state.dart';
class GatewayDetailLogic extends BaseGetXController{
class GatewayDetailLogic extends BaseGetXController {
GatewayDetailState state = GatewayDetailState();
Future<void> deletGateway() async{
Future<void> deletGateway(int isForce) async {
final LoginEntity entity = await ApiRepository.to.gatewayDelet(
gatewayId: state.getewayItemData.value.gatewayId ?? 0,
);
if(entity.errorCode!.codeIsSuccessful){
showToast('删除成功'.tr, something:(){
gatewayId: state.getewayItemData.value.gatewayId ?? 0,
isForce: isForce);
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功'.tr, something: () {
// eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
Get.back();
});
} else if (entity.errorCode! == 10005) {
ShowTipView().showIosTipWithContentDialog(
'是否要强制删除?(强制删除后,网关要初始化才能被添加)'.tr, () => deletGateway(1));
}
}
Future<void> updateGateway(String gatewayName) async{
Future<void> updateGateway(String gatewayName) async {
final LoginEntity entity = await ApiRepository.to.gatewayUpdate(
gatewayId: state.getewayItemData.value.gatewayId ?? 0,
gatewayName:gatewayName
);
if(entity.errorCode!.codeIsSuccessful){
showToast('修改成功'.tr, something:(){
gatewayName: gatewayName);
if (entity.errorCode!.codeIsSuccessful) {
showToast('修改成功'.tr, something: () {
// eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
Get.back();
});
}
}
}
}

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -24,7 +23,7 @@ class GatewayDetailPage extends StatefulWidget {
class _GatewayDetailPageState extends State<GatewayDetailPage> {
final GatewayDetailLogic logic = Get.put(GatewayDetailLogic());
final GatewayDetailState state = Get.find<GatewayDetailLogic>().state;
@override
Widget build(BuildContext context) {
return Scaffold(
@ -34,77 +33,81 @@ class _GatewayDetailPageState extends State<GatewayDetailPage> {
haveBack: true,
backgroundColor: AppColors.mainColor),
body: Obx(() => ListView(
children: <Widget>[
CommonItem(
leftTitel: '名称'.tr,
rightTitle: state.getewayItemData.value.gatewayName,
isHaveLine: true,
isHaveDirection: true,
action: () {
ShowTipView().showTFViewAlertDialog(
state.changeGatewayNameController,
'请输入姓名'.tr,
'请输入姓名'.tr, () {
if (state.changeGatewayNameController.text.isEmpty) {
logic.showToast('请输入姓名'.tr);
return;
}
Get.back();
logic.updateGateway(state.changeGatewayNameController.text);
}, inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.deny('\n'),
LengthLimitingTextInputFormatter(50),
]);
}),
CommonItem(
leftTitel: '状态'.tr,
rightTitle: state.getewayItemData.value.isOnline == 1 ? '在线'.tr : '离线'.tr,
isHaveLine: true,
isHaveDirection: false),
CommonItem(
leftTitel: 'WiFi名称'.tr,
rightTitle: state.getewayItemData.value.networkName,
isHaveLine: true,
isHaveDirection: false),
CommonItem(
leftTitel: '网络MAC'.tr,
rightTitle: state.getewayItemData.value.gatewayMac,
isHaveLine: false,
isHaveDirection: false),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: '附近的锁'.tr,
rightTitle: state.getewayItemData.value.lockNum.toString(),
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.gatewayConnectionLockPage, arguments: {
'gatewayId':state.getewayItemData.value.gatewayId ?? 0
});
}),
// CommonItem(
// leftTitel: '网关升级'.tr,
// rightTitle: '',
// isHaveLine: false,
// isHaveDirection: true,
// action: () {}),
SizedBox(
height: 80.h,
),
SubmitBtn(
btnName: '删除'.tr,
isDelete: true,
borderRadius: 20.w,
fontSize: 32.sp,
margin: EdgeInsets.only(left: 30.w, right: 30.w),
padding: EdgeInsets.only(top: 15.w, bottom: 15.w),
onClick: () {
ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, logic.deletGateway);
}),
],
)),
children: <Widget>[
CommonItem(
leftTitel: '名称'.tr,
rightTitle: state.getewayItemData.value.gatewayName,
isHaveLine: true,
isHaveDirection: true,
action: () {
ShowTipView().showTFViewAlertDialog(
state.changeGatewayNameController,
'请输入姓名'.tr,
'请输入姓名'.tr, () {
if (state.changeGatewayNameController.text.isEmpty) {
logic.showToast('请输入姓名'.tr);
return;
}
Get.back();
logic.updateGateway(
state.changeGatewayNameController.text);
}, inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.deny('\n'),
LengthLimitingTextInputFormatter(50),
]);
}),
CommonItem(
leftTitel: '状态'.tr,
rightTitle: state.getewayItemData.value.isOnline == 1
? '在线'.tr
: '离线'.tr,
isHaveLine: true,
isHaveDirection: false),
CommonItem(
leftTitel: 'WiFi名称'.tr,
rightTitle: state.getewayItemData.value.networkName,
isHaveLine: true,
isHaveDirection: false),
CommonItem(
leftTitel: '网络MAC'.tr,
rightTitle: state.getewayItemData.value.gatewayMac,
isHaveLine: false,
isHaveDirection: false),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: '附近的锁'.tr,
// rightTitle: state.getewayItemData.value.lockNum.toString(),
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.gatewayConnectionLockPage, arguments: {
'gatewayId': state.getewayItemData.value.gatewayId ?? 0
});
}),
// CommonItem(
// leftTitel: '网关升级'.tr,
// rightTitle: '',
// isHaveLine: false,
// isHaveDirection: true,
// action: () {}),
SizedBox(
height: 80.h,
),
SubmitBtn(
btnName: '删除'.tr,
isDelete: true,
borderRadius: 20.w,
fontSize: 32.sp,
margin: EdgeInsets.only(left: 30.w, right: 30.w),
padding: EdgeInsets.only(top: 15.w, bottom: 15.w),
onClick: () {
ShowTipView().showIosTipWithContentDialog(
'确定要删除吗?'.tr, () => logic.deletGateway(0));
}),
],
)),
);
}
}

View File

@ -1,4 +1,3 @@
import 'dart:ui';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
@ -7,7 +6,6 @@ import '../../tools/store_service.dart';
import '../../translations/app_dept.dart';
class MineMultiLanguageState {
MineMultiLanguageState() {
resetLan();
}
@ -21,6 +19,6 @@ class MineMultiLanguageState {
Future<void> resetLan() async {
currentLanguageType.value = ExtensionLanguageType.fromLocale(Get.locale!);
// AppLog.log('currentLanguageType.value:${currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} languages:$languages');
await StoreService.to.saveLanguageCode(Get.locale!.languageCode);
await StoreService.to.saveLanguageCode(Get.locale!.toString());
}
}
}

View File

@ -20,6 +20,7 @@ import '../../../../tools/baseGetXController.dart';
import '../../../app_settings/app_settings.dart';
import '../../../blue/blue_manage.dart';
import '../../../talk/udp/udp_help.dart';
import '../../../tools/change_language_format.dart';
import '../../../tools/dateTool.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/store_service.dart';
@ -189,14 +190,15 @@ class MineSetLogic extends BaseGetXController {
}
String _getCurrentLanguage() {
String? languageCode = StoreService.to.getLanguageCode();
// AppLog.log('languageCode: $languageCode');
if (languageCode!.isEmpty) {
languageCode = Get.locale!.languageCode;
String? language = StoreService.to.getLanguageCode();
AppLog.log('language: $language Get.locale!: ${Get.locale!}');
if (language!.isEmpty) {
language = ChangeLanguageFormat.convertLocale(Get.locale!).toString();
}
AppLog.log('language: $language');
final String currentLanguage = ExtensionLanguageType.fromLocale(appDept
.deptSupportedLocales
.where((Locale element) => element.languageCode == languageCode)
.where((Locale element) => element.toString() == language)
.first)
.lanTitle;
return currentLanguage;

View File

@ -14,9 +14,9 @@ class MineSetState {
RxString qrCodeUrl = ''.obs; //
RxString qrCodeText = ''.obs; //
var lockScreen = 2.obs; //
var hideExpiredAccessFlag = 2.obs; //
var currentLanguage = "".obs; //
RxInt lockScreen = 2.obs; //
RxInt hideExpiredAccessFlag = 2.obs; //
RxString currentLanguage = ''.obs; //
RxBool isAmazonAlexa = false.obs; //Alexa
RxBool isGoogleHome = false.obs; //Home
Rx<AmazonAlexa> amazonAlexaData = AmazonAlexa().obs;

View File

@ -162,6 +162,7 @@ abstract class Api {
final String gatewayListByLockURL = '/gateway/listByLock'; // -
final String getGatewayConfigURL = '/gateway/getGatewayConfig'; //
final String remoteOpenLockURL = '/gateway/unlock'; //
final String gatewayScanDeviceURL = '/gateway/scanDevice'; // -
final String getKeyDetailURL = '/key/get'; //
final String lockUserListURL = '/keyUser/listKeyUser'; //

View File

@ -801,13 +801,12 @@ class ApiProvider extends BaseProvider {
}));
//
Future<Response> setMotorPowerData(int lockId, int motorTorsion) =>
post(
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'motorTorsion': motorTorsion,
}));
Future<Response> setMotorPowerData(int lockId, int motorTorsion) => post(
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'motorTorsion': motorTorsion,
}));
//
Future<Response> remoteUnlockingOpenOrCloseLoadData(
@ -1757,14 +1756,12 @@ class ApiProvider extends BaseProvider {
}));
//
Future<Response> deletGateway(
int gatewayId,
) =>
post(
deletGatewayURL.toUrl,
jsonEncode({
'gatewayId': gatewayId,
}));
Future<Response> deletGateway(int gatewayId, int isForce) => post(
deletGatewayURL.toUrl,
jsonEncode({
'gatewayId': gatewayId,
'isForce': isForce,
}));
//
Future<Response> gatewayUpdate(
@ -1817,6 +1814,9 @@ class ApiProvider extends BaseProvider {
Future<Response> gatewayConnectionLockListLoadData(int gatewayId) =>
post(gatewayListByLockURL.toUrl, jsonEncode({'gatewayId': gatewayId}));
Future<Response> gatewayScanDevice(int gatewayId) =>
post(gatewayScanDeviceURL.toUrl, jsonEncode({'gatewayId': gatewayId}));
//
Future<Response> removeBrokenLockData(List lockIdList) =>
post(removeBadLockURL.toUrl, jsonEncode({'lockIds': lockIdList}));

View File

@ -1943,8 +1943,9 @@ class ApiRepository {
//
Future<LoginEntity> gatewayDelet({
required int gatewayId,
required int isForce,
}) async {
final res = await apiProvider.deletGateway(gatewayId);
final res = await apiProvider.deletGateway(gatewayId, isForce);
return LoginEntity.fromJson(res.body);
}
@ -1974,6 +1975,14 @@ class ApiRepository {
return GatewayConnectionLockListEntity.fromJson(res.body);
}
// -
Future<LoginEntity> gatewayScanDevice({
required int gatewayId,
}) async {
final res = await apiProvider.gatewayScanDevice(gatewayId);
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> remoteOpenLock({required String lockId}) async {
final res = await apiProvider.remoteOpenLock(lockId);

View File

@ -6,6 +6,7 @@ import 'package:get/get_connect/http/src/request/request.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/login/login/entity/LoginData.dart';
import '../tools/change_language_format.dart';
import '../tools/platform_info_services.dart';
import '../tools/storage.dart';
import '../tools/store_service.dart';
@ -38,9 +39,13 @@ String getLanguageCode() {
final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
? appDept.deptSupportedLocales
.where((Locale element) =>
element.languageCode == StoreService.to.getLanguageCode())
element.languageCode.toString() ==
StoreService.to.getLanguageCode())
.first
: Get.locale!; // Get.deviceLocale;
AppLog.log('languageCode: ${locale.toLanguageTag()} locale: $locale');
return locale.toLanguageTag();
String languageCode =
ChangeLanguageFormat.convertLocale(locale).toLanguageTag();
AppLog.log(
'languageCode: ${locale.toLanguageTag()} locale: $locale languageCode:$languageCode');
return languageCode;
}

View File

@ -0,0 +1,21 @@
import 'dart:ui';
class ChangeLanguageFormat {
static Locale convertLocale(Locale locale) {
if (locale.languageCode == 'zh') {
if (locale.scriptCode == 'Hans') {
//
return const Locale('zh', 'CN');
} else if (locale.scriptCode == 'Hant') {
//
if (locale.countryCode == 'CN') {
return const Locale('zh', 'TW');
} else if (locale.countryCode == 'HK') {
return const Locale('zh', 'HK');
}
}
}
// Locale
return locale;
}
}

View File

@ -21,6 +21,7 @@ extension ExtensionAppDept on AppDept {
const Locale enL = Locale('en', 'US');
const Locale zhL = Locale('zh', 'CN');
const Locale twL = Locale('zh', 'TW');
const Locale hkL = Locale('zh', 'HK');
const Locale frL = Locale('fr', 'FR');
const Locale ruL = Locale('ru', 'RU');
const Locale deL = Locale('de', 'DE');
@ -59,6 +60,7 @@ extension ExtensionAppDept on AppDept {
enL,
zhL,
twL,
hkL,
frL,
ruL,
deL,
@ -103,8 +105,10 @@ final List<Locale> appSupportedLocales = appDept.deptSupportedLocales;
enum LanguageType {
chinese,
english,
//
traditionalChinese,
// ()
traditionalChineseTW,
// ()
traditionalChineseHK,
//
french,
//
@ -185,8 +189,11 @@ extension ExtensionLanguageType on LanguageType {
case LanguageType.chinese:
str = '简体中文'.tr;
break;
case LanguageType.traditionalChinese:
str = '繁体中文'.tr;
case LanguageType.traditionalChineseTW:
str = '繁体中文(中国台湾)'.tr;
break;
case LanguageType.traditionalChineseHK:
str = '繁体中文(中国香港)'.tr;
break;
case LanguageType.french:
str = '法语'.tr;
@ -417,8 +424,10 @@ extension ExtensionLanguageType on LanguageType {
case 'zh':
if (countryCode.toLowerCase() == 'cn') {
languageType = LanguageType.chinese;
} else {
languageType = LanguageType.traditionalChinese;
} else if (countryCode.toLowerCase() == 'tw') {
languageType = LanguageType.traditionalChineseTW;
} else if (countryCode.toLowerCase() == 'hk') {
languageType = LanguageType.traditionalChineseHK;
}
break;
case 'fr':

View File

@ -1,7 +1,6 @@
part of lib_trans;
class TranslationLoader {
// LAN_ZH_CN="zh" #
// LAN_EN_US="en" #
// LAN_ZH_TW="tw" #
@ -39,90 +38,92 @@ class TranslationLoader {
// LAN_ZH_FI="fi" #
// LAN_ZH_DA="da" #
// static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';
// static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
static Map<String,String> _zhMap = <String, String>{};
static Map<String,String> _enMap = <String, String>{};
static Map<String,String> _twMap = <String, String>{};
static Map<String,String> _frMap = <String, String>{};
static Map<String,String> _ruMap = <String, String>{};
static Map<String,String> _deMap = <String, String>{};
static Map<String,String> _jaMap = <String, String>{};
static Map<String,String> _koMap = <String, String>{};
static Map<String,String> _itMap = <String, String>{};
static Map<String,String> _ukMap = <String, String>{};
static Map<String,String> _ptMap = <String, String>{};
static Map<String,String> _esMap = <String, String>{};
static Map<String,String> _arMap = <String, String>{};
static Map<String,String> _viMap = <String, String>{};
static Map<String,String> _msMap = <String, String>{};
static Map<String,String> _nlMap = <String, String>{};
static Map<String,String> _roMap = <String, String>{};
static Map<String,String> _ltMap = <String, String>{};
static Map<String,String> _svMap = <String, String>{};
static Map<String,String> _etMap = <String, String>{};
static Map<String,String> _plMap = <String, String>{};
static Map<String,String> _skMap = <String, String>{};
static Map<String,String> _csMap = <String, String>{};
static Map<String,String> _elMap = <String, String>{};
static Map<String,String> _heMap = <String, String>{};
static Map<String,String> _srMap = <String, String>{};
static Map<String,String> _trMap = <String, String>{};
static Map<String,String> _huMap = <String, String>{};
static Map<String,String> _bgMap = <String, String>{};
static Map<String,String> _kkMap = <String, String>{};
static Map<String,String> _bnMap = <String, String>{};
static Map<String,String> _hrMap = <String, String>{};
static Map<String,String> _thMap = <String, String>{};
static Map<String,String> _idMap = <String, String>{};
static Map<String,String> _fiMap = <String, String>{};
static Map<String,String> _daMap = <String, String>{};
static Map<String, String> _zhMap = <String, String>{};
static Map<String, String> _enMap = <String, String>{};
static Map<String, String> _twMap = <String, String>{};
static Map<String, String> _hkMap = <String, String>{};
static Map<String, String> _frMap = <String, String>{};
static Map<String, String> _ruMap = <String, String>{};
static Map<String, String> _deMap = <String, String>{};
static Map<String, String> _jaMap = <String, String>{};
static Map<String, String> _koMap = <String, String>{};
static Map<String, String> _itMap = <String, String>{};
static Map<String, String> _ukMap = <String, String>{};
static Map<String, String> _ptMap = <String, String>{};
static Map<String, String> _esMap = <String, String>{};
static Map<String, String> _arMap = <String, String>{};
static Map<String, String> _viMap = <String, String>{};
static Map<String, String> _msMap = <String, String>{};
static Map<String, String> _nlMap = <String, String>{};
static Map<String, String> _roMap = <String, String>{};
static Map<String, String> _ltMap = <String, String>{};
static Map<String, String> _svMap = <String, String>{};
static Map<String, String> _etMap = <String, String>{};
static Map<String, String> _plMap = <String, String>{};
static Map<String, String> _skMap = <String, String>{};
static Map<String, String> _csMap = <String, String>{};
static Map<String, String> _elMap = <String, String>{};
static Map<String, String> _heMap = <String, String>{};
static Map<String, String> _srMap = <String, String>{};
static Map<String, String> _trMap = <String, String>{};
static Map<String, String> _huMap = <String, String>{};
static Map<String, String> _bgMap = <String, String>{};
static Map<String, String> _kkMap = <String, String>{};
static Map<String, String> _bnMap = <String, String>{};
static Map<String, String> _hrMap = <String, String>{};
static Map<String, String> _thMap = <String, String>{};
static Map<String, String> _idMap = <String, String>{};
static Map<String, String> _fiMap = <String, String>{};
static Map<String, String> _daMap = <String, String>{};
static Map<String,String> get zhDic => _zhMap;
static Map<String,String> get enDic => _enMap;
static Map<String,String> get twDic => _twMap;
static Map<String,String> get frDic => _frMap;
static Map<String,String> get ruDic => _ruMap;
static Map<String,String> get deDic => _deMap;
static Map<String,String> get jaDic => _jaMap;
static Map<String,String> get koDic => _koMap;
static Map<String,String> get itDic => _itMap;
static Map<String,String> get ukDic => _ukMap;
static Map<String,String> get ptDic => _ptMap;
static Map<String,String> get esDic => _esMap;
static Map<String,String> get arDic => _arMap;
static Map<String,String> get viDic => _viMap;
static Map<String,String> get msDic => _msMap;
static Map<String,String> get nlDic => _nlMap;
static Map<String,String> get roDic => _roMap;
static Map<String,String> get ltDic => _ltMap;
static Map<String,String> get svDic => _svMap;
static Map<String,String> get etDic => _etMap;
static Map<String,String> get plDic => _plMap;
static Map<String,String> get skDic => _skMap;
static Map<String,String> get csDic => _csMap;
static Map<String,String> get elDic => _elMap;
static Map<String,String> get heDic => _heMap;
static Map<String,String> get srDic => _srMap;
static Map<String,String> get trDic => _trMap;
static Map<String,String> get huDic => _huMap;
static Map<String,String> get bgDic => _bgMap;
static Map<String,String> get kkDic => _kkMap;
static Map<String,String> get bnDic => _bnMap;
static Map<String,String> get hrDic => _hrMap;
static Map<String,String> get thDic => _thMap;
static Map<String,String> get idDic => _idMap;
static Map<String,String> get fiDic => _fiMap;
static Map<String,String> get daDic => _daMap;
static Map<String,String> get ukMap => _ukMap;
static Map<String,String> get srMap => _srMap;
static Map<String, String> get zhDic => _zhMap;
static Map<String, String> get enDic => _enMap;
static Map<String, String> get twDic => _twMap;
static Map<String, String> get hkDic => _hkMap;
static Map<String, String> get frDic => _frMap;
static Map<String, String> get ruDic => _ruMap;
static Map<String, String> get deDic => _deMap;
static Map<String, String> get jaDic => _jaMap;
static Map<String, String> get koDic => _koMap;
static Map<String, String> get itDic => _itMap;
static Map<String, String> get ukDic => _ukMap;
static Map<String, String> get ptDic => _ptMap;
static Map<String, String> get esDic => _esMap;
static Map<String, String> get arDic => _arMap;
static Map<String, String> get viDic => _viMap;
static Map<String, String> get msDic => _msMap;
static Map<String, String> get nlDic => _nlMap;
static Map<String, String> get roDic => _roMap;
static Map<String, String> get ltDic => _ltMap;
static Map<String, String> get svDic => _svMap;
static Map<String, String> get etDic => _etMap;
static Map<String, String> get plDic => _plMap;
static Map<String, String> get skDic => _skMap;
static Map<String, String> get csDic => _csMap;
static Map<String, String> get elDic => _elMap;
static Map<String, String> get heDic => _heMap;
static Map<String, String> get srDic => _srMap;
static Map<String, String> get trDic => _trMap;
static Map<String, String> get huDic => _huMap;
static Map<String, String> get bgDic => _bgMap;
static Map<String, String> get kkDic => _kkMap;
static Map<String, String> get bnDic => _bnMap;
static Map<String, String> get hrDic => _hrMap;
static Map<String, String> get thDic => _thMap;
static Map<String, String> get idDic => _idMap;
static Map<String, String> get fiDic => _fiMap;
static Map<String, String> get daDic => _daMap;
static Map<String, String> get ukMap => _ukMap;
static Map<String, String> get srMap => _srMap;
static Future<void> loadTranslation() async {
_zhMap = await _loadJsonFile('lan/lan_zh.json');
_enMap = await _loadJsonFile('lan/lan_en.json');
_twMap = await _loadJsonFile('lan/lan_tw.json');
_hkMap = await _loadJsonFile('lan/lan_hk.json');
_frMap = await _loadJsonFile('lan/lan_fr.json');
_ruMap = await _loadJsonFile('lan/lan_ru.json');
_deMap = await _loadJsonFile('lan/lan_de.json');
@ -160,15 +161,15 @@ class TranslationLoader {
_srMap = await _loadJsonFile('lan/lan_sr_cyrl.json');
}
static Future<Map<String,String>> _loadJsonFile(String filePath) async => rootBundle.loadString(filePath).then((String jsonString){
final Map<String,dynamic> enJson = jsonDecode(jsonString);
final Map<String,String> map = <String, String>{};
enJson.forEach((String key,dynamic value) {
map[key] = value.toString();
});
return map;
}).onError((Object? error, StackTrace stackTrace){
return Future<Map<String,String>>.value(<String, String>{});
});
static Future<Map<String, String>> _loadJsonFile(String filePath) async =>
rootBundle.loadString(filePath).then((String jsonString) {
final Map<String, dynamic> enJson = jsonDecode(jsonString);
final Map<String, String> map = <String, String>{};
enJson.forEach((String key, dynamic value) {
map[key] = value.toString();
});
return map;
}).onError((Object? error, StackTrace stackTrace) {
return Future<Map<String, String>>.value(<String, String>{});
});
}

View File

@ -1,47 +1,46 @@
part of lib_trans;
class TranslationMessage extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'zh_CN': TranslationLoader.zhDic,
'en_US' : TranslationLoader.enDic,
'zh_TW': TranslationLoader.twDic,
'fr_FR': TranslationLoader.frDic,
'ru_RU': TranslationLoader.ruDic,
'de_DE': TranslationLoader.deDic,
'ja_JA': TranslationLoader.jaDic,
'ko_KO': TranslationLoader.koDic,
'it_IT': TranslationLoader.itDic,
'uk_UK': TranslationLoader.ukDic,
'pt_PT': TranslationLoader.ptDic,
'es_ES': TranslationLoader.esDic,
'ar_AR': TranslationLoader.arDic,
'vi_VI': TranslationLoader.viDic,
'ms_MS': TranslationLoader.msDic,
'nl_NL': TranslationLoader.nlDic,
'ro_RO': TranslationLoader.roDic,
'lt_LT': TranslationLoader.ltDic,
'sv_SV': TranslationLoader.svDic,
'et_ET': TranslationLoader.etDic,
'pl_PL': TranslationLoader.plDic,
'sk_SK': TranslationLoader.skDic,
'cs_CS': TranslationLoader.csDic,
'el_EL': TranslationLoader.elDic,
'he_HE': TranslationLoader.heDic,
'sr_SR': TranslationLoader.srDic,
'tr_TR': TranslationLoader.trDic,
'hu_HU': TranslationLoader.huDic,
'bg_BG': TranslationLoader.bgDic,
'kk_KK': TranslationLoader.kkDic,
'bn_BN': TranslationLoader.bnDic,
'hr_HR': TranslationLoader.hrDic,
'th_TH': TranslationLoader.thDic,
'id_ID': TranslationLoader.idDic,
'fi_FI': TranslationLoader.fiDic,
'da_DA': TranslationLoader.daDic,
};
'zh_CN': TranslationLoader.zhDic,
'en_US': TranslationLoader.enDic,
'zh_TW': TranslationLoader.twDic,
'hk_HK': TranslationLoader.hkDic,
'fr_FR': TranslationLoader.frDic,
'ru_RU': TranslationLoader.ruDic,
'de_DE': TranslationLoader.deDic,
'ja_JA': TranslationLoader.jaDic,
'ko_KO': TranslationLoader.koDic,
'it_IT': TranslationLoader.itDic,
'uk_UK': TranslationLoader.ukDic,
'pt_PT': TranslationLoader.ptDic,
'es_ES': TranslationLoader.esDic,
'ar_AR': TranslationLoader.arDic,
'vi_VI': TranslationLoader.viDic,
'ms_MS': TranslationLoader.msDic,
'nl_NL': TranslationLoader.nlDic,
'ro_RO': TranslationLoader.roDic,
'lt_LT': TranslationLoader.ltDic,
'sv_SV': TranslationLoader.svDic,
'et_ET': TranslationLoader.etDic,
'pl_PL': TranslationLoader.plDic,
'sk_SK': TranslationLoader.skDic,
'cs_CS': TranslationLoader.csDic,
'el_EL': TranslationLoader.elDic,
'he_HE': TranslationLoader.heDic,
'sr_SR': TranslationLoader.srDic,
'tr_TR': TranslationLoader.trDic,
'hu_HU': TranslationLoader.huDic,
'bg_BG': TranslationLoader.bgDic,
'kk_KK': TranslationLoader.kkDic,
'bn_BN': TranslationLoader.bnDic,
'hr_HR': TranslationLoader.hrDic,
'th_TH': TranslationLoader.thDic,
'id_ID': TranslationLoader.idDic,
'fi_FI': TranslationLoader.fiDic,
'da_DA': TranslationLoader.daDic,
};
void updateLocal(Locale l) => Get.updateLocale(l);
}
}

View File

@ -104,7 +104,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 1.0.85+2024120301完善网关功能
# 1.0.85+2024120401修复网关问题打包给谢敬调试
version: 1.0.85+2024120402
version: 1.0.85+2024121201
environment:
sdk: '>=2.12.0 <3.0.0'