add locale manager
This commit is contained in:
@@ -4,6 +4,12 @@ APP_KEY=
|
|||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=http://localhost
|
APP_URL=http://localhost
|
||||||
|
|
||||||
|
NOVA_PATH="/work-place"
|
||||||
|
|
||||||
|
LOCALE_APP_API_TOKEN=""
|
||||||
|
LOCALE_APP_URL=http://127.0.0.1:8001
|
||||||
|
LOCALE_APP_PATH=
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
LOG_DEPRECATIONS_CHANNEL=null
|
LOG_DEPRECATIONS_CHANNEL=null
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
|
|||||||
@@ -18,6 +18,23 @@ function isLocalIp(string $ip = ''): bool
|
|||||||
return ! filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
|
return ! filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is turkmen ip
|
||||||
|
* @param string $ip
|
||||||
|
*/
|
||||||
|
function isTurkmenIp(string $ip = ''): bool
|
||||||
|
{
|
||||||
|
$patterns = ['95.85', '216'];
|
||||||
|
|
||||||
|
foreach ($patterns as $pattern) {
|
||||||
|
if (strpos($ip, $pattern) === 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Un mask phone from "+(993)-xx-xx-xx-xx"
|
* Un mask phone from "+(993)-xx-xx-xx-xx"
|
||||||
*/
|
*/
|
||||||
@@ -138,3 +155,19 @@ function storeResourceEvent(string $name, array $data, Request $request): void
|
|||||||
Log::error('Error in storeResourceEvent() helpers', ['error' => $e]);
|
Log::error('Error in storeResourceEvent() helpers', ['error' => $e]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale app path
|
||||||
|
*/
|
||||||
|
function localeAppPath(): string
|
||||||
|
{
|
||||||
|
return config('app.locale_app.path');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale app url
|
||||||
|
*/
|
||||||
|
function localeAppUrl(): string
|
||||||
|
{
|
||||||
|
return config('app.locale_app.url');
|
||||||
|
}
|
||||||
|
|||||||
8
app/Http/Controllers/LocaleManagerController.php
Normal file
8
app/Http/Controllers/LocaleManagerController.php
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
class LocaleManagerController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
20
app/Models/System/Locale/LocaleManager.php
Normal file
20
app/Models/System/Locale/LocaleManager.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\System\Locale;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class LocaleManager extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*
|
||||||
|
* @var array<int, string>
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'name',
|
||||||
|
];
|
||||||
|
}
|
||||||
43
app/Nova/Actions/ExportTranslations.php
Normal file
43
app/Nova/Actions/ExportTranslations.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Nova\Actions;
|
||||||
|
|
||||||
|
use App\Repos\System\Locale\LocaleManagerRepo;
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Queue\InteractsWithQueue;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
use Laravel\Nova\Actions\Action;
|
||||||
|
use Laravel\Nova\Actions\ActionResponse;
|
||||||
|
use Laravel\Nova\Fields\ActionFields;
|
||||||
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
|
|
||||||
|
class ExportTranslations extends Action
|
||||||
|
{
|
||||||
|
use InteractsWithQueue, Queueable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform the action on the given models.
|
||||||
|
*
|
||||||
|
* @param \Laravel\Nova\Fields\ActionFields $fields
|
||||||
|
* @param \Illuminate\Support\Collection $models
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle(ActionFields $fields, Collection $models): mixed
|
||||||
|
{
|
||||||
|
LocaleManagerRepo::make()->handle();
|
||||||
|
|
||||||
|
return ActionResponse::message('It worked!');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the fields available on the action.
|
||||||
|
*
|
||||||
|
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function fields(NovaRequest $request): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
92
app/Nova/Resources/System/Locale/LocaleManagerResource.php
Normal file
92
app/Nova/Resources/System/Locale/LocaleManagerResource.php
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Nova\Resources\System\Locale;
|
||||||
|
|
||||||
|
use App\Models\System\Locale\LocaleManager;
|
||||||
|
use App\Nova\Actions\ExportTranslations;
|
||||||
|
use App\Nova\Resource;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Laravel\Nova\Fields\ID;
|
||||||
|
use Laravel\Nova\Fields\Text;
|
||||||
|
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||||
|
|
||||||
|
class LocaleManagerResource extends Resource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The model the resource corresponds to.
|
||||||
|
*
|
||||||
|
* @var class-string<\App\Models\System\Locale\LocaleManager>
|
||||||
|
*/
|
||||||
|
public static $model = LocaleManager::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The single value that should be used to represent the resource when being displayed.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public static $title = 'name';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The columns that should be searched.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $search = [
|
||||||
|
'name',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the fields displayed by the resource.
|
||||||
|
*/
|
||||||
|
public function fields(NovaRequest $request): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ID::make()->sortable(),
|
||||||
|
|
||||||
|
Text::make(__('Main'), 'name'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the cards available for the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function cards(NovaRequest $request)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the filters available for the resource.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function filters(NovaRequest $request)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the lenses available for the resource.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function lenses(NovaRequest $request)
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the actions available for the resource.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function actions(NovaRequest $request): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ExportTranslations::make()
|
||||||
|
->standalone(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
93
app/Policies/System/Locale/LocaleManagerPolicy.php
Normal file
93
app/Policies/System/Locale/LocaleManagerPolicy.php
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Policies\System\Locale;
|
||||||
|
|
||||||
|
use App\Models\System\Locale\LocaleManager;
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
|
class LocaleManagerPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine whether the user can view any models.
|
||||||
|
*/
|
||||||
|
public function viewAny(User $user): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can view the model.
|
||||||
|
*/
|
||||||
|
public function view(User $user, LocaleManager $localeManager): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can create models.
|
||||||
|
*/
|
||||||
|
public function create(User $user): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can update the model.
|
||||||
|
*/
|
||||||
|
public function update(User $user, LocaleManager $localeManager): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can delete the model.
|
||||||
|
*/
|
||||||
|
public function delete(User $user, LocaleManager $localeManager): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can restore the model.
|
||||||
|
*/
|
||||||
|
public function restore(User $user, LocaleManager $localeManager): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can permanently delete the model.
|
||||||
|
*/
|
||||||
|
public function forceDelete(User $user, LocaleManager $localeManager): bool
|
||||||
|
{
|
||||||
|
if ($user->isMe()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,14 +7,17 @@ use App\Models\Order\Card\CardState;
|
|||||||
use App\Models\Order\Card\CardType;
|
use App\Models\Order\Card\CardType;
|
||||||
use App\Models\Order\Loan\LoanOrder;
|
use App\Models\Order\Loan\LoanOrder;
|
||||||
use App\Models\Order\Loan\LoanType;
|
use App\Models\Order\Loan\LoanType;
|
||||||
|
use App\Models\System\Locale\LocaleManager;
|
||||||
use App\Models\System\Location\Province;
|
use App\Models\System\Location\Province;
|
||||||
use App\Models\System\Roles\Permission;
|
use App\Models\System\Roles\Permission;
|
||||||
use App\Models\System\Roles\Role;
|
use App\Models\System\Roles\Role;
|
||||||
|
use App\Models\User;
|
||||||
use App\Policies\Branch\BranchPolicy;
|
use App\Policies\Branch\BranchPolicy;
|
||||||
use App\Policies\Order\Card\CardStatePolicy;
|
use App\Policies\Order\Card\CardStatePolicy;
|
||||||
use App\Policies\Order\Card\CardTypePolicy;
|
use App\Policies\Order\Card\CardTypePolicy;
|
||||||
use App\Policies\Order\Loan\LoanOrderPolicy;
|
use App\Policies\Order\Loan\LoanOrderPolicy;
|
||||||
use App\Policies\Order\Loan\LoanTypePolicy;
|
use App\Policies\Order\Loan\LoanTypePolicy;
|
||||||
|
use App\Policies\System\Locale\LocaleManagerPolicy;
|
||||||
use App\Policies\System\Location\ProvincePolicy;
|
use App\Policies\System\Location\ProvincePolicy;
|
||||||
use App\Policies\System\Logs\ActionEventPolicy;
|
use App\Policies\System\Logs\ActionEventPolicy;
|
||||||
use App\Policies\System\Roles\PermissionPolicy;
|
use App\Policies\System\Roles\PermissionPolicy;
|
||||||
@@ -53,6 +56,9 @@ class AuthServiceProvider extends ServiceProvider
|
|||||||
Branch::class => BranchPolicy::class,
|
Branch::class => BranchPolicy::class,
|
||||||
Province::class => ProvincePolicy::class,
|
Province::class => ProvincePolicy::class,
|
||||||
|
|
||||||
|
// Locale manager...
|
||||||
|
LocaleManager::class => LocaleManagerPolicy::class,
|
||||||
|
|
||||||
// ActionsEvents...
|
// ActionsEvents...
|
||||||
ActionEvent::class => ActionEventPolicy::class,
|
ActionEvent::class => ActionEventPolicy::class,
|
||||||
];
|
];
|
||||||
|
|||||||
101
app/Repos/System/Locale/LocaleManagerRepo.php
Normal file
101
app/Repos/System/Locale/LocaleManagerRepo.php
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Repos\System\Locale;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\Client\PendingRequest;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
|
||||||
|
class LocaleManagerRepo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Locale app path
|
||||||
|
*/
|
||||||
|
protected string $localeAppPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale app url
|
||||||
|
*/
|
||||||
|
protected string $localeAppUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale app api token
|
||||||
|
*/
|
||||||
|
protected string $localeAppApiToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Files system
|
||||||
|
*/
|
||||||
|
protected Filesystem $fileSystem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale manager app
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->localeAppPath = config('app.locale_app.path');
|
||||||
|
$this->localeAppUrl = config('app.locale_app.url');
|
||||||
|
$this->localeAppApiToken = config('app.locale_app.api_token');
|
||||||
|
|
||||||
|
$this->fileSystem = new Filesystem();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic way of new
|
||||||
|
*/
|
||||||
|
public static function make(): self
|
||||||
|
{
|
||||||
|
return new self();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run locale manager
|
||||||
|
*/
|
||||||
|
public function handle(): void
|
||||||
|
{
|
||||||
|
$this->exportTranslations()
|
||||||
|
->syncTranslationsWithLocaleApp();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale app translations directory
|
||||||
|
*/
|
||||||
|
public function localeAppTranslationsDirectory(): string
|
||||||
|
{
|
||||||
|
return $this->localeAppPath . DIRECTORY_SEPARATOR . 'lang';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export translations to translate app
|
||||||
|
*/
|
||||||
|
public function exportTranslations(): self
|
||||||
|
{
|
||||||
|
$this->fileSystem->mirror(lang_path(), $this->localeAppTranslationsDirectory());
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sync translations with locale app
|
||||||
|
*/
|
||||||
|
public function syncTranslationsWithLocaleApp(): self
|
||||||
|
{
|
||||||
|
$response = Http::acceptJson()->withHeaders([
|
||||||
|
'Api-Token' => $this->localeAppApiToken,
|
||||||
|
])
|
||||||
|
->retry(
|
||||||
|
times: 3,
|
||||||
|
sleepMilliseconds: 50,
|
||||||
|
throw: false,
|
||||||
|
when: function (Exception $exception, PendingRequest $request) {
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
->post(
|
||||||
|
url: $this->localeAppUrl . '/api/import-translations',
|
||||||
|
data: []
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ use App\Nova\Resources\Order\Card\Requisite\CardRequisite;
|
|||||||
use App\Nova\Resources\Order\Loan\LoanOrder;
|
use App\Nova\Resources\Order\Loan\LoanOrder;
|
||||||
use App\Nova\Resources\Order\Loan\LoanPaidOffLetterOrder;
|
use App\Nova\Resources\Order\Loan\LoanPaidOffLetterOrder;
|
||||||
use App\Nova\Resources\Order\Loan\LoanType;
|
use App\Nova\Resources\Order\Loan\LoanType;
|
||||||
|
use App\Nova\Resources\System\Locale\LocaleManagerResource;
|
||||||
use App\Nova\Resources\System\Location\Province;
|
use App\Nova\Resources\System\Location\Province;
|
||||||
use App\Nova\Resources\System\Roles\Permission;
|
use App\Nova\Resources\System\Roles\Permission;
|
||||||
use App\Nova\Resources\System\Roles\Role;
|
use App\Nova\Resources\System\Roles\Role;
|
||||||
@@ -64,6 +65,11 @@ class NovaMenuRepo
|
|||||||
MenuItem::resource(Province::class),
|
MenuItem::resource(Province::class),
|
||||||
MenuItem::resource(Branch::class),
|
MenuItem::resource(Branch::class),
|
||||||
])->collapsedByDefault(),
|
])->collapsedByDefault(),
|
||||||
|
|
||||||
|
MenuGroup::make(__('Locale'), [
|
||||||
|
MenuItem::resource(LocaleManagerResource::class),
|
||||||
|
])->collapsedByDefault(),
|
||||||
|
|
||||||
])->icon('cog')->collapsedByDefault(),
|
])->icon('cog')->collapsedByDefault(),
|
||||||
|
|
||||||
MenuSection::make(__('Backups'))
|
MenuSection::make(__('Backups'))
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
"spatie/nova-backup-tool": "^5.0",
|
"spatie/nova-backup-tool": "^5.0",
|
||||||
"stepanenko3/nova-logs-tool": "^2.1",
|
"stepanenko3/nova-logs-tool": "^2.1",
|
||||||
"stevebauman/location": "^7.1",
|
"stevebauman/location": "^7.1",
|
||||||
|
"symfony/filesystem": "^7.0",
|
||||||
"trin4ik/nova-switcher": "^0.4.0"
|
"trin4ik/nova-switcher": "^0.4.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
@@ -38,7 +39,6 @@
|
|||||||
"mockery/mockery": "^1.4.4",
|
"mockery/mockery": "^1.4.4",
|
||||||
"nunomaduro/collision": "^7.0",
|
"nunomaduro/collision": "^7.0",
|
||||||
"phpunit/phpunit": "^10.1",
|
"phpunit/phpunit": "^10.1",
|
||||||
"singlequote/laravel-locale-finder": "^1.0",
|
|
||||||
"spatie/laravel-ignition": "^2.0"
|
"spatie/laravel-ignition": "^2.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|||||||
727
composer.lock
generated
727
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -91,6 +91,12 @@ return [
|
|||||||
'en' => 'English',
|
'en' => 'English',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'locale_app' => [
|
||||||
|
'path' => env('LOCALE_APP_PATH', ''),
|
||||||
|
'url' => env('LOCALE_APP_URL', ''),
|
||||||
|
'api_token' => env('LOCALE_APP_API_TOKEN', ''),
|
||||||
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Application Fallback Locale
|
| Application Fallback Locale
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
return [
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Determine the paths
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'paths' => [
|
|
||||||
'lang_folder' => base_path('lang'),
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| The search options
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'search' => [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| The folders the package uses to scan for translation keys
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'folders' => [
|
|
||||||
base_path('app'),
|
|
||||||
resource_path('views'),
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Enter specific files
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'files' => [
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| The folders the package excludes from scanning
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'exclude' => [
|
|
||||||
'storage',
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| The files the package uses to scan for translation keys
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'file_extension' => [
|
|
||||||
'*.php',
|
|
||||||
'*.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| The methods used to translate keys
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
'translation_methods' => [
|
|
||||||
'\$t',
|
|
||||||
'i18n.t',
|
|
||||||
'@lang',
|
|
||||||
'__',
|
|
||||||
'trans_choice',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
74
config/translations.php
Normal file
74
config/translations.php
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Source Language
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This is the language that will be used as the source language for
|
||||||
|
| the translations. This language will be used to import the
|
||||||
|
| translations from the files.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'source_language' => env('TRANSLATIONS_SOURCE_LANGUAGE', 'en'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Exclude Files
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The following files will be ignored during the import process.
|
||||||
|
| and those files will be ignored in every language.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'exclude_files' => [
|
||||||
|
//'validation.php', // Exclude default validation for example.
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Laravel Translations Path
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The default is `translations` but you can change it to whatever works best and
|
||||||
|
| doesn't conflict with the routing in your application.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'path' => env('TRANSLATIONS_PATH', 'translations'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Laravel Translations Custom Domain
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| You may change the domain where Laravel Translations should be active.
|
||||||
|
| If the domain is empty, all domains will be valid.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'domain' => env('TRANSLATIONS_DOMAIN', null),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Laravel Translations route middleware
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| These middleware will be assigned to every Laravel Translations route, giving you
|
||||||
|
| the chance to add your own middleware to this list or change any of
|
||||||
|
| the existing middleware. Or, you can simply stick with this list.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'middleware' => ['web'],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Database Connection
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The database connection that should be used to store the imported
|
||||||
|
| translations You may specify the connection as a string
|
||||||
|
| which is the name of the connection in the database.php file
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'database_connection' => env('TRANSLATIONS_DB_CONNECTION', null),
|
||||||
|
];
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('locale_managers', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('locale_managers');
|
||||||
|
}
|
||||||
|
};
|
||||||
1
lang/en.json
Normal file
1
lang/en.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
"Already Reported": "Уже сообщалось",
|
"Already Reported": "Уже сообщалось",
|
||||||
"Bad Gateway": "Плохой шлюз",
|
"Bad Gateway": "Плохой шлюз",
|
||||||
"Bad Request": "Некорректный запрос",
|
"Bad Request": "Некорректный запрос",
|
||||||
|
"Locale": "Языковой стандарт",
|
||||||
"Bandwidth Limit Exceeded": "Исчерпана пропускная ширина канала",
|
"Bandwidth Limit Exceeded": "Исчерпана пропускная ширина канала",
|
||||||
"Before proceeding, please check your email for a verification link.": "Прежде чем продолжить, проверьте свою электронную почту на наличие ссылки для подтверждения.",
|
"Before proceeding, please check your email for a verification link.": "Прежде чем продолжить, проверьте свою электронную почту на наличие ссылки для подтверждения.",
|
||||||
"click here to request another": "нажмите здесь для запроса другой ссылки",
|
"click here to request another": "нажмите здесь для запроса другой ссылки",
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"Accepted": "Kabul edildi",
|
"Accepted": "Kabul edildi",
|
||||||
"Address": "Salgysy",
|
"Address": "Salgysy",
|
||||||
"Ahal": "Ahal",
|
"Ahal": "Ahal",
|
||||||
|
"Locale": "Dil",
|
||||||
"All rights reserved.": "Rightshli hukuklar goralandyr.",
|
"All rights reserved.": "Rightshli hukuklar goralandyr.",
|
||||||
"Already Reported": "Eýýäm habar berildi",
|
"Already Reported": "Eýýäm habar berildi",
|
||||||
"Arkadag": "Arkadag",
|
"Arkadag": "Arkadag",
|
||||||
|
|||||||
1
public/vendor/translations/app.css
vendored
Normal file
1
public/vendor/translations/app.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/vendor/translations/app.js
vendored
Normal file
1
public/vendor/translations/app.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(()=>{var r,e={80:()=>{},662:()=>{}},o={};function n(r){var t=o[r];if(void 0!==t)return t.exports;var a=o[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.m=e,r=[],n.O=(e,o,t,a)=>{if(!o){var v=1/0;for(p=0;p<r.length;p++){for(var[o,t,a]=r[p],i=!0,f=0;f<o.length;f++)(!1&a||v>=a)&&Object.keys(n.O).every((r=>n.O[r](o[f])))?o.splice(f--,1):(i=!1,a<v&&(v=a));if(i){r.splice(p--,1);var l=t();void 0!==l&&(e=l)}}return e}a=a||0;for(var p=r.length;p>0&&r[p-1][2]>a;p--)r[p]=r[p-1];r[p]=[o,t,a]},n.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),(()=>{var r={260:0,143:0};n.O.j=e=>0===r[e];var e=(e,o)=>{var t,a,[v,i,f]=o,l=0;if(v.some((e=>0!==r[e]))){for(t in i)n.o(i,t)&&(n.m[t]=i[t]);if(f)var p=f(n)}for(e&&e(o);l<v.length;l++)a=v[l],n.o(r,a)&&r[a]&&r[a][0](),r[a]=0;return n.O(p)},o=self.webpackChunk=self.webpackChunk||[];o.forEach(e.bind(null,0)),o.push=e.bind(null,o.push.bind(o))})(),n.O(void 0,[143],(()=>n(80)));var t=n.O(void 0,[143],(()=>n(662)));t=n.O(t)})();
|
||||||
4
public/vendor/translations/mix-manifest.json
vendored
Normal file
4
public/vendor/translations/mix-manifest.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"/app.js": "/app.js",
|
||||||
|
"/app.css": "/app.css"
|
||||||
|
}
|
||||||
@@ -54,8 +54,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@if(isTurkmenIp(request()->ip()))
|
||||||
<script src="/assets/js/inputmask.min.js"></script>
|
<script src="/assets/js/inputmask.min.js"></script>
|
||||||
<script src="/assets/js/sweetalert2.js"></script>
|
<script src="/assets/js/sweetalert2.js"></script>
|
||||||
|
@else
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@latest"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/inputmask@latest/dist/inputmask.min.js"></script>
|
||||||
|
@endif
|
||||||
|
|
||||||
<script src="/assets/js/cookieconsent.js"></script>
|
<script src="/assets/js/cookieconsent.js"></script>
|
||||||
<script src="/assets/js/fn.js"></script>
|
<script src="/assets/js/fn.js"></script>
|
||||||
<script src="/assets/js/app.js"></script>
|
<script src="/assets/js/app.js"></script>
|
||||||
|
|||||||
Reference in New Issue
Block a user