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 00000000..26593087 Binary files /dev/null and b/images/icon_left_grey.png differ 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);