thinkphp8单应用模式下的多语言设置修改

在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')这样在中文界面中,展示英文。

相关推荐
升鲜宝供应链及收银系统源代码服务4 天前
数据字典国际化完整方案字典类型主表 + 字典类型国际化子表 + 字典明细主表 + 字典明细国际化子表(一)----升鲜宝生鲜配送供应链管理系统源代码
国际化·数据字典·多语言·生鲜配送·供应链源代码
升鲜宝供应链及收银系统源代码服务4 天前
系统菜单与按钮国际化升鲜宝多语言数据库设计演进对比文档(一)
数据库·多语言·生鲜配送·生鲜供应链管理系统·门店收银
若苗瞬13 天前
声音克隆开源项目VoxCPM
开源·多语言·语音克隆·方言·voxcpm
名字很费劲1 个月前
thinkphp8怎么解决跨域错误
跨域·thinkphp8
badoucms建站源码1 个月前
BadouCMS 与 PbootCMS 标签调用区别详细说明
pbootcms·thinkphp8·badoucms
vivo互联网技术2 个月前
深度解析悟空系统多机房部署共线改造
前端·npm·多语言·共线改造·多机房
十五年专注C++开发4 个月前
Qt实现多语言原理和实践详解
开发语言·c++·qt·多语言
程序猿多布4 个月前
Unity 多语言系统实现
unity·多语言
28的博客5 个月前
高安全性 PHP 2FA 开发指南:Authenticator 扫码验证实现方案
后端开发·thinkphp8·多因素认证