如何更好的实现动态修改多语言

##动态修改多语言,目前我能想到的解决办法如下:(eg:中文 or 英文)
config app 默认

 'locale' => 'en',

resources lang en下新建phphub.php

<?php
return [
    'Hello'                => 'Hello World',
];

resources lang zh_CN下新建phphub.php

<?php
return [
    'Hello'                => '你好,世界',
];

前端页面调用

<h1>{{ lang('phphub.Hello') }}</h1>

当用户点击修改语言时,存session 设置 $locale(en or zh-CN)

public function changeLanguage($locale){
        session(['Language' => $locale]);
        config(['app.locale' => $locale]);
    }

Middleware 中新建 ChangeLanguage中间件

public function handle($request, Closure $next)
    {
        if(session('Language')){
            config(['app.locale' => session('Language')]);
        }
        return $next($request);
    }

在用户点击修改语言时,此时的config(['app.locale' => $locale]);只是修改当前请求的配置为参数语言吗?测试了一下,调用了此方法后,执行其他路由,结果就又回到了默认语言,这个地方不太理解,解决办法就是建个中间件,然后,每次请求修改配置文件
麻烦问一下各位大牛,是不是有更好的解决办法,或是,本来多语言动态设置就不是这个逻辑,请大神指教,非常感谢

你的代码应该是写给下一个开发者的情书。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

"mcamara/laravel-localization" 你看看这个包,我是判断当前哪个语言环境就用那个语言环境的blade模板。设置变量对应文字太麻烦了。

3年前 评论
lalall (楼主) 3年前
Constantine (作者) 3年前
随波逐流
composer require overtrue/laravel-lang
3年前 评论
lalall (楼主) 3年前

添加个setlocale中间件,每次让前端传呗, 不传打他

3年前 评论
lalall (楼主) 3年前
lun1bz (作者) 3年前
lalall (楼主) 3年前

中间件的思路是正确的,因为 config 配置文件只在启动时加载一次,在项目启动初始化时, config 文件的 lang 设置的是 CN 语言就是 CN,如果要修改,只能是每次请求重新设置

3年前 评论
lalall (楼主) 3年前

中间件是对的

3年前 评论
lalall (楼主) 3年前

获取请求头的语言环境通过中间件修改语言

3年前 评论

新手有点疑惑请教大佬: 如果“A用户”点击修改了app.locale的值为“en”,请问另外一个用户访问会同样显示“en”的页面吗?

3年前 评论
Epona

现在很多常见的方式是在网址里带上语言

https://xxxx.com/zh-cn/yyy
https://xxxx.com/en/yyyy

当然,楼上推荐的其他方法也可以,都可以借鉴一下。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!