WPF 修改 WebView2 默认语言

2023年9月14日 1006点热度 0人点赞 0条评论
内容纲要

默认 webview2 使用英文语言显示,包括控制台、打印台等地方,都是英文提示,因此可以修改为本地语言。

        public static void SetWebviewLanguage(string language = "zh-CN")
        {
            var cultureInfo = new CultureInfo(language);
            // 设置程序使用的语言,可以忽略。
            CultureInfo.CurrentCulture = cultureInfo;
            CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

            // 修改 WebView2 的语言设置
            // 不知道目录在哪里,可以修改目录,参考 https://www.whuanle.cn/archives/21314
            var basePath = "weview2数据存储目录";
            if (!Directory.Exists(Path.Combine(basePath, "EBWebView")))
            {
                var webView2 = Directory.GetDirectories(basePath).FirstOrDefault(x => x.EndsWith(".WebView2"));
                if (webView2 == null) return;
                basePath = webView2;
            }
            var preferencesFile = Path.Combine(basePath, "EBWebView/Default/Preferences"); // Preferences
            if (!File.Exists(preferencesFile)) return;

            string jsonString = File.ReadAllText(preferencesFile);
            JsonObject jsonObject = JsonNode.Parse(jsonString)!.AsObject();
            // var languages = jsonObject["intl"]!["selected_languages"].Deserialize<string>() ?? "";  // 获取当前语言
            // "zh-CN,en,en-GB,en-US"
            // File.Delete(preferencesFile);
            jsonObject.Remove("intl");
            jsonObject.Add("intl", JsonNode.Parse($"{{\"selected_languages\":\"{cultureInfo.Name}\"}}"));
            jsonString = JsonSerializer.Serialize(jsonObject);
            File.WriteAllText(preferencesFile, jsonString);
        }

痴者工良

高级程序员劝退师

文章评论