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

如何在TMS Web Core网站中用Delphi获取用户系统/浏览器语言

在TMS Web Core中获取浏览器/系统语言设置(Delphi实现)

在TMS Web Core构建的Web应用中,你可以直接通过映射浏览器原生JavaScript API来获取语言设置,或者利用Delphi封装的JS对象接口实现,以下是具体方案:

方法1:获取浏览器首选语言

navigator.language是浏览器提供的原生属性,返回当前浏览器的首选语言(格式如zh-CN、en-US),对应Delphi实现代码:

function GetBrowserPreferredLanguage: string;
begin
  // 直接访问浏览器navigator对象的language属性
  Result := TJSDocument.DefaultView.navigator.language;
end;

方法2:获取完整语言偏好列表

如果需要获取用户设置的所有语言优先级列表,可以使用navigator.languages属性,它返回一个包含所有偏好语言的数组,Delphi实现如下:

function GetBrowserLanguageList: TStringList;
var
  JSLanguages: TJSArray;
  I: Integer;
begin
  Result := TStringList.Create;
  try
    JSLanguages := TJSDocument.DefaultView.navigator.languages;
    // 遍历JS数组,转换为Delphi字符串列表
    for I := 0 to JSLanguages.length - 1 do
      Result.Add(JSLanguages[I]);
  except
    Result.Free;
    raise;
  end;
end;

区分浏览器语言与系统语言

  • navigator.language:返回的是浏览器自身的设置语言,用户可以在浏览器设置中独立修改,不一定和系统语言一致。
  • 如需获取系统级语言(仅部分浏览器兼容),可以尝试navigator.userLanguage(IE/Edge旧版本)或navigator.systemLanguage,但现代浏览器大多已统一使用navigator.language作为主要语言标识。

示例用法

在按钮点击事件中调用上述函数并显示结果:

procedure TMainForm.WebBtnGetLangClick(Sender: TObject);
var
  PreferredLang: string;
  LangList: TStringList;
begin
  PreferredLang := GetBrowserPreferredLanguage;
  WebMemoOutput.Lines.Add('当前首选语言: ' + PreferredLang);

  LangList := GetBrowserLanguageList;
  try
    WebMemoOutput.Lines.Add('');
    WebMemoOutput.Lines.Add('所有语言偏好(按优先级排序):');
    WebMemoOutput.Lines.AddStrings(LangList);
  finally
    LangList.Free;
  end;
end;

注意事项

  • 语言代码遵循BCP 47标准,通常包含语言代码和区域代码(如zh-TW、fr-FR)。
  • 部分浏览器可能返回小写的语言代码(如zh-cn),如需统一格式可自行转换大小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:07:52