更新网页汉化功能

This commit is contained in:
xkeyC 2023-10-10 20:47:28 +08:00
parent 23fed0b7a7
commit 6d914f02da
3 changed files with 19 additions and 9 deletions

View File

@ -31,6 +31,10 @@ class WebViewModel {
bool enableCapture = false;
Map<String, String>? _curReplaceWords;
Map<String, String>? 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<Map<String, String>> _getLocalizationResource(String key) {
final List<Map<String, String>> localizations = [];
final dict = localizationResource[key]?["dict"];
final dict = localizationResource[key];
if (dict is Map) {
for (var element in dict.entries) {
final k = element.key

View File

@ -9,7 +9,6 @@ class WebviewLocalizationCaptureUIModel extends BaseUIModel {
WebviewLocalizationCaptureUIModel(this.webViewModel);
Map<String, dynamic> data = {};
Map<String, dynamic> oldData = {};
String renderString = "";
@ -32,11 +31,13 @@ class WebviewLocalizationCaptureUIModel extends BaseUIModel {
if (map["action"] == "webview_localization_capture") {
dPrint(
"<WebviewLocalizationCaptureUIModel> 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();
}

View File

@ -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