This commit is contained in:
2025-10-22 20:08:22 +05:00
commit 736e3bef18
2573 changed files with 120385 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Modules\BaseLocale;
use App\Modules\Makeable;
use App\Modules\ModuleContract;
class BaseLocaleModule implements ModuleContract
{
use Makeable;
/**
* Module is enabled
*/
protected bool $enabled = true;
/**
* Check if is module enabled
*/
public function isEnabled(): bool
{
return $this->enabled;
}
/**
* Disable module
*/
public function disable(): void
{
$this->enabled = false;
}
/**
* Enable module
*/
public function enable(): void
{
$this->enabled = true;
}
/**
* Check if module has a filament resource
*/
public function hasFilamentResource(): bool
{
return false;
}
/**
* Get module composer requirements
*/
public function getComposerRequirements(): array
{
return [];
}
/**
* Get module composer suggestions
*/
public function getComposerSuggestions(): array
{
return [];
}
}

View File

@@ -0,0 +1,9 @@
<?php
return [
'locales' => [
'tk' => 'Türkmen',
'en' => 'English',
'ru' => 'Русский',
],
];

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Modules\BaseLocale\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
class BaseLocaleController extends Controller
{
/**
* Invoke the controller
*/
public function index(string $locale): RedirectResponse
{
if (array_key_exists($locale, baseLocales())) {
session()->put('locale', $locale);
}
return safe_back();
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Modules\BaseLocale\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if (Auth::check()) {
/** @var \App\Models\User */
$user = $request->user();
if (array_key_exists($user->locale ?? '', baseLocales())) {
app()->setLocale($user->locale);
}
} else {
/** @var string */
$locale = session('locale') ?: config()->string('app.locale');
app()->setLocale($locale);
}
return $next($request);
}
}

View File

@@ -0,0 +1,8 @@
<?php
use App\Modules\BaseLocale\Controllers\BaseLocaleController;
use Illuminate\Support\Facades\Route;
Route::name('module.base-locale.')->middleware(['web', 'guest'])->group(function () {
Route::get('locale/{locale}', [BaseLocaleController::class, 'index'])->name('set-locale');
});

View File

@@ -0,0 +1,35 @@
<?php
use Illuminate\Http\RedirectResponse;
if (! function_exists('baseLocales')) {
/**
* Application locales
*
* @return array<string, string>
*/
function baseLocales(): array
{
/** @var array<string, string> */
$locales = config()->array('module.base-locale.locales');
return $locales;
}
}
if (! function_exists('safe_back')) {
/**
* Safe back
*/
function safe_back(string $fallback = '/'): RedirectResponse
{
$back = url()->previous();
// Allow only your own domain
if (! str_starts_with($back, config()->string('app.url'))) {
return redirect($fallback);
}
return redirect()->to($back);
}
}