other: merge develop

This commit is contained in:
Liuyf 2025-04-22 19:02:42 +08:00
commit 7f81827a9c
178 changed files with 7137 additions and 2120 deletions

View File

@ -2,11 +2,13 @@ package com.skychip.lock
import io.flutter.app.FlutterApplication
import android.util.Log
import cn.jiguang.api.utils.JCollectionAuth;
class App : FlutterApplication() {
override fun onCreate() {
super.onCreate()
Log.d("MyApplication", "Application has started")
JCollectionAuth.setAuth(getApplicationContext(), false);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置背景颜色为透明 -->
<solid android:color="@android:color/transparent"/>
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

View File

@ -1,86 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>play</title>
</head>
<style>
html {
margin: 0;
padding: 0;
overflow: hidden; /* 防止滚动条出现 */
overflow: hidden;
/* 防止滚动条出现 */
}
body {
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
background-color: white;
overflow: hidden; /* 防止滚动条出现 */
overflow: hidden;
/* 防止滚动条出现 */
display: flex;
align-items: center;
justify-content: center;
}
#player {
object-fit:cover;
object-fit: cover;
height: 56vh;
transform: rotate(-90deg);
}
</style>
<body>
<video autoplay muted poster="images/loader-thumb.jpg"
id="player">
</video>
<script src="jmuxer.min.js"></script>
<script>
<video autoplay muted poster="images/loader-thumb.jpg" id="player">
</video>
<script src="jmuxer.min.js"></script>
<script>
if (typeof JMuxer === 'undefined') {
console.error("JMuxer is not defined. Check if jmuxer.min.js is loaded correctly.");
} else {
console.log("JMuxer loaded successfully.");
}
let jmuxer;
window.onload = function() {
try {
jmuxer = new JMuxer({
node: 'player',
mode: 'video',
debug: false,
webgl: true, // 启用WebGL加速
webglOptions: {
preserveDrawingBuffer: false,
antialias: false
},
flushingTime: 0, // 禁用自动刷新
clearBuffer: false, // 保留解码缓存
fps:20,
onReady: () => {
console.log('播放器初始化完成');
// 通知Flutter端准备就绪
window.Flutter.postMessage('ready');
}
});
jmuxer.reset();
console.log("JMuxer initialized.");
} catch (e) {
console.error("Error initializing JMuxer:", e);
if (typeof JMuxer === 'undefined') {
console.error("JMuxer is not defined. Check if jmuxer.min.js is loaded correctly.");
} else {
console.log("JMuxer loaded successfully.");
}
};
// Feed data from Flutter
function feedDataFromFlutter(data) {
const buffer = new Uint8Array(data);
jmuxer.feed({
video: buffer,
let jmuxer;
window.onload = function () {
try {
jmuxer = new JMuxer({
node: 'player',
mode: 'video',
debug: false,
readfpsfromtrack: true,
flushingTime: 0, // 立即刷新
clearBuffer: true, // 丢弃延迟帧
fps: 25, // 强制指定帧率
onReady: () => {
console.log('播放器初始化完成');
// 通知Flutter端准备就绪
window.Flutter.postMessage('ready');
},
onMissingVideoFrames: (missingFrames) => {
// console.log('Missing video frames:', missingFrames);
},
});
}
} catch (e) {
console.error("Error initializing JMuxer:", e);
}
};
// Feed data from Flutter
function feedDataFromFlutter(data) {
const buffer = new Uint8Array(data);
jmuxer.feed({
video: buffer,
duration: 40 // 每帧持续时间40ms25fps
});
}
// Optional: notify Flutter
@ -92,11 +93,27 @@
}
}
// Function to return to Flutter page
function returnToFlutter() {
notifyFlutter("Returning to Flutter page");
}
</script>
// Function to return to Flutter page
function returnToFlutter() {
notifyFlutter("Returning to Flutter page");
}
// 添加清理方法
function cleanupJMuxer() {
if (jmuxer) {
try {
jmuxer.destroy();
jmuxer = null;
console.log('JMuxer cleaned up successfully');
window.Flutter.postMessage('cleanup_complete');
} catch (e) {
console.error('Error cleaning up JMuxer:', e);
window.Flutter.postMessage('cleanup_error');
}
}
}
</script>
</body>
</html>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

View File

@ -144,6 +144,8 @@ PODS:
- fluwx/pay (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.4)
- gallery_saver (0.0.1):
- Flutter
- google_maps_flutter_ios (0.0.1):
- Flutter
- GoogleMaps (< 9.0)
@ -219,6 +221,18 @@ PODS:
- Flutter
- JCore (>= 4.6.2)
- JVerification (= 3.2.4)
- libwebp (1.3.2):
- libwebp/demux (= 1.3.2)
- libwebp/mux (= 1.3.2)
- libwebp/sharpyuv (= 1.3.2)
- libwebp/webp (= 1.3.2)
- libwebp/demux (1.3.2):
- libwebp/webp
- libwebp/mux (1.3.2):
- libwebp/demux
- libwebp/sharpyuv (1.3.2)
- libwebp/webp (1.3.2):
- libwebp/sharpyuv
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
@ -261,6 +275,9 @@ PODS:
- video_player_avfoundation (0.0.1):
- Flutter
- FlutterMacOS
- video_thumbnail (0.0.1):
- Flutter
- libwebp
- webview_flutter_wkwebview (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (2.0.4)
@ -290,6 +307,7 @@ DEPENDENCIES:
- flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- gallery_saver (from `.symlinks/plugins/gallery_saver/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
@ -310,6 +328,7 @@ DEPENDENCIES:
- umeng_common_sdk (from `.symlinks/plugins/umeng_common_sdk/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
SPEC REPOS:
@ -339,6 +358,7 @@ SPEC REPOS:
- JCore
- JPush
- JVerification
- libwebp
- nanopb
- PromisesObjC
- SDWebImage
@ -395,6 +415,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/fluttertoast/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
gallery_saver:
:path: ".symlinks/plugins/gallery_saver/ios"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
image_gallery_saver:
@ -429,6 +451,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
video_thumbnail:
:path: ".symlinks/plugins/video_thumbnail/ios"
webview_flutter_wkwebview:
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
@ -473,6 +497,7 @@ SPEC CHECKSUMS:
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
fluwx: daa284756ce53442b3d0417ceeda66e981906811
gallery_saver: 9fc173c9f4fcc48af53b2a9ebea1b643255be542
google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99
GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
@ -486,6 +511,7 @@ SPEC CHECKSUMS:
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
JVerification: 0774807f44dd788c78d50303a14e133735807856
jverify: 337ea43ac1e16f9484f4195abe787d1b6241163c
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
@ -504,6 +530,7 @@ SPEC CHECKSUMS:
umeng_common_sdk: a8abd7f86dfd013dbbeeae587ee143760c6582f2
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
webview_flutter_wkwebview: 2a23822e9039b7b1bc52e5add778e5d89ad488d1
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "check.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "icon_left_grey.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "login_btn_normal.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "login_btn_press.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "uncheck.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف الأوردة المشطية للقفل. هل أنت متأكد أنك تريد إعادة الضبط ؟",
"在线": "الإنترنت",
"离线": "غير متصل",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف بصمات القفل. هل أنت متأكد أنك تريد إعادة ضبطه ؟",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف جهاز التحكم عن بعد للقفل. هل تريد إعادة ضبطه ؟",
"版本说明": "تعليمات الإصدار",
"一键登录": "تسجيل الدخول بنقرة واحدة"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ. انقر فوق التالي عندما يومض ضوء المؤشر الأزرق",
"网关添加成功": "تم إضافة البوابة بنجاح",
"功能开启后,你将可以通过网关远程开锁。": "بعد تفعيل الوظيفة، ستكون قادرًا على الفتح عن بُعد من خلال البوابة.",
"录屏已保存到相册": "تم حفظ ملف تسجيل الشاشة للألبوم",
"通话未接通,已挂断": "الإتصال غير متصل، أغلق",
"通话异常中断": "انقطاع الاتصال غير الطبيعي",
"通话连接失败": "فشل اتصال المكالمة",
"已挂断": "أقفل الخط",
"正在说话...": "أتحدث الآن …",
"设备不在线": "الجهاز ليس متصلا",
"设备未配网": "الجهاز غير متصل بالشبكة",
"已静音": "الصوت كان مغلقاً",
"该锁的远程开锁功能未启用": "وظيفة الفتح عن بعد لهذا القفل غير ممكنة",
"下载完成,请到相册查看": "اكتملت عملية التحميل، الرجاء الذهاب إلى الألبوم لمشاهدته",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "عند ضبط عين على وضع توفير الطاقة لا يمكن إجراء المراقبة يرجى الانتقال إلى الأوضاع الأخرى في إعدادات",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "لا يمكن فتح القفل عن بعد عند ضبط عين على وضع توفير الطاقة يرجى الانتقال إلى وضع آخر في إعدادات عين القطة",
"呼叫目标": "الاتصال الهدف",
"管理员APP": "برنامج التطبيقات الخاص بالمسؤول",
"可视门铃码": "رمز جرس الباب البصري",
"电子反锁": "جهاز إلكتروني لمنع القفل",
"双重认证": "المصادقة من عاملين",
"双锁联动": "وصلة القفل المزدوج",
"1.用智能锁APP添加锁和网关": "1. أضف أقفال وبوابات باستخدام تطبيق القفل الذكي",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. تمكين وظيفة الفتح عن بعد للقفل في APP (يتم إيقاف هذه الوظيفة بشكل افتراضي). إذا كان هذا الخيار غير متاح، لن يدعم القفل جوجل هوم",
"3.安装Google Home APP点击左上角的加号按钮": "3. قم بتثبيت تطبيق Google Home وانقر فوق الزر زائد في الزاوية العلوية اليسرى",
"暂无最新记录": "لا توجد حاليا أحدث السجلات المتاحة",
"请将手机切换至2.4G WiFi进行手动连接": "الرجاء تحويل هاتفك إلى \"واي فاي 2.4\" للاتصال اليدوي"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "След нулиране, метакарпалните вени на ключалката ще бъдат изтрити. Сигурен ли сте, че искате да се възстанови?",
"在线": "Онлайн",
"离线": "Офлайн",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "След нулиране, пръстовите отпечатъци на заключването ще бъдат изтрити. Сигурен ли сте, че искате да го нулирате?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "След нулиране, дистанционното управление на ключалката ще бъде изтрито. Искате ли да го нулирате?",
"版本说明": "Обяснение на версията",
"一键登录": "Вход с едно кликване"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди. Щракнете върху следващия, когато синята индикаторна светлина мига",
"网关添加成功": "Gateway added successfully",
"功能开启后,你将可以通过网关远程开锁。": "След като функцията е активирана, ще можете да отключите дистанционно през шлюза。",
"录屏已保存到相册": "Файлът за запис на екрана, записан в албум",
"通话未接通,已挂断": "Обаждането не е свързано, затворено е",
"通话异常中断": "Необичайно прекъсване на разговора",
"通话连接失败": "Неуспешна връзка за повикване",
"已挂断": "Затваряне",
"正在说话...": "Говоря сега...",
"设备不在线": "Устройството не е онлайн",
"设备未配网": "Устройството не е свързано към мрежата",
"已静音": "Звукът е изключен",
"该锁的远程开锁功能未启用": "Функцията за дистанционно отключване на тази ключалка не е активирана",
"下载完成,请到相册查看": "Изтеглянето е завършено, моля, отидете на албума, за да го видите",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когато Cat Eye е настроен на режим на пестене на енергия, наблюдението не може да се извършва. Моля, превключете към други режими в настройките на Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Дистанционното отключване не е възможно, когато Cat Eye е настроен в режим на пестене на енергия. Моля, превключете на друг режим в настройките на Cat Eye",
"呼叫目标": "Цел на обаждане",
"管理员APP": "Приложение за администратор",
"可视门铃码": "Визуален код на звънеца",
"电子反锁": "Електронна анти блокировка",
"双重认证": "Двуфакторно удостоверяване",
"双锁联动": "Връзка с двойно заключване",
"1.用智能锁APP添加锁和网关": "1. Добавете брави и шлюзове с помощта на приложението Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Активирайте функцията за дистанционно отключване на ключалката в приложението (тази функция е изключена по подразбиране). Ако тази опция не е налице, заключването няма да поддържа Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Инсталирайте приложението Google Home и щракнете върху бутона плюс в горния ляв ъгъл",
"暂无最新记录": "В момента няма най-новите налични записи",
"请将手机切换至2.4G WiFi进行手动连接": "Моля, превключете телефона си на 2.4G WiFi за ръчно свързване"
}

View File

@ -151,7 +151,7 @@
"升级": "আন্ডারেট",
"空闲": "ছোয়ান্ট",
"已入住": "নিয়ন্ত্র",
"多语言": "Langu▁রেজ",
"多语言": "বহুভাষিক",
"添加锁": "লক",
"锁地址": "অ্যান্ডলক",
"选择锁类型": "নির্মাণselectlocktypeype",
@ -177,7 +177,7 @@
"开启": "টেকওন",
"确定要开启重置键?": "গানট্টটন?",
"确定要关闭重置键?": "গানট্টটন?",
"隐藏无效开锁权限": "Hide ali▁alidaccessGenericName",
"隐藏无效开锁权限": "অবৈধ অনুমতি আড়াল করো",
"APP开锁时需手机连网的锁": "ব্লকস্ক্রিয়ামিংফোনলাইন",
"增值服务": "ওয়ার্ডেরিসিস",
"关于": "কুবআউট",
@ -217,7 +217,7 @@
"重新通电": "পরীক্ষা",
"指示灯": "কেয়ানারেটরলাইট",
"选择网关": "সিওসিকারওয়ে",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5 gisnoteigpped,.",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "5G ওয়াইফাই নেটওয়ার্ক সমর্থন করে না, কনফিগার করার জন্য 2.4G ওয়াইফাই নেটওয়ার্ক নির্বাচন করুন",
"WiFi密码": "উইফিক",
"请输入WiFi密码": "দ্বিতীয় ওয়ার্ড",
"网关名称": "সমুদ্রনাম",
@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "ব্যান্ডোটারআইসেট, হাসিপাল রিরিইনস্ফথেলকবইল্ডজেডড।?",
"在线": "কনলাইন",
"离线": "দেউন্টলাইনCity in Ontario Canada",
@ -1087,13 +1091,13 @@
"修改名字": "নেম",
"时": "Hour",
"分": "নিউট",
"Amazon Alexa": "Ammogonalexa",
"Amazon Alexa": "Amazon Alexa",
"您可以使用Alexa进行开锁、闭锁和查看锁状态": "/অনুপন্থির",
"支持的国家": "আদিবাস্য",
"支持的国家值": "ইউসা, চা, uk, ঊর্ধ্ব, ডাইডিয়া, germany, ডিফায়েন্স, লি, ইম্পোসি, ইজেড",
"操作流程": "ক্যামেশনprocesscess",
"操作流程值": "1 বিরোধীদ্যালক্যান্ডgatkorethrouthhescartchlockParp\n\n2 দশমিক... ...সম্পোকলকিং... লকটিংয়ের (সংখ্যা ইংলিপিস অফবি-রফ-এফল্ট)। ফিফডোনট্যানস্ট্রিওপশন, থেলক ক্যান্টোনট\n\n3 বিদ্রোহী স্কুই ls টু-এক্সাআন্ড ঊর্ধ্বতন পোস্টার্থে\n\nলক্যাটথলকের দিন ইক্সাপপ্প, টেসিতে ইসোলাকক fun\n\n5thelockcanbe equavaedunderroughalexaxa",
"Google Home": "শ্রোগল",
"Google Home": "Google Home",
"Action name": "কর্মসূচী",
"ScienerSmart": "ইসিসিভার্ট",
"支持的语言": "আদিবাস্য",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "ব্যান্ডোটারট্রাসেট, thelock'sferprinতা?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ব্যান্ডোটারপ্রাসেট, নিয়ন্ত্রণের নিয়ন্ত্রণ। ডোডো ডাইভান্টটুরে?",
"版本说明": "ভার্সনপরিচিতি",
"一键登录": "এক-সিক্লিক্লোগিন"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "ব্যাস্টোকার্টারটিইসপোভেরোর্ডন, প্রেস এবং প্রেসিটিসেট গানটেটনফোর্র 5 সইভিক ds। বিকশিক",
"网关添加成功": "রুপেডডড্রোজেন্টজেক্যালি",
"功能开启后,你将可以通过网关远程开锁。": "ফাংশন সক্রিয় করার পরে, আপনি গেটওয়ে。 এর মাধ্যমে দূরবর্তীভাবে আনলক করতে সক্ষম হবেন",
"录屏已保存到相册": "স্ক্রিন রেকর্ডিং ফাইল অ্যালবামে সংরক্ষণ করা হয়েছে",
"通话未接通,已挂断": "কল কানেক্ট হয়নি, হ্যাং আপ",
"通话异常中断": "অস্বাভাবিক কল বাধা",
"通话连接失败": "কল সংযোগ ব্যর্থ হয়েছে",
"已挂断": "ঝুলিয়ে রাখা",
"正在说话...": "এখন কথা হচ্ছে...",
"设备不在线": "ডিভাইসটি অনলাইনে নেই",
"设备未配网": "ডিভাইসটি নেটওয়ার্কের সাথে সংযুক্ত নয়",
"已静音": "শব্দটি বন্ধ করা হয়েছে",
"该锁的远程开锁功能未启用": "এই লকের রিমোট আনলকিং ফাংশন সক্ষম নেই",
"下载完成,请到相册查看": "ডাউনলোড সম্পন্ন হয়েছে, দেখতে অনুগ্রহ করে অ্যালবামে যান",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "যখন ক্যাট আই পাওয়ার-সেভিং মোডে সেট করা থাকে, তখন পর্যবেক্ষণ করা যায় না। দয়া করে ক্যাট আই সেটিংসে অন্যান্য মোডে স্যুইচ করুন",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ক্যাট আই পাওয়ার-সাশ্রয় মোডে সেট করা থাকলে রিমোট আনলক করা সম্ভব নয়। দয়া করে ক্যাট আই সেটিংসে অন্য মোডে স্যুইচ করুন",
"呼叫目标": "কল টার্গেট",
"管理员APP": "প্রশাসক অ্যাপ",
"可视门铃码": "ভিজ্যুয়াল ডোরবেল কোড",
"电子反锁": "বৈদ্যুতিন বিরোধী লক",
"双重认证": "টু-ফ্যাক্টর অথেনটিকেশন",
"双锁联动": "ডাবল লক লিঙ্কেজ",
"1.用智能锁APP添加锁和网关": "1. স্মার্ট লক অ্যাপ ব্যবহার করে লক ও গেটওয়ে যোগ করুন",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. অ্যাপে লকের রিমোট আনলকিং ফাংশন সক্ষম করুন (এই ফাংশনটি ডিফল্টরূপে বন্ধ রয়েছে)। যদি এই বিকল্পটি উপলভ্য না হয় তবে লকটি গুগল হোম সমর্থন করবে না",
"3.安装Google Home APP点击左上角的加号按钮": "গুগল হোম অ্যাপ্লিকেশনটি ইনস্টল করুন এবং উপরের বাম কোণে প্লাস বোতামটি ক্লিক করুন",
"暂无最新记录": "বর্তমানে কোনও সাম্প্রতিকতম রেকর্ড সুলভ নেই",
"请将手机切换至2.4G WiFi进行手动连接": "ম্যানুয়াল সংযোগের জন্য দয়া করে আপনার ফোনটি 2.4 জি ওয়াইফাইতে স্যুইচ করুন"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetování budou metakarpální žíly zámku odstraněny. Jste si jistý, že chcete resetovat?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetování budou otisky prstů zámku odstraněny. Opravdu ho chcete obnovit?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetu bude dálkové ovládání zámku odstraněno. Chcete ho obnovit?",
"版本说明": "Verze",
"一键登录": "Přihlášení s jedním kliknutím"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund. Klepněte na tlačítko další, když modré světlo ukazatele bliká",
"网关添加成功": "Úspěšně přidaná brána",
"功能开启后,你将可以通过网关远程开锁。": "Po aktivaci funkce budete moci vzdáleně odemknout prostřednictvím brány.",
"录屏已保存到相册": "Soubor záznamu obrazovky uložený do alba",
"通话未接通,已挂断": "Hovor není spojen, zavěsil",
"通话异常中断": "Abnormální přerušení hovoru",
"通话连接失败": "Připojení hovoru se nezdařilo",
"已挂断": "Zavěsit",
"正在说话...": "Teď mluvím...",
"设备不在线": "Zařízení není online",
"设备未配网": "Zařízení není připojeno k síti",
"已静音": "Zvuk byl vypnut",
"该锁的远程开锁功能未启用": "Funkce dálkového odemykání tohoto zámku není povolena",
"下载完成,请到相册查看": "Stahování dokončeno, přejděte prosím na album k zobrazení",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Když je Cat Eye nastaven do úsporného režimu, monitorování nelze provádět. Přepněte prosím do jiných režimů v nastavení Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Dálkové odemykání není možné, pokud je Cat Eye nastaven do úsporného režimu. Přepněte prosím do jiného režimu v nastavení Cat Eye",
"呼叫目标": "Cíl hovoru",
"管理员APP": "Aplikace správce",
"可视门铃码": "Vizuální kód zvonku",
"电子反锁": "Elektronické blokování",
"双重认证": "Dvoufaktorová autentizace",
"双锁联动": "Dvojitý zámek",
"1.用智能锁APP添加锁和网关": "1. Přidejte zámky a brány pomocí aplikace chytrého zámku",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Povolte funkci dálkového odemykání zámku v APP (tato funkce je ve výchozím nastavení vypnutá). Pokud tato možnost není k dispozici, zámek nebude podporovat Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Nainstalujte aplikaci Google Home a klikněte na tlačítko plus v levém horním rohu",
"暂无最新记录": "Momentálně nejsou k dispozici žádné nejnovější záznamy",
"请将手机切换至2.4G WiFi进行手动连接": "Přepněte prosím svůj telefon na 2.4G WiFi pro ruční připojení"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter nulstilling, de metacarpal vener i låsen vil blive slettet. Er du sikker på at du vil nulstille?",
"在线": "OnlineComment",
"离线": "OfflineComment",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter nulstilling vil låsens fingeraftryk blive slettet. Er du sikker på at du vil nulstille den?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter nulstilling, fjernbetjeningen af låsen vil blive slettet. Vil du nulstille den?",
"版本说明": "Versionsbeskrivelse",
"一键登录": "Login med et enkelt klik"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Når gateway er tændt, tryk på og hold nulstillingsknappen i 5 sekunder. Klik på Næste, når den blå indikator lys blinker",
"网关添加成功": "Gateway tilføjet med succet",
"功能开启后,你将可以通过网关远程开锁。": "Når funktionen er aktiveret, vil du være i stand til at fjernlåse via gatewayen.",
"录屏已保存到相册": "Skærmoptagelsesfil gemt i album",
"通话未接通,已挂断": "Opkaldet blev ikke tilsluttet, lagt på",
"通话异常中断": "Unormal opkaldsafbrydelse",
"通话连接失败": "Opkaldsforbindelse mislykkedes",
"已挂断": "Lægger på",
"正在说话...": "Taler nu...",
"设备不在线": "Enheden er ikke online",
"设备未配网": "Enheden er ikke tilsluttet netværket",
"已静音": "Lyden er blevet slukket",
"该锁的远程开锁功能未启用": "Fjernoplåsningsfunktionen for denne lås er ikke aktiveret",
"下载完成,请到相册查看": "Download fuldført, gå til albummet for at se",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Når Cat Eye er indstillet til strømbesparende tilstand, kan overvågning ikke udføres. Skift venligst til andre tilstande i Cat Eye-indstillingerne",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjernoplåsning er ikke mulig, når Cat Eye er indstillet til strømbesparende tilstand. Skift venligst til en anden tilstand i Cat Eye-indstillinger",
"呼叫目标": "Mål for opkald",
"管理员APP": "Administrator APP",
"可视门铃码": "Visuel dørklokkekode",
"电子反锁": "Elektronisk anti-lås",
"双重认证": "To-faktor-godkendelse",
"双锁联动": "Dobbelt låseforbindelse",
"1.用智能锁APP添加锁和网关": "1. Tilføj låse og gateways ved hjælp af smart lock-appen",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Aktiver fjernoplåsningsfunktionen for låsen i APP'en (denne funktion er slået fra som standard). Hvis denne mulighed ikke er tilgængelig, understøtter låsen ikke Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installer Google Home-appen, og klik på plusknappen i øverste venstre hjørne",
"暂无最新记录": "Der er i øjeblikket ingen nyeste optegnelser tilgængelige",
"请将手机切换至2.4G WiFi进行手动连接": "Skift venligst din telefon til 2.4G WiFi for manuel forbindelse"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Mittelhand adern des Schlosses gelöscht. Sind Sie sicher, dass Sie zurücksetzen wollen?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Finger abdrücke des Schlosses gelöscht. Sind Sie sicher, dass Sie es zurücksetzen wollen?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen wird die Fernbedienung des Schlosses gelöscht. Willst du es zurücksetzen?",
"版本说明": "Versionsbeschreibung",
"一键登录": "Ein-Klick-Login"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden. Klicken Sie auf Weiter, wenn die blaue Anzeige leuchte blinkt",
"网关添加成功": "Gateway erfolgreich hinzugefügt",
"功能开启后,你将可以通过网关远程开锁。": "Ist diese funktion aktiviert, können sie sie manuell über das gateway entsperren",
"录屏已保存到相册": "Aufzeichnungen werden in fotoalbum gespeichert",
"通话未接通,已挂断": "Nicht durchwahl und aufgelegt",
"通话异常中断": "Keine ungewöhnlichen anrufe.",
"通话连接失败": "Verbindung abgebrochen nicht.",
"已挂断": "hängen",
"正在说话...": "Und jetzt? - jetzt.",
"设备不在线": "Gerät nicht online.",
"设备未配网": "Die ausrüstung ist nicht mit dem netzwerk verbunden",
"已静音": "Der ton ist abgeschaltet",
"该锁的远程开锁功能未启用": "Die fernsteuerung des schlüssels nicht geöffnet",
"下载完成,请到相册查看": "Die herunterladen ist abgeschlossen. Gehen sie ins fotoalbum",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Die überwachung kann nicht durchgeführt werden, wenn die katze auf schaltungsmodus eingestellt ist. Wechseln sie in die einstellungen für die katze auf einen anderen modus",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Die katze kann nicht aus der ferne entsperren, wenn sie so eingestellt ist, dass strom gespart wird Wechseln sie in die einstellungen für die katze auf einen anderen modus",
"呼叫目标": "Aktiviere ziel.",
"管理员APP": "Administrator tor wenden.",
"可视门铃码": "Achter türcode",
"电子反锁": "Die elektronische abwehrvorrichtung",
"双重认证": "Duale identität",
"双锁联动": "Ein doppelschloss verbindet sich",
"1.用智能锁APP添加锁和网关": "1. Schlösser und gateway mit der anwendung intelligente schlösser hinzufügen",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Entsichern in einer APP, die ein schloss öffnet (standard abschalten) Wenn diese option nicht verfügbar ist, wird das schloss google nicht unterstützen",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installiert die google-app und klicken auf den knopf hinzufügen in der oberen linken ecke",
"暂无最新记录": "Wir haben keine neuen daten",
"请将手机切换至2.4G WiFi进行手动连接": "Wenn manuelle verbindung hergestellt wird, schalten sie das handy auf 2,4 G WiFi"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, οι μετακάρπιες φλέβες της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να επαναφέρετε;",
"在线": "Σε απευθείας σύνδεση",
"离线": "Εκτός σύνδεσης:",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, τα αποτυπώματα της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να το επαναφέρετε;",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, το τηλεχειριστήριο της κλειδαριάς θα διαγραφεί. Θέλεις να το επαναφέρεις;",
"版本说明": "Περιγραφή έκδοσης",
"一键登录": "Σύνδεση ενός κλικ"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πιέστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα. Κάντε κλικ Επόμενο όταν το μπλε φως δείκτη αναβοσβήνει",
"网关添加成功": "Η πύλη προστέθηκε με επιτυχία",
"功能开启后,你将可以通过网关远程开锁。": "Αφού ενεργοποιηθεί η λειτουργία, θα μπορείτε να ξεκλειδώσετε εξ αποστάσεως μέσω της πύλης。",
"录屏已保存到相册": "Αρχείο εγγραφής οθόνης αποθηκευμένο στο άλμπουμ",
"通话未接通,已挂断": "Η κλήση δεν συνδέθηκε, τερματίστηκε",
"通话异常中断": "Μη φυσιολογική διακοπή κλήσεων",
"通话连接失败": "Η σύνδεση κλήσης απέτυχε",
"已挂断": "Κλείσιμο του τηλεφώνου",
"正在说话...": "Μιλώντας τώρα...",
"设备不在线": "Η συσκευή δεν είναι συνδεδεμένη στο Internet",
"设备未配网": "Η συσκευή δεν είναι συνδεδεμένη στο δίκτυο",
"已静音": "Ο ήχος έχει απενεργοποιηθεί",
"该锁的远程开锁功能未启用": "Η λειτουργία απομακρυσμένου ξεκλειδώματος αυτής της κλειδαριάς δεν είναι ενεργοποιημένη",
"下载完成,请到相册查看": "Η λήψη ολοκληρώθηκε, μεταβείτε στο άλμπουμ για προβολή",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Όταν το Cat Eye έχει ρυθμιστεί σε λειτουργία εξοικονόμησης ενέργειας, δεν είναι δυνατή η εκτέλεση παρακολούθησης. Μεταβείτε σε άλλες λειτουργίες στις ρυθμίσεις του Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Το απομακρυσμένο ξεκλείδωμα δεν είναι δυνατό όταν το Cat Eye έχει ρυθμιστεί σε λειτουργία εξοικονόμησης ενέργειας. Μεταβείτε σε άλλη λειτουργία στις ρυθμίσεις του Cat Eye",
"呼叫目标": "Στόχος κλήσης",
"管理员APP": "Εφαρμογή διαχειριστή",
"可视门铃码": "Οπτικός κωδικός κουδουνιού πόρτας",
"电子反锁": "Ηλεκτρονικό αντικλείδωμα",
"双重认证": "Έλεγχος ταυτότητας δύο παραγόντων",
"双锁联动": "Σύνδεσμος διπλού κλειδώματος",
"1.用智能锁APP添加锁和网关": "1. Προσθέστε κλειδαριές και πύλες χρησιμοποιώντας την εφαρμογή Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Ενεργοποιήστε τη λειτουργία απομακρυσμένου ξεκλειδώματος της κλειδαριάς στην εφαρμογή (αυτή η λειτουργία είναι απενεργοποιημένη από προεπιλογή). Εάν αυτή η επιλογή δεν είναι διαθέσιμη, το κλείδωμα δεν θα υποστηρίζει το Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Εγκαταστήστε την εφαρμογή Google Home και κάντε κλικ στο κουμπί συν στην επάνω αριστερή γωνία",
"暂无最新记录": "Προς το παρόν δεν υπάρχουν διαθέσιμες τελευταίες εγγραφές",
"请将手机切换至2.4G WiFi进行手动连接": "Αλλάξτε το τηλέφωνό σας σε 2.4G WiFi για χειροκίνητη σύνδεση"
}

View File

@ -61,7 +61,8 @@
"请输入员工账号": "Enter Employee's Account",
"批量授权锁": "Grant multiple locks",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "The authorized administrator will have majority permission to operate this lock.",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.",
"功能开启后,你将可以通过网关远程开锁。": "After the function is enabled, you will be able to remotely unlock through the gateway。",
"排列方式": "List Type",
"早到榜": "Early List",
"迟到榜": "Late List",
@ -731,18 +732,18 @@
"请选择有效日": "Please select the effective day",
"公司名字长度不能小于 6 ": "The length of the company name cannot be less than 6",
"已是最新版本": "No updates",
"一":"One",
"二":"Two",
"三":"Three",
"四":"Four",
"五":"Five",
"六":"Six",
"日":"Sun",
"新建短信模版":"Creat SMS template",
"新建邮件模版":"Creat email template",
"自定义短信模版":"SMS template",
"自定义邮件模版":"Email template",
"名称":"Name",
"一": "One",
"二": "Two",
"三": "Three",
"四": "Four",
"五": "Five",
"六": "Six",
"日": "Sun",
"新建短信模版": "Creat SMS template",
"新建邮件模版": "Creat email template",
"自定义短信模版": "SMS template",
"自定义邮件模版": "Email template",
"名称": "Name",
"星星锁": "Star lock",
"无考勤记录": "No Records",
"大家干劲十足": "Everyone comes in time",
@ -779,20 +780,20 @@
"该已锁被删除": "The locked is deleted",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "The authorized admin can only manage passcodes,ekeys and etccreated by himself.",
"添加授权管理员": "Create Admin",
"导出记录":"Export records",
"选择时间段":"Select time period",
"导出":"Export",
"批量导出":"Batch export",
"读取记录":"Refresh Records",
"设备":"Device",
"消息":"Messages",
"智能分析":"Intelligent analytics",
"精准识别设备事件,过滤无效信息":"Accurately identify device events and filter out invalid information",
"系统设置":"System settings",
"系统的全局配置在此项内进行设置":"The global configuration of the system is set in this item",
"导出操作记录":"Export records",
"立即查看":"View",
"导出成功":"Exported successfully",
"导出记录": "Export records",
"选择时间段": "Select time period",
"导出": "Export",
"批量导出": "Batch export",
"读取记录": "Refresh Records",
"设备": "Device",
"消息": "Messages",
"智能分析": "Intelligent analytics",
"精准识别设备事件,过滤无效信息": "Accurately identify device events and filter out invalid information",
"系统设置": "System settings",
"系统的全局配置在此项内进行设置": "The global configuration of the system is set in this item",
"导出操作记录": "Export records",
"立即查看": "View",
"导出成功": "Exported successfully",
"发送钥匙": "Send ekey",
"进度": "Rate",
"失败": "Failed",
@ -925,7 +926,7 @@
"或发生异常事件时": "or an abnormal event occurs",
"逗留达到10秒": "Stay for 10 seconds",
"约1.5米": "About 1.5 meters",
"随时":"Anytime",
"随时": "Anytime",
"立即录像": "Record immediately",
"录像时机": "Video timing",
"有人出现时录像": "Record when someone appears",
@ -1009,6 +1010,7 @@
"请在锁设置中开启远程开锁": "Please enable remote unlocking in the lock settings",
"接听": "Answer",
"截图已保存到相册": "Screenshot saved to album",
"录屏已保存到相册": "Screen recording file saved to album",
"添加遥控": "Add remote control",
"已连接到锁,请按遥控": "Connected to the lock, please press the remote control",
"遥控号": "Remote control number",
@ -1078,6 +1080,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "After reset, the metacarpal veins of the lock will be deleted. Are you sure you want to reset?",
"在线": "Online",
"离线": "Offline",
@ -1092,7 +1098,7 @@
"支持的国家": "Supported countries",
"支持的国家值": "USA, Canada, UK, Australia, India, Germany, France, Italy, Spain, Japan",
"操作流程": "Operation process",
"操作流程值":"1 Add a lock and gateway with the Smart lock APP \n\n2 Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If you do not have this option, the lock does not support Alexa \n\n3 Add skills to Alexa and authorize them with the Smart lock APP's account and password. After the authorization is successful, you can discover devices under the account \n\n4 Locate the lock in the Alexa app, turn on the voice unlock function, and set the language password \n\n5 The lock can be operated through Alexa",
"操作流程值": "1 Add a lock and gateway with the Smart lock APP \n\n2 Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If you do not have this option, the lock does not support Alexa \n\n3 Add skills to Alexa and authorize them with the Smart lock APP's account and password. After the authorization is successful, you can discover devices under the account \n\n4 Locate the lock in the Alexa app, turn on the voice unlock function, and set the language password \n\n5 The lock can be operated through Alexa",
"Google Home": "Google Home",
"Action name": "Action name",
"ScienerSmart": "ScienerSmart",
@ -1119,8 +1125,37 @@
"分简称": "M",
"跟随系统": "Follow system",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "After reset, the lock's fingerprints will be deleted. Are you sure you want to reset it?",
"通话未接通,已挂断": "Call not connected, hung up",
"通话异常中断": "Abnormal call interruption",
"通话连接失败": "Call connection failed",
"已挂断": "Hanging up",
"正在说话...": "Talking now...",
"设备不在线": "The device is not online",
"设备未配网": "The device is not connected to the network",
"已静音": "The sound has been turned off",
"该锁的远程开锁功能未启用": "The remote unlocking function of this lock is not enabled",
"下载完成,请到相册查看": "Download completed, please go to the album to view",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "When Cat Eye is set to power-saving mode, monitoring cannot be performed. Please switch to other modes in Cat Eye settings",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Remote unlocking is not possible when Cat Eye is set to power-saving mode. Please switch to another mode in Cat Eye settings",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "After reset, the remote control of the lock will be deleted. Do you want to reset it?",
"版本说明": "Version description",
"呼叫目标": "Call target",
"管理员APP": "Administrator APP",
"可视门铃码": "Visual doorbell code",
"电子反锁": "Electronic anti lock",
"双重认证": "Two-factor authentication",
"双锁联动": "Double lock linkage",
"1.用智能锁APP添加锁和网关": "1. Add locks and gateways using the smart lock app",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Enable the remote unlocking function of the lock in the APP (this function is turned off by default). If this option is not available, the lock will not support Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Install the Google Home app and click the plus button in the upper left corner",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes",
"一键登录": "One-click login"
"暂无最新记录": "There are currently no latest records available",
"请将手机切换至2.4G WiFi进行手动连接": "Please switch your phone to 2.4G WiFi for manual connection",
"请确保网络是2.4GHz Wi-Fi": "Please ensure that the network is 2.4GHz Wi Fi",
"是否要远程开锁": "Do you want to unlock remotely",
"国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice",
"请确认后再继续": "Please confirm before continuing",
"需要相机权限": "Camera permission required",
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "The activation and deactivation of this feature can only be done through Bluetooth on the phone near the lock",
"网关添加成功": "Gateway added successfully"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminarán las venas metacarpiales de la cerradura. ¿Está seguro de que desea restablecer?",
"在线": "En línea",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Después de restablecer, se eliminarán las huellas dactilares del bloqueo. ¿Está seguro de que desea restablecerlo?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminará el control remoto de la cerradura. ¿Quieres resetearlo?",
"版本说明": "Instrucciones de versión",
"一键登录": "Inicio de sesión con un solo clic"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos. Haga clic en Siguiente cuando la luz indicadora azul parpadee",
"网关添加成功": "Gateway añadido con éxito",
"功能开启后,你将可以通过网关远程开锁。": "Después de que la función está habilitada, usted será capaz de desbloquear remotamente a través de la puerta de enlace.",
"录屏已保存到相册": "Archivo de grabación de pantalla guardado al álbum",
"通话未接通,已挂断": "Llamada no conectada, colgado",
"通话异常中断": "Interrupción anormal de la llamada",
"通话连接失败": "Fallo en la conexión de la llamada",
"已挂断": "Colgando arriba",
"正在说话...": "Hablando ahora...",
"设备不在线": "El dispositivo no está conectado",
"设备未配网": "El dispositivo no está conectado a la red",
"已静音": "El sonido ha sido apagado",
"该锁的远程开锁功能未启用": "La función de desbloqueo remoto de este bloqueo no está habilitada",
"下载完成,请到相册查看": "Descargar completado, por favor vaya al álbum para ver",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cuando Cat Eye está configurado en modo de ahorro de energía, no se puede realizar la monitorización. Cambie a otros modos en la configuración de ojo gato",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "El desbloqueo remoto no es posible cuando Cat Eye está en modo de ahorro de energía. Cambie a otro modo en la configuración de ojos de gato",
"呼叫目标": "Objetivo de la llamada",
"管理员APP": "Aplicación de administrador",
"可视门铃码": "Código de timbre Visual de la puerta",
"电子反锁": "Antibloqueo electrónico",
"双重认证": "Autenticación de dos factores",
"双锁联动": "Doble cierre",
"1.用智能锁APP添加锁和网关": "1. Agregue bloqueos y puertas de enlace con la aplicación smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Habilitar la función de desbloqueo remoto del bloqueo en la aplicación (esta función se desactiva por defecto). Si esta opción no está disponible, el bloqueo no será compatible con Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Instale la aplicación de Google Home y haga clic en el botón más en la esquina superior izquierda",
"暂无最新记录": "Actualmente no hay registros más recientes disponibles",
"请将手机切换至2.4G WiFi进行手动连接": "Por favor cambia tu teléfono a 2.4G WiFi para la conexión manual"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku metakarpaalveenid. Kas tõesti soovid lähtestada?",
"在线": "Võrgus",
"离线": "Mitte ühendust",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku sõrmejäljed. Kas tõesti soovid see lähtestada?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku kaugjuhtimine. Kas sa tahad seda lähtestada?",
"版本说明": "Versiooniteave",
"一键登录": "Üheklõpsu sisselogimine"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage nuppu ja hoidke nuppu 5 sekundit. Klõpsa Järgmine, kui sinine indikaator valgus vilgub",
"网关添加成功": "Gateway lisati edukalt",
"功能开启后,你将可以通过网关远程开锁。": "Pärast funktsiooni lubamist saate lüüsi kaudu kaugavada.",
"录屏已保存到相册": "Albumisse salvestatud ekraanisalvestusfail",
"通话未接通,已挂断": "Kõne ei ole ühendatud, katkestatakse",
"通话异常中断": "Ebatavaline kõnekatkestus",
"通话连接失败": "Kõne ühendamine ebaõnnestus",
"已挂断": "Riputamine",
"正在说话...": "Räägin nüüd...",
"设备不在线": "Seade pole võrgus",
"设备未配网": "Seade pole võrku ühendatud",
"已静音": "Heli on välja lülitatud",
"该锁的远程开锁功能未启用": "Selle luku kaugavamise funktsioon pole lubatud",
"下载完成,请到相册查看": "Allalaadimine on lõpetatud, vaatamiseks minge albumisse",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kui Cat Eye on seatud energiasäästurežiimile, ei saa jälgimist teostada. Palun lülituge Cat Eye seadetes muudele režiimidele",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Kaugavamine ei ole võimalik, kui Cat Eye on seatud energiasäästurežiimile. Palun lülituge Cat Eye seadetes teisele režiimile",
"呼叫目标": "Kõne sihtmärk",
"管理员APP": "Administraatori rakendus",
"可视门铃码": "Visuaalne uksekella kood",
"电子反锁": "Elektrooniline mitteblokeeruv",
"双重认证": "Kahefaktoriline autentimine",
"双锁联动": "Kahekordne lukustusühendus",
"1.用智能锁APP添加锁和网关": "1. Lisage lukke ja lüüse nutiluku rakenduse abil",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Lubage rakenduses APP luku kaugavamise funktsioon (see funktsioon on vaikimisi välja lülitatud). Kui see valik pole saadaval, ei toeta lukk Google Home'i",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installige rakendus Google Home ja klõpsake vasakus ülanurgas plussnuppu",
"暂无最新记录": "Praegu pole uusimaid andmeid saadaval",
"请将手机切换至2.4G WiFi进行手动连接": "Käsitsi ühendamiseks lülitage telefon 2.4G WiFi-le"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Kun lukko on nollattu, metakarppinen suoneet poistetaan. Haluatko varmasti palauttaa?",
"在线": "Verkossa",
"离线": "Offline-verkosto",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Lukon sormenjäljet poistetaan. Haluatko varmasti nollataa sen?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nollauksen jälkeen lukon kaukosäädin poistetaan. Haluatko palauttaa sen?",
"版本说明": "Versio",
"一键登录": "Yhden napsautuksen kirjautuminen"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä nollauspainiketta 5 sekunnin ajan. Napsauta Seuraava kun sininen ilmaisin valo vilkkuu",
"网关添加成功": "Gateway lisättiin onnistuneesti",
"功能开启后,你将可以通过网关远程开锁。": "Kun toiminto on otettu käyttöön, voit avata lukituksen etänä yhdyskäytävän kautta.",
"录屏已保存到相册": "Näytön tallennustiedosto tallennettu albumiin",
"通话未接通,已挂断": "Puhelua ei ole yhdistetty, katkaistu puhelu",
"通话异常中断": "Epänormaali puhelun keskeytys",
"通话连接失败": "Puheluyhteys epäonnistui",
"已挂断": "Puhelun katkaiseminen",
"正在说话...": "Puhutaan nyt...",
"设备不在线": "Laite ei ole online-tilassa",
"设备未配网": "Laitetta ei ole yhdistetty verkkoon",
"已静音": "Ääni on kytketty pois päältä",
"该锁的远程开锁功能未启用": "Tämän lukon etälukituksen avaustoiminto ei ole käytössä",
"下载完成,请到相册查看": "Lataus valmis, siirry albumiin nähdäksesi",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kun Cat Eye on asetettu virransäästötilaan, valvontaa ei voi suorittaa. Vaihda muihin tiloihin Cat Eye -asetuksissa",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lukituksen avaaminen ei ole mahdollista, kun Cat Eye on asetettu virransäästötilaan. Vaihda toiseen tilaan Cat Eye -asetuksissa",
"呼叫目标": "Puhelun kohde",
"管理员APP": "Järjestelmänvalvojan APP",
"可视门铃码": "Visuaalinen ovikellon koodi",
"电子反锁": "Elektroninen lukkiutumaton",
"双重认证": "Kaksivaiheinen todennus",
"双锁联动": "Kaksinkertainen lukitus",
"1.用智能锁APP添加锁和网关": "1. Lisää lukkoja ja yhdyskäytäviä älylukkosovelluksella",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Ota lukon etälukituksen avaustoiminto käyttöön APP:ssa (tämä toiminto on oletuksena pois päältä). Jos tämä vaihtoehto ei ole käytettävissä, lukko ei tue Google Homea",
"3.安装Google Home APP点击左上角的加号按钮": "3. Asenna Google Home -sovellus ja napsauta vasemmassa yläkulmassa olevaa pluspainiketta",
"暂无最新记录": "Viimeisimpiä tietoja ei ole tällä hetkellä saatavilla",
"请将手机切换至2.4G WiFi进行手动连接": "Vaihda puhelimesi 2.4G WiFi-verkkoon manuaalista yhteyttä varten"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Après réinitialisation, les veines métacarpiennes de la serrure seront supprimées. Êtes-vous sûr de vouloir réinitialiser?",
"在线": "En ligne",
"离线": "Hors ligne",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Après réinitialisation, les empreintes digitales de la serrure seront supprimées. Êtes-vous sûr de vouloir le réinitialiser?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Après réinitialisation, la télécommande du verrou sera supprimée. Voulez-vous le réinitialiser?",
"版本说明": "Explication de la version",
"一键登录": "Connexion en un clic"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Après la mise sous tension de la passerelle, appuyez sur le bouton de réinitialisation et maintenez-le enfoncé pendant 5 secondes. Cliquez sur Suivant lorsque le voyant bleu clignote",
"网关添加成功": "Gateway ajouté avec succès",
"功能开启后,你将可以通过网关远程开锁。": "Une fois la fonction activée, vous pourrez déverrouiller à distance via la passerelle.",
"录屏已保存到相册": "Fichier denregistrement décran enregistré dans lalbum",
"通话未接通,已挂断": "Appel non connecté, raccroché",
"通话异常中断": "Interruption anormale dun appel",
"通话连接失败": "La connexion dappel a échoué",
"已挂断": "Raccrocher en haut",
"正在说话...": "On parle maintenant...",
"设备不在线": "Lappareil nest pas en ligne",
"设备未配网": "Lappareil nest pas connecté au réseau",
"已静音": "Le son a été éteint",
"该锁的远程开锁功能未启用": "La fonction de déverrouillage à distance de ce verrou nest pas activée",
"下载完成,请到相册查看": "Téléchargement terminé, sil vous plaît aller à lalbum pour voir",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Lorsque loeil de chat est réglé en mode économie dénergie, la surveillance ne peut pas être effectuée. Sil vous plaît passer à dautres modes dans les paramètres de loeil de chat",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Le déverrouillage à distance nest pas possible lorsque loeil de chat est réglé sur le mode déconomie dénergie. Veuillez passer à un autre mode dans les paramètres des yeux de chat",
"呼叫目标": "Cible dappel",
"管理员APP": "Application administrateur",
"可视门铃码": "Code visuel de sonnette",
"电子反锁": "Anti serrure électronique",
"双重认证": "Authentification à deux facteurs",
"双锁联动": "Double liaison de serrure",
"1.用智能锁APP添加锁和网关": "1. Ajoutez des serrures et des passerelles à laide de lapplication smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Activez la fonction de déverrouillage à distance de la serrure dans lapplication (cette fonction est désactivée par défaut). Si cette option nest pas disponible, le verrou ne prendra pas en charge Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installez lapplication Google Home et cliquez sur le bouton plus dans le coin supérieur gauche",
"暂无最新记录": "Il ny a actuellement aucun dernier enregistrement disponible",
"请将手机切换至2.4G WiFi进行手动连接": "Veuillez passer votre téléphone à 2.4G WiFi pour une connexion manuelle"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "לאחר איפוס, הורידים של המנעול יימחקו. אתה בטוח שברצונך לאפס?",
"在线": "באינטרנט",
"离线": "מנותק",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "לאחר איפוס, טביעות האצבעות של המנעול יימחקו. אתה בטוח שברצונך לאפס את זה?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "לאחר איפוס, השליטה מרחוק של המנעול יימחק. אתה רוצה לאפס את זה?",
"版本说明": "המידע על גרסה",
"一键登录": "התחברות בלחיצה אחת"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "לאחר שהשער מופעל, לחץ והחזק את כפתור האיפוס למשך 5 שניות. לחץ על הבא כאשר האור מחוון כחול מהבהב",
"网关添加成功": "שער הוסיף בהצלחה",
"功能开启后,你将可以通过网关远程开锁。": "לאחר הפעלת הפונקציה, תוכל לבטל מרחוק את הנעילה דרך השער。",
"录屏已保存到相册": "קובץ הקלטת מסך שנשמר באלבום",
"通话未接通,已挂断": "השיחה לא מחוברת, ניתקה",
"通话异常中断": "הפרעה חריגה לשיחה",
"通话连接失败": "חיבור השיחה נכשל",
"已挂断": "ניתוקים",
"正在说话...": "מדברים עכשיו...",
"设备不在线": "המכשיר אינו מקוון",
"设备未配网": "ההתקן אינו מחובר לרשת",
"已静音": "הצליל כבה",
"该锁的远程开锁功能未启用": "פונקציית ביטול הנעילה מרחוק של מנעול זה אינה מופעלת",
"下载完成,请到相册查看": "ההורדה הושלמה, אנא עבור לאלבום לצפייה",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "כאשר Cat Eye מוגדר למצב חיסכון בחשמל, לא ניתן לבצע ניטור. עבור למצבים אחרים בהגדרות Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ביטול נעילה מרחוק אינו אפשרי כאשר Cat Eye מוגדר למצב חיסכון בחשמל. עבור למצב אחר בהגדרות Cat Eye",
"呼叫目标": "יעד שיחה",
"管理员APP": "יישום מנהל מערכת",
"可视门铃码": "קוד פעמון דלת חזותי",
"电子反锁": "אנטי לוק אלקטרוני",
"双重认证": "אימות דו-שלבי",
"双锁联动": "הצמדת נעילה כפולה",
"1.用智能锁APP添加锁和网关": "1. הוסיפו מנעולים ושערים באמצעות אפליקציית Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. הפעל את פונקציית ביטול הנעילה מרחוק של המנעול באפליקציה (פונקציה זו כבויה כברירת מחדל). אם אפשרות זו אינה זמינה, המנעול לא יתמוך ב-Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. התקן את אפליקציית Google Home ולחץ על כפתור הפלוס בפינה השמאלית העליונה",
"暂无最新记录": "אין כרגע רשומות עדכניות זמינות",
"请将手机切换至2.4G WiFi进行手动连接": "אנא העבר את הטלפון שלך ל- WiFi 2.4G לחיבור ידני"
}

1155
lan/lan_hi.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
{
"星锁": "星鎖",
"锁通通": "鎖定直通",
"点击开锁,长按闭锁": "掂解鎖,按住鎖定",
"星锁": "星鎖",
"锁通通": "鎖通",
"点击开锁,长按闭锁": "點擊開鎖,長按閉鎖",
"考勤": "出席",
"考勤设置": "考勤設置",
"电子钥匙": "eKey",
"电子钥匙": "電子鑰匙",
"添加卡": "添加卡",
"卡号": "卡號",
"添加指纹": "添加指紋",
@ -152,7 +152,7 @@
"升级": "更新",
"空闲": "空置",
"已入住": "佔領",
"多语言": "語言",
"多语言": "語言",
"添加锁": "添加鎖",
"锁地址": "鎖定地址",
"选择锁类型": "選擇鎖類型",
@ -173,9 +173,9 @@
"接收人信息": "收件人",
"转移网关": "傳輸網關",
"锁屏": "屏幕鎖定",
"已关闭": "關閉",
"已开启": "",
"开启": "開",
"已关闭": "關閉",
"已开启": "已開啟",
"开启": "開",
"确定要开启重置键?": "繼續啟用Reset掣",
"确定要关闭重置键?": "繼續禁用Reset掣",
"隐藏无效开锁权限": "隱藏無效訪問權限",
@ -185,7 +185,7 @@
"退出": "註銷",
"删除账号": "刪除帳戶",
"个人信息": "賬戶信息",
"头像": "化身",
"头像": "頭像",
"昵称": "暱稱",
"请输入昵称": "請輸入您的暱稱",
"修改昵称": "重命名",
@ -373,7 +373,7 @@
"未打卡": "暫無記錄",
"钥匙将在": "此ekey將在",
"天后失效": "天",
"电量更新时间:": "電更新時間:",
"电量更新时间:": "電更新時間:",
"新增配件": "加",
"钥匙不可用": "密鑰不可用",
"正在开锁中...": "解鎖。。。",
@ -505,7 +505,7 @@
"您的钥匙已过期": "您的密鑰已過期",
"常开模式开启": "鎖處於Passage Mode",
"超级管理员": "超級管理員",
"授权管理员": "設為admin",
"授权管理员": "授權管理員",
"普通用户": "普通用戶",
"余": "平衡",
"天": "日",
@ -603,7 +603,7 @@
"开门方式": "開門方法",
"请选择": "請選擇",
"家人": "家人",
"保存": "",
"保存": "保存",
"APP推送": "APP推送",
"管理员": "管理",
"未启用": "未啟用",
@ -718,7 +718,7 @@
"钥匙无效": "密鑰無效",
"操作失败,请确认锁是否在附近,或重启手机蓝牙后再试。": "無法連接到鎖。請重新啟動手機嘅Blutooth並重試。",
"如果是全自动锁,请使屏幕变亮": "如果係全自動鎖,請讓屏幕更光",
"正在尝试闭锁……": "嘗試鎖定。 請稍候。。。",
"正在尝试闭锁……": "正在嘗試閉鎖……",
"清空记录": "清除記錄",
"是否要删除操作记录?": "繼續刪除記錄?",
"被删除的记录不能恢复": "刪除後無法恢復記錄。",
@ -815,7 +815,7 @@
"配置网络": "配置網絡",
"你好": "你好",
"成功": "成功的",
"类型选择": "鍵入select",
"类型选择": "類型選擇",
"请选择要使用哪种类型": "請選擇要使用的類型",
"系统邮件(推荐)": "系統電子郵件(推薦)",
"系统短信(推荐)": "系統短信(推薦)",
@ -1042,42 +1042,47 @@
"导出锁数据": "導出鎖定數據",
"一键开锁": "一鍵解鎖",
"已开通": "打開",
"英文": "英文",
"简体中文": "簡體中文",
"英文": "English",
"英文": "English",
"简体中文": "简体中文",
"繁体中文": "繁體中文",
"法语": "法文",
"法语": "Français",
"俄语": "Русский",
"德语": "德文",
"德语": "Deutsch",
"日语": "日本語",
"韩语": "한국어",
"意大利语": "Italiano",
"乌克兰语": "Українська",
"葡萄牙语": "Português",
"西班牙语": "西班牙人",
"西班牙语": "Español",
"阿拉伯语": "العربية",
"越南语": "Tiếng Việt",
"马来语": "馬來文",
"荷兰语": "荷蘭",
"罗马尼亚语": "羅曼",
"马来语": "Bahasa Melayu",
"荷兰语": "Nederlands",
"罗马尼亚语": "Română",
"立陶宛语": "Lietuvių",
"瑞典语": "斯文斯卡",
"爱沙尼亚语": "埃斯蒂",
"波兰语": "波蘭",
"斯洛伐克语": "斯洛文尼亞",
"瑞典语": "Svenska",
"爱沙尼亚语": "Eesti",
"波兰语": "Polski",
"斯洛伐克语": "Slovenčina",
"捷克语": "Čeština",
"希腊语": "Ελληνικά",
"希伯来语": "עברית",
"塞尔维亚语": "Српски",
"土耳其语": "Türkçe",
"匈牙利语": "匈牙利嘅",
"匈牙利语": "Magyar",
"保加利亚语": "Български",
"哈萨克斯坦语": "Қазақ",
"孟加拉语": "বাংলা",
"克罗地亚语": "赫尔瓦茨基",
"克罗地亚语": "Hrvatski",
"泰语": "ไทย",
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "索米",
"丹麦语": "丹斯克",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 你確定要重置啊?",
"在线": "在線",
"离线": "離線",
@ -1100,8 +1105,8 @@
"英语": "英文",
"Google Home操作流程的值": "1.使用智能鎖APP添加鎖和網關\n\n2.喺APP中開啟鎖嘅遠程解鎖功能此功能默認關閉。 如果冇此選項鎖唔撐Google Home\n\n3.安裝Google Home APP點擊左上角嘅“+”按鈕\n\n4.在“設置”頁面上選擇“與Google合作”\n\n5.搜索“ScienerSmart”使用智能鎖APP賬號和密碼進行授權",
"密码需至少包含数字/字母/字符中的2种组合": "密碼必須至少包含以下2個數字、字母同特殊字符",
"已开锁": "鎖",
"已闭锁": "鎖",
"已开锁": "已開鎖",
"已闭锁": "已閉鎖",
"两次密码不一致哦": "密碼不一緻",
"中功率": "中等功率",
"常规使用": "經常使用",
@ -1121,5 +1126,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置之後,鎖嘅指紋將被刪除。 你確定要重置它啊?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置之後,鎖嘅遙控器將被刪除。 是否要重置它?",
"版本说明": "版本說明",
"一键登录": "一键登录"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "網關上電之後長按重置掣5秒鐘。 單擊藍色指示燈閃爍時嘅下一步",
"网关添加成功": "已成功添加網關",
"功能开启后,你将可以通过网关远程开锁。": "啟用該功能之後,你將能夠透過網關遠程解鎖。",
"录屏已保存到相册": "保存到相冊嘅屏幕錄製文件",
"通话未接通,已挂断": "呼叫未接通,掛斷",
"通话异常中断": "異常通話中斷",
"通话连接失败": "呼叫連接失敗",
"已挂断": "收線",
"正在说话...": "現在正在談論...",
"设备不在线": "設備未聯機",
"设备未配网": "設備未連接到網絡",
"已静音": "聲音已關閉",
"该锁的远程开锁功能未启用": "此鎖嘅遠程解鎖功能未啟用",
"下载完成,请到相册查看": "下載完成,請至相冊查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "当Cat Eye設置為省電模式時無法執行監控。 請喺Cat Eye設置中切換到其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "当Cat Eye設置為省電模式時無法遠程解鎖。 請喺Cat Eye設置中切換到其他模式",
"呼叫目标": "呼叫目標",
"管理员APP": "管理員APP",
"可视门铃码": "可視門鈴密碼",
"电子反锁": "電子防抱死",
"双重认证": "雙重認證",
"双锁联动": "雙鎖聯動",
"1.用智能锁APP添加锁和网关": "1.使用智能鎖應用程序添加鎖和網關",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2.喺APP中開啟鎖嘅遠程解鎖功能此功能默認關閉。 如果此選項不可用則鎖將唔撐Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3.安裝Google Home應用點擊左上角嘅加號掣",
"暂无最新记录": "目前冇可用嘅最新記錄",
"请将手机切换至2.4G WiFi进行手动连接": "請把手機切換到2.4G WiFi進行手動連接"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Nakon resetiranja, metakarpalne vene brave će biti izbrisane. Jeste li sigurni da želite resetiranje?",
"在线": "Na internetu",
"离线": "Odspojeno",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nakon resetovanja, otisci brave će biti izbrisani. Jeste li sigurni da ga želite resetirati?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nakon resetovanja, daljinski upravljač brave će biti izbrisan. Hoæeš da ga resetuješ?",
"版本说明": "Informacije o verziji",
"一键登录": "Prijavljivanje jednog klika"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nakon što se uključi prolaz, pritisnite i zadržite dugme za reset 5 sekundi. Kliknite slijedeći kada svjetlo plavog indikatora bljeska",
"网关添加成功": "Gateway je uspješno dodano",
"功能开启后,你将可以通过网关远程开锁。": "Nakon što je funkcija omogućena, moći ćete daljinski otključati putem pristupnika.",
"录屏已保存到相册": "Datoteka snimanja zaslona spremljena u album",
"通话未接通,已挂断": "Poziv nije povezan, prekinuo vezu",
"通话异常中断": "Nenormalan prekid poziva",
"通话连接失败": "Veza poziva nije uspjela",
"已挂断": "Spuštanje slušalice",
"正在说话...": "Razgovaram sada...",
"设备不在线": "Uređaj nije na mreži",
"设备未配网": "Uređaj nije spojen na mrežu",
"已静音": "Zvuk je isključen",
"该锁的远程开锁功能未启用": "Funkcija daljinskog otključavanja ove brave nije omogućena",
"下载完成,请到相册查看": "Preuzimanje je završeno, idite na album za pregled",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kada je Cat Eye postavljen na način rada za uštedu energije, nadzor se ne može izvršiti. Prebacite se na druge načine rada u postavkama Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Daljinsko otključavanje nije moguće kada je Cat Eye postavljen na način rada za uštedu energije. Prebacite se na drugi način rada u postavkama Cat Eye",
"呼叫目标": "Cilj poziva",
"管理员APP": "Administratorska aplikacija",
"可视门铃码": "Vizualni kod zvona na vratima",
"电子反锁": "Elektronička zaštita od blokiranja",
"双重认证": "Dvofaktorska autentifikacija",
"双锁联动": "Dvostruka brava",
"1.用智能锁APP添加锁和网关": "1. Dodajte brave i pristupnike pomoću aplikacije pametne brave",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Omogućite funkciju daljinskog otključavanja brave u APP-u (ova je funkcija prema zadanim postavkama isključena). Ako ova opcija nije dostupna, zaključavanje neće podržavati Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Instalirajte aplikaciju Google Home i kliknite gumb plus u gornjem lijevom kutu",
"暂无最新记录": "Trenutno nema dostupnih najnovijih podataka",
"请将手机切换至2.4G WiFi进行手动连接": "Prebacite telefon na 2.4G WiFi za ručno povezivanje"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "A reset után a zár metakarpális erei törlődnek. Biztos vagy benne, hogy vissza akarsz állítani?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "A reset után a zár ujjlenyomatai törlődnek. Biztos vagy benne, hogy vissza szeretné állítani?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "A reset után a zár távirányítója törlődik. Szeretné visszaállítani?",
"版本说明": "Versió leírás",
"一键登录": "Egykattintásos bejelentkezés"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Az átjáró bekapcsolása után 5 másodpercig nyomja meg a reset gombot. Kattintson a következő gombra, amikor a kék jelző fény villog",
"网关添加成功": "Átjáró sikeresen hozzáadott",
"功能开启后,你将可以通过网关远程开锁。": "A funkció engedélyezése után távolról feloldhatja a zárolást az átjárón keresztül.",
"录屏已保存到相册": "Képernyőfelvételi fájl mentése az albumba",
"通话未接通,已挂断": "A hívás nincs csatlakoztatva, letette a telefont",
"通话异常中断": "Rendellenes hívásmegszakítás",
"通话连接失败": "A híváskapcsolat sikertelen",
"已挂断": "Leteszi a telefont",
"正在说话...": "Most beszélgetünk...",
"设备不在线": "A készülék nincs online",
"设备未配网": "A készülék nincs csatlakoztatva a hálózathoz",
"已静音": "A hang ki van kapcsolva",
"该锁的远程开锁功能未启用": "Ennek a zárnak a távoli feloldási funkciója nincs engedélyezve",
"下载完成,请到相册查看": "A letöltés befejeződött, kérjük, menjen az albumra a megtekintéshez",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Ha a Cat Eye energiatakarékos üzemmódba van állítva, a felügyelet nem végezhető el. Kérjük, váltson más módokra a Cat Eye beállításaiban",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "A távoli feloldás nem lehetséges, ha a Cat Eye energiatakarékos üzemmódba van állítva. Kérjük, váltson másik módra a Cat Eye beállításaiban",
"呼叫目标": "Hívás cél",
"管理员APP": "Rendszergazdai alkalmazás",
"可视门铃码": "Vizuális csengő kód",
"电子反锁": "Elektronikus blokkolásgátló",
"双重认证": "Kétfaktoros hitelesítés",
"双锁联动": "Dupla reteszelő rudazat",
"1.用智能锁APP添加锁和网关": "1. Adjon hozzá zárakat és átjárókat az intelligens zár alkalmazással",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Engedélyezze a zár távoli feloldási funkcióját az APP-ban (ez a funkció alapértelmezés szerint ki van kapcsolva). Ha ez az opció nem érhető el, a zár nem támogatja a Google Home szolgáltatást",
"3.安装Google Home APP点击左上角的加号按钮": "3. Telepítse a Google Home alkalmazást, és kattintson a plusz gombra a bal felső sarokban",
"暂无最新记录": "Jelenleg nem állnak rendelkezésre legfrissebb rekordok",
"请将手机切换至2.4G WiFi进行手动连接": "Kérjük, kapcsolja át telefonját 2.4G WiFi-re a kézi csatlakozáshoz"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Setelah mengulang, pembuluh darah metakarpal dari kunci akan dihapus. Yakin ingin mengatur ulang?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Setelah mengulang, sidik jari kunci akan dihapus. Yakin ingin meresetnya?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Setelah reset, remote control kunci akan dihapus. Ingin mengatur ulang?",
"版本说明": "Catatan versi",
"一键登录": "Masuk satu klik"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Setelah gateway dinyalakan, tekan dan tahan tombol Atur ulang selama 5 detik. Klik berikutnya ketika lampu indikator biru berkedip",
"网关添加成功": "Gateway berhasil ditambahkan",
"功能开启后,你将可以通过网关远程开锁。": "Setelah fungsi diaktifkan, anda akan dapat membuka dari jarak jauh melalui gateway.",
"录屏已保存到相册": "Rekaman layar disimpan ke album",
"通话未接通,已挂断": "Panggilan tidak terhubung, ditutup",
"通话异常中断": "Interupsi panggilan Abnormal",
"通话连接失败": "Koneksi panggilan gagal",
"已挂断": "Tutup teleponnya",
"正在说话...": "Berbicara sekarang …",
"设备不在线": "Perangkat ini tidak online",
"设备未配网": "Alat ini tidak terhubung ke jaringan",
"已静音": "Suara telah dimatikan",
"该锁的远程开锁功能未启用": "Fungsi unlocking jarak jauh dari kunci ini tidak diaktifkan",
"下载完成,请到相册查看": "Download selesai, silakan pergi ke album untuk melihat",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Jika mata kucing disetel ke mode penyimpanan daya, pemantauan tidak dapat dilakukan. Silakan beralih ke mode lain di pengaturan mata kucing",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Membuka kunci jarak jauh tidak mungkin jika mata kucing diatur untuk mode menghemat daya. Silakan beralih ke mode lain di pengaturan mata kucing",
"呼叫目标": "Hubungi target.",
"管理员APP": "Aplikasi Administrator",
"可视门铃码": "Kode bel Visual",
"电子反锁": "Anti elektronik",
"双重认证": "Dua faktor otentikasi",
"双锁联动": "Kunci ganda hubungan",
"1.用智能锁APP添加锁和网关": "1. Tambahkan kunci dan gerbang menggunakan aplikasi smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Aktifkan fungsi kunci pengunci jarak jauh di aplikasi (fungsi ini dimatikan secara standar). Jika opsi ini tidak tersedia, kunci tidak akan mendukung Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Instal aplikasi Google Home dan klik tombol plus di sudut kiri atas",
"暂无最新记录": "Saat ini tidak ada catatan terbaru yang tersedia",
"请将手机切换至2.4G WiFi进行手动连接": "Silahkan beralih ke 2.4G WiFi untuk koneksi manual"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Dopo il reset, le vene metacarpali della serratura verranno cancellate. Sei sicuro di voler reimpostare?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Dopo il reset, le impronte digitali del lucchetto verranno cancellate. Sei sicuro di volerlo resettare?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Dopo il reset, il telecomando del lucchetto verrà eliminato. Vuoi resettarlo?",
"版本说明": "Versione",
"一键登录": "Accesso con un clic"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Dopo che il gateway è acceso, premere e tenere premuto il pulsante di reset per 5 secondi. Fai clic su Avanti quando la spia blu lampeggia",
"网关添加成功": "Gateway aggiunto correttamente",
"功能开启后,你将可以通过网关远程开锁。": "Dopo che la funzione è abilitata, sarà possibile sbloccare a distanza attraverso il gateway.",
"录屏已保存到相册": "File di registrazione dello schermo salvato nell album",
"通话未接通,已挂断": "Chiamata non connessa, sospesa",
"通话异常中断": "Interruzione anormale di chiamata",
"通话连接失败": "Connessione chiamata fallita",
"已挂断": "In sospeso",
"正在说话...": "Parlando ora...",
"设备不在线": "Il dispositivo non è in linea",
"设备未配网": "Il dispositivo non è connesso alla rete",
"已静音": "Il suono è stato spento",
"该锁的远程开锁功能未启用": "La funzione di sblocco remoto di questa serratura non è abilitata",
"下载完成,请到相册查看": "Scaricamento completato, vai all album da visualizzare",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Quando locchio gatto è impostato alla modalità risparmio energetico, il monitoraggio non può essere effettuato. Passa ad altre modalità nelle impostazioni degli occhi di gatto",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Lo sblocco a distanza non è possibile quando locchio gatto è impostato alla modalità risparmio energetico. Passa a unaltra modalità nelle impostazioni degli occhi di gatto",
"呼叫目标": "Obiettivo chiamata",
"管理员APP": "Applicazione amministratore",
"可视门铃码": "Codice campanella visiva",
"电子反锁": "Antibloccaggio elettronico",
"双重认证": "Autenticazione a due fattori",
"双锁联动": "Collegamento a doppio bloccaggio",
"1.用智能锁APP添加锁和网关": "1. Aggiunge serrature e gateway usando lapplicazione smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Abilita la funzione di sblocco remoto del lock nella APP (questa funzione è disattivata in modo predefinito). Se questa opzione non è disponibile, il lock non supporta Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installa lapplicazione Home di Google e fai clic sul pulsante più nellangolo in alto a sinistra",
"暂无最新记录": "Attualmente non sono disponibili dati più recenti",
"请将手机切换至2.4G WiFi进行手动连接": "Passa il telefono a 2,4g WiFi per la connessione manuale"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "リセット後、ロックの中手骨静脈が削除されます。リセットしてもよろしいですか。",
"在线": "オンライン",
"离线": "オフライン",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "リセット後、ロックの指紋は削除されます。リセットしてもよろしいですか。",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "リセット後、ロックのリモコンが削除されます。リセットしますか?",
"版本说明": "バージョン説明",
"一键登录": "ワンクリックログイン"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続けます。青いインジケータライトが点滅したら、 [Next] をクリックします",
"网关添加成功": "ゲートウェイの追加に成功",
"功能开启后,你将可以通过网关远程开锁。": "この機能を有効にすると、ゲートウェイからリモートでロックを解除できるようになります。",
"录屏已保存到相册": "アルバムに保存された画面録画ファイル",
"通话未接通,已挂断": "接続されていない電話を切った",
"通话异常中断": "異常電話中断",
"通话连接失败": "電話接続ができなかった。",
"已挂断": "切る",
"正在说话...": "今話して…",
"设备不在线": "デバイスはオンラインではありません",
"设备未配网": "デバイスがネットワークに接続されていません",
"已静音": "音が消えています",
"该锁的远程开锁功能未启用": "このロックのリモートロック解除機能は有効になっていません",
"下载完成,请到相册查看": "ダウンロードが完了しましたので、アルバムでご覧ください",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "cat eyeが省電力モードに設定されている場合、監視はできません。cat eye設定で他のモードに切り替えてください",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "cat eyeが省電力モードに設定されている場合、リモートロック解除はできません。cat eye設定で別のモードに切り替えてください",
"呼叫目标": "通話ターゲットの",
"管理员APP": "管理者アプリ",
"可视门铃码": "視覚チャイムコード",
"电子反锁": "電子反ロック",
"双重认证": "2ファクタ認証",
"双锁联动": "二重ロック連動",
"1.用智能锁APP添加锁和网关": "1. スマートロックappを使用してロックとゲートウェイを追加します",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. アプリでロックのリモートロック解除機能を有効にします(この機能はデフォルトでオフになっています)。このオプションが利用できない場合、ロックはgoogle homeをサポートしません",
"3.安装Google Home APP点击左上角的加号按钮": "3. google homeアプリをインストールし、左上隅のプラスボタンをクリックします",
"暂无最新记录": "最新の記録は残っていない",
"请将手机切换至2.4G WiFi进行手动连接": "手動接続のため、携帯電話を2.4 g wifiに切り替えてください"
}

View File

@ -62,6 +62,7 @@
"批量授权锁": "批量授权锁",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
"排列方式": "排列方式",
"早到榜": "早到榜",
"迟到榜": "迟到榜",
@ -1012,6 +1013,7 @@
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
"接听": "接听",
"截图已保存到相册": "截图已保存到相册",
"录屏已保存到相册": "录屏已保存到相册",
"添加遥控": "添加遥控",
"已连接到锁,请按遥控": "已连接到锁,请按遥控",
"遥控号": "遥控号",
@ -1079,6 +1081,10 @@
"印度尼西亚语": "印度尼西亚语",
"芬兰语": "芬兰语",
"丹麦语": "丹麦语",
"印地语": "印地语",
"乌尔都语": "乌尔都语",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
"在线": "在线",
"离线": "离线",
@ -1120,7 +1126,41 @@
"分简称": "分简称",
"跟随系统": "跟随系统",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
"通话未接通,已挂断": "通话未接通,已挂断",
"通话异常中断": "通话异常中断",
"通话连接失败": "通话连接失败",
"已挂断": "已挂断",
"正在说话...": "正在说话...",
"设备不在线": "设备不在线",
"设备未配网": "设备未配网",
"已静音": "已静音",
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
"下载完成,请到相册查看": "下载完成,请到相册查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
"版本说明": "版本说明",
"一键登录": "一键登录"
"呼叫目标": "呼叫目标",
"管理员APP": "管理员APP",
"可视门铃码": "可视门铃码",
"电子反锁": "电子反锁",
"双重认证": "双重认证",
"双锁联动": "双锁联动",
"1.用智能锁APP添加锁和网关": "1.用智能锁APP添加锁和网关",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3.安装Google Home APP点击左上角的加号按钮",
"4.在设置页面选择与Google协同工作": "4.在设置页面选择与Google协同工作",
"5.搜索": "5.搜索",
"并用智能锁APP的账号和密码进行授权": "并用智能锁APP的账号和密码进行授权",
"暂无最新记录": "暂无最新记录",
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
"请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi",
"已选": "已选",
"是否要远程开锁": "是否要远程开锁",
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
"请确认后再继续": "请确认后再继续",
"需要相机权限": "需要相机权限",
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
"网关添加成功": "网关添加成功"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Қайта ысырып тастағаннан соң бұғаттағы метакарпалар өшіріледі. Шынымен ысырып тастауды қалайсыз ба?",
"在线": "Онлайн",
"离线": "Желіде емес",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Қайта ысырып тастау Шынымен ысырып тастауды қалайсыз ба?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Қайта ысырып ысырып тасымалдауын өшіріледі. Оны ысырып тастауды қалайсыз ба?",
"版本说明": "Версиятын көрсету",
"一键登录": "Бір шертті кіру"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Шығыс жегілді соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз. Көк белгісін жарыялды, келесі басыңыз",
"网关添加成功": "Шлюз сәтті қосылды",
"功能开启后,你将可以通过网关远程开锁。": "Функция қосылғаннан кейін шлюз арқылы құлыптан қашықтан ашуға болады·",
"录屏已保存到相册": "Альбомға сақталған экран жазу файлы",
"通话未接通,已挂断": "Қосылмаған, ілінген қоңырау",
"通话异常中断": "Қоңыраудың аномальды үзілуі",
"通话连接失败": "Қоңырау қосылымы жаңылысы",
"已挂断": "Ілініп тұру",
"正在说话...": "Қазір сөйлесу...",
"设备不在线": "Құрылғы онлайн емес",
"设备未配网": "Құрылғы желіге қосылмаған",
"已静音": "Дыбыс өшірілді",
"该锁的远程开锁功能未启用": "Бұғаттаудың қашықтан құлыптан босату функциясы қосылмаған",
"下载完成,请到相册查看": "Жүктеу аяқталды, көру үшін альбомға өтуіңізді сұраймыз",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye қуат үнемдейтін режимге орнатылғанда, мониторингті орындау мүмкін емес. Cat Eye параметрлеріндегі басқа режимдерге ауысуыңызды сұраймын",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye қуат үнемдейтін режимге орнатылғанда қашықтан құлыптан босату мүмкін емес. Cat Eye параметрлерінде басқа режимге ауысуыңызды сұраймыз",
"呼叫目标": "Қоңырау шалу мақсаты",
"管理员APP": "APP әкімшісі",
"可视门铃码": "Көзбен шолып есігінің коды",
"电子反锁": "Электрондық бұғаттауға қарсы",
"双重认证": "Екі факторлы аутентификация",
"双锁联动": "Қос бұғаттау сілтемесі",
"1.用智能锁APP添加锁和网关": "1. Смарт-құлыптау бағдарламасын пайдалана отырып құлыптар мен шлюздерді қосу",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. APP бағдарламасында құлыпты қашықтан ашу функциясын қосу (бұл функция әдепкі бойынша өшіріледі). Егер бұл параметр қол жетімді болмаса, бұғаттау Google Home-ды қолдамайды",
"3.安装Google Home APP点击左上角的加号按钮": "3. Google Home бағдарламасын орнатып, жоғарғы сол жақ бұрыштағы қосу түймешігін басыңыз",
"暂无最新记录": "Қазіргі уақытта қол жетімді соңғы жазбалар жоқ",
"请将手机切换至2.4G WiFi进行手动连接": "Телефонды қолмен қосу үшін 2.4G WiFi бағдарламасына ауыстыруыңызды сұраймыз"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 중수골 정맥이 삭제됩니다. 당신은 당신이 재설정 하시겠습니까?",
"在线": "온라인",
"离线": "오프라인",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 지문이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 리모컨이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
"版本说明": "버전 설명",
"一键登录": "원 클릭 로그인"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "게이트웨이의 전원이 켜지면 재설정 버튼을 5 초 동안 누르고 있습니다. 파란색 표시등이 깜박일 때 다음을 클릭하십시오.",
"网关添加成功": "게이트웨이가 성공적으로 추가되었습니다.",
"功能开启后,你将可以通过网关远程开锁。": "기능이 활성화된 후에는 게이트웨이를 통해 원격으로 잠금 해제할 수 있습니다.",
"录屏已保存到相册": "화면 녹음 파일이 앨범에 저장되었습니다",
"通话未接通,已挂断": "전화가 연결되지 않았습니다. 끊겼습니다",
"通话异常中断": "비정상적인 통화 중단",
"通话连接失败": "통화 연결 실패",
"已挂断": "끊고 있",
"正在说话...": "지금 이야기하고 …",
"设备不在线": "장치가 온라인 상태가 아닙니다",
"设备未配网": "장치가 네트워크에 연결되어 있지 않습니다",
"已静音": "소리가 꺼졌다",
"该锁的远程开锁功能未启用": "이 잠금의 원격 잠금 해제 기능을 사용할 수 없습니다",
"下载完成,请到相册查看": "다운로드가 완료되었습니다. 보려면 앨범으로 이동하십시오",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye 가 절전 모드로 설정되면 모니터링을 수행할 수 없습니다.캣아이 설정에서 다른 모드로 전환해 주세요",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye 가 절전 모드로 설정된 경우에는 원격 잠금 해제가 불가능합니다.Cat Eye 설정에서 다른 모드로 전환해 주세요",
"呼叫目标": "전화 대상",
"管理员APP": "관리자 앱",
"可视门铃码": "시각 초인종 부호",
"电子反锁": "전자식 anti lock",
"双重认证": "이중 인증",
"双锁联动": "2 중 잠금 연결",
"1.用智能锁APP添加锁和网关": "1. 스마트 잠금 앱을 사용하여 잠금 및 게이트웨이를 추가합니다",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. 앱에서 잠금의 원격 잠금 해제 기능을 활성화합니다 (이 기능은 기본적으로 꺼져 있습니다).이 옵션을 사용할 수 없는 경우 잠금은 Google Home을 지원하지 않습니다",
"3.安装Google Home APP点击左上角的加号按钮": "3. 구글 홈 앱을 설치하고 왼쪽 상단 모서리에 있는 더하기 버튼을 클릭합니다",
"暂无最新记录": "현재 사용 가능한 최신 레코드가 없습니다",
"请将手机切换至2.4G WiFi进行手动连接": "수동 연결을 위해 핸드폰을 2.4G WiFi로 바꿔주세요"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po reset užrakto metakarpinės venos bus ištrintos. Ar tikrai norite atstatyti?",
"在线": "Online",
"离线": "Neprisijungęs",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po reset užrakto pirštų atspaudai bus ištrinti. Ar tikrai norite jį atkurti?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po reset, nuotolinis valdymo pultas užraktas bus ištrintas. Ar norite jį atkurti?",
"版本说明": "Versijos aprašymas",
"一键登录": "Vieno paspaudimo prisijungimas"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite mygtuką \"reset\". Spustelėkite toliau, kai mėlyna indikatoriaus šviesa mirksi",
"网关添加成功": "Vartai sėkmingai pridėta",
"功能开启后,你将可以通过网关远程开锁。": "Kai funkcija įjungta, galėsite nuotoliniu būdu atrakinti per šliuzą。",
"录屏已保存到相册": "Ekrano įrašymo failas, įrašytas į albumą",
"通话未接通,已挂断": "Skambutis neprijungtas, pakabintas",
"通话异常中断": "Nenormalus skambučio nutraukimas",
"通话连接失败": "Nepavyko prisijungti prie skambučio",
"已挂断": "Pakabinimas",
"正在说话...": "Kalbasi dabar...",
"设备不在线": "Įrenginys nėra prisijungęs",
"设备未配网": "Įrenginys neprijungtas prie tinklo",
"已静音": "Garsas buvo išjungtas",
"该锁的远程开锁功能未启用": "Šio užrakto nuotolinio atrakinimo funkcija neįjungta",
"下载完成,请到相册查看": "Atsisiuntimas baigtas, eikite į albumą, kad peržiūrėtumėte",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Kai \"Cat Eye\" nustatytas energijos taupymo režimas, stebėjimo atlikti negalima. \"Cat Eye\" nustatymuose perjunkite į kitus režimus",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Nuotolinis atrakinimas neįmanomas, kai \"Cat Eye\" nustatytas energijos taupymo režimas. \"Cat Eye\" nustatymuose perjunkite į kitą režimą",
"呼叫目标": "Skambučio tikslas",
"管理员APP": "Administratoriaus programa",
"可视门铃码": "Vaizdinis durų skambučio kodas",
"电子反锁": "Elektroninis antiblokavimas",
"双重认证": "Dviejų veiksnių autentifikavimas",
"双锁联动": "Dvigubo užrakto jungtis",
"1.用智能锁APP添加锁和网关": "1. Pridėkite spynas ir šliuzus naudodami \"smart lock\" programą",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Įjunkite užrakto nuotolinio atrakinimo funkciją APP (ši funkcija yra išjungta pagal numatytuosius nustatymus). Jei ši parinktis nepasiekiama, užraktas nepalaikys \"Google Home\"",
"3.安装Google Home APP点击左上角的加号按钮": "3. Įdiekite \"Google Home\" programą ir spustelėkite pliuso mygtuką viršutiniame kairiajame kampe",
"暂无最新记录": "Šiuo metu nėra naujausių įrašų",
"请将手机切换至2.4G WiFi进行手动连接": "Perjunkite telefoną į 2.4G WiFi, kad galėtumėte prisijungti rankiniu būdu"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, urat metacarpal kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
"在线": "Dalam talian",
"离线": "Luar talian",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, cap jari kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, kawalan jauh kunci akan dipadamkan. Adakah anda mahu menetapkan semula?",
"版本说明": "Penerangan versi",
"一键登录": "Log masuk satu klik"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat. Klik seterusnya apabila lampu penunjuk biru berkelip",
"网关添加成功": "Get laluan ditambah berjaya",
"功能开启后,你将可以通过网关远程开锁。": "Selepas fungsi didayakan, anda akan dapat membuka kunci dari jauh melalui pintu masuk。",
"录屏已保存到相册": "Rakaman skrin fail disimpan ke album",
"通话未接通,已挂断": "Panggilan tidak disambungkan, ditutup",
"通话异常中断": "Gangguan panggilan yang tidak normal",
"通话连接失败": "Sambungan panggilan gagal",
"已挂断": "Menutup telefon",
"正在说话...": "Bercakap sekarang...",
"设备不在线": "Peranti tidak dalam talian",
"设备未配网": "Peranti tidak disambungkan ke rangkaian",
"已静音": "Bunyi telah dimatikan",
"该锁的远程开锁功能未启用": "Fungsi buka kunci jauh kunci ini tidak didayakan",
"下载完成,请到相册查看": "Muat turun selesai, sila pergi ke album untuk melihat",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Apabila Cat Eye ditetapkan kepada mod penjimatan kuasa, pemantauan tidak boleh dilakukan. Sila tukar kepada mod lain dalam tetapan Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Buka kunci jauh tidak boleh dilakukan apabila Cat Eye ditetapkan kepada mod penjimatan kuasa. Sila tukar kepada mod lain dalam tetapan Cat Eye",
"呼叫目标": "Sasaran panggilan",
"管理员APP": "APP Pentadbir",
"可视门铃码": "Kod loceng pintu visual",
"电子反锁": "Anti kunci elektronik",
"双重认证": "Pengesahan dua faktor",
"双锁联动": "Pautan kunci berganda",
"1.用智能锁APP添加锁和网关": "1. Tambah kunci dan pintu masuk menggunakan apl kunci pintar",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Dayakan fungsi buka kunci jauh kunci dalam APP (fungsi ini dimatikan secara lalai). Jika pilihan ini tidak tersedia, kunci tidak akan menyokong Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Pasang apl Google Home dan klik butang tambah di penjuru kiri sebelah atas",
"暂无最新记录": "Pada masa ini tiada rekod terkini tersedia",
"请将手机切换至2.4G WiFi进行手动连接": "Sila tukar telefon anda kepada WiFi 2.4G untuk sambungan manual"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Na reset worden de middenhandsbeenaders van het slot verwijderd. Weet je zeker dat je wilt resetten?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Na het resetten worden de vingerafdrukken van het slot verwijderd. Weet je zeker dat je het wilt resetten?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Na het resetten wordt de afstandsbediening van het slot verwijderd. Wilt u het resetten?",
"版本说明": "Versieomschrijving",
"跟随系统": "Systeem volgen",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt. Klik op Volgende wanneer het blauwe lampje knippert",
"网关添加成功": "Gateway met succes toegevoegd",
"功能开启后,你将可以通过网关远程开锁。": "Na het inschakelen van de functie kunt u op afstand ontgrendelen via de gateway.",
"录屏已保存到相册": "Scherm opname bestanden worden opgeslagen in albums",
"通话未接通,已挂断": "De telefoon is niet ingeschakeld en hangt",
"通话异常中断": "Buitengewone oproeponderbreking",
"通话连接失败": "Mislukte belverbinding",
"已挂断": "ophangen",
"正在说话...": "Zeg nu …",
"设备不在线": "Het apparaat is niet online",
"设备未配网": "Het apparaat is niet verbonden met het netwerk",
"已静音": "Het geluid is uitgeschakeld",
"该锁的远程开锁功能未启用": "De remote unlock functie van het slot is niet ingeschakeld",
"下载完成,请到相册查看": "De download is voltooid, ga naar het album om het te bekijken",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Wanneer 'kattenoog' is ingesteld op de energiebesparende modus, is monitoring niet mogelijk. Ga naar een andere modus in de kattenoog instellingen",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Wanneer cat eye is ingesteld op de energiebesparende modus, kan deze niet op afstand worden ontgrendeld. Ga naar een andere modus in de kattenoog instellingen",
"呼叫目标": "Doel van de oproep",
"管理员APP": "Toepassing door de beheerder",
"可视门铃码": "Visuele deurbel code",
"电子反锁": "Elektronische abs",
"双重认证": "Twee-factor authenticatie",
"双锁联动": "Dubbele vergrendeling voor koppeling",
"1.用智能锁APP添加锁和网关": "1. Voeg sloten en gateways toe met de smart lock app",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Open het slot op afstand in de APP (standaard uitgeschakeld). Als deze optie niet beschikbaar is, wordt google Home niet ondersteund",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installeer de google home-app en klik op de plus-knop in de linkerbovenhoek",
"暂无最新记录": "Er zijn momenteel geen recente gegevens beschikbaar",
"请将手机切换至2.4G WiFi进行手动连接": "Stel uw telefoon in op 2. 4g WiFi bij handmatige verbinding"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po zresetowaniu żyły śródręcza zamka zostaną usunięte. Czy na pewno chcesz zresetować?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po zresetowaniu odciski palców zamka zostaną usunięte. Czy na pewno chcesz go zresetować?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po zresetowaniu zdalne sterowanie zamkiem zostanie usunięte. Czy chcesz go zresetować?",
"版本说明": "Wersja",
"一键登录": "Login jednym kliknięciem"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund. Kliknij przycisk Dalej, gdy miga niebieska lampka kontrolna",
"网关添加成功": "Gateway dodany pomyślnie",
"功能开启后,你将可以通过网关远程开锁。": "Po włączeniu tej funkcji będziesz mógł zdalnie odblokować za pośrednictwem bramy。",
"录屏已保存到相册": "Plik nagrania ekranu zapisany w albumie",
"通话未接通,已挂断": "Połączenie nie jest połączone, rozłączone",
"通话异常中断": "Nietypowe przerywanie połączenia",
"通话连接失败": "Połączenie nie powiodło się",
"已挂断": "Rozłączanie się",
"正在说话...": "Mówiąc teraz...",
"设备不在线": "Urządzenie nie jest w trybie online",
"设备未配网": "Urządzenie nie jest podłączone do sieci",
"已静音": "Dźwięk został wyłączony",
"该锁的远程开锁功能未启用": "Funkcja zdalnego odblokowania tego zamka nie jest włączona",
"下载完成,请到相册查看": "Pobieranie zakończone, przejdź do albumu, aby wyświetlić",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Gdy Cat Eye jest ustawiony w trybie oszczędzania energii, nie można przeprowadzić monitorowania. Przełącz się na inne tryby w ustawieniach Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Zdalne odblokowanie nie jest możliwe, gdy Cat Eye jest ustawiony w trybie oszczędzania energii. Przełącz się na inny tryb w ustawieniach Cat Eye",
"呼叫目标": "Cel połączenia",
"管理员APP": "Aplikacja administratora",
"可视门铃码": "Wizualny kod dzwonka do drzwi",
"电子反锁": "Elektroniczny układ przeciwblokujący",
"双重认证": "Uwierzytelnianie dwuskładnikowe",
"双锁联动": "Podwójny zamek zawieszenia",
"1.用智能锁APP添加锁和网关": "1. Dodaj zamki i bramy za pomocą aplikacji inteligentnego zamka",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Włącz funkcję zdalnego odblokowywania zamka w aplikacji (ta funkcja jest domyślnie wyłączona). Jeśli ta opcja nie jest dostępna, zamek nie będzie obsługiwał Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Zainstaluj aplikację Google Home i kliknij przycisk plusa w lewym górnym rogu",
"暂无最新记录": "Obecnie nie ma dostępnych najnowszych rekordów",
"请将手机切换至2.4G WiFi进行手动连接": "Przełącz telefon na 2.4G Wi-Fi, aby uzyskać ręczne połączenie"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Após a reinicialização, as veias do metacarpo do bloqueio serão excluídas. Tens a certeza que queres reiniciar?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais do bloqueio serão apagadas. Tens a certeza que queres redefini-lo?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto do bloqueio será excluído. Você quer redefini-lo?",
"版本说明": "Descrição da versão",
"一键登录": "Login com um clique"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos. Clique Próximo quando a luz indicadora azul pisca",
"网关添加成功": "Gateway adicionado com sucesso",
"功能开启后,你将可以通过网关远程开锁。": "Depois que a função for habilitada, você poderá desbloquear remotamente através do gateway。",
"录屏已保存到相册": "Arquivo de gravação de tela salvo no álbum",
"通话未接通,已挂断": "Chamada não conectada, desligada",
"通话异常中断": "Interrupção anormal de chamadas",
"通话连接失败": "Falha na conexão da chamada",
"已挂断": "Desligando",
"正在说话...": "Falando agora...",
"设备不在线": "O dispositivo não está online",
"设备未配网": "O dispositivo não está conectado à rede",
"已静音": "O som foi desligado",
"该锁的远程开锁功能未启用": "A função de desbloqueio remoto desta fechadura não está habilitada",
"下载完成,请到相册查看": "Download concluído, por favor, vá para o álbum para ver",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Quando o Cat Eye está definido para o modo de economia de energia, o monitoramento não pode ser executado. Por favor, mude para outros modos nas configurações do Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "O desbloqueio remoto não é possível quando o Cat Eye está definido para o modo de economia de energia. Por favor, mude para outro modo nas configurações do Cat Eye",
"呼叫目标": "Destino da chamada",
"管理员APP": "Aplicativo Administrador",
"可视门铃码": "Código visual da campainha",
"电子反锁": "Anti bloqueio eletrônico",
"双重认证": "Autenticação de dois fatores",
"双锁联动": "Articulação de trava dupla",
"1.用智能锁APP添加锁和网关": "1. Adicione fechaduras e gateways usando o aplicativo Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Ative a função de desbloqueio remoto da fechadura no APP (esta função está desativada por padrão). Se esta opção não estiver disponível, o bloqueio não será compatível com o Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Instale o aplicativo Google Home e clique no botão de adição no canto superior esquerdo",
"暂无最新记录": "Atualmente não há registros mais recentes disponíveis",
"请将手机切换至2.4G WiFi进行手动连接": "Mude seu telefone para WiFi 2.4G para conexão manual"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "După resetare, venele metacarpale ale încuietorii vor fi şterse. Sigur doriți să resetați?",
"在线": "Online",
"离线": "Deconectat",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "După resetare, amprentele încuietorii vor fi şterse. Sigur doriți să-l resetați?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "După resetare, telecomanda de blocare va fi ştersă. Vrei să-l resetezi?",
"版本说明": "Descrierea versiunii",
"一键登录": "Autentificare cu un singur clicName"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "După pornirea poarta, apăsați și țineți butonul de resetare timp de 5 secunde. Click Next atunci când lumina indicator albastru lăturare",
"网关添加成功": "Gateway adăugat cu succes",
"功能开启后,你将可以通过网关远程开锁。": "După ce funcția este activată, veți putea debloca de la distanță prin gateway。",
"录屏已保存到相册": "Fișier de înregistrare ecran salvat în album",
"通话未接通,已挂断": "Apel neconectat, închis",
"通话异常中断": "Întrerupere anormală a apelului",
"通话连接失败": "Conexiunea la apel a eșuat",
"已挂断": "Închiderea",
"正在说话...": "Vorbind acum...",
"设备不在线": "Dispozitivul nu este online",
"设备未配网": "Dispozitivul nu este conectat la rețea",
"已静音": "Sunetul a fost oprit",
"该锁的远程开锁功能未启用": "Funcția de deblocare de la distanță a acestei încuietori nu este activată",
"下载完成,请到相册查看": "Descărcare finalizată, vă rugăm să accesați albumul pentru a vizualiza",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Când Cat Eye este setat în modul de economisire a energiei, monitorizarea nu poate fi efectuată. Vă rugăm să comutați la alte moduri în setările Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Deblocarea de la distanță nu este posibilă atunci când Cat Eye este setat în modul de economisire a energiei. Vă rugăm să comutați la un alt mod în setările Cat Eye",
"呼叫目标": "Țintă de apel",
"管理员APP": "Aplicație de administrator",
"可视门铃码": "Codul vizual al soneriei",
"电子反锁": "Antiblocare electronică",
"双重认证": "Autentificare cu doi factori",
"双锁联动": "Legătură dublă de blocare",
"1.用智能锁APP添加锁和网关": "1. Adăugați încuietori și gateway-uri folosind aplicația smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Activați funcția de deblocare de la distanță a încuietorului în aplicație (această funcție este dezactivată în mod implicit). Dacă această opțiune nu este disponibilă, blocarea nu va accepta Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Instalați aplicația Google Home și faceți clic pe butonul plus din colțul din stânga sus",
"暂无最新记录": "În prezent nu există cele mai recente înregistrări disponibile",
"请将手机切换至2.4G WiFi进行手动连接": "Vă rugăm să comutați telefonul la WiFi 2.4G pentru conectarea manuală"
}

