feat: add i18n support for Vietnamese and English
Some checks failed
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
Tests / PHP 8.5 (push) Has been cancelled

This commit is contained in:
2026-05-04 10:40:39 +00:00
parent 3a8db5cae6
commit 8c6b71cb8a
64 changed files with 4652 additions and 254 deletions

View File

@@ -22,14 +22,18 @@ class ListUsers extends ListRecords
public function getTabs(): array
{
return [
'all' => Tab::make(),
'all' => Tab::make()
->label(__('app.tab_all')),
'admin' => Tab::make()
->label('Admin')
->modifyQueryUsing(fn (Builder $query) => $query->where('role', 'admin'))
->badge(fn () => static::getResource()::getModel()::where('role', 'admin')->count()),
'manager' => Tab::make()
->label('Manager')
->modifyQueryUsing(fn (Builder $query) => $query->where('role', 'manager'))
->badge(fn () => static::getResource()::getModel()::where('role', 'manager')->count()),
'staff' => Tab::make()
->label('Staff')
->modifyQueryUsing(fn (Builder $query) => $query->where('role', 'staff'))
->badge(fn () => static::getResource()::getModel()::where('role', 'staff')->count()),
];

View File

@@ -14,16 +14,19 @@ class UserForm
return $schema
->components([
TextInput::make('name')
->label(__('app.name'))
->required()
->maxLength(255),
TextInput::make('email')
->label(__('app.email'))
->email()
->required()
->maxLength(255)
->unique(ignoreRecord: true),
TextInput::make('password')
->label(__('app.password'))
->password()
->revealable()
->required(fn (string $operation): bool => $operation === 'create')
@@ -33,7 +36,7 @@ class UserForm
->columnSpanFull(),
Select::make('role')
->label('Role')
->label(__('app.role'))
->options(Role::pluck('name', 'name')->toArray())
->required()
->searchable(),

View File

@@ -20,15 +20,20 @@ class UserResource extends Resource
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedUsers;
protected static ?string $pluralLabel = 'Users';
protected static ?string $pluralLabel = 'app.resource_users';
protected static ?int $navigationSort = 5;
protected static ?string $recordTitleAttribute = 'name';
public static function getPluralLabel(): ?string
{
return __('app.resource_users');
}
public static function getNavigationGroup(): ?string
{
return 'Management';
return __('app.nav_management');
}
public static function form(Schema $schema): Schema