fix: 1、添加繁体香港。2、修复简体、繁体(台湾)、繁体(香港)传入显示问题。3、修复网关模块bug。4、添加网关强制删除功能。5、添加网关扫描设备功能。6、修复国际化其他bug
This commit is contained in:
parent
5e4a08e803
commit
4d98561545
@ -216,7 +216,6 @@
|
||||
"添加网关": "إضافة بوابة",
|
||||
"重新通电": "إعادة توصيل الطاقة",
|
||||
"指示灯": "مصباح مؤشر",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "انقر فوق التالي عندما فلاش الضوء بالتناوب",
|
||||
"选择网关": "اختر بوابة",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G غير مدعوم. يرجى اختيار واي فاي 2.4G.",
|
||||
"WiFi密码": "واي فاي Passward",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "يجب أن تحتوي كلمة المرور على الأقل على 2 مما يلي: الأرقام والحروف والأحرف الخاصة",
|
||||
"已开锁": "غير مقفل",
|
||||
"已闭锁": "مقفل",
|
||||
"两次密码不一致哦": "كلمات المرور غير متسقة"
|
||||
"两次密码不一致哦": "كلمات المرور غير متسقة",
|
||||
"中功率": "قوة متوسطة",
|
||||
"常规使用": "استخدام منتظم",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ ، وانقر بعد ذلك عندما يومض مصباح المؤشر بالتناوب",
|
||||
"扫描设备": "جهاز المسح الضوئي",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "فشل الحذف. ربما تكون البوابة قد اختفت دون اتصال. هل تريد فرض حذف البيانات ؟"
|
||||
}
|
||||
@ -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 секунди и щракнете върху следващия, когато индикаторната светлина мига алтернативно",
|
||||
"扫描设备": "Сканиране устройство",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Изтриването не успя. Портата може да е отишла офлайн. Искате ли да принудите изтриване на данните?"
|
||||
}
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "বিরোধী",
|
||||
"重新通电": "পরীক্ষা",
|
||||
"指示灯": "কেয়ানারেটরলাইট",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "বিকশিত",
|
||||
"选择网关": "সিওসিকারওয়ে",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5 gisnoteigpped,.",
|
||||
"WiFi密码": "উইফিক",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "ইসওয়ার্ডমস্টস্টেটলিয়াস্ট 2ofthefক্লোভিং:",
|
||||
"已开锁": "কনুকলচকেড",
|
||||
"已闭锁": "লোকচকেড",
|
||||
"两次密码不一致哦": "Thepasswordsare pencay"
|
||||
"两次密码不一致哦": "Thepasswordsare pencay",
|
||||
"中功率": "উইউমপোওয়ার",
|
||||
"常规使用": "গ্যারিউস",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "অ্যারাস্টার্টিউইসপোভেরেডন, প্রেস এবং টিপেস্টেট্রিসেট গানttonfor5sononds, এবং চক্লিক উইভেন্থে-উইন্টার",
|
||||
"扫描设备": "সিস্কান্লিভাইস",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "ডাইজেজেশনিমেরিলেড। টিভওয়েমাইয়ানভিগনোনোআরলাইন। ডো ডাউনডেটা?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "Προσθήκη πύλης",
|
||||
"重新通电": "Συνδέστε τη δύναμη",
|
||||
"指示灯": "Φως δείκτης",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "Κάντε κλικ στο επόμενο όταν το φως αναβοσβήνει εναλλάξα",
|
||||
"选择网关": "Επιλογή πύλης",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "Το 5G δεν υποστηρίζεται.Παρακαλώ επιλέξτε ένα WiFi των 2.4G.",
|
||||
"WiFi密码": "WiFi",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 2 από τα ακόλουθα: αριθμούς, γράμματα και ειδικούς χαρακτήρες.",
|
||||
"已开锁": "Ξεκλείδωμα",
|
||||
"已闭锁": "Κλειδωμένο",
|
||||
"两次密码不一致哦": "Οι κωδικοί πρόσβασης δεν είναι συνεπείς."
|
||||
"两次密码不一致哦": "Οι κωδικοί πρόσβασης δεν είναι συνεπείς.",
|
||||
"中功率": "Μέση ισχύς",
|
||||
"常规使用": "Κανονική χρήση:",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πατήστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα, και κάντε κλικ Next όταν το φως δείκτη αναβοσβήνει εναλλάξα",
|
||||
"扫描设备": "Συσκευή σάρωσης",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Η διαγραφή απέτυχε. Η πύλη μπορεί να έχει εκτός λειτουργίας. Θέλετε να αναγκάσετε τη διαγραφή των δεδομένων;"
|
||||
}
|
||||
@ -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?"
|
||||
|
||||
}
|
||||
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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
1114
lan/lan_hk.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "ゲートウェイの追加",
|
||||
"重新通电": "力を接続して下さい",
|
||||
"指示灯": "インジケータライト",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "ライトが交互に点滅するときに次をクリックしてください",
|
||||
"选择网关": "ゲートウェイの選択",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5Gはサポートされていません。2.4GのWiFiを選択してください。",
|
||||
"WiFi密码": "WiFiの通路",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "パスワードには、数字、文字、特殊文字のうち少なくとも2つを含める必要があります。",
|
||||
"已开锁": "ロック解除",
|
||||
"已闭锁": "ロック済み",
|
||||
"两次密码不一致哦": "パスワードが一致しない"
|
||||
"两次密码不一致哦": "パスワードが一致しない",
|
||||
"中功率": "ミディアムパワー",
|
||||
"常规使用": "通常の使用",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続け、インジケーターライトが交互に点滅したら [次へ] をクリックします。",
|
||||
"扫描设备": "スキャン装置",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "削除に失敗しました。ゲートウェイがオフラインになった可能性があります。強制的にデータを削除しますか?"
|
||||
}
|
||||
@ -219,7 +219,7 @@
|
||||
"添加网关": "添加网关",
|
||||
"重新通电": "重新通电",
|
||||
"指示灯": "指示灯",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "将网关重新通电,指示灯交替闪烁时点击下一步",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"选择网关": "选择网关",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置",
|
||||
"WiFi密码": "WiFi密码",
|
||||
@ -1110,5 +1110,7 @@
|
||||
"两次密码不一致哦": "两次密码不一致哦",
|
||||
|
||||
"中功率": "中功率",
|
||||
"常规使用": "常规使用"
|
||||
"常规使用": "常规使用",
|
||||
"扫描设备": "扫描设备",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
|
||||
}
|
||||
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "Шлюзді қосу",
|
||||
"重新通电": "Қуатты қосылу",
|
||||
"指示灯": "Нұсқасы:",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "Төменгі жарықты ауыстырғанда келесі басыңыз",
|
||||
"选择网关": "Шығыс таңдау",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G қолдауы жоқ.",
|
||||
"WiFi密码": "WiFi өту",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "Парольді келесінің кемінде 2- кемде болу керек: сандар, әріптер мен арнаулы таңбалары",
|
||||
"已开锁": "Жүктеу",
|
||||
"已闭锁": "Бұғатталған",
|
||||
"两次密码不一致哦": "Парольдер болмаған"
|
||||
"两次密码不一致哦": "Парольдер болмаған",
|
||||
"中功率": "Орташа қуары",
|
||||
"常规使用": "Қалыпты қолданылсын",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Келесі періңізнен соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз, Индикаторның жарықты ауыстырғанда, келесі басыңыз",
|
||||
"扫描设备": "Сканер құрылғысы",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Өшіру жаңылысы. Келесі жіберді. Деректерді өшіргіңіз келе ме?"
|
||||
}
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "게이트웨이 추가",
|
||||
"重新通电": "전원을 다시 연결하십시오.",
|
||||
"指示灯": "표시등",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "빛이 번갈아 깜박일 때 다음을 클릭하십시오.",
|
||||
"选择网关": "게이트웨이 선택",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G 는 지원되지 않습니다. 2.4G 의 WiFi를 선택하십시오.",
|
||||
"WiFi密码": "WiFi Passward",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "암호에는 숫자, 문자 및 특수 문자 중 2 개 이상이 있어야합니다.",
|
||||
"已开锁": "잠금 해제",
|
||||
"已闭锁": "잠긴",
|
||||
"两次密码不一致哦": "암호가 일치하지 않습니다."
|
||||
"两次密码不一致哦": "암호가 일치하지 않습니다.",
|
||||
"中功率": "중간 전력",
|
||||
"常规使用": "정사이즈 사용",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "게이트웨이의 전원이 켜진 후 5 초 동안 리셋 버튼을 누르고 누르고 표시등이 번갈아 깜박이면 다음 을 클릭하십시오.",
|
||||
"扫描设备": "스캔 장치",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "삭제가 실패했습니다. 게이트웨이가 오프라인 상태일 수 있다. 강제로 데이터 삭제를 하시겠습니까?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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 секунд и нажмите «Далее», когда индикатор попеременно начнет мигать.",
|
||||
"扫描设备": "Устройство сканирования",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Ошибка удаления. Возможно, шлюз ушел в автономный режим. Хотите ли вы принудительно удалить данные?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -217,7 +217,6 @@
|
||||
"添加网关": "Додај Гатеваи",
|
||||
"重新通电": "Поново прикључите напајање",
|
||||
"指示灯": "Индикаторска лампица",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "Кликните следеће када светло трепери наизменично",
|
||||
"选择网关": "Изаберите Гатеваи",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "5G није подржан. Молимо Вас да изаберете ВиФи од 2.4G.",
|
||||
"WiFi密码": "Ви -Фи Пассвард",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "Лозинка мора да садржи најмање 2 од следећег: бројеве, слова и специјалне знакове",
|
||||
"已开锁": "Откљуиана",
|
||||
"已闭锁": "Закљуиана",
|
||||
"两次密码不一致哦": "Лозинке су недоследне"
|
||||
"两次密码不一致哦": "Лозинке су недоследне",
|
||||
"中功率": "Средња снага",
|
||||
"常规使用": "Редовна употреба",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди, и кликните Следећи када индикатор трепери наизменично",
|
||||
"扫描设备": "Уређај за скенирање",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Брисање није успело. Гатеваи је можда отишао ван мреже. Да ли желите да присилите брисање података?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -216,7 +216,6 @@
|
||||
"添加网关": "เพิ่มเกตเวย์",
|
||||
"重新通电": "เชื่อมต่อพลังงานอีกครั้ง",
|
||||
"指示灯": "ไฟแสดงสถานะ",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "คลิกถัดไปเมื่อไฟกะพริบสลับกัน",
|
||||
"选择网关": "เลือกเกตเวย์",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "ไม่รองรับ5G ครับรบกวนเลือก WIFI 2.4G นะครับ",
|
||||
"WiFi密码": "WIFI passward",
|
||||
@ -1106,5 +1105,10 @@
|
||||
"密码需至少包含数字/字母/字符中的2种组合": "รหัสผ่านต้องมีอย่างน้อย2รายการต่อไปนี้: ตัวเลขตัวอักษรและอักขระพิเศษ",
|
||||
"已开锁": "ปลดล็อคแล้ว",
|
||||
"已闭锁": "ล็อคล็อคได้",
|
||||
"两次密码不一致哦": "รหัสผ่านไม่สอดคล้องกัน"
|
||||
"两次密码不一致哦": "รหัสผ่านไม่สอดคล้องกัน",
|
||||
"中功率": "กำลังไฟปานกลาง",
|
||||
"常规使用": "ใช้เป็นประจำ",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีและคลิกถัดไปเมื่อไฟแสดงสถานะกะพริบสลับกัน",
|
||||
"扫描设备": "อุปกรณ์สแกน",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "การลบล้มเหลวเกตเวย์อาจออฟไลน์ไปแล้วคุณต้องการบังคับให้ลบข้อมูลหรือไม่?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -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",
|
||||
"扫描设备": "掃描設備",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "刪除失敗。 網關可能已脫機。 是否要強制刪除數據?"
|
||||
}
|
||||
@ -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 секунд, а потім натисніть «Далі», коли індикатор почне блимати по черзі",
|
||||
"扫描设备": "Сканування пристрою",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "Видалення не вдалося. Можливо, шлюз перейшов в автономний режим. Ви хочете примусово видалити дані?"
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
@ -218,7 +218,7 @@
|
||||
"添加网关": "添加网关",
|
||||
"重新通电": "重新通电",
|
||||
"指示灯": "指示灯",
|
||||
"将网关重新通电,指示灯交替闪烁时点击下一步": "将网关重新通电,指示灯交替闪烁时点击下一步",
|
||||
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步",
|
||||
"选择网关": "选择网关",
|
||||
"不支持5G WiFi网络,请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络,请选择2.4G WiFi网络进行配置",
|
||||
"WiFi密码": "WiFi密码",
|
||||
@ -1110,6 +1110,7 @@
|
||||
"两次密码不一致哦": "两次密码不一致哦",
|
||||
|
||||
"中功率": "中功率",
|
||||
"常规使用": "常规使用"
|
||||
|
||||
"常规使用": "常规使用",
|
||||
"扫描设备": "扫描设备",
|
||||
"删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
|
||||
}
|
||||
|
||||
36
lib/app.dart
36
lib/app.dart
@ -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),
|
||||
|
||||
@ -754,6 +754,7 @@ class BlueManage {
|
||||
Future<void> stopScan() async {
|
||||
try {
|
||||
await FlutterBluePlus.stopScan();
|
||||
AppLog.log('调用停止扫描成功');
|
||||
} catch (e) {
|
||||
AppLog.log('停止扫描失败');
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)),
|
||||
),
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
});
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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),
|
||||
),
|
||||
),
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
class GetGatewayInfoModel {
|
||||
late String gatewayName;
|
||||
late String mac;
|
||||
late String serialNum;
|
||||
late String gatewayVersion;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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),
|
||||
))),
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@ -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();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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'; //锁用户列表
|
||||
|
||||
@ -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}));
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
21
lib/tools/change_language_format.dart
Normal file
21
lib/tools/change_language_format.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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':
|
||||
|
||||
@ -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>{});
|
||||
});
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user