在thinkphp8单应用模式下,我们首先在app目录下,创建lang目录,然后创建语言子目录,例如:zh-cn,en-us。然后可以按模块来创建php文件,例如把通用的语言放到common.php文件中,把后台管理员的多语言界面翻译,放到admin.php文件中。把商品展示多语言界面翻译,放到product.php中。
如何调用这些文件中的语言翻译?用thinkphp8的助手函数lang(),在参数里面输入字符串,lang('admin.login') admin的意思是文件名,我们之前创建的admin.php。login的意思是在admin.php定义的数组键login。但是这样调用无效,这需要我们修改一下底层的代码。
底层的代码在vendor\topthink\framework\src\think目录下的一个Lang.php文件中,我们修改一下这个文件中的load函数。把遍历文件的代码修改一下
php
$lang = [];
foreach ((array) $file as $name) {
if (is_file($name)) {
$result = $this->parse($name);
$filename = basename($name, '.php'); //获取文件名
if($filename == 'zh-cn'){
//文件名是zh-cn.php,在文章里面做单独讲解
$lang = array_change_key_case($result) + $lang;
}else{
//把我们自定义的语言文件合并到数组中
$lang[$filename] = array_change_key_case($result);
}
}
}
thinkphp8加载语言文件,首先加载的是vendor\topthink\framework\src\lang目录下的语言文件。然后加载的是我们在app/lang目录下定义的文件。
lang这个助手函数还有第二个参数,就是指定语言。例如我们可以lang('admin.login','en-us')这样在中文界面中,展示英文。