feat: add jacobtims/filament-logger

This commit is contained in:
idevakk
2025-09-28 20:36:33 +05:30
parent 6d081e5ad6
commit 10ea8f3cb1
31 changed files with 992 additions and 75 deletions

View File

@@ -63,3 +63,6 @@ AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}" VITE_APP_NAME="${APP_NAME}"
ACTIVITY_LOGGER_ENABLED=true
ACTIVITY_LOGGER_TABLE_NAME=activity_log

View File

@@ -2,7 +2,7 @@
namespace App\Models; namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
@@ -12,7 +12,7 @@ use Laravel\Fortify\TwoFactorAuthenticatable;
class User extends Authenticatable class User extends Authenticatable
{ {
/** @use HasFactory<\Database\Factories\UserFactory> */ /** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable, TwoFactorAuthenticatable; use HasFactory, Notifiable, TwoFactorAuthenticatable, MustVerifyEmail;
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.

View File

@@ -18,6 +18,7 @@ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings; use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\StartSession; use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession; use Illuminate\View\Middleware\ShareErrorsFromSession;
use Jacobtims\FilamentLogger\FilamentLoggerPlugin;
class DashPanelProvider extends PanelProvider class DashPanelProvider extends PanelProvider
{ {
@@ -54,6 +55,9 @@ class DashPanelProvider extends PanelProvider
]) ])
->authMiddleware([ ->authMiddleware([
Authenticate::class, Authenticate::class,
])
->plugins([
FilamentLoggerPlugin::make(),
]); ]);
} }
} }

View File

@@ -8,11 +8,13 @@
"require": { "require": {
"php": "^8.2", "php": "^8.2",
"filament/filament": "~4.0", "filament/filament": "~4.0",
"jacobtims/filament-logger": "^1.0",
"laravel/fortify": "^1.30", "laravel/fortify": "^1.30",
"laravel/framework": "^12.0", "laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1", "laravel/tinker": "^2.10.1",
"livewire/flux": "^2.1.1", "livewire/flux": "^2.1.1",
"livewire/volt": "^1.7.0" "livewire/volt": "^1.7.0",
"spatie/laravel-activitylog": "^4.10"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.23", "fakerphp/faker": "^1.23",

305
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "6d54ea703c0b48d1ffe861ea7a1aaa9d", "content-hash": "00c3c015290da6a691c269b7088d3ec3",
"packages": [ "packages": [
{ {
"name": "anourvalar/eloquent-serialize", "name": "anourvalar/eloquent-serialize",
@@ -2077,6 +2077,86 @@
], ],
"time": "2025-08-22T14:27:06+00:00" "time": "2025-08-22T14:27:06+00:00"
}, },
{
"name": "jacobtims/filament-logger",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/Jacobtims/filament-logger.git",
"reference": "89797b630ac4895cb2eac56a4029b870f9022731"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Jacobtims/filament-logger/zipball/89797b630ac4895cb2eac56a4029b870f9022731",
"reference": "89797b630ac4895cb2eac56a4029b870f9022731",
"shasum": ""
},
"require": {
"filament/filament": "^4.0",
"illuminate/contracts": "^11.0 | ^12.0",
"laravel/pint": "^1.0",
"php": "^8.2",
"spatie/laravel-activitylog": "^4.5",
"spatie/laravel-package-tools": "^1.13.5"
},
"require-dev": {
"larastan/larastan": "^3.0",
"nunomaduro/collision": "^8.1",
"orchestra/testbench": "^9.0 | ^10.0",
"pestphp/pest": "^2.34 | ^3.7",
"pestphp/pest-plugin-laravel": "^2.3 | ^3.1",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^11.5.3",
"spatie/laravel-ray": "^1.26"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"FilamentLogger": "Jacobtims\\FilamentLogger\\Facades\\FilamentLogger"
},
"providers": [
"Jacobtims\\FilamentLogger\\FilamentLoggerServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Jacobtims\\FilamentLogger\\": "src",
"Jacobtims\\FilamentLogger\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ziyaan Hassan",
"email": "ziyaan2010@gmail.com",
"role": "Developer"
},
{
"name": "Jacobtims",
"email": "jacobtimmer04@gmail.com",
"role": "Developer"
}
],
"description": "Activity logger for filament",
"homepage": "https://github.com/jacobtims/filament-logger",
"keywords": [
"Jacobtims",
"Z3d0X",
"filament-logger",
"laravel"
],
"support": {
"source": "https://github.com/Jacobtims/filament-logger/tree/v1.0.0"
},
"time": "2025-08-20T07:24:12+00:00"
},
{ {
"name": "kirschbaum-development/eloquent-power-joins", "name": "kirschbaum-development/eloquent-power-joins",
"version": "4.2.8", "version": "4.2.8",
@@ -2425,6 +2505,72 @@
}, },
"time": "2025-09-23T15:33:04+00:00" "time": "2025-09-23T15:33:04+00:00"
}, },
{
"name": "laravel/pint",
"version": "v1.25.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.87.2",
"illuminate/view": "^11.46.0",
"larastan/larastan": "^3.7.1",
"laravel-zero/framework": "^11.45.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.1",
"pestphp/pest": "^2.36.0"
},
"bin": [
"builds/pint"
],
"type": "project",
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "An opinionated code formatter for PHP.",
"homepage": "https://laravel.com",
"keywords": [
"format",
"formatter",
"lint",
"linter",
"php"
],
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-09-19T02:57:12+00:00"
},
{ {
"name": "laravel/prompts", "name": "laravel/prompts",
"version": "v0.3.7", "version": "v0.3.7",
@@ -5522,6 +5668,97 @@
], ],
"time": "2024-05-17T09:06:10+00:00" "time": "2024-05-17T09:06:10+00:00"
}, },
{
"name": "spatie/laravel-activitylog",
"version": "4.10.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-activitylog.git",
"reference": "bb879775d487438ed9a99e64f09086b608990c10"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/bb879775d487438ed9a99e64f09086b608990c10",
"reference": "bb879775d487438ed9a99e64f09086b608990c10",
"shasum": ""
},
"require": {
"illuminate/config": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
"illuminate/database": "^8.69 || ^9.27 || ^10.0 || ^11.0 || ^12.0",
"illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.6.3"
},
"require-dev": {
"ext-json": "*",
"orchestra/testbench": "^6.23 || ^7.0 || ^8.0 || ^9.0 || ^10.0",
"pestphp/pest": "^1.20 || ^2.0 || ^3.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Spatie\\Activitylog\\ActivitylogServiceProvider"
]
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Spatie\\Activitylog\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Freek Van der Herten",
"email": "freek@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
},
{
"name": "Sebastian De Deyne",
"email": "sebastian@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
},
{
"name": "Tom Witkowski",
"email": "dev.gummibeer@gmail.com",
"homepage": "https://gummibeer.de",
"role": "Developer"
}
],
"description": "A very simple activity logger to monitor the users of your website or application",
"homepage": "https://github.com/spatie/activitylog",
"keywords": [
"activity",
"laravel",
"log",
"spatie",
"user"
],
"support": {
"issues": "https://github.com/spatie/laravel-activitylog/issues",
"source": "https://github.com/spatie/laravel-activitylog/tree/4.10.2"
},
"funding": [
{
"url": "https://spatie.be/open-source/support-us",
"type": "custom"
},
{
"url": "https://github.com/spatie",
"type": "github"
}
],
"time": "2025-06-15T06:59:49+00:00"
},
{ {
"name": "spatie/laravel-package-tools", "name": "spatie/laravel-package-tools",
"version": "1.92.7", "version": "1.92.7",
@@ -9066,72 +9303,6 @@
}, },
"time": "2025-06-05T13:55:57+00:00" "time": "2025-06-05T13:55:57+00:00"
}, },
{
"name": "laravel/pint",
"version": "v1.25.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.87.2",
"illuminate/view": "^11.46.0",
"larastan/larastan": "^3.7.1",
"laravel-zero/framework": "^11.45.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.1",
"pestphp/pest": "^2.36.0"
},
"bin": [
"builds/pint"
],
"type": "project",
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "An opinionated code formatter for PHP.",
"homepage": "https://laravel.com",
"keywords": [
"format",
"formatter",
"lint",
"linter",
"php"
],
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-09-19T02:57:12+00:00"
},
{ {
"name": "laravel/sail", "name": "laravel/sail",
"version": "v1.46.0", "version": "v1.46.0",

52
config/activitylog.php Normal file
View File

@@ -0,0 +1,52 @@
<?php
return [
/*
* If set to false, no activities will be saved to the database.
*/
'enabled' => env('ACTIVITY_LOGGER_ENABLED', true),
/*
* When the clean-command is executed, all recording activities older than
* the number of days specified here will be deleted.
*/
'delete_records_older_than_days' => 365,
/*
* If no log name is passed to the activity() helper
* we use this default log name.
*/
'default_log_name' => 'default',
/*
* You can specify an auth driver here that gets user models.
* If this is null we'll use the current Laravel auth driver.
*/
'default_auth_driver' => null,
/*
* If set to true, the subject returns soft deleted models.
*/
'subject_returns_soft_deleted_models' => false,
/*
* This model will be used to log activity.
* It should implement the Spatie\Activitylog\Contracts\Activity interface
* and extend Illuminate\Database\Eloquent\Model.
*/
'activity_model' => \Spatie\Activitylog\Models\Activity::class,
/*
* This is the name of the table that will be created by the migration and
* used by the Activity model shipped with this package.
*/
'table_name' => env('ACTIVITY_LOGGER_TABLE_NAME', 'activity_log'),
/*
* This is the database connection that will be used by the migration and
* the Activity model shipped with this package. In case it's not set
* Laravel's database.default will be used instead.
*/
'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION'),
];

