我是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步:添加您的区域设置 在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, 'prefix' => $locale], 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);
}
}
希望这会有所帮助! (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|