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

##动态修改多语言,目前我能想到的解决办法如下:(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]);只是修改当前请求的配置为参数语言吗?测试了一下,调用了此方法后,执行其他路由,结果就又回到了默认语言,这个地方不太理解,解决办法就是建个中间件,然后,每次请求修改配置文件
麻烦问一下各位大牛,是不是有更好的解决办法,或是,本来多语言动态设置就不是这个逻辑,请大神指教,非常感谢

你的代码应该是写给下一个开发者的情书。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 8

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

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

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

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

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

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

中间件是对的

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

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

2年前 评论

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

2年前 评论
Epona

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

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

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

2年前 评论

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