View File

@@ -0,0 +1,54 @@
<?php
return [
'datetime_format' => 'd/m/Y H:i:s',
'date_format' => 'd/m/Y',
'activity_resource' => \Jacobtims\FilamentLogger\Resources\ActivityResource::class,
'scoped_to_tenant' => true,
'navigation_sort' => null,
'resources' => [
'enabled' => true,
'log_name' => 'Resource',
'logger' => \Jacobtims\FilamentLogger\Loggers\ResourceLogger::class,
'color' => 'success',
'exclude' => [
// App\Filament\Resources\UserResource::class,
],
'cluster' => null,
'navigation_group' => 'Settings',
],
'access' => [
'enabled' => true,
'logger' => \Jacobtims\FilamentLogger\Loggers\AccessLogger::class,
'color' => 'danger',
'log_name' => 'Access',
],
'notifications' => [
'enabled' => true,
'logger' => \Jacobtims\FilamentLogger\Loggers\NotificationLogger::class,
'color' => null,
'log_name' => 'Notification',
],
'models' => [
'enabled' => true,
'log_name' => 'Model',
'color' => 'warning',
'logger' => \Jacobtims\FilamentLogger\Loggers\ModelLogger::class,
'register' => [
// App\Models\User::class,
],
],
'custom' => [
// [
// 'log_name' => 'Custom',
// 'color' => 'primary',
// ]
],
];

