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
相关产品推荐
相关产品推荐

