From 2d447e62946e0c09f8f0f47fcc93703e8d81fcdf Mon Sep 17 00:00:00 2001 From: Vasyka Date: Wed, 15 Jul 2026 05:31:26 +0000 Subject: [PATCH] feat(i18n): fix widgets, pipeline & mechanic boards + missing translations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to previous i18n pass — user reported many visible RO strings on EN/RU locales because auto-wrap missed: - Stat::make() first-arg labels in StatsOverview, FinanceOverview, PlatformStats - $heading static in LowStockTable (converted to getHeading() method) - Pipeline board Blade view: 40+ literal strings wrapped with {{ __() }} - Mechanic board Blade view: statuses, buttons, block modal - PipelineBoard.php hardcoded tag labels, stage labels, notify strings - MechanicBoard.php confirmBlock notification Added human RU + EN translations for the visible strings shown in the screenshots (dashboard widgets, Client/Vehicle list breadcrumbs & columns, pipeline board topbar/stats/filters/cards/detail panel/quick actions, mechanic board stats/statuses/block modal). All 306 tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Central/Widgets/PlatformStats.php | 20 +-- app/Filament/Tenant/Pages/PipelineBoard.php | 32 ++-- .../Tenant/Widgets/FinanceOverview.php | 8 +- app/Filament/Tenant/Widgets/LowStockTable.php | 7 +- app/Filament/Tenant/Widgets/StatsOverview.php | 10 +- lang/en.json | 138 +++++++++++++++-- lang/ru.json | 140 ++++++++++++++++-- .../tenant/pages/mechanic-board.blade.php | 42 +++--- .../tenant/pages/pipeline-board.blade.php | 140 +++++++++--------- 9 files changed, 381 insertions(+), 156 deletions(-) diff --git a/app/Filament/Central/Widgets/PlatformStats.php b/app/Filament/Central/Widgets/PlatformStats.php index f9d74ca..f4349de 100644 --- a/app/Filament/Central/Widgets/PlatformStats.php +++ b/app/Filament/Central/Widgets/PlatformStats.php @@ -33,29 +33,29 @@ class PlatformStats extends BaseWidget ->count(); return [ - Stat::make('Tenants total', $total) - ->description('Toate companiile') + Stat::make(__('Tenants total'), $total) + ->description(__('Toate companiile')) ->descriptionIcon('heroicon-m-building-office-2') ->color('primary') ->url(\App\Filament\Central\Resources\CompanyResource::getUrl('index')), - Stat::make('Active', $active) + Stat::make(__('Active'), $active) ->description(__("✓ Pe abonament plătit")) ->descriptionIcon('heroicon-m-check-circle') ->color('success'), - Stat::make('În trial', $trial) - ->description($trial > 0 ? 'Posibili clienți noi' : '—') + Stat::make(__('În trial'), $trial) + ->description($trial > 0 ? __('Posibili clienți noi') : '—') ->descriptionIcon('heroicon-m-clock') ->color('warning'), - Stat::make('Expiră < 7 zile', $expiring) - ->description($expiring > 0 ? '⚠ Acțiune necesară' : 'Toate ok') + Stat::make(__('Expiră < 7 zile'), $expiring) + ->description($expiring > 0 ? __('⚠ Acțiune necesară') : __('Toate ok')) ->descriptionIcon('heroicon-m-exclamation-triangle') ->color($expiring > 0 ? 'danger' : 'success'), - Stat::make('Venit luna curentă', number_format($mrr, 0, ',', ' ') . ' MDL') + Stat::make(__('Venit luna curentă'), number_format($mrr, 0, ',', ' ') . ' MDL') ->description(__('MRR realizat')) ->descriptionIcon('heroicon-m-banknotes') ->color('success'), - Stat::make('Facturi neplătite', $overdue) - ->description($overdue > 0 ? 'Verifică și amintește' : 'Toate plătite') + Stat::make(__('Facturi neplătite'), $overdue) + ->description($overdue > 0 ? __('Verifică și amintește') : __('Toate plătite')) ->descriptionIcon('heroicon-m-exclamation-circle') ->color($overdue > 0 ? 'danger' : 'gray') ->url(\App\Filament\Central\Resources\SubscriptionResource::getUrl('index') . '?activeTab=overdue'), diff --git a/app/Filament/Tenant/Pages/PipelineBoard.php b/app/Filament/Tenant/Pages/PipelineBoard.php index e292e67..02cf56d 100644 --- a/app/Filament/Tenant/Pages/PipelineBoard.php +++ b/app/Filament/Tenant/Pages/PipelineBoard.php @@ -171,7 +171,7 @@ class PipelineBoard extends Page $list = array_values($cards[$key]); $sum = array_sum(array_map(fn ($c) => (float) $c['amount'], $list)); $columns[$key] = [ - 'label' => $label, + 'label' => __($label), 'color' => $color, 'count' => count($list), 'sum' => $sum, @@ -238,7 +238,7 @@ class PipelineBoard extends Page } Lead::create(array_merge($data, ['status' => 'new'])); $this->showNewForm = false; - $this->notify('Cerere nouă adăugată'); + $this->notify(__('Cerere nouă adăugată')); } public function exportCsv() @@ -398,10 +398,10 @@ class PipelineBoard extends Page 'date' => today()->addDay(), 'time_start' => '10:00', 'time_end' => '11:00', - 'title' => $title ?: 'Programare', + 'title' => $title ?: __('Programare'), 'status' => 'scheduled', ]); - $this->notify("Programare creată · mâine 10:00"); + $this->notify(__('Programare creată · mâine 10:00')); $this->openCardKey = null; } @@ -439,7 +439,7 @@ class PipelineBoard extends Page $tags[] = ['label' => Lead::SOURCES[$lead->source] ?? $lead->source, 'color' => 'gray']; } if ($lead->status === 'no_answer') { - $tags[] = ['label' => 'Fără răspuns', 'color' => 'red']; + $tags[] = ['label' => __('Fără răspuns'), 'color' => 'red']; } $diffMin = $lead->created_at?->diffInMinutes(now()) ?? 0; $overdue = $diffMin > 60 && $lead->status !== 'contacted'; @@ -450,7 +450,7 @@ class PipelineBoard extends Page 'code' => 'CR-' . str_pad((string) $lead->id, 4, '0', STR_PAD_LEFT), 'subject' => trim(($lead->car ?: '') . ' ' . ($lead->model ?: '')) ?: $lead->name, 'plate' => $lead->car ?: '', - 'client_name' => $lead->name ?: 'Anonim', + 'client_name' => $lead->name ?: __('Anonim'), 'phone' => $lead->phone, 'source' => $lead->source, 'amount' => (float) $lead->budget, @@ -470,7 +470,7 @@ class PipelineBoard extends Page { $tags = []; if ($deal->urgent) { - $tags[] = ['label' => 'Urgent', 'color' => 'red']; + $tags[] = ['label' => __('Urgent'), 'color' => 'red']; } if ($deal->source && in_array($deal->source, ['instagram', 'site', 'call', 'whatsapp', 'telegram'])) { $tags[] = ['label' => Lead::SOURCES[$deal->source] ?? $deal->source, 'color' => 'gray']; @@ -542,23 +542,23 @@ class PipelineBoard extends Page private function woCard(WorkOrder $wo): array { $tags = []; - $tags[] = ['label' => "Fișă {$wo->number}", 'color' => 'purple']; + $tags[] = ['label' => __('Fișă') . " {$wo->number}", 'color' => 'purple']; if ($wo->status === 'agreement') { - $tags[] = ['label' => 'Necesită aprobare', 'color' => 'amber']; + $tags[] = ['label' => __('Necesită aprobare'), 'color' => 'amber']; } if ($wo->status === 'awaiting_parts') { - $tags[] = ['label' => 'Așteaptă piese', 'color' => 'amber']; + $tags[] = ['label' => __('Așteaptă piese'), 'color' => 'amber']; } if ($wo->status === 'ready') { - $tags[] = ['label' => 'Gata', 'color' => 'green']; + $tags[] = ['label' => __('Gata'), 'color' => 'green']; if ($wo->pay_status === 'partial') { - $tags[] = ['label' => 'Avans achitat', 'color' => 'blue']; + $tags[] = ['label' => __('Avans achitat'), 'color' => 'blue']; } elseif ($wo->pay_status !== 'paid') { - $tags[] = ['label' => 'Neachitat', 'color' => 'amber']; + $tags[] = ['label' => __('Neachitat'), 'color' => 'amber']; } } if ($wo->status === 'done' && $wo->pay_status === 'paid') { - $tags[] = ['label' => '✓ Achitat', 'color' => 'green']; + $tags[] = ['label' => __('✓ Achitat'), 'color' => 'green']; } $progress = null; @@ -710,7 +710,7 @@ class PipelineBoard extends Page default => 'edit', }, 'color' => 'blue', - 'text' => $a->description ?: ucfirst($a->event ?? 'actualizat'), + 'text' => $a->description ?: ucfirst($a->event ?? __('actualizat')), 'time' => $a->created_at?->diffForHumans(), ]; } @@ -720,7 +720,7 @@ class PipelineBoard extends Page private function stageStepper(int $currentIdx): array { - $labels = ['Cerere', 'Calcul.', 'Programat', 'În lucru', 'Gata', 'Achitat']; + $labels = [__('Cerere'), __('Calcul.'), __('Programat'), __('În lucru'), __('Gata'), __('Achitat')]; $out = []; foreach ($labels as $i => $label) { $out[] = [ diff --git a/app/Filament/Tenant/Widgets/FinanceOverview.php b/app/Filament/Tenant/Widgets/FinanceOverview.php index 9619711..cbd1a34 100644 --- a/app/Filament/Tenant/Widgets/FinanceOverview.php +++ b/app/Filament/Tenant/Widgets/FinanceOverview.php @@ -30,20 +30,20 @@ class FinanceOverview extends BaseWidget $debt = max(0, $debtTotal - $paidOnDebt); return [ - Stat::make('Încasări (luna)', number_format($income, 2, '.', ' ') . ' MDL') + Stat::make(__('Încasări (luna)'), number_format($income, 2, '.', ' ') . ' MDL') ->icon('heroicon-o-arrow-trending-up') ->color('success') ->description(now()->translatedFormat('F Y')), - Stat::make('Cheltuieli (luna)', number_format($expenses, 2, '.', ' ') . ' MDL') + Stat::make(__('Cheltuieli (luna)'), number_format($expenses, 2, '.', ' ') . ' MDL') ->icon('heroicon-o-arrow-trending-down') ->color('danger'), - Stat::make('Profit (luna)', number_format($profit, 2, '.', ' ') . ' MDL') + Stat::make(__('Profit (luna)'), number_format($profit, 2, '.', ' ') . ' MDL') ->icon('heroicon-o-banknotes') ->color($profit >= 0 ? 'success' : 'danger'), - Stat::make('Datorii clienți', number_format($debt, 2, '.', ' ') . ' MDL') + Stat::make(__('Datorii clienți'), number_format($debt, 2, '.', ' ') . ' MDL') ->icon('heroicon-o-exclamation-circle') ->color($debt > 0 ? 'warning' : 'success'), ]; diff --git a/app/Filament/Tenant/Widgets/LowStockTable.php b/app/Filament/Tenant/Widgets/LowStockTable.php index 04ea94d..c6d43aa 100644 --- a/app/Filament/Tenant/Widgets/LowStockTable.php +++ b/app/Filament/Tenant/Widgets/LowStockTable.php @@ -13,7 +13,12 @@ class LowStockTable extends BaseWidget protected int|string|array $columnSpan = 'full'; - protected static ?string $heading = '⚠️ Stoc minim atins'; + protected static ?string $heading = null; + + public function getHeading(): string + { + return '⚠️ ' . __('Stoc minim atins'); + } public function table(Table $table): Table { diff --git a/app/Filament/Tenant/Widgets/StatsOverview.php b/app/Filament/Tenant/Widgets/StatsOverview.php index c0b5319..ec95979 100644 --- a/app/Filament/Tenant/Widgets/StatsOverview.php +++ b/app/Filament/Tenant/Widgets/StatsOverview.php @@ -21,27 +21,27 @@ class StatsOverview extends BaseWidget $todayAppointments = Appointment::whereDate('date', today())->count(); return [ - Stat::make('Clienți', Client::count()) + Stat::make(__('Clienți'), Client::count()) ->description(__('Total în baza de date')) ->icon('heroicon-o-users') ->color('primary'), - Stat::make('Mașini', Vehicle::count()) + Stat::make(__('Mașini'), Vehicle::count()) ->description(__('Total înregistrate')) ->icon('heroicon-o-truck') ->color('info'), - Stat::make('Cereri noi', $newLeads) + Stat::make(__('Cereri noi'), $newLeads) ->description(__('De procesat')) ->icon('heroicon-o-inbox-arrow-down') ->color($newLeads > 0 ? 'warning' : 'success'), - Stat::make('Deal-uri active', $openDeals) + Stat::make(__('Deal-uri active'), $openDeals) ->description(__('În pipeline')) ->icon('heroicon-o-funnel') ->color('primary'), - Stat::make('Programări azi', $todayAppointments) + Stat::make(__('Programări azi'), $todayAppointments) ->description(today()->format('d.m.Y')) ->icon('heroicon-o-calendar') ->color('success'), diff --git a/lang/en.json b/lang/en.json index 35cb09e..d21dc7d 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1,4 +1,5 @@ { + "#": "#", "$n sesiuni revoke-uite": "$n sesiuni revoke-uite", "% Manopere": "% Manopere", "% Piese": "% Piese", @@ -33,6 +34,7 @@ "Acces în aplicație (opțional)": "Acces în aplicație (opțional)", "Această acțiune este ireversibilă": "This action is irreversible", "Achitat": "Paid", + "Achitat azi": "Paid today", "Achiziții": "Purchases", "Acord": "Agreement", "Acordat de": "Acordat de", @@ -40,6 +42,7 @@ "Activ": "Active", "Activare": "Activation", "Active": "Active", + "Active acum": "Active now", "Activează": "Activate", "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.": "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.", "Activează PayPal": "Activează PayPal", @@ -49,14 +52,17 @@ "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".", "Activează plata prin transfer": "Activează plata prin transfer", "Activi": "Active", + "Activitate recentă": "Recent activity", "Activă": "Active", "Actualizat la": "Updated at", "Actualizează": "Update", "Acțiune": "Action", + "Acțiuni rapide": "Quick actions", "Acțiuni în bulk": "Bulk actions", "Acțiuni în masă": "Bulk actions", "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.", "Adaugă auto": "Add vehicle", + "Adaugă cerere": "Add lead", "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.", "Adaugă cheltuială": "Add expense", "Adaugă client": "Add client", @@ -91,6 +97,7 @@ "Ai uitat parola?": "Forgot password?", "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".", "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).", + "Ale mele": "Mine", "Aleatoriu": "Random", "Alege categorie": "Choose category", "Alege client": "Choose client", @@ -107,16 +114,19 @@ "Alege vehicul": "Choose vehicle", "Alfabetic": "Alphabetically", "Alte cheltuieli": "Other expenses", + "Altă problemă": "Other problem", "An": "Year", "An fabricație": "Model year", "Angajat din": "Angajat din", "Ani": "Years", + "Anonim": "Anonymous", "Antet": "Header", "Antet fișă": "Order header", "Anual": "Anual", "Anul curent": "Current year", "Anul trecut": "Last year", "Anulat": "Cancelled", + "Anulează": "Cancel", "Anulează fișa": "Cancel order", "Anvelope": "Tires", "Apare în magazinul online public.": "Apare în magazinul online public.", @@ -154,9 +164,15 @@ "Autentificare": "Login", "Autentificare 2FA": "2FA authentication", "Auto": "Vehicle", + "Auto / model": "Vehicle / model", "AutoCRM SRL": "AutoCRM SRL", + "Automobile": "Vehicles", "Avans": "Advance", + "Avans achitat": "Advance paid", "Avg zile": "Avg zile", + "Azi": "Today", + "Așteaptă piese": "Awaiting parts", + "Aștept aprobare client": "Awaiting client approval", "Așteptată": "Expected", "BIC / SWIFT": "BIC / SWIFT", "Backup": "Backup", @@ -169,8 +185,11 @@ "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", "Bifă": "Check", "Bine ai venit": "Welcome", + "Blocat": "Blocked", "Blocată": "Blocked", "Blochează": "Block", + "Blochez": "Block", + "Blochez lucrarea": "Block the work", "Boală": "Sick", "Bon": "Receipt", "Bonuri": "Receipts", @@ -186,7 +205,9 @@ "Bună ziua": "Hello", "CSV": "CSV", "Calcul": "Calcul", + "Calcul.": "Quote", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", + "Calculație": "Quote", "Calculează luna curentă": "Calculează luna curentă", "Calendar": "Calendar", "Calendar vizual": "Calendar vizual", @@ -204,15 +225,22 @@ "Categorie implicită": "Default category", "Categorii": "Categorii", "Caută": "Search", + "Caută client, mașină, număr...": "Search client, vehicle, number...", "Caută în tabel": "Search in table", "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", + "Ce a spus clientul...": "What the client said...", + "Cerere": "Lead", + "Cerere nouă": "New lead", + "Cerere nouă adăugată": "New lead added", "Cereri": "Leads", + "Cereri noi": "New leads", "Check-in depozit": "Check-in depozit", "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.": "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.", "Cheie": "Cheie", "Cheltuială": "Expense", "Cheltuieli": "Expenses", + "Cheltuieli (luna)": "Expenses (month)", "Cheltuit": "Spent", "Cheltuit 90d": "Cheltuit 90d", "Chitanțe": "Receipts", @@ -223,7 +251,7 @@ "Claude API Key": "Claude API Key", "Client": "Client", "Client & Auto": "Client & Auto", - "Client CRM": "Client CRM", + "Client CRM": "CRM client", "Client ID": "Client ID", "Client VIP": "Client VIP", "Client existent": "Existing client", @@ -285,9 +313,11 @@ "Creat de": "Created by", "Creat la": "Created at", "Create": "Create", + "Created at": "Created at", "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.", "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.", "Credit": "Credit", + "Creează cerere": "Create lead", "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.", "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.": "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.", "Crescător": "Ascending", @@ -330,6 +360,7 @@ "Date personale": "Date personale", "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.", "Datorie": "Debt", + "Datorii clienți": "Client debt", "Daune": "Daune", "De către": "De către", "De la": "From", @@ -337,8 +368,10 @@ "De la data": "From date", "De la ora": "From time", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", - "De procesat": "De procesat", + "De procesat": "To process", "Deal": "Deal", + "Deal nou": "New deal", + "Deal-uri active": "Active deals", "Deals": "Deals", "Debit": "Debit", "Deblochează": "Unblock", @@ -356,10 +389,15 @@ "Depozit implicit": "Default warehouse", "Depozit țintă": "Target warehouse", "Depublică": "Unpublish", + "Depășit termen": "Overdue", "Descarcă PDF": "Download PDF", "Descarcă factura": "Download invoice", "Descarcă template": "Download template", "Deschide": "Open", + "Deschide Fișă": "Open order", + "Deschide deal": "Open deal", + "Deschide fișa": "Open order", + "Deschide fișa pentru aprobare lucrare/piesă.": "Open the order to approve work/part.", "Deschide tenantul": "Deschide tenantul", "Deschis": "Opened", "Deschis la": "Opened at", @@ -367,6 +405,7 @@ "Descriere": "Description", "Descriere produs": "Product description", "Detalii": "Details", + "Detalii (opțional)": "Details (optional)", "Detalii auto": "Vehicle details", "Detalii client": "Client details", "Detalii comandă": "Order details", @@ -395,6 +434,7 @@ "Doar utilizatorii mei": "My users only", "Document": "Document", "Documente": "Documents", + "Done": "Done", "Downgrade": "Downgrade", "Drept": "Permission", "Drepturi": "Permissions", @@ -408,7 +448,9 @@ "Durată reală": "Actual duration", "EJk...": "EJk...", "ETA": "ETA", + "Echipament defect": "Broken equipment", "Edit": "Edit", + "Editare": "Edit", "Editează": "Edit", "Editează drepturi": "Editează drepturi", "Editează produs": "Edit product", @@ -429,6 +471,7 @@ "Ex: 20": "Ex: 20", "Ex: 20 pentru +20%": "Ex: 20 pentru +20%", "Ex: 25": "Ex: 25", + "Ex: Lipsește filtrul Mann W712/83": "e.g. Missing filter Mann W712/83", "Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric", "Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...", "Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.", @@ -436,11 +479,14 @@ "Excepții": "Overrides", "Excepții drepturi": "Permission overrides", "Expiră": "Expiră", + "Expiră < 7 zile": "Expires < 7 days", "Expiră la (opțional)": "Expiră la (opțional)", + "Export": "Export", "Export CSV": "Export CSV", "Extras": "Statement", "Ești sigur?": "Are you sure?", "Facturi": "Invoices", + "Facturi neplătite": "Unpaid invoices", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Invoice", "Factură importată": "Factură importată", @@ -453,7 +499,7 @@ "Filters": "Filters", "Filtre": "Filters", "Filtru": "Filter", - "Finalizat": "Completed", + "Finalizat": "Done", "Financiar": "Financiar", "Finanțe": "Finanțe", "Fișe": "Orders", @@ -464,6 +510,7 @@ "Fișiere": "Files", "Fișă": "Order", "Fișă asociată": "Fișă asociată", + "Fișă de lucru": "Work order", "Fișă lucru": "Fișă lucru", "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.", "Folosit dacă markup = 0.": "Folosit dacă markup = 0.", @@ -486,7 +533,10 @@ "Furnizor preferat": "Furnizor preferat", "Furnizori": "Suppliers", "Fără TVA": "Without VAT", + "Fără răspuns": "No answer", "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.", + "Gata": "Ready", + "Gata de ridicare": "Ready for pickup", "Gata estimat (ETA)": "Gata estimat (ETA)", "Gemini API Key": "Gemini API Key", "General": "General", @@ -495,6 +545,7 @@ "Generează raport": "Generate report", "Generează token": "Generează token", "Global": "Global", + "Gol — trage un card aici": "Empty — drop a card here", "Grafic": "Chart", "Gravitate": "Gravitate", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.", @@ -567,8 +618,11 @@ "Limite": "Limite", "Linii": "Linii", "Link client (QR)": "Link client (QR)", + "Link tracking": "Tracking link", "Lipsă": "Lipsă", + "Lipsă piesă": "Missing part", "Liste configurabile": "Configurable lists", + "Listă": "List", "Livrare": "Livrare", "Livrare (zile)": "Livrare (zile)", "Livrare gratuită peste": "Livrare gratuită peste", @@ -599,7 +653,9 @@ "Luni (zi)": "Monday", "Lățime": "Lățime", "MD00 AG00 0000 ...": "MD00 AG00 0000 ...", - "MRR realizat": "MRR realizat", + "MDL pipeline total": "MDL pipeline total", + "MDL închise azi": "MDL closed today", + "MRR realizat": "Realized MRR", "Magazin": "Magazin", "Magazin activ": "Magazin activ", "Magazin online": "Online shop", @@ -610,6 +666,7 @@ "Manopere": "Labor lines", "Manoperă": "Labor", "Marca": "Marca", + "Marchează Gata": "Mark ready", "Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).", "Marchează anulat": "Mark as cancelled", "Marchează plătit": "Mark as paid", @@ -636,7 +693,7 @@ "Max mașini": "Max mașini", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", - "Mașini": "Mașini", + "Mașini": "Vehicles", "Mecanic implicit": "Default mechanic", "Mediu": "Medium", "Merchant Code": "Merchant Code", @@ -671,6 +728,10 @@ "Mulțumim": "Thank you", "Mâine": "Tomorrow", "Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)", + "Neachitat": "Unpaid", + "Necesită acțiune": "Needs action", + "Necesită aprobare": "Needs approval", + "Necesită aprobare client": "Needs client approval", "Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.", "Necompletat": "Empty", "Necunoscut": "Unknown", @@ -680,6 +741,8 @@ "Nesincronizat": "Not synced", "Net 30 / Avans": "Net 30 / Avans", "Neverificat": "Not verified", + "New client": "New client", + "New mașină": "New vehicle", "Nicio comandă încă": "Nicio comandă încă", "Nicio daună marcată": "Nicio daună marcată", "Nicio factură generată": "Nicio factură generată", @@ -688,7 +751,7 @@ "Nicio lucrare la terți": "Nicio lucrare la terți", "Nicio mașină încă": "Nicio mașină încă", "Nicio piesă implicită": "Nicio piesă implicită", - "Niciodată": "Niciodată", + "Niciodată": "Never", "Niciun client magazin": "Niciun client magazin", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", @@ -712,6 +775,8 @@ "Notifications": "Notifications", "Notificări": "Notifications", "Notițe": "Notes", + "Notițe / Reclamație": "Notes / Complaint", + "Notițe / reclamație": "Notes / complaint", "Notițe interne": "Notițe interne", "Nou": "New", "Nou tehnician": "Nou tehnician", @@ -783,7 +848,9 @@ "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", "Pauză": "Pause", + "Pe pauză": "Paused", "Penalizări": "Penalizări", + "Per page": "Per page", "Perioada (YYYY-MM)": "Perioada (YYYY-MM)", "Perioadă": "Period", "Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)", @@ -819,6 +886,7 @@ "Politici": "Policies", "Pontaj": "Timesheet", "Populare": "Popular", + "Posibili clienți noi": "Potential new clients", "Post actualizat": "Post actualizat", "Poze": "Photos", "Pozele auto": "Vehicle photos", @@ -865,13 +933,20 @@ "Profil": "Profil", "Profile": "Profile", "Profit": "Profit", + "Profit (luna)": "Profit (month)", + "Programare": "Appointment", "Programare adăugată": "Programare adăugată", "Programare confirmată": "Programare confirmată", + "Programare creată · mâine 10:00": "Appointment created · tomorrow 10:00", "Programare mutată": "Programare mutată", "Programare ștearsă": "Programare ștearsă", + "Programat": "Scheduled", + "Programează": "Schedule", "Programează întâlnire": "Schedule meeting", "Programări": "Appointments", + "Programări azi": "Appointments today", "Progres": "Progres", + "Progres etapă": "Stage progress", "Proprietar": "Owner", "Provider implicit": "Provider implicit", "Public": "Public", @@ -891,6 +966,7 @@ "ROI": "ROI", "Rapoarte": "Reports", "Raport": "Report", + "Rata conversie": "Conversion rate", "Rating": "Rating", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Reactivate", @@ -963,6 +1039,7 @@ "Rânduri": "Rows", "Rânduri per pagină": "Rows per page", "Rămas": "Rămas", + "SMS": "SMS", "Salarii": "Payroll", "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Salary & margin", @@ -1000,6 +1077,7 @@ "Selectează fișier": "Select file", "Selectează furnizorul": "Selectează furnizorul", "Selectează interval": "Select range", + "Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.": "Select the reason why work cannot continue. Visible to the manager.", "Selectează oră": "Select time", "Selectează perioadă": "Select period", "Semnat": "Signed", @@ -1045,12 +1123,15 @@ "Specificații": "Specificații", "Standard": "Standard", "Stare": "Stare", + "Stare timp": "Time state", + "Start": "Start", "Status": "Status", "Status dosar": "Status dosar", "Status implicit": "Default status", "Stoc": "Stock", "Stoc adăugat": "Stoc adăugat", "Stoc minim": "Stoc minim", + "Stoc minim atins": "Minimum stock reached", "Storage (MB)": "Storage (MB)", "Subcontractare": "Subcontracting", "Subcontractor": "Subcontractor", @@ -1065,6 +1146,7 @@ "Sunet": "Sound", "Sunt de acord": "I agree", "Sunteți sigur?": "Are you sure?", + "Sună": "Call", "Sursă": "Source", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Suspended", @@ -1100,6 +1182,7 @@ "Tenant not resolved": "Tenant not resolved", "Tenant suspendat.": "Tenant suspendat.", "Tenants recenți": "Tenants recenți", + "Tenants total": "Total tenants", "Termen": "Due date", "Termen limită": "Deadline", "Termene": "Termene", @@ -1122,15 +1205,18 @@ "Tip jante": "Tip jante", "Tipărește": "Print", "Tipărește etichete QR": "Tipărește etichete QR", + "Toate": "All", "Toate atelierele": "All workshops", "Toate autovehiculele": "All vehicles", "Toate categoriile": "All categories", "Toate cererile": "All leads", "Toate cheltuielile": "All expenses", "Toate comenzile": "All orders", - "Toate companiile": "Toate companiile", + "Toate companiile": "All companies", "Toate câmpurile": "All fields", "Toate limbile": "All languages", + "Toate ok": "All OK", + "Toate plătite": "All paid", "Toate plățile": "All payments", "Toate produsele": "All products", "Toate rolurile": "All roles", @@ -1138,12 +1224,13 @@ "Token public": "Token public", "Token revocat": "Token revocat", "Total": "Total", + "Total deals active": "Total active deals", "Total general": "Grand total", "Total net": "Total net", "Total plătit": "Total paid", "Total rezultate": "Total results", - "Total în baza de date": "Total în baza de date", - "Total înregistrate": "Total înregistrate", + "Total în baza de date": "Total in database", + "Total înregistrate": "Total registered", "Toți clienții": "All clients", "Toți utilizatorii": "All users", "Tracking & ETA": "Tracking & ETA", @@ -1163,7 +1250,7 @@ "Trimite reset parolă": "Trimite reset parolă", "UM": "Unit", "Ulei": "Oil", - "Ultim login": "Ultim login", + "Ultim login": "Last login", "Ultima actualizare": "Last updated", "Ultima autentificare": "Last login", "Ultima modificare": "Last modified", @@ -1171,6 +1258,7 @@ "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).", "Upgrade": "Upgrade", "Urgent": "Urgent", + "Urgente": "Urgent", "Urgență": "Urgency", "User API": "User API", "Useri": "Useri", @@ -1182,6 +1270,7 @@ "VIN căutare & piese": "VIN căutare & piese", "VIN-căutare": "VIN search", "Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.", + "Va fi adăugată în Cerere nouă": "Will be added to \"New lead\"", "Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod", "Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?", "Val.": "Val.", @@ -1192,11 +1281,13 @@ "Vehicul nou": "New vehicle", "Venit": "Revenue", "Venit generat": "Venit generat", + "Venit luna curentă": "Current month revenue", "Venit manopere": "Venit manopere", "Venituri": "Revenues", "Verificare": "Verification", "Verificat": "Verified", "Verifică emailul": "Check your email", + "Verifică și amintește": "Verify and remind", "Vezi imagine": "View image", "Vezi mai mult": "View more", "Vezi tot": "View all", @@ -1216,6 +1307,7 @@ "Webhook setat — botul e gata": "Webhook setat — botul e gata", "Weekend": "Weekend", "Welcome": "Welcome", + "WhatsApp": "WhatsApp", "Widget": "Widget", "XLS": "XLS", "Yes": "Yes", @@ -1229,33 +1321,42 @@ "Zoom out": "Zoom out", "achiziție": "achiziție", "achiziții": "achiziții", + "active": "active", + "actualizat": "updated", "angajați": "angajați", "apasă": "click", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", "canale marketing": "canale marketing", "cheltuială": "cheltuială", + "client": "client", "client magazin": "client magazin", - "clienți": "clienți", + "clienți": "clients", "clienți magazin": "clienți magazin", "coeficient": "coefficient", "coeficienți preț": "coeficienți preț", "comandă": "comandă", "comenzi online": "comenzi online", "deal-uri": "deal-uri", + "deals": "deals", "ex: Iarnă Michelin": "ex: Iarnă Michelin", "ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express", "ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", "factură": "factură", + "finalizat": "completed", "fișe lucru": "fișe lucru", "fișă": "fișă", + "fără client": "no client", + "h norm": "h norm", + "h real": "h real", "lucrare caroserie": "lucrare caroserie", "lucrare terți": "lucrare terți", "lucrări caroserie": "lucrări caroserie", "lucrări terți": "lucrări terți", - "mașini": "mașini", - "mașină": "mașină", + "mașini": "vehicles", + "mașină": "vehicle", + "new": "new", "niciodată": "niciodată", "norme-ore": "norme-ore", "normă": "normă", @@ -1380,19 +1481,26 @@ "subcontractor": "subcontractor", "subcontractori": "subcontractori", "template-uri": "template-uri", + "vip": "vip", "Împărtășește": "Share", + "În așteptare": "Pending", "În curs": "In progress", "În depozit": "In warehouse", + "În lucru": "In progress", "În pipeline": "In pipeline", + "În trial": "In trial", "Înainte": "Back", "Încarcă fișier": "Upload file", "Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV", "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.", + "Încasări (luna)": "Income (month)", "Începe": "Start", + "Începe lucrul": "Start work", "Închide": "Close", "Închide fișa": "Close order", "Închis": "Closed", "Închis la": "Closed at", + "Închise azi": "Closed today", "Încărcare STO": "Workshop load", "Încărcare service": "Workshop load", "Înregistrare": "Register", @@ -1414,7 +1522,9 @@ "șabloane servicii": "șabloane servicii", "șablon": "șablon", "Ține-mă minte": "Remember me", - "✓ Pe abonament plătit": "✓ Pe abonament plătit", + "⚠ Acțiune necesară": "⚠ Action needed", + "✓ Achitat": "✓ Paid", + "✓ Pe abonament plătit": "✓ On paid subscription", "🅿️ PayPal": "🅿️ PayPal", "🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)", "🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!", diff --git a/lang/ru.json b/lang/ru.json index cadbdf0..2f9777f 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -1,4 +1,5 @@ { + "#": "#", "$n sesiuni revoke-uite": "$n sesiuni revoke-uite", "% Manopere": "% Manopere", "% Piese": "% Piese", @@ -33,6 +34,7 @@ "Acces în aplicație (opțional)": "Acces în aplicație (opțional)", "Această acțiune este ireversibilă": "Это действие необратимо", "Achitat": "Оплачено", + "Achitat azi": "Оплачено сегодня", "Achiziții": "Закупки", "Acord": "Соглашение", "Acordat de": "Acordat de", @@ -40,6 +42,7 @@ "Activ": "Активный", "Activare": "Активация", "Active": "Активные", + "Active acum": "В работе сейчас", "Activează": "Активировать", "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.": "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.", "Activează PayPal": "Activează PayPal", @@ -49,14 +52,17 @@ "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".": "Activează magazinul public la .service.mir.md/shop. Piesele apar doar dacă sunt marcate „Publicat\".", "Activează plata prin transfer": "Activează plata prin transfer", "Activi": "Активные", + "Activitate recentă": "Недавняя активность", "Activă": "Активна", "Actualizat la": "Обновлено", "Actualizează": "Обновить", "Acțiune": "Действие", + "Acțiuni rapide": "Быстрые действия", "Acțiuni în bulk": "Массовые действия", "Acțiuni în masă": "Массовые действия", "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.", "Adaugă auto": "Добавить авто", + "Adaugă cerere": "Добавить заявку", "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.", "Adaugă cheltuială": "Добавить расход", "Adaugă client": "Добавить клиента", @@ -91,6 +97,7 @@ "Ai uitat parola?": "Забыли пароль?", "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".", "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).", + "Ale mele": "Мои", "Aleatoriu": "Случайно", "Alege categorie": "Выбрать категорию", "Alege client": "Выбрать клиента", @@ -107,16 +114,19 @@ "Alege vehicul": "Выбрать транспорт", "Alfabetic": "По алфавиту", "Alte cheltuieli": "Прочие расходы", + "Altă problemă": "Другая проблема", "An": "Год", "An fabricație": "Год выпуска", "Angajat din": "Angajat din", "Ani": "Годы", + "Anonim": "Аноним", "Antet": "Шапка", "Antet fișă": "Шапка наряда", "Anual": "Anual", "Anul curent": "Текущий год", "Anul trecut": "Прошлый год", "Anulat": "Отменено", + "Anulează": "Отмена", "Anulează fișa": "Отменить наряд", "Anvelope": "Шины", "Apare în magazinul online public.": "Apare în magazinul online public.", @@ -154,9 +164,15 @@ "Autentificare": "Аутентификация", "Autentificare 2FA": "2FA аутентификация", "Auto": "Авто", + "Auto / model": "Авто / модель", "AutoCRM SRL": "AutoCRM SRL", + "Automobile": "Автомобили", "Avans": "Аванс", + "Avans achitat": "Аванс оплачен", "Avg zile": "Avg zile", + "Azi": "Сегодня", + "Așteaptă piese": "Ждёт запчасти", + "Aștept aprobare client": "Ожидание одобрения клиента", "Așteptată": "Ожидается", "BIC / SWIFT": "BIC / SWIFT", "Backup": "Бэкап", @@ -169,8 +185,11 @@ "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", "Bifă": "Флажок", "Bine ai venit": "Добро пожаловать", + "Blocat": "Заблокировано", "Blocată": "Заблокирована", "Blochează": "Заблокировать", + "Blochez": "Блокировать", + "Blochez lucrarea": "Заблокировать работу", "Boală": "Больничный", "Bon": "Чек", "Bonuri": "Чеки", @@ -186,7 +205,9 @@ "Bună ziua": "Здравствуйте", "CSV": "CSV", "Calcul": "Calcul", + "Calcul.": "Расчёт", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", + "Calculație": "Расчёт", "Calculează luna curentă": "Calculează luna curentă", "Calendar": "Календарь", "Calendar vizual": "Calendar vizual", @@ -204,15 +225,22 @@ "Categorie implicită": "Категория по умолчанию", "Categorii": "Categorii", "Caută": "Поиск", + "Caută client, mașină, număr...": "Поиск клиента, авто, номера...", "Caută în tabel": "Поиск в таблице", "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", + "Ce a spus clientul...": "Что сказал клиент...", + "Cerere": "Заявка", + "Cerere nouă": "Новая заявка", + "Cerere nouă adăugată": "Новая заявка добавлена", "Cereri": "Заявки", + "Cereri noi": "Новые заявки", "Check-in depozit": "Check-in depozit", "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.": "Cheia HMAC pentru semnarea cererilor + verificarea webhook-urilor de la Paynet.", "Cheie": "Cheie", "Cheltuială": "Расход", "Cheltuieli": "Расходы", + "Cheltuieli (luna)": "Расходы (месяц)", "Cheltuit": "Потрачено", "Cheltuit 90d": "Cheltuit 90d", "Chitanțe": "Квитанции", @@ -223,7 +251,7 @@ "Claude API Key": "Claude API Key", "Client": "Клиент", "Client & Auto": "Client & Auto", - "Client CRM": "Client CRM", + "Client CRM": "Клиент CRM", "Client ID": "Client ID", "Client VIP": "Client VIP", "Client existent": "Существующий клиент", @@ -285,9 +313,11 @@ "Creat de": "Создано", "Creat la": "Создано", "Create": "Создать", + "Created at": "Создан", "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.", "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.", "Credit": "Кредит", + "Creează cerere": "Создать заявку", "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.", "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.": "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.", "Crescător": "По возрастанию", @@ -330,6 +360,7 @@ "Date personale": "Date personale", "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.", "Datorie": "Долг", + "Datorii clienți": "Задолженности клиентов", "Daune": "Daune", "De către": "De către", "De la": "От", @@ -337,8 +368,10 @@ "De la data": "С даты", "De la ora": "С", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", - "De procesat": "De procesat", + "De procesat": "К обработке", "Deal": "Сделка", + "Deal nou": "Новая сделка", + "Deal-uri active": "Активные сделки", "Deals": "Сделки", "Debit": "Дебет", "Deblochează": "Разблокировать", @@ -356,10 +389,15 @@ "Depozit implicit": "Склад по умолчанию", "Depozit țintă": "Целевой склад", "Depublică": "Снять с публикации", + "Depășit termen": "Просрочено", "Descarcă PDF": "Скачать PDF", "Descarcă factura": "Скачать счёт", "Descarcă template": "Скачать шаблон", "Deschide": "Открыть", + "Deschide Fișă": "Открыть наряд", + "Deschide deal": "Открыть сделку", + "Deschide fișa": "Открыть наряд", + "Deschide fișa pentru aprobare lucrare/piesă.": "Откройте наряд для одобрения работы/запчасти.", "Deschide tenantul": "Deschide tenantul", "Deschis": "Открыт", "Deschis la": "Открыт", @@ -367,6 +405,7 @@ "Descriere": "Описание", "Descriere produs": "Описание товара", "Detalii": "Подробности", + "Detalii (opțional)": "Детали (опционально)", "Detalii auto": "Данные авто", "Detalii client": "Данные клиента", "Detalii comandă": "Данные заказа", @@ -395,6 +434,7 @@ "Doar utilizatorii mei": "Только мои пользователи", "Document": "Документ", "Documente": "Документы", + "Done": "Готово", "Downgrade": "Понижение", "Drept": "Право", "Drepturi": "Права", @@ -408,7 +448,9 @@ "Durată reală": "Фактическая длительность", "EJk...": "EJk...", "ETA": "ETA", + "Echipament defect": "Неисправное оборудование", "Edit": "Изменить", + "Editare": "Изменить", "Editează": "Изменить", "Editează drepturi": "Editează drepturi", "Editează produs": "Изменить товар", @@ -429,6 +471,7 @@ "Ex: 20": "Ex: 20", "Ex: 20 pentru +20%": "Ex: 20 pentru +20%", "Ex: 25": "Ex: 25", + "Ex: Lipsește filtrul Mann W712/83": "Например: Нет фильтра Mann W712/83", "Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric", "Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...", "Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.", @@ -436,11 +479,14 @@ "Excepții": "Исключения", "Excepții drepturi": "Исключения прав", "Expiră": "Expiră", + "Expiră < 7 zile": "Истекает < 7 дней", "Expiră la (opțional)": "Expiră la (opțional)", + "Export": "Экспорт", "Export CSV": "Экспорт CSV", "Extras": "Выписка", "Ești sigur?": "Ты уверен?", "Facturi": "Счета", + "Facturi neplătite": "Неоплаченные счета", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Счёт", "Factură importată": "Factură importată", @@ -464,6 +510,7 @@ "Fișiere": "Файлы", "Fișă": "Наряд", "Fișă asociată": "Fișă asociată", + "Fișă de lucru": "Заказ-наряд", "Fișă lucru": "Fișă lucru", "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.", "Folosit dacă markup = 0.": "Folosit dacă markup = 0.", @@ -486,7 +533,10 @@ "Furnizor preferat": "Furnizor preferat", "Furnizori": "Поставщики", "Fără TVA": "Без НДС", + "Fără răspuns": "Без ответа", "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.", + "Gata": "Готов", + "Gata de ridicare": "Готов к выдаче", "Gata estimat (ETA)": "Gata estimat (ETA)", "Gemini API Key": "Gemini API Key", "General": "Общее", @@ -495,6 +545,7 @@ "Generează raport": "Сгенерировать отчёт", "Generează token": "Generează token", "Global": "Глобально", + "Gol — trage un card aici": "Пусто — перетащите карточку сюда", "Grafic": "График", "Gravitate": "Gravitate", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.", @@ -567,8 +618,11 @@ "Limite": "Limite", "Linii": "Linii", "Link client (QR)": "Link client (QR)", + "Link tracking": "Ссылка отслеживания", "Lipsă": "Lipsă", + "Lipsă piesă": "Нет запчасти", "Liste configurabile": "Настраиваемые списки", + "Listă": "Список", "Livrare": "Livrare", "Livrare (zile)": "Livrare (zile)", "Livrare gratuită peste": "Livrare gratuită peste", @@ -599,7 +653,9 @@ "Luni (zi)": "Понедельник", "Lățime": "Lățime", "MD00 AG00 0000 ...": "MD00 AG00 0000 ...", - "MRR realizat": "MRR realizat", + "MDL pipeline total": "MDL всего в воронке", + "MDL închise azi": "MDL закрыто сегодня", + "MRR realizat": "Реализованный MRR", "Magazin": "Magazin", "Magazin activ": "Magazin activ", "Magazin online": "Онлайн-магазин", @@ -610,6 +666,7 @@ "Manopere": "Работы", "Manoperă": "Работа", "Marca": "Marca", + "Marchează Gata": "Отметить готово", "Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).", "Marchează anulat": "Отметить как отменено", "Marchează plătit": "Отметить как оплачено", @@ -636,7 +693,7 @@ "Max mașini": "Max mașini", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", - "Mașini": "Mașini", + "Mașini": "Автомобили", "Mecanic implicit": "Механик по умолчанию", "Mediu": "Средний", "Merchant Code": "Merchant Code", @@ -648,7 +705,7 @@ "Metode plată": "Способы оплаты", "Metodă plată": "Способ оплаты", "Miercuri": "Среда", - "Min.": "Min.", + "Min.": "Мин.", "Minim": "Minim", "Minute": "Минуты", "Mod": "Режим", @@ -671,6 +728,10 @@ "Mulțumim": "Спасибо", "Mâine": "Завтра", "Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)", + "Neachitat": "Не оплачено", + "Necesită acțiune": "Требует действия", + "Necesită aprobare": "Требуется одобрение", + "Necesită aprobare client": "Требуется одобрение клиента", "Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.", "Necompletat": "Не заполнено", "Necunoscut": "Неизвестно", @@ -680,6 +741,8 @@ "Nesincronizat": "Не синхронизировано", "Net 30 / Avans": "Net 30 / Avans", "Neverificat": "Не проверено", + "New client": "Новый клиент", + "New mașină": "Новое авто", "Nicio comandă încă": "Nicio comandă încă", "Nicio daună marcată": "Nicio daună marcată", "Nicio factură generată": "Nicio factură generată", @@ -688,7 +751,7 @@ "Nicio lucrare la terți": "Nicio lucrare la terți", "Nicio mașină încă": "Nicio mașină încă", "Nicio piesă implicită": "Nicio piesă implicită", - "Niciodată": "Niciodată", + "Niciodată": "Никогда", "Niciun client magazin": "Niciun client magazin", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", @@ -712,6 +775,8 @@ "Notifications": "Уведомления", "Notificări": "Уведомления", "Notițe": "Заметки", + "Notițe / Reclamație": "Заметки / Жалоба", + "Notițe / reclamație": "Заметки / жалоба", "Notițe interne": "Notițe interne", "Nou": "Новый", "Nou tehnician": "Nou tehnician", @@ -783,7 +848,9 @@ "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", "Pauză": "Пауза", + "Pe pauză": "На паузе", "Penalizări": "Penalizări", + "Per page": "На странице", "Perioada (YYYY-MM)": "Perioada (YYYY-MM)", "Perioadă": "Период", "Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)", @@ -819,6 +886,7 @@ "Politici": "Политики", "Pontaj": "Табель", "Populare": "Популярные", + "Posibili clienți noi": "Потенциальные новые клиенты", "Post actualizat": "Post actualizat", "Poze": "Фото", "Pozele auto": "Фото авто", @@ -865,13 +933,20 @@ "Profil": "Profil", "Profile": "Профиль", "Profit": "Прибыль", + "Profit (luna)": "Прибыль (месяц)", + "Programare": "Запись", "Programare adăugată": "Programare adăugată", "Programare confirmată": "Programare confirmată", + "Programare creată · mâine 10:00": "Запись создана · завтра 10:00", "Programare mutată": "Programare mutată", "Programare ștearsă": "Programare ștearsă", + "Programat": "Запланировано", + "Programează": "Запланировать", "Programează întâlnire": "Запланировать встречу", "Programări": "Записи", + "Programări azi": "Записи сегодня", "Progres": "Progres", + "Progres etapă": "Прогресс этапа", "Proprietar": "Владелец", "Provider implicit": "Provider implicit", "Public": "Публично", @@ -891,6 +966,7 @@ "ROI": "ROI", "Rapoarte": "Отчёты", "Raport": "Отчёт", + "Rata conversie": "Конверсия", "Rating": "Рейтинг", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Реактивировать", @@ -963,6 +1039,7 @@ "Rânduri": "Строки", "Rânduri per pagină": "Строк на странице", "Rămas": "Rămas", + "SMS": "SMS", "Salarii": "Зарплаты", "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Зарплата и маржа", @@ -1000,6 +1077,7 @@ "Selectează fișier": "Выберите файл", "Selectează furnizorul": "Selectează furnizorul", "Selectează interval": "Выберите интервал", + "Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.": "Выберите причину, по которой работа не может продолжаться. Будет видно менеджеру.", "Selectează oră": "Выберите время", "Selectează perioadă": "Выберите период", "Semnat": "Подписано", @@ -1045,12 +1123,15 @@ "Specificații": "Specificații", "Standard": "Стандартно", "Stare": "Stare", + "Stare timp": "Время", + "Start": "Старт", "Status": "Статус", "Status dosar": "Status dosar", "Status implicit": "Статус по умолчанию", "Stoc": "Остаток", "Stoc adăugat": "Stoc adăugat", "Stoc minim": "Stoc minim", + "Stoc minim atins": "Достигнут мин. остаток", "Storage (MB)": "Storage (MB)", "Subcontractare": "Субподряд", "Subcontractor": "Субподрядчик", @@ -1065,6 +1146,7 @@ "Sunet": "Звук", "Sunt de acord": "Я согласен", "Sunteți sigur?": "Вы уверены?", + "Sună": "Позвонить", "Sursă": "Источник", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Приостановлено", @@ -1100,6 +1182,7 @@ "Tenant not resolved": "Tenant not resolved", "Tenant suspendat.": "Tenant suspendat.", "Tenants recenți": "Tenants recenți", + "Tenants total": "Всего тенантов", "Termen": "Срок", "Termen limită": "Крайний срок", "Termene": "Termene", @@ -1122,15 +1205,18 @@ "Tip jante": "Tip jante", "Tipărește": "Печать", "Tipărește etichete QR": "Tipărește etichete QR", + "Toate": "Все", "Toate atelierele": "Все мастерские", "Toate autovehiculele": "Все авто", "Toate categoriile": "Все категории", "Toate cererile": "Все заявки", "Toate cheltuielile": "Все расходы", "Toate comenzile": "Все заказы", - "Toate companiile": "Toate companiile", + "Toate companiile": "Все компании", "Toate câmpurile": "Все поля", "Toate limbile": "Все языки", + "Toate ok": "Всё в порядке", + "Toate plătite": "Все оплачены", "Toate plățile": "Все платежи", "Toate produsele": "Все товары", "Toate rolurile": "Все роли", @@ -1138,12 +1224,13 @@ "Token public": "Token public", "Token revocat": "Token revocat", "Total": "Итого", + "Total deals active": "Всего активных сделок", "Total general": "Общий итог", "Total net": "Total net", "Total plătit": "Всего оплачено", "Total rezultate": "Всего результатов", - "Total în baza de date": "Total în baza de date", - "Total înregistrate": "Total înregistrate", + "Total în baza de date": "Всего в базе", + "Total înregistrate": "Всего зарегистрировано", "Toți clienții": "Все клиенты", "Toți utilizatorii": "Все пользователи", "Tracking & ETA": "Отслеживание и ETA", @@ -1163,14 +1250,15 @@ "Trimite reset parolă": "Trimite reset parolă", "UM": "Ед.", "Ulei": "Масло", - "Ultim login": "Ultim login", + "Ultim login": "Последний вход", "Ultima actualizare": "Последнее обновление", "Ultima autentificare": "Последний вход", "Ultima modificare": "Последнее изменение", "Ultima sincronizare": "Последняя синхронизация", "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).", "Upgrade": "Обновление", - "Urgent": "Срочный", + "Urgent": "Срочно", + "Urgente": "Срочные", "Urgență": "Срочность", "User API": "User API", "Useri": "Useri", @@ -1182,6 +1270,7 @@ "VIN căutare & piese": "VIN căutare & piese", "VIN-căutare": "VIN-поиск", "Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.", + "Va fi adăugată în Cerere nouă": "Будет добавлена в «Новая заявка»", "Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod", "Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?", "Val.": "Val.", @@ -1192,11 +1281,13 @@ "Vehicul nou": "Новый транспорт", "Venit": "Доход", "Venit generat": "Venit generat", + "Venit luna curentă": "Доход тек. месяца", "Venit manopere": "Venit manopere", "Venituri": "Доходы", "Verificare": "Проверка", "Verificat": "Проверено", "Verifică emailul": "Проверьте email", + "Verifică și amintește": "Проверить и напомнить", "Vezi imagine": "Просмотр изображения", "Vezi mai mult": "Смотреть больше", "Vezi tot": "Смотреть все", @@ -1216,6 +1307,7 @@ "Webhook setat — botul e gata": "Webhook setat — botul e gata", "Weekend": "Выходные", "Welcome": "Добро пожаловать", + "WhatsApp": "WhatsApp", "Widget": "Виджет", "XLS": "XLS", "Yes": "Да", @@ -1229,33 +1321,42 @@ "Zoom out": "Отдалить", "achiziție": "achiziție", "achiziții": "achiziții", + "active": "активный", + "actualizat": "обновлено", "angajați": "angajați", "apasă": "нажмите", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", "canale marketing": "canale marketing", "cheltuială": "cheltuială", + "client": "клиент", "client magazin": "client magazin", - "clienți": "clienți", + "clienți": "клиенты", "clienți magazin": "clienți magazin", "coeficient": "коэффициент", "coeficienți preț": "coeficienți preț", "comandă": "comandă", "comenzi online": "comenzi online", "deal-uri": "deal-uri", + "deals": "сделок", "ex: Iarnă Michelin": "ex: Iarnă Michelin", "ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express", "ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", "factură": "factură", + "finalizat": "завершено", "fișe lucru": "fișe lucru", "fișă": "fișă", + "fără client": "без клиента", + "h norm": " ч норм", + "h real": " ч факт", "lucrare caroserie": "lucrare caroserie", "lucrare terți": "lucrare terți", "lucrări caroserie": "lucrări caroserie", "lucrări terți": "lucrări terți", - "mașini": "mașini", - "mașină": "mașină", + "mașini": "машины", + "mașină": "машина", + "new": "новый", "niciodată": "niciodată", "norme-ore": "norme-ore", "normă": "normă", @@ -1380,19 +1481,26 @@ "subcontractor": "субподрядчик", "subcontractori": "subcontractori", "template-uri": "template-uri", + "vip": "vip", "Împărtășește": "Поделиться", + "În așteptare": "В ожидании", "În curs": "В процессе", "În depozit": "На складе", + "În lucru": "В работе", "În pipeline": "В воронке", + "În trial": "В триале", "Înainte": "Назад", "Încarcă fișier": "Загрузить файл", "Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV", "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.", + "Încasări (luna)": "Поступления (месяц)", "Începe": "Начать", + "Începe lucrul": "Начать работу", "Închide": "Закрыть", "Închide fișa": "Закрыть наряд", "Închis": "Закрыт", "Închis la": "Закрыт", + "Închise azi": "Закрыто сегодня", "Încărcare STO": "Загрузка СТО", "Încărcare service": "Загрузка сервиса", "Înregistrare": "Регистрация", @@ -1414,7 +1522,9 @@ "șabloane servicii": "șabloane servicii", "șablon": "șablon", "Ține-mă minte": "Запомнить меня", - "✓ Pe abonament plătit": "✓ Pe abonament plătit", + "⚠ Acțiune necesară": "⚠ Требуется действие", + "✓ Achitat": "✓ Оплачено", + "✓ Pe abonament plătit": "✓ На платной подписке", "🅿️ PayPal": "🅿️ PayPal", "🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)", "🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!", diff --git a/resources/views/filament/tenant/pages/mechanic-board.blade.php b/resources/views/filament/tenant/pages/mechanic-board.blade.php index da52b1f..8b9d060 100644 --- a/resources/views/filament/tenant/pages/mechanic-board.blade.php +++ b/resources/views/filament/tenant/pages/mechanic-board.blade.php @@ -71,11 +71,11 @@
-
Active acum
+
{{ __('Active acum') }}
{{ $counts['active'] }}
-
Închise azi
+
{{ __('Închise azi') }}
{{ $counts['closed_today'] }}
@@ -93,7 +93,7 @@ #{{ $wo->number }} {{ $wo->vehicle?->plate ?? '—' }} -
{{ $wo->client?->name ?? 'fără client' }} · {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }}
+
{{ $wo->client?->name ?? __('fără client') }} · {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }}
@if ($wo->complaint)
{{ $wo->complaint }}
@endif @@ -112,31 +112,31 @@
{{ $w->name }}
- {{ \App\Models\Tenant\WorkOrderWork::MECHANIC_STATUSES[$ms] }} + {{ __(\App\Models\Tenant\WorkOrderWork::MECHANIC_STATUSES[$ms]) }} @if ($w->hours > 0) - {{ rtrim(rtrim(number_format($w->hours, 2), '0'), '.') }}h norm + {{ rtrim(rtrim(number_format($w->hours, 2), '0'), '.') }}{{ __('h norm') }} @endif @if ($w->actual_hours > 0 && $effColor) - {{ rtrim(rtrim(number_format($w->actual_hours, 2), '0'), '.') }}h real ({{ $w->efficiencyPct() }}%) + {{ rtrim(rtrim(number_format($w->actual_hours, 2), '0'), '.') }}{{ __('h real') }} ({{ $w->efficiencyPct() }}%) @endif @if ($w->block_reason) - ⚠ {{ \App\Models\Tenant\WorkOrderWork::BLOCK_REASONS[$w->block_reason] ?? $w->block_reason }} + ⚠ {{ __(\App\Models\Tenant\WorkOrderWork::BLOCK_REASONS[$w->block_reason] ?? $w->block_reason) }} @endif
@if (in_array($ms, ['pending', 'blocked'])) - + @endif @if ($ms === 'in_progress') - - - + + + @endif @if ($ms === 'paused') - - + + @endif
@@ -155,19 +155,19 @@ @if ($blockingWorkId)
-

🔴 Blochez lucrarea

-

Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.

- +

🔴 {{ __('Blochez lucrarea') }}

+

{{ __('Selectează motivul pentru care lucrarea nu poate continua. Va fi vizibil managerului.') }}

+ - - + +
- - + +
diff --git a/resources/views/filament/tenant/pages/pipeline-board.blade.php b/resources/views/filament/tenant/pages/pipeline-board.blade.php index b7d602b..8515839 100644 --- a/resources/views/filament/tenant/pages/pipeline-board.blade.php +++ b/resources/views/filament/tenant/pages/pipeline-board.blade.php @@ -199,16 +199,16 @@
{{-- TOPBAR --}}
- Pipeline + {{ __('Pipeline') }}
- - ⬇ Export - + + ⬇ {{ __('Export') }} +
@@ -216,49 +216,49 @@
{{ $stats['active'] }} - Total deals active + {{ __('Total deals active') }}
{{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }} - MDL pipeline total + {{ __('MDL pipeline total') }}
{{ number_format($stats['closed_today_mdl'], 0, '.', ' ') }} - MDL închise azi + {{ __('MDL închise azi') }}
{{ $stats['need_action'] }} - Necesită acțiune + {{ __('Necesită acțiune') }}
{{ $stats['conversion_rate'] }}% - Rata conversie + {{ __('Rata conversie') }}
{{ $stats['overdue'] }} - Depășit termen + {{ __('Depășit termen') }}
{{-- FILTER BAR --}}
-
📋 Kanban
-
≡ Listă
+
📋 {{ __('Kanban') }}
+
≡ {{ __('Listă') }}
-
Toate
-
👤 Ale mele
-
⚠ Urgente
-
📅 Azi
+
{{ __('Toate') }}
+
👤 {{ __('Ale mele') }}
+
⚠ {{ __('Urgente') }}
+
📅 {{ __('Azi') }}
-
📅 {{ now()->locale('ro')->isoFormat('MMMM YYYY') }}
-
Pipeline: {{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }} MDL · {{ $stats['active'] }} deals
+
📅 {{ now()->locale(app()->getLocale())->isoFormat('MMMM YYYY') }}
+
{{ __('Pipeline') }}: {{ number_format($stats['pipeline_mdl'], 0, '.', ' ') }} MDL · {{ $stats['active'] }} {{ __('deals') }}
{{-- KANBAN --}} @@ -297,29 +297,29 @@
@if ($colKey === 'request') {{-- 📅 calendar-plus / 📞 phone / ⋮ --}} - 📅 - @if (!empty($card['phone']))📞@endif - + 📅 + @if (!empty($card['phone']))📞@endif + @elseif ($colKey === 'quote') {{-- 📅 / 💬 message / ⋮ --}} - 📅 - @if (!empty($card['phone']))💬@endif - + 📅 + @if (!empty($card['phone']))💬@endif + @elseif ($colKey === 'scheduled') {{-- 📄+ file-plus (start WO) / 💬 / ⋮ --}} - 📄 - @if (!empty($card['phone']))💬@endif - + 📄 + @if (!empty($card['phone']))💬@endif + @elseif ($colKey === 'in_work') {{-- 👁 eye / 💬 / ⋮ --}} - 👁 - @if (!empty($card['phone']))💬@endif - + 👁 + @if (!empty($card['phone']))💬@endif + @elseif ($colKey === 'ready') {{-- 💰 cash / 💬 / ⋮ --}} - 💰 - @if (!empty($card['phone']))📞@endif - + 💰 + @if (!empty($card['phone']))📞@endif + @endif
{{ $card['code'] }}
@@ -328,7 +328,7 @@ @if (!empty($card['tags']))
@foreach ($card['tags'] as $tag) - {{ $tag['label'] }} + {{ __($tag['label']) }} @endforeach
@endif @@ -350,10 +350,10 @@ @endif
@empty -
Gol — trage un card aici
+
{{ __('Gol — trage un card aici') }}
@endforelse @if ($colKey !== 'paid') - + @endif @@ -366,7 +366,7 @@ @foreach (['#', 'Subiect', 'Client', 'Auto', 'Etapă', 'Sumă', 'Responsabil', 'Stare timp'] as $h) - {{ $h }} + {{ __($h) }} @endforeach @@ -395,40 +395,40 @@ @if ($showNewForm)
-
Cerere nouă
-
Va fi adăugată în Cerere nouă
+
{{ __('Cerere nouă') }}
+
{{ __('Va fi adăugată în Cerere nouă') }}
- +
- +
- +
- +
- - + +
- - + +
@endif @@ -446,7 +446,7 @@
-
Progres etapă
+
{{ __('Progres etapă') }}
@foreach ($detail['stages'] as $st)
@@ -454,7 +454,7 @@
@foreach ($detail['stages'] as $st) -
{{ $st['label'] }}
+
{{ __($st['label']) }}
@endforeach
@@ -464,15 +464,15 @@ @foreach ($detail['fields'] as $label => $value) @if ($value)
-
{{ $label }}
-
{{ $value }}
+
{{ __($label) }}
+
{{ $value }}
@endif @endforeach
@if ($detail['note'])
-
Notițe / Reclamație
+
{{ __('Notițe / Reclamație') }}
{{ $detail['note'] }}
@endif @@ -480,21 +480,21 @@ @if (!empty($detail['wo']))
-
Fișă de lucru
+
{{ __('Fișă de lucru') }}
-
{{ $detail['wo']['number'] }} · {{ $detail['wo']['status_label'] }}
+
{{ $detail['wo']['number'] }} · {{ __($detail['wo']['status_label']) }}
- @if (!is_null($detail['wo']['progress_pct'])){{ $detail['wo']['progress_pct'] }}% finalizat @endif + @if (!is_null($detail['wo']['progress_pct'])){{ $detail['wo']['progress_pct'] }}% {{ __('finalizat') }} @endif @if ($detail['wo']['eta']) · ETA {{ $detail['wo']['eta'] }} @endif
- ↗ Deschide + ↗ {{ __('Deschide') }}
@if (!empty($detail['wo']['has_pending_approval']))
-
⚠ Necesită aprobare client
-
Deschide fișa pentru aprobare lucrare/piesă.
+
⚠ {{ __('Necesită aprobare client') }}
+
{{ __('Deschide fișa pentru aprobare lucrare/piesă.') }}
@endif
@@ -502,7 +502,7 @@ @if (!empty($detail['activity']))
-
Activitate recentă
+
{{ __('Activitate recentă') }}
@foreach ($detail['activity'] as $a)
@@ -516,15 +516,15 @@ @endif
-
Acțiuni rapide
+
{{ __('Acțiuni rapide') }}
@if (!empty($detail['phone'])) - 💚 WhatsApp - 📞 Sună - 💬 SMS + 💚 {{ __('WhatsApp') }} + 📞 {{ __('Sună') }} + 💬 {{ __('SMS') }} @endif @if (!empty($detail['wo']['tracking_url'])) - 🔗 Link tracking + 🔗 {{ __('Link tracking') }} @endif
@@ -533,11 +533,11 @@
@php $kind = explode(':', $openCardKey)[0] ?? '' @endphp @if (in_array($kind, ['lead', 'deal']) && empty($detail['wo'])) - 📅 Programează - ↗ Deschide deal + 📅 {{ __('Programează') }} + ↗ {{ __('Deschide deal') }} @elseif ($kind === 'wo') - 📅 Calendar - ↗ Deschide Fișă + 📅 {{ __('Calendar') }} + ↗ {{ __('Deschide Fișă') }} @endif
@endif