You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi11.3中修改TEdgeBrowser/WebView4Delphi的navigator.language值

在Delphi 11.3中修改WebView2(TEdgeBrowser/Webview4Delphi)的navigator.language值

问题背景

使用Delphi 11.3通过TEdgeBrowser组件调用WebView2,运行在英文Windows服务器上时,navigator.language默认返回en-US,需要将其修改为目标语言(例如法语fr)。已知CoreWebView2EnvironmentOptions.Language属性可用于设置语言,但不清楚如何在TEdgeBrowser中配置;尝试使用Webview4Delphi的TWVLoader设置Language属性后,alert(navigator.language)仍返回系统默认语言,设置无效。

尝试过的无效方法

在Webview4Delphi的SimpleBrowser示例中添加初始化代码,但未生效:

initialization
GlobalWebView2Loader := TWVLoader.Create(nil);
GlobalWebView2Loader.UserDataFolder := ExtractFileDir(Application.ExeName) + '\CustomCache';
GlobalWebView2Loader.Language := 'fr';  // 测试设置为法语
GlobalWebView2Loader.StartWebView2;

最终解决方案

结合相关方案,通过以下两种方式分别实现:

1. 针对原生TEdgeBrowser组件

手动创建CoreWebView2Environment并指定语言参数,再初始化TEdgeBrowser:

uses
  Winapi.WebView2, Winapi.WebView2Loader, Vcl.Edge, System.SysUtils;

procedure TForm1.FormCreate(Sender: TObject);
var
  EnvOptions: ICoreWebView2EnvironmentOptions;
  Env: ICoreWebView2Environment;
  HR: HResult;
begin
  // 创建环境选项实例并设置语言
  CoCreateInstance(CLSID_CoreWebView2EnvironmentOptions, nil, CLSCTX_ALL, 
                   IID_ICoreWebView2EnvironmentOptions, EnvOptions);
  EnvOptions.put_Language('fr'); // 替换为目标语言代码

  // 创建带自定义选项的WebView2环境
  HR := CreateCoreWebView2EnvironmentWithOptions(nil, 
                                                 ExtractFileDir(Application.ExeName) + '\CustomCache', 
                                                 EnvOptions,
                                                 TCoreWebView2CreateEnvironmentCompletedHandler.Create(
    procedure(const sender: ICoreWebView2Environment; const errorCode: HResult)
    begin
      if Succeeded(errorCode) then
      begin
        // 将环境绑定到TEdgeBrowser并初始化WebView
        EdgeBrowser1.CoreWebView2Environment := sender;
        EdgeBrowser1.CreateWebView(Handle);
      end;
    end
  ));
end;

2. 针对Webview4Delphi组件

除了设置TWVLoader.Language,还需在创建环境时添加浏览器命令行参数强制指定语言:

uses
  Winapi.WebView2, WebView2;

procedure TMainForm.GlobalWebView2LoaderCreateWebView2Environment(Sender: TObject;
  const aEnvironmentOptions: ICoreWebView2EnvironmentOptions; var aCancel: Boolean);
var
  EnvOptions8: ICoreWebView2EnvironmentOptions8;
begin
  // 检查是否支持ICoreWebView2EnvironmentOptions8接口
  if Supports(aEnvironmentOptions, ICoreWebView2EnvironmentOptions8, EnvOptions8) then
  begin
    // 添加命令行参数强制设置语言,替换为目标语言代码
    EnvOptions8.AddBrowserCommandLineArgument('--lang=fr', '');
  end;
end;

注意:首次设置前请清空旧的UserDataFolder缓存目录,避免缓存的语言设置干扰新配置。

内容的提问来源于stack exchange,提问作者Marianne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:37:31