View File

@@ -0,0 +1,27 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('log_name')->nullable();
$table->text('description');
$table->nullableMorphs('subject', 'subject');
$table->nullableMorphs('causer', 'causer');
$table->json('properties')->nullable();
$table->timestamps();
$table->index('log_name');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));
}
}

View File

@@ -0,0 +1,22 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddEventColumnToActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->string('event')->nullable()->after('subject_type');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->dropColumn('event');
});
}
}

View File

@@ -0,0 +1,22 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddBatchUuidColumnToActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->uuid('batch_uuid')->nullable()->after('properties');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->dropColumn('batch_uuid');
});
}
}

View File

@@ -2,12 +2,12 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Models\User; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder
{ {
use WithoutModelEvents;
/** /**
* Seed the application's database. * Seed the application's database.
*/ */
@@ -15,9 +15,8 @@ class DatabaseSeeder extends Seeder
{ {
// User::factory(10)->create(); // User::factory(10)->create();
User::factory()->create([ $this->call([
'name' => 'Test User', FilamentAdminSeeder::class,
'email' => 'test@example.com',
]); ]);
} }
} }

View File

@@ -0,0 +1,24 @@
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class FilamentAdminSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
User::factory()->create([
'name' => 'Admin',
'email' => 'admin@example.com',
'password' => Hash::make('password'),
'email_verified_at' => now(),
]);
}
}

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'إعدادات',
'nav.log.label' => 'سجل النشاطات',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'سجل النشاط',
'resource.label.logs' => 'سجل النشاطات',
'resource.label.user' => 'المستخدم',
'resource.label.subject' => 'الموضوع',
'resource.label.subject_type' => 'نوع الموضوع',
'resource.label.description' => 'الوصف',
'resource.label.type' => 'النوع',
'resource.label.event' => 'الحدث',
'resource.label.logged_at' => 'مسجل في',
'resource.label.properties' => 'خصائص',
'resource.label.old' => 'قديم',
'resource.label.new' => 'جديد',
'resource.label.old_value' => 'قيمة قديمة',
'resource.label.new_value' => 'قيمة جديدة',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Nastavení',
'nav.log.label' => 'Záznam aktivit',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Záznam aktivit',
'resource.label.logs' => 'Záznamy aktivit',
'resource.label.user' => 'Uživatel',
'resource.label.subject' => 'Subjekt',
'resource.label.subject_type' => 'Typ subjektu',
'resource.label.description' => 'Popis',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Událost',
'resource.label.logged_at' => 'Zaznamenáno v',
'resource.label.properties' => 'Vlastnosti',
'resource.label.old' => 'Původní',
'resource.label.new' => 'Nové',
'resource.label.old_value' => 'Původní hodnota',
'resource.label.new_value' => 'Nová hodnota',
'resource.label.properties_hint' => 'Může být klíč nebo hodnota',
'resource.label.old_attributes' => 'Původní atribut nebo hodnota: ',
'resource.label.new_attributes' => 'Nový atribut nebo hodnota: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Activity Log',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Aktivitätslog',
'resource.label.logs' => 'Aktivitätslog',
'resource.label.user' => 'Nutzer',
'resource.label.subject' => 'Thema',
'resource.label.subject_type' => 'Thematyp',
'resource.label.description' => 'Beschreibung',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Event',
'resource.label.logged_at' => 'Protokolliert am',
'resource.label.properties' => 'Eigenschaften',
'resource.label.old' => 'Alt',
'resource.label.new' => 'Neu',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Activity Log',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Activity log',
'resource.label.logs' => 'Activity logs',
'resource.label.user' => 'User',
'resource.label.subject' => 'Subject',
'resource.label.subject_type' => 'Subject type',
'resource.label.description' => 'Description',
'resource.label.type' => 'Type',
'resource.label.event' => 'Event',
'resource.label.logged_at' => 'Logged At',
'resource.label.properties' => 'Properties',
'resource.label.old' => 'Old',
'resource.label.new' => 'New',
'resource.label.old_value' => 'Old Value',
'resource.label.new_value' => 'New Value',
'resource.label.properties_hint' => 'Can be key or value',
'resource.label.old_attributes' => 'Old Attribute or Value: ',
'resource.label.new_attributes' => 'New Attribute or Value: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Bitácora de actividad',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Registro de actividad',
'resource.label.logs' => 'Registros de actividad',
'resource.label.user' => 'Usuario',
'resource.label.subject' => 'Asunto',
'resource.label.subject_type' => 'Tipo de asunto',
'resource.label.description' => 'Descripción',
'resource.label.type' => 'Tipo',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrado el',
'resource.label.properties' => 'Propiedades',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'تنظیمات',
'nav.log.label' => 'لاگ فعالیت ها',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'لاگ فعالیت',
'resource.label.logs' => 'لاگ فعالیت ها',
'resource.label.user' => 'کاربر',
'resource.label.subject' => 'موضوع',
'resource.label.subject_type' => 'نوع موضوع',
'resource.label.description' => 'شرح',
'resource.label.type' => 'نوع',
'resource.label.event' => 'رویداد',
'resource.label.logged_at' => 'لاگ شده در',
'resource.label.properties' => 'خصوصیات',
'resource.label.old' => 'قدیمی',
'resource.label.new' => 'جدید',
'resource.label.old_value' => 'مقدار قدیمی',
'resource.label.new_value' => 'مقدار جدید',
'resource.label.properties_hint' => 'می‌تواند کلید یا مقدار باشد',
'resource.label.old_attributes' => 'کلید یا مقدار قدیمی: ',
'resource.label.new_attributes' => 'کلید یا مقدار جدید: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Paramètres',
'nav.log.label' => 'Journal d\'activités',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Journal d\'activité',
'resource.label.logs' => 'Journal d\'activités',
'resource.label.user' => 'Utilisateur',
'resource.label.subject' => 'Sujet',
'resource.label.subject_type' => 'Type de sujet',
'resource.label.description' => 'Description',
'resource.label.type' => 'Type',
'resource.label.event' => 'Événement',
'resource.label.logged_at' => 'Enregistré à',
'resource.label.properties' => 'Propriétés',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Կարգավորումներ',
'nav.log.label' => 'Գործողությունների մատյան',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Գործողությունների մատյան',
'resource.label.logs' => 'Գործողությունների մատյաններ',
'resource.label.user' => 'Օգտագործող',
'resource.label.subject' => 'Սուբյեկտ',
'resource.label.subject_type' => 'Սուբյեկտի տեսակ',
'resource.label.description' => 'Նկարագրություն',
'resource.label.type' => 'Տեսակ',
'resource.label.event' => 'Իրադարձություն',
'resource.label.logged_at' => 'Գրանցման ամսաթիվ',
'resource.label.properties' => 'Հատկություններ',
'resource.label.old' => 'Հին',
'resource.label.new' => 'Նոր',
'resource.label.old_value' => 'Հին արժեք',
'resource.label.new_value' => 'Նոր արժեք',
'resource.label.properties_hint' => 'Կարող է լինել բանալի կամ արժեք',
'resource.label.old_attributes' => 'Հին հատկանիշ կամ արժեք՝',
'resource.label.new_attributes' => 'Նոր հատկանիշ կամ արժեք՝',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Pengaturan',
'nav.log.label' => 'Catatan Aktivitas',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Catatan aktivitas',
'resource.label.logs' => 'Catatan aktivitas',
'resource.label.user' => 'Pengguna',
'resource.label.subject' => 'Subjek',
'resource.label.subject_type' => 'Tipe Subjek',
'resource.label.description' => 'Deskripsi',
'resource.label.type' => 'Jenis',
'resource.label.event' => 'Kegiatan',
'resource.label.logged_at' => 'Tercatat pada',
'resource.label.properties' => 'Properti',
'resource.label.old' => 'Lama',
'resource.label.new' => 'Baru',
'resource.label.old_value' => 'Nilai Lama',
'resource.label.new_value' => 'Nilai Baru',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Impostazioni',
'nav.log.label' => 'Registro attività',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Log',
'resource.label.logs' => 'Log',
'resource.label.user' => 'User',
'resource.label.subject' => 'Soggetto',
'resource.label.subject_type' => 'Tipo di soggetto',
'resource.label.description' => 'Descrizione',
'resource.label.type' => 'Tipologia',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrato Il',
'resource.label.properties' => 'Proprietà',
'resource.label.old' => 'Prima',
'resource.label.new' => 'Ora',
'resource.label.old_value' => 'Valore Precedente',
'resource.label.new_value' => 'Nuovo Valore',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'პარამეტრები',
'nav.log.label' => 'საქმიანობის ჟურნალი',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'საქმიანობის ჟურნალი',
'resource.label.logs' => 'საქმიანობის ჟურნალი',
'resource.label.user' => 'მომხმარებელი',
'resource.label.subject' => 'საგანი',
'resource.label.subject_type' => 'საგნის ტიპი',
'resource.label.description' => 'აღწერილობა',
'resource.label.type' => 'ტიპი',
'resource.label.event' => 'ქმედება',
'resource.label.logged_at' => 'ავტორიზირებული როგორც',
'resource.label.properties' => 'Თვისებები',
'resource.label.old' => 'ძველი',
'resource.label.new' => 'ახალი',
'resource.label.old_value' => 'ძველი მნიშვნელობა',
'resource.label.new_value' => 'ახალი მნიშვნელობა',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => '설정',
'nav.log.label' => '활동 로그',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => '활동 로그',
'resource.label.logs' => '활동 로그',
'resource.label.user' => '사용자',
'resource.label.subject' => '주제',
'resource.label.subject_type' => '주제 유형',
'resource.label.description' => '설명',
'resource.label.type' => '유형',
'resource.label.event' => '이벤트',
'resource.label.logged_at' => '기록된 시간',
'resource.label.properties' => '속성',
'resource.label.old' => '이전',
'resource.label.new' => '새로운',
'resource.label.old_value' => '이전 값',
'resource.label.new_value' => '새로운 값',
'resource.label.properties_hint' => '키 또는 값이 될 수 있습니다',
'resource.label.old_attributes' => '이전 속성 또는 값: ',
'resource.label.new_attributes' => '새로운 속성 또는 값: ',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Instellingen',
'nav.log.label' => 'Activiteitenlog',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Activiteiten log',
'resource.label.logs' => 'Activiteiten logs',
'resource.label.user' => 'Gebruiker',
'resource.label.subject' => 'Onderwerp',
'resource.label.subject_type' => 'Onderwerp type',
'resource.label.description' => 'Beschrijving',
'resource.label.type' => 'Type',
'resource.label.event' => 'Gebeurtenis',
'resource.label.logged_at' => 'Gelogd op',
'resource.label.properties' => 'Eigenschappen',
'resource.label.old' => 'Oud',
'resource.label.new' => 'Nieuw',
'resource.label.old_value' => 'Oude waarde',
'resource.label.new_value' => 'Nieuwe waarde',
'resource.label.properties_hint' => 'Kan sleutel of waarde zijn',
'resource.label.old_attributes' => 'Oude attribuut of waarde: ',
'resource.label.new_attributes' => 'Nieuwe attribuut of waarde: ',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Configurações',
'nav.log.label' => 'Registro de atividade',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Registro de atividade',
'resource.label.logs' => 'Registros de atividade',
'resource.label.user' => 'Usuário',
'resource.label.subject' => 'Assunto',
'resource.label.subject_type' => 'Tipo de assunto',
'resource.label.description' => 'Descrição',
'resource.label.type' => 'Tipo',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrado em',
'resource.label.properties' => 'Propriedades',
'resource.label.old' => 'Antigo',
'resource.label.new' => 'Novo',
'resource.label.old_value' => 'Valor antigo',
'resource.label.new_value' => 'Novo valor',
'resource.label.properties_hint' => 'Pode ser uma chave ou valor',
'resource.label.old_attributes' => 'Atributo ou Valor Antigo: ',
'resource.label.new_attributes' => 'Atributo ou Valor Novo: ',
];

View File

@@ -0,0 +1,24 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Настройки',
'nav.log.label' => 'Лог действий',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Лога действий',
'resource.label.logs' => 'Журнал активности',
'resource.label.user' => 'Юзер',
'resource.label.subject' => 'Объект',
'resource.label.subject_type' => 'Тип объекта',
'resource.label.description' => 'Описание',
'resource.label.type' => 'Тип',
'resource.label.event' => 'Событие',
'resource.label.logged_at' => 'Время',
'resource.label.properties' => 'Свойства',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigácia & Zdroje
|--------------------------------------------------------------------------
*/
'nav.group' => 'Nastavenia',
'nav.log.label' => 'Záznam aktivity',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Záznam aktivity',
'resource.label.logs' => 'Záznamy aktivity',
'resource.label.user' => 'Používateľ',
'resource.label.subject' => 'Predmet',
'resource.label.subject_type' => 'Typ predmetu',
'resource.label.description' => 'Popis',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Udalosť',
'resource.label.logged_at' => 'Zaznamenané',
'resource.label.properties' => 'Vlastnosti',
'resource.label.old' => 'Starý',
'resource.label.new' => 'Nový',
'resource.label.old_value' => 'Stará hodnota',
'resource.label.new_value' => 'Nová hodnota',
'resource.label.properties_hint' => 'Môže byť kľúč alebo hodnota',
'resource.label.old_attributes' => 'Starý atribút alebo hodnota: ',
'resource.label.new_attributes' => 'Nový atribút alebo hodnota: ',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Ayarlar',
'nav.log.label' => 'Aktivite Günlüğü',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Aktivite Günlüğü',
'resource.label.logs' => 'Aktivite Günlükleri',
'resource.label.user' => 'Kullanıcı',
'resource.label.subject' => 'Nesne',
'resource.label.subject_type' => 'Nesne Tipi',
'resource.label.description' => 'Açıklama',
'resource.label.type' => 'Tip',
'resource.label.event' => 'Olay',
'resource.label.logged_at' => 'Kayıt Zamanı',
'resource.label.properties' => 'Değerler',
'resource.label.old' => 'Eski',
'resource.label.new' => 'Yeni',
'resource.label.old_value' => 'Eski Değerler',
'resource.label.new_value' => 'Yeni Değerler',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Налаштування',
'nav.log.label' => 'Лог дій',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Лога дій',
'resource.label.logs' => 'Журнал активності',
'resource.label.user' => 'Юзер',
'resource.label.subject' => 'Об\'єкт',
'resource.label.subject_type' => 'Тип об\'єкта',
'resource.label.description' => 'Опис',
'resource.label.type' => 'Тип',
'resource.label.event' => 'Подія',
'resource.label.logged_at' => 'Час',
'resource.label.properties' => 'Властивості',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Cài đặt',
'nav.log.label' => 'Nhật ký hoạt động',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Nhật ký hoạt động',
'resource.label.logs' => 'Nhật ký hoạt động',
'resource.label.user' => 'Người dùng',
'resource.label.subject' => 'Chủ đề',
'resource.label.subject_type' => 'Loại chủ đề',
'resource.label.description' => 'Mô tả',
'resource.label.type' => 'Kiểu',
'resource.label.event' => 'Sự kiện',
'resource.label.logged_at' => 'Lúc',
'resource.label.properties' => 'Thuộc tính',
];