Мы используем IP2LOCATIONLARAVEL для получения кодов стран посетителей.Если IP-адрес посетителя из Ирана (код страны ISO = IR), атрибут lang тега html в blade.php должен быть установлен как 'fa', в противном случае как 'en'.
Во-первых, мы добавилиэта строка в нашем config / app.php:
'locale' => 'en',
// we added:
'other_locale' => ['fa-IR'],
Мы также создали промежуточное ПО и правильно добавили его в app / Http / kernel.php.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Foundation\Application;
use Ip2location\IP2LocationLaravel\Facade\IP2LocationLaravel;
class LocaleHandler
{
public function __construct(Application $app, Request $request) {
$this->app = $app;
$this->request = $request;
}
public function handle($request, Closure $next)
{
if (app()->getLocale()=='fa'){
if(in_array($request->segment(0), config('app.other_locale'))){
$this->app->setLocale($request->segment(0));
}else{
$this->app->setLocale(config('app.locale'));
}
}
return $next($request);
}
}
Затем мы обновили приложение/Providers/RouteServiceProvider.php:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
class RouteServiceProvider extends ServiceProvider
{
protected $namespace = 'App\Http\Controllers';
public function boot()
{
parent::boot();
}
public function map(Request $request)
{
$this->mapApiRoutes();
$this->mapWebRoutes($request);
}
protected function mapWebRoutes(Request $request)
{
if(in_array($request->segment(0), config('app.other_locale'))){
$locale = $request->segment(0);
}else{
$locale = null;
}
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
'prefix' => $locale
], function ($router) {
require base_path('routes/web.php');
});
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
}
localhost / laravel / public / fa is 404 страница ошибки.как мы можем обновить
<html lang="{{ app()->getLocale() }}">
В нашем блейд-файле, если код страны посетителя был IR?