codeigniter 多语言自动检测浏览器语言的核心是解析 http 请求头中的 accept-language 字段,提取主语言码(如 zh、en),映射为本地语言目录名(如 zh-cn、english),再通过 set_item() 设置语言配置并 load() 加载对应语言包,全程无需用户干预。

CodeIgniter 多语言自动检测浏览器语言,核心是读取 HTTP 请求头中的 Accept-Language 字段,再根据该字段值动态设置语言配置并加载对应语言包。整个过程不依赖用户手动选择,也不需修改 URL 或 Session,属于轻量、开箱即用的方案。
读取 Accept-Language 并解析首选语言
浏览器在每次请求中都会携带 Accept-Language 头(例如 zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7),CI 可通过 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 获取。实际使用时建议做简单截取和标准化处理:
- 用
explode(',', $header)拆分语言列表 - 取第一个语言标签(如
zh-CN),再用substr($lang, 0, 2)提取主语言码(zh)便于匹配 - 注意大小写统一,推荐转为小写后比对
映射语言码到本地目录名
CI 的语言包路径为 application/language/{lang_key}/{file_name}.php,其中 {lang_key} 需与 config 中一致。常见映射关系示例:
-
zh或zh-cn→zh-cn -
en或en-us→english -
ja或ja-jp→japanese
建议在控制器基类或构造函数中统一完成判断与映射,避免每个方法重复逻辑。
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
动态设置语言并加载语言包
CI 提供两种关键操作:
- 用
$this->config->set_item('language', $lang_key)设置全局语言配置 - 用
$this->load->language('common', $lang_key)加载指定语言包(common.php是常用语言文件名)
注意:必须先 set_item 再 load,否则 lang()->line() 可能仍返回默认语言内容。可在基控制器 __construct() 中集中执行这两步。
语言包命名与结构规范
确保语言文件符合 CI 约定:
- 文件名统一为
xxx_lang.php(如menu_lang.php) - 每个文件内定义
$lang['key'] = '翻译文本';形式数组 - 目录结构严格为
application/language/zh-cn/menu_lang.php和application/language/english/menu_lang.php
只要路径和命名正确,CI 的 Lang 类就能自动识别并按需加载。










