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

Ajax Datatable本地化:根据设备语言加载对应语言文件

Datatable 根据本地语言加载语言文件的正确实现

原代码错误原因

你写的代码里把变量声明var userLang和if判断直接放在了DataTable的配置对象内部,这不符合JavaScript语法——对象结构里只能写键值对,不能嵌套变量声明和条件语句,所以会抛出Unexpected Identifier错误。

修正后的实现代码

// 获取用户设备/浏览器的语言
var userLang = navigator.language || navigator.userLanguage;
// 初始化Datatable配置对象
var dtConfig = {};

// 根据语言匹配对应的语言文件
if (userLang.startsWith("de")) {
  dtConfig.language = {
    url: 'https://cdn.datatables.net/plug-ins/1.10.20/i18n/German.json'
  };
}
// 可扩展其他语言支持,比如中文
// else if (userLang.startsWith("zh")) {
//   dtConfig.language = {
//     url: 'https://cdn.datatables.net/plug-ins/1.10.20/i18n/Chinese.json'
//   };
// }

// 处理表格已初始化的情况:先销毁旧实例再重新初始化
if ($.fn.dataTable.isDataTable('#systemStatusTable')) {
  $('#systemStatusTable').DataTable().destroy();
}

// 初始化或重置Datatable
var datatable = $('#systemStatusTable').DataTable(dtConfig);

关键说明

  • 语法规范:所有变量声明、条件判断必须放在Datatable配置对象外部,配置对象只用来存放键值对格式的配置项。
  • 表格实例管理:如果表格已经被Datatable初始化过,必须先调用destroy()销毁旧实例,否则直接重新初始化会触发报错。
  • 多语言扩展:可以通过添加else if分支,为不同语言匹配对应的Datatable语言文件,覆盖更多场景。
  • 语言获取兼容性:navigator.language || navigator.userLanguage的写法同时兼容现代浏览器和IE,是正确的语言获取方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:35:23