View File

@ -504,7 +504,7 @@
"您的钥匙已过期": "Срок действия вашего ключа истек",
"常开模式开启": "Замок находится в режиме прохода",
"超级管理员": "Супер админ",
"授权管理员": "Авторизованный администратор",
"授权管理员": "Автор. администратор",
"普通用户": "Обычный пользователь",
"余": "Баланс",
"天": "День",
@ -630,12 +630,12 @@
"关锁": "Закрыть замок",
"功能": "Функция",
"配件": "Детали",
"云存": "Облачное хранилище",
"云存": "Cloud",
"本地": "Эта местность",
"3天滚动储存": "3 дня прокатного хранения",
"去升级": "Обновить сейчас",
"下载列表": "Скачать список",
"已下载": "Загружено",
"已下载": "Downloaded",
"全部视频": "Все видео",
"已为本设备免费提供3大滚动视频储存服务": "Для этого устройства бесплатно предоставлены три услуги по хранению видео с прокруткой.",
"视频播放": "Воспроизведение видео",
@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "После сброса пястные вены замка будут удалены. Вы уверены, что хотите сбросить?",
"在线": "Онлайн",
"离线": "Оффлайн",
@ -1121,5 +1125,35 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "После сброса отпечатки пальцев замка будут удалены. Вы уверены, что хотите его перезагрузить?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "После сброса пульт дистанционного управления замком будет удален. А вы хотите его сбросить?",
"版本说明": "Объяснение версии",
"一键登录": "Вход в один клик"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд. Нажмите Далее, когда синий индикатор мигает",
"网关添加成功": "Шлюз успешно добавлен",
"功能开启后,你将可以通过网关远程开锁。": "После включения функции вы сможете удаленно открывать шлюз.",
"录屏已保存到相册": "Файл записи экрана сохранен в альбом",
"通话未接通,已挂断": "Звонок не связан, вешаю трубку",
"通话异常中断": "Ненормальное прерывание вызова",
"通话连接失败": "Прервано подключение к телефонной линии",
"已挂断": "- вешаю трубку.",
"正在说话...": "Теперь я говорю...",
"设备不在线": "Устройство не работает",
"设备未配网": "Устройство не подключено к сети",
"已静音": "Звук был выключен",
"该锁的远程开锁功能未启用": "Функция дистанционного разблокирования этого замка не включена",
"下载完成,请到相册查看": "Загрузка завершена, пожалуйста, перейдите на альбом, чтобы посмотреть",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Когда кошачий глаз установлен в режим энергосбережения, мониторинг не может быть выполнен. Переключитесь на другие режимы в настройках кошачьего глаза",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Удаленная разблокировка невозможна, если кошачий глаз установлен в режим энергосбережения. Пожалуйста, переключитесь в другой режим в настройках кошачьего глаза",
"呼叫目标": "Звони в цель.",
"管理员APP": "Приложение для администратора",
"可视门铃码": "Визуальный код дверного звонка",
"电子反锁": "Электронный анти-блокировка",
"双重认证": "Двухфакторная аутентификация",
"双锁联动": "2.1.3 двойная блокировка",
"1.用智能锁APP添加锁和网关": "1. Добавить замки и шлюзы с помощью приложения smart lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Включите функцию удаленного разблокирования замка в приложении (эта функция выключается по умолчанию). Если эта опция не доступна, блокировка не будет поддерживать Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Установите приложение Google Home и нажмите кнопку plus в левом верхнем углу",
"暂无最新记录": "В настоящее время последние данные отсутствуют",
"请扫描可视门铃码二维码": "Сканируйте код вызова",
"请确保网络是2.4GHz Wi-Fi": "Убедитесь, что сеть имеет 2,4 ГГц Wi - Fi",
"已选": "Выбранные",
"是否要远程开锁": "Нужно ли удалённо открывать замок",
"请将手机切换至2.4G WiFi进行手动连接": "Пожалуйста, переключите телефон на 2.4G WiFi для ручного подключения"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Po resetovaní budú metakarpálne žily zámku vymazané. Ste si istí, že chcete obnoviť?",
"在线": "Online",
"离线": "Offline",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetovaní budú prstové odtlačky zámku vymazané. Ste si istí, že chcete obnoviť?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetovaní bude diaľkové ovládanie zámku vymazané. Chcete ho obnoviť?",
"版本说明": "Popis verzie",
"一键登录": "Prihlásenie jedným kliknutím"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset 5 sekúnd. Kliknite na ďalšie, keď modrý indikátor svetlo bliká",
"网关添加成功": "Brána úspešne pridaná",
"功能开启后,你将可以通过网关远程开锁。": "Po aktivácii funkcie budete môcť na diaľku odomknúť cez bránu。",
"录屏已保存到相册": "Nahrávanie obrazovky file uložený do albumu",
"通话未接通,已挂断": "Hovor nie je spojený, zavesený",
"通话异常中断": "Abnormálne prerušenie hovoru",
"通话连接失败": "Pripojenie hovoru zlyhalo",
"已挂断": "Zavesenie",
"正在说话...": "Hovorím teraz...",
"设备不在线": "Zariadenie nie je online",
"设备未配网": "Zariadenie nie je pripojené k sieti",
"已静音": "Zvuk bol vypnutý",
"该锁的远程开锁功能未启用": "Funkcia diaľkového odomykania tohto zámku nie je povolená",
"下载完成,请到相册查看": "Sťahovanie dokončené, prejdite na album view",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Keď je Cat Eye nastavený na režim úspory energie, monitorovanie nie je možné vykonať. Prepnite na iné režimy v nastaveniach Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Diaľkové odomknutie nie je možné, keď je Cat Eye nastavený do režimu úspory energie. Prepnite do iného režimu v nastaveniach Cat Eye",
"呼叫目标": "Cieľ hovoru",
"管理员APP": "Aplikácia správcu",
"可视门铃码": "Vizuálny kód zvončeka",
"电子反锁": "Elektronický protiblokovací systém",
"双重认证": "Dvojfaktorová autentifikácia",
"双锁联动": "Dvojitý zámok",
"1.用智能锁APP添加锁和网关": "1. Pridajte zámky a brány pomocou aplikácie inteligentného zámku",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Povoľte funkciu diaľkového odomykania zámku v aplikácii APP (táto funkcia je predvolene vypnutá). Ak táto možnosť nie je k dispozícii, zámok nebude podporovať Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Nainštalujte si aplikáciu Google Home a kliknite na tlačidlo plus v ľavom hornom rohu",
"暂无最新记录": "Momentálne nie sú k dispozícii žiadne najnovšie záznamy",
"请将手机切换至2.4G WiFi进行手动连接": "Pre manuálne pripojenie prepnite telefón na 2.4G WiFi"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Након ресетовања, метакарпалне вене браве ће бити избрисане. Да ли сте сигурни да желите да ресетујете?",
"在线": "Онлине",
"离线": "Ванмрежне",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Након ресетовања, отисци прстију браве ће бити избрисани. Да ли сте сигурни да желите да га ресетујете?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Након ресетовања, даљински управљач браве ће бити избрисан. Да ли желите да га ресетујете?",
"版本说明": "Опис верзије",
"一键登录": "Пријава једним кликом"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди. Кликните Следећи када плава лампица трепери",
"网关添加成功": "Гатеваи је успешно додао",
"功能开启后,你将可以通过网关远程开锁。": "Након што је функција омогућена, моћи ћете да даљински откључавање преко гатеваи。",
"录屏已保存到相册": "Датотека за снимање екрана сачувана у албуму",
"通话未接通,已挂断": "Позив није повезан, спустио слушалицу",
"通话异常中断": "Ненормалан прекид позива",
"通话连接失败": "Позив веза није успела",
"已挂断": "Спуштање веша",
"正在说话...": "Разговарамо сада ...",
"设备不在线": "Уређај није на мрежи",
"设备未配网": "Уређај није повезан на мрежу",
"已静音": "Звук је искључен",
"该锁的远程开锁功能未启用": "Функција даљинског откључавања ове браве није омогућена",
"下载完成,请到相册查看": "Преузимање завршено, идите на албум да видите",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Када је Цат Еие подешен на режим за уштеду енергије, праћење се не може извршити. Молимо Вас да пређете на друге режиме у подешавањима Цат Еие",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Даљинско откључавање није могуће када је Цат Еие подешен на режим за уштеду енергије. Молимо Вас да пређете на други режим у подешавањима Цат Еие",
"呼叫目标": "Циљ позива",
"管理员APP": "Администратор АПП",
"可视门铃码": "Визуелни код звона",
"电子反锁": "Електронски против блокирања",
"双重认证": "Двофакторска аутентификација",
"双锁联动": "Двострука брава веза",
"1.用智能锁APP添加锁和网关": "1 . Додајте браве и гатеваи помоћу апликације Смарт Лоцк",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2 . Омогућите функцију даљинског откључавања браве у АПП-у (ова функција је подразумевано искључена). Ако ова опција није доступна, брава неће подржати Гоогле Хоме",
"3.安装Google Home APP点击左上角的加号按钮": "3 . Инсталирајте апликацију Гоогле Хоме и кликните на дугме плус у горњем левом углу",
"暂无最新记录": "Тренутно нема доступних најновијих података",
"请将手机切换至2.4G WiFi进行手动连接": "Пребаците телефон на КСНУМКСГ ВиФи за ручно повезивање"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Efter återställd, de metakarpal venerna i låset tas bort. Är du säker på att du vill återställa?",
"在线": "Online:",
"离线": "Frånkoppling",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter återställd, kommer låsets fingeravtryck tas bort. Är du säker på att du vill återställa den?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter återställd, fjärrkontrollen på låset tas bort. Vill du återställa den?",
"版本说明": "Versionsbeskrivning",
"一键登录": "Ett klick inloggning"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "När gateway är aktiverad, tryck på och håll återställningsknappen i 5 sekunder. Klicka Nästa när den blå indikator ljus blinkar",
"网关添加成功": "Gateway lagt till med lyckad",
"功能开启后,你将可以通过网关远程开锁。": "När funktionen är aktiverad kommer du att kunna låsa upp på distans via gatewayen.",
"录屏已保存到相册": "Skärminspelningsfil sparad i album",
"通话未接通,已挂断": "Samtalet är inte anslutet, har lagts på",
"通话异常中断": "Onormalt samtalsavbrott",
"通话连接失败": "Samtalsanslutningen misslyckades",
"已挂断": "Lägger på",
"正在说话...": "Pratar nu...",
"设备不在线": "Enheten är inte online",
"设备未配网": "Enheten är inte ansluten till nätverket",
"已静音": "Ljudet har stängts av",
"该锁的远程开锁功能未启用": "Fjärrupplåsningsfunktionen för detta lås är inte aktiverad",
"下载完成,请到相册查看": "Nedladdningen är klar, gå till albumet för att se",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "När Cat Eye är inställt på energisparläge kan övervakning inte utföras. Växla till andra lägen i Cat Eye-inställningarna",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Fjärrupplåsning är inte möjlig när Cat Eye är inställt på energisparläge. Byt till ett annat läge i Cat Eye-inställningarna",
"呼叫目标": "Anropa mål",
"管理员APP": "APP för administratör",
"可视门铃码": "Visuell dörrklockakod",
"电子反锁": "Elektroniskt låsningsfritt läge",
"双重认证": "Tvåfaktorsautentisering",
"双锁联动": "Dubbel låslänkage",
"1.用智能锁APP添加锁和网关": "1. Lägg till lås och gateways med hjälp av den smarta låsappen",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Aktivera fjärrupplåsningsfunktionen för låset i APP (den här funktionen är avstängd som standard). Om det här alternativet inte är tillgängligt kommer låset inte att stödja Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Installera Google Home-appen och klicka på plusknappen i det övre vänstra hörnet",
"暂无最新记录": "Det finns för närvarande inga senaste poster tillgängliga",
"请将手机切换至2.4G WiFi进行手动连接": "Byt din telefon till 2.4G WiFi för manuell anslutning"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วหลอดเลือดดำ metacarpal ของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
"在线": "ออนไลน์ผ่าน",
"离线": "ออฟไลน์",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วลายนิ้วมือของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วรีโมทคอนโทรลของล็อคจะถูกลบออกคุณต้องการรีเซ็ตไหม",
"版本说明": "คำอธิบายรุ่น",
"一键登录": "เข้าสู่ระบบด้วยคลิกเดียว"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีคลิกถัดไปเมื่อไฟแสดงสถานะสีน้ำเงินกะพริบ",
"网关添加成功": "เพิ่มเกตเวย์เรียบร้อยแล้ว",
"功能开启后,你将可以通过网关远程开锁。": "หลังจากเปิดใช้งานฟังก์ชั่นแล้วคุณจะสามารถปลดล็อคจากระยะไกลผ่านประตู",
"录屏已保存到相册": "แฟ้มบันทึกการบันทึกหน้าจอไปยังอัลบั้ม",
"通话未接通,已挂断": "โทรไม่ได้เชื่อมต่อวางสาย",
"通话异常中断": "ผิดปกติการโทรขัดจังหวะ",
"通话连接失败": "การเชื่อมต่อสายล้มเหลว",
"已挂断": "วางสายนะ",
"正在说话...": "กำลังคุยอยู่...",
"设备不在线": "อุปกรณ์ไม่ออนไลน์",
"设备未配网": "อุปกรณ์ไม่ได้เชื่อมต่อกับเครือข่าย",
"已静音": "เสียงถูกปิด",
"该锁的远程开锁功能未启用": "ไม่เปิดใช้ฟังก์ชันการปลดล็อคระยะไกลของการล็อคนี้",
"下载完成,请到相册查看": "การดาวน์โหลดเสร็จสมบูรณ์แล้วโปรดไป ที่อัลบั้มเพื่อดู",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "เมื่อตั้งค่าตาแมวให้เป็นโหมดประหยัดพลังงานการตรวจสอบจะไม่สามารถทำงานได้ โปรดเปลี่ยนไปใช้โหมดอื่น ๆ ในการตั้งค่าตาแมว",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "ไม่สามารถปลดล็อคระยะไกลได้เมื่อตั้งค่าดวงตาแมวให้เป็นโหมดประหยัดพลังงาน โปรดเปลี่ยนเป็นโหมดอื่นในการตั้งค่าตาแมว",
"呼叫目标": "เรียกเป้าหมาย",
"管理员APP": "แอพผู้ดูแลระบบ",
"可视门铃码": "รหัสประตูหน้า",
"电子反锁": "ล็อคป้องกันอิเล็กทรอนิกส์",
"双重认证": "การตรวจสอบสิทธิ์สองระดับ",
"双锁联动": "ดับเบิ้ลล็อคการเชื่อมต่อ",
"1.用智能锁APP添加锁和网关": "1. เพิ่มล็อค และเกตเวย์โดยใช้แอพสมาร์ทล็อค",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. เปิดใช้งานฟังก์ชันการปลดล็อคระยะไกลของการล็อคในแอพ (ฟังก์ชันนี้ จะถูกปิดโดยค่าเริ่มต้น) หากไม่มีตัวเลือกนี้ การล็อคจะไม่สนับสนุนกูเกิ้ลโฮม",
"3.安装Google Home APP点击左上角的加号按钮": "3. ติดตั้ง googlehome แอพ และคลิกปุ่มบวก ที่มุมบนซ้าย",
"暂无最新记录": "ปัจจุบันยังไม่มีบันทึกล่าสุด ที่มีอยู่",
"请将手机切换至2.4G WiFi进行手动连接": "กรุณาเปลี่ยนโทรศัพท์เป็น 2.4 GWiFi สำหรับการเชื่อมต่อด้วยตนเอง"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin metacarpal damarları silinecektir. Sıfırlamak istediğine emin misin?",
"在线": "Çevrimiçi",
"离线": "Çevrimdışı",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin parmak izleri silinecektir. Sıfırlamak istediğine emin misin?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sıfırladıktan sonra, kilidin uzaktan kumandası silinecektir. Sıfırlamak ister misin?",
"版本说明": "Sürüm açıklaması",
"一键登录": "Tek tıklama giriş"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Ağ geçidi açıldıktan sonra sıfırlama düğmesine 5 saniye basılı tutun. Mavi gösterge ışığı yanıp söndüğünde İleri'ye tıklayın",
"网关添加成功": "Ağ geçidi başarıyla eklendi",
"功能开启后,你将可以通过网关远程开锁。": "İşlev etkinleştirildikten sonra, ağ geçidi üzerinden uzaktan kilit açabileceksiniz。",
"录屏已保存到相册": "Albüme kaydedilen ekran kayıt dosyası",
"通话未接通,已挂断": "Arama bağlı değil, kapatıldı",
"通话异常中断": "Anormal çağrı kesintisi",
"通话连接失败": "Çağrı bağlantısı başarısız oldu",
"已挂断": "Telefonu kapatmak",
"正在说话...": "Şimdi konuşuyoruz...",
"设备不在线": "Cihaz çevrimiçi değil",
"设备未配网": "Cihaz ağa bağlı değil",
"已静音": "Ses kapatıldı",
"该锁的远程开锁功能未启用": "Bu kilidin uzaktan kilit açma işlevi etkin değil",
"下载完成,请到相册查看": "İndirme tamamlandı, görüntülemek için lütfen albüme gidin",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Cat Eye güç tasarrufu moduna ayarlandığında izleme yapılamaz. Lütfen Cat Eye ayarlarında diğer modlara geçin",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Cat Eye güç tasarrufu moduna ayarlandığında uzaktan kilit açma mümkün değildir. Lütfen Cat Eye ayarlarında başka bir moda geçin",
"呼叫目标": "Çağrı hedefi",
"管理员APP": "Yönetici APP",
"可视门铃码": "Görsel kapı zili kodu",
"电子反锁": "Elektronik kilitlenme önleyici",
"双重认证": "İki faktörlü kimlik doğrulama",
"双锁联动": "Çift kilit bağlantısı",
"1.用智能锁APP添加锁和网关": "1. Akıllı kilit uygulamasını kullanarak kilitler ve ağ geçitleri ekleyin",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. APP'de kilidin uzaktan kilit açma işlevini etkinleştirin (bu işlev varsayılan olarak kapalıdır). Bu seçenek mevcut değilse, kilit Google Home'u desteklemeyecektir",
"3.安装Google Home APP点击左上角的加号按钮": "3. Google Home uygulamasını yükleyin ve sol üst köşedeki artı düğmesini tıklayın",
"暂无最新记录": "Şu anda en son kayıt mevcut değil",
"请将手机切换至2.4G WiFi进行手动连接": "Manuel bağlantı için lütfen telefonunuzu 2.4G WiFi'ye getirin"
}

