CodeIgniter多语言配置关键在于语言文件、加载逻辑和切换机制;需在application/language下按语言建目录并定义翻译数组,配置默认语言,控制器中加载语言文件,视图用lang()函数输出,支持URI或Session方式切换语言。

CodeIgniter 多语言配置其实不难,关键是把语言文件、加载逻辑和切换机制理清楚。新手只要按步骤来,10 分钟就能跑通基础多语言功能。
准备语言文件(放在 application/language/ 下)
在 application/language/ 目录里,为每种语言建一个子目录,比如:
-
english/ → 放
site_lang.php -
chinese/ → 放
site_lang.php
每个 site_lang.php 里用数组定义翻译项,格式统一:
// application/language/english/site_lang.php $lang['welcome_message'] = 'Welcome to our site!'; $lang['login_btn'] = 'Log In';
// application/language/chinese/site_lang.php $lang['welcome_message'] = '欢迎来到我们的网站!'; $lang['login_btn'] = '登录';
启用语言类并设置默认语言
打开 application/config/config.php,找到这几行并修改:
$config['language'] = 'english'; // 默认语言目录名(不是文件名) $config['charset'] = 'UTF-8';
确保 application/libraries/Loader.php 中语言类已启用(CI3 默认开启,不用改);CI4 则需在控制器中显式加载:$this->lang->load('site', 'chinese');
在控制器或视图中使用语言项
在控制器里加载语言文件(推荐在构造函数中):
public function __construct()
{
parent::__construct();
$this->lang->load('site', 'english'); // 第二个参数可动态传入,如 $this->uri->segment(1)
}
视图中直接用语言函数输出:
<h1><?php echo lang('welcome_message'); ?></h1>
<button><?php echo lang('login_btn'); ?></button>
实现语言切换(URL 或 Session 方式)
最轻量的做法:用 URI 第一段标识语言,例如 /zh/home、/en/about:
- 在 application/config/routes.php 加路由规则,把语言段过滤掉
- 在 BaseController 构造函数中读取
$this->uri->segment(1),判断是否为有效语言,然后设置并加载对应语言 - 把语言存到 session 或 cookie,后续请求自动沿用
示例片段(CI3):
$lang = $this->uri->segment(1);
if (in_array($lang, ['en', 'zh'])) {
$this->session->set_userdata('site_lang', $lang);
$this->lang->load('site', $lang === 'zh' ? 'chinese' : 'english');
} else {
$this->lang->load('site', 'english');
}
不复杂但容易忽略:所有语言文件必须保存为 UTF-8 无 BOM 格式,否则中文会乱码;语言目录名要和 $config['language'] 值严格一致,大小写敏感。


















