From e969bb9c7d23bb5809c45d019e6317224f720d36 Mon Sep 17 00:00:00 2001 From: Vasyka Date: Thu, 16 Jul 2026 07:41:35 +0000 Subject: [PATCH] i18n: wrap all formatStateUsing(fn(\$s)=>X::CONST[\$s]??\$s) with __() (21 files) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previous sed pass only matched \$state; missed \$s and other arg-name variants. This time the regex is arg-name-agnostic and touches 21 files across Filament resources & relation managers. Also wraps two special cases: UserResource role-labels lookup and LaborResource pricing_mode ternary ('Fix' | 'Pe oră'). +27 human translations for the enum values that were still identity fallback: WorkOrderWork.STATUSES (De făcut), Purchase.STATUSES, OnlineOrder.STATUSES, Call.DIRECTIONS/STATUSES, BodyshopJob.TYPES/ STATUSES, TireSet.SEASONS, MessageTemplate.CHANNELS, DamagePoint.SEVERITIES, ServiceTemplateItem.KINDS. All 306 tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Resources/SubscriptionResource.php | 4 +- .../Central/Widgets/PendingPayments.php | 2 +- .../Tenant/Resources/BodyshopJobResource.php | 4 +- .../DamagePointsRelationManager.php | 2 +- .../Tenant/Resources/CallResource.php | 4 +- .../Tenant/Resources/ExpenseResource.php | 4 +- .../Tenant/Resources/LaborResource.php | 2 +- .../Tenant/Resources/MarkupRuleResource.php | 2 +- .../Resources/MessageTemplateResource.php | 2 +- .../Tenant/Resources/OnlineOrderResource.php | 4 +- .../Tenant/Resources/PaymentResource.php | 2 +- .../Resources/PayrollAdjustmentResource.php | 2 +- .../Tenant/Resources/PurchaseResource.php | 2 +- .../RelationManagers/ItemsRelationManager.php | 2 +- .../OrdersRelationManager.php | 2 +- .../Resources/SubcontractJobResource.php | 2 +- .../Tenant/Resources/TireSetResource.php | 2 +- .../StorageRelationManager.php | 2 +- .../Tenant/Resources/UserResource.php | 2 +- .../RelationManagers/PartsRelationManager.php | 2 +- .../PaymentsRelationManager.php | 2 +- .../SubcontractJobsRelationManager.php | 2 +- .../RelationManagers/WorksRelationManager.php | 2 +- lang/en.json | 25 +++++++++++-- lang/ru.json | 37 ++++++++++++++----- 25 files changed, 78 insertions(+), 40 deletions(-) diff --git a/app/Filament/Central/Resources/SubscriptionResource.php b/app/Filament/Central/Resources/SubscriptionResource.php index 58912fe..7f4dcb1 100644 --- a/app/Filament/Central/Resources/SubscriptionResource.php +++ b/app/Filament/Central/Resources/SubscriptionResource.php @@ -131,7 +131,7 @@ class SubscriptionResource extends Resource ->url(fn ($record) => \App\Filament\Central\Resources\CompanyResource::getUrl('view', ['record' => $record->company_id])), Tables\Columns\TextColumn::make('plan.name')->label(__('Plan'))->placeholder('—'), Tables\Columns\TextColumn::make('period') - ->formatStateUsing(fn ($s) => Subscription::PERIODS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Subscription::PERIODS[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('amount') ->money(fn ($record) => $record->currency) @@ -139,7 +139,7 @@ class SubscriptionResource extends Resource ->weight('bold'), Tables\Columns\TextColumn::make('status') ->badge() - ->formatStateUsing(fn ($s) => Subscription::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Subscription::STATUSES[$s] ?? $s)) ->color(fn ($s) => match ($s) { 'paid' => 'success', 'overdue' => 'danger', diff --git a/app/Filament/Central/Widgets/PendingPayments.php b/app/Filament/Central/Widgets/PendingPayments.php index b6a3b3b..d594ceb 100644 --- a/app/Filament/Central/Widgets/PendingPayments.php +++ b/app/Filament/Central/Widgets/PendingPayments.php @@ -36,7 +36,7 @@ class PendingPayments extends BaseWidget Tables\Columns\TextColumn::make('status') ->badge() ->color(fn ($s) => $s === 'overdue' ? 'danger' : 'warning') - ->formatStateUsing(fn ($s) => Subscription::STATUSES[$s] ?? $s), + ->formatStateUsing(fn ($s) => __(Subscription::STATUSES[$s] ?? $s)), Tables\Columns\TextColumn::make('due_at') ->label(__('Scadent')) ->dateTime() diff --git a/app/Filament/Tenant/Resources/BodyshopJobResource.php b/app/Filament/Tenant/Resources/BodyshopJobResource.php index d793122..eeacda6 100644 --- a/app/Filament/Tenant/Resources/BodyshopJobResource.php +++ b/app/Filament/Tenant/Resources/BodyshopJobResource.php @@ -99,13 +99,13 @@ class BodyshopJobResource extends Resource Tables\Columns\TextColumn::make('client.name')->label(__('Client'))->searchable()->placeholder('—'), Tables\Columns\TextColumn::make('vehicle.plate')->label(__('Auto'))->placeholder('—'), Tables\Columns\TextColumn::make('type') - ->formatStateUsing(fn ($s) => BodyshopJob::TYPES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(BodyshopJob::TYPES[$s] ?? $s)) ->badge()->color('info'), Tables\Columns\IconColumn::make('is_insurance')->label(__('Asig.'))->boolean()->toggleable(), Tables\Columns\TextColumn::make('damage_points_count')->counts('damagePoints')->label(__('Daune'))->alignRight(), Tables\Columns\TextColumn::make('approved_amount')->label(__('Aprobat'))->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => BodyshopJob::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(BodyshopJob::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'gray' => ['estimate'], diff --git a/app/Filament/Tenant/Resources/BodyshopJobResource/RelationManagers/DamagePointsRelationManager.php b/app/Filament/Tenant/Resources/BodyshopJobResource/RelationManagers/DamagePointsRelationManager.php index 6577978..a0330c2 100644 --- a/app/Filament/Tenant/Resources/BodyshopJobResource/RelationManagers/DamagePointsRelationManager.php +++ b/app/Filament/Tenant/Resources/BodyshopJobResource/RelationManagers/DamagePointsRelationManager.php @@ -51,7 +51,7 @@ class DamagePointsRelationManager extends RelationManager Tables\Columns\TextColumn::make('kind')->label(__('Tip')), Tables\Columns\TextColumn::make('severity') ->label(__('Gravitate')) - ->formatStateUsing(fn ($s) => DamagePoint::SEVERITIES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(DamagePoint::SEVERITIES[$s] ?? $s)) ->badge() ->colors(['gray' => ['minor'], 'warning' => ['medium'], 'danger' => ['severe']]), Tables\Columns\TextColumn::make('notes')->limit(40)->placeholder('—'), diff --git a/app/Filament/Tenant/Resources/CallResource.php b/app/Filament/Tenant/Resources/CallResource.php index 4ffe5b3..d1f4202 100644 --- a/app/Filament/Tenant/Resources/CallResource.php +++ b/app/Filament/Tenant/Resources/CallResource.php @@ -77,7 +77,7 @@ class CallResource extends Resource ->columns([ Tables\Columns\TextColumn::make('called_at')->label(__('Data'))->dateTime('d.m.Y H:i')->sortable(), Tables\Columns\TextColumn::make('direction') - ->formatStateUsing(fn ($s) => Call::DIRECTIONS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Call::DIRECTIONS[$s] ?? $s)) ->badge() ->colors([ 'success' => ['incoming'], @@ -88,7 +88,7 @@ class CallResource extends Resource Tables\Columns\TextColumn::make('client.name')->label(__('Client'))->placeholder('—'), Tables\Columns\TextColumn::make('duration_formatted')->label(__('Durată'))->state(fn (Call $r) => $r->duration_formatted), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => Call::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Call::STATUSES[$s] ?? $s)) ->badge(), ]) ->filters([ diff --git a/app/Filament/Tenant/Resources/ExpenseResource.php b/app/Filament/Tenant/Resources/ExpenseResource.php index 0733ea6..68231dd 100644 --- a/app/Filament/Tenant/Resources/ExpenseResource.php +++ b/app/Filament/Tenant/Resources/ExpenseResource.php @@ -88,12 +88,12 @@ class ExpenseResource extends Resource ->columns([ Tables\Columns\TextColumn::make('paid_at')->label(__('Data'))->date('d.m.Y')->sortable(), Tables\Columns\TextColumn::make('category') - ->formatStateUsing(fn ($s) => Expense::CATEGORIES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Expense::CATEGORIES[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('name')->searchable()->wrap(), Tables\Columns\TextColumn::make('supplier.name')->label(__('Furnizor'))->placeholder('—')->toggleable(), Tables\Columns\TextColumn::make('method') - ->formatStateUsing(fn ($s) => Expense::METHODS[$s] ?? $s), + ->formatStateUsing(fn ($s) => __(Expense::METHODS[$s] ?? $s)), Tables\Columns\TextColumn::make('amount')->money('MDL')->alignRight()->sortable() ->color('danger') ->summarize(Tables\Columns\Summarizers\Sum::make()->money('MDL')->label(__('Total'))), diff --git a/app/Filament/Tenant/Resources/LaborResource.php b/app/Filament/Tenant/Resources/LaborResource.php index d945d75..9fc8f48 100644 --- a/app/Filament/Tenant/Resources/LaborResource.php +++ b/app/Filament/Tenant/Resources/LaborResource.php @@ -84,7 +84,7 @@ class LaborResource extends Resource Tables\Columns\TextColumn::make('name_ro')->label(__('Manoperă'))->searchable()->sortable(), Tables\Columns\TextColumn::make('pricing_mode') ->label(__('Tarifare')) - ->formatStateUsing(fn ($s) => $s === 'fixed' ? 'Fix' : 'Pe oră') + ->formatStateUsing(fn ($s) => $s === 'fixed' ? __('Fix') : __('Pe oră')) ->badge() ->color(fn ($s) => $s === 'fixed' ? 'info' : 'gray'), Tables\Columns\TextColumn::make('hours')->label(__('Ore'))->numeric(decimalPlaces: 2)->alignRight(), diff --git a/app/Filament/Tenant/Resources/MarkupRuleResource.php b/app/Filament/Tenant/Resources/MarkupRuleResource.php index ae2b84c..24249ae 100644 --- a/app/Filament/Tenant/Resources/MarkupRuleResource.php +++ b/app/Filament/Tenant/Resources/MarkupRuleResource.php @@ -97,7 +97,7 @@ class MarkupRuleResource extends Resource ->columns([ Tables\Columns\TextColumn::make('priority')->label('#')->sortable(), Tables\Columns\TextColumn::make('type') - ->formatStateUsing(fn ($s) => MarkupRule::TYPES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(MarkupRule::TYPES[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('key')->label(__('Cheie'))->placeholder('—'), Tables\Columns\TextColumn::make('range_from')->label(__('De la'))->placeholder('—'), diff --git a/app/Filament/Tenant/Resources/MessageTemplateResource.php b/app/Filament/Tenant/Resources/MessageTemplateResource.php index bd0f9f6..9049958 100644 --- a/app/Filament/Tenant/Resources/MessageTemplateResource.php +++ b/app/Filament/Tenant/Resources/MessageTemplateResource.php @@ -76,7 +76,7 @@ class MessageTemplateResource extends Resource ->columns([ Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('channel') - ->formatStateUsing(fn ($s) => MessageTemplate::CHANNELS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(MessageTemplate::CHANNELS[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('body')->label(__('Preview'))->limit(60), Tables\Columns\IconColumn::make('is_active')->boolean(), diff --git a/app/Filament/Tenant/Resources/OnlineOrderResource.php b/app/Filament/Tenant/Resources/OnlineOrderResource.php index 6362ed2..12f42e2 100644 --- a/app/Filament/Tenant/Resources/OnlineOrderResource.php +++ b/app/Filament/Tenant/Resources/OnlineOrderResource.php @@ -86,9 +86,9 @@ class OnlineOrderResource extends Resource Tables\Columns\TextColumn::make('customer_phone')->label(__('Telefon'))->copyable(), Tables\Columns\TextColumn::make('delivery_method') ->label(__('Livrare')) - ->formatStateUsing(fn ($s) => OnlineOrder::DELIVERY[$s] ?? $s), + ->formatStateUsing(fn ($s) => __(OnlineOrder::DELIVERY[$s] ?? $s)), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => OnlineOrder::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(OnlineOrder::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'warning' => ['new'], diff --git a/app/Filament/Tenant/Resources/PaymentResource.php b/app/Filament/Tenant/Resources/PaymentResource.php index 40d265f..21cbc9b 100644 --- a/app/Filament/Tenant/Resources/PaymentResource.php +++ b/app/Filament/Tenant/Resources/PaymentResource.php @@ -98,7 +98,7 @@ class PaymentResource extends Resource Tables\Columns\TextColumn::make('client.name')->label(__('Client'))->searchable(), Tables\Columns\TextColumn::make('workOrder.number')->label(__('Fișă'))->placeholder('—'), Tables\Columns\TextColumn::make('method') - ->formatStateUsing(fn ($s) => Payment::METHODS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Payment::METHODS[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('amount')->money('MDL')->alignRight()->sortable()->summarize(Tables\Columns\Summarizers\Sum::make()->money('MDL')->label(__('Total'))), Tables\Columns\TextColumn::make('reference')->label(__('Ref.'))->placeholder('—')->toggleable(), diff --git a/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php b/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php index b4943d3..0ba28c7 100644 --- a/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php +++ b/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php @@ -89,7 +89,7 @@ class PayrollAdjustmentResource extends Resource Tables\Columns\TextColumn::make('date')->date('d.m.Y')->sortable(), Tables\Columns\TextColumn::make('user.name')->label(__('Utilizator'))->searchable(), Tables\Columns\TextColumn::make('type') - ->formatStateUsing(fn ($s) => PayrollAdjustment::TYPES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(PayrollAdjustment::TYPES[$s] ?? $s)) ->badge() ->colors([ 'success' => ['bonus'], diff --git a/app/Filament/Tenant/Resources/PurchaseResource.php b/app/Filament/Tenant/Resources/PurchaseResource.php index 03cfaf0..6805307 100644 --- a/app/Filament/Tenant/Resources/PurchaseResource.php +++ b/app/Filament/Tenant/Resources/PurchaseResource.php @@ -88,7 +88,7 @@ class PurchaseResource extends Resource Tables\Columns\TextColumn::make('expected_at')->label(__('Așteptată'))->date('d.m.Y')->placeholder('—'), Tables\Columns\TextColumn::make('received_at')->label(__('Recepționată'))->date('d.m.Y')->placeholder('—'), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => Purchase::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Purchase::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'gray' => ['draft'], diff --git a/app/Filament/Tenant/Resources/ServiceTemplateResource/RelationManagers/ItemsRelationManager.php b/app/Filament/Tenant/Resources/ServiceTemplateResource/RelationManagers/ItemsRelationManager.php index cbb720a..ddfedf0 100644 --- a/app/Filament/Tenant/Resources/ServiceTemplateResource/RelationManagers/ItemsRelationManager.php +++ b/app/Filament/Tenant/Resources/ServiceTemplateResource/RelationManagers/ItemsRelationManager.php @@ -71,7 +71,7 @@ class ItemsRelationManager extends RelationManager ->columns([ Tables\Columns\TextColumn::make('kind') ->label(__('Tip')) - ->formatStateUsing(fn ($s) => ServiceTemplateItem::KINDS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(ServiceTemplateItem::KINDS[$s] ?? $s)) ->badge() ->color(fn ($s) => $s === 'labor' ? 'info' : 'gray'), Tables\Columns\TextColumn::make('name')->wrap(), diff --git a/app/Filament/Tenant/Resources/ShopCustomerResource/RelationManagers/OrdersRelationManager.php b/app/Filament/Tenant/Resources/ShopCustomerResource/RelationManagers/OrdersRelationManager.php index 82e93b1..8e9b5ac 100644 --- a/app/Filament/Tenant/Resources/ShopCustomerResource/RelationManagers/OrdersRelationManager.php +++ b/app/Filament/Tenant/Resources/ShopCustomerResource/RelationManagers/OrdersRelationManager.php @@ -26,7 +26,7 @@ class OrdersRelationManager extends RelationManager Tables\Columns\TextColumn::make('number')->label(__('Nr.')), Tables\Columns\TextColumn::make('created_at')->label(__('Data'))->dateTime('d.m.Y H:i'), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => OnlineOrder::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(OnlineOrder::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'warning' => ['new'], diff --git a/app/Filament/Tenant/Resources/SubcontractJobResource.php b/app/Filament/Tenant/Resources/SubcontractJobResource.php index 09b14cf..49157ec 100644 --- a/app/Filament/Tenant/Resources/SubcontractJobResource.php +++ b/app/Filament/Tenant/Resources/SubcontractJobResource.php @@ -99,7 +99,7 @@ class SubcontractJobResource extends Resource ->alignRight() ->color(fn ($state) => (float) $state > 0 ? 'success' : ((float) $state < 0 ? 'danger' : 'gray')), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => SubcontractJob::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(SubcontractJob::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'warning' => ['sent', 'in_progress'], diff --git a/app/Filament/Tenant/Resources/TireSetResource.php b/app/Filament/Tenant/Resources/TireSetResource.php index 18d95ac..c82e1d6 100644 --- a/app/Filament/Tenant/Resources/TireSetResource.php +++ b/app/Filament/Tenant/Resources/TireSetResource.php @@ -115,7 +115,7 @@ class TireSetResource extends Resource ->state(fn (TireSet $r) => $r->sizeLabel()), Tables\Columns\TextColumn::make('season') ->label(__('Sezon')) - ->formatStateUsing(fn ($s) => TireSet::SEASONS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(TireSet::SEASONS[$s] ?? $s)) ->badge() ->colors(['warning' => ['summer'], 'info' => ['winter'], 'gray' => ['allseason']]), Tables\Columns\TextColumn::make('tread_min')->label(__('Uzură min')) diff --git a/app/Filament/Tenant/Resources/TireSetResource/RelationManagers/StorageRelationManager.php b/app/Filament/Tenant/Resources/TireSetResource/RelationManagers/StorageRelationManager.php index cf9b4de..5ffaab1 100644 --- a/app/Filament/Tenant/Resources/TireSetResource/RelationManagers/StorageRelationManager.php +++ b/app/Filament/Tenant/Resources/TireSetResource/RelationManagers/StorageRelationManager.php @@ -27,7 +27,7 @@ class StorageRelationManager extends RelationManager Tables\Columns\TextColumn::make('checked_in_at')->label(__('Primit'))->dateTime('d.m.Y'), Tables\Columns\TextColumn::make('checked_out_at')->label(__('Ridicat'))->dateTime('d.m.Y')->placeholder('—'), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => TireStorage::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(TireStorage::STATUSES[$s] ?? $s)) ->badge() ->colors(['success' => ['stored'], 'gray' => ['retrieved']]), Tables\Columns\TextColumn::make('fee')->money('MDL')->alignRight(), diff --git a/app/Filament/Tenant/Resources/UserResource.php b/app/Filament/Tenant/Resources/UserResource.php index d1431fe..795dc5d 100644 --- a/app/Filament/Tenant/Resources/UserResource.php +++ b/app/Filament/Tenant/Resources/UserResource.php @@ -146,7 +146,7 @@ class UserResource extends Resource Tables\Columns\TextColumn::make('email')->searchable()->copyable(), Tables\Columns\TextColumn::make('phone')->placeholder('—'), Tables\Columns\TextColumn::make('role') - ->formatStateUsing(fn ($state) => \App\Auth\Permissions::roleLabels()[$state] ?? $state) + ->formatStateUsing(fn ($state) => __(\App\Auth\Permissions::roleLabels()[$state] ?? $state)) ->badge(), Tables\Columns\IconColumn::make('app_authentication_secret') ->label(__('2FA')) diff --git a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PartsRelationManager.php b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PartsRelationManager.php index 76e392d..4094386 100644 --- a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PartsRelationManager.php +++ b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PartsRelationManager.php @@ -77,7 +77,7 @@ class PartsRelationManager extends RelationManager Tables\Columns\TextColumn::make('sell_price')->label(__('Preț'))->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('total')->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => WorkOrderPart::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(WorkOrderPart::STATUSES[$s] ?? $s)) ->badge() ->colors([ 'gray' => ['needed'], diff --git a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PaymentsRelationManager.php b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PaymentsRelationManager.php index a1bad3a..1bac1a8 100644 --- a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PaymentsRelationManager.php +++ b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/PaymentsRelationManager.php @@ -44,7 +44,7 @@ class PaymentsRelationManager extends RelationManager Tables\Columns\TextColumn::make('amount')->money('MDL')->alignRight() ->summarize(Tables\Columns\Summarizers\Sum::make()->money('MDL')->label(__('Plătit'))), Tables\Columns\TextColumn::make('method') - ->formatStateUsing(fn ($s) => Payment::METHODS[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(Payment::METHODS[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('reference')->placeholder('—'), ]) diff --git a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/SubcontractJobsRelationManager.php b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/SubcontractJobsRelationManager.php index 82e7ff4..34e7cd9 100644 --- a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/SubcontractJobsRelationManager.php +++ b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/SubcontractJobsRelationManager.php @@ -60,7 +60,7 @@ class SubcontractJobsRelationManager extends RelationManager ->money('MDL')->alignRight() ->color(fn ($s) => (float) $s > 0 ? 'success' : ((float) $s < 0 ? 'danger' : 'gray')), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => SubcontractJob::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(SubcontractJob::STATUSES[$s] ?? $s)) ->badge() ->colors(['warning' => ['sent', 'in_progress'], 'success' => ['done', 'returned'], 'danger' => ['cancelled']]), ]) diff --git a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/WorksRelationManager.php b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/WorksRelationManager.php index f938852..57eef7e 100644 --- a/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/WorksRelationManager.php +++ b/app/Filament/Tenant/Resources/WorkOrderResource/RelationManagers/WorksRelationManager.php @@ -89,7 +89,7 @@ class WorksRelationManager extends RelationManager }), Tables\Columns\TextColumn::make('master.name')->label(__('Maistru'))->placeholder('—'), Tables\Columns\TextColumn::make('status') - ->formatStateUsing(fn ($s) => WorkOrderWork::STATUSES[$s] ?? $s) + ->formatStateUsing(fn ($s) => __(WorkOrderWork::STATUSES[$s] ?? $s)) ->badge() ->colors(['gray' => ['todo'], 'warning' => ['in_progress'], 'success' => ['done']]), ]) diff --git a/lang/en.json b/lang/en.json index 255f792..5cb319f 100644 --- a/lang/en.json +++ b/lang/en.json @@ -307,6 +307,7 @@ "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", "Ce a spus clientul...": "What the client said...", + "Ceramică": "Ceramic", "Cere aprobarea": "Request approval", "Cerere": "Lead", "Cerere nouă": "New lead", @@ -514,6 +515,7 @@ "Datorii clienți (de încasat)": "Client debts (to collect)", "Daune": "Daune", "De către": "By", + "De făcut": "To do", "De la": "From", "De la (preț achiziție)": "From (purchase price)", "De la data": "From date", @@ -569,12 +571,13 @@ "Descriere produs": "Product description", "Description": "Description", "Deselect all": "Deselect all", + "Detailing": "Detailing", "Detalii": "Details", "Detalii (opțional)": "Details (optional)", "Detalii auto": "Vehicle details", "Detalii client": "Client details", "Detalii comandă": "Order details", - "Deviz": "Deviz", + "Deviz": "Estimate", "Dezactivare": "Deactivation", "Dezactivează": "Deactivate", "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.": "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.", @@ -639,6 +642,7 @@ "Email admin": "Email admin", "Email verified at": "Email verified", "Email:": "Email:", + "Emisă": "Issued", "Empty": "No results", "Enabled": "Enabled", "End": "End", @@ -668,6 +672,7 @@ "Excepții": "Overrides", "Excepții drepturi": "Permission overrides", "Există deja un cont cu acest telefon.": "An account with this phone already exists.", + "Expediat": "Shipped", "Expense": "Expense", "Expenses": "Expenses", "Expiră": "Expires", @@ -705,6 +710,7 @@ "Finalizat": "Done", "Financiar": "Financial", "Finanțe": "Finance", + "Fix": "Fixed", "Fișe": "Orders", "Fișe active": "Active orders", "Fișe deschise": "Open orders", @@ -790,7 +796,7 @@ "Identificare": "Identification", "Identitate": "Identitate", "Ieri": "Yesterday", - "Ieșire": "Logout", + "Ieșire": "Outgoing", "Ieșiri": "Outflow", "Image": "Image", "Images": "Images", @@ -827,6 +833,7 @@ "Interval": "Interval", "Interval dată": "Date range", "Interval orar": "Time range", + "Intrare": "Incoming", "Intrat": "Intrat", "Inventar": "Inventory", "Invitație": "Invitation", @@ -1195,11 +1202,13 @@ "Owner": "Owner", "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.": "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.", "PDF": "PDF", + "PDR": "PDR", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", "PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.", "PO": "PO", "POS": "POS", "POST /api/v1/login": "POST /api/v1/login", + "PPF": "PPF", "Pagina": "Page", "Pagini": "Pages", "Paid at": "Paid at", @@ -1229,6 +1238,7 @@ "Payment method": "Payment method", "Payments": "Payments", "Paynet": "Paynet", + "Pe oră": "Hourly", "Pe pauză": "Paused", "Pe status": "Pe status", "Penalizări": "Penalties", @@ -1287,6 +1297,7 @@ "Pod / Zi": "Bay / Day", "Pod / spațiu": "Bay / space", "Pod × Zile": "Bay × Days", + "Polish": "Polish", "Politica de confidențialitate": "Privacy policy", "Politici": "Policies", "Pontaj": "Timesheet", @@ -1384,6 +1395,7 @@ "Published": "Published", "Purchase": "Purchase", "Purchases": "Purchases", + "Push": "Push", "Putere": "Power", "Pâlnie": "Pipeline", "Până la": "To", @@ -1401,6 +1413,7 @@ "Rapoarte": "Reports", "Raport": "Report", "Rata conversie": "Conversion rate", + "Ratat": "Missed", "Rate": "Rate", "Rating": "Rating", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", @@ -1451,6 +1464,7 @@ "Renunță": "Cancel", "Reordonează": "Reorder", "Reparație": "Repair", + "Reparație caroserie": "Body repair", "Reparații": "Repairs", "Report": "Report", "Reports": "Reports", @@ -1484,6 +1498,7 @@ "Rezultate": "Results", "Rezumat": "Summary", "Reîmprospătează": "Refresh", + "Ridicare la service": "Pickup at service", "Ridicat": "High", "Robotizată": "Robotized", "Rol": "Role", @@ -1500,7 +1515,7 @@ "Rânduri": "Rows", "Rânduri per pagină": "Rows per page", "Rămas": "Remaining", - "Răspuns": "Responded", + "Răspuns": "Answered", "Răspuns AI ne-parsabil ca JSON.": "Răspuns AI ne-parsabil ca JSON.", "SMS": "SMS", "SUV": "SUV", @@ -1590,6 +1605,7 @@ "Setări plăți salvate": "Setări plăți salvate", "Setări salvate": "Setări salvate", "Setările au fost salvate. Hai să adăugăm primul client.": "Setările au fost salvate. Hai să adăugăm primul client.", + "Sever": "Severe", "Sex": "Gender", "Sezon": "Sezon", "Sfat": "Tip", @@ -1839,6 +1855,7 @@ "Uzat": "Worn", "Uzură (mm) per poziție": "Uzură (mm) per poziție", "Uzură min": "Min wear", + "Ușor": "Minor", "VIN": "VIN", "VIN căutare & piese": "VIN căutare & piese", "VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.", @@ -1887,6 +1904,7 @@ "Vizual": "Visual", "Vizualizează": "View", "Vizualizări": "Views", + "Vopsire": "Painting", "Vânzări": "Vânzări", "Vârstă max (ani)": "Max age (years)", "Vârstă min (ani)": "Min age (years)", @@ -2177,6 +2195,7 @@ "În depozit": "In stock", "În lucru": "In progress", "În pipeline": "In pipeline", + "În procesare": "Processing", "În trial": "In trial", "Înainte": "Back", "Înapoi": "Back", diff --git a/lang/ru.json b/lang/ru.json index d90786f..8551470 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -162,7 +162,7 @@ "Anul acesta": "В этом году", "Anul curent": "Текущий год", "Anul trecut": "Прошлый год", - "Anulat": "Отменено", + "Anulat": "Отменён", "Anulată": "Отменено", "Anulează": "Отмена", "Anulează fișa": "Отменить наряд", @@ -307,6 +307,7 @@ "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", "Ce a spus clientul...": "Что сказал клиент...", + "Ceramică": "Керамика", "Cere aprobarea": "Запросить одобрение", "Cerere": "Заявка", "Cerere nouă": "Новая заявка", @@ -404,7 +405,7 @@ "Configurări avansate": "Расширенная конфигурация", "Confirm password": "Подтверждение пароля", "Confirmare plată primită": "Оплата получена", - "Confirmat": "Подтверждено", + "Confirmat": "Подтверждён", "Confirmate": "Подтверждено", "Confirmă": "Подтвердить", "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.": "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.", @@ -514,6 +515,7 @@ "Datorii clienți (de încasat)": "Задолженности клиентов (к получению)", "Daune": "Daune", "De către": "Кем", + "De făcut": "К выполнению", "De la": "С", "De la (preț achiziție)": "От (цена закупки)", "De la data": "С даты", @@ -569,12 +571,13 @@ "Descriere produs": "Описание товара", "Description": "Описание", "Deselect all": "Снять выбор", + "Detailing": "Детейлинг", "Detalii": "Подробности", "Detalii (opțional)": "Детали (опционально)", "Detalii auto": "Данные авто", "Detalii client": "Данные клиента", "Detalii comandă": "Данные заказа", - "Deviz": "Deviz", + "Deviz": "Смета", "Dezactivare": "Деактивация", "Dezactivează": "Деактивировать", "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.": "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.", @@ -639,6 +642,7 @@ "Email admin": "Email admin", "Email verified at": "Email подтверждён", "Email:": "Email:", + "Emisă": "Создана", "Empty": "Нет результатов", "Enabled": "Включён", "End": "Конец", @@ -668,6 +672,7 @@ "Excepții": "Исключения", "Excepții drepturi": "Исключения прав", "Există deja un cont cu acest telefon.": "Аккаунт с этим номером уже существует.", + "Expediat": "Отправлен", "Expense": "Расход", "Expenses": "Расходы", "Expiră": "Истекает", @@ -705,6 +710,7 @@ "Finalizat": "Завершено", "Financiar": "Финансы", "Finanțe": "Финансы", + "Fix": "Фикс.", "Fișe": "Наряды", "Fișe active": "Активные наряды", "Fișe deschise": "Открытые наряды", @@ -790,7 +796,7 @@ "Identificare": "Идентификация", "Identitate": "Identitate", "Ieri": "Вчера", - "Ieșire": "Выход", + "Ieșire": "Исходящий", "Ieșiri": "Расход", "Image": "Изображение", "Images": "Изображения", @@ -827,6 +833,7 @@ "Interval": "Интервал", "Interval dată": "Диапазон дат", "Interval orar": "Часовой интервал", + "Intrare": "Входящий", "Intrat": "Intrat", "Inventar": "Инвентаризация", "Invitație": "Приглашение", @@ -895,7 +902,7 @@ "Livrare": "Livrare", "Livrare (zile)": "Livrare (zile)", "Livrare gratuită peste": "Бесплатная доставка от", - "Livrat": "Доставлено", + "Livrat": "Доставлен", "Loading": "Загрузка...", "Loc.": "Loc.", "Local": "Локально", @@ -990,7 +997,7 @@ "Mecanic implicit": "Механик по умолчанию", "Mecanici": "Механики", "Medie": "Среднее", - "Mediu": "Средний", + "Mediu": "Среднее", "Merchant Code": "Merchant Code", "Mesaj": "Mesaj", "Mesaj client": "Mesaj client", @@ -1195,11 +1202,13 @@ "Owner": "Владелец", "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.": "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.", "PDF": "PDF", + "PDR": "PDR", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", "PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.", "PO": "PO", "POS": "POS", "POST /api/v1/login": "POST /api/v1/login", + "PPF": "PPF", "Pagina": "Страница", "Pagini": "Страницы", "Paid at": "Оплачено", @@ -1229,6 +1238,7 @@ "Payment method": "Способ оплаты", "Payments": "Платежи", "Paynet": "Paynet", + "Pe oră": "Почасовая", "Pe pauză": "На паузе", "Pe status": "Pe status", "Penalizări": "Штрафы", @@ -1287,6 +1297,7 @@ "Pod / Zi": "Пост / День", "Pod / spațiu": "Пост / место", "Pod × Zile": "Пост × Дни", + "Polish": "Полироль", "Politica de confidențialitate": "Политика конфиденциальности", "Politici": "Политики", "Pontaj": "Табель", @@ -1384,6 +1395,7 @@ "Published": "Опубликовано", "Purchase": "Закупка", "Purchases": "Закупки", + "Push": "Push", "Putere": "Мощность", "Pâlnie": "Воронка", "Până la": "До", @@ -1401,6 +1413,7 @@ "Rapoarte": "Отчёты", "Raport": "Отчёт", "Rata conversie": "Конверсия", + "Ratat": "Пропущенный", "Rate": "Ставка", "Rating": "Рейтинг", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", @@ -1421,8 +1434,8 @@ "Recepționat": "Принято", "Recepționat — batch creat": "Recepționat — batch creat", "Recepționată": "Принято", - "Recepționată parțial": "Частично принято", - "Recepționată total": "Полностью принято", + "Recepționată parțial": "Частично принята", + "Recepționată total": "Полностью принята", "Recepționează": "Принять", "Recomandat": "Рекомендуется", "Recomandate": "Рекомендуемые", @@ -1451,6 +1464,7 @@ "Renunță": "Отменить", "Reordonează": "Изменить порядок", "Reparație": "Ремонт", + "Reparație caroserie": "Ремонт кузова", "Reparații": "Ремонты", "Report": "Отчёт", "Reports": "Отчёты", @@ -1484,6 +1498,7 @@ "Rezultate": "Результаты", "Rezumat": "Резюме", "Reîmprospătează": "Обновить", + "Ridicare la service": "Самовывоз в сервисе", "Ridicat": "Высокий", "Robotizată": "Робот", "Rol": "Роль", @@ -1500,7 +1515,7 @@ "Rânduri": "Строки", "Rânduri per pagină": "Строк на странице", "Rămas": "Осталось", - "Răspuns": "Отвечено", + "Răspuns": "Отвечен", "Răspuns AI ne-parsabil ca JSON.": "Răspuns AI ne-parsabil ca JSON.", "SMS": "SMS", "SUV": "SUV", @@ -1590,6 +1605,7 @@ "Setări plăți salvate": "Setări plăți salvate", "Setări salvate": "Setări salvate", "Setările au fost salvate. Hai să adăugăm primul client.": "Setările au fost salvate. Hai să adăugăm primul client.", + "Sever": "Тяжёлое", "Sex": "Пол", "Sezon": "Sezon", "Sfat": "Совет", @@ -1839,6 +1855,7 @@ "Uzat": "Изношено", "Uzură (mm) per poziție": "Uzură (mm) per poziție", "Uzură min": "Мин. износ", + "Ușor": "Лёгкое", "VIN": "VIN", "VIN căutare & piese": "VIN căutare & piese", "VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.", @@ -1887,6 +1904,7 @@ "Vizual": "Визуально", "Vizualizează": "Просмотр", "Vizualizări": "Просмотры", + "Vopsire": "Покраска", "Vânzări": "Vânzări", "Vârstă max (ani)": "Макс. возраст (лет)", "Vârstă min (ani)": "Мин. возраст (лет)", @@ -2177,6 +2195,7 @@ "În depozit": "На складе", "În lucru": "В работе", "În pipeline": "В воронке", + "În procesare": "В обработке", "În trial": "В триале", "Înainte": "Назад", "Înapoi": "Назад",