php – Laravel 5多语言支持
我是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 = [ 'AppHttpMiddlewareLanguage','IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode','IlluminateCookieMiddlewareEncryptCookies','IlluminateCookieMiddlewareAddQueuedCookiesToResponse','IlluminateSessionMiddlewareStartSession','IlluminateViewMiddlewareShareErrorsFromSession','AppHttpMiddlewareVerifyCsrfToken',]; /** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'test'=> 'AppHttpMiddlewareTest','auth' => 'AppHttpMiddlewareAuthenticate','auth.basic' => 'IlluminateAuthMiddlewareAuthenticateWithBasicAuth','guest' => 'AppHttpMiddlewareRedirectIfAuthenticated',]; } 这是我的RouteServiceProvider.php <?php namespace AppProviders; use IlluminateRoutingRouter; use IlluminateHttpRequest; use IlluminateFoundationSupportProvidersRouteServiceProvider 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 = 'AppHttpControllers'; /** * Define your route model bindings,pattern filters,etc. * * @param IlluminateRoutingRouter $router * @return void */ public function boot(Router $router) { parent::boot($router); // } /** * Define the routes for the application. * * @param IlluminateRoutingRouter $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'); }); } } 我不知道如何将此教程集成到此默认登录系统中. 提前致谢. 解决方法
前段时间我在给定的教程中像你一样苦苦挣扎.经过研究/搜索,我最终得到了这样的结果.请注意我仍在努力.
第1步:添加您的区域设置 ‘locales’=> [‘en’=> ‘英语’,’sv’=> ‘瑞典’], 第2步:为您的路线添加前缀 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'); }); } } 第3步:创建语言中间件 <?php namespace AppHttpMiddleware; use Closure; use IlluminateRoutingRedirector; use IlluminateHttpRequest; use IlluminateFoundationApplication; use IlluminateContractsRoutingMiddleware; 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 IlluminateHttpRequest $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); } } 希望这会有所帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |