From b253a9a13433d911e7675442613c95e2f18472c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com>
Date: Thu, 19 Dec 2024 14:30:08 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?=
=?UTF-8?q?=E5=8C=96bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
android/app/build.gradle | 18 +-
.../app/src/dev/res/values-zh-rCN/string.xml | 2 +-
.../src/sky_pre/res/values-en-rUS/string.xml | 4 +
.../src/sky_pre/res/values-zh-rCN/string.xml | 4 +
.../src/xhj_pre/res/values-en-rUS/string.xml | 4 +
.../src/xhj_pre/res/values-zh-rCN/string.xml | 4 +
images/icon_left_grey.png | Bin 0 -> 349 bytes
ios/Podfile.lock | 50 +--
ios/Runner.xcodeproj/project.pbxproj | 71 ++--
lan/lan_ar.json | 14 +-
lan/lan_bg.json | 14 +-
lan/lan_bn.json | 14 +-
lan/lan_cs.json | 14 +-
lan/lan_da.json | 14 +-
lan/lan_de.json | 14 +-
lan/lan_el.json | 14 +-
lan/lan_en.json | 15 +-
lan/lan_es.json | 14 +-
lan/lan_et.json | 14 +-
lan/lan_fi.json | 14 +-
lan/lan_fr.json | 14 +-
lan/lan_he.json | 14 +-
lan/lan_hk.json | 14 +-
lan/lan_hr.json | 14 +-
lan/lan_hu.json | 14 +-
lan/lan_id.json | 14 +-
lan/lan_it.json | 14 +-
lan/lan_ja.json | 14 +-
lan/lan_keys.json | 13 +-
lan/lan_kk.json | 14 +-
lan/lan_ko.json | 14 +-
lan/lan_lt.json | 14 +-
lan/lan_ms.json | 14 +-
lan/lan_nl.json | 14 +-
lan/lan_pl.json | 14 +-
lan/lan_pt.json | 14 +-
lan/lan_ro.json | 14 +-
lan/lan_ru.json | 16 +-
lan/lan_sk.json | 14 +-
lan/lan_sr_cyrl.json | 16 +-
lan/lan_sv.json | 14 +-
lan/lan_th.json | 14 +-
lan/lan_tr.json | 14 +-
lan/lan_tw.json | 15 +-
lan/lan_uk.json | 14 +-
lan/lan_vi.json | 14 +-
lan/lan_zh.json | 12 +-
lib/app.dart | 44 +--
lib/login/login/starLock_login_page.dart | 20 +-
lib/login/login/starLock_login_state.dart | 12 +
lib/login/login/starLock_login_xhj_page.dart | 21 +-
.../selectCountryRegion_page.dart | 8 +-
lib/main.dart | 27 +-
.../authorizedAdmin/authorizedAdmin_page.dart | 97 +++++-
.../card/cardList/cardList_page.dart | 2 -
.../view/sendElectronicKeyView_page.dart | 135 ++++++--
.../fingerprintList/fingerprintList_page.dart | 2 -
.../lockDetail/lockDetail_page.dart | 65 ++--
.../lockSet/lockSet/lockSet_page.dart | 33 +-
.../demoModeLockDetail_page.dart | 47 +--
.../lockMian/lockList/lockList_xhj_page.dart | 35 +-
.../lockMain/xhj/lockMain_xhj_logic.dart | 16 +-
.../mineMultiLanguage_logic.dart | 14 +-
.../mineMultiLanguage_page.dart | 85 +++--
.../mineMultiLanguage_state.dart | 15 +-
.../lockUserManageList_page.dart | 24 +-
lib/mine/mineSet/mineSet/mineSet_logic.dart | 56 +---
lib/mine/mineSet/mineSet/mineSet_page.dart | 42 +--
lib/mine/mineSet/mineSet/mineSet_state.dart | 15 +-
lib/network/api_repository.dart | 2 +-
lib/network/request_interceptor.dart | 24 +-
lib/tools/change_language_format.dart | 21 --
lib/tools/commonItem.dart | 30 +-
.../pickers/time_picker/model/suffix.dart | 12 +-
lib/tools/store_service.dart | 12 +-
lib/translations/app_dept.dart | 315 +++++++++++-------
lib/translations/current_locale_tool.dart | 79 +++++
lib/translations/translation_message.dart | 32 +-
78 files changed, 1349 insertions(+), 685 deletions(-)
create mode 100644 android/app/src/sky_pre/res/values-en-rUS/string.xml
create mode 100644 android/app/src/sky_pre/res/values-zh-rCN/string.xml
create mode 100644 android/app/src/xhj_pre/res/values-en-rUS/string.xml
create mode 100644 android/app/src/xhj_pre/res/values-zh-rCN/string.xml
create mode 100644 images/icon_left_grey.png
delete mode 100644 lib/tools/change_language_format.dart
create mode 100644 lib/translations/current_locale_tool.dart
diff --git a/android/app/build.gradle b/android/app/build.gradle
index c41e74c9..21be3ed4 100755
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -85,28 +85,28 @@ android {
dimension "flavor-type"
applicationId "com.starlock.lock.local"
signingConfig signingConfigs.debug
- resValue "string", "app_name", "星锁-local"
+ resValue "string", "app_name", "Star Lock"
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.local"
}
dev {
dimension "flavor-type"
applicationId "com.starlock.lock.dev"
signingConfig signingConfigs.debug
- resValue "string", "app_name", "星锁-dev"
+ resValue "string", "app_name", "Star Lock"
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.dev"
}
pre {
dimension "flavor-type"
applicationId "com.starlock.lock.pre"
signingConfig signingConfigs.debug
- resValue "string", "app_name", "星锁"
+ resValue "string", "app_name", "Star Lock-P"
manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.pre"
}
sky {
dimension "flavor-type"
applicationId "com.skychip.lock"
signingConfig signingConfigs.sky
- resValue "string", "app_name", "锁通通"
+ resValue "string", "app_name", "TTLock Pro"
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-sky.pro'
}
@@ -114,21 +114,21 @@ android {
dimension "flavor-type"
applicationId "com.skychip.lock.pre"
signingConfig signingConfigs.sky
- resValue "string", "app_name", "锁通通-P"
+ resValue "string", "app_name", "TTLock Pro-P"
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock.pre"
}
sky_dev {
dimension "flavor-type"
applicationId "com.skychip.lock.dev"
signingConfig signingConfigs.sky
- resValue "string", "app_name", "锁通通-D"
+ resValue "string", "app_name", "TTLock Pro"
manifestPlaceholders.JPUSH_PKGNAME = "com.skychip.lock.dev"
}
xhj {
dimension "flavor-type"
applicationId "com.xhjcn.lock"
signingConfig signingConfigs.xhj
- resValue "string", "app_name", "星星锁"
+ resValue "string", "app_name", "Star Lock"
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-xhj.pro'
}
@@ -136,14 +136,14 @@ android {
dimension "flavor-type"
applicationId "com.xhjcn.lock.pre"
signingConfig signingConfigs.xhj
- resValue "string", "app_name", "星星锁-P"
+ resValue "string", "app_name", "Star Lock-P"
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock.pre"
}
xhj_dev {
dimension "flavor-type"
applicationId "com.xhjcn.lock.dev"
signingConfig signingConfigs.xhj
- resValue "string", "app_name", "星星锁-D"
+ resValue "string", "app_name", "Star Lock"
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock.dev"
}
}
diff --git a/android/app/src/dev/res/values-zh-rCN/string.xml b/android/app/src/dev/res/values-zh-rCN/string.xml
index e55b995c..d42c50e6 100644
--- a/android/app/src/dev/res/values-zh-rCN/string.xml
+++ b/android/app/src/dev/res/values-zh-rCN/string.xml
@@ -1,4 +1,4 @@
- 星锁
+ 星锁-dev
\ No newline at end of file
diff --git a/android/app/src/sky_pre/res/values-en-rUS/string.xml b/android/app/src/sky_pre/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..e5736ebd
--- /dev/null
+++ b/android/app/src/sky_pre/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ TTLock Pro-P
+
\ No newline at end of file
diff --git a/android/app/src/sky_pre/res/values-zh-rCN/string.xml b/android/app/src/sky_pre/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..04482066
--- /dev/null
+++ b/android/app/src/sky_pre/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 锁通通-P
+
\ No newline at end of file
diff --git a/android/app/src/xhj_pre/res/values-en-rUS/string.xml b/android/app/src/xhj_pre/res/values-en-rUS/string.xml
new file mode 100644
index 00000000..1f8a4906
--- /dev/null
+++ b/android/app/src/xhj_pre/res/values-en-rUS/string.xml
@@ -0,0 +1,4 @@
+
+
+ Star Lock-P
+
\ No newline at end of file
diff --git a/android/app/src/xhj_pre/res/values-zh-rCN/string.xml b/android/app/src/xhj_pre/res/values-zh-rCN/string.xml
new file mode 100644
index 00000000..9129d25b
--- /dev/null
+++ b/android/app/src/xhj_pre/res/values-zh-rCN/string.xml
@@ -0,0 +1,4 @@
+
+
+ 星星锁-P
+
\ No newline at end of file
diff --git a/images/icon_left_grey.png b/images/icon_left_grey.png
new file mode 100644
index 0000000000000000000000000000000000000000..26593087bc687d81c71206ac89ea584e4ecfd95f
GIT binary patch
literal 349
zcmV-j0iyniP)uIK4l!o
zE1xFdrFxCOl&7gR0=zUI5
z<0T}(YrMDzc#ap>0PpeQ77#IBTmquTi+Mogcrgu#9xrAA8RNwyAZxsI2V{Wk!H!A}azsGZ_)!nTn18&s<~#
zcrKzMz;hE30iG-G2=Lr_Mt~Q>D+0VQ9ueS$vW@^RoMi-fDZWHp88DR!X#uhkQ9WK#
v1LPy3X}qKd$SdOBI$jPD(Bllq_VWP`@T3DkI|3$j00000NkvXXu0mjf$2yCX
literal 0
HcmV?d00001
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index d5143928..9dca6bdf 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -10,12 +10,12 @@ PODS:
- EMASRest
- AlicloudUT (5.2.0.16):
- AlicloudUTDID
- - AlicloudUTDID (1.5.0.94)
- - AlicloudUtils (1.4.1):
+ - AlicloudUTDID (1.6.0)
+ - AlicloudUtils (2.0.0):
- AlicloudUTDID
- aliyun_face_plugin (0.0.1):
- Flutter
- - AMap3DMap (10.0.600):
+ - AMap3DMap (10.0.700):
- AMapFoundation (>= 1.8.0)
- amap_flutter_location (0.0.1):
- AMapLocation
@@ -42,35 +42,35 @@ PODS:
- FlutterMacOS
- device_info_plus (0.0.1):
- Flutter
- - DKImagePickerController/Core (4.3.7):
+ - DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- - DKImagePickerController/ImageDataManager (4.3.7)
- - DKImagePickerController/PhotoGallery (4.3.7):
+ - DKImagePickerController/ImageDataManager (4.3.9)
+ - DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- - DKImagePickerController/Resource (4.3.7)
- - DKPhotoGallery (0.0.17):
- - DKPhotoGallery/Core (= 0.0.17)
- - DKPhotoGallery/Model (= 0.0.17)
- - DKPhotoGallery/Preview (= 0.0.17)
- - DKPhotoGallery/Resource (= 0.0.17)
+ - DKImagePickerController/Resource (4.3.9)
+ - DKPhotoGallery (0.0.19):
+ - DKPhotoGallery/Core (= 0.0.19)
+ - DKPhotoGallery/Model (= 0.0.19)
+ - DKPhotoGallery/Preview (= 0.0.19)
+ - DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- - DKPhotoGallery/Core (0.0.17):
+ - DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- - DKPhotoGallery/Model (0.0.17):
+ - DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- - DKPhotoGallery/Preview (0.0.17):
+ - DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- - DKPhotoGallery/Resource (0.0.17):
+ - DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- EMASRest (11.1.1.2)
@@ -134,9 +134,9 @@ PODS:
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- - SDWebImage (5.19.1):
- - SDWebImage/Core (= 5.19.1)
- - SDWebImage/Core (5.19.1)
+ - SDWebImage (5.19.2):
+ - SDWebImage/Core (= 5.19.2)
+ - SDWebImage/Core (5.19.2)
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
@@ -316,10 +316,10 @@ SPEC CHECKSUMS:
AlicloudPush: 88529c9b796e4ece0601de0867b30359f55b61f7
AlicloudSender: 1f468b6bd962a099ffc19d45e3608b0fe98f259d
AlicloudUT: 6d1cf30d57d096b7e9bb4b069dd0ba6ad59a3338
- AlicloudUTDID: 7323c443dcdf9a73e2224dc6ce51703671d7a765
- AlicloudUtils: 873a76615bebcee8b1996f20820d366e433c3eab
+ AlicloudUTDID: 4e9d44c2fd704b3508069c38eaec9d6a759e702c
+ AlicloudUtils: 2a78de434a8b2dc99e408c4d6220e654076d9ef0
aliyun_face_plugin: 7a90b6526c5acea616062e809699294c782c3eb8
- AMap3DMap: d104a679c2bad573c908e0ddadf26bc399678b24
+ AMap3DMap: 6ee456d7ba946ebbad580a343b74ffa8e9936175
amap_flutter_location: 44ff5beb64f42e0bf5feb402fe299dac0013af6f
amap_flutter_map: 979e54d227cedac6c7504a2151bfbf3bcf96760a
AMapFoundation: 9885c48fc3a78fdfb84a0299a2293e56ea3c9fec
@@ -332,8 +332,8 @@ SPEC CHECKSUMS:
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
- DKImagePickerController: 0a24ebfe7b48beeb74c27531540aaa2cc1dac6cf
- DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
+ DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
+ DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475
file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
@@ -359,7 +359,7 @@ SPEC CHECKSUMS:
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
- SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb
+ SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 572fcf04..e988c153 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
+ 04C1FC572D13F1A2000C959E /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 04C1FC562D13F1A2000C959E /* InfoPlist.xcstrings */; };
04D0CC262D06CE570042EF10 /* launchImage_xhj.png in Resources */ = {isa = PBXBuildFile; fileRef = 82B657662C919BDF0079121C /* launchImage_xhj.png */; };
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
25B2A1422F9A2CCCBBCBBB97 /* skyRelease.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 35F02D170492750B437D6AB6 /* skyRelease.xcconfig */; };
@@ -98,6 +99,7 @@
/* Begin PBXFileReference section */
0420903B2C0EEAA50073E654 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; };
04BFC4482BCFE05100688FCA /* RunnerRelease-xhj.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "RunnerRelease-xhj.entitlements"; sourceTree = ""; };
+ 04C1FC562D13F1A2000C959E /* InfoPlist.xcstrings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = ""; };
0BEB3ADCCEC961E2916B9004 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
0D02C18E16914A687A4A1AC2 /* devDebug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = devDebug.xcconfig; path = Flutter/devDebug.xcconfig; sourceTree = ""; };
126D1370182AB44291C67A10 /* Pods-Runner.dev-release-sky.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.dev-release-sky.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.dev-release-sky.xcconfig"; sourceTree = ""; };
@@ -341,6 +343,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
+ 04C1FC562D13F1A2000C959E /* InfoPlist.xcstrings */,
E0B3E9EC2D04B36C00907A95 /* info_dev.plist */,
E0B3E9EB2D04B36C00907A95 /* info_pre.plist */,
E0B3E9EA2D04B36C00907A95 /* info_sky.plist */,
@@ -507,6 +510,7 @@
9C453CBFAB0703DFA762337C /* preProfile.xcconfig in Resources */,
44827AC367F1EAB110A97660 /* preRelease.xcconfig in Resources */,
D7EF77645AB1C3CEEA536468 /* skyDebug.xcconfig in Resources */,
+ 04C1FC572D13F1A2000C959E /* InfoPlist.xcstrings in Resources */,
7B54002BF45E5D8B295B6447 /* skyProfile.xcconfig in Resources */,
25B2A1422F9A2CCCBBCBBB97 /* skyRelease.xcconfig in Resources */,
ADF948FD9EE8BD1AE71F0984 /* xhjDebug.xcconfig in Resources */,
@@ -698,10 +702,9 @@
baseConfigurationReference = 4A63B2C308CB401731950EC8 /* Pods-Runner.debug-sky.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-sky.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = SF86QP26TZ;
INFOPLIST_FILE = Runner/info_sky.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -711,7 +714,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.starlock.lock.local;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Debug_com.starlock.lock.local.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -795,10 +797,9 @@
baseConfigurationReference = 22D858E988707FF26E068457 /* Pods-Runner.debug-xhj.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-xhj.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = SF86QP26TZ;
INFOPLIST_FILE = Runner/info_xhj.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -808,7 +809,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.starlock.lock.local;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Debug_com.starlock.lock.local.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -821,9 +821,9 @@
baseConfigurationReference = 16A83D21DFB231D8453DC681 /* Pods-Runner.release-sky.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-sky.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = NAQ5PL2DYC;
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
INFOPLIST_FILE = Runner/info_sky.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -831,7 +831,7 @@
"$(inherited)",
);
PRODUCT_NAME = Runner;
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Appstore_com.skychip.lock.mobileprovision;
+ PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -844,9 +844,9 @@
baseConfigurationReference = CDC2B8ED804B514A774F187D /* Pods-Runner.release-xhj.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-xhj.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = P8997RW3V8;
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = P8997RW3V8;
INFOPLIST_FILE = Runner/info_xhj.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -855,7 +855,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.xhjcn.lock;
PRODUCT_NAME = Runner;
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Appstore_com.xhjcn.lock.mobileprovision;
+ PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1088,10 +1088,8 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerDebug-dev.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = SF86QP26TZ;
INFOPLIST_FILE = Runner/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1101,7 +1099,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.starlock.lock.local;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Debug_com.starlock.lock.local.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1185,10 +1182,9 @@
baseConfigurationReference = D697F91E8405773AB9A5881E /* Pods-Runner.pre-release-sky.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-sky.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = NAQ5PL2DYC;
INFOPLIST_FILE = Runner/info_sky.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1198,7 +1194,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.skychip.lock.pre;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Adhoc_com.skychip.lock.pre.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1282,10 +1277,9 @@
baseConfigurationReference = 126D1370182AB44291C67A10 /* Pods-Runner.dev-release-sky.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-sky.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = NAQ5PL2DYC;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = NAQ5PL2DYC;
INFOPLIST_FILE = Runner/info_sky.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1295,7 +1289,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.skychip.lock.dev;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Adhoc_com.skychip.lock.dev.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1379,10 +1372,9 @@
baseConfigurationReference = 789004F1B475B44713E199BC /* Pods-Runner.pre-release-xhj.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-xhj.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = P8997RW3V8;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = P8997RW3V8;
INFOPLIST_FILE = Runner/info_xhj.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1392,7 +1384,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.xhjcn.lock.pre;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Adhoc_com.xhjcn.lock.pre.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1476,10 +1467,9 @@
baseConfigurationReference = ED3A443EA1439FD0FB4BCF80 /* Pods-Runner.dev-release-xhj.xcconfig */;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = "Runner/RunnerRelease-xhj.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
- CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = P8997RW3V8;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = P8997RW3V8;
INFOPLIST_FILE = Runner/info_xhj.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1489,7 +1479,6 @@
PRODUCT_BUNDLE_IDENTIFIER = com.xhjcn.lock.dev;
PRODUCT_NAME = Runner;
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = Adhoc_com.xhjcn.lock.dev.mobileprovision;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
diff --git a/lan/lan_ar.json b/lan/lan_ar.json
index 1cd0e45a..de21a723 100644
--- a/lan/lan_ar.json
+++ b/lan/lan_ar.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "ستتم إزالة جميع معلومات حسابك من المنصة بشكل دائم ولا يمكن استردادها. هل تريد حذفها ؟",
"监控": "شاشة",
"视频日志": "سجل الفيديو",
- "网关设备": "بوابة",
"开门器": "فاتح باب",
"面容开锁": "يفتح الوجه",
"开门方向设置": "مجموعة فتح الاتجاه",
@@ -778,7 +777,6 @@
"导出": "التصدير",
"批量导出": "تصدير الدفعة",
"读取记录": "تحديث السجلات",
- "手机需联网": "إبرة",
"设备": "جهاز",
"消息": "الرسائل",
"智能分析": "تحليلات ذكية",
@@ -1110,5 +1108,15 @@
"常规使用": "استخدام منتظم",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ ، وانقر بعد ذلك عندما يومض مصباح المؤشر بالتناوب",
"扫描设备": "جهاز المسح الضوئي",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "فشل الحذف. ربما تكون البوابة قد اختفت دون اتصال. هل تريد فرض حذف البيانات ؟"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "فشل الحذف. ربما تكون البوابة قد اختفت دون اتصال. هل تريد فرض حذف البيانات ؟",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_bg.json b/lan/lan_bg.json
index 42500e03..e4cbd2e3 100644
--- a/lan/lan_bg.json
+++ b/lan/lan_bg.json
@@ -314,7 +314,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Цялата информация за профила ви ще бъде премахната от платформата за постоянно и не може да бъде възстановена. искате ли да изтриете?",
"监控": "Монитор",
"视频日志": "Видео дневник",
- "网关设备": "Шлюз",
"开门器": "Отварачка за врати",
"面容开锁": "Face отключва",
"开门方向设置": "Задаване на посоката на отваряне",
@@ -779,7 +778,6 @@
"导出": "Експортиране",
"批量导出": "Партиден износ",
"读取记录": "Опресняване на записи",
- "手机需联网": "Neednet",
"设备": "Устройство",
"消息": "Съобщения",
"智能分析": "Интелигентни анализи",
@@ -1110,5 +1108,15 @@
"常规使用": "Редовна употреба",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди и щракнете върху следващия, когато индикаторната светлина мига алтернативно",
"扫描设备": "Сканиране устройство",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Изтриването не успя. Портата може да е отишла офлайн. Искате ли да принудите изтриване на данните?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Изтриването не успя. Портата може да е отишла офлайн. Искате ли да принудите изтриване на данните?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_bn.json b/lan/lan_bn.json
index 24d339ed..94eb47cf 100644
--- a/lan/lan_bn.json
+++ b/lan/lan_bn.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "অ্যালসসআরগানগান্টের মাইউইল্ডবেইভেড-এরফেইট্রোমফর্ম",
"监控": "Monitor",
"视频日志": "নিঃশব্দ",
- "网关设备": "সমুদ্রে",
"开门器": "ডোরওএফ",
"面容开锁": "ফেসসসুনcolocs",
"开门方向设置": "ডিরেক্টরসেট",
@@ -778,7 +777,6 @@
"导出": "পোর্ট",
"批量导出": "পোর্ট",
"读取记录": "রূপ",
- "手机需联网": "উইমেনেট",
"设备": "ব্লিভাইস",
"消息": "এন্টস",
"智能分析": "Intel▁লিজেন্টা",
@@ -1110,5 +1108,15 @@
"常规使用": "গ্যারিউস",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "অ্যারাস্টার্টিউইসপোভেরেডন, প্রেস এবং টিপেস্টেট্রিসেট গানttonfor5sononds, এবং চক্লিক উইভেন্থে-উইন্টার",
"扫描设备": "সিস্কান্লিভাইস",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "ডাইজেজেশনিমেরিলেড। টিভওয়েমাইয়ানভিগনোনোআরলাইন। ডো ডাউনডেটা?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "ডাইজেজেশনিমেরিলেড। টিভওয়েমাইয়ানভিগনোনোআরলাইন। ডো ডাউনডেটা?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_cs.json b/lan/lan_cs.json
index 454a51d4..a4f55b06 100644
--- a/lan/lan_cs.json
+++ b/lan/lan_cs.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Všechny informace o vašem účtu budou z platformy odebrány natrvalo a nemohou být obnoveny.",
"监控": "Monitor",
"视频日志": "Protokol videa",
- "网关设备": "Brána",
"开门器": "Otvírač dveří",
"面容开锁": "Tvář odemkne",
"开门方向设置": "Nastavit směr otevření",
@@ -778,7 +777,6 @@
"导出": "Export",
"批量导出": "Export šarže",
"读取记录": "Refresh records",
- "手机需联网": "Neednet",
"设备": "Zařízení",
"消息": "Zprávy",
"智能分析": "Inteligentní analýza",
@@ -1110,5 +1108,15 @@
"常规使用": "Pravidelné použití",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund a klepněte na tlačítko next",
"扫描设备": "Skenovat zařízení",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Odstranění se nezdařilo. Brána možná byla offline. Chcete vynutit smazat data?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Odstranění se nezdařilo. Brána možná byla offline. Chcete vynutit smazat data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_da.json b/lan/lan_da.json
index b954a372..d5e1d294 100644
--- a/lan/lan_da.json
+++ b/lan/lan_da.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Alle dine kontooplysninger vil blive fjernet fra platformen PERMANENTENTIGT og kan ikke gendannes. Ønsker du at slette?",
"监控": "Skærm",
"视频日志": "Videologg",
- "网关设备": "GatewayName",
"开门器": "Døråbnere",
"面容开锁": "Ansigt åbnes",
"开门方向设置": "Åbningsvejssæt",
@@ -778,7 +777,6 @@
"导出": "Eksportører",
"批量导出": "Batch-eksport",
"读取记录": "Genopfrisk poster",
- "手机需联网": "NeedNet",
"设备": "Enhed",
"消息": "Meddelelser",
"智能分析": "Intelligent analyse",
@@ -1110,5 +1108,15 @@
"常规使用": "Regelmæssig anvendelse",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Når gateway er tændt, tryk og hold nulstillingsknappen i 5 sekunder, og klik Next, når indikator lys blinker skiftevist",
"扫描设备": "Scan- enhed",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Sletning mislykkedes. Porten er måske offline. Vil du tvinge slette data?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Sletning mislykkedes. Porten er måske offline. Vil du tvinge slette data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_de.json b/lan/lan_de.json
index 8f257d7b..9b95837e 100644
--- a/lan/lan_de.json
+++ b/lan/lan_de.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Alle Ihre Konto informationen werden DAUERHAFT von der Plattform entfernt und können nicht wieder hergestellt werden. Möchten Sie löschen?",
"监控": "Monitor",
"视频日志": "Video protokoll",
- "网关设备": "Gateway",
"开门器": "Türöffner",
"面容开锁": "Gesicht öffnet sich",
"开门方向设置": "Öffnungs richtung Set",
@@ -778,7 +777,6 @@
"导出": "Export",
"批量导出": "Batch-Export",
"读取记录": "Rekorde auffrischen",
- "手机需联网": "NeedNet",
"设备": "Gerät",
"消息": "Nachrichten",
"智能分析": "Intelligente Analytik",
@@ -1110,5 +1108,15 @@
"常规使用": "Regelmäßige Verwendung",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden, und klicken Sie auf Weiter, wenn die Kontroll leuchte blinkt abwechselnd",
"扫描设备": "Scan-Gerät",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Löschung fehl geschlagen. Das Gateway ist möglicher weise offline gegangen. Möchten Sie das Löschen der Daten erzwingen?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Löschung fehl geschlagen. Das Gateway ist möglicher weise offline gegangen. Möchten Sie das Löschen der Daten erzwingen?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_el.json b/lan/lan_el.json
index 050fc964..6c459d12 100644
--- a/lan/lan_el.json
+++ b/lan/lan_el.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Όλες οι πληροφορίες λογαριασμού σας θα αφαιρεθούν από την πλατφόρμα ΜΟΝΑ και δεν μπορούν να ανακτηθούν. Θέλετε να διαγραφείτε;",
"监控": "Παρακολούθηση",
"视频日志": "Καταγραφή βίντεο",
- "网关设备": "Πύλη πύλης",
"开门器": "Ανοιχτή πόρτας",
"面容开锁": "Ξεκλείδωμα πρόσωπου",
"开门方向设置": "Άνοιγμα σύνολο κατεύθυνσης",
@@ -778,7 +777,6 @@
"导出": "Εξαγωγή",
"批量导出": "Παρτίδα εξαγωγή",
"读取记录": "Ανανέωση εγγραφής",
- "手机需联网": "NeedNet",
"设备": "Συσκευή",
"消息": "Μηνύματα",
"智能分析": "Ευφυής αναλυτικός",
@@ -1110,5 +1108,15 @@
"常规使用": "Κανονική χρήση:",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πατήστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα, και κάντε κλικ Next όταν το φως δείκτη αναβοσβήνει εναλλάξα",
"扫描设备": "Συσκευή σάρωσης",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Η διαγραφή απέτυχε. Η πύλη μπορεί να έχει εκτός λειτουργίας. Θέλετε να αναγκάσετε τη διαγραφή των δεδομένων;"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Η διαγραφή απέτυχε. Η πύλη μπορεί να έχει εκτός λειτουργίας. Θέλετε να αναγκάσετε τη διαγραφή των δεδομένων;",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_en.json b/lan/lan_en.json
index 108785fa..2bc8eeaf 100644
--- a/lan/lan_en.json
+++ b/lan/lan_en.json
@@ -315,7 +315,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "All your Account information will be Removed from the Platform PERMANENTLY and cannot be Recovered.Do you want to Delete?",
"监控": "Monitor",
"视频日志": "Video Log",
- "网关设备": "Gateway",
"开门器": "Door Opener",
"面容开锁": "Face Unlocks",
"开门方向设置": "Opening Direction Set",
@@ -787,7 +786,6 @@
"导出":"Export",
"批量导出":"Batch export",
"读取记录":"Refresh Records",
- "手机需联网":"NeedNet",
"设备":"Device",
"消息":"Messages",
"智能分析":"Intelligent analytics",
@@ -1113,6 +1111,15 @@
"中功率": "Medium power",
"常规使用": "Regular use",
"扫描设备": "Scan device",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Deletion failed. The gateway may have gone offline. Do you want to force delete the data?"
-
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Deletion failed. The gateway may have gone offline. Do you want to force delete the data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
diff --git a/lan/lan_es.json b/lan/lan_es.json
index 248e721c..79c49887 100644
--- a/lan/lan_es.json
+++ b/lan/lan_es.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Toda la información de su cuenta se eliminará de la plataforma de forma permanente y no se podrá recuperar.",
"监控": "Monitor",
"视频日志": "Registro de vídeo",
- "网关设备": "Puerta de enlace",
"开门器": "Abrelatas de la puerta",
"面容开锁": "Desbloquea la cara",
"开门方向设置": "Conjunto de dirección de apertura",
@@ -778,7 +777,6 @@
"导出": "Exportación",
"批量导出": "Exportación de lotes",
"读取记录": "Actualizar registros",
- "手机需联网": "NeedNet",
"设备": "Dispositivo",
"消息": "Mensajes",
"智能分析": "Analítica inteligente",
@@ -1110,5 +1108,15 @@
"常规使用": "Uso regular",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos y haga clic en Siguiente cuando la luz indicadora parpadee alternativamente",
"扫描设备": "Dispositivo de exploración",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Falló la eliminación. Es posible que la puerta de enlace se haya desconectado. ¿Desea forzar la eliminación de los datos?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Falló la eliminación. Es posible que la puerta de enlace se haya desconectado. ¿Desea forzar la eliminación de los datos?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_et.json b/lan/lan_et.json
index 299d4c1d..23cbb933 100644
--- a/lan/lan_et.json
+++ b/lan/lan_et.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Kogu Teie konto teave eemaldatakse platvormilt PERMANENTILT ja seda ei saa taastada.Kas soovite kustutada?",
"监控": "Monitor",
"视频日志": "Video logi",
- "网关设备": "Väravatee",
"开门器": "Ukseavaja",
"面容开锁": "Nägu lahti lukustus",
"开门方向设置": "Avava suuna komplektComment",
@@ -778,7 +777,6 @@
"导出": "Eksport",
"批量导出": "Partii eksportimine",
"读取记录": "Värskenda salvestus",
- "手机需联网": "NeedNet",
"设备": "Seade",
"消息": "Teated",
"智能分析": "Intelligentne analüüs",
@@ -1110,5 +1108,15 @@
"常规使用": "Regulaarne kasutamine",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage ja hoidke nuppu 5 sekundit, ja klõpsa Järgmine, kui indikaator valgus vilgub vaheldumisel",
"扫描设备": "Skaneerimisseade",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Kustutamine nurjus. Värav võis välja lülitada. Kas soovid kustutada andmed?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Kustutamine nurjus. Värav võis välja lülitada. Kas soovid kustutada andmed?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_fi.json b/lan/lan_fi.json
index 4b2fe7ae..9141b427 100644
--- a/lan/lan_fi.json
+++ b/lan/lan_fi.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Kaikki tilitiedot poistetaan alustalta PERMANENTTI eikä niitä voi palauttaa.Haluatko poistaa?",
"监控": "Monitori",
"视频日志": "Videoloki",
- "网关设备": "GatewayComment",
"开门器": "Oviaukko",
"面容开锁": "Kasvo avaa",
"开门方向设置": "Avaava suunta",
@@ -778,7 +777,6 @@
"导出": "Vienti",
"批量导出": "Erän vienti",
"读取记录": "Päivitä tiedostot",
- "手机需联网": "NeedNet",
"设备": "Laite",
"消息": "Viestit",
"智能分析": "Älykäs analytiikka",
@@ -1110,5 +1108,15 @@
"常规使用": "Säännöllinen käyttö",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä painiketta nollauspainiketta 5 sekunnin ajan, ja klikkaa Seuraava kun ilmaisin valo vilkkuu vuorotellensa",
"扫描设备": "Skannauslaite",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Poisto epäonnistui. Portti on ehkä pois päältä. Haluatko pakottaa poistamaan tiedot?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Poisto epäonnistui. Portti on ehkä pois päältä. Haluatko pakottaa poistamaan tiedot?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_fr.json b/lan/lan_fr.json
index 87e47a72..43debbe2 100644
--- a/lan/lan_fr.json
+++ b/lan/lan_fr.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Toutes les informations de votre compte seront supprimées de la plate-forme de manière PERMANENTE et ne pourront pas être récupérées. Voulez-vous supprimer?",
"监控": "Moniteur",
"视频日志": "Journal vidéo",
- "网关设备": "Passerelle",
"开门器": "Ouvre-porte",
"面容开锁": "Le visage se déverrouille",
"开门方向设置": "Ensemble de direction d'ouverture",
@@ -778,7 +777,6 @@
"导出": "Exportation",
"批量导出": "Exportation par lots",
"读取记录": "Rafraîchir les enregistrements",
- "手机需联网": "NeedNet",
"设备": "Appareil",
"消息": "Messages",
"智能分析": "Analyse intelligente",
@@ -1110,5 +1108,15 @@
"常规使用": "Utilisation régulière",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Une fois la passerelle allumée, appuyez et maintenez enfoncé le bouton de réinitialisation pendant 5 secondes, puis cliquez sur Suivant lorsque le voyant clignote alternativement",
"扫描设备": "Appareil de numérisation",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "La suppression a échoué. La passerelle est peut-être hors ligne. Voulez-vous forcer la suppression des données?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "La suppression a échoué. La passerelle est peut-être hors ligne. Voulez-vous forcer la suppression des données?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_he.json b/lan/lan_he.json
index 7e7e4579..c0bd0c01 100644
--- a/lan/lan_he.json
+++ b/lan/lan_he.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "כל פרטי החשבון שלך יוסר מהפלטפורמה לצמיתות ולא ניתן לשחזר. האם ברצונך למחוק?",
"监控": "מוניטור",
"视频日志": "יומן וידאו",
- "网关设备": "שער",
"开门器": "פותחן דלת",
"面容开锁": "פותח פנים",
"开门方向设置": "פתיחת כיוון",
@@ -778,7 +777,6 @@
"导出": "יצוא",
"批量导出": "יצוא אצווה",
"读取记录": "ריענון רשומות",
- "手机需联网": "נברשת",
"设备": "מכשיר",
"消息": "הודעות",
"智能分析": "ניתוח חכם",
@@ -1110,5 +1108,15 @@
"常规使用": "שימוש קבוע",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "לאחר השער מופעל, לחץ והחזק את כפתור איפוס עבור 5 שניות, ולחץ על הבא כאשר מחוון אור מהבהב לסירוגין",
"扫描设备": "התקן סריקה",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "מחיקה נכשלה. ייתכן שהשער נעלם מהרשת. האם ברצונך לאלץ למחוק את הנתונים?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "מחיקה נכשלה. ייתכן שהשער נעלם מהרשת. האם ברצונך לאלץ למחוק את הנתונים?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_hk.json b/lan/lan_hk.json
index 39083939..977e1f37 100644
--- a/lan/lan_hk.json
+++ b/lan/lan_hk.json
@@ -314,7 +314,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "您的所有账户信息将从平台上永久删除,且无法恢复。要删除吗?",
"监控": "监控",
"视频日志": "视频日志",
- "网关设备": "网关",
"开门器": "开门器",
"面容开锁": "脸解锁",
"开门方向设置": "开启方向集",
@@ -786,7 +785,6 @@
"导出": "出口",
"批量导出": "批量出口",
"读取记录": "刷新记录",
- "手机需联网": "NeedNet",
"设备": "设备",
"消息": "消息",
"智能分析": "智能分析",
@@ -1110,5 +1108,15 @@
"常规使用": "经常使用",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "待设备上电后,长按复位键5秒,指示灯交替闪烁后,单击“下一步”",
"扫描设备": "扫描设备",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败。网关可能已经脱机。是否要强制删除数据?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败。网关可能已经脱机。是否要强制删除数据?",
+ "超级管理员英文": "超级管理员",
+ "授权管理员英文": "使管理",
+ "普通管理员英文": "普通用户",
+ "网关设备英文": "网关设备",
+ "手机需联网英文": "手机需联网",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_hr.json b/lan/lan_hr.json
index 0260ecaa..d4dd8fd3 100644
--- a/lan/lan_hr.json
+++ b/lan/lan_hr.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Sve informacije vašeg računa će biti uklonjene s platforme i neće se moći vratiti.Želite li izbrisati?",
"监控": "Monitor",
"视频日志": "Video dnevnik",
- "网关设备": "Prolaz",
"开门器": "Otvarač vrata",
"面容开锁": "Otključa lice",
"开门方向设置": "Smjer otvaranja",
@@ -778,7 +777,6 @@
"导出": "Izvozi",
"批量导出": "Izvoz serije",
"读取记录": "Osvježi zapise",
- "手机需联网": "NeedNet",
"设备": "Uređaj",
"消息": "Poruka servera:",
"智能分析": "Inteligentna analiza",
@@ -1110,5 +1108,15 @@
"常规使用": "Redovna upotreba",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nakon što se prolaz ukljuèi, pritisnite i zadržite dugme za reset 5 sekundi, i kliknite Sljedeća kada svjetlost indikatora izmijeniti",
"扫描设备": "Skeniraj uređaj",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Brisanje nije uspjelo. Prolaz je možda nestao. Želite li prisiliti brisati podatke?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Brisanje nije uspjelo. Prolaz je možda nestao. Želite li prisiliti brisati podatke?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_hu.json b/lan/lan_hu.json
index 19496163..bed7ca9a 100644
--- a/lan/lan_hu.json
+++ b/lan/lan_hu.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Az összes számlaadatot végleg eltávolítjuk a platformról, és nem lehet visszanyerni. szeretné törölni?",
"监控": "Monitor",
"视频日志": "Videó napló",
- "网关设备": "Gateway",
"开门器": "Ajtónyitó",
"面容开锁": "Face kinyit",
"开门方向设置": "Nyitási irány beállítás",
@@ -778,7 +777,6 @@
"导出": "Export",
"批量导出": "Batch export",
"读取记录": "Refresh records",
- "手机需联网": "Neednet",
"设备": "Eszköz",
"消息": "Üzenetek",
"智能分析": "Intelligens analitika",
@@ -1110,5 +1108,15 @@
"常规使用": "Rendszeres használat",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Miután az átjáró be van kapcsolva, nyomja meg és tartsa a reset gombot 5 másodpercig, és kattintson a következő gombra, amikor a jelző fény felváltva villog",
"扫描设备": "Beolvasási eszköz",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "A törlés nem sikerült. Az átjáró lehet, hogy offline lett. Szeretné kényszeríteni az adatok törlését?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "A törlés nem sikerült. Az átjáró lehet, hogy offline lett. Szeretné kényszeríteni az adatok törlését?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_id.json b/lan/lan_id.json
index 2ec41527..e494a7b5 100644
--- a/lan/lan_id.json
+++ b/lan/lan_id.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Semua informasi akun Anda akan dihapus dari Platform permanen dan tidak dapat dipulihkan. Apakah Anda ingin menghapus?",
"监控": "Monitor",
"视频日志": "Log Video",
- "网关设备": "Gateway",
"开门器": "Pembuka pintu",
"面容开锁": "Buka kunci wajah",
"开门方向设置": "Set penunjuk arah",
@@ -778,7 +777,6 @@
"导出": "Ekspor",
"批量导出": "Batch ekspor",
"读取记录": "Refresh rekaman",
- "手机需联网": "NeedNet",
"设备": "Perangkat",
"消息": "Pesan",
"智能分析": "Intelligent analytics",
@@ -1110,5 +1108,15 @@
"常规使用": "Penggunaan biasa",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Setelah gateway menyala, tekan dan tahan tombol reset selama 5 detik, dan klik berikutnya ketika lampu indikator berkedip secara bersamaan",
"扫描设备": "Perangkat Pindai",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Gateway mungkin telah offline. Ingin menghapus data?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Gateway mungkin telah offline. Ingin menghapus data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_it.json b/lan/lan_it.json
index faeda996..2434772c 100644
--- a/lan/lan_it.json
+++ b/lan/lan_it.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Tutte le informazioni del tuo account verranno rimosse dalla piattaforma PERMANENTAMENTE e non potranno essere recuperate. Vuoi eliminare?",
"监控": "Monitor",
"视频日志": "Registro video",
- "网关设备": "Gateway",
"开门器": "Apriporta",
"面容开锁": "Il viso si sblocca",
"开门方向设置": "Set di direzione di apertura",
@@ -778,7 +777,6 @@
"导出": "Esportazione",
"批量导出": "Esportazione in batch",
"读取记录": "Aggiorna i record",
- "手机需联网": "NeedNet",
"设备": "Dispositivo",
"消息": "Messaggi",
"智能分析": "Analisi intelligente",
@@ -1110,5 +1108,15 @@
"常规使用": "Uso regolare",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Dopo aver acceso il gateway, tenere premuto il pulsante di ripristino per 5 secondi e fare clic su Avanti quando l'indicatore luminoso lampeggia alternativamente",
"扫描设备": "Dispositivo di scansione",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Eliminazione non riuscita. Il gateway potrebbe essere andato offline. Vuoi forzare l'eliminazione dei dati?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Eliminazione non riuscita. Il gateway potrebbe essere andato offline. Vuoi forzare l'eliminazione dei dati?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_ja.json b/lan/lan_ja.json
index 4e1801c0..be431bac 100644
--- a/lan/lan_ja.json
+++ b/lan/lan_ja.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "すべてのアカウント情報は完全にプラットフォームから削除され、回復できません。削除しますか?",
"监控": "モニター",
"视频日志": "ビデオログ",
- "网关设备": "ゲートウェイ",
"开门器": "ドアオープナー",
"面容开锁": "顔のロック解除",
"开门方向设置": "オープニング方向セット",
@@ -778,7 +777,6 @@
"导出": "エクスポート",
"批量导出": "一括エクスポート",
"读取记录": "レコードの更新",
- "手机需联网": "ニードネット",
"设备": "デバイス",
"消息": "メッセージ",
"智能分析": "インテリジェント分析",
@@ -1110,5 +1108,15 @@
"常规使用": "通常の使用",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続け、インジケーターライトが交互に点滅したら [次へ] をクリックします。",
"扫描设备": "スキャン装置",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "削除に失敗しました。ゲートウェイがオフラインになった可能性があります。強制的にデータを削除しますか?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "削除に失敗しました。ゲートウェイがオフラインになった可能性があります。強制的にデータを削除しますか?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_keys.json b/lan/lan_keys.json
index 1babbe1b..a26d6864 100755
--- a/lan/lan_keys.json
+++ b/lan/lan_keys.json
@@ -317,7 +317,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?",
"监控": "监控",
"视频日志": "视频日志",
- "网关设备": "网关设备",
"开门器": "开门器",
"面容开锁": "面容开锁",
"开门方向设置": "开门方向设置",
@@ -1112,5 +1111,15 @@
"中功率": "中功率",
"常规使用": "常规使用",
"扫描设备": "扫描设备",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?",
+ "超级管理员英文": "超级管理员英文",
+ "授权管理员英文": "授权管理员英文",
+ "普通管理员英文": "普通管理员英文",
+ "网关设备英文": "网关设备英文",
+ "手机需联网英文": "手机需联网英文",
+ "年简称": "年简称",
+ "月简称": "月简称",
+ "日简称": "日简称",
+ "时简称": "时简称",
+ "分简称": "分简称"
}
diff --git a/lan/lan_kk.json b/lan/lan_kk.json
index 65b7b013..1c8871ae 100644
--- a/lan/lan_kk.json
+++ b/lan/lan_kk.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Тіркелгіңіздің барлық мәліметі Платформадан өшірілген және қайта жоғалтылмайды. Өшіруге қалайсыз ба?",
"监控": "Монитор",
"视频日志": "Видео журналы",
- "网关设备": "Шлюз",
"开门器": "Қашықтығы ашу",
"面容开锁": "Өшірілгендер",
"开门方向设置": "Ашату жолы жинағы",
@@ -778,7 +777,6 @@
"导出": "Экспорттау",
"批量导出": "Бағдарлама экспорттау",
"读取记录": "Жаңарту",
- "手机需联网": "NeedNet",
"设备": "Құрылғысы",
"消息": "Хаттар",
"智能分析": "Интелгент аналітикасы",
@@ -1110,5 +1108,15 @@
"常规使用": "Қалыпты қолданылсын",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Келесі періңізнен соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз, Индикаторның жарықты ауыстырғанда, келесі басыңыз",
"扫描设备": "Сканер құрылғысы",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Өшіру жаңылысы. Келесі жіберді. Деректерді өшіргіңіз келе ме?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Өшіру жаңылысы. Келесі жіберді. Деректерді өшіргіңіз келе ме?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_ko.json b/lan/lan_ko.json
index 547c9091..589b5633 100644
--- a/lan/lan_ko.json
+++ b/lan/lan_ko.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "모든 계정 정보는 플랫폼에서 자동으로 삭제되며 복구 할 수 없습니다. 삭제 하시겠습니까?",
"监控": "모니터",
"视频日志": "비디오 로그",
- "网关设备": "게이트웨이",
"开门器": "도어 오프너",
"面容开锁": "얼굴 잠금 해제",
"开门方向设置": "오프닝 방향 세트",
@@ -778,7 +777,6 @@
"导出": "수출",
"批量导出": "배치 수출",
"读取记录": "레코드 새로 고침",
- "手机需联网": "니드넷",
"设备": "장치",
"消息": "메시지",
"智能分析": "지능형 분석",
@@ -1110,5 +1108,15 @@
"常规使用": "정사이즈 사용",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "게이트웨이의 전원이 켜진 후 5 초 동안 리셋 버튼을 누르고 누르고 표시등이 번갈아 깜박이면 다음 을 클릭하십시오.",
"扫描设备": "스캔 장치",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "삭제가 실패했습니다. 게이트웨이가 오프라인 상태일 수 있다. 강제로 데이터 삭제를 하시겠습니까?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "삭제가 실패했습니다. 게이트웨이가 오프라인 상태일 수 있다. 강제로 데이터 삭제를 하시겠습니까?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_lt.json b/lan/lan_lt.json
index b986a3ed..84e203e1 100644
--- a/lan/lan_lt.json
+++ b/lan/lan_lt.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Visa jūsų paskyros informacija bus pašalinta iš platformos visam laikui ir jų negalima atkurti. ar norite ištrinti?",
"监控": "Monitorius",
"视频日志": "Vaizdo žurnalas",
- "网关设备": "Vartai",
"开门器": "Durų atidarytuvas",
"面容开锁": "Veidas atrakinamas",
"开门方向设置": "Atidarymo kryptis nustatytas",
@@ -778,7 +777,6 @@
"导出": "Eksporto",
"批量导出": "Paketo eksportas",
"读取记录": "Atnaujinti įrašus",
- "手机需联网": "Neednet",
"设备": "Įtaisas",
"消息": "Pranešimai",
"智能分析": "Intelektuali analizė",
@@ -1110,5 +1108,15 @@
"常规使用": "Reguliarus naudojimas",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite reset mygtuką ir spustelėkite toliau, kai indikatoriaus lemputė mirksi pakaitomis.",
"扫描设备": "Nuskaitymo įrenginys",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Ištrynimas nepavyko. Vartai gali būti neprisijungę. Ar norite priversti ištrinti duomenis?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Ištrynimas nepavyko. Vartai gali būti neprisijungę. Ar norite priversti ištrinti duomenis?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_ms.json b/lan/lan_ms.json
index 9adef58c..d6b27146 100644
--- a/lan/lan_ms.json
+++ b/lan/lan_ms.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Semua maklumat akaun anda akan dikeluarkan dari Platform secara kekal dan tidak dapat dipulihkan. Adakah anda ingin memadam?",
"监控": "Monitor",
"视频日志": "Log Video",
- "网关设备": "Pintu masuk",
"开门器": "Pembuka pintu",
"面容开锁": "Membuka muka",
"开门方向设置": "Set arah pembukaan",
@@ -778,7 +777,6 @@
"导出": "Eksport",
"批量导出": "Eksport Batch",
"读取记录": "Rekod-rekod segar semula",
- "手机需联网": "NeedNet",
"设备": "Peranti",
"消息": "Mesej",
"智能分析": "Analisis pintar",
@@ -1110,5 +1108,15 @@
"常规使用": "Penggunaan biasa",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat, dan klik seterusnya apabila lampu penunjuk berkelip bergantian",
"扫描设备": "Imbas peranti",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Pintu masuk mungkin telah pergi di luar talian. Adakah anda mahu memaksa memadam data?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Penghapusan gagal. Pintu masuk mungkin telah pergi di luar talian. Adakah anda mahu memaksa memadam data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_nl.json b/lan/lan_nl.json
index 1df7d3e7..82ed9aac 100644
--- a/lan/lan_nl.json
+++ b/lan/lan_nl.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Alle accountgegevens worden PERMANENT van het Platform verwijderd en kunnen niet worden teruggevonden. Wilt u Verwijderen?",
"监控": "Monitor",
"视频日志": "Videologboek",
- "网关设备": "Gateway",
"开门器": "Deuropener",
"面容开锁": "Gezicht ontgrendelt",
"开门方向设置": "Openingsrichtingsset",
@@ -778,7 +777,6 @@
"导出": "Uitvoer",
"批量导出": "Batch export",
"读取记录": "Records vernieuwen",
- "手机需联网": "Neednet",
"设备": "Apparaat",
"消息": "Berichten",
"智能分析": "Intelligente analyses",
@@ -1110,5 +1108,15 @@
"常规使用": "Regelmatig gebruik",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt en klikt u op Volgende wanneer het indicatielampje afwisselend knippert",
"扫描设备": "Scan apparaat",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Verwijdering is mislukt. De gateway is mogelijk offline gegaan. Wilt u de gegevens forceren verwijderen?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Verwijdering is mislukt. De gateway is mogelijk offline gegaan. Wilt u de gegevens forceren verwijderen?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_pl.json b/lan/lan_pl.json
index f0b2f14f..7ca0add8 100644
--- a/lan/lan_pl.json
+++ b/lan/lan_pl.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Wszystkie informacje o koncie zostaną usunięte z platformy i nie będzie można ich odzyskać. Czy chcesz usunąć?",
"监控": "Monitor",
"视频日志": "Dziennik wideo",
- "网关设备": "Brama",
"开门器": "Otwieracz do drzwi",
"面容开锁": "Odblokowywanie twarzy",
"开门方向设置": "Zestaw kierunku otwierania",
@@ -778,7 +777,6 @@
"导出": "Eksport",
"批量导出": "Eksport partii",
"读取记录": "Odśwież rekordy",
- "手机需联网": "NeedNet",
"设备": "Urządzenie",
"消息": "Wiadomości",
"智能分析": "Inteligentna analityka",
@@ -1110,5 +1108,15 @@
"常规使用": "Regularne stosowanie",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund i kliknij przycisk Dalej, gdy wskaźnik miga na przemian",
"扫描设备": "Urządzenie skanujące",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Usunięcie nie powiodło się. Brama mogła zostać wyłączona. Czy chcesz wymusić usunięcie danych?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Usunięcie nie powiodło się. Brama mogła zostać wyłączona. Czy chcesz wymusić usunięcie danych?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_pt.json b/lan/lan_pt.json
index 8a12675b..5660f8cf 100644
--- a/lan/lan_pt.json
+++ b/lan/lan_pt.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Todas as informações da sua conta serão removidas da plataforma PERMANENTEMENTE e não poderão ser recuperadas. Deseja excluir?",
"监控": "Monitore",
"视频日志": "Log Vídeo",
- "网关设备": "Gateway",
"开门器": "Abridor porta",
"面容开锁": "Rosto desbloqueia",
"开门方向设置": "Conjunto Direção Abertura",
@@ -778,7 +777,6 @@
"导出": "Exportação",
"批量导出": "Exportação lote",
"读取记录": "Atualizar Registros",
- "手机需联网": "NeedNet",
"设备": "Dispositivo",
"消息": "Mensagens",
"智能分析": "Análise inteligente",
@@ -1110,5 +1108,15 @@
"常规使用": "Uso regular",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos e clique em Next quando a luz indicadora pisca alternadamente",
"扫描设备": "Digitalizar dispositivo",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "A eliminação falhou. O gateway pode ter ficado offline. Você quer forçar a exclusão dos dados?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "A eliminação falhou. O gateway pode ter ficado offline. Você quer forçar a exclusão dos dados?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_ro.json b/lan/lan_ro.json
index 8b3258b0..18926d79 100644
--- a/lan/lan_ro.json
+++ b/lan/lan_ro.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Toate informațiile contului dumneavoastră vor fi înlăturate de pe platformă și nu pot fi recuperate. Doriți să ștergeți?",
"监控": "Monitor",
"视频日志": "Jurnal video",
- "网关设备": "GatewayComment",
"开门器": "Deschizător de uși",
"面容开锁": "Fața deblochează",
"开门方向设置": "Set de direcție de deschidere",
@@ -778,7 +777,6 @@
"导出": "Exportă",
"批量导出": "Export pe lot",
"读取记录": "Reîmprospătește înregistrările",
- "手机需联网": "NeedNet",
"设备": "Dispozitive",
"消息": "Mesaje",
"智能分析": "Analitică inteligentă",
@@ -1110,5 +1108,15 @@
"常规使用": "Utilizare regulată",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "După ce poarta este pornită, apăsați și țineți butonul de resetare timp de 5 secunde, și faceți clic pe Următor atunci când lumina indicatorului se aprinde alternativ.",
"扫描设备": "Dispozitiv de scanare",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Ștergerea a eșuat. Poarta poate s-a oprit. Doriți să forțați ștergerea datelor?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Ștergerea a eșuat. Poarta poate s-a oprit. Doriți să forțați ștergerea datelor?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_ru.json b/lan/lan_ru.json
index 43aa4f45..5fb8f68b 100644
--- a/lan/lan_ru.json
+++ b/lan/lan_ru.json
@@ -180,7 +180,7 @@
"隐藏无效开锁权限": "Скрыть недопустимый доступ",
"APP开锁时需手机连网的锁": "Замки требующие телефона онлайн",
"增值服务": "Услуги",
- "关于": "Касательно",
+ "关于": "О нас",
"退出": "Выход",
"删除账号": "Удалить аккаунт",
"个人信息": "Информация счета",
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Вся информация о вашей учетной записи будет удалена с платформы ПОСТОЯННО и не может быть восстановлена. Вы хотите удалить?",
"监控": "Монитор",
"视频日志": "Видео журнал",
- "网关设备": "Шлюз",
"开门器": "Дверь открывалка",
"面容开锁": "Лицо разблокирует",
"开门方向设置": "Набор направления открытия",
@@ -778,7 +777,6 @@
"导出": "Экспорт",
"批量导出": "Пакетный экспорт",
"读取记录": "Обновить записи",
- "手机需联网": "Ниднет",
"设备": "Устройство",
"消息": "Сообщения",
"智能分析": "Интеллектуальная аналитика",
@@ -1110,5 +1108,15 @@
"常规使用": "Регулярное использование",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд и нажмите «Далее», когда индикатор попеременно начнет мигать.",
"扫描设备": "Устройство сканирования",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Ошибка удаления. Возможно, шлюз ушел в автономный режим. Хотите ли вы принудительно удалить данные?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Ошибка удаления. Возможно, шлюз ушел в автономный режим. Хотите ли вы принудительно удалить данные?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_sk.json b/lan/lan_sk.json
index d7b46780..f1d7df2d 100644
--- a/lan/lan_sk.json
+++ b/lan/lan_sk.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Všetky informácie o vašom účte budú natrvalo odstránené z platformy a nemôžu byť obnovené. chcete odstrániť?",
"监控": "Monitor",
"视频日志": "Video log",
- "网关设备": "Brána",
"开门器": "Otvárač dverí",
"面容开锁": "Tvár odomkne",
"开门方向设置": "Nastaviť smer otvorenia",
@@ -778,7 +777,6 @@
"导出": "Export",
"批量导出": "Export šarže",
"读取记录": "Refresh records",
- "手机需联网": "Neednet",
"设备": "Zariadenie",
"消息": "Správy",
"智能分析": "Inteligentná analýza",
@@ -1110,5 +1108,15 @@
"常规使用": "Pravidelné použitie",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset po dobu 5 sekúnd a kliknite na ďalšie, keď indikátorové svetlo záblesky striedavo",
"扫描设备": "Skenovanie zariadenia",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Vymazanie sa nepodarilo. Brána môže ísť offline. Chcete vynútiť odstránenie údajov?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Vymazanie sa nepodarilo. Brána môže ísť offline. Chcete vynútiť odstránenie údajov?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_sr_cyrl.json b/lan/lan_sr_cyrl.json
index eaf1375b..be13221a 100644
--- a/lan/lan_sr_cyrl.json
+++ b/lan/lan_sr_cyrl.json
@@ -181,7 +181,7 @@
"隐藏无效开锁权限": "Сакриј неважећи приступ",
"APP开锁时需手机连网的锁": "Браве које захтевају телефон на мрежи",
"增值服务": "Услуге",
- "关于": "Povodom",
+ "关于": "O nama",
"退出": "Одјавити се",
"删除账号": "Избриши налог",
"个人信息": "Информације о налогу",
@@ -314,7 +314,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Сви подаци о вашем налогу ће бити трајно уклоњени са платформе и не могу се Рецоверед.До желите да избришете?",
"监控": "Монитор",
"视频日志": "Видео Дневник",
- "网关设备": "Пролаз",
"开门器": "Отварач врата",
"面容开锁": "Откључавање лица",
"开门方向设置": "Отварање Правац Сет",
@@ -786,7 +785,6 @@
"导出": "Извоз",
"批量导出": "Серијски извоз",
"读取记录": "Освежите записе",
- "手机需联网": "Претраживање",
"设备": "Уређај",
"消息": "Поруке",
"智能分析": "Интелигентна аналитика",
@@ -1110,5 +1108,15 @@
"常规使用": "Редовна употреба",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди, и кликните Следећи када индикатор трепери наизменично",
"扫描设备": "Уређај за скенирање",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Брисање није успело. Гатеваи је можда отишао ван мреже. Да ли желите да присилите брисање података?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Брисање није успело. Гатеваи је можда отишао ван мреже. Да ли желите да присилите брисање података?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_sv.json b/lan/lan_sv.json
index c284f4da..0a1bbc5b 100644
--- a/lan/lan_sv.json
+++ b/lan/lan_sv.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "All information från dina konto kommer att tas bort från plattformen PERMANENTLYT och kan inte återställas. Vill du ta bort?",
"监控": "Övervakare",
"视频日志": "Videologg",
- "网关设备": "Gateway",
"开门器": "Dörröppnare",
"面容开锁": "Ansiktet upplåsas",
"开门方向设置": "Öppningsriktning",
@@ -778,7 +777,6 @@
"导出": "Exportering",
"批量导出": "Export från sats",
"读取记录": "Uppdatera poster",
- "手机需联网": "NeedNet",
"设备": "Enheten",
"消息": "Meddelanden",
"智能分析": "Intelligent analys",
@@ -1110,5 +1108,15 @@
"常规使用": "Regelbunden användning",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "När gateway är på, tryck och håll omställningsknappen i 5 sekunder, och klicka Nästa när indikatorljuset blinkar växelvist",
"扫描设备": "Söka enheter",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Borttagning misslyckades. Porten kan ha gått offline. Vill du tvinga bort data?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Borttagning misslyckades. Porten kan ha gått offline. Vill du tvinga bort data?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_th.json b/lan/lan_th.json
index 73c491b8..94dda514 100644
--- a/lan/lan_th.json
+++ b/lan/lan_th.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "ข้อมูลบัญชีทั้งหมดของคุณจะถูกลบออกจากแพลตฟอร์มอย่างถาวรและไม่สามารถกู้คืนได้คุณต้องการลบหรือไม่?",
"监控": "จอภาพสำหรับตรวจสอบ",
"视频日志": "บันทึกวิดีโอบันทึก",
- "网关设备": "เกตเวย์เกตเวย์",
"开门器": "ที่เปิดประตู",
"面容开锁": "ปลดล็อคใบหน้า",
"开门方向设置": "ชุดเปิดทิศทาง",
@@ -778,7 +777,6 @@
"导出": "ส่งออกจากต่างประเทศ",
"批量导出": "ชุดส่งออก",
"读取记录": "รีเฟรชระเบียน",
- "手机需联网": "ตาข่ายปักลาย",
"设备": "อุปกรณ์สำหรับเชื่อมต่อ",
"消息": "ข้อความต่างๆ",
"智能分析": "การวิเคราะห์อัจฉริยะ",
@@ -1110,5 +1108,15 @@
"常规使用": "ใช้เป็นประจำ",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีและคลิกถัดไปเมื่อไฟแสดงสถานะกะพริบสลับกัน",
"扫描设备": "อุปกรณ์สแกน",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "การลบล้มเหลวเกตเวย์อาจออฟไลน์ไปแล้วคุณต้องการบังคับให้ลบข้อมูลหรือไม่?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "การลบล้มเหลวเกตเวย์อาจออฟไลน์ไปแล้วคุณต้องการบังคับให้ลบข้อมูลหรือไม่?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_tr.json b/lan/lan_tr.json
index ee69bc05..cd306451 100644
--- a/lan/lan_tr.json
+++ b/lan/lan_tr.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Tüm hesap bilgileriniz platformdan kalıcı olarak kaldırılacak ve kurtarılamayacaktır. silmek ister misiniz?",
"监控": "Monitör",
"视频日志": "Video günlüğü",
- "网关设备": "Ağ geçidi",
"开门器": "Kapı açacağı",
"面容开锁": "Yüz kilidini açar",
"开门方向设置": "Açılış yönü seti",
@@ -778,7 +777,6 @@
"导出": "Ihracat",
"批量导出": "Toplu ihracat",
"读取记录": "Kayıtları yenileyin",
- "手机需联网": "Neednet",
"设备": "Cihaz",
"消息": "Mesajlar",
"智能分析": "Akıllı analiz",
@@ -1110,5 +1108,15 @@
"常规使用": "Düzenli kullanım",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Ağ geçidi açıldıktan sonra, sıfırlama düğmesine 5 saniye basılı tutun ve gösterge ışığı dönüşümlü olarak yanıp söndüğünde İleri'ye tıklayın.",
"扫描设备": "Tarama cihazı",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Silme başarısız oldu. Ağ geçidi çevrimdışı geçmiş olabilir. Verileri silmeye zorlamak ister misiniz?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Silme başarısız oldu. Ağ geçidi çevrimdışı geçmiş olabilir. Verileri silmeye zorlamak ister misiniz?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_tw.json b/lan/lan_tw.json
index 5e2e0575..38ea07af 100644
--- a/lan/lan_tw.json
+++ b/lan/lan_tw.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "您的所有帳戶信息都將從平台中永久刪除,並且無法恢復。 是否要刪除?",
"监控": "顯示器",
"视频日志": "視頻日誌",
- "网关设备": "網關",
"开门器": "開門器",
"面容开锁": "面部解鎖",
"开门方向设置": "打開方向設置",
@@ -778,7 +777,6 @@
"导出": "出口",
"批量导出": "批量導出",
"读取记录": "刷新記錄",
- "手机需联网": "NeedNet",
"设备": "設備",
"消息": "消息",
"智能分析": "智能分析",
@@ -1110,5 +1108,16 @@
"常规使用": "經常使用",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘,當指示燈交替閃爍時單擊Next",
"扫描设备": "掃描設備",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "刪除失敗。 網關可能已脫機。 是否要強制刪除數據?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "刪除失敗。 網關可能已脫機。 是否要強制刪除數據?",
+ "超级管理员英文": "超級管理員",
+ "授权管理员英文": "授權管理員",
+ "普通管理员英文": "普通用戶",
+ "网关设备英文": "網關設備",
+ "手机需联网英文": "手機需要聯網",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
+
}
\ No newline at end of file
diff --git a/lan/lan_uk.json b/lan/lan_uk.json
index 239316e6..18d523a5 100644
--- a/lan/lan_uk.json
+++ b/lan/lan_uk.json
@@ -314,7 +314,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Вся інформація вашого Облікового запису буде видалена з Платформи НАЗАВЖДИ і не може бути Recovered.Do ви хочете Видалити?",
"监控": "Монітор",
"视频日志": "Відео журнал",
- "网关设备": "Шлюз",
"开门器": "Відкривач дверей",
"面容开锁": "Розблокування по обличчю",
"开门方向设置": "Встановлено напрямок відкривання",
@@ -786,7 +785,6 @@
"导出": "Експорт",
"批量导出": "Пакетний експорт",
"读取记录": "Оновити записи",
- "手机需联网": "Мережа NeedNet",
"设备": "Пристрій",
"消息": "Повідомлення",
"智能分析": "Інтелектуальна аналітика",
@@ -1110,5 +1108,15 @@
"常规使用": "Регулярне використання",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд, а потім натисніть «Далі», коли індикатор почне блимати по черзі",
"扫描设备": "Сканування пристрою",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Видалення не вдалося. Можливо, шлюз перейшов в автономний режим. Ви хочете примусово видалити дані?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Видалення не вдалося. Можливо, шлюз перейшов в автономний режим. Ви хочете примусово видалити дані?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_vi.json b/lan/lan_vi.json
index c39b0f23..3fac30ad 100644
--- a/lan/lan_vi.json
+++ b/lan/lan_vi.json
@@ -313,7 +313,6 @@
"删除账号后,你的所有信息及相关记录都会从平台彻底删除,且不可恢复,是否删除?": "Tất cả thông tin tài khoản của bạn sẽ bị xóa vĩnh viễn khỏi nền tảng và không thể phục hồi. Bạn có muốn xóa?",
"监控": "Màn hình",
"视频日志": "Nhật ký video",
- "网关设备": "Cổng",
"开门器": "Dụng cụ mở cửa",
"面容开锁": "Mở khóa mặt",
"开门方向设置": "Bộ hướng mở",
@@ -778,7 +777,6 @@
"导出": "Xuất khẩu",
"批量导出": "Hàng loạt xuất khẩu",
"读取记录": "Làm mới hồ sơ",
- "手机需联网": "Neednet",
"设备": "Thiết bị",
"消息": "Tin nhắn",
"智能分析": "Phân Tích thông minh",
@@ -1110,5 +1108,15 @@
"常规使用": "Sử dụng thường xuyên",
"网关通电后,长按重置按钮5秒,指示灯交替闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút đặt lại trong 5 giây và Nhấp vào tiếp theo khi đèn báo nhấp nháy luân phiên",
"扫描设备": "Thiết bị quét",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "Xóa thất bại. Cổng có thể đã tắt. Bạn có muốn buộc xóa dữ liệu không?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "Xóa thất bại. Cổng có thể đã tắt. Bạn có muốn buộc xóa dữ liệu không?",
+ "超级管理员英文": "Super Admin",
+ "授权管理员英文": "Make admin",
+ "普通管理员英文": "Ordinary user",
+ "网关设备英文": "Gateway",
+ "手机需联网英文": "NeedNet",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
\ No newline at end of file
diff --git a/lan/lan_zh.json b/lan/lan_zh.json
index a293b024..20d398f7 100755
--- a/lan/lan_zh.json
+++ b/lan/lan_zh.json
@@ -1112,5 +1112,15 @@
"中功率": "中功率",
"常规使用": "常规使用",
"扫描设备": "扫描设备",
- "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?"
+ "删除失败,网关可能已经离线,是否强制删除该数据?": "删除失败,网关可能已经离线,是否强制删除该数据?",
+ "超级管理员英文": "超级管理员",
+ "授权管理员英文": "授权管理员",
+ "普通管理员英文": "普通管理员",
+ "网关设备英文": "网关设备",
+ "手机需联网英文": "手机需联网",
+ "年简称": "Y",
+ "月简称": "M",
+ "日简称": "D",
+ "时简称": "H",
+ "分简称": "M"
}
diff --git a/lib/app.dart b/lib/app.dart
index c81290a1..fad7b31d 100755
--- a/lib/app.dart
+++ b/lib/app.dart
@@ -10,7 +10,6 @@ import 'package:star_lock/main/lockMian/lockMain/lockMain_logic.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
import 'package:star_lock/tools/app_manager.dart';
import 'package:star_lock/tools/bindings/app_binding.dart';
-import 'package:star_lock/tools/change_language_format.dart';
import 'package:star_lock/tools/storage.dart';
import 'package:star_lock/translations/app_dept.dart';
@@ -21,6 +20,7 @@ import 'baseWidget.dart';
import 'tools/appRouteObserver.dart';
import 'tools/store_service.dart';
+import 'translations/current_locale_tool.dart';
class MyApp extends StatefulWidget {
MyApp({required this.isLogin, GlobalKey? key}) : super(key: key);
@@ -62,36 +62,26 @@ class _MyAppState extends State with WidgetsBindingObserver, BaseWidget {
// localeResolutionCallback用于在启动时动态确定应该使用哪种语言和地区。
localeResolutionCallback:
(Locale? locale, Iterable supportedLocales) {
- if (widget.isLogin) {
- // 登录之后调用存储的语言
- if (StoreService.to.getLanguageCode()!.isNotEmpty) {
- locale = appDept.deptSupportedLocales
- .where((Locale element) =>
- element.toString() == StoreService.to.getLanguageCode())
- .first;
- } else {
- // 如果没储存则调用系统的语言
- locale = Get.deviceLocale;
- }
- } else {
- // 没登录之前调用系统的语言
- locale = Get.deviceLocale;
- }
- locale = ChangeLanguageFormat.convertLocale(locale!);
- return supportedLocales.contains(locale)
- ? locale
- : supportedLocales.first;
+ AppLog.log(
+ 'System device locale: ${Get.deviceLocale} locale:$locale');
+ // if (widget.isLogin) {
+ // 登录之后调用存储的语言
+ locale = CurrentLocaleTool.getCurrentLocale();
+ // } else {
+ // // 没登录之前调用系统的语言
+ // locale = Get.deviceLocale;
+ // }
+ locale = CurrentLocaleTool.convertLocale(locale);
+ AppLog.log('localeResolutionCallback locale: $locale');
+ AppManager()
+ .setLanCode(code: '${locale.languageCode}_${locale.countryCode}');
+ return Locale(locale.languageCode, locale.countryCode);
},
// 用来指定应用当前使用的语言和地区。它定义了应用在启动时加载的默认语言环境。
- locale: StoreService.to.getLanguageCode()!.isNotEmpty
- ? appDept.deptSupportedLocales
- .where((Locale element) =>
- element.toString() == StoreService.to.getLanguageCode())
- .first
- : Get.deviceLocale,
+ locale: CurrentLocaleTool.getCurrentLocale(),
// locale: Get.deviceLocale,
// fallbackLocale用于指定在无法找到匹配的语言时,应用应该使用的默认语言和地区。
- fallbackLocale: Get.deviceLocale,
+ fallbackLocale: const Locale('en', 'US'),
theme: ThemeData(
scaffoldBackgroundColor: const Color(0xFFF6F6F6),
backgroundColor: const Color(0xFFF6F6F6),
diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart
index 59da733a..143ffb90 100755
--- a/lib/login/login/starLock_login_page.dart
+++ b/lib/login/login/starLock_login_page.dart
@@ -5,8 +5,8 @@ import 'package:get/get.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_state.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
-import 'package:star_lock/tools/wechat/customer_tool.dart';
import 'package:star_lock/tools/storage.dart';
+import 'package:star_lock/tools/wechat/customer_tool.dart';
import '../../appRouters.dart';
import '../../app_settings/app_colors.dart';
@@ -47,14 +47,16 @@ class _StarLockLoginPageState extends State {
haveBack: false,
backgroundColor: AppColors.mainColor,
actionsList: [
- IconButton(
- onPressed: () {
- WechatManageTool.getAppInfo(CustomerTool.openCustomerService);
- },
- icon: const Icon(
- Icons.support_agent,
- color: Colors.white,
- )),
+ if (state.isChina == true)
+ IconButton(
+ onPressed: () {
+ WechatManageTool.getAppInfo(
+ CustomerTool.openCustomerService);
+ },
+ icon: const Icon(
+ Icons.support_agent,
+ color: Colors.white,
+ )),
TextButton(
child: Text(
'注册'.tr,
diff --git a/lib/login/login/starLock_login_state.dart b/lib/login/login/starLock_login_state.dart
index 6edb1563..41bc0fef 100755
--- a/lib/login/login/starLock_login_state.dart
+++ b/lib/login/login/starLock_login_state.dart
@@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
+import '../../translations/current_locale_tool.dart';
+
class StarLockLoginState {
StarLockLoginState() {
// emailOrPhone.value = StoreService.to.getLastUserAccount() as String;
@@ -15,6 +17,16 @@ class StarLockLoginState {
/// 获取翻译后的国家名称
String get countryName => countryKey.value.tr;
+ ///
+ bool get isChina {
+ if (CurrentLocaleTool.convertLocale(Get.deviceLocale!) ==
+ const Locale('zh', 'CN')) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
RxString emailOrPhone = ''.obs;
RxString pwd = ''.obs;
RxBool canNext = false.obs;
diff --git a/lib/login/login/starLock_login_xhj_page.dart b/lib/login/login/starLock_login_xhj_page.dart
index 76e06922..8138db92 100755
--- a/lib/login/login/starLock_login_xhj_page.dart
+++ b/lib/login/login/starLock_login_xhj_page.dart
@@ -5,8 +5,8 @@ import 'package:get/get.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_state.dart';
import 'package:star_lock/tools/appFirstEnterHandle.dart';
-import 'package:star_lock/tools/wechat/customer_tool.dart';
import 'package:star_lock/tools/storage.dart';
+import 'package:star_lock/tools/wechat/customer_tool.dart';
import '../../appRouters.dart';
import '../../app_settings/app_colors.dart';
@@ -63,15 +63,16 @@ class _StarLockLoginPageState extends State {
),
),
),
- IconButton(
- onPressed: () {
- WechatManageTool.getAppInfo(
- CustomerTool.openCustomerService);
- },
- icon: Icon(
- Icons.support_agent,
- color: AppColors.mainColor,
- )),
+ if (state.isChina == true)
+ IconButton(
+ onPressed: () {
+ WechatManageTool.getAppInfo(
+ CustomerTool.openCustomerService);
+ },
+ icon: Icon(
+ Icons.support_agent,
+ color: AppColors.mainColor,
+ )),
],
),
SizedBox(height: 30.h),
diff --git a/lib/login/selectCountryRegion/selectCountryRegion_page.dart b/lib/login/selectCountryRegion/selectCountryRegion_page.dart
index c429a934..08d9de36 100755
--- a/lib/login/selectCountryRegion/selectCountryRegion_page.dart
+++ b/lib/login/selectCountryRegion/selectCountryRegion_page.dart
@@ -10,6 +10,7 @@ import 'package:star_lock/tools/baseGetXController.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/keySearchWidget.dart';
import '../../tools/titleAppBar.dart';
+import '../../translations/current_locale_tool.dart';
import 'common/index.dart';
class SelectCountryRegionPage extends StatefulWidget {
@@ -24,11 +25,14 @@ class _SelectCountryRegionPageState extends State {
List countriesList = [];
List topCountriesList = [];
TextEditingController searchController = TextEditingController();
+ String currentLanguage = '';
@override
void initState() {
super.initState();
+ currentLanguage = CurrentLocaleTool.getCurrentLocaleString();
+
SuspensionUtil.setShowSuspensionStatus(
countriesList.cast());
Future.delayed(const Duration(milliseconds: 20), getCountriesListRequest);
@@ -154,7 +158,9 @@ class _SelectCountryRegionPageState extends State {
final String tag = model.getSuspensionTag();
return Utils.getSusItem(context, tag);
},
- indexBarData: const ['★', ...kIndexBarData],
+ indexBarData: currentLanguage == 'zh_CN'
+ ? const ['★', ...kIndexBarData]
+ : [],
),
),
],
diff --git a/lib/main.dart b/lib/main.dart
index e9dcfe0b..c5f0db2a 100755
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -74,7 +74,8 @@ Future _setCommonServices() async {
//关于隐私协议的初始化
Future privacySDKInitialization() async {
- UmengCommonSdk.initCommon('671244cf80464b33f6df9648', '671244ae80464b33f6df9646', 'Product');
+ UmengCommonSdk.initCommon(
+ '671244cf80464b33f6df9648', '671244ae80464b33f6df9646', 'Product');
UmengCommonSdk.setPageCollectionModeManual();
await Get.putAsync(() => PlatformInfoService().init());
@@ -83,27 +84,3 @@ Future privacySDKInitialization() async {
final XSJPushProvider jpushProvider = XSJPushProvider();
await jpushProvider.initJPushService();
}
-
-void checkChinese() {
- // 获取当前脚本的目录
- final String scriptDir = path.dirname(Platform.script.path);
-
- // 遍历这个目录下的所有 .dart 文件
- findChineseCharacters(Directory(scriptDir));
-}
-
-void findChineseCharacters(Directory directory) {
- final List files = directory.listSync(recursive: true);
- for (FileSystemEntity file in files) {
- if (file is File && file.path.endsWith('.dart')) {
- final String content = file.readAsStringSync(encoding: utf8);
- if (hasChineseCharacters(content)) {
- print('Found Chinese characters in ${file.path}');
- }
- }
- }
-}
-
-bool hasChineseCharacters(String input) {
- return RegExp(r'[\u4e00-\u9fa5]').hasMatch(input);
-}
diff --git a/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
index 6e1013b5..c9e4ff0f 100755
--- a/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
+++ b/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart
@@ -1,8 +1,6 @@
-import 'package:expandable/expandable.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
-import 'package:flutter/widgets.dart';
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
@@ -109,12 +107,13 @@ class _AuthorizedAdminPageState extends State
Widget keyInfoWidget() {
return Column(
children: [
- CommonItem(
- leftTitel: '接收者'.tr,
- rightTitle: '',
- isHaveLine: true,
- isHaveRightWidget: true,
- rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
+ // CommonItem(
+ // leftTitel: '接收者'.tr,
+ // rightTitle: '',
+ // isHaveLine: true,
+ // isHaveRightWidget: true,
+ // rightWidget: getTFWidget(true, '请输入手机号或者邮箱'.tr, 1)),
+ perpetualKeyWidget('接收者'.tr, '请输入手机号或者邮箱'.tr),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
@@ -192,6 +191,88 @@ class _AuthorizedAdminPageState extends State
);
}
+ Widget perpetualKeyWidget(String titleStr, String rightTitle) {
+ return Column(
+ children: [
+ Container(
+ height: 65.h,
+ padding: EdgeInsets.only(left: 20.w, right: 20.w),
+ color: Colors.white,
+ child: Row(
+ children: [
+ Text(titleStr, style: TextStyle(fontSize: 22.sp)),
+ SizedBox(width: 6.w),
+ Expanded(
+ child: TextField(
+ controller: logic.getCurrentController(1),
+ //输入框一行
+ maxLines: 1,
+ inputFormatters: [
+ FilteringTextInputFormatter.deny('\n'),
+ LengthLimitingTextInputFormatter(30),
+ ],
+ // controller: _controller,
+ autofocus: false,
+ textAlign: TextAlign.end,
+ decoration: InputDecoration(
+ //输入里面输入文字内边距设置
+ hintText: rightTitle,
+ hintStyle: TextStyle(fontSize: 22.sp),
+ focusedBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ disabledBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ enabledBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ border: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ contentPadding: const EdgeInsets.symmetric(vertical: 0),
+ ),
+ style: TextStyle(
+ fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
+ ),
+ ),
+ SizedBox(
+ width: 10.w,
+ ),
+ Container(
+ width: 32.w,
+ height: 32.w,
+ decoration: const BoxDecoration(
+ color: Colors.white,
+ image: DecorationImage(
+ image: AssetImage('images/icon_addressBook.png'),
+ fit: BoxFit.fill),
+ ),
+ alignment: Alignment.center,
+ child: InkWell(
+ onTap: () async {
+ final Contact? currentContact =
+ await logic.state.contactPicker.selectContact();
+ logic.state.contact = currentContact!;
+ if (currentContact.phoneNumbers!.isNotEmpty) {
+ logic.state.emailOrPhoneController.text = currentContact
+ .phoneNumbers![0]
+ .replaceAll(RegExp(r'\s+\b|\b\s'), '');
+ }
+ if (currentContact.fullName!.isNotEmpty) {
+ logic.state.keyNameController.text =
+ currentContact.fullName!;
+ }
+ },
+ ),
+ )
+ ],
+ ),
+ )
+ ],
+ );
+ }
+
// 实名认证
Widget keyOnlyManageWidget() {
return Column(
diff --git a/lib/main/lockDetail/card/cardList/cardList_page.dart b/lib/main/lockDetail/card/cardList/cardList_page.dart
index bbaf9657..705d5c8c 100755
--- a/lib/main/lockDetail/card/cardList/cardList_page.dart
+++ b/lib/main/lockDetail/card/cardList/cardList_page.dart
@@ -244,8 +244,6 @@ class _CardListPageState extends State with RouteAware {
children: [
Flexible(
child: Text(showTime,
- maxLines: 1,
- overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 18.sp,
color: AppColors.placeholderTextColor)),
diff --git a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart
index 51cc15b5..4aa39e86 100755
--- a/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart
+++ b/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_page.dart
@@ -1,4 +1,3 @@
-
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -22,7 +21,6 @@ import 'package:star_lock/tools/showTipView.dart';
import 'package:star_lock/tools/submitBtn.dart';
class SendElectronicKeyView extends StatefulWidget {
-
SendElectronicKeyView({required this.type, Key? key}) : super(key: key);
String type;
@@ -105,16 +103,17 @@ class _SendElectronicKeyViewState extends State
return Column(
children: [
// Container(height: 10.h),
- CommonItem(
- leftTitel: '接收者'.tr,
- rightTitle: '',
- isHaveLine: true,
- isHaveRightWidget: true,
- rightWidget: getTFWidget(
- true,
- '请输入手机号或者邮箱'.tr,
- 1,
- logic)),
+ // CommonItem(
+ // leftTitel: '接收者'.tr,
+ // rightTitle: '',
+ // isHaveLine: true,
+ // isHaveRightWidget: true,
+ // rightWidget: getTFWidget(
+ // true,
+ // '请输入手机号或者邮箱'.tr,
+ // 1,
+ // logic)),
+ perpetualKeyWidget(logic, '接收者'.tr, '请输入手机号或者邮箱'.tr),
CommonItem(
leftTitel: '国家/地区'.tr,
rightTitle: '',
@@ -142,14 +141,95 @@ class _SendElectronicKeyViewState extends State
leftTitel: '姓名'.tr,
rightTitle: '',
isHaveRightWidget: true,
- rightWidget: getTFWidget(
- false, '请输入'.tr, 2, logic,
- maxSize: 50)),
+ rightWidget: getTFWidget(false, '请输入'.tr, 2, logic, maxSize: 50)),
Container(height: 10.h),
],
);
}
+ Widget perpetualKeyWidget(
+ SendElectronicKeyViewLogic logic, String titleStr, String rightTitle) {
+ return Column(
+ children: [
+ Container(
+ height: 65.h,
+ padding: EdgeInsets.only(left: 20.w, right: 20.w),
+ color: Colors.white,
+ child: Row(
+ children: [
+ Text(titleStr, style: TextStyle(fontSize: 22.sp)),
+ SizedBox(width: 6.w),
+ Expanded(
+ child: TextField(
+ controller: logic.getCurrentController(1),
+ //输入框一行
+ maxLines: 1,
+ inputFormatters: [
+ FilteringTextInputFormatter.deny('\n'),
+ LengthLimitingTextInputFormatter(30),
+ ],
+ // controller: _controller,
+ autofocus: false,
+ textAlign: TextAlign.end,
+ decoration: InputDecoration(
+ //输入里面输入文字内边距设置
+ hintText: rightTitle,
+ hintStyle: TextStyle(fontSize: 22.sp),
+ focusedBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ disabledBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ enabledBorder: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ border: const OutlineInputBorder(
+ borderSide:
+ BorderSide(width: 0, color: Colors.transparent)),
+ contentPadding: const EdgeInsets.symmetric(vertical: 0),
+ ),
+ style: TextStyle(
+ fontSize: 22.sp, textBaseline: TextBaseline.alphabetic),
+ ),
+ ),
+ SizedBox(
+ width: 10.w,
+ ),
+ Container(
+ width: 32.w,
+ height: 32.w,
+ decoration: const BoxDecoration(
+ color: Colors.white,
+ image: DecorationImage(
+ image: AssetImage('images/icon_addressBook.png'),
+ fit: BoxFit.fill),
+ ),
+ alignment: Alignment.center,
+ child: InkWell(
+ onTap: () async {
+ final Contact? currentContact =
+ await logic.state.contactPicker.selectContact();
+ logic.state.contact = currentContact!;
+ if (currentContact.phoneNumbers!.isNotEmpty) {
+ logic.state.emailOrPhoneController.text = currentContact
+ .phoneNumbers![0]
+ .replaceAll(RegExp(r'\s+\b|\b\s'), '');
+ }
+ if (currentContact.fullName!.isNotEmpty) {
+ logic.state.keyNameController.text =
+ currentContact.fullName!;
+ }
+ },
+ ),
+ )
+ ],
+ ),
+ )
+ ],
+ );
+ }
+
// 生效失效时间
Widget keyTimeWidget(SendElectronicKeyViewLogic logic) {
return Column(
@@ -163,7 +243,8 @@ class _SendElectronicKeyViewState extends State
final PDuration selectDate = PDuration.parse(
DateTime.parse(logic.state.timeLimitBeginTime));
Pickers.showDatePicker(context,
- selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
+ selectDate: selectDate,
+ mode: DateMode.YMDHM, onConfirm: (PDuration p) {
logic.state.timeLimitBeginTime =
DateTool().getYMDHNDateString(p, 1);
logic.update();
@@ -177,7 +258,8 @@ class _SendElectronicKeyViewState extends State
final PDuration selectDate = PDuration.parse(
DateTime.tryParse(logic.state.timeLimitEndTime));
Pickers.showDatePicker(context,
- selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
+ selectDate: selectDate,
+ mode: DateMode.YMDHM, onConfirm: (PDuration p) {
logic.state.timeLimitEndTime =
DateTool().getYMDHNDateString(p, 1);
logic.update();
@@ -237,14 +319,14 @@ class _SendElectronicKeyViewState extends State
isHaveDirection: true,
isHaveLine: true,
action: () async {
- final result =
- await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: {
- 'validityValue': logic.state.weekdaysList,
- 'starDate': logic.state.cycleBeginTime,
- 'endDate': logic.state.cycleEndTime,
- 'starTime': logic.state.effectiveDateTime,
- 'endTime': logic.state.failureDateTime
- });
+ final result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
+ arguments: {
+ 'validityValue': logic.state.weekdaysList,
+ 'starDate': logic.state.cycleBeginTime,
+ 'endDate': logic.state.cycleEndTime,
+ 'starTime': logic.state.effectiveDateTime,
+ 'endTime': logic.state.failureDateTime
+ });
if (result != null && result.isNotEmpty) {
logic.state.weekdaysList = result['validityValue'];
logic.state.cycleBeginTime = result['starDate'];
@@ -418,7 +500,8 @@ class _SendElectronicKeyViewState extends State
),
if (logic.emailOrPhone != null)
OutLineBtn(
- btnName: logic.state.userNameType.value == 1 ? '短信通知'.tr : '邮件通知'.tr,
+ btnName:
+ logic.state.userNameType.value == 1 ? '短信通知'.tr : '邮件通知'.tr,
onClick: () {
Get.toNamed(Routers.sendEmailNotificationPage,
arguments: {
diff --git a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart
index ad3f11c2..acfb8e9a 100755
--- a/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart
+++ b/lib/main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart
@@ -251,8 +251,6 @@ class _FingerprintListPageState extends State
children: [
Flexible(
child: Text(showTime,
- maxLines: 1,
- overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 18.sp,
color: AppColors.placeholderTextColor)),
diff --git a/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/lib/main/lockDetail/lockDetail/lockDetail_page.dart
index 730b3794..6009bfeb 100755
--- a/lib/main/lockDetail/lockDetail/lockDetail_page.dart
+++ b/lib/main/lockDetail/lockDetail/lockDetail_page.dart
@@ -109,9 +109,23 @@ class _LockDetailPageState extends State
SingleChildScrollView(
child: Column(
children: [
- SizedBox(
- height: isShowTip ? 70.h : 10.h,
+ Visibility(
+ visible: isShowTip,
+ child: Container(
+ // height: 30.h,
+ width: 1.sw,
+ color: const Color(0xFFFBEFD4),
+ padding: EdgeInsets.only(top: 8.h, bottom: 8.h),
+ child: Text(
+ "${"钥匙将在".tr}${DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!)}${"天后失效".tr}",
+ maxLines: 2,
+ overflow: TextOverflow.ellipsis,
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ color: const Color(0xffCBA74B), fontSize: 24.sp)),
+ ),
),
+ SizedBox(height: 10.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 24.w),
child: Text(
@@ -152,23 +166,6 @@ class _LockDetailPageState extends State
],
),
),
- Visibility(
- visible: isShowTip,
- child: Container(
- // height: 30.h,
- color: const Color(0xFFFBEFD4),
- padding: EdgeInsets.only(top: 8.h, bottom: 8.h),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(
- "${"钥匙将在".tr}${DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!)}${"天后失效".tr}",
- style: TextStyle(
- color: const Color(0xffCBA74B), fontSize: 24.sp))
- ],
- ),
- ),
- ),
Visibility(
visible: state.iSClosedUnlockSuccessfulPopup.value,
// visible: true,
@@ -508,17 +505,17 @@ class _LockDetailPageState extends State
,
child: Container(
// height: 30.h,
+ width: 1.sw,
color: const Color(0xFFFBEFD4),
- padding: EdgeInsets.only(top: 8.h, bottom: 8.h),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text(
- "${"钥匙将在".tr}${DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!)}${"天后失效".tr}",
- style: TextStyle(
- color: const Color(0xffCBA74B), fontSize: 24.sp))
- ],
- ),
+ padding:
+ EdgeInsets.only(top: 8.h, bottom: 8.h, right: 10.w, left: 10.h),
+ child: Text(
+ "${"钥匙将在".tr}${DateTool().compareTimeGetDaysFromNow(state.keyInfos.value.endDate!)}${"天后失效".tr}",
+ maxLines: 2,
+ overflow: TextOverflow.ellipsis,
+ textAlign: TextAlign.center,
+ style:
+ TextStyle(color: const Color(0xffCBA74B), fontSize: 24.sp)),
),
),
Stack(children: [
@@ -808,10 +805,10 @@ class _LockDetailPageState extends State
SizedBox(width: 6.w),
Text(
state.keyInfos.value.isLockOwner == 1
- ? '超级管理员'.tr
+ ? '超级管理员英文'.tr
: (state.keyInfos.value.keyRight == 1
- ? '授权管理员'.tr
- : '普通用户'.tr),
+ ? '授权管理员英文'.tr
+ : '普通用户英文'.tr),
style: TextStyle(
fontSize: 20.sp, color: AppColors.darkGrayTextColor),
),
@@ -832,7 +829,7 @@ class _LockDetailPageState extends State
),
SizedBox(width: 6.w),
Text(
- '网关设备'.tr,
+ '网关设备英文'.tr,
style: TextStyle(
fontSize: 20.sp,
color: state.keyInfos.value.hasGateway == 1
@@ -855,7 +852,7 @@ class _LockDetailPageState extends State
),
SizedBox(width: 6.w),
Text(
- '手机需联网'.tr,
+ '手机需联网英文'.tr,
style: TextStyle(
fontSize: 20.sp,
color: state.isOpenLockNeedOnline.value == 1
diff --git a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
index 79302a59..a51b8715 100755
--- a/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
+++ b/lib/main/lockDetail/lockSet/lockSet/lockSet_page.dart
@@ -529,11 +529,9 @@ class _LockSetPageState extends State
() => Visibility(
visible: state.lockBasicInfo.value.isLockOwner == 1 &&
state.lockFeature.value.appUnlockOnline == 1,
- child: CommonItem(
- leftTitel: '开锁时是否需联网'.tr,
- rightTitle: '',
+ child: otherItem(
+ leftTitle: '开锁时是否需联网'.tr,
isHaveLine: false,
- isHaveRightWidget: true,
rightWidget: _openLockNeedOnlineSwitch()),
),
),
@@ -653,6 +651,33 @@ class _LockSetPageState extends State
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor));
}
+ Widget otherItem({String? leftTitle, bool? isHaveLine, Widget? rightWidget}) {
+ return Container(
+ width: 1.sw,
+ padding:
+ EdgeInsets.only(left: 20.w, top: 7.5.h, bottom: 7.5.h, right: 10.w),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ border: isHaveLine!
+ ? Border(
+ bottom: BorderSide(
+ color: AppColors.greyLineColor, // 设置边框颜色
+ width: 2.0.h, // 设置边框宽度
+ ),
+ )
+ : null,
+ ),
+ child: Row(
+ children: [
+ Expanded(child: Text(leftTitle!, style: TextStyle(fontSize: 22.sp))),
+ SizedBox(width: 10.w),
+ rightWidget ?? Container(),
+ SizedBox(width: 5.w),
+ ],
+ ),
+ );
+ }
+
// 开启考勤
// CupertinoSwitch _openCheckInSwitch() {
// return CupertinoSwitch(
diff --git a/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart b/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart
index b33c0663..ffc757c6 100755
--- a/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart
+++ b/lib/main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart
@@ -187,7 +187,7 @@ class _DemoModeLockDetailPageState extends State {
width: 6.w,
),
Text(
- '网关设备'.tr,
+ '网关设备英文'.tr,
style:
TextStyle(fontSize: 20.sp, color: AppColors.btnDisableColor),
),
@@ -227,8 +227,8 @@ class _DemoModeLockDetailPageState extends State {
// 考勤
// if (state.keyInfos.value.isAttendance == 1) {
- showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png',
- '考勤'.tr, () {
+ showWidgetArr
+ .add(bottomItem('images/main/icon_main_clockingIn.png', '考勤'.tr, () {
// gotoLogin();
Get.toNamed(Routers.checkingInListPage,
arguments: LockListInfoItemEntity());
@@ -237,34 +237,35 @@ class _DemoModeLockDetailPageState extends State {
final List defaultWidgetArr = [
// 电子钥匙
- bottomItem('images/main/icon_main_electronicKey.png',
- '电子钥匙'.tr, () {
+ bottomItem('images/main/icon_main_electronicKey.png', '电子钥匙'.tr, () {
// gotoLogin();
Get.toNamed(Routers.electronicKeyListPage,
- arguments: {'keyInfo': LockListInfoItemEntity()});
+ arguments: {
+ 'keyInfo': LockListInfoItemEntity()
+ });
}),
// 密码
- bottomItem('images/main/icon_main_password.png',
- '密码'.tr, () {
+ bottomItem('images/main/icon_main_password.png', '密码'.tr, () {
// gotoLogin();
Get.toNamed(Routers.passwordKeyListPage,
- arguments: {'keyInfo': LockListInfoItemEntity()});
+ arguments: {
+ 'keyInfo': LockListInfoItemEntity()
+ });
}),
// ic卡
- bottomItem('images/main/icon_main_icCard.png',
- '卡'.tr, () {
+ bottomItem('images/main/icon_main_icCard.png', '卡'.tr, () {
// gotoLogin();
- Get.toNamed(Routers.cardListPage, arguments: {'lockId': 0});
+ Get.toNamed(Routers.cardListPage,
+ arguments: {'lockId': 0});
}),
// 指纹
- bottomItem('images/main/icon_main_fingerprint.png',
- '指纹'.tr, () {
+ bottomItem('images/main/icon_main_fingerprint.png', '指纹'.tr, () {
// gotoLogin();
Get.toNamed(Routers.fingerprintListPage,
@@ -272,8 +273,7 @@ class _DemoModeLockDetailPageState extends State {
}),
// 遥控
- bottomItem('images/main/icon_main_remoteControl.png',
- '遥控'.tr, gotoLogin),
+ bottomItem('images/main/icon_main_remoteControl.png', '遥控'.tr, gotoLogin),
];
showWidgetArr.addAll(defaultWidgetArr);
@@ -295,18 +295,21 @@ class _DemoModeLockDetailPageState extends State {
final List endWiddget = [
// 授权管理员
- bottomItem('images/main/icon_main_authorizedAdmin.png',
- '授权管理员'.tr, () {
+ bottomItem('images/main/icon_main_authorizedAdmin.png', '授权管理员'.tr, () {
// gotoLogin();
Get.toNamed(Routers.authorizedAdminListPage,
- arguments: {'keyInfo': LockListInfoItemEntity()});
+ arguments: {
+ 'keyInfo': LockListInfoItemEntity()
+ });
}),
// 操作记录
bottomItem('images/main/icon_main_operatingRecord.png', '操作记录'.tr, () {
// gotoLogin();
Get.toNamed(Routers.lockOperatingRecordPage,
- arguments: {'keyInfo': LockListInfoItemEntity()});
+ arguments: {
+ 'keyInfo': LockListInfoItemEntity()
+ });
}),
// 视频日志
bottomItem('images/main/icon_lockDetail_videoLog.png', '视频日志'.tr, () {
@@ -319,9 +322,7 @@ class _DemoModeLockDetailPageState extends State {
Get.toNamed(Routers.msgNotificationPage);
}),
// 设置
- bottomItem(
- 'images/main/icon_main_set.png', '设置'.tr,
- () {
+ bottomItem('images/main/icon_main_set.png', '设置'.tr, () {
Get.toNamed(Routers.demoModeLockSetPage);
}),
];
diff --git a/lib/main/lockMian/lockList/lockList_xhj_page.dart b/lib/main/lockMian/lockList/lockList_xhj_page.dart
index 3e74f0d1..790e985e 100755
--- a/lib/main/lockMian/lockList/lockList_xhj_page.dart
+++ b/lib/main/lockMian/lockList/lockList_xhj_page.dart
@@ -290,21 +290,25 @@ class _LockListXHJPageState extends State with RouteAware {
const Spacer(),
Column(
children: [
- Row(
- children: [
- Image.asset(
- logic.showElectricIcon(keyInfo.electricQuantity!),
- width: 30.w,
- height: 24.w,
- ),
- SizedBox(width: 2.w),
- Text(
- '${keyInfo.electricQuantity!}%',
- style: TextStyle(
- fontSize: 16.sp,
- color: AppColors.darkGrayTextColor),
- ),
- ],
+ SizedBox(
+ width: (1.sw - 10.w * 3) / 2 - 48.w - 50.w,
+ child: Row(
+ children: [
+ Spacer(),
+ Image.asset(
+ logic.showElectricIcon(keyInfo.electricQuantity!),
+ width: 30.w,
+ height: 24.w,
+ ),
+ SizedBox(width: 2.w),
+ Text(
+ '${keyInfo.electricQuantity!}%',
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: AppColors.darkGrayTextColor),
+ ),
+ ],
+ ),
),
SizedBox(
width: (1.sw - 10.w * 3) / 2 - 48.w - 50.w,
@@ -316,6 +320,7 @@ class _LockListXHJPageState extends State with RouteAware {
: '普通用户'.tr),
maxLines: 1,
overflow: TextOverflow.ellipsis,
+ textAlign: TextAlign.right,
style: TextStyle(
fontSize: 16.sp,
color: AppColors.darkGrayTextColor),
diff --git a/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart b/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart
index c731f137..71b0f5db 100755
--- a/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart
+++ b/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart
@@ -3,6 +3,7 @@ import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
+import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart';
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
@@ -11,6 +12,8 @@ import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/push/xs_jPhush.dart';
import 'package:star_lock/tools/storage.dart';
+import '../../../../tools/store_service.dart';
+
class LockMainXHJLogic extends BaseGetXController {
final LockMainXHJState state = LockMainXHJState();
@@ -25,15 +28,20 @@ class LockMainXHJLogic extends BaseGetXController {
Future getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
if (entity.errorCode!.codeIsSuccessful) {
- final String languageCodeAndCountryCode = entity.data!.lang ?? 'zh-CN';
- if (languageCodeAndCountryCode.contains('-')) {
+ final String languageCodeAndCountryCode = entity.data!.lang!;
+ if (languageCodeAndCountryCode.isEmpty) {
+ await StoreService.to.saveLanguageCode('');
+ } else if (languageCodeAndCountryCode.contains('-')) {
final List parts = languageCodeAndCountryCode.split('-');
final Locale locale = Locale(parts[0], parts[1]);
- Get.updateLocale(locale);
+ await Get.updateLocale(locale);
+ await StoreService.to.saveLanguageCode(locale.toString());
} else if (languageCodeAndCountryCode.contains('_')) {
final List parts = languageCodeAndCountryCode.split('_');
final Locale locale = Locale(parts[0], parts[1]);
- Get.updateLocale(locale);
+ await Get.updateLocale(locale);
+ AppLog.log('用户信息请求成功 更新locale: $locale');
+ await StoreService.to.saveLanguageCode(locale.toString());
}
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
diff --git a/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart b/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart
index 0c1ee11c..459615f6 100755
--- a/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart
+++ b/lib/mine/mineMultiLanguage/mineMultiLanguage_logic.dart
@@ -5,6 +5,9 @@ import 'package:star_lock/tools/baseGetXController.dart';
import '../../main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import '../../network/api_repository.dart';
import '../../tools/eventBusEventManage.dart';
+import '../../tools/store_service.dart';
+import '../../translations/app_dept.dart';
+import '../../translations/current_locale_tool.dart';
import 'mineMultiLanguage_state.dart';
class MineMultiLanguageLogic extends GetxController {
@@ -13,20 +16,21 @@ class MineMultiLanguageLogic extends GetxController {
//更新个人信息
Future updateUserLangInfo(Locale l) async {
// AppLog.log('lanTypeTitle: $lanTypeTitle');
-
- final String lang = l.toLanguageTag();
+ String lang = l.toString();
+ if (state.currentLanguageType.value == LanguageType.system) {
+ lang = '';
+ }
final PasswordKeyListEntity entity =
await ApiRepository.to.updateUserLangInfo(lang: lang);
if (entity.errorCode!.codeIsSuccessful) {
await changeLanguage(l);
eventBus.fire(ChangeLanguageBlockLastLanguageEvent());
- print('发送语言变化事件');
}
}
Future changeLanguage(Locale l) async {
- if (l == Get.locale) return;
await Get.updateLocale(l);
- state.resetLan();
+ await StoreService.to.saveLanguageCode(
+ CurrentLocaleTool.convertLocale(Get.locale!).toString());
}
}
diff --git a/lib/mine/mineMultiLanguage/mineMultiLanguage_page.dart b/lib/mine/mineMultiLanguage/mineMultiLanguage_page.dart
index 9422f4cb..87e1c395 100755
--- a/lib/mine/mineMultiLanguage/mineMultiLanguage_page.dart
+++ b/lib/mine/mineMultiLanguage/mineMultiLanguage_page.dart
@@ -1,8 +1,8 @@
-
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/mine/mineMultiLanguage/mineMultiLanguage_state.dart';
+import 'package:star_lock/translations/current_locale_tool.dart';
import '../../app_settings/app_colors.dart';
import '../../tools/commonItem.dart';
@@ -26,35 +26,66 @@ class _MineMultiLanguagePageState extends State {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
- barTitle: '多语言'.tr,
- haveBack: true,
- backgroundColor: AppColors.mainColor),
- body: ListView(
- // mainAxisAlignment: MainAxisAlignment.start,
- // mainAxisSize: MainAxisSize.min,
- children: _children(),
- )
- );
+ barTitle: '多语言'.tr,
+ haveBack: true,
+ backgroundColor: AppColors.mainColor,
+ actionsList: [
+ TextButton(
+ onPressed: () async {
+ await logic.updateUserLangInfo(state.seletLocale);
+ final String lanTypeTitle =
+ ExtensionLanguageType.fromLocale(state.seletLocale)
+ .lanTitle;
+ Get.back(result: {'currentLanguage': lanTypeTitle});
+ },
+ child: Text(
+ '保存'.tr,
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 22.sp,
+ ),
+ ),
+ ),
+ ],
+ ),
+ body: Obx(() => ListView(
+ // mainAxisAlignment: MainAxisAlignment.start,
+ // mainAxisSize: MainAxisSize.min,
+ children: _children(),
+ )));
}
List _children() {
final List l = [];
- // l.add(
- // CommonItem(
- // leftTitel: '跟随系统',
- // rightTitle: "",
- // isHaveLine: true,
- // isHaveDirection: false,
- // isHaveRightWidget: true,
- // rightWidget: Container(),
- // action: () {
- // // logic.changeLanguage(e);
- // }),
- // );
+ l.add(
+ CommonItem(
+ leftTitel: '跟随系统',
+ rightTitle: '',
+ isHaveLine: true,
+ isHaveDirection: false,
+ isHaveRightWidget: true,
+ rightWidget: state.currentLanguageType.value == LanguageType.system
+ ? Image(
+ image: const AssetImage('images/icon_item_checked.png'),
+ width: 30.w,
+ height: 30.w,
+ fit: BoxFit.contain,
+ )
+ : Container(),
+ action: () {
+ state.seletLocale =
+ CurrentLocaleTool.convertLocale(Get.deviceLocale!);
+ state.currentLanguageType.value = LanguageType.system;
+ }),
+ );
for (int i = 0; i < state.languages.length; i++) {
final Locale e = state.languages[i];
final LanguageType lanType = ExtensionLanguageType.fromLocale(e);
// AppLog.log('e:$e lanType:$lanType state.currentLanguageType.value:${state.currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} Get.locale!.countryCode:${Get.locale!.countryCode}');
+
+ if (state.currentLanguageType.value == lanType) {
+ state.seletLocale = e;
+ }
l.add(
CommonItem(
leftTitel: lanType.lanTitle,
@@ -62,17 +93,19 @@ class _MineMultiLanguagePageState extends State {
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
- rightWidget: Obx(() => state.currentLanguageType.value == lanType
+ rightWidget: state.currentLanguageType.value == lanType
? Image(
image: const AssetImage('images/icon_item_checked.png'),
width: 30.w,
height: 30.w,
fit: BoxFit.contain,
)
- : Container()),
+ : Container(),
action: () {
- logic.updateUserLangInfo(e);
- // eventBus.fire(ChangeLanguageBlockLastLanguageEvent(lanType.lanTitle));
+ // logic.updateUserLangInfo(e);
+ state.seletLocale = e;
+ state.currentLanguageType.value =
+ ExtensionLanguageType.fromLocale(state.seletLocale);
}),
);
}
diff --git a/lib/mine/mineMultiLanguage/mineMultiLanguage_state.dart b/lib/mine/mineMultiLanguage/mineMultiLanguage_state.dart
index 573b04f5..c424b8e9 100755
--- a/lib/mine/mineMultiLanguage/mineMultiLanguage_state.dart
+++ b/lib/mine/mineMultiLanguage/mineMultiLanguage_state.dart
@@ -6,19 +6,16 @@ import '../../tools/store_service.dart';
import '../../translations/app_dept.dart';
class MineMultiLanguageState {
- MineMultiLanguageState() {
- resetLan();
- }
+ // MineMultiLanguageState() {
+ // resetLan();
+ // }
List get languages {
return appDept.deptSupportedLocales;
}
- var currentLanguageType = ExtensionLanguageType.fromLocale(Get.locale!).obs;
+ Rx currentLanguageType =
+ ExtensionLanguageType.fromLocale(Get.locale!).obs;
- Future resetLan() async {
- currentLanguageType.value = ExtensionLanguageType.fromLocale(Get.locale!);
- // AppLog.log('currentLanguageType.value:${currentLanguageType.value} Get.locale!.languageCode:${Get.locale!.languageCode} languages:$languages');
- await StoreService.to.saveLanguageCode(Get.locale!.toString());
- }
+ late Locale seletLocale;
}
diff --git a/lib/mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.dart b/lib/mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.dart
index dfd66945..174a938f 100755
--- a/lib/mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.dart
+++ b/lib/mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.dart
@@ -1,4 +1,4 @@
-
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
@@ -25,7 +25,8 @@ class LockUserManageListPage extends StatefulWidget {
class _LockUserManageListPageState extends State {
final LockUserManageListLogic logic = Get.put(LockUserManageListLogic());
- final LockUserManageListState state = Get.find().state;
+ final LockUserManageListState state =
+ Get.find().state;
Future getHttpData() async {
logic.lockUserListRequest().then((LockUserListEntity value) {
@@ -167,8 +168,9 @@ class _LockUserManageListPageState extends State {
arguments: {'uid': itemData.uid});
},
child: Container(
- height: 90.h,
+ // height: 90.h,
color: Colors.white,
+ padding: EdgeInsets.only(top: 15.h, bottom: 15.h),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(10.w),
@@ -192,17 +194,20 @@ class _LockUserManageListPageState extends State {
SizedBox(
width: 20.w,
),
- Expanded(
+ SizedBox(
+ width: 1.sw - 30.w - 60.w - 20.w - 20.w - 20.w - 12.w,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
- Text(
- itemData.nickname ?? '',
- style: TextStyle(
- fontSize: 24.sp, color: AppColors.blackColor),
+ Expanded(
+ child: Text(
+ itemData.nickname ?? '',
+ style: TextStyle(
+ fontSize: 24.sp, color: AppColors.blackColor),
+ ),
),
],
),
@@ -234,7 +239,8 @@ class _LockUserManageListPageState extends State {
);
}
- void showIosTipViewDialog(BuildContext context, LockUserItemData lockUserData) {
+ void showIosTipViewDialog(
+ BuildContext context, LockUserItemData lockUserData) {
showDialog(
context: context,
builder: (BuildContext context) {
diff --git a/lib/mine/mineSet/mineSet/mineSet_logic.dart b/lib/mine/mineSet/mineSet/mineSet_logic.dart
index 7f3f7fad..40dbc7be 100755
--- a/lib/mine/mineSet/mineSet/mineSet_logic.dart
+++ b/lib/mine/mineSet/mineSet/mineSet_logic.dart
@@ -17,14 +17,10 @@ import 'package:umeng_common_sdk/umeng_common_sdk.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
-import '../../../app_settings/app_settings.dart';
import '../../../blue/blue_manage.dart';
import '../../../talk/udp/udp_help.dart';
-import '../../../tools/change_language_format.dart';
import '../../../tools/dateTool.dart';
-import '../../../tools/eventBusEventManage.dart';
import '../../../tools/store_service.dart';
-import '../../../translations/app_dept.dart';
class MineSetLogic extends BaseGetXController {
final MineSetState state = MineSetState();
@@ -178,46 +174,14 @@ class MineSetLogic extends BaseGetXController {
}
}
- // 下级界面修改成功后传递数据
- StreamSubscription? _getNumberEvent;
- void _initLoadDataAction() {
- // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
- _getNumberEvent = eventBus
- .on()
- .listen((ChangeLanguageBlockLastLanguageEvent event) {
- state.currentLanguage.value = _getCurrentLanguage();
- });
- }
-
- String _getCurrentLanguage() {
- String? language = StoreService.to.getLanguageCode();
- AppLog.log('language: $language Get.locale!: ${Get.locale!}');
- if (language!.isEmpty) {
- language = ChangeLanguageFormat.convertLocale(Get.locale!).toString();
- }
- AppLog.log('language: $language');
- final String currentLanguage = ExtensionLanguageType.fromLocale(appDept
- .deptSupportedLocales
- .where((Locale element) => element.toString() == language)
- .first)
- .lanTitle;
- return currentLanguage;
- }
-
- @override
- void onReady() {
- super.onReady();
-
- state.currentLanguage.value = _getCurrentLanguage();
-
- _initLoadDataAction();
- getUserInfoRequest();
- }
-
- @override
- void onClose() {
- super.onClose();
-
- _getNumberEvent!.cancel();
- }
+ // // 下级界面修改成功后传递数据
+ // StreamSubscription? _getNumberEvent;
+ // void _initLoadDataAction() {
+ // // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
+ // _getNumberEvent = eventBus
+ // .on()
+ // .listen((ChangeLanguageBlockLastLanguageEvent event) {
+ // state.currentLanguage.value = CurrentLocaleTool.getCurrentLocaleString();
+ // });
+ // }
}
diff --git a/lib/mine/mineSet/mineSet/mineSet_page.dart b/lib/mine/mineSet/mineSet/mineSet_page.dart
index c3a2908b..3cb15f4e 100755
--- a/lib/mine/mineSet/mineSet/mineSet_page.dart
+++ b/lib/mine/mineSet/mineSet/mineSet_page.dart
@@ -6,7 +6,9 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
+import 'package:get/get_state_manager/get_state_manager.dart';
import 'package:permission_handler/permission_handler.dart';
+import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/mine/mineSet/mineSet/mineSet_logic.dart';
import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart';
@@ -170,7 +172,6 @@ class _MineSetPageState extends State
Widget getListDataView() {
// 检测系统语言是否为中文
- bool isChinese = LanguageTool.instance.isChinese;
return Column(
children: [
/* 2024-01-12 会议确定去掉“提示音、触摸开锁” by DaisyWu
@@ -214,8 +215,9 @@ class _MineSetPageState extends State
height: 50.h,
child: Obx(_isPushNotificationSwitch))),
// if (F.appFlavor == Flavor.sky)
- if (isChinese)
- CommonItem(
+ Visibility(
+ visible: state.currentLanguageName == '简体中文'.tr,
+ child: CommonItem(
leftTitel: '微信公众号推送'.tr,
rightTitle: '',
isHaveLine: true,
@@ -225,9 +227,8 @@ class _MineSetPageState extends State
height: 50.h,
child: Obx(_isWechatPublicAccountPushSwitch),
),
- )
- else
- Container(),
+ ),
+ ),
SizedBox(height: 10.h),
CommonItem(
leftTitel: '锁用户管理'.tr,
@@ -292,19 +293,22 @@ class _MineSetPageState extends State
SizedBox(
height: 10.h,
),
- Obx(() => CommonItem(
- leftTitel: '多语言'.tr,
- rightTitle: state.currentLanguage.value,
- isHaveLine: true,
- isHaveDirection: true,
- action: () async {
- // Get.toNamed(Routers.mineMultiLanguagePage);
- var result = await Get.toNamed(Routers.mineMultiLanguagePage);
- if (result != null) {
- result as Map;
- state.currentLanguage.value = result['currentLanguage'];
- }
- })),
+ Obx(() {
+ AppLog.log(
+ 'state.currentLanguageName: ${state.currentLanguageName} state.currentLanguage.value: ${state.currentLanguage.value}');
+ return CommonItem(
+ leftTitel: '多语言'.tr,
+ rightTitle: state.currentLanguageName,
+ isHaveLine: true,
+ isHaveDirection: true,
+ action: () async {
+ // Get.toNamed(Routers.mineMultiLanguagePage);
+ await Get.toNamed(Routers.mineMultiLanguagePage)!.then(
+ (value) => {
+ state.currentLanguage.value = value['currentLanguage']
+ });
+ });
+ }),
/* 2024-01-12 会议确定去掉“锁屏” by DaisyWu
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.lockScreen!.tr,
diff --git a/lib/mine/mineSet/mineSet/mineSet_state.dart b/lib/mine/mineSet/mineSet/mineSet_state.dart
index d4e18272..cae4519d 100755
--- a/lib/mine/mineSet/mineSet/mineSet_state.dart
+++ b/lib/mine/mineSet/mineSet/mineSet_state.dart
@@ -3,6 +3,9 @@ import 'package:get/get.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
+import '../../../translations/app_dept.dart';
+import '../../../translations/current_locale_tool.dart';
+
class MineSetState {
final Rx userInfoData = UserSettingInfoData().obs;
final Rx userSetting = UserSettings().obs;
@@ -16,7 +19,17 @@ class MineSetState {
RxInt lockScreen = 2.obs; //锁屏
RxInt hideExpiredAccessFlag = 2.obs; //隐藏无效开锁
- RxString currentLanguage = ''.obs; //隐藏无效开锁
+ RxString currentLanguage =
+ CurrentLocaleTool.getCurrentLocaleString().obs; // 当前选择语言
+
+ /// 获取翻译后的国家名称
+ String get currentLanguageName {
+ return ExtensionLanguageType.fromLocale(
+ CurrentLocaleTool.getCurrentLocaleWithLanguageCode(
+ currentLanguage.value))
+ .lanTitle;
+ }
+
RxBool isAmazonAlexa = false.obs; //亚马逊Alexa
RxBool isGoogleHome = false.obs; //谷歌Home
Rx amazonAlexaData = AmazonAlexa().obs;
diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart
index aef01783..1f793ff0 100755
--- a/lib/network/api_repository.dart
+++ b/lib/network/api_repository.dart
@@ -2021,7 +2021,7 @@ class ApiRepository {
//获取个人信息
Future getUserInfo() async {
- final res = await apiProvider.getUserInfo("");
+ final res = await apiProvider.getUserInfo('');
return MinePersonInfoEntity.fromJson(res.body);
}
diff --git a/lib/network/request_interceptor.dart b/lib/network/request_interceptor.dart
index 95617873..46f43aea 100755
--- a/lib/network/request_interceptor.dart
+++ b/lib/network/request_interceptor.dart
@@ -1,16 +1,12 @@
import 'dart:async';
import 'dart:convert';
-import 'dart:ui';
import 'package:get/get.dart';
import 'package:get/get_connect/http/src/request/request.dart';
-import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/login/login/entity/LoginData.dart';
-import '../tools/change_language_format.dart';
import '../tools/platform_info_services.dart';
import '../tools/storage.dart';
-import '../tools/store_service.dart';
-import '../translations/app_dept.dart';
+import '../translations/current_locale_tool.dart';
//公共获取UA
String getUserAgent() {
@@ -22,8 +18,8 @@ String getUserAgent() {
FutureOr requestInterceptor(Request request) async {
request.headers['User-Agent'] = getUserAgent();
- request.headers['Accept-Language'] =
- getLanguageCode(); // StoreService.to.getLanguageCode()
+ request.headers['Accept-Language'] = CurrentLocaleTool
+ .getCurrentLocaleString(); // StoreService.to.getLanguageCode()
// request.headers['Content-Type'] = 'application/json';
// request.headers['token'] = StoreService.to.userToken!;
String? xToken = '';
@@ -34,17 +30,3 @@ FutureOr requestInterceptor(Request request) async {
request.headers['Authorization'] = "Bearer ${xToken ?? ''}";
return request;
}
-
-String getLanguageCode() {
- final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
- ? appDept.deptSupportedLocales
- .where((Locale element) =>
- element.toString() == StoreService.to.getLanguageCode())
- .first
- : Get.locale!; // Get.deviceLocale;
- String languageCode =
- ChangeLanguageFormat.convertLocale(locale).toLanguageTag();
- AppLog.log(
- 'languageCode: ${locale.toLanguageTag()} locale: $locale languageCode:$languageCode');
- return languageCode;
-}
diff --git a/lib/tools/change_language_format.dart b/lib/tools/change_language_format.dart
deleted file mode 100644
index 46e2ef8e..00000000
--- a/lib/tools/change_language_format.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-import 'dart:ui';
-
-class ChangeLanguageFormat {
- static Locale convertLocale(Locale locale) {
- if (locale.languageCode == 'zh') {
- if (locale.scriptCode == 'Hans') {
- // 简体中文
- return const Locale('zh', 'CN');
- } else if (locale.scriptCode == 'Hant') {
- // 繁体中文
- if (locale.countryCode == 'CN') {
- return const Locale('zh', 'TW');
- } else if (locale.countryCode == 'HK') {
- return const Locale('zh', 'HK');
- }
- }
- }
- // 默认返回 Locale 的完整格式
- return locale;
- }
-}
diff --git a/lib/tools/commonItem.dart b/lib/tools/commonItem.dart
index d6776391..30e36dd9 100755
--- a/lib/tools/commonItem.dart
+++ b/lib/tools/commonItem.dart
@@ -1,7 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart';
+import '../translations/app_dept.dart';
+import '../translations/current_locale_tool.dart';
+
class CommonItem extends StatelessWidget {
CommonItem(
{required this.leftTitel,
@@ -86,11 +90,27 @@ class CommonItem extends StatelessWidget {
),
if (isHaveDirection!) SizedBox(width: 15.w) else Container(),
if (isHaveDirection!)
- Image.asset(
- 'images/icon_right_grey.png',
- width: 12.w,
- height: 21.w,
- )
+ if (CurrentLocaleTool.getCurrentLocaleString() ==
+ ExtensionLanguageType.fromLanguageType(
+ LanguageType.hebrew)
+ .toLanguageTag() ||
+ CurrentLocaleTool.getCurrentLocaleString() ==
+ ExtensionLanguageType.fromLanguageType(
+ LanguageType.arabic)
+ .toLanguageTag() ||
+ rightTitle == '希伯来语'.tr ||
+ rightTitle == '阿拉伯语'.tr)
+ Image.asset(
+ 'images/icon_left_grey.png',
+ width: 21.w,
+ height: 21.w,
+ )
+ else
+ Image.asset(
+ 'images/icon_right_grey.png',
+ width: 12.w,
+ height: 21.w,
+ )
else
SizedBox(width: 10.w),
if (isHaveDirection!) SizedBox(width: 5.w) else Container(),
diff --git a/lib/tools/pickers/time_picker/model/suffix.dart b/lib/tools/pickers/time_picker/model/suffix.dart
index 3a903a21..5f1b82f2 100755
--- a/lib/tools/pickers/time_picker/model/suffix.dart
+++ b/lib/tools/pickers/time_picker/model/suffix.dart
@@ -14,12 +14,12 @@ class Suffix {
this.seconds = ''});
Suffix.normal() {
- years = '年'.tr;
- month = '月'.tr;
- days = '日'.tr;
- hours = '时'.tr;
- minutes = '分'.tr;
- seconds = '秒'.tr;
+ years = '年简称'.tr;
+ month = '月简称'.tr;
+ days = '日简称'.tr;
+ hours = '时简称'.tr;
+ minutes = '分简称'.tr;
+ seconds = '秒简称'.tr;
}
late String years;
late String month;
diff --git a/lib/tools/store_service.dart b/lib/tools/store_service.dart
index 938c0222..201e1872 100755
--- a/lib/tools/store_service.dart
+++ b/lib/tools/store_service.dart
@@ -7,8 +7,8 @@ import 'package:star_lock/login/login/entity/LoginData.dart';
import '../login/login/entity/LoginEntity.dart';
final box = GetStorage();
-class StoreService extends GetxService {
+class StoreService extends GetxService {
static StoreService get to => Get.find();
Future> init() async {
await GetStorage.init();
@@ -21,11 +21,13 @@ class StoreService extends GetxService {
bool hasData(String? key) => box.hasData(key!);
final String _deviceUUID = 'DEVICE_ID';
- final String _languageCode = 'LANGUAGE_CODE';
+ final String _language = 'LANGUAGE';
- String? getDeviceId() => hasData(_deviceUUID) ? read(_deviceUUID).toString(): '';
+ String? getDeviceId() =>
+ hasData(_deviceUUID) ? read(_deviceUUID).toString() : '';
Future saveDeviceId(String uuid) => save(_deviceUUID, uuid);
- String? getLanguageCode() => hasData(_languageCode) ? read(_languageCode).toString(): '';
- Future saveLanguageCode(String code) => save(_languageCode, code);
+ String? getLanguageCode() =>
+ hasData(_language) ? read(_language).toString() : '';
+ Future saveLanguageCode(String code) => save(_language, code);
}
diff --git a/lib/translations/app_dept.dart b/lib/translations/app_dept.dart
index bd4febad..55cf2762 100755
--- a/lib/translations/app_dept.dart
+++ b/lib/translations/app_dept.dart
@@ -103,6 +103,7 @@ AppDept appDept = ExtensionAppDept.fromAppPackageName(AppManager().packageName);
final List appSupportedLocales = appDept.deptSupportedLocales;
enum LanguageType {
+ system,
chinese,
english,
// 繁体中文(中国台湾)
@@ -298,121 +299,6 @@ extension ExtensionLanguageType on LanguageType {
return str;
}
- // static LanguageType fromLanguageCode(String code) {
- // LanguageType languageType = LanguageType.english;
- // switch(code.toLowerCase()){
- // case 'en':
- // languageType = LanguageType.english;
- // break;
- // case 'zh':
- // languageType = LanguageType.chinese;
- // break;
- // case 'tw':
- // languageType = LanguageType.traditionalChinese;
- // break;
- // case 'fr':
- // languageType = LanguageType.french;
- // break;
- // case 'ru':
- // languageType = LanguageType.russian;
- // break;
- // case 'de':
- // languageType = LanguageType.german;
- // break;
- // case 'ja':
- // languageType = LanguageType.japanese;
- // break;
- // case 'ko':
- // languageType = LanguageType.korean;
- // break;
- // case 'it':
- // languageType = LanguageType.italian;
- // break;
- // // case 'uk':
- // // languageType = LanguageType.ukrainian;
- // // break;
- // case 'pt':
- // languageType = LanguageType.portuguese;
- // break;
- // case 'es':
- // languageType = LanguageType.spanish;
- // break;
- // case 'ar':
- // languageType = LanguageType.arabic;
- // break;
- // case 'vi':
- // languageType = LanguageType.vietnamese;
- // break;
- // case 'ms':
- // languageType = LanguageType.malay;
- // break;
- // case 'nl':
- // languageType = LanguageType.dutch;
- // break;
- // case 'ro':
- // languageType = LanguageType.romanian;
- // break;
- // case 'lt':
- // languageType = LanguageType.lithuanian;
- // break;
- // case 'sv':
- // languageType = LanguageType.swedish;
- // break;
- // case 'et':
- // languageType = LanguageType.estonian;
- // break;
- // case 'pl':
- // languageType = LanguageType.polish;
- // break;
- // case 'sk':
- // languageType = LanguageType.slovak;
- // break;
- // case 'cs':
- // languageType = LanguageType.czech;
- // break;
- // case 'el':
- // languageType = LanguageType.greek;
- // break;
- // case 'he':
- // languageType = LanguageType.hebrew;
- // break;
- // // case 'sr':
- // // languageType = LanguageType.serbian;
- // // break;
- // case 'tr':
- // languageType = LanguageType.turkish;
- // break;
- // case 'hu':
- // languageType = LanguageType.hungarian;
- // break;
- // case 'bg':
- // languageType = LanguageType.bulgarian;
- // break;
- // case 'kk':
- // languageType = LanguageType.kazakh;
- // break;
- // case 'bn':
- // languageType = LanguageType.bengali;
- // break;
- // case 'hr':
- // languageType = LanguageType.croatian;
- // break;
- // case 'th':
- // languageType = LanguageType.thai;
- // break;
- // case 'id':
- // languageType = LanguageType.indonesian;
- // break;
- // case 'fi':
- // languageType = LanguageType.finnish;
- // break;
- // case 'da':
- // languageType = LanguageType.danish;
- // break;
- // }
- // return languageType;
- // }
-
static LanguageType fromLocale(Locale locale) {
LanguageType languageType = LanguageType.english;
final String code = locale.languageCode;
@@ -529,7 +415,206 @@ extension ExtensionLanguageType on LanguageType {
case 'uk':
languageType = LanguageType.ukrainian;
break;
+ default:
+ languageType = LanguageType.english;
+ break;
}
return languageType;
}
+
+ static Locale fromLanguageType(LanguageType languageType) {
+ for (Locale locale in appDept.deptSupportedLocales) {
+ switch (languageType) {
+ case LanguageType.english:
+ if (locale.languageCode == 'en' && locale.countryCode == 'US') {
+ return locale;
+ }
+ break;
+ case LanguageType.chinese:
+ if (locale.languageCode == 'zh' && locale.countryCode == 'CN') {
+ return locale;
+ }
+ break;
+ case LanguageType.traditionalChineseTW:
+ if (locale.languageCode == 'zh' && locale.countryCode == 'TW') {
+ return locale;
+ }
+ break;
+ case LanguageType.traditionalChineseHK:
+ if (locale.languageCode == 'zh' && locale.countryCode == 'HK') {
+ return locale;
+ }
+ break;
+ case LanguageType.french:
+ if (locale.languageCode == 'fr' && locale.countryCode == 'FR') {
+ return locale;
+ }
+ break;
+ case LanguageType.russian:
+ if (locale.languageCode == 'ru' && locale.countryCode == 'RU') {
+ return locale;
+ }
+ break;
+ case LanguageType.german:
+ if (locale.languageCode == 'de' && locale.countryCode == 'DE') {
+ return locale;
+ }
+ break;
+ case LanguageType.japanese:
+ if (locale.languageCode == 'ja' && locale.countryCode == 'JP') {
+ return locale;
+ }
+ break;
+ case LanguageType.korean:
+ if (locale.languageCode == 'ko' && locale.countryCode == 'KR') {
+ return locale;
+ }
+ break;
+ case LanguageType.italian:
+ if (locale.languageCode == 'it' && locale.countryCode == 'IT') {
+ return locale;
+ }
+ break;
+ case LanguageType.portuguese:
+ if (locale.languageCode == 'pt' && locale.countryCode == 'PT') {
+ return locale;
+ }
+ break;
+ case LanguageType.spanish:
+ if (locale.languageCode == 'es' && locale.countryCode == 'ES') {
+ return locale;
+ }
+ break;
+ case LanguageType.arabic:
+ if (locale.languageCode == 'ar' && locale.countryCode == 'SA') {
+ return locale;
+ }
+ break;
+ case LanguageType.vietnamese:
+ if (locale.languageCode == 'vi' && locale.countryCode == 'VN') {
+ return locale;
+ }
+ break;
+ case LanguageType.malay:
+ if (locale.languageCode == 'ms' && locale.countryCode == 'MY') {
+ return locale;
+ }
+ break;
+ case LanguageType.dutch:
+ if (locale.languageCode == 'nl' && locale.countryCode == 'NL') {
+ return locale;
+ }
+ break;
+ case LanguageType.romanian:
+ if (locale.languageCode == 'ro' && locale.countryCode == 'RO') {
+ return locale;
+ }
+ break;
+ case LanguageType.lithuanian:
+ if (locale.languageCode == 'lt' && locale.countryCode == 'LT') {
+ return locale;
+ }
+ break;
+ case LanguageType.swedish:
+ if (locale.languageCode == 'sv' && locale.countryCode == 'SE') {
+ return locale;
+ }
+ break;
+ case LanguageType.estonian:
+ if (locale.languageCode == 'et' && locale.countryCode == 'EE') {
+ return locale;
+ }
+ break;
+ case LanguageType.polish:
+ if (locale.languageCode == 'pl' && locale.countryCode == 'PL') {
+ return locale;
+ }
+ break;
+ case LanguageType.slovak:
+ if (locale.languageCode == 'sk' && locale.countryCode == 'SK') {
+ return locale;
+ }
+ break;
+ case LanguageType.czech:
+ if (locale.languageCode == 'cs' && locale.countryCode == 'CZ') {
+ return locale;
+ }
+ break;
+ case LanguageType.greek:
+ if (locale.languageCode == 'el' && locale.countryCode == 'GR') {
+ return locale;
+ }
+ break;
+ case LanguageType.hebrew:
+ if (locale.languageCode == 'he' && locale.countryCode == 'IL') {
+ return locale;
+ }
+ break;
+ case LanguageType.serbian:
+ if (locale.languageCode == 'sr' && locale.countryCode == 'RS') {
+ return locale;
+ }
+ break;
+ case LanguageType.turkish:
+ if (locale.languageCode == 'tr' && locale.countryCode == 'TR') {
+ return locale;
+ }
+ break;
+ case LanguageType.hungarian:
+ if (locale.languageCode == 'hu' && locale.countryCode == 'HU') {
+ return locale;
+ }
+ break;
+ case LanguageType.bulgarian:
+ if (locale.languageCode == 'bg' && locale.countryCode == 'BG') {
+ return locale;
+ }
+ break;
+ case LanguageType.kazakh:
+ if (locale.languageCode == 'kk' && locale.countryCode == 'KZ') {
+ return locale;
+ }
+ break;
+ case LanguageType.bengali:
+ if (locale.languageCode == 'bn' && locale.countryCode == 'BD') {
+ return locale;
+ }
+ break;
+ case LanguageType.croatian:
+ if (locale.languageCode == 'hr' && locale.countryCode == 'BA') {
+ return locale;
+ }
+ break;
+ case LanguageType.thai:
+ if (locale.languageCode == 'th' && locale.countryCode == 'TH') {
+ return locale;
+ }
+ break;
+ case LanguageType.indonesian:
+ if (locale.languageCode == 'id' && locale.countryCode == 'ID') {
+ return locale;
+ }
+ break;
+ case LanguageType.finnish:
+ if (locale.languageCode == 'fi' && locale.countryCode == 'FI') {
+ return locale;
+ }
+ break;
+ case LanguageType.danish:
+ if (locale.languageCode == 'da' && locale.countryCode == 'DK') {
+ return locale;
+ }
+ break;
+ case LanguageType.ukrainian:
+ if (locale.languageCode == 'uk' && locale.countryCode == 'UA') {
+ return locale;
+ }
+ break;
+ case LanguageType.system:
+ // TODO: Handle this case.
+ break;
+ }
+ }
+ return const Locale('en', 'US');
+ }
}
diff --git a/lib/translations/current_locale_tool.dart b/lib/translations/current_locale_tool.dart
new file mode 100644
index 00000000..cc883bd4
--- /dev/null
+++ b/lib/translations/current_locale_tool.dart
@@ -0,0 +1,79 @@
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+
+import '../app_settings/app_settings.dart';
+import '../tools/store_service.dart';
+import 'app_dept.dart';
+
+class CurrentLocaleTool {
+ /// 获取当前语言的Locale字符串,没有的话获取系统的
+ static String getCurrentLocaleString() {
+ AppLog.log(
+ '11111StoreService.to.getLanguageCode():${StoreService.to.getLanguageCode()}');
+ final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
+ ? appDept.deptSupportedLocales
+ .where((Locale element) =>
+ element.languageCode.toString() ==
+ getCurrentLocaleWithLanguageCode(
+ StoreService.to.getLanguageCode()!)
+ .languageCode)
+ .first
+ : Get.deviceLocale!; // Get.deviceLocale;
+ final String languageCode = convertLocale(locale).toString();
+ AppLog.log(
+ '11111locale.toString(): ${locale.toString()} locale: $locale languageCode:$languageCode');
+ return languageCode;
+ }
+
+ /// 获取当前储存的Locale,没有的话获取系统的
+ static Locale getCurrentLocale() {
+ AppLog.log(
+ '222StoreService.to.getLanguageCode():${StoreService.to.getLanguageCode()}');
+ final Locale locale = StoreService.to.getLanguageCode()!.isNotEmpty
+ ? appDept.deptSupportedLocales
+ .where((Locale element) =>
+ element.languageCode.toString() ==
+ getCurrentLocaleWithLanguageCode(
+ StoreService.to.getLanguageCode()!)
+ .languageCode)
+ .first
+ : Get.deviceLocale!; // Get.deviceLocale;
+ final Locale getLocale = convertLocale(locale);
+ AppLog.log(
+ '222locale.toString(): ${locale.toString()} locale: $locale getLocale:$getLocale');
+ return getLocale;
+ }
+
+ static Locale getCurrentLocaleWithLanguageCode(String languageCode) {
+ final List parts = languageCode.split('_');
+ final String language = parts[0];
+ final String country = parts.length > 1 ? parts[1] : '';
+
+ for (Locale locale in appDept.deptSupportedLocales) {
+ if (locale.languageCode == language && locale.countryCode == country) {
+ return locale;
+ }
+ }
+
+ return const Locale('en', 'US');
+ }
+
+ /// 国际化中文繁体及中文的转化
+ static Locale convertLocale(Locale locale) {
+ if (locale.languageCode == 'zh') {
+ if (locale.scriptCode == 'Hans') {
+ // 简体中文
+ return const Locale('zh', 'CN');
+ } else if (locale.scriptCode == 'Hant') {
+ // 繁体中文
+ if (locale.countryCode == 'CN') {
+ return const Locale('zh', 'TW');
+ } else if (locale.countryCode == 'HK') {
+ return const Locale('zh', 'HK');
+ }
+ }
+ }
+ // 默认返回 Locale 的完整格式
+ return locale;
+ }
+}
diff --git a/lib/translations/translation_message.dart b/lib/translations/translation_message.dart
index 8c31cb3a..eafecdf9 100755
--- a/lib/translations/translation_message.dart
+++ b/lib/translations/translation_message.dart
@@ -10,36 +10,36 @@ class TranslationMessage extends Translations {
'fr_FR': TranslationLoader.frDic,
'ru_RU': TranslationLoader.ruDic,
'de_DE': TranslationLoader.deDic,
- 'ja_JA': TranslationLoader.jaDic,
- 'ko_KO': TranslationLoader.koDic,
+ 'ja_JP': TranslationLoader.jaDic,
+ 'ko_KR': TranslationLoader.koDic,
'it_IT': TranslationLoader.itDic,
- 'uk_UK': TranslationLoader.ukDic,
+ 'uk_UA': TranslationLoader.ukDic,
'pt_PT': TranslationLoader.ptDic,
'es_ES': TranslationLoader.esDic,
- 'ar_AR': TranslationLoader.arDic,
- 'vi_VI': TranslationLoader.viDic,
- 'ms_MS': TranslationLoader.msDic,
+ 'ar_SA': TranslationLoader.arDic,
+ 'vi_VN': TranslationLoader.viDic,
+ 'ms_MY': TranslationLoader.msDic,
'nl_NL': TranslationLoader.nlDic,
'ro_RO': TranslationLoader.roDic,
'lt_LT': TranslationLoader.ltDic,
- 'sv_SV': TranslationLoader.svDic,
- 'et_ET': TranslationLoader.etDic,
+ 'sv_SE': TranslationLoader.svDic,
+ 'et_EE': TranslationLoader.etDic,
'pl_PL': TranslationLoader.plDic,
'sk_SK': TranslationLoader.skDic,
- 'cs_CS': TranslationLoader.csDic,
- 'el_EL': TranslationLoader.elDic,
- 'he_HE': TranslationLoader.heDic,
- 'sr_SR': TranslationLoader.srDic,
+ 'cs_CZ': TranslationLoader.csDic,
+ 'el_GR': TranslationLoader.elDic,
+ 'he_IL': TranslationLoader.heDic,
+ 'sr_RS': TranslationLoader.srDic,
'tr_TR': TranslationLoader.trDic,
'hu_HU': TranslationLoader.huDic,
'bg_BG': TranslationLoader.bgDic,
- 'kk_KK': TranslationLoader.kkDic,
- 'bn_BN': TranslationLoader.bnDic,
- 'hr_HR': TranslationLoader.hrDic,
+ 'kk_KZ': TranslationLoader.kkDic,
+ 'bn_BD': TranslationLoader.bnDic,
+ 'hr_BA': TranslationLoader.hrDic,
'th_TH': TranslationLoader.thDic,
'id_ID': TranslationLoader.idDic,
'fi_FI': TranslationLoader.fiDic,
- 'da_DA': TranslationLoader.daDic,
+ 'da_DK': TranslationLoader.daDic,
};
void updateLocal(Locale l) => Get.updateLocale(l);