View File

@ -1,6 +1,6 @@
{
"星锁": "星鎖",
"锁通通": "鎖定通過",
"星锁": "星鎖",
"锁通通": "鎖通通",
"点击开锁,长按闭锁": "觸摸以解鎖,按住以鎖定",
"考勤": "出席情況",
"考勤设置": "考勤設置",
@ -151,7 +151,7 @@
"升级": "更新",
"空闲": "空缺",
"已入住": "已占用",
"多语言": "語言",
"多语言": "語言",
"添加锁": "添加鎖定",
"锁地址": "鎖地址",
"选择锁类型": "選擇鎖定類型",
@ -172,9 +172,9 @@
"接收人信息": "收件人",
"转移网关": "傳輸網關",
"锁屏": "屏幕鎖定",
"已关闭": "關",
"已开启": "開啟",
"开启": "開",
"已关闭": "",
"已开启": "開啟",
"开启": "",
"确定要开启重置键?": "是否繼續啟用重置按鈕?",
"确定要关闭重置键?": "是否繼續禁用重置按鈕?",
"隐藏无效开锁权限": "隱藏無效訪問",
@ -267,9 +267,9 @@
"您可通过邮件将密码、电子钥匙信息发给接收人。": "電子郵件可用於向收件人發送密碼和ekey信息。",
"购买实名认证提示": "啟用該功能後,您需要使用指紋,臉部或帳戶密碼才能打開該應用程序。 3分鐘不用再驗證",
"请选择你希望的实名认证频次": "請選擇您想要的實名認證頻率",
"仅首次": "第一次",
"仅首次": "僅首次",
"每日一次": "每天一次",
"每周一次": "每一次",
"每周一次": "每一次",
"每月一次": "每月一次",
"当前状态": "當前狀態",
"试用中": "在審判中",
@ -1078,11 +1078,15 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置後,鎖的掌靜脈將被刪除。 是否確實要重置?",
"在线": "在線",
"离线": "離線",
"购买记录": "採購記錄",
"使用记录": "記錄",
"购买记录": "記錄",
"使用记录": "使用記錄",
"失效时间要大于当前时间": "過期時間必須長於當前時間",
"修改名字": "編輯名稱",
"时": "小時",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置後,鎖的指紋將被刪除。 是否確實要重置它?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置後,鎖的遙控器將被刪除。 是否要重置它?",
"版本说明": "版本說明",
"一键登录": "一鍵登錄"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘。 當藍色指示燈閃爍時,單擊 「下一步」",
"网关添加成功": "已成功添加網關",
"功能开启后,你将可以通过网关远程开锁。": "啓用該功能後,您可以通過網關遠程解鎖。",
"录屏已保存到相册": "屏幕錄製文件保存到相冊",
"通话未接通,已挂断": "電話未接通,已掛斷",
"通话异常中断": "異常呼叫中斷",
"通话连接失败": "呼叫連接失敗",
"已挂断": "已掛斷",
"正在说话...": "正在說話…",
"设备不在线": "設備未在線",
"设备未配网": "設備未連接到網絡",
"已静音": "聲音已被關掉了",
"该锁的远程开锁功能未启用": "未開啓該鎖的遠程解鎖功能",
"下载完成,请到相册查看": "下載完成,請到相冊查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "當“貓眼”設置爲省電模式時,無法進行監控。請在貓眼設置中切換到其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "當貓眼設置爲省電模式時,無法遠程解鎖。請在貓眼設置中切換到其他模式",
"呼叫目标": "調用目標",
"管理员APP": "管理員應用",
"可视门铃码": "可視門鈴碼",
"电子反锁": "電子反鎖",
"双重认证": "雙重認證",
"双锁联动": "雙鎖聯動",
"1.用智能锁APP添加锁和网关": "1. 使用智能鎖應用程序添加鎖和網關",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. 在APP中開啓鎖的遠程開鎖功能默認關閉。如果這個選項不可用鎖將不支持谷歌Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. 安裝谷歌Home應用程序並單擊左上角的加號按鈕",
"暂无最新记录": "目前沒有最新的記錄",
"请将手机切换至2.4G WiFi进行手动连接": "手動連接時請將手機調至2.4G WiFi"
}

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Після скидання п'ясткові вени замку будуть видалені. Ви впевнені, що хочете скинути налаштування?",
"在线": "Онлайн",
"离线": "Автономних",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Після скидання відбитки пальців замка будуть видалені. Ви впевнені, що хочете скинути налаштування?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Після скидання пульт дистанційного керування замком буде видалено. Хочете його скинути?",
"版本说明": "Опис версії",
"一键登录": "Вхід в один клік"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд. Натисніть «Далі», коли синій індикатор почне блимати",
"网关添加成功": "Шлюз успішно додано",
"功能开启后,你将可以通过网关远程开锁。": "Після ввімкнення функції ви зможете віддалено розблокувати через шлюз。",
"录屏已保存到相册": "Файл запису екрана, збережений в альбомі",
"通话未接通,已挂断": "Дзвінок не підключений, поклав слухавку",
"通话异常中断": "Ненормальне переривання виклику",
"通话连接失败": "Не вдалося з'єднати дзвінок",
"已挂断": "Покласти слухавку",
"正在说话...": "Говорячи зараз...",
"设备不在线": "Пристрій не підключений до мережі",
"设备未配网": "Пристрій не підключений до мережі",
"已静音": "Звук вимкнено",
"该锁的远程开锁功能未启用": "Функція дистанційного розблокування цього замка не ввімкнена",
"下载完成,请到相册查看": "Завантаження завершено, будь ласка, перейдіть до альбому для перегляду",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Коли функцію «Котяче око» переведено в режим енергозбереження, моніторинг неможливий. Будь ласка, перейдіть на інші режими в налаштуваннях Cat Eye",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Віддалене розблокування неможливе, коли Cat Eye переведено в режим енергозбереження. Будь ласка, перейдіть в інший режим у налаштуваннях Cat Eye",
"呼叫目标": "Ціль дзвінка",
"管理员APP": "Додаток адміністратора",
"可视门铃码": "Візуальний код дверного дзвінка",
"电子反锁": "Електронний антиблокувальний засіб",
"双重认证": "Двофакторна аутентифікація",
"双锁联动": "Важіль з подвійним замком",
"1.用智能锁APP添加锁和网关": "1. Додайте замки та шлюзи за допомогою програми Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Увімкніть функцію дистанційного розблокування замка в APP (ця функція вимкнена за замовчуванням). Якщо ця опція недоступна, замок не підтримуватиме Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Встановіть програму Google Home і натисніть кнопку плюс у верхньому лівому кутку",
"暂无最新记录": "Наразі немає останніх доступних записів",
"请将手机切换至2.4G WiFi进行手动连接": "Будь ласка, перемкніть свій телефон на 2.4G WiFi для ручного підключення"
}

