From 6d914f02daf50b14fc9cf3df5ade8917c9d266ab Mon Sep 17 00:00:00 2001 From: xkeyC <3334969096@qq.com> Date: Tue, 10 Oct 2023 20:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BD=91=E9=A1=B5=E6=B1=89?= =?UTF-8?q?=E5=8C=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/home/webview/webview.dart | 14 ++++++++++++-- .../webview_localization_capture_ui_model.dart | 12 ++++++------ pubspec.yaml | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/ui/home/webview/webview.dart b/lib/ui/home/webview/webview.dart index 8c1a932..cb278be 100644 --- a/lib/ui/home/webview/webview.dart +++ b/lib/ui/home/webview/webview.dart @@ -31,6 +31,10 @@ class WebViewModel { bool enableCapture = false; + Map? _curReplaceWords; + + Map? get curReplaceWords => _curReplaceWords; + initWebView({String title = ""}) async { try { webview = await WebviewWindow.create( @@ -90,6 +94,12 @@ class WebViewModel { if (url.startsWith(hangar)) { replaceWords.addAll(_getLocalizationResource("hangar")); } + + _curReplaceWords = {}; + for (var element in replaceWords) { + _curReplaceWords?[element["word"] ?? ""] = + element["replacement"] ?? ""; + } await Future.delayed(const Duration(milliseconds: 100)); await webview.evaluateJavaScript( "WebLocalizationUpdateReplaceWords(${json.encode(replaceWords)},$enableCapture)"); @@ -129,7 +139,7 @@ class WebViewModel { /// https://github.com/CxJuice/Uex_Chinese_Translate // get versions - const hostUrl = "https://ch.citizenwiki.cn/json-files"; + const hostUrl = "https://ch.citizenwiki.cn/json-files/locales"; final v = AppWebLocalizationVersionsData.fromJson( await _getJson("$hostUrl/versions.json")); @@ -153,7 +163,7 @@ class WebViewModel { List> _getLocalizationResource(String key) { final List> localizations = []; - final dict = localizationResource[key]?["dict"]; + final dict = localizationResource[key]; if (dict is Map) { for (var element in dict.entries) { final k = element.key diff --git a/lib/ui/home/webview/webview_localization_capture_ui_model.dart b/lib/ui/home/webview/webview_localization_capture_ui_model.dart index be28abc..2beefbb 100644 --- a/lib/ui/home/webview/webview_localization_capture_ui_model.dart +++ b/lib/ui/home/webview/webview_localization_capture_ui_model.dart @@ -9,7 +9,6 @@ class WebviewLocalizationCaptureUIModel extends BaseUIModel { WebviewLocalizationCaptureUIModel(this.webViewModel); Map data = {}; - Map oldData = {}; String renderString = ""; @@ -32,11 +31,13 @@ class WebviewLocalizationCaptureUIModel extends BaseUIModel { if (map["action"] == "webview_localization_capture") { dPrint( " webview_localization_capture message == $map"); - if (!oldData.containsKey(map["key"])) { - data[map["key"].toString().trim().toLowerCase().replaceAll(" ", "_")] = - map["value"]; + final key = map["key"]; + if (key != null && key.toString().trim() != "") { + if (!(webViewModel.curReplaceWords?.containsKey(key) ?? false)) { + data[key] = map["value"]; + } + _updateRenderString(); } - _updateRenderString(); } } @@ -46,7 +47,6 @@ class WebviewLocalizationCaptureUIModel extends BaseUIModel { } doClean() { - oldData.addAll(data); data.clear(); _updateRenderString(); } diff --git a/pubspec.yaml b/pubspec.yaml index d1f04f3..b6f5f44 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -44,7 +44,7 @@ dependencies: markdown_widget: ^2.2.0 extended_image: ^8.1.1 hyper_thread_downloader: ^1.0.5 - device_info_plus: ^9.0.3 + device_info_plus: ^10.0.0 file_picker: ^5.5.0 file_sizes: ^1.0.6 desktop_webview_window: ^0.2.3