安装引导程序语言切换

This commit is contained in:
TL 2022-08-26 11:37:14 +08:00
parent 7d40d7e6e0
commit 52fd9ce208
4 changed files with 43 additions and 4 deletions

View File

@ -54,7 +54,7 @@ class Kernel extends HttpKernel
'installer' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\SetLocaleFromSession::class,
\App\Http\Middleware\SetLocaleInstaller::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
],

View File

@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class SetLocaleInstaller
{
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$sessionLocale = session('locale');
$languageDir = base_path('beike/Installer/Lang');
$languages = array_values(array_diff(scandir($languageDir), array('..', '.')));
if ($sessionLocale && in_array($sessionLocale, $languages)) {
App::setLocale($sessionLocale);
} else {
session(['locale' => 'en']);
}
return $next($request);
}
}

View File

@ -24,14 +24,22 @@ class WelcomeController extends Controller
exit('Already installed');
}
$data['languages'] = LanguageRepo::enabled();
$languageDir = base_path('beike/Installer/Lang');
$packages = array_values(array_diff(scandir($languageDir), array('..', '.')));
$Languages = collect($packages)->filter(function ($package) {
return file_exists(base_path("beike/Installer/Lang/{$package}"));
})->toArray();
$data['languages'] = array_values($Languages);
$data['steps'] = 1;
return view('installer::welcome', $data);
}
public function locale($lang)
{
if (in_array($lang, languages()->toArray())) {
$languageDir = base_path('beike/Installer/Lang');
$packages = array_values(array_diff(scandir($languageDir), array('..', '.')));
if (in_array($lang, $packages)) {
Session::put('locale', $lang);
}
return Redirect::back();

View File

@ -12,7 +12,7 @@ Route::prefix('installer')
->middleware(['installer'])
->group(function () {
Route::get('/', [WelcomeController::class, 'index'])->name('welcome');
Route::get('lang/{lang}', [WelcomeController::class, 'index'])->name('lang.switch');
Route::get('lang/{lang}', [WelcomeController::class, 'locale'])->name('lang.switch');
Route::get('requirements', [RequirementsController::class, 'index'])->name('requirements');
Route::get('permissions', [PermissionsController::class, 'index'])->name('permissions');
Route::get('environment', [EnvironmentController::class, 'index'])->name('environment');