1155
lan/lan_ur.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1078,6 +1078,10 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "Sau khi đặt lại, các tĩnh mạch metacarpal của khóa sẽ bị xóa. Bạn có chắc muốn thiết lập lại không?",
"在线": "Trực tuyến",
"离线": "Ngoại tuyến",
@ -1121,5 +1125,31 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sau khi đặt lại, dấu vân tay của khóa sẽ bị xóa. Bạn có chắc chắn muốn thiết lập lại nó?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sau khi đặt lại, điều khiển từ xa của khóa sẽ bị xóa. Bạn có muốn đặt lại không?",
"版本说明": "Thông tin phiên bản",
"一键登录": "Đăng nhập bằng một cú nhấp chuột"
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút Reset trong 5 giây. Nhấp vào tiếp theo khi đèn báo màu xanh lam nhấp nháy",
"网关添加成功": "Gateway đã thêm thành công",
"功能开启后,你将可以通过网关远程开锁。": "Sau khi chức năng được kích hoạt, bạn sẽ có thể mở khóa từ xa thông qua gateway.",
"录屏已保存到相册": "Trên màn hình lưu vào album",
"通话未接通,已挂断": "Gọi không liên lạc, cúp máy",
"通话异常中断": "Sự gián đoạn cuộc gọi bất thường",
"通话连接失败": "Kết nối cuộc gọi đã thất bại",
"已挂断": "Cúp máy",
"正在说话...": "Nói chuyện bây giờ...",
"设备不在线": "Thiết bị không có trên mạng",
"设备未配网": "Thiết bị không được kết nối với mạng",
"已静音": "Âm thanh đã bị tắt",
"该锁的远程开锁功能未启用": "Chức năng mở khóa từ xa của khóa này không được kích hoạt",
"下载完成,请到相册查看": "Hoàn tất tải về, xin hãy đến album để xem",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "Khi mắt mèo được thiết lập để tiết kiệm điện, giám sát không thể được thực hiện. Hãy chuyển sang chế độ khác trong mắt mèo",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Mở khóa từ xa là không thể khi mắt mèo được thiết lập ở chế độ tiết kiệm điện. Hãy chuyển sang chế độ khác trong thiết lập mắt mèo",
"呼叫目标": "Đặt mục tiêu",
"管理员APP": "Ứng dụng quản trị viên",
"可视门铃码": "Hình ảnh chuông cửa",
"电子反锁": "Khóa chống điện tử",
"双重认证": "Chứng thực hai yếu tố",
"双锁联动": "Liên kết hai khóa",
"1.用智能锁APP添加锁和网关": "1. Thêm khoá và cổng bằng ứng dụng Smart Lock",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2. Kích hoạt chức năng mở khóa từ xa trong ứng dụng (chức năng này bị tắt theo mặc định). Nếu tùy chọn này không có sẵn, khóa sẽ không hỗ trợ Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3. Cài đặt ứng dụng Google Home và nhấn nút Plus ở góc trên bên trái",
"暂无最新记录": "Hiện tại không có hồ sơ mới nhất",
"请将手机切换至2.4G WiFi进行手动连接": "Vui lòng chuyển điện thoại sang 2.4G WiFi để kết nối bằng tay"
}

