php – Laravel 5多语言支持

php – Laravel 5多语言支持,第1张

概述我是laravel的新手,我正试图用多语言来支持我的应用程序. 我已经下载了laravel 5的默认登录系统,并从下面的链接中集成了多支持语言教程 https://laracasts.com/discuss/channels/tips/example-on-how-to-use-multiple-locales-in-your-laravel-5-website 但它给我登录页面url local 我是laravel的新手,我正试图用多语言来支持我的应用程序.
我已经下载了laravel 5的默认登录系统,并从下面的链接中集成了多支持语言教程

https://laracasts.com/discuss/channels/tips/example-on-how-to-use-multiple-locales-in-your-laravel-5-website

但它给我登录页面url localhost / en / login多语言支持教程但是当我使用登录系统而没有集成多语言支持时,它给了我登录页面laravel / auth / login的URL.

这是我的kernel.PHP

class Kernel extends httpKernel {    /**     * The application's global http mIDdleware stack.     *     * @var array     */    protected $mIDdleware = [        'App\http\MIDdleware\Language','Illuminate\Foundation\http\MIDdleware\CheckForMaintenanceMode','Illuminate\cookie\MIDdleware\Encryptcookies','Illuminate\cookie\MIDdleware\AddQueuedcookiesToResponse','Illuminate\Session\MIDdleware\StartSession','Illuminate\VIEw\MIDdleware\ShareErrorsFromSession','App\http\MIDdleware\VerifyCsrftoken',];    /**     * The application's route mIDdleware.     *     * @var array     */    protected $routeMIDdleware = [        'test'=> 'App\http\MIDdleware\Test','auth' => 'App\http\MIDdleware\Authenticate','auth.basic' => 'Illuminate\Auth\MIDdleware\AuthenticateWithBasicAuth','guest' => 'App\http\MIDdleware\RedirectIfAuthenticated',];}@H_404_19@  

这是我的RouteServiceProvIDer.PHP

<?PHP namespace App\ProvIDers;use Illuminate\Routing\Router;use Illuminate\http\Request;use Illuminate\Foundation\Support\ProvIDers\RouteServiceProvIDer as ServiceProvIDer;class RouteServiceProvIDer extends ServiceProvIDer {    /**     * This namespace is applIEd to the controller routes in your routes file.     *     * In addition,it is set as the URL generator's root namespace.     *     * @var string     */    protected $namespace = 'App\http\Controllers';    /**     * define your route model bindings,pattern filters,etc.     *     * @param  \Illuminate\Routing\Router  $router     * @return voID     */    public function boot(Router $router)    {        parent::boot($router);        //    }    /**     * define the routes for the application.     *     * @param  \Illuminate\Routing\Router  $router     * @return voID     */    public function map(Router $router,Request $request)    {        $locale = $request->segment(1);        $this->app->setLocale($locale);        $router->group(['namespace' => $this->namespace,'prefix' => $locale],function($router) {        require app_path('http/routes.PHP'); });    }    }@H_404_19@  

我不知道如何将此教程集成到此默认登录系统中.

提前致谢.

解决方法 前段时间我在给定的教程中像你一样苦苦挣扎.经过研究/搜索,我最终得到了这样的结果.请注意我仍在努力.

第1步:添加您的区域设置
在config / app.PHP中,在locales下面添加skip_locals行

‘locales’=> [‘en’=> ‘英语’,’sv’=> ‘瑞典’],
‘skip_locales’=> [ ‘管理员’,‘AUTH’,‘等’],

第2步:为您的路线添加前缀
将map方法更改为以下内容

public function map(Router $router,Request $request){    $locale = $request->segment(1);    $this->app->setLocale($locale);    $skipLocales = $this->app->config->get('app.skip_locales');      // If the locale is added to skip_locales array continue without locale    if (in_array($locale,$skipLocales)) {        $router->group(['namespace' => $this->namespace],function($router)        {            require app_path('http/routes.PHP');        });    }    else {        $router->group(['namespace' => $this->namespace,function($router) {            require app_path('http/routes.PHP');        });    }}@H_404_19@  

第3步:创建语言中间件
用这个更改内容

<?PHP namespace App\http\MIDdleware;use Closure;use Illuminate\Routing\Redirector;use Illuminate\http\Request;use Illuminate\Foundation\Application;use Illuminate\Contracts\Routing\MIDdleware;class Language implements MIDdleware{    public function __construct(Application $app,Redirector $redirector,Request $request)    {        $this->app = $app;        $this->redirector = $redirector;        $this->request = $request;    }    /**     * Handle an incoming request.     *     * @param \Illuminate\http\Request $request                 * @param \Closure $next                 * @return mixed     */    public function handle($request,Closure $next)    {        // Make sure the current local exists        $locale = $request->segment(1);        // If the locale is added to to skip_locales array continue without locale        if (in_array($locale,$this->app->config->get('app.skip_locales'))) {            return $next($request);        } else {            // If the locale does not exist in the locales array continue with the fallback_locale            if (! array_key_exists($locale,$this->app->config->get('app.locales'))) {                $segments = $request->segments();                array_unshift($segments,$this->app->config->get('app.fallback_locale'));                // $segments[0] = $this->app->config->get('app.fallback_locale');                return $this->redirector->to(implode('/',$segments));            }        }        $this->app->setLocale($locale);        return $next($request);    }}@H_404_19@  

希望这会有所帮助!

总结

以上是内存溢出为你收集整理的php – Laravel 5多语言支持全部内容,希望文章能够帮你解决php – Laravel 5多语言支持所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1256189.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存