thinkphp8.0.2 php8.1 多国语言失效 自动侦测 会跳回默认设置语言

thinkphp8.0.2 多国语言 自动侦测 会跳回默认设置语言
因为使用了多应用模式 MultiApp.php多使用了一次默认语言 但是并没有多执行一次中间件\think\middleware\LoadLangPack
所以会跳回默认语言。导致无法设置不同语言。

\tp8\tp\vendor\topthink\framework\src\think\App.php
第一次使用默认语言

\tp8\tp\vendor\topthink\think-multi-app\src\MultiApp.php
多应用模式第二次使用默认语言

当前的解决方案是先注释掉MultiApp.php中的
// t h i s − > a p p − > l o a d L a n g P a c k ( this->app->loadLangPack( this>app>loadLangPack(this->app->lang->defaultLangSet());

TP6多应用也同样的多加载了一次默认语言但是可以正常使用。


```php
 protected function loadApp(string $appName, string $appPath): void
    {

       


        if (is_file($appPath . 'common.php')) {
            include_once $appPath . 'common.php';
        }

        $files = [];

        $files = array_merge($files, glob($appPath . 'config' . DIRECTORY_SEPARATOR . '*' . $this->app->getConfigExt()));

        foreach ($files as $file) {
            $this->app->config->load($file, pathinfo($file, PATHINFO_FILENAME));
        }

        
        if (is_file($appPath . 'event.php')) {
            $this->app->loadEvent(include $appPath . 'event.php');
        }

        if (is_file($appPath . 'middleware.php')) {
            $this->app->middleware->import(include $appPath . 'middleware.php', 'app');
        }

        if (is_file($appPath . 'provider.php')) {
            $this->app->bind(include $appPath . 'provider.php');
        }

        // 加载应用默认语言包
        //$this->app->loadLangPack($this->app->lang->defaultLangSet());

        
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值