View File

@ -62,6 +62,9 @@
"批量授权锁": "批量授权锁",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
"排列方式": "排列方式",
"早到榜": "早到榜",
"迟到榜": "迟到榜",
@ -218,7 +221,7 @@
"添加网关": "添加网关",
"重新通电": "重新通电",
"指示灯": "指示灯",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "网关通电后长按重置按钮5秒指示灯交替闪烁时点击下一步",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步",
"选择网关": "选择网关",
"不支持5G WiFi网络请选择2.4G WiFi网络进行配置": "不支持5G WiFi网络请选择2.4G WiFi网络进行配置",
"WiFi密码": "WiFi密码",
@ -1010,6 +1013,7 @@
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
"接听": "接听",
"截图已保存到相册": "截图已保存到相册",
"录屏已保存到相册": "录屏已保存到相册",
"添加遥控": "添加遥控",
"已连接到锁,请按遥控": "已连接到锁,请按遥控",
"遥控号": "遥控号",
@ -1079,6 +1083,8 @@
"印度尼西亚语": "Bahasa Indonesia",
"芬兰语": "Suomi",
"丹麦语": "Dansk",
"印地语": "हिंदीName",
"乌尔都语": "اوردو",
"重置后,该锁的掌静脉都将被删除哦,确认要重置吗?": "重置后,该锁的掌静脉都将被删除哦,确认要重置吗?",
"在线": "在线",
"离线": "离线",
@ -1120,7 +1126,43 @@
"分简称": "分",
"跟随系统": "跟随系统",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
"通话未接通,已挂断": "通话未接通,已挂断",
"通话异常中断": "通话异常中断",
"通话连接失败": "通话连接失败",
"已挂断": "已挂断",
"正在说话...": "正在说话...",
"设备不在线": "设备不在线",
"设备未配网": "设备未配网",
"已静音": "已静音",
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
"下载完成,请到相册查看": "下载完成,请到相册查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
"版本说明": "版本说明",
"一键登录": "一键登录"
"呼叫目标": "呼叫目标",
"管理员APP": "管理员APP",
"可视门铃码": "可视门铃码",
"电子反锁": "电子反锁",
"双重认证": "双重认证",
"双锁联动": "双锁联动",
"1.用智能锁APP添加锁和网关": "1.用智能锁APP添加锁和网关",
"2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home": "2.在APP里开启锁的远程开锁功能这个功能默认是关闭的。如果没有这个选项则锁不支持Google Home",
"3.安装Google Home APP点击左上角的加号按钮": "3.安装Google Home APP点击左上角的加号按钮",
"4.在设置页面选择与Google协同工作": "4.在设置页面选择与Google协同工作",
"5.搜索": "5.搜索",
"并用智能锁APP的账号和密码进行授权": "并用智能锁APP的账号和密码进行授权",
"暂无最新记录": "暂无最新记录",
"请将手机切换至2.4G WiFi进行手动连接": "请将手机切换至2.4G WiFi进行手动连接",
"请扫描可视门铃码二维码": "请扫描可视门铃码二维码",
"请确保网络是2.4GHz Wi-Fi": "请确保网络是2.4GHz Wi-Fi",
"已选": "已选",
"是否要远程开锁": "是否要远程开锁",
"繁体中文(中国台湾)": "繁體中文(中國臺灣)",
"繁体中文(中国香港)": "繁體中文(中國香港)",
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
"请确认后再继续": "请确认后再继续",
"需要相机权限": "需要相机权限",
"一键登录": "一键登录",
"网关添加成功": "网关添加成功"
}

View File

@ -179,12 +179,19 @@ class BlueManage {
upload: false);
if (isExit) {
for (final ScanResult scanResult in results) {
if (((scanResult.advertisementData.serviceUuids.isNotEmpty
? scanResult.advertisementData.serviceUuids[0]
: '')
.toString()
.contains('758824')) &&
(scanResult.rssi >= -100)) {
if (scanResult.advertisementData.serviceUuids.isNotEmpty) {
// AppLog.log(
// '扫描到的设备:${scanResult.advertisementData.serviceUuids[0].toString()}');
} else {
continue;
}
final isMatch = _isMatch(scanResult
.advertisementData.serviceUuids
.map((e) => e.uuid)
.toList());
if (isMatch && (scanResult.rssi >= -100)) {
// id相同的元素
final int knownDeviceIndex = scanDevices.indexWhere(
(ScanResult d) =>
@ -253,14 +260,21 @@ class BlueManage {
FlutterBluePlus.scanResults.listen((List<ScanResult> results) {
scanDevices.clear();
for (final ScanResult scanResult in results) {
// AppLog.log('扫描到的设备:${scanResult.device.platformName} ${scanResult.advertisementData.advName} ${scanResult.rssi}');
if (scanResult.advertisementData.serviceUuids.isNotEmpty) {
// AppLog.log(
// '扫描到的设备:${scanResult.advertisementData.serviceUuids[0].toString()}');
} else {
continue;
}
final isMatch = _isMatch(
scanResult.advertisementData.serviceUuids
.map((e) => e.uuid)
.toList(),
deviceType: deviceType,
);
//
if (((scanResult.advertisementData.serviceUuids.isNotEmpty
? scanResult.advertisementData.serviceUuids[0]
: '')
.toString()
.contains(getDeviceType(deviceType))) &&
(scanResult.rssi >= -100)) {
if (isMatch && (scanResult.rssi >= -100)) {
// id相同的元素
final int knownDeviceIndex = scanDevices.indexWhere(
(ScanResult d) =>
@ -300,6 +314,24 @@ class BlueManage {
});
}
/// uuid
bool _isMatch(List<String> serviceUuids,
{DeviceType deviceType = DeviceType.blue}) {
//
List<String> deviceTypeList = getDeviceType(deviceType);
// serviceUuids deviceTypeList
if (serviceUuids != null && serviceUuids.isNotEmpty) {
return serviceUuids.any((uuid) {
return deviceTypeList
.any((type) => uuid.toLowerCase().contains(type.toLowerCase()));
});
}
// serviceUuids false
return false;
}
/// List senderData,
Future<void> blueSendData(
String deviceName, ConnectStateCallBack stateCallBack,
@ -499,8 +531,39 @@ class BlueManage {
}
AppLog.log('调用了停止扫描的方法');
await stopScan();
if (scanResult.advertisementData.serviceUuids[0].toString().length >= 5 &&
(scanResult.advertisementData.serviceUuids[0].toString()[5] == '0') &&
isAddEquipment == false) {
//
if (isReconnect == true) {
AppLog.log('该锁已被重置, 重新发送扫描命令');
if ((scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') &&
BuglyTool.uploadException(
message: '该锁已被重置, 重新发送扫描命令startScanSingle 上传记录当前方法是_connectDevice',
detail:
'添加这个判断是因为有些苹果设备或者安卓等性能比较好的设备时,添加完锁之后,锁板未改变为已添加状态之前,就进行了蓝牙连接,导致添加完锁就失败,这里进行了判断,如果第一次连接失败,就清除缓存重新扫描连接 该锁已被重置, 重新发送扫描命令 serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}',
upload: false);
scanDevices.clear();
startScanSingle(deviceName, 15, (List<ScanResult> scanDevices) {
_connectDevice(scanDevices, deviceName, connectStateCallBack,
isAddEquipment: isAddEquipment, isReconnect: false);
});
} else {
connectStateCallBack(BluetoothConnectionState.disconnected);
EasyLoading.showToast('该锁已被重置'.tr, duration: 2000.milliseconds);
scanDevices.clear();
BuglyTool.uploadException(
message: '提示该锁已被重置, 回调断开连接, 清除缓存上传记录当前方法是_connectDevice',
detail:
'isReconnect:$isReconnect serviceUuids:${scanResult.advertisementData.serviceUuids[0].toString()}',
upload: false);
}
return;
}
if (scanResult.advertisementData.serviceUuids[0].toString().length >= 30 &&
(scanResult.advertisementData.serviceUuids[0].toString()[31] == '0') &&
isAddEquipment == false) {
//
if (isReconnect == true) {

View File

@ -1,6 +1,6 @@
import 'dart:convert';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/tools/dateTool.dart';
import '../../app_settings/app_settings.dart';
@ -13,7 +13,6 @@ import 'package:crypto/crypto.dart' as crypto;
//
class ChangeAdministratorPasswordCommand extends SenderProtocol {
ChangeAdministratorPasswordCommand({
this.keyID,
this.userID,
@ -40,7 +39,6 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
List<int>? signKey;
List<int>? privateKey;
@override
String toString() {
return 'ChangeAdministratorPasswordCommand{keyID: $keyID, userID: $userID,'
@ -80,7 +78,12 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
subData = getFixedLengthList(subData, 20 - userIDLength);
// PwdNo
subData.addAll(intChangList(pwdNo!));
if (F.isSKY) {
subData.add(pwdNo! & 0xFF); //
subData.add((pwdNo! >> 8) & 0xFF); //
} else {
subData.addAll(intChangList(pwdNo!));
}
// pwd 20
final int pwdLength = utf8.encode(pwd!).length;
@ -105,7 +108,7 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
subData.add((endTime! & 0xff00) >> 8);
subData.add(endTime! & 0xff);
if(needAuthor == 0){
if (needAuthor == 0) {
//AuthCodeLen 1
subData.add(0);
} else {
@ -147,10 +150,11 @@ class ChangeAdministratorPasswordCommand extends SenderProtocol {
}
class ChangeAdministratorPasswordReply extends Reply {
ChangeAdministratorPasswordReply.parseData(CommandType commandType, List<int> dataDetail)
ChangeAdministratorPasswordReply.parseData(
CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
final int status = data[2];
errorWithStstus(status);
}
}
}

View File

@ -1,11 +1,10 @@
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import '../app_settings/app_settings.dart';
import 'io_type.dart';
abstract class Reply{
abstract class Reply {
Reply.parseData(this.commandType, List<int> dataDetail);
CommandType? commandType;
@ -13,10 +12,10 @@ abstract class Reply{
//command key flag
int status = 0;
List<int> data = [];
static String logTag= '锁 -> App指令订阅类型 :';
static String logTag = '锁 -> App指令订阅类型 :';
void errorWithStstus(int status){
switch(status){
void errorWithStstus(int status) {
switch (status) {
case 0x00:
//
AppLog.log('$logTag ${commandType?.typeName} 0x00 成功');
@ -39,7 +38,7 @@ abstract class Reply{
case 0x04:
//
AppLog.log('$logTag ${commandType!.typeName} 0x04 用户未登记');
// showErrorMessage('用户未登记');
showErrorMessage('用户未登记'.tr);
break;
case 0x05:
//
@ -133,7 +132,7 @@ abstract class Reply{
}
}
void showErrorMessage(String message){
void showErrorMessage(String message) {
EasyLoading.showToast(message, duration: 2000.milliseconds);
}

View File

@ -5,14 +5,14 @@ enum DeviceType {
gateway // 758825
}
String getDeviceType(DeviceType deviceType) {
String t = '758824';
List<String> getDeviceType(DeviceType deviceType) {
List<String> t = ['758824'];
switch (deviceType) {
case DeviceType.blue:
t = '758824';
t = ['758824', '75'];
break;
case DeviceType.gateway:
t = '758825';
t = ['758825'];
break;
}
return t;

View File

@ -57,7 +57,20 @@ class CommandReciverManager {
if (data.isEmpty) {
return;
}
final int dataSize = data.length;
// CRC校验
if (dataSize >= 2) {
final int calculatedCrc =
_calculateCRC16(data.sublist(0, dataSize - 2), dataSize - 2);
final int receivedCrc = (data[dataSize - 2] << 8) | data[dataSize - 1];
if (calculatedCrc != receivedCrc) {
AppLog.log('CRC校验失败');
return;
}
}
// 13
if (dataSize < 13) {
return;
@ -123,6 +136,16 @@ class CommandReciverManager {
}
}
// CRC16
static int _calculateCRC16(List<int> bytes, int len) {
int value = 0x0000;
for (int i = 0; i < len; i++) {
int tmp = _reverse8(bytes[i]);
value = ((value << 8) ^ _crcTable[(value >> 8) ^ tmp & 0xFF]) & 0xFFFF;
}
return _reverse16(value);
}
static Future<Reply?> parseData(List<int> data) async {
if (data.isNotEmpty) {
final int cmd = data[0] * 256 + data[1];
@ -472,4 +495,282 @@ class CommandReciverManager {
}
return null;
}
// CRC16
static const List<int> _crcTable = [
0x0000,
0x1021,
0x2042,
0x3063,
0x4084,
0x50a5,
0x60c6,
0x70e7,
0x8108,
0x9129,
0xa14a,
0xb16b,
0xc18c,
0xd1ad,
0xe1ce,
0xf1ef,
0x1231,
0x0210,
0x3273,
0x2252,
0x52b5,
0x4294,
0x72f7,
0x62d6,
0x9339,
0x8318,
0xb37b,
0xa35a,
0xd3bd,
0xc39c,
0xf3ff,
0xe3de,
0x2462,
0x3443,
0x0420,
0x1401,
0x64e6,
0x74c7,
0x44a4,
0x5485,
0xa56a,
0xb54b,
0x8528,
0x9509,
0xe5ee,
0xf5cf,
0xc5ac,
0xd58d,
0x3653,
0x2672,
0x1611,
0x0630,
0x76d7,
0x66f6,
0x5695,
0x46b4,
0xb75b,
0xa77a,
0x9719,
0x8738,
0xf7df,
0xe7fe,
0xd79d,
0xc7bc,
0x48c4,
0x58e5,
0x6886,
0x78a7,
0x0840,
0x1861,
0x2802,
0x3823,
0xc9cc,
0xd9ed,
0xe98e,
0xf9af,
0x8948,
0x9969,
0xa90a,
0xb92b,
0x5af5,
0x4ad4,
0x7ab7,
0x6a96,
0x1a71,
0x0a50,
0x3a33,
0x2a12,
0xdbfd,
0xcbdc,
0xfbbf,
0xeb9e,
0x9b79,
0x8b58,
0xbb3b,
0xab1a,
0x6ca6,
0x7c87,
0x4ce4,
0x5cc5,
0x2c22,
0x3c03,
0x0c60,
0x1c41,
0xedae,
0xfd8f,
0xcdec,
0xddcd,
0xad2a,
0xbd0b,
0x8d68,
0x9d49,
0x7e97,
0x6eb6,
0x5ed5,
0x4ef4,
0x3e13,
0x2e32,
0x1e51,
0x0e70,
0xff9f,
0xefbe,
0xdfdd,
0xcffc,
0xbf1b,
0xaf3a,
0x9f59,
0x8f78,
0x9188,
0x81a9,
0xb1ca,
0xa1eb,
0xd10c,
0xc12d,
0xf14e,
0xe16f,
0x1080,
0x00a1,
0x30c2,
0x20e3,
0x5004,
0x4025,
0x7046,
0x6067,
0x83b9,
0x9398,
0xa3fb,
0xb3da,
0xc33d,
0xd31c,
0xe37f,
0xf35e,
0x02b1,
0x1290,
0x22f3,
0x32d2,
0x4235,
0x5214,
0x6277,
0x7256,
0xb5ea,
0xa5cb,
0x95a8,
0x8589,
0xf56e,
0xe54f,
0xd52c,
0xc50d,
0x34e2,
0x24c3,
0x14a0,
0x0481,
0x7466,
0x6447,
0x5424,
0x4405,
0xa7db,
0xb7fa,
0x8799,
0x97b8,
0xe75f,
0xf77e,
0xc71d,
0xd73c,
0x26d3,
0x36f2,
0x0691,
0x16b0,
0x6657,
0x7676,
0x4615,
0x5634,
0xd94c,
0xc96d,
0xf90e,
0xe92f,
0x99c8,
0x89e9,
0xb98a,
0xa9ab,
0x5844,
0x4865,
0x7806,
0x6827,
0x18c0,
0x08e1,
0x3882,
0x28a3,
0xcb7d,
0xdb5c,
0xeb3f,
0xfb1e,
0x8bf9,
0x9bd8,
0xabbb,
0xbb9a,
0x4a75,
0x5a54,
0x6a37,
0x7a16,
0x0af1,
0x1ad0,
0x2ab3,
0x3a92,
0xfd2e,
0xed0f,
0xdd6c,
0xcd4d,
0xbdaa,
0xad8b,
0x9de8,
0x8dc9,
0x7c26,
0x6c07,
0x5c64,
0x4c45,
0x3ca2,
0x2c83,
0x1ce0,
0x0cc1,
0xef1f,
0xff3e,
0xcf5d,
0xdf7c,
0xaf9b,
0xbfba,
0x8fd9,
0x9ff8,
0x6e17,
0x7e36,
0x4e55,
0x5e74,
0x2e93,
0x3eb2,
0x0ed1,
0x1ef0
];
// 8
static int _reverse8(int data) {
int temp = 0;
for (int i = 0; i < 8; i++) {
temp |= ((data >> i) & 0x01) << (7 - i);
}
return temp;
}
// 16
static int _reverse16(int data) {
int temp = 0;
for (int i = 0; i < 16; i++) {
temp |= ((data >> i) & 0x0001) << (15 - i);
}
return temp;
}
}

View File

@ -263,7 +263,12 @@ class SM4 {
0x48
];
static const List<int> FK = <int>[0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC];
static const List<int> FK = <int>[
0xA3B1BAC6,
0x56AA3350,
0x677D9197,
0xB27022DC
];
static const List<int> CK = <int>[
0x00070e15,
@ -411,11 +416,27 @@ class SM4 {
}
return paddedList;
} else {
// PKCS7填充
final int lastByte = input.last;
if (lastByte > 0 && lastByte <= blockSize) {
//
bool isValidPadding = true;
for (int i = input.length - lastByte; i < input.length; i++) {
if (input[i] != lastByte) {
isValidPadding = false;
break;
}
}
if (isValidPadding) {
return input.sublist(0, input.length - lastByte);
}
}
return input;
// final lastByte = input.last;
// final cutLen = input.length - lastByte;
// AppLog.log("object input.length${input.length} lastByte:$lastByte input:$input cutLen:$cutLen");
// // AppLog.log("object input.length${input.length} lastByte:$lastByte input:$input cutLen:$cutLen");
// return input.sublist(0, cutLen);
return input;
// return input;
}
}
@ -480,7 +501,8 @@ class SM4 {
final List<int> supplementList = List.filled(16, 0x00);
/// complete list
final List<int> completeList = <int>[...list, ...supplementList].sublist(0, 16);
final List<int> completeList =
<int>[...list, ...supplementList].sublist(0, 16);
return completeList;
}

View File

@ -140,11 +140,11 @@ class F {
case Flavor.dev:
case Flavor.xhj_dev:
case Flavor.sky_dev:
return 'https://dev.lock.star-lock.cn';
return 'https://lock.dev.star-lock.cn';
case Flavor.pre:
case Flavor.xhj_pre:
case Flavor.sky_pre:
return 'https://pre.lock.star-lock.cn';
return 'https://lock.pre.star-lock.cn';
case Flavor.sky:
return 'https://lock.skychip.top';
case Flavor.xhj:

View File

@ -19,6 +19,7 @@ class StarLockForgetPasswordLogic extends BaseGetXController {
final StarLockForgetPasswordState state = StarLockForgetPasswordState();
late Timer _timer;
void _startTimer() {
_timer = Timer.periodic(1.seconds, (Timer timer) {
if (state.currentSecond > 1) {
@ -37,12 +38,12 @@ class StarLockForgetPasswordLogic extends BaseGetXController {
}
Future<void> resetPassword() async {
if(state.pwd.value != state.surePwd.value){
if (state.pwd.value != state.surePwd.value) {
showToast('两次密码不一致哦'.tr);
return;
}
if(!RegularExpression().validateString(state.pwd.value)){
if (!RegularExpression().validateString(state.pwd.value)) {
showToast('密码需至少包含数字/字母/字符中的2种组合'.tr);
return;
}
@ -56,42 +57,44 @@ class StarLockForgetPasswordLogic extends BaseGetXController {
state.verificationCode.value);
if (entity.errorCode!.codeIsSuccessful) {
ApmHelper.instance.trackEvent('resetPassword_result', {
'account':state.phoneStr.value,
'date':DateTool().getNowDateWithType(1),
'resetPassword_res':'成功',
'account': state.phoneStr.value,
'date': DateTool().getNowDateWithType(1),
'resetPassword_res': '成功',
});
showToast('重置成功'.tr);
Get.back();
}else{
} else {
ApmHelper.instance.trackEvent('resetPassword_result', {
'account':state.phoneStr.value,
'date':DateTool().getNowDateWithType(1),
'resetPassword_res':'${entity.errorCode}--${entity.errorMsg}',
'account': state.phoneStr.value,
'date': DateTool().getNowDateWithType(1),
'resetPassword_res': '${entity.errorCode}--${entity.errorMsg}',
});
}
}
Future<void> sendValidationCode() async {
final SendValidationCodeEntity entity = await ApiRepository.to.sendValidationCodeUnLogin(
// state.countryCode.value,
countryCode:state.countryCode.value,
account:state.phoneStr.value,
channel:state.codeType.value,
codeType:'2',
xWidth:state.xWidth.value.toString());
final SendValidationCodeEntity entity =
await ApiRepository.to.sendValidationCodeUnLogin(
// state.countryCode.value,
countryCode: state.countryCode.value,
account: state.phoneStr.value,
channel: state.codeType.value,
codeType: '2',
xWidth: state.xWidth.value.toString());
if (entity.errorCode!.codeIsSuccessful) {
_startTimer();
}
}
Future<void> checkIpAction() async {
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(
ip: ''
);
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
if (entity.errorCode!.codeIsSuccessful) {
if(state.countryName.value == entity.data!.name){
ShowTipView().showSureAlertDialog('国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr, tipTitle: '确认国家或地区'.tr, sureStr: '我知道了'.tr);
if (state.countryName.value != entity.data!.name) {
ShowTipView().showSureAlertDialog(
'国家地区的选择将影响数据安全,你当前选择的是' + state.countryName.value + '请确认后再继续'.tr,
tipTitle: '确认国家或地区'.tr,
sureStr: '我知道了'.tr);
}
}
}
@ -103,9 +106,9 @@ class StarLockForgetPasswordLogic extends BaseGetXController {
void changeInput(TextEditingController controller) {
if (controller == state.phoneController) {
state.phoneStr.value = controller.text;
if(state.phoneStr.value.contains('@')){
if (state.phoneStr.value.contains('@')) {
state.codeType.value = '2';
}else{
} else {
state.codeType.value = '1';
}
}
@ -120,11 +123,13 @@ class StarLockForgetPasswordLogic extends BaseGetXController {
}
_resetCanSendCode();
_resetCanSub();
AppLog.log('state.canSub.value:${state.canSub.value} state.pwdIsOK:${state.pwdIsOK} state.codeIsOK:${state.codeIsOK} state.phoneStr.value:${state.phoneStr.value}');
AppLog.log(
'state.canSub.value:${state.canSub.value} state.pwdIsOK:${state.pwdIsOK} state.codeIsOK:${state.codeIsOK} state.phoneStr.value:${state.phoneStr.value}');
}
void _resetCanSub() {
state.canSub.value = state.pwdIsOK && state.codeIsOK && state.phoneStr.value.isNotEmpty;
state.canSub.value =
state.pwdIsOK && state.codeIsOK && state.phoneStr.value.isNotEmpty;
}
void _resetCanSendCode() {

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -58,8 +57,7 @@ class _StarLockForgetPasswordPageState
children: <Widget>[
SizedBox(width: 5.w),
Expanded(
child: Text(
'国家/地区'.tr,
child: Text('国家/地区'.tr,
style: TextStyle(
fontSize: 26.sp, color: AppColors.blackColor))),
SizedBox(width: 20.w),

View File

@ -1,19 +1,21 @@
import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/apm/apm_helper.dart';
import 'package:jverify/jverify.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/blue/blue_manage.dart';
import 'package:star_lock/blue/io_tool/manager_event_bus.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/mine/mine/starLockMine_state.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
import 'package:star_lock/network/start_chart_api.dart';
import 'package:star_lock/talk/starChart/entity/star_chart_register_node_entity.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/translations/current_locale_tool.dart';
import '../../main/lockMian/lockMain/lockMain_logic.dart';
import '../../mine/mine/starLockMine_logic.dart';
@ -101,39 +103,47 @@ class StarLockLoginLogic extends BaseGetXController {
}
}
Future<void> oneClickLoginAction() async {
await JverifyOneClickLoginManage().loginAuth((e) async {
Future<void> oneClickLoginAction(BuildContext context) async {
await JverifyOneClickLoginManage().loginAuth(context,(e) async {
final int? code = e.code;
final String? content = e.message;
// final String operator = map['operator'];
AppLog.log('1111code:$code content:$content');
if (code == 6000) {
final LoginEntity entity = await ApiRepository.to.oneClickLogin(
loginType: '3',
loginToken: content ?? '',
deviceInfo: state.deviceInfoMap);
if (entity.errorCode!.codeIsSuccessful) {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '成功',
});
switch (code) {
case 6000:
final LoginEntity entity = await ApiRepository.to.oneClickLogin(
loginType: '3',
loginToken: content ?? '',
deviceInfo: state.deviceInfoMap);
if (entity.errorCode!.codeIsSuccessful) {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '成功',
});
Storage.saveLoginData(entity.data);
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
eventBus.fire(MineInfoChangeRefreshUI());
if (Get.isRegistered<LockMainLogic>()) {
Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
Storage.saveLoginData(entity.data);
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
eventBus.fire(MineInfoChangeRefreshUI());
if (Get.isRegistered<LockMainLogic>()) {
Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
}
Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
BlueManage().scanDevices.clear(); //
} else {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '${entity.errorCode}--${entity.errorMsg}',
});
}
Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
BlueManage().scanDevices.clear(); //
} else {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '${entity.errorCode}--${entity.errorMsg}',
});
}
break;
case 6002:
// showToast('用户取消一键登录'.tr);
break;
default:
showToast('一键登录失败,请使用账号/密码登录'.tr);
break;
}
});
}
@ -141,9 +151,9 @@ class StarLockLoginLogic extends BaseGetXController {
Future<void> checkIpAction() async {
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
if (entity.errorCode!.codeIsSuccessful) {
if (state.countryName == entity.data!.name) {
if (state.countryName != entity.data!.name) {
ShowTipView().showSureAlertDialog(
'国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr,
'国家地区的选择将影响数据安全,你当前选择的是' + state.countryName + '请确认后再继续'.tr,
tipTitle: '确认国家或地区'.tr,
sureStr: '我知道了'.tr);
}
@ -175,24 +185,45 @@ class StarLockLoginLogic extends BaseGetXController {
state.canNext.value = state.pwdIsOK && state.isEmailOrPhone;
}
late StreamSubscription _agreePrivacySubscription;
void _initEventListen() {
_agreePrivacySubscription = eventBus
.on<AgreePrivacyAgreement>()
.listen((AgreePrivacyAgreement event) async {
/// ip如果属于国内才进行初始化
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
String currentLanguage =
CurrentLocaleTool.getCurrentLocaleString(); //
// ip是国内的且选的是中文才初始化一键登录
if (entity.data!.abbreviation?.toLowerCase() == 'cn' &&
currentLanguage == 'zh_CN') {
//
await JverifyOneClickLoginManage();
state.isCheckVerifyEnable.value =
await JverifyOneClickLoginManage().checkVerifyEnable();
AppLog.log('一键登录初始化认证结果:${state.isCheckVerifyEnable.value}');
}
});
}
@override
Future<void> onInit() async {
_initEventListen();
super.onInit();
JverifyOneClickLoginManage();
oneClickLoginAction();
state.isCheckVerifyEnable.value =
await JverifyOneClickLoginManage().checkVerifyEnable();
}
@override
void onClose() {
//
_agreePrivacySubscription.cancel();
state.onClose();
super.onClose();
}
//
//
Future<void> flushedDeviceInfo() async {
eventBus.fire(AgreePrivacyAgreement());
XSConstantMacro().getDeviceInfoData().then((Map<String, dynamic> data) {
state.deviceInfoMap.value = data;
}).catchError((dynamic error) {

View File

@ -108,7 +108,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryKey = result['countryName'];
state.countryKey.value = result['countryName'];
logic.checkIpAction();
}
},
@ -133,6 +133,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
inputFormatters: <TextInputFormatter>[
// FilteringTextInputFormatter.allow(RegExp('[0-9]')),
LengthLimitingTextInputFormatter(30),
FilteringTextInputFormatter.singleLineFormatter
]),
SizedBox(height: 10.h),
LoginInput(
@ -282,7 +283,8 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
width: 10.sp,
)),
Obx(() => Visibility(
visible: state.isCheckVerifyEnable.value,
visible: state.isCheckVerifyEnable.value &&
state.currentLanguage == 'zh_CN',
child: GestureDetector(
child: SizedBox(
// width: 150.w,
@ -295,7 +297,9 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
color: AppColors.mainColor)),
),
),
onTap: logic.oneClickLoginAction,
onTap: () {
logic.oneClickLoginAction(context);
},
),
))
],

View File

@ -46,7 +46,8 @@ class StarLockLoginState {
}.obs;
RxBool isCheckVerifyEnable = false.obs;
RxString currentLanguage =
CurrentLocaleTool.getCurrentLocaleString().obs; //
void onClose() {
// emailOrPhoneController.dispose();
// pwdController.dispose();

View File

@ -243,7 +243,7 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
),
),
onTap: () async {
logic.oneClickLoginAction();
logic.oneClickLoginAction(context);
},
),
))

View File

@ -100,9 +100,11 @@ class StarLockRegisterLogic 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.value != entity.data!.name) {
ShowTipView().showSureAlertDialog(
'国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr,
'国家地区的选择将影响数据安全,你当前选择的是'.tr +
'${state.countryName.value},' +
'请确认后再继续'.tr,
tipTitle: '确认国家或地区'.tr,
sureStr: '我知道了'.tr);
}

View File

@ -1,4 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -87,7 +87,8 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
onTap: () {
state.isIphoneType.value = true;
},
child: Obx(() => Container(
child: Obx(
() => Container(
width: 170.w,
height: 60.h,
decoration: state.isIphoneType.value
@ -99,39 +100,52 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
width: 1.0, color: AppColors.greyLineColor))
: null,
child: Center(
child: Text(
'手机'.tr,
style: TextStyle(
color: state.isIphoneType.value
? Colors.white
: Colors.black),
)))),
child: Text(
'手机'.tr,
style: TextStyle(
color: state.isIphoneType.value
? Colors.white
: Colors.black),
),
),
),
),
),
Expanded(
child: GestureDetector(
onTap: () {
state.isIphoneType.value = false;
},
child: Obx(() => Container(
child: Obx(
() => Container(
height: 60.h,
// color: Colors.red,
decoration: state.isIphoneType.value
? null
: BoxDecoration(
color: AppColors.mainColor,
borderRadius:
BorderRadius.all(Radius.circular(30.h)),
borderRadius: BorderRadius.all(
Radius.circular(
30.h,
),
),
border: Border.all(
width: 1.0,
color: AppColors.greyLineColor)),
width: 1.0,
color: AppColors.greyLineColor,
),
),
child: Center(
child: Text(
'邮箱'.tr,
style: TextStyle(
child: Text(
'邮箱'.tr,
style: TextStyle(
color: state.isIphoneType.value
? Colors.black
: Colors.white),
)))),
: Colors.white,
),
),
),
),
),
),
),
],
@ -157,8 +171,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
children: <Widget>[
SizedBox(width: 5.w),
Expanded(
child: Text(
'你所在的国家/地区'.tr,
child: Text('你所在的国家/地区'.tr,
style: TextStyle(
fontSize: 26.sp, color: AppColors.blackColor))),
SizedBox(width: 20.w),
@ -213,8 +226,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
height: 30.w,
),
),
hintText:
state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr,
hintText: state.isIphoneType.value ? '请输入手机号'.tr : '请输入邮箱'.tr,
keyboardType: TextInputType.number,
inputFormatters: <TextInputFormatter>[
// FilteringTextInputFormatter.allow(RegExp('[0-9]')),
@ -236,7 +248,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
height: 30.w,
),
),
hintText:'请输入密码'.tr,
hintText: '请输入密码'.tr,
inputFormatters: <TextInputFormatter>[
LengthLimitingTextInputFormatter(20),
]),
@ -282,8 +294,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
height: 30.w,
),
),
hintText:
'请输入验证码'.tr,
hintText: '请输入验证码'.tr,
inputFormatters: <TextInputFormatter>[
LengthLimitingTextInputFormatter(20),
]),
@ -292,29 +303,29 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
width: 20.w,
),
Obx(() => GestureDetector(
onTap:
(state.canSendCode.value && state.canResend.value)
? () async {
// Navigator.pushNamed(context, Routers.safetyVerificationPage, arguments: {"countryCode":"+86", "account":state.phoneOrEmailStr.value});
final Object? result = await Navigator.pushNamed(
context, Routers.safetyVerificationPage,
arguments: <String, Object>{
'countryCode': state.countryCode,
'account': state.phoneOrEmailStr.value
});
state.xWidth.value =
(result! as Map<String, dynamic>)['xWidth'];
logic.sendValidationCode();
}
: null,
onTap: (state.canSendCode.value && state.canResend.value)
? () async {
// Navigator.pushNamed(context, Routers.safetyVerificationPage, arguments: {"countryCode":"+86", "account":state.phoneOrEmailStr.value});
final Object? result = await Navigator.pushNamed(
context, Routers.safetyVerificationPage,
arguments: <String, Object>{
'countryCode': state.countryCode,
'account': state.phoneOrEmailStr.value
});
state.xWidth.value =
(result! as Map<String, dynamic>)['xWidth'];
logic.sendValidationCode();
}
: null,
child: Container(
width: 180.w,
// height: 60.h,
padding: EdgeInsets.all(10.h),
decoration: BoxDecoration(
color: (state.canSendCode.value && state.canResend.value)
? AppColors.mainColor
: Colors.grey,
color:
(state.canSendCode.value && state.canResend.value)
? AppColors.mainColor
: Colors.grey,
borderRadius: BorderRadius.circular(5)),
child: Center(
child: Text(state.btnText.value,
@ -361,29 +372,29 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'用户协议'.tr}',
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
});
},
)),
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text(
'${'隐私政策'.tr}',
child: Text('${'隐私政策'.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {
Get.toNamed(Routers.webviewShowPage, arguments: <String, String>{
'url': XSConstantMacro.privacyPolicyURL,
'title': '隐私政策'.tr
});
Get.toNamed(Routers.webviewShowPage,
arguments: <String, String>{
'url': XSConstantMacro.privacyPolicyURL,
'title': '隐私政策'.tr
});
},
)),
],

View File

@ -9,18 +9,24 @@ import 'package:get/get.dart';
import 'package:path/path.dart' as path;
import 'package:provider/provider.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_logic.dart';
import 'package:star_lock/login/register/entity/checkIP_entity.dart';
import 'package:star_lock/mine/about/debug/debug_tool.dart';
import 'package:star_lock/network/api_provider.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/network/start_chart_api.dart';
import 'package:star_lock/talk/starChart/handle/impl/debug_Info_model.dart';
import 'package:star_lock/talk/starChart/status/appLifecycle_observer.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/bugly/bugly_tool.dart';
import 'package:star_lock/tools/device_info_service.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/tools/jverify_one_click_login.dart';
import 'package:star_lock/tools/platform_info_services.dart';
import 'package:star_lock/tools/push/notification_service.dart';
import 'package:star_lock/tools/push/xs_jPhush.dart';
import 'package:star_lock/tools/storage.dart';
import 'package:star_lock/translations/current_locale_tool.dart';
import 'package:star_lock/translations/trans_lib.dart';
import 'apm/apm_helper.dart';
@ -99,4 +105,21 @@ Future<void> privacySDKInitialization() async {
final XSJPushProvider jpushProvider = XSJPushProvider();
await jpushProvider.initJPushService();
NotificationService().init(); //
/// ip如果属于国内才进行初始化
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
if (entity.errorCode!.codeIsSuccessful) {
String currentLanguage =
CurrentLocaleTool.getCurrentLocaleString(); //
// ip是国内的且选的是中文才初始化一键登录
if (entity.data!.abbreviation?.toLowerCase() == 'cn' &&
currentLanguage == 'zh_CN') {
//
final StarLockLoginLogic loginLogic = Get.put(StarLockLoginLogic());
await JverifyOneClickLoginManage();
loginLogic.state.isCheckVerifyEnable.value =
await JverifyOneClickLoginManage().checkVerifyEnable();
eventBus.fire(AgreePrivacyAgreement());
}
}
}

View File

@ -333,6 +333,16 @@ class AuthorizedAdminLogic extends BaseGetXController {
}
}
@override
void onInit() {
super.onInit();
//
state.emailOrPhoneController.addListener(() {
state.emailOrPhone.value = state.emailOrPhoneController.text;
});
}
@override
void onReady() {
super.onReady();

View File

@ -10,6 +10,7 @@ import 'package:star_lock/tools/dateTool.dart';
import 'package:star_lock/tools/pickers/pickers.dart';
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
import 'package:star_lock/tools/regularExpression.dart';
import 'package:star_lock/tools/showTipView.dart';
import 'package:star_lock/tools/storage.dart';
@ -114,29 +115,32 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
// isHaveRightWidget: true,
// rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
perpetualKeyWidget('接收者'.tr, '请输入手机号或者邮箱'.tr),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${state.countryName.value} +${state.countryCode.value}',
textAlign: TextAlign.end,
style:
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
setState(() {});
}
},
),
Obx(() => Visibility(
visible: RegularExpression()
.isPhoneNumber(logic.state.emailOrPhone.value),
child: CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${state.countryName.value} +${state.countryCode.value}',
textAlign: TextAlign.end,
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
setState(() {});
}
},
))),
KeyNameItem(
leftTitel: '姓名'.tr,
rightTitle: '请输入'.tr,
@ -268,6 +272,10 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
)
],
),
),
Container(
color: AppColors.greyLineColor, //
height: 2.0.h, //
)
],
);
@ -571,6 +579,9 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage>
BorderSide(width: 0, color: Colors.transparent)),
contentPadding: const EdgeInsets.symmetric(vertical: 0),
),
onChanged: (value) {
logic.update();
},
),
),
SizedBox(

View File

@ -6,6 +6,7 @@ import 'package:star_lock/tools/dateTool.dart';
class AuthorizedAdminState {
final TextEditingController emailOrPhoneController =
TextEditingController(); ///
RxString emailOrPhone = ''.obs; // logic的state中添加一个Rx变量
final TextEditingController keyNameController =
TextEditingController(); //
late TabController tabController;

View File

@ -1,4 +1,3 @@
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart';
import 'package:star_lock/network/api_repository.dart';
@ -57,4 +56,13 @@ class VolumeAuthorizationLockLogic extends BaseGetXController {
}
}
@override
void onInit() {
super.onInit();
//
state.emailOrPhoneController.addListener(() {
state.emailOrPhone.value = state.emailOrPhoneController.text;
});
}
}

View File

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@ -11,6 +10,7 @@ import 'package:star_lock/main/lockDetail/authorizedAdmin/volumeAuthorizationLoc
import 'package:star_lock/tools/pickers/pickers.dart';
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
import 'package:star_lock/tools/regularExpression.dart';
import 'package:star_lock/tools/showTipView.dart';
import '../../../../appRouters.dart';
@ -90,40 +90,38 @@ class _VolumeAuthorizationLockPageState
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: getTFWidget(
true,
'请输入手机号或者邮箱'.tr,
state.emailOrPhoneController)),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${state.countryName.value} +${state.countryCode.value}',
textAlign: TextAlign.end,
style:
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
// setState(() {});
}
},
),
true, '请输入手机号或者邮箱'.tr, state.emailOrPhoneController)),
Obx(() => Visibility(
visible: RegularExpression()
.isPhoneNumber(logic.state.emailOrPhone.value),
child: CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${state.countryName.value} +${state.countryCode.value}',
textAlign: TextAlign.end,
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
state.countryCode.value = result['code'];
state.countryName.value = result['countryName'];
// setState(() {});
}
},
))),
CommonItem(
leftTitel: '姓名'.tr,
rightTitle: '',
isHaveRightWidget: true,
rightWidget: getTFWidget(
false,
'请输入'.tr,
state.keyNameController)),
rightWidget: getTFWidget(false, '请输入'.tr, state.keyNameController)),
Container(height: 10.h),
],
);
@ -186,7 +184,8 @@ class _VolumeAuthorizationLockPageState
: state.lockIdList.length.toString(),
isHaveDirection: true,
action: () async {
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
final result = await Get.toNamed(
Routers.massSendLockGroupListPage,
arguments: <String, Object>{
'keyLimits': '1',
'lockIdList': state.lockIdList.value

View File

@ -4,8 +4,11 @@ import 'package:get/get.dart';
class VolumeAuthorizationLockState {
final FlutterContactPicker contactPicker = FlutterContactPicker();
final TextEditingController emailOrPhoneController = TextEditingController(); ///
final TextEditingController keyNameController = TextEditingController(); //
final TextEditingController emailOrPhoneController =
TextEditingController(); ///
RxString emailOrPhone = ''.obs; // logic的state中添加一个Rx变量
final TextEditingController keyNameController =
TextEditingController(); //
late Contact contact;
RxList<int> lockIdList = <int>[].obs;
RxBool isSendSuccess = false.obs;

View File

@ -80,7 +80,7 @@ class AddICCardLogic extends BaseGetXController {
final List<int> token = reply.data.sublist(5, 9);
final List<String> saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
// AppLog.log('添加卡token:$token');
AppLog.log('添加卡token:$token');
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID: '1',
@ -107,6 +107,14 @@ class AddICCardLogic extends BaseGetXController {
token: token,
isBeforeAddUser: false);
break;
case 0xFE:
case 12:
//
state.ifAddState.value = false;
showToast('管理员已满'.tr, something: () {
Get.back();
});
break;
default:
//
state.ifAddState.value = false;
@ -146,6 +154,7 @@ class AddICCardLogic extends BaseGetXController {
Get.close(1);
break;
case 0xFE:
case 0x12:
//
showToast('管理员已满'.tr);
Get.close(1);

View File

@ -28,6 +28,7 @@ class CardListLogic extends BaseGetXController {
//
late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
@ -69,11 +70,15 @@ class CardListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
cardNo: state.deletCardNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -116,11 +121,15 @@ class CardListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
cardNo: state.deletCardNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -193,6 +202,7 @@ class CardListLogic extends BaseGetXController {
//
late StreamSubscription _teamEvent;
void _initRefreshAction() {
_teamEvent = eventBus
.on<OtherTypeRefreshListEvent>()
@ -238,8 +248,9 @@ class CardListLogic extends BaseGetXController {
if (isDemoMode == false) {
_initReplySubscription();
_initRefreshAction();
// _initRefreshAction();
}
await getICCardListData(isRefresh: true);
}
@override

View File

@ -31,24 +31,24 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
final CardListLogic logic = Get.put(CardListLogic());
final CardListState state = Get.find<CardListLogic>().state;
Future<void> getHttpData({required bool isRefresh}) async {
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
logic
.getICCardListData(isRefresh: isRefresh)
.then((FingerprintListDataEntity value) {
if (mounted) {
setState(() {});
}
});
}
}
// Future<void> logic.getICCardListData({required bool isRefresh}) async {
// final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
// if (isDemoMode == false) {
// logic
// .getICCardListData(isRefresh: isRefresh)
// .then((FingerprintListDataEntity value) {
// if (mounted) {
// setState(() {});
// }
// });
// }
// }
@override
void initState() {
super.initState();
getHttpData(isRefresh: true);
// logic.getICCardListData(isRefresh: true);
}
@override
@ -92,17 +92,17 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
),
body: EasyRefreshTool(
onRefresh: () {
getHttpData(isRefresh: true);
logic.getICCardListData(isRefresh: true);
},
onLoad: () {
getHttpData(isRefresh: false);
logic.getICCardListData(isRefresh: false);
},
child: Column(
children: <Widget>[
KeySearchWidget(
editingController: state.searchController,
onSubmittedAction: () {
getHttpData(isRefresh: true);
logic.getICCardListData(isRefresh: true);
},
),
SizedBox(height: 20.h),
@ -115,10 +115,10 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
'fromType': 1 // 1 2
})!
.then((value) {
getHttpData(isRefresh: true);
logic.getICCardListData(isRefresh: true);
});
// if (data != null) {
// getHttpData(isRefresh: true);
// logic.getICCardListData(isRefresh: true);
// }
},
),
@ -180,9 +180,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
arguments: <String, FingerprintItemData>{
'fingerprintItemData': fingerprintItemData,
})!
.then((value) => getHttpData(isRefresh: true));
.then((value) => logic.getICCardListData(isRefresh: true));
// if (data != null) {
// getHttpData(isRefresh: true);
// logic.getICCardListData(isRefresh: true);
// }
}),
);

View File

@ -54,9 +54,11 @@ class DoorLockLogLogic extends BaseGetXController {
switch (status) {
case 0x00:
dismissEasyLoading();
cancelBlueConnetctToastTimer();
//
final int dataLength = (reply.data[5] << 8) + reply.data[6];
// AppLog.log("dataLength:$dataLength");
AppLog.log("dataLength:$dataLength");
// var dataLength = reply.data[5];
if (dataLength > 0) {
reply.data.removeRange(0, 7);
@ -108,6 +110,8 @@ class DoorLockLogLogic extends BaseGetXController {
state.ifHaveNext = false;
}
lockRecordUploadData(uploadList);
} else {
showToast('暂无最新记录'.tr);
}
break;
case 0x06:
@ -117,6 +121,7 @@ class DoorLockLogLogic extends BaseGetXController {
default:
//
dismissEasyLoading();
cancelBlueConnetctToastTimer();
break;
}
}
@ -148,30 +153,23 @@ class DoorLockLogLogic extends BaseGetXController {
).toString();
showEasyLoading();
showBlueConnetctToastTimer(
isShowBlueConnetctToast: true,
action: () async {
cancelBlueConnetctToastTimer();
showBlueConnetctToastTimer(action: () async {
dismissEasyLoading();
final String getMobile = (await Storage.getMobile())!;
ApmHelper.instance.trackEvent('check_doorLockLog', {
'lockName': state.keyInfos.value.lockName!,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'open_lock_result': '超时',
});
final String getMobile = (await Storage.getMobile())!;
ApmHelper.instance.trackEvent('check_doorLockLog', {
'lockName': state.keyInfos.value.lockName!,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'open_lock_result': '超时',
});
BuglyTool.uploadException(
message: '查询锁记录超时-查询锁记录失败',
detail:
'添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command',
eventStr: '查询锁记录事件超时',
upload: true);
if (state.isLockReceiveResponse == false) {
dismissEasyLoading();
}
});
BuglyTool.uploadException(
message: '查询锁记录超时-查询锁记录失败',
detail: '添加密码超时,查询锁记录失败--senderReferEventRecordTimeCommand:$command',
eventStr: '查询锁记录事件超时',
upload: true);
});
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState connectionStateState) async {
if (connectionStateState == BluetoothConnectionState.connected) {
@ -303,20 +301,22 @@ class DoorLockLogLogic extends BaseGetXController {
lockId: state.keyInfos.value.lockId.toString(), records: list);
final String getMobile = (await Storage.getMobile())!;
if (entity.errorCode!.codeIsSuccessful) {
if (state.ifHaveNext == true) {
showEasyLoading();
getLockRecordLastUploadDataTime();
} else {
ApmHelper.instance.trackEvent('check_doorLockLog', {
'lockName': state.keyInfos.value.lockName!,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'open_lock_result': '成功',
});
mockNetworkDataRequest(isRefresh: true);
}
dismissEasyLoading();
showToast('操作成功'.tr, something: () async {
dismissEasyLoading();
if (state.ifHaveNext == true) {
showEasyLoading();
getLockRecordLastUploadDataTime();
} else {
ApmHelper.instance.trackEvent('check_doorLockLog', {
'lockName': state.keyInfos.value.lockName!,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'open_lock_result': '成功',
});
mockNetworkDataRequest(isRefresh: true);
}
});
} else {
ApmHelper.instance.trackEvent('check_doorLockLog', {
'lockName': state.keyInfos.value.lockName!,

View File

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -17,7 +16,8 @@ import 'massSendElectronicKey_logic.dart';
import 'massSendElectronicKey_state.dart';
class MassSendElectronicKeyPage extends StatefulWidget {
const MassSendElectronicKeyPage({required this.type, Key? key}) : super(key: key);
const MassSendElectronicKeyPage({required this.type, Key? key})
: super(key: key);
final String type;
@override
@ -26,8 +26,10 @@ class MassSendElectronicKeyPage extends StatefulWidget {
}
class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
final MassSendElectronicKeyLogic logic = Get.put(MassSendElectronicKeyLogic());
final MassSendElectronicKeyState state = Get.find<MassSendElectronicKeyLogic>().state;
final MassSendElectronicKeyLogic logic =
Get.put(MassSendElectronicKeyLogic());
final MassSendElectronicKeyState state =
Get.find<MassSendElectronicKeyLogic>().state;
@override
initState() {
@ -47,9 +49,7 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
state.type.value = widget.type;
return SingleChildScrollView(
child: state.isDemoMode
? indexChangeWidget()
: Obx(indexChangeWidget),
child: state.isDemoMode ? indexChangeWidget() : Obx(indexChangeWidget),
);
}
@ -153,25 +153,25 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
return Column(
children: <Widget>[
Obx(() => CommonItem(
leftTitel: '接收者'.tr,
rightTitle: state.receiverList.value.isEmpty
? '请添加'.tr
: state.receiverList.value.length.toString(),
isHaveLine: true,
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.massSendReceiverPage,
arguments: <String, List>{
'lockUserList': state.receiverList.value,
}).then((Object? value) {
if (value != null) {
value as Map<String, dynamic>;
state.receiverList.value = value['lockUserList'];
// setState(() {});
}
});
},
)),
leftTitel: '接收者'.tr,
rightTitle: state.receiverList.value.isEmpty
? '请添加'.tr
: state.receiverList.value.length.toString(),
isHaveLine: true,
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.massSendReceiverPage,
arguments: <String, List>{
'lockUserList': state.receiverList.value,
}).then((Object? value) {
if (value != null) {
value as Map<String, dynamic>;
state.receiverList.value = value['lockUserList'];
// setState(() {});
}
});
},
)),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
@ -202,7 +202,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
: state.lockIdList.length.toString(),
isHaveDirection: true,
action: () async {
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
final result = await Get.toNamed(
Routers.massSendLockGroupListPage,
arguments: <String, Object>{
'keyLimits': '2',
'lockIdList': state.lockIdList
@ -235,7 +236,8 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
PDuration selectDate =
PDuration.parse(DateTime.tryParse(state.beginTime.value));
Pickers.showDatePicker(context,
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
selectDate: selectDate,
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
state.beginTime.value = DateTool().getYMDHNDateString(p, 1);
});
})),
@ -244,8 +246,11 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
rightTitle: state.endTime.value,
isHaveDirection: true,
action: () {
PDuration selectDate = PDuration.parse(DateTime.tryParse(state.endTime.value));
Pickers.showDatePicker(context, selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
PDuration selectDate =
PDuration.parse(DateTime.tryParse(state.endTime.value));
Pickers.showDatePicker(context,
selectDate: selectDate,
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
state.endTime.value = DateTool().getYMDHNDateString(p, 1);
});
})),
@ -279,14 +284,14 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
isHaveDirection: true,
isHaveLine: true,
action: () async {
var result =
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: <String, Object>{
'validityValue': state.weekdaysList.value,
'starDate': state.beginTime.value,
'endDate': state.endTime.value,
'starTime': state.effectiveDateTime.value,
'endTime': state.failureDateTime.value
});
var result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
arguments: <String, Object>{
'validityValue': state.weekdaysList.value,
'starDate': state.beginTime.value,
'endDate': state.endTime.value,
'starTime': state.effectiveDateTime.value,
'endTime': state.failureDateTime.value
});
if (result != null && result.isNotEmpty) {
state.weekdaysList.value = result['validityValue'];
state.beginTime.value = result['starDate'];
@ -376,5 +381,4 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
},
);
}
}

View File

@ -39,6 +39,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
void onInit() {
super.onInit();
//
state.emailOrPhoneController.addListener(() {
state.emailOrPhone.value = state.emailOrPhoneController.text;
});
Storage.getBool(ifIsDemoModeOrNot)
.then((bool? value) => state.isDemoMode = value ?? false);
}
@ -186,10 +191,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
final String getMobile = (await Storage.getMobile())!;
if (entity.errorCode!.codeIsSuccessful) {
ApmHelper.instance.trackEvent('add_electronic_key', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_electronic_key_result':'成功',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_electronic_key_result': '成功',
});
emailOrPhone = state.emailOrPhoneController.text;
@ -202,10 +208,11 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
eventBus.fire(ElectronicKeyListRefreshUI());
} else {
ApmHelper.instance.trackEvent('add_electronic_key', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_electronic_key_result':'${entity.errorCode}--${entity.errorMsg}',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_electronic_key_result': '${entity.errorCode}--${entity.errorMsg}',
});
emailOrPhone = null;

View File

@ -17,6 +17,7 @@ import 'package:star_lock/tools/dateTool.dart';
import 'package:star_lock/tools/pickers/pickers.dart';
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart';
import 'package:star_lock/tools/regularExpression.dart';
import 'package:star_lock/tools/showTipView.dart';
import 'package:star_lock/tools/submitBtn.dart';
@ -114,29 +115,33 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
// 1,
// logic)),
perpetualKeyWidget(logic, '接收者'.tr, '请输入手机号或者邮箱'.tr),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${logic.state.countryName} +${logic.state.countryCode}',
textAlign: TextAlign.end,
style:
TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
logic.state.countryCode = result['code'];
logic.state.countryName = result['countryName'];
logic.update();
}
},
),
Obx(() => Visibility(
visible: RegularExpression()
.isPhoneNumber(logic.state.emailOrPhone.value),
child: CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
isHaveLine: true,
isHaveRightWidget: true,
isHaveDirection: true,
rightWidget: Text(
'${logic.state.countryName} +${logic.state.countryCode}',
textAlign: TextAlign.end,
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
),
action: () async {
final Object? result = await Navigator.pushNamed(
context, Routers.selectCountryRegionPage);
if (result != null) {
result as Map<String, dynamic>;
logic.state.countryCode = result['code'];
logic.state.countryName = result['countryName'];
logic.update();
}
},
),
)),
CommonItem(
leftTitel: '姓名'.tr,
rightTitle: '',
@ -526,7 +531,8 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
SizedBox(
height: 10.h,
),
if (logic.emailOrPhone != null)
if (logic.emailOrPhone != null &&
logic.state.currentLanguage.value == 'zh_CN')
OutLineBtn(
btnName: '微信通知'.tr,
onClick: () {
@ -589,6 +595,9 @@ class _SendElectronicKeyViewState extends State<SendElectronicKeyView>
),
style: TextStyle(
fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
onChanged: (String value) {
logic.update();
},
),
),
SizedBox(

View File

@ -2,10 +2,15 @@ import 'package:flutter/material.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:get/get.dart';
import 'package:star_lock/tools/dateTool.dart';
import 'package:star_lock/translations/current_locale_tool.dart';
class SendElectronicKeyViewState {
//
TextEditingController emailOrPhoneController =
TextEditingController(); ///
//
RxString emailOrPhone = ''.obs; // logic的state中添加一个Rx变量
TextEditingController keyNameController = TextEditingController(); //
TextEditingController realNameController = TextEditingController(); //
TextEditingController idCardController = TextEditingController(); //
@ -37,5 +42,8 @@ class SendElectronicKeyViewState {
final String timeLimitTips = '接收者在有效期内可以不限次数使用'.tr; //
final String permanentTips = '接收者可以使用此App开关锁'.tr; //
final String onceLimitTips = '单次钥匙有效期为1小时只能使用一次'.tr; //
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr; //
final String cycleLimitTips = '接收者可以在有效期内的固定时间段里,不限次数使用'.tr;
RxString currentLanguage =
CurrentLocaleTool.getCurrentLocaleString().obs; //
}

View File

@ -95,6 +95,9 @@ class _SendEmailNotificationPageState extends State<SendEmailNotificationPage> {
maxLength: 1000,
textAlign: TextAlign.start,
controller: state.templateContentController,
keyboardType: TextInputType.multiline, //
textInputAction: TextInputAction.done, //
onEditingComplete: () => FocusScope.of(context).unfocus(), //
style: TextStyle(
color: Colors.black,
fontSize: 22.sp,

View File

@ -54,7 +54,7 @@ class AddFaceLogic extends BaseGetXController {
//
state.maxRegCount.value = reply.data[11];
// AppLog.log('人脸开始state.maxRegCount.value:${state.maxRegCount.value}');
AppLog.log('人脸开始state.maxRegCount.value:${state.maxRegCount.value}');
break;
case 0x06:
//
@ -89,6 +89,12 @@ class AddFaceLogic extends BaseGetXController {
isBeforeAddUser: false
);
break;
case 0xFE:
case 12:
//
showToast('管理员已满'.tr);
Get.close(1);
break;
default:
//
state.ifAddState.value = false;
@ -112,9 +118,9 @@ class AddFaceLogic extends BaseGetXController {
Get.close(1);
break;
case 0xFE:
case 12:
//
showToast('管理员已满'.tr);
state.ifAddState.value = false;
Get.close(1);
break;
case 0xFD:
@ -138,7 +144,7 @@ class AddFaceLogic extends BaseGetXController {
//
//
state.regIndex.value = reply.data[6];
// AppLog.log('注册人脸过程state.regIndex.value:${state.regIndex.value}');
AppLog.log('注册人脸过程state.regIndex.value:${state.regIndex.value}');
break;
}

View File

@ -22,6 +22,7 @@ class FaceListLogic extends BaseGetXController {
//
late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
@ -77,11 +78,15 @@ class FaceListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
faceNo: state.deletFaceNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -277,11 +282,15 @@ class FaceListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
faceNo: state.deletFaceNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -348,8 +357,8 @@ class FaceListLogic extends BaseGetXController {
lockId: state.lockId.value,
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功'.tr, something: () {
getFaceListData(isRefresh: true);
showToast('删除成功'.tr, something: () async {
await getFaceListData(isRefresh: true);
});
}
}
@ -366,8 +375,8 @@ class FaceListLogic extends BaseGetXController {
lockId: state.lockId.value,
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('重置成功'.tr, something: () {
getFaceListData(isRefresh: true);
showToast('重置成功'.tr, something: () async{
await getFaceListData(isRefresh: true);
});
}
}
@ -403,11 +412,12 @@ class FaceListLogic extends BaseGetXController {
//
late StreamSubscription _teamEvent;
void _initRefreshAction() {
_teamEvent = eventBus
.on<OtherTypeRefreshListEvent>()
.listen((OtherTypeRefreshListEvent event) {
getFaceListData(isRefresh: true);
.listen((OtherTypeRefreshListEvent event) async {
await getFaceListData(isRefresh: true);
});
}
@ -420,7 +430,7 @@ class FaceListLogic extends BaseGetXController {
if (isDemoMode == false) {
_initReplySubscription();
_initRefreshAction();
// _initRefreshAction();
}
}
@ -434,6 +444,7 @@ class FaceListLogic extends BaseGetXController {
// senderCheckingUserInfoCount();
}
getFaceListData(isRefresh: true);
}
@override

View File

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -31,24 +30,6 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
final FaceListLogic logic = Get.put(FaceListLogic());
final FaceListState state = Get.find<FaceListLogic>().state;
Future<void> getHttpData({required bool isRefresh}) async {
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
logic.getFaceListData(isRefresh: isRefresh).then((FingerprintListDataEntity value) {
if (mounted) {
setState(() {});
}
});
}
}
@override
void initState() {
super.initState();
getHttpData(isRefresh: true);
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -92,17 +73,17 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
),
body: EasyRefreshTool(
onRefresh: () {
getHttpData(isRefresh: true);
logic.getFaceListData(isRefresh: true);
},
onLoad: () {
getHttpData(isRefresh: false);
logic.getFaceListData(isRefresh: false);
},
child: Column(
children: <Widget>[
KeySearchWidget(
editingController: state.searchController,
onSubmittedAction: () {
getHttpData(isRefresh: true);
logic.getFaceListData(isRefresh: true);
},
),
SizedBox(
@ -110,14 +91,15 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
),
Expanded(child: _buildMainUI()),
AddBottomWhiteBtn(
btnName:
'添加人脸'.tr,
btnName: '添加人脸'.tr,
onClick: () async {
await Get.toNamed(Routers.addFaceTypePage, arguments: <String, int>{
await Get.toNamed(Routers.addFaceTypePage,
arguments: <String, int>{
'lockId': state.lockId.value,
'fromType': 1 // 1 2
})!.then((value) {
getHttpData(isRefresh: true);
})!
.then((value) {
logic.getFaceListData(isRefresh: true);
});
},
),
@ -154,9 +136,11 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
logic.getKeyType(getFaceItemData),
logic.getKeyDateType(getFaceItemData), () async {
await Get.toNamed(Routers.faceDetailPage,
arguments: <String, FingerprintItemData>{
arguments: <String, FingerprintItemData>{
'faceItemData': getFaceItemData,
})!.then((value) => getHttpData(isRefresh: true));
})!
.then((value) =>
logic.getFaceListData(isRefresh: true));
}),
);
}

View File

@ -1,4 +1,3 @@
import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
@ -26,20 +25,23 @@ class AddFingerprintLogic extends BaseGetXController {
//
late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
//
if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
if ((reply is SenderAddFingerprintWithTimeCycleCoercionReply) &&
(state.ifCurrentScreen.value == true)) {
_replyAddFingerprintBegin(reply);
}
//
if(reply is SenderAddFingerprintProcessReply) {
if (reply is SenderAddFingerprintProcessReply) {
_replyAddFingerprintProcess(reply);
}
//
if(reply is SenderAddFingerprintConfirmationReply) {
if (reply is SenderAddFingerprintConfirmationReply) {
_replyAddFingerprintConfirmation(reply);
}
});
@ -49,11 +51,10 @@ class AddFingerprintLogic extends BaseGetXController {
BuglyTool.uploadException(
message: '添加指纹开始,解析数据',
detail: '添加指纹开始,解析数据 _replyAddFingerprintBegin:${reply.data}',
upload: false
);
upload: false);
final int status = reply.data[2];
switch(status){
switch (status) {
case 0x00:
//
state.ifConnectScuess.value = true;
@ -67,10 +68,13 @@ class AddFingerprintLogic extends BaseGetXController {
break;
case 0x06:
//
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList =
changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<String>? signKey =
await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<int> token = reply.data.sublist(5, 9);
@ -78,30 +82,41 @@ class AddFingerprintLogic extends BaseGetXController {
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:'1',
userID:await Storage.getUid(),
fingerNo:0,
useCountLimit:0xffff,
isForce:state.isCoerced.value == '1' ? 1 : 0, //
isAdmin: state.isAdministrator.value == '2' ? 1 : 0,
operate: 0,
isRound:state.selectType.value == '2' ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
endTime:DateTool().dateToHNString(state.failureDateTime.value),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: token,
isBeforeAddUser: false
);
keyID: '1',
userID: await Storage.getUid(),
fingerNo: 0,
useCountLimit: 0xffff,
isForce: state.isCoerced.value == '1' ? 1 : 0,
//
isAdmin: state.isAdministrator.value == '2' ? 1 : 0,
operate: 0,
isRound: state.selectType.value == '2' ? 1 : 0,
//
weekRound: DateTool().accordingTheCycleIntoTheCorrespondingNumber(
state.weekDay.value),
//
startDate: int.parse(state.startDate.value) ~/ 1000,
endDate: int.parse(state.endDate.value) ~/ 1000,
startTime: DateTool().dateToHNString(state.effectiveDateTime.value),
endTime: DateTool().dateToHNString(state.failureDateTime.value),
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: token,
isBeforeAddUser: false);
break;
case 0xFE:
case 12:
//
state.ifAddState.value = false;
showToast('管理员已满'.tr, something: () {
Get.back();
});
break;
default:
//
state.ifAddState.value = false;
showToast('添加指纹失败'.tr, something: (){
showToast('添加指纹失败'.tr, something: () {
Get.back();
});
break;
@ -112,13 +127,12 @@ class AddFingerprintLogic extends BaseGetXController {
BuglyTool.uploadException(
message: '添加指纹过程,解析数据',
detail: '添加指纹过程,解析数据 _replyAddFingerprintProcess:${reply.data}',
upload: false
);
upload: false);
final int status = reply.data[2];
switch(status){
switch (status) {
case 0x00:
//
switch(reply.data[5]){
switch (reply.data[5]) {
case 0xff:
//
showToast('退出添加'.tr);
@ -126,10 +140,12 @@ class AddFingerprintLogic extends BaseGetXController {
Get.close(1);
break;
case 0xFE:
//
showToast('管理员已满'.tr);
case 12:
//
state.ifAddState.value = false;
Get.close(1);
showToast('管理员已满'.tr, something: () {
Get.back();
});
break;
case 0xFD:
//
@ -166,35 +182,37 @@ class AddFingerprintLogic extends BaseGetXController {
Future<void> _replyAddFingerprintConfirmation(Reply reply) async {
final int status = reply.data[2];
final String getMobile = (await Storage.getMobile())!;
switch(status){
switch (status) {
case 0x00:
//
// var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString();
// var fingerprintNum = listChangInt(reply.data.sublist(9, 11)).toString();
ApmHelper.instance.trackEvent('add_fingerprint', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_fingerprint_result':'成功',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_fingerprint_result': '成功',
});
BuglyTool.uploadException(
message: '添加指纹确认结果,解析数据',
detail: '添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}',
upload: false
);
detail:
'添加指纹确认结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}',
upload: false);
final List<int> fingerprintList = reply.data.sublist(reply.data.length - 2);
final List<int> fingerprintList =
reply.data.sublist(reply.data.length - 2);
final String fingerprintNum = listChangInt(fingerprintList).toString();
state.regIndex.value++;
if(state.fingerprintNumber.value == fingerprintNum){
if (state.fingerprintNumber.value == fingerprintNum) {
return;
}else{
} else {
state.fingerprintNumber.value = fingerprintNum;
}
// if(state.isCoerced.value == "1"){
//
//
state.ifAddState.value = false;
addFingerprintsData();
await addFingerprintsData();
// }else{
// //
// senderAddStressFingerprint();
@ -203,18 +221,19 @@ class AddFingerprintLogic extends BaseGetXController {
default:
//
ApmHelper.instance.trackEvent('add_fingerprint', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_fingerprint_result':'失败-${reply.data}',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_fingerprint_result': '失败-${reply.data}',
});
BuglyTool.uploadException(
message: '添加指纹确认结果,解析数据',
detail: '添加指纹确认结果蓝牙返回失败结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}',
detail:
'添加指纹确认结果蓝牙返回失败结果,解析数据 _replyAddFingerprintConfirmation:${reply.data}',
eventStr: '添加指纹事件蓝牙返回失败结果',
upload: true
);
upload: true);
state.ifAddState.value = false;
break;
}
@ -222,7 +241,8 @@ class AddFingerprintLogic extends BaseGetXController {
//
Future<void> senderAddFingerprint() async {
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
@ -232,90 +252,104 @@ class AddFingerprintLogic extends BaseGetXController {
final List<int> getTokenList = changeStringListToIntList(token!);
final String command = SenderAddFingerprintWithTimeCycleCoercionCommand(
keyID:'1',
userID:await Storage.getUid(),
fingerNo:0,
useCountLimit:0xffff,
isForce:state.isCoerced.value == '1' ? 1 : 0, //
keyID: '1',
userID: await Storage.getUid(),
fingerNo: 0,
useCountLimit: 0xffff,
isForce: state.isCoerced.value == '1' ? 1 : 0,
//
isAdmin: state.isAdministrator.value == '2' ? 1 : 0,
operate: 0,
isRound:state.selectType.value == '2' ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
endTime:DateTool().dateToHNString(state.failureDateTime.value),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
isRound: state.selectType.value == '2' ? 1 : 0,
//
weekRound: DateTool()
.accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value),
//
startDate: int.parse(state.startDate.value) ~/ 1000,
endDate: int.parse(state.endDate.value) ~/ 1000,
startTime: DateTool().dateToHNString(state.effectiveDateTime.value),
endTime: DateTool().dateToHNString(state.failureDateTime.value),
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
).toString();
showBlueConnetctToastTimer(action: () async {
final String getMobile = (await Storage.getMobile())!;
ApmHelper.instance.trackEvent('add_fingerprint', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_fingerprint_result':'超时',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_fingerprint_result': '超时',
});
BuglyTool.uploadException(
message: '添加指纹超时处理-添加指纹失败',
detail: '添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command',
detail:
'添加指纹超时处理,断开连接,添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command',
eventStr: '添加指纹事件超时',
upload: true
);
upload: true);
Get.close(1);
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList =
changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<String>? signKey =
await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:'1',
userID:await Storage.getUid(),
fingerNo:0,
useCountLimit:0xffff,
isForce:state.isCoerced.value == '1' ? 1 : 0, //
isAdmin: state.isAdministrator.value == '2' ? 1 : 0,
operate: 0,
isRound:state.selectType.value == '2' ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:DateTool().dateToHNString(state.effectiveDateTime.value),
endTime:DateTool().dateToHNString(state.failureDateTime.value),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
isBeforeAddUser: false
);
}else if (deviceConnectionState == BluetoothConnectionState.disconnected){
keyID: '1',
userID: await Storage.getUid(),
fingerNo: 0,
useCountLimit: 0xffff,
isForce: state.isCoerced.value == '1' ? 1 : 0,
//
isAdmin: state.isAdministrator.value == '2' ? 1 : 0,
operate: 0,
isRound: state.selectType.value == '2' ? 1 : 0,
//
weekRound: DateTool().accordingTheCycleIntoTheCorrespondingNumber(
state.weekDay.value),
//
startDate: int.parse(state.startDate.value) ~/ 1000,
endDate: int.parse(state.endDate.value) ~/ 1000,
startTime: DateTool().dateToHNString(state.effectiveDateTime.value),
endTime: DateTool().dateToHNString(state.failureDateTime.value),
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
isBeforeAddUser: false);
} else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) {
final String getMobile = (await Storage.getMobile())!;
ApmHelper.instance.trackEvent('add_fingerprint', {
'lock_name':BlueManage().connectDeviceName,
'account':getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date':DateTool().getNowDateWithType(1),
'add_fingerprint_result':'断开',
'lock_name': BlueManage().connectDeviceName,
'account':
getMobile.isNotEmpty ? getMobile : (await Storage.getEmail())!,
'date': DateTool().getNowDateWithType(1),
'add_fingerprint_result': '断开',
});
BuglyTool.uploadException(
message: '添加指纹断开连接-添加指纹失败',
detail: '添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command',
detail:
'添加指纹断开连接-添加指纹失败--SenderAddFingerprintWithTimeCycleCoercionCommand:$command',
eventStr: '添加指纹事件断开连接',
upload: true
);
upload: true);
if(state.ifCurrentScreen.value == true){
if (state.ifCurrentScreen.value == true) {
showBlueConnetctToast();
}
cancelBlueConnetctToastTimer();
@ -326,27 +360,32 @@ class AddFingerprintLogic extends BaseGetXController {
//
Future<void> senderCancelAddFingerprintCommand() async {
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
BlueManage().blueSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
final List<String>? privateKey =
await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList =
changeStringListToIntList(privateKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<String>? signKey =
await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<String>? token = await Storage.getStringList(saveBlueToken);
final List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderCancelAddFingerprintCommand(
keyID:'1',
userID:await Storage.getUid(),
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
keyID: '1',
userID: await Storage.getUid(),
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
);
}else if (deviceConnectionState == BluetoothConnectionState.disconnected){
if(state.ifCurrentScreen.value == true){
} else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) {
if (state.ifCurrentScreen.value == true) {
showBlueConnetctToast();
}
cancelBlueConnetctToastTimer();
@ -356,53 +395,54 @@ class AddFingerprintLogic extends BaseGetXController {
}
//
Future<void> addFingerprintsData() async{
final AddFingerprintEntity entity = await ApiRepository.to.addFingerprintsData(
Future<void> addFingerprintsData() async {
final AddFingerprintEntity entity =
await ApiRepository.to.addFingerprintsData(
lockId: state.lockId.value.toString(),
endDate: state.endDate.value,
addType:state.addType.value,
addType: state.addType.value,
fingerprintName: state.fingerprintName.value,
fingerprintNumber: state.fingerprintNumber.value,
fingerprintType: state.fingerprintType.value,
isCoerced: state.isCoerced.value,
startDate: state.startDate.value,
weekDay: state.weekDay.value,
fingerRight:state.isAdministrator.value == '2' ? 1 : 0,
fingerRight: state.isAdministrator.value == '2' ? 1 : 0,
startTime: int.parse(state.effectiveDateTime.value),
endTime: int.parse(state.failureDateTime.value),
);
if(entity.errorCode!.codeIsSuccessful){
if (entity.errorCode!.codeIsSuccessful) {
updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString());
BuglyTool.uploadException(
message: '添加指纹调用接口成功',
detail: '添加指纹调用接口成功',
eventStr: '添加指纹事件用接口成功',
upload: true
);
}else{
upload: true);
} else {
updateFingerprintUserNoLoadData(entity.data!.fingerprintId.toString());
BuglyTool.uploadException(
message: '添加指纹调用接口失败',
detail: '添加指纹调用接口添加指纹调用接口失败 - ${entity.errorMsg}',
eventStr: '添加指纹事件接口失败',
upload: true
);
upload: true);
}
}
//
Future<void> updateFingerprintUserNoLoadData(String fingerprintId) async{
final LoginEntity entity = await ApiRepository.to.updateFingerprintUserNoLoadData(
fingerprintId: fingerprintId,
lockId: state.lockId.value.toString(),
fingerprintUserNo: state.fingerprintNumber.value,
Future<void> updateFingerprintUserNoLoadData(String fingerprintId) async {
final LoginEntity entity =
await ApiRepository.to.updateFingerprintUserNoLoadData(
fingerprintId: fingerprintId,
lockId: state.lockId.value.toString(),
fingerprintUserNo: state.fingerprintNumber.value,
);
if(entity.errorCode!.codeIsSuccessful){
showToast('添加成功'.tr, something: (){
if(state.fromType.value == 2){
if (entity.errorCode!.codeIsSuccessful) {
showToast('添加成功'.tr, something: () {
if (state.fromType.value == 2) {
//
eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(state.fingerprintNumber.value));
}else if(state.fromType.value == 1){
eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(
state.fingerprintNumber.value));
} else if (state.fromType.value == 1) {
eventBus.fire(OtherTypeRefreshListEvent());
}
Get.close(2);
@ -430,5 +470,4 @@ class AddFingerprintLogic extends BaseGetXController {
_replySubscription.cancel();
}
}
}

View File

@ -23,6 +23,7 @@ class FingerprintListLogic extends BaseGetXController {
//
late StreamSubscription<Reply> _replySubscription;
void _initReplySubscription() {
_replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
@ -74,11 +75,15 @@ class FingerprintListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
fingerNo: state.deletFingerNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -275,11 +280,15 @@ class FingerprintListLogic extends BaseGetXController {
userID: (await Storage.getUid())!,
fingerNo: state.deletFingerNo,
useCountLimit: 0xffff,
operate: state.isDeletAll == true ? 3 : 2, // 0: 1 2: 3
operate: state.isDeletAll == true ? 3 : 2,
// 0: 1 2: 3
isAdmin: 0,
isForce: 0, //
isRound: 0, //
weekRound: 0, //
isForce: 0,
//
isRound: 0,
//
weekRound: 0,
//
startDate: 0x11223344,
endDate: 0x11223344,
startTime: '0',
@ -299,30 +308,31 @@ class FingerprintListLogic extends BaseGetXController {
}
});
}
/**
* //
Future<PasswordKeyListEntity> mockNetworkDataRequest(
Future<PasswordKeyListEntity> mockNetworkDataRequest(
{required bool isRefresh}) async {
//
if (isRefresh) {
//
if (isRefresh) {
state.itemDataList.clear();
pageNo = 1;
}
}
final PasswordKeyListEntity entity = await ApiRepository.to.passwordKeyList(
state.keyInfo.value.keyStatus.toString(),
state.keyInfo.value.lockId.toString(),
pageNo.toString(),
pageSize.toString(),
state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
final PasswordKeyListEntity entity = await ApiRepository.to.passwordKeyList(
state.keyInfo.value.keyStatus.toString(),
state.keyInfo.value.lockId.toString(),
pageNo.toString(),
pageSize.toString(),
state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
//
state.itemDataList.addAll(entity.data!.itemList!);
//
pageNo++;
}
return entity;
}
}
return entity;
}
*/
@ -390,11 +400,12 @@ class FingerprintListLogic extends BaseGetXController {
//
late StreamSubscription _teamEvent;
void _initRefreshAction() {
_teamEvent = eventBus
.on<OtherTypeRefreshListEvent>()
.listen((OtherTypeRefreshListEvent event) {
getFingerprintsListData(isRefresh: true);
.listen((OtherTypeRefreshListEvent event) async {
await getFingerprintsListData(isRefresh: true);
});
}
@ -449,7 +460,7 @@ class FingerprintListLogic extends BaseGetXController {
if (isDemoMode == false) {
_initReplySubscription();
_initRefreshAction();
// _initRefreshAction();
}
}

Some files were not shown because too many files have changed in this diff Show More