From 7077fff3b3f164fab0108e0443958ca36f649cc2 Mon Sep 17 00:00:00 2001 From: Vasyka Date: Wed, 15 Jul 2026 06:17:10 +0000 Subject: [PATCH] feat(i18n): convert 38 hardcoded static labels + safe blade wrap + 226 keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Convert all remaining static \$modelLabel/\$pluralModelLabel to getter methods with __() (AppointmentResource, WorkOrderResource, MasterResource, ServiceTemplateResource, LaborResource, and 33 others) - Safe blade wrap v2 (37 files, 201 wraps): fixed the regex to not match `->`, `=>`, `!<` — previous aggressive pass broke @if directives - Bulk-translate lowercase model-label keys (programări, fișe lucru, tehnicieni, șabloane servicii, norme-ore, etc.) — these were the RO strings appearing in page titles/breadcrumbs - Add human RU/EN for mechanic-kpi (Mecanic/Lucrări/Norma ore/etc.) and calendar-board words Tests 306 green. Blade compiles cleanly. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Central/Resources/CompanyResource.php | 14 +- .../Central/Resources/PlanResource.php | 14 +- .../Resources/SubscriptionResource.php | 7 +- .../Central/Resources/SuperAdminResource.php | 14 +- .../Tenant/Resources/ActivityResource.php | 14 +- .../Tenant/Resources/AppointmentResource.php | 7 +- .../Tenant/Resources/CallResource.php | 14 +- .../Tenant/Resources/ClientResource.php | 7 +- .../Tenant/Resources/DealResource.php | 14 +- .../Resources/EmployeeProfileResource.php | 7 +- .../Tenant/Resources/ExpenseResource.php | 7 +- .../Tenant/Resources/LaborResource.php | 7 +- .../Tenant/Resources/LeadResource.php | 14 +- .../Resources/MarketingChannelResource.php | 7 +- .../Tenant/Resources/MasterResource.php | 14 +- .../Resources/MessageTemplateResource.php | 14 +- .../Tenant/Resources/PartResource.php | 7 +- .../Resources/PayrollAdjustmentResource.php | 7 +- .../Tenant/Resources/PayrollRunResource.php | 14 +- .../Tenant/Resources/PostResource.php | 7 +- .../Tenant/Resources/RoleResource.php | 14 +- .../Tenant/Resources/SupplierResource.php | 14 +- .../Tenant/Resources/UserResource.php | 14 +- .../Tenant/Resources/WarehouseResource.php | 14 +- lang/en.json | 227 +++++++++++++++--- lang/ru.json | 225 ++++++++++++++--- .../emails/appointment-confirmed.blade.php | 8 +- .../views/emails/payment-received.blade.php | 2 +- .../views/emails/service-reminder.blade.php | 2 +- .../emails/shop/order-confirmation.blade.php | 6 +- .../views/emails/work-order-ready.blade.php | 4 +- .../central/pages/payment-settings.blade.php | 6 +- .../central/resources/company/view.blade.php | 24 +- .../views/filament/tenant/ai-reply.blade.php | 4 +- .../tenant/pages/ai-assistant.blade.php | 6 +- .../tenant/pages/api-tokens.blade.php | 14 +- .../filament/tenant/pages/backup.blade.php | 6 +- .../filament/tenant/pages/calendar.blade.php | 68 +++--- .../pages/excel-import-wizard.blade.php | 12 +- .../filament/tenant/pages/finance.blade.php | 16 +- .../tenant/pages/integrations.blade.php | 2 +- .../tenant/pages/mechanic-kpi.blade.php | 8 +- .../tenant/pages/onboarding.blade.php | 2 +- .../tenant/pages/pipeline-board.blade.php | 4 +- .../tenant/pages/recommendations.blade.php | 2 +- .../filament/tenant/pages/reports.blade.php | 26 +- .../filament/tenant/pages/scanner.blade.php | 2 +- .../tenant/pages/vin-search.blade.php | 12 +- .../views/filament/tenant/part-qr.blade.php | 2 +- .../filament/tenant/tracking-qr.blade.php | 2 +- .../filament/tenant/vin-decode.blade.php | 8 +- resources/views/parts/labels.blade.php | 2 +- resources/views/pdf/appointments.blade.php | 12 +- resources/views/pdf/work-order.blade.php | 32 +-- resources/views/shop/vin.blade.php | 2 +- .../views/site/bank-instructions.blade.php | 10 +- resources/views/site/billing.blade.php | 16 +- resources/views/site/checkout-stub.blade.php | 2 +- resources/views/site/landing.blade.php | 12 +- .../views/site/payment-success.blade.php | 2 +- resources/views/tenant/expired.blade.php | 4 +- resources/views/tenant/suspended.blade.php | 4 +- resources/views/welcome.blade.php | 20 +- 63 files changed, 800 insertions(+), 284 deletions(-) diff --git a/app/Filament/Central/Resources/CompanyResource.php b/app/Filament/Central/Resources/CompanyResource.php index 1218621..5ad0597 100644 --- a/app/Filament/Central/Resources/CompanyResource.php +++ b/app/Filament/Central/Resources/CompanyResource.php @@ -24,9 +24,19 @@ class CompanyResource extends Resource return __('nav.label.Companii'); } - protected static ?string $modelLabel = 'companie'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'companii'; + public static function getModelLabel(): string + { + return __('companie'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('companii'); + } protected static ?int $navigationSort = 10; diff --git a/app/Filament/Central/Resources/PlanResource.php b/app/Filament/Central/Resources/PlanResource.php index b57d734..ae117f2 100644 --- a/app/Filament/Central/Resources/PlanResource.php +++ b/app/Filament/Central/Resources/PlanResource.php @@ -24,9 +24,19 @@ class PlanResource extends Resource return __('nav.label.Planuri'); } - protected static ?string $modelLabel = 'plan'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'planuri'; + public static function getModelLabel(): string + { + return __('plan'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('planuri'); + } protected static ?int $navigationSort = 20; diff --git a/app/Filament/Central/Resources/SubscriptionResource.php b/app/Filament/Central/Resources/SubscriptionResource.php index b906bd7..67fe1d5 100644 --- a/app/Filament/Central/Resources/SubscriptionResource.php +++ b/app/Filament/Central/Resources/SubscriptionResource.php @@ -35,7 +35,12 @@ class SubscriptionResource extends Resource return __('factură'); } - protected static ?string $pluralModelLabel = 'facturi'; + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('facturi'); + } protected static ?int $navigationSort = 30; diff --git a/app/Filament/Central/Resources/SuperAdminResource.php b/app/Filament/Central/Resources/SuperAdminResource.php index c03adaa..c98d30f 100644 --- a/app/Filament/Central/Resources/SuperAdminResource.php +++ b/app/Filament/Central/Resources/SuperAdminResource.php @@ -25,9 +25,19 @@ class SuperAdminResource extends Resource return __('nav.label.Utilizatori'); } - protected static ?string $modelLabel = 'utilizator'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'utilizatori'; + public static function getModelLabel(): string + { + return __('utilizator'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('utilizatori'); + } protected static string|\UnitEnum|null $navigationGroup = null; diff --git a/app/Filament/Tenant/Resources/ActivityResource.php b/app/Filament/Tenant/Resources/ActivityResource.php index 9a4ab7f..e29a600 100644 --- a/app/Filament/Tenant/Resources/ActivityResource.php +++ b/app/Filament/Tenant/Resources/ActivityResource.php @@ -26,9 +26,19 @@ class ActivityResource extends Resource return __('nav.group.Admin'); } - protected static ?string $modelLabel = 'eveniment'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'jurnal'; + public static function getModelLabel(): string + { + return __('eveniment'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('jurnal'); + } protected static ?int $navigationSort = 95; diff --git a/app/Filament/Tenant/Resources/AppointmentResource.php b/app/Filament/Tenant/Resources/AppointmentResource.php index eba7e97..1cb504c 100644 --- a/app/Filament/Tenant/Resources/AppointmentResource.php +++ b/app/Filament/Tenant/Resources/AppointmentResource.php @@ -32,7 +32,12 @@ class AppointmentResource extends Resource return __('nav.group.CRM'); } - protected static ?string $modelLabel = 'programare'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('programare'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/CallResource.php b/app/Filament/Tenant/Resources/CallResource.php index 6fbc240..1ecb547 100644 --- a/app/Filament/Tenant/Resources/CallResource.php +++ b/app/Filament/Tenant/Resources/CallResource.php @@ -29,9 +29,19 @@ class CallResource extends Resource return __('nav.group.Marketing'); } - protected static ?string $modelLabel = 'apel'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'apeluri'; + public static function getModelLabel(): string + { + return __('apel'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('apeluri'); + } protected static ?int $navigationSort = 62; diff --git a/app/Filament/Tenant/Resources/ClientResource.php b/app/Filament/Tenant/Resources/ClientResource.php index 54c5d92..98f98d7 100644 --- a/app/Filament/Tenant/Resources/ClientResource.php +++ b/app/Filament/Tenant/Resources/ClientResource.php @@ -23,7 +23,12 @@ class ClientResource extends Resource return __('nav.label.Clienți'); } - protected static ?string $modelLabel = 'client'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('client'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/DealResource.php b/app/Filament/Tenant/Resources/DealResource.php index 9747fab..22f9f56 100644 --- a/app/Filament/Tenant/Resources/DealResource.php +++ b/app/Filament/Tenant/Resources/DealResource.php @@ -37,9 +37,19 @@ class DealResource extends Resource return false; // PipelineBoard page is the canonical entry; this resource keeps CRUD routes for edit/create. } - protected static ?string $modelLabel = 'deal'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'deal-uri'; + public static function getModelLabel(): string + { + return __('deal'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('deal-uri'); + } protected static ?int $navigationSort = 6; diff --git a/app/Filament/Tenant/Resources/EmployeeProfileResource.php b/app/Filament/Tenant/Resources/EmployeeProfileResource.php index 996c501..e9f9bf6 100644 --- a/app/Filament/Tenant/Resources/EmployeeProfileResource.php +++ b/app/Filament/Tenant/Resources/EmployeeProfileResource.php @@ -29,7 +29,12 @@ class EmployeeProfileResource extends Resource return __('nav.group.Finanțe'); } - protected static ?string $modelLabel = 'angajat'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('angajat'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/ExpenseResource.php b/app/Filament/Tenant/Resources/ExpenseResource.php index 68a07da..c369eaa 100644 --- a/app/Filament/Tenant/Resources/ExpenseResource.php +++ b/app/Filament/Tenant/Resources/ExpenseResource.php @@ -36,7 +36,12 @@ class ExpenseResource extends Resource return __('cheltuială'); } - protected static ?string $pluralModelLabel = 'cheltuieli'; + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('cheltuieli'); + } protected static ?int $navigationSort = 51; diff --git a/app/Filament/Tenant/Resources/LaborResource.php b/app/Filament/Tenant/Resources/LaborResource.php index e0f0eb9..ff477d6 100644 --- a/app/Filament/Tenant/Resources/LaborResource.php +++ b/app/Filament/Tenant/Resources/LaborResource.php @@ -36,7 +36,12 @@ class LaborResource extends Resource return __('normă'); } - protected static ?string $pluralModelLabel = 'norme-ore'; + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('norme-ore'); + } protected static ?int $navigationSort = 32; diff --git a/app/Filament/Tenant/Resources/LeadResource.php b/app/Filament/Tenant/Resources/LeadResource.php index 6343abc..564dd8b 100644 --- a/app/Filament/Tenant/Resources/LeadResource.php +++ b/app/Filament/Tenant/Resources/LeadResource.php @@ -30,9 +30,19 @@ class LeadResource extends Resource return __('nav.group.CRM'); } - protected static ?string $modelLabel = 'cerere'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'cereri'; + public static function getModelLabel(): string + { + return __('cerere'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('cereri'); + } protected static ?int $navigationSort = 5; diff --git a/app/Filament/Tenant/Resources/MarketingChannelResource.php b/app/Filament/Tenant/Resources/MarketingChannelResource.php index 0ae9142..4feada1 100644 --- a/app/Filament/Tenant/Resources/MarketingChannelResource.php +++ b/app/Filament/Tenant/Resources/MarketingChannelResource.php @@ -28,7 +28,12 @@ class MarketingChannelResource extends Resource return __('nav.group.Marketing'); } - protected static ?string $modelLabel = 'canal'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('canal'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/MasterResource.php b/app/Filament/Tenant/Resources/MasterResource.php index 2fe8a46..670dbd5 100644 --- a/app/Filament/Tenant/Resources/MasterResource.php +++ b/app/Filament/Tenant/Resources/MasterResource.php @@ -33,9 +33,19 @@ class MasterResource extends Resource return __('nav.group.Service'); } - protected static ?string $modelLabel = 'tehnician'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'tehnicieni'; + public static function getModelLabel(): string + { + return __('tehnician'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('tehnicieni'); + } protected static ?int $navigationSort = 33; diff --git a/app/Filament/Tenant/Resources/MessageTemplateResource.php b/app/Filament/Tenant/Resources/MessageTemplateResource.php index 91da40f..664ca2f 100644 --- a/app/Filament/Tenant/Resources/MessageTemplateResource.php +++ b/app/Filament/Tenant/Resources/MessageTemplateResource.php @@ -28,9 +28,19 @@ class MessageTemplateResource extends Resource return __('nav.group.Marketing'); } - protected static ?string $modelLabel = 'template'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'template-uri'; + public static function getModelLabel(): string + { + return __('template'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('template-uri'); + } protected static ?int $navigationSort = 60; diff --git a/app/Filament/Tenant/Resources/PartResource.php b/app/Filament/Tenant/Resources/PartResource.php index 7f76660..91c4b62 100644 --- a/app/Filament/Tenant/Resources/PartResource.php +++ b/app/Filament/Tenant/Resources/PartResource.php @@ -37,7 +37,12 @@ class PartResource extends Resource return __('piesă'); } - protected static ?string $pluralModelLabel = 'piese'; + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('piese'); + } protected static ?int $navigationSort = 40; diff --git a/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php b/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php index 06a08cb..43c9433 100644 --- a/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php +++ b/app/Filament/Tenant/Resources/PayrollAdjustmentResource.php @@ -29,7 +29,12 @@ class PayrollAdjustmentResource extends Resource return __('nav.group.Finanțe'); } - protected static ?string $modelLabel = 'ajustare'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('ajustare'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/PayrollRunResource.php b/app/Filament/Tenant/Resources/PayrollRunResource.php index 0abbcad..4c35c3e 100644 --- a/app/Filament/Tenant/Resources/PayrollRunResource.php +++ b/app/Filament/Tenant/Resources/PayrollRunResource.php @@ -31,9 +31,19 @@ class PayrollRunResource extends Resource return __('nav.group.Finanțe'); } - protected static ?string $modelLabel = 'salariu'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'salarii'; + public static function getModelLabel(): string + { + return __('salariu'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('salarii'); + } protected static ?int $navigationSort = 53; diff --git a/app/Filament/Tenant/Resources/PostResource.php b/app/Filament/Tenant/Resources/PostResource.php index 48f72d5..4a1348f 100644 --- a/app/Filament/Tenant/Resources/PostResource.php +++ b/app/Filament/Tenant/Resources/PostResource.php @@ -30,7 +30,12 @@ class PostResource extends Resource return __('nav.group.Admin'); } - protected static ?string $modelLabel = 'pod'; + protected static ?string $modelLabel = null; + + public static function getModelLabel(): string + { + return __('pod'); + } protected static ?string $pluralModelLabel = null; diff --git a/app/Filament/Tenant/Resources/RoleResource.php b/app/Filament/Tenant/Resources/RoleResource.php index cca04ad..8c9be10 100644 --- a/app/Filament/Tenant/Resources/RoleResource.php +++ b/app/Filament/Tenant/Resources/RoleResource.php @@ -29,9 +29,19 @@ class RoleResource extends Resource return __('nav.group.Admin'); } - protected static ?string $modelLabel = 'rol'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'roluri'; + public static function getModelLabel(): string + { + return __('rol'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('roluri'); + } protected static ?int $navigationSort = 82; diff --git a/app/Filament/Tenant/Resources/SupplierResource.php b/app/Filament/Tenant/Resources/SupplierResource.php index ae49e2d..2498ef0 100644 --- a/app/Filament/Tenant/Resources/SupplierResource.php +++ b/app/Filament/Tenant/Resources/SupplierResource.php @@ -28,9 +28,19 @@ class SupplierResource extends Resource return __('nav.group.Depozit'); } - protected static ?string $modelLabel = 'furnizor'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'furnizori'; + public static function getModelLabel(): string + { + return __('furnizor'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('furnizori'); + } protected static ?int $navigationSort = 42; diff --git a/app/Filament/Tenant/Resources/UserResource.php b/app/Filament/Tenant/Resources/UserResource.php index 6313934..d1431fe 100644 --- a/app/Filament/Tenant/Resources/UserResource.php +++ b/app/Filament/Tenant/Resources/UserResource.php @@ -30,9 +30,19 @@ class UserResource extends Resource return __('nav.group.Admin'); } - protected static ?string $modelLabel = 'utilizator'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'utilizatori'; + public static function getModelLabel(): string + { + return __('utilizator'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('utilizatori'); + } protected static ?int $navigationSort = 80; diff --git a/app/Filament/Tenant/Resources/WarehouseResource.php b/app/Filament/Tenant/Resources/WarehouseResource.php index 4358478..f29e2ab 100644 --- a/app/Filament/Tenant/Resources/WarehouseResource.php +++ b/app/Filament/Tenant/Resources/WarehouseResource.php @@ -28,9 +28,19 @@ class WarehouseResource extends Resource return __('nav.group.Depozit'); } - protected static ?string $modelLabel = 'depozit'; + protected static ?string $modelLabel = null; - protected static ?string $pluralModelLabel = 'depozite'; + public static function getModelLabel(): string + { + return __('depozit'); + } + + protected static ?string $pluralModelLabel = null; + + public static function getPluralModelLabel(): string + { + return __('depozite'); + } protected static ?int $navigationSort = 38; diff --git a/lang/en.json b/lang/en.json index 1237e95..d7bc8d9 100644 --- a/lang/en.json +++ b/lang/en.json @@ -9,11 +9,17 @@ "% marja piese": "% marja piese", "% marjă implicit": "Default margin %", "% piese": "% piese", + "(GET, POST, PATCH, DELETE)": "(GET, POST, PATCH, DELETE)", + "(PDF).": "(PDF).", "+ Conversație nouă": "+ New conversation", "+ Pod / spațiu nou": "+ New bay / space", + "+ Pod nou": "+ Pod nou", "+ Programare nouă": "+ New appointment", "+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}", ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.", + "/api/v1/clients": "/api/v1/clients", + "/api/v1/vehicles": "/api/v1/vehicles", + "/api/v1/work-orders": "/api/v1/work-orders", "0 = dezactivat": "0 = dezactivat", "1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.", "123456:ABC-XYZ...": "123456:ABC-XYZ...", @@ -32,6 +38,7 @@ "AYS...": "AYS...", "Abonament": "Subscription", "Abonament până la": "Subscribed until", + "Abonamentul pentru": "Abonamentul pentru", "Abonamentul se extinde automat": "Subscription auto-renews", "Abonamentul tău a fost extins.": "Your subscription has been extended.", "Abonat": "Subscribed", @@ -135,6 +142,7 @@ "Alte": "Other", "Alte cheltuieli": "Other expenses", "Altă problemă": "Other problem", + "Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l", "An": "Year", "An fabricație": "Production year", "An model": "Model year", @@ -173,6 +181,7 @@ "Arhivat": "Archived", "Arhivează": "Archive", "Arhivă": "Archive", + "Articol": "Articol", "Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii", "Articole": "Articole", "Ascunde": "Hide", @@ -185,7 +194,7 @@ "Astăzi": "Today", "Atașamente": "Attachments", "Atașat veți găsi": "Attached", - "Atelierul meu": "Atelierul meu", + "Atelierul meu": "My workshop", "Atenție": "Warning", "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "August", @@ -194,6 +203,7 @@ "Auto": "Vehicle", "Auto / model": "Vehicle / model", "Auto-import Excel/CSV": "Auto-import Excel/CSV", + "AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md", "AutoCRM SRL": "AutoCRM SRL", "Automată": "Automatic", "Automobile": "Vehicles", @@ -206,14 +216,17 @@ "Aștept aprobare client": "Awaiting client approval", "Așteptată": "Expected", "BIC / SWIFT": "BIC / SWIFT", + "BIC / SWIFT:": "BIC / SWIFT:", "Backup": "Backup", "Backup & Export date": "Backup & Export date", "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Balance", "Balanță": "Balance", "Banca": "Banca", + "Banca:": "Banca:", "Bază": "Base", "Beneficiar": "Beneficiar", + "Beneficiar:": "Beneficiar:", "Benzină": "Petrol", "Berlină": "Sedan", "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", @@ -250,7 +263,7 @@ "Calculație": "Quote", "Calculează luna curentă": "Calculează luna curentă", "Calendar": "Calendar", - "Calendar vizual": "Calendar vizual", + "Calendar vizual": "Visual calendar", "Canal marketing": "Canal marketing", "Cancel": "Cancel", "Cant.": "Qty", @@ -259,6 +272,7 @@ "Cantitate restituită": "Cantitate restituită", "Capacitate motor": "Engine capacity", "Capacitatea zilnică în ore": "Capacitatea zilnică în ore", + "Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money", "Card bancar": "Bank card", "Caroserie": "Body type", "Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli", @@ -279,11 +293,13 @@ "Cereri": "Leads", "Cereri noi": "New leads", "Check-in depozit": "Check-in depozit", + "Checksum (ISO)": "Checksum (ISO)", "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)", + "Cheltuieli pe categorie": "Cheltuieli pe categorie", "Cheltuit": "Spent", "Cheltuit 90d": "Cheltuit 90d", "Chirie": "Rent", @@ -294,6 +310,7 @@ "Clase auto": "Vehicle classes", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", + "Click pentru a redenumi": "Click pentru a redenumi", "Client": "Client", "Client & Auto": "Client & Auto", "Client (nume, semnătură):": "Client (nume, semnătură):", @@ -321,10 +338,14 @@ "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", "Coeficienți preț": "Pricing coefficients", + "Coloana Articol *": "Coloana Articol *", "Coloana Brand (opțional)": "Coloana Brand (opțional)", + "Coloana Cantitate *": "Coloana Cantitate *", + "Coloana Denumire *": "Coloana Denumire *", "Coloana Preț *": "Coloana Preț *", "Coloane": "Columns", "Coloană": "Column", + "Comanda": "Comanda", "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", "Comandată": "Comandată", @@ -342,11 +363,13 @@ "Complet": "Full", "Concediu": "Vacation", "Condiții (toate trebuie îndeplinite)": "Condiții (toate trebuie îndeplinite)", + "Configurare:": "Configurare:", "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.": "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.", "Configurări": "Configuration", "Configurări avansate": "Advanced settings", "Confirmare plată primită": "Confirmare plată primită", "Confirmat": "Confirmed", + "Confirmate": "Confirmed", "Confirmă": "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.", "Confirmă emailul": "Verify email", @@ -356,6 +379,7 @@ "Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)", "Consum": "Consumption", "Consumabile": "Supplies", + "Cont PayPal sau card prin PayPal": "Cont PayPal sau card prin PayPal", "Contabil": "Accountant", "Contact": "Contact", "Contactare": "Contact", @@ -364,6 +388,7 @@ "Contactează": "Contact", "Continuă": "Continue", "Continuă →": "Continuă →", + "Contul": "Contul", "Conversație nouă": "Conversație nouă", "Convertește": "Convertește", "Convertit": "Converted", @@ -408,6 +433,7 @@ "Cumulabil": "Cumulabil", "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.", "Curăță": "Clear", + "Custom": "Custom", "Cutie": "Gearbox", "Cutie de viteze": "Gearbox", "Cutie viteze": "Gearbox", @@ -453,6 +479,7 @@ "De la data": "From date", "De la ora": "From time", "De la rândul (sărim header) *": "De la rândul (sărim header) *", + "De la:": "De la:", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", "De procesat": "To process", "Deal": "Deal", @@ -471,6 +498,7 @@ "Denumire afișată": "Display name", "Denumire companie": "Company name", "Denumire produs": "Product name", + "Deploy now": "Deploy now", "Depozit": "Warehouse", "Depozit gol": "Depozit gol", "Depozit implicit": "Default warehouse", @@ -525,6 +553,7 @@ "Doar tu ești aici": "Doar tu ești aici", "Doar utilizatorii mei": "My users only", "Document": "Document", + "Documentation": "Documentation", "Documente": "Documents", "Done": "Done", "Downgrade": "Downgrade", @@ -549,25 +578,29 @@ "Editează": "Edit", "Editează drepturi": "Editează drepturi", "Editează produs": "Edit product", - "Eficiență": "Eficiență", + "Eficiență": "Efficiency", "Electric": "Electric", "Electrică": "Electrical", "Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate", "Eliberează": "Issue", "Email": "Email", "Email admin": "Email admin", + "Email:": "Email:", "Empty": "No results", "Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook", + "Endpoints disponibile:": "Endpoints disponibile:", "Eroare": "Error", "Eroare la recepție": "Eroare la recepție", "Etape": "Stages", "Etapă": "Stage", + "Etichete piese": "Etichete piese", "Etichetă": "Etichetă", "Ex 30 → preț vânzare = preț achiziție × 1.30": "Ex 30 → preț vânzare = preț achiziție × 1.30", "Ex: 100": "Ex: 100", "Ex: 20": "Ex: 20", "Ex: 20 pentru +20%": "Ex: 20 pentru +20%", "Ex: 25": "Ex: 25", + "Ex: Curte 1, Pod 4, Atelier electric": "Ex: Curte 1, Pod 4, Atelier electric", "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ă...", @@ -588,6 +621,7 @@ "Ești sigur?": "Are you sure?", "FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU", "Facturi": "Invoices", + "Facturi & abonament": "Facturi & abonament", "Facturi neplătite": "Unpaid invoices", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Invoice", @@ -603,6 +637,7 @@ "Filters": "Filters", "Filtre": "Filters", "Filtru": "Filter", + "Filtru:": "Filtru:", "Finalizat": "Done", "Financiar": "Financiar", "Finanțe": "Finanțe", @@ -624,6 +659,7 @@ "Folosit ultima dată": "Folosit ultima dată", "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.", "Force logout": "Force logout", + "Format:": "Format:", "Foto": "Photo", "Foto factură": "Foto factură", "Foto piesă": "Foto piesă", @@ -661,10 +697,12 @@ "Generează factură": "Generează factură", "Generează raport": "Generate report", "Generează token": "Generează token", + "Generez ZIP...": "Generez ZIP...", "Global": "Global", "Gol — trage un card aici": "Empty — drop a card here", "Grafic": "Chart", "Gravitate": "Gravitate", + "Grupare:": "Grupare:", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet", "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.", "Găsite (cu articol existent)": "Găsite (cu articol existent)", @@ -672,6 +710,7 @@ "Hatchback": "Hatchback", "Hibrid": "Hybrid", "IBAN": "IBAN", + "IBAN:": "IBAN:", "ID": "ID", "IDNO / CUI": "IDNO / CUI", "Ianuarie": "January", @@ -718,6 +757,7 @@ "Inventar": "Inventory", "Invitație": "Invitation", "Invitații": "Invitations", + "Ion Popescu": "Ion Popescu", "Istoric depozitare": "Istoric depozitare", "Istoric prețuri furnizori": "Istoric prețuri furnizori", "Iulie": "July", @@ -725,7 +765,7 @@ "JSON": "JSON", "Joi": "Thursday", "Jurnal": "Audit log", - "KPI mecanici": "KPI mecanici", + "KPI mecanici": "Mechanics KPI", "Kanban": "Kanban", "Kilometraj": "Kilometraj", "Km": "km", @@ -733,11 +773,15 @@ "Km ieșire": "Km out", "Km intrare": "Km in", "Km la ieșire:": "Km la ieșire:", + "Km la intrare:": "Km la intrare:", "Km parcurși": "Mileage", "La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.", "La revedere": "Goodbye", + "La succes: webhook → automat status=paid + extends company.active_until": "La succes: webhook → automat status=paid + extends company.active_until", "La timp 90d": "La timp 90d", "La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.", + "Laracasts": "Laracasts", + "Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.", "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.", "Lead-uri": "Lead-uri", "Lead-uri pe sursă": "Lead-uri pe sursă", @@ -749,6 +793,7 @@ "Limite": "Limite", "Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.", "Linii": "Linii", + "Link": "Link", "Link client (QR)": "Link client (QR)", "Link tracking": "Tracking link", "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.", @@ -769,6 +814,7 @@ "Locație": "Location", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", + "Log in": "Log in", "Login": "Login", "Logo": "Logo", "Logo & favicon": "Logo & favicon", @@ -779,16 +825,17 @@ "Loturi (FIFO)": "Loturi (FIFO)", "Lucrare": "Lucrare", "Lucrare blocată": "Work blocked", - "Lucrări": "Lucrări", + "Lucrări": "Tasks", "Lucrări la terți": "Lucrări la terți", "Lucrări terți": "Outsourced jobs", "Luna aceasta": "This month", "Luna curentă": "Current month", "Luna trecută": "Last month", - "Luna următoare ▶": "Luna următoare ▶", + "Luna următoare ▶": "Next month ▶", "Lunar": "Lunar", "Luni": "Months", "Luni (zi)": "Monday", + "Luni – Vineri: 08:00 – 18:00": "Luni – Vineri: 08:00 – 18:00", "Lună": "Lună", "Lățime": "Lățime", "MB folosiți": "MB folosiți", @@ -809,6 +856,8 @@ "Manoperă": "Labor", "Manuală": "Manual", "Marca": "Marca", + "Marca/Model": "Marca/Model", + "Marca/Model:": "Marca/Model:", "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", @@ -832,13 +881,16 @@ "Markup %": "Markup %", "Martie": "March", "Marți": "Tuesday", + "Matricea": "Matricea", "Max clienți": "Max clienți", "Max fișe/lună": "Max fișe/lună", "Max mașini": "Max mașini", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Vehicles", + "Mecanic": "Mechanic", "Mecanic implicit": "Default mechanic", + "Mecanici": "Mechanics", "Medie": "Medium", "Mediu": "Medium", "Merchant Code": "Merchant Code", @@ -846,16 +898,20 @@ "Mesaj client": "Mesaj client", "Mesaje": "Messages", "Mesaje AI/lună": "Mesaje AI/lună", + "Metoda": "Metoda", "Metode de livrare": "Metode de livrare", "Metode plată": "Payment methods", "Metodă": "Metodă", "Metodă plată": "Payment method", "Miercuri": "Wednesday", + "Migrare la alt sistem CRM": "Migrare la alt sistem CRM", "Min.": "Min.", "Minim": "Minim", "Minute": "Minutes", "Mod": "Mode", + "Mod stub:": "Mod stub:", "Mod tarifare": "Mod tarifare", + "Mod:": "Mod:", "Model": "Model", "Model Claude": "Model Claude", "Model Gemini": "Model Gemini", @@ -884,12 +940,14 @@ "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", "Neconfirmat": "Unconfirmed", + "Neconfirmate": "Unconfirmed", "Necunoscut": "Unknown", "Neplătit": "Unpaid", "Nepublicat": "Unpublished", "Nesemnat": "Unsigned", "Nesincronizat": "Not synced", "Net 30 / Avans": "Net 30 / Avans", + "Net:": "Net:", "Neverificat": "Not verified", "New client": "New client", "New mașină": "New vehicle", @@ -913,15 +971,18 @@ "Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.", "Niciodată": "Never", "Niciun client magazin": "Niciun client magazin", + "Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", "Niciun coeficient": "Niciun coeficient", "Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).", "Niciun depozit": "Niciun depozit", "Niciun istoric": "Niciun istoric", + "Niciun lead.": "Niciun lead.", "Niciun lot înregistrat": "Niciun lot înregistrat", + "Niciun mecanic activ.": "Niciun mecanic activ.", "Niciun mecanic implicit": "Niciun mecanic implicit", - "Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.", + "Niciun mecanic nu a finalizat lucrări în această perioadă.": "No mechanic has completed work in this period.", "Niciun plan definit": "Niciun plan definit", "Niciun preț înregistrat": "Niciun preț înregistrat", "Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉", @@ -930,9 +991,11 @@ "Niciun tenant încă": "Niciun tenant încă", "Niciun șablon": "Niciun șablon", "No": "No", + "No-show alert": "No-show alert", "Noiembrie": "November", + "Norma ore": "Norm hours", "Normal": "Normal", - "Norme-ore": "Labor times", + "Norme-ore": "Labor rates", "Note interne": "Note interne", "Notificare": "Notification", "Notifications": "Notifications", @@ -953,6 +1016,7 @@ "Nr. poliță": "Nr. poliță", "Nr. telefon": "Phone number", "Nr. înmatriculare": "License plate", + "Nr.:": "Nr.:", "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.", "Nu ai cont?": "Don't have an account?", "Nu am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor", @@ -961,6 +1025,7 @@ "Nu re-trimite mai des de X zile": "Nu re-trimite mai des de X zile", "Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!", "Nu, renunță": "No, cancel", + "Numar": "Number", "Nume": "Name", "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", @@ -975,6 +1040,7 @@ "Numele este obligatoriu": "Numele este obligatoriu", "Numerar": "Cash", "Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)", + "Număr": "Number", "Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.", "OCR eșuat": "OCR eșuat", "Observații": "Notes", @@ -983,6 +1049,7 @@ "Ok": "OK", "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).", "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).", + "Onboarded": "Onboarded", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", @@ -1016,6 +1083,7 @@ "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", "Pagina": "Page", "Pagini": "Pages", "Panou": "Panel", @@ -1032,7 +1100,12 @@ "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Pause", + "PayPal": "PayPal", + "PayPal:": "PayPal:", + "Payload:": "Payload:", + "Paynet": "Paynet", "Pe pauză": "Paused", + "Pe status": "Pe status", "Penalizări": "Penalizări", "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.", "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.", @@ -1064,6 +1137,7 @@ "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.", "Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare", "Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)", + "Plate": "Plate", "Plată": "Payment", "Plată & total": "Payment & total", "Plată anulată": "Plată anulată", @@ -1098,6 +1172,7 @@ "Preview": "Preview", "Preview PDF": "Preview PDF", "Previzualizare": "Preview", + "Previzualizare →": "Previzualizare →", "Prezent": "Present", "Prezențe": "Attendances", "Prezență": "Attendance", @@ -1137,6 +1212,7 @@ "Producător": "Producător", "Produs": "Product", "Produse": "Products", + "Produsele tale": "Produsele tale", "Profesie": "Profesie", "Profil": "Profil", "Profile": "Profile", @@ -1162,6 +1238,7 @@ "Progres etapă": "Stage progress", "Proprietar": "Owner", "Provider implicit": "Provider implicit", + "Provider:": "Provider:", "Public": "Public", "Public (afișat la signup)": "Public (afișat la signup)", "Publicat": "Published", @@ -1187,6 +1264,8 @@ "Rating": "Rating", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Reactivate", + "Read the": "Read the", + "Real ore": "Real hours", "Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese", "Recalculează": "Recalculează", "Recent": "Recent", @@ -1216,6 +1295,7 @@ "Refuzat de client": "Rejected by client", "Regenerează": "Regenerate", "Register": "Register", + "Regiune": "Regiune", "Regulă": "Rule", "Reia": "Resume", "Reminder ITP / revizie": "Reminder ITP / revizie", @@ -1293,6 +1373,7 @@ "Scadență": "Due date", "Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.", "Scaner cod QR / Bare": "Scaner cod QR / Bare", + "Schimb ulei + filtru": "Schimb ulei + filtru", "Scoate din magazin": "Scoate din magazin", "Scrie mesajul tău...": "Scrie mesajul tău...", "Scăzut": "Low", @@ -1323,11 +1404,13 @@ "Semnătură digitală": "Digital signature", "Senzori TPMS": "Senzori TPMS", "Septembrie": "September", + "Serial": "Serial", "Serie": "Series", "Serie factură": "Invoice series", "Service ID": "Service ID", "Servicii": "Services", "Servicii & tarif": "Services & rate", + "Servicii oferite": "Servicii oferite", "Servicii oferite (separate prin virgulă)": "Servicii oferite (separate prin virgulă)", "Servicii terțe": "Third-party services", "Sesiuni": "Sessions", @@ -1368,16 +1451,19 @@ "Standard": "Standard", "Stare": "Stare", "Stare timp": "Time state", + "Stare zi": "Day status", "Start": "Start", "Status": "Status", "Status dosar": "Status dosar", "Status implicit": "Default status", + "Status:": "Status:", "Stoc": "Stock", "Stoc adăugat": "Stoc adăugat", "Stoc minim": "Stoc minim", "Stoc minim atins": "Minimum stock reached", "Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)", "Storage (MB)": "Storage (MB)", + "Storage media": "Storage media", "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", "Sub minim": "Below minimum", "Subcontractare": "Subcontracting", @@ -1386,8 +1472,11 @@ "Subdomeniul: .service.mir.md": "Subdomeniul: .service.mir.md", "Subiect": "Subject", "Subiect (email)": "Subiect (email)", + "Subiect *": "Subiect *", "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", "Subtotal": "Subtotal", + "Subtotal manopere:": "Subtotal manopere:", + "Subtotal piese:": "Subtotal piese:", "Succes": "Success", "Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.", "Sumă": "Amount", @@ -1431,6 +1520,7 @@ "Telefon alternativ": "Telefon alternativ", "Telefon principal": "Telefon principal", "Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.", + "Telefon:": "Telefon:", "Telefonie": "Calls", "Telegram bot": "Telegram bot", "Telegram chat ID": "Telegram chat ID", @@ -1454,6 +1544,7 @@ "Terț": "Terț", "Test notificare push": "Test notificare push", "Testează bot Telegram": "Testează bot Telegram", + "Theme color": "Theme color", "Timp lucrat": "Time worked", "Timp mediu": "Avg time", "Timp total": "Total time", @@ -1486,6 +1577,8 @@ "Token generat!": "Token generat!", "Token public": "Token public", "Token revocat": "Token revocat", + "Tokens consumate luna aceasta:": "Tokens consumate luna aceasta:", + "Tokens:": "Tokens:", "Top piese vândute": "Top piese vândute", "Tot apelul trebuie făcut pe subdomain-ul tău:": "Tot apelul trebuie făcut pe subdomain-ul tău:", "Total": "Total", @@ -1514,6 +1607,7 @@ "Transfer bancar": "Bank transfer", "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway", "Transport": "Transport", + "Tranz.": "Tranz.", "Trial expiră la": "Trial expiră la", "Trimis": "Sent", "Trimis · fără răspuns": "Sent · no response", @@ -1538,8 +1632,10 @@ "Ultim login": "Last login", "Ultima actualizare": "Last updated", "Ultima autentificare": "Last login", + "Ultima logare": "Ultima logare", "Ultima modificare": "Last modified", "Ultima sincronizare": "Last synced", + "Ultimul cod citit:": "Ultimul cod citit:", "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", @@ -1561,6 +1657,8 @@ "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.", "VIN-căutare": "VIN search", + "VIN:": "VIN:", + "VW Passat 2018": "VW Passat 2018", "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", @@ -1576,7 +1674,7 @@ "Venit generat": "Venit generat", "Venit luna curentă": "Current month revenue", "Venit luna trecută": "Venit luna trecută", - "Venit manopere": "Venit manopere", + "Venit manopere": "Labor revenue", "Venituri": "Revenues", "Verificare": "Verification", "Verificat": "Verified", @@ -1587,6 +1685,7 @@ "Vezi tot": "View all", "Viitoare": "Viitoare", "Vineri": "Friday", + "Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe", "Vizibil": "Visible", "Vizual": "Visual", "Vizualizează": "View", @@ -1600,6 +1699,9 @@ "Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!", "Vă mulțumim!": "Vă mulțumim!", "Văzut": "Seen", + "WBAFE81070CY34521": "WBAFE81070CY34521", + "Watch video tutorials at": "Watch video tutorials at", + "We suggest starting with the following.": "We suggest starting with the following.", "Web Push neconfigurat": "Web Push neconfigurat", "Webhook": "Webhook", "Webhook (Notify URL)": "Webhook (Notify URL)", @@ -1615,6 +1717,7 @@ "Yes": "Yes", "ZIP": "ZIP", "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.", + "Zi": "Zi", "Zile": "Days", "Zile libere": "Days off", "Zile livrare": "Zile livrare", @@ -1622,64 +1725,93 @@ "Zonă": "Zonă", "Zoom in": "Zoom in", "Zoom out": "Zoom out", + "a expirat.": "a expirat.", + "a fost suspendat.": "a fost suspendat.", "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via", - "achiziție": "achiziție", - "achiziții": "achiziții", + "achiziție": "purchase", + "achiziții": "purchases", "active": "active", "actualizat": "updated", + "ajustare": "ajustare", + "angajat": "employee", "angajați": "angajați", "apasă": "click", + "apel": "call", + "apeluri": "calls", "asistent gândește...": "asistent gândește...", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", "call": "Call", + "canal": "channel", "canale marketing": "canale marketing", + "cerere": "lead", + "cereri": "leads", "cheltuială": "cheltuială", + "cheltuieli": "cheltuieli", "client": "client", - "client magazin": "client magazin", + "client magazin": "shop customer", "clienți": "clients", - "clienți magazin": "clienți magazin", + "clienți magazin": "shop customers", "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.", "coeficient": "coefficient", - "coeficienți preț": "coeficienți preț", + "coeficienți preț": "pricing coefficients", "comandă": "comandă", "comenzi online": "comenzi online", - "deal-uri": "deal-uri", + "companie": "companie", + "companii": "companii", + "dashboard.stripe.com": "dashboard.stripe.com", + "deal": "deal", + "deal-uri": "deals", "deals": "deals", + "depozit": "warehouse", + "depozite": "warehouses", + "developer.paypal.com": "developer.paypal.com", + "eveniment": "event", "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: WVWZZZ1JZXW000001": "ex: WVWZZZ1JZXW000001", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", "facebook": "Facebook", + "facturi": "facturi", "factură": "factură", "finalizat": "completed", "fișa de lucru completă": "fișa de lucru completă", - "fișe lucru": "fișe lucru", - "fișă": "fișă", + "fișe lucru": "work orders", + "fișă": "work order", + "furnizor": "supplier", + "furnizori": "suppliers", "fără client": "no client", "google": "Google", "h norm": "h norm", "h real": "h real", "instagram": "Instagram", + "jurnal": "log", + "la fiecare request": "la fiecare request", "liber/ușor": "liber/ușor", "linii neîncasate.": "linii neîncasate.", - "lucrare caroserie": "lucrare caroserie", - "lucrare terți": "lucrare terți", - "lucrări caroserie": "lucrări caroserie", - "lucrări terți": "lucrări terți", + "lucrare caroserie": "bodyshop job", + "lucrare terți": "subcontract job", + "lucrări caroserie": "bodyshop jobs", + "lucrări terți": "subcontract jobs", "mașini": "vehicles", "mașină": "vehicle", "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).", "new": "new", "niciodată": "niciodată", - "norme-ore": "norme-ore", - "normă": "normă", + "norme": "labors", + "norme-ore": "labor rates", + "normă": "labor", "null = fără trial": "null = fără trial", "pentru a alege": "to select", + "piese": "piese", "piesă": "piesă", "pk_test_...": "pk_test_...", + "plan": "plan", + "planuri": "planuri", "plată": "plată", "plăți": "plăți", + "pod": "bay", "portal.common.currency_mdl": "portal.common.currency_mdl", "portal.common.email": "portal.common.email", "portal.common.name": "portal.common.name", @@ -1794,22 +1926,34 @@ "portal.tracking.unit_pcs": "portal.tracking.unit_pcs", "portal.tracking.what_asked": "portal.tracking.what_asked", "posturi de lucru": "posturi de lucru", - "programări": "programări", + "programare": "appointment", + "programări": "appointments", "programări active": "programări active", "programări neconfirmate < 24h": "programări neconfirmate < 24h", "referral": "Referral", "reguli markup": "reguli markup", "regulă": "regulă", + "rol": "role", + "roluri": "roles", + "salarii": "salaries", + "salariu": "salary", "sau": "or", - "set anvelope": "set anvelope", - "seturi anvelope": "seturi anvelope", + "set anvelope": "tire set", + "seturi anvelope": "tire sets", "site": "Website", "subcontractor": "subcontractor", - "subcontractori": "subcontractori", + "subcontractori": "subcontractors", + "tehnician": "technician", + "tehnicieni": "technicians", "telegram": "Telegram", - "template-uri": "template-uri", + "template": "template", + "template-uri": "templates", "ultima fișă": "ultima fișă", + "utilizator": "user", + "utilizatori": "users", "ușor": "ușor", + "vehicul": "vehicle", + "vehicule": "vehicles", "vip": "vip", "walk_in": "Walk-in", "whatsapp": "WhatsApp", @@ -1859,38 +2003,51 @@ "Șters": "Deleted", "Șters de": "Deleted by", "Șters la": "Deleted at", - "șabloane servicii": "șabloane servicii", - "șablon": "șablon", + "șabloane servicii": "service templates", + "șablon": "template", "șters": "șters", "Țară": "Țară", "Ține-mă minte": "Remember me", "— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)", + "— alege —": "— alege —", "— fără pod —": "— fără pod —", + "— niciunul —": "— niciunul —", + "ℹ️": "ℹ️", "← Săpt. anterioară": "← Săpt. anterioară", "← Înapoi": "← Înapoi", "← Înapoi la AutoCRM": "← Înapoi la AutoCRM", "← Înapoi la facturi": "← Înapoi la facturi", + "→ Mergi la AutoCRM": "→ Mergi la AutoCRM", "→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials", "→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus", "↗ Deschide Purchase": "↗ Deschide Purchase", "↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament", + "↗ Editare": "↗ Editare", + "≥9h/10": "≥9h/10", + "⏰ Abonament expirat": "⏰ Abonament expirat", "⏹ Oprește": "⏹ Oprește", - "◀ Luna precedentă": "◀ Luna precedentă", + "◀ Luna precedentă": "◀ Previous month", "⚖️ Balanță": "⚖️ Balanță", + "⚙ Configurare tenant": "⚙ Configurare tenant", "⚙ Cum funcționează:": "⚙ Cum funcționează:", "⚠ Acțiune necesară": "⚠ Action needed", "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.", "⚠ Fără plan": "⚠ Fără plan", "⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:", + "⚠ Posibil churn": "⚠ Posibil churn", "⚠ Recomandări": "⚠ Recomandări", "⚠ Recomandări:": "⚠ Recomandări:", "⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):", "⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.", "⚠️ Stoc minim atins": "⚠️ Stoc minim atins", + "⛔ Cont suspendat": "⛔ Cont suspendat", "✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!", + "✅ VIN decodificat": "✅ VIN decodificat", "✏ Editează pod": "✏ Editează pod", "✓ Achitat": "✓ Paid", + "✓ Copiat": "✓ Copiat", "✓ Pe abonament plătit": "✓ On paid subscription", + "✓ valid": "✓ valid", "⬇ Descarcă backup acum": "⬇ Descarcă backup acum", "⭐ VIP fără contact recent": "⭐ VIP fără contact recent", "🅿️ PayPal": "🅿️ PayPal", @@ -1900,14 +2057,17 @@ "🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite", "🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar", "🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)", + "👋 Bun venit!": "👋 Bun venit!", "👥 Clienți": "👥 Clienți", "💰 Finanțe": "💰 Finanțe", "💰 Fișe neplătite": "💰 Fișe neplătite", + "💳 Istoric abonamente": "💳 Istoric abonamente", "💳 Plată confirmată": "💳 Plată confirmată", "💳 Plătește": "💳 Plătește", "💳 Stripe": "💳 Stripe", "💾 Salvează setările": "💾 Salvează setările", "📅 Programare confirmată": "📅 Programare confirmată", + "📊 Activitate live": "📊 Activitate live", "📊 Încărcare": "📊 Încărcare", "📋 Copiază": "📋 Copiază", "📍 Locație & contact": "📍 Locație & contact", @@ -1915,11 +2075,14 @@ "📦 Caută piesă în catalog": "📦 Caută piesă în catalog", "📦 Export complet date tenant": "📦 Export complet date tenant", "📷 Pornește scanner": "📷 Pornește scanner", + "🔎 Decode VIN": "🔎 Decode VIN", + "🕒 Program de lucru": "🕒 Program de lucru", "🖨 PDF programări": "🖨 PDF programări", "🖨 Tipărește": "🖨 Tipărește", "🗑 Șterge": "🗑 Șterge", "😴 Clienți pierduți": "😴 Clienți pierduți", "🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM", "🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare", - "🚗 Mărci suportate": "🚗 Mărci suportate" + "🚗 Mărci suportate": "🚗 Mărci suportate", + "🛒 Magazin piese online": "🛒 Magazin piese online" } \ No newline at end of file diff --git a/lang/ru.json b/lang/ru.json index 5b70087..22048dd 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -9,11 +9,17 @@ "% marja piese": "% marja piese", "% marjă implicit": "% маржи по умолчанию", "% piese": "% piese", + "(GET, POST, PATCH, DELETE)": "(GET, POST, PATCH, DELETE)", + "(PDF).": "(PDF).", "+ Conversație nouă": "+ Новый чат", "+ Pod / spațiu nou": "+ Новый пост / место", + "+ Pod nou": "+ Pod nou", "+ Programare nouă": "+ Новая запись", "+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}", ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.", + "/api/v1/clients": "/api/v1/clients", + "/api/v1/vehicles": "/api/v1/vehicles", + "/api/v1/work-orders": "/api/v1/work-orders", "0 = dezactivat": "0 = dezactivat", "1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.", "123456:ABC-XYZ...": "123456:ABC-XYZ...", @@ -32,6 +38,7 @@ "AYS...": "AYS...", "Abonament": "Подписка", "Abonament până la": "Подписка до", + "Abonamentul pentru": "Abonamentul pentru", "Abonamentul se extinde automat": "Подписка продлевается автоматически", "Abonamentul tău a fost extins.": "Ваша подписка продлена.", "Abonat": "Подписан", @@ -135,6 +142,7 @@ "Alte": "Прочее", "Alte cheltuieli": "Прочие расходы", "Altă problemă": "Другая проблема", + "Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l", "An": "Год", "An fabricație": "Год выпуска", "An model": "Модельный год", @@ -173,6 +181,7 @@ "Arhivat": "В архиве", "Arhivează": "В архив", "Arhivă": "Архив", + "Articol": "Articol", "Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii", "Articole": "Articole", "Ascunde": "Скрыть", @@ -185,7 +194,7 @@ "Astăzi": "Сегодня", "Atașamente": "Вложения", "Atașat veți găsi": "Во вложении", - "Atelierul meu": "Atelierul meu", + "Atelierul meu": "Моя мастерская", "Atenție": "Внимание", "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "Август", @@ -194,6 +203,7 @@ "Auto": "Авто", "Auto / model": "Авто / модель", "Auto-import Excel/CSV": "Auto-import Excel/CSV", + "AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md", "AutoCRM SRL": "AutoCRM SRL", "Automată": "Автоматическая", "Automobile": "Автомобили", @@ -206,14 +216,17 @@ "Aștept aprobare client": "Ожидание одобрения клиента", "Așteptată": "Ожидается", "BIC / SWIFT": "BIC / SWIFT", + "BIC / SWIFT:": "BIC / SWIFT:", "Backup": "Бэкап", "Backup & Export date": "Backup & Export date", "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Баланс", "Balanță": "Баланс", "Banca": "Banca", + "Banca:": "Banca:", "Bază": "База", "Beneficiar": "Beneficiar", + "Beneficiar:": "Beneficiar:", "Benzină": "Бензин", "Berlină": "Седан", "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", @@ -250,7 +263,7 @@ "Calculație": "Расчёт", "Calculează luna curentă": "Calculează luna curentă", "Calendar": "Календарь", - "Calendar vizual": "Calendar vizual", + "Calendar vizual": "Визуальный календарь", "Canal marketing": "Canal marketing", "Cancel": "Отмена", "Cant.": "Кол-во", @@ -259,6 +272,7 @@ "Cantitate restituită": "Cantitate restituită", "Capacitate motor": "Объём двигателя", "Capacitatea zilnică în ore": "Capacitatea zilnică în ore", + "Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money", "Card bancar": "Банковская карта", "Caroserie": "Кузов", "Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli", @@ -279,11 +293,13 @@ "Cereri": "Заявки", "Cereri noi": "Новые заявки", "Check-in depozit": "Check-in depozit", + "Checksum (ISO)": "Checksum (ISO)", "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)": "Расходы (месяц)", + "Cheltuieli pe categorie": "Cheltuieli pe categorie", "Cheltuit": "Потрачено", "Cheltuit 90d": "Cheltuit 90d", "Chirie": "Аренда", @@ -294,6 +310,7 @@ "Clase auto": "Классы авто", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", + "Click pentru a redenumi": "Click pentru a redenumi", "Client": "Клиент", "Client & Auto": "Client & Auto", "Client (nume, semnătură):": "Client (nume, semnătură):", @@ -321,10 +338,14 @@ "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", "Coeficienți preț": "Ценовые коэффициенты", + "Coloana Articol *": "Coloana Articol *", "Coloana Brand (opțional)": "Coloana Brand (opțional)", + "Coloana Cantitate *": "Coloana Cantitate *", + "Coloana Denumire *": "Coloana Denumire *", "Coloana Preț *": "Coloana Preț *", "Coloane": "Колонки", "Coloană": "Колонка", + "Comanda": "Comanda", "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", "Comandată": "Comandată", @@ -342,11 +363,13 @@ "Complet": "Полностью", "Concediu": "Отпуск", "Condiții (toate trebuie îndeplinite)": "Condiții (toate trebuie îndeplinite)", + "Configurare:": "Configurare:", "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.": "Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.", "Configurări": "Конфигурация", "Configurări avansate": "Расширенная конфигурация", "Confirmare plată primită": "Confirmare plată primită", "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.", "Confirmă emailul": "Подтвердите email", @@ -356,6 +379,7 @@ "Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)", "Consum": "Расход", "Consumabile": "Расходники", + "Cont PayPal sau card prin PayPal": "Cont PayPal sau card prin PayPal", "Contabil": "Бухгалтер", "Contact": "Контакт", "Contactare": "Связь", @@ -364,6 +388,7 @@ "Contactează": "Связаться", "Continuă": "Продолжить", "Continuă →": "Continuă →", + "Contul": "Contul", "Conversație nouă": "Conversație nouă", "Convertește": "Convertește", "Convertit": "Конвертирован", @@ -408,6 +433,7 @@ "Cumulabil": "Cumulabil", "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.", "Curăță": "Очистить", + "Custom": "Свой", "Cutie": "Коробка", "Cutie de viteze": "Коробка передач", "Cutie viteze": "КПП", @@ -453,6 +479,7 @@ "De la data": "С даты", "De la ora": "С", "De la rândul (sărim header) *": "De la rândul (sărim header) *", + "De la:": "De la:", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", "De procesat": "К обработке", "Deal": "Сделка", @@ -471,6 +498,7 @@ "Denumire afișată": "Отображаемое название", "Denumire companie": "Название компании", "Denumire produs": "Название товара", + "Deploy now": "Deploy now", "Depozit": "Склад", "Depozit gol": "Depozit gol", "Depozit implicit": "Склад по умолчанию", @@ -525,6 +553,7 @@ "Doar tu ești aici": "Doar tu ești aici", "Doar utilizatorii mei": "Только мои пользователи", "Document": "Документ", + "Documentation": "Documentation", "Documente": "Документы", "Done": "Готово", "Downgrade": "Понижение", @@ -549,25 +578,29 @@ "Editează": "Изменить", "Editează drepturi": "Editează drepturi", "Editează produs": "Изменить товар", - "Eficiență": "Eficiență", + "Eficiență": "Эффективность", "Electric": "Электро", "Electrică": "Электрика", "Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate", "Eliberează": "Выдать", "Email": "Email", "Email admin": "Email admin", + "Email:": "Email:", "Empty": "Нет результатов", "Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook", + "Endpoints disponibile:": "Endpoints disponibile:", "Eroare": "Ошибка", "Eroare la recepție": "Eroare la recepție", "Etape": "Этапы", "Etapă": "Этап", + "Etichete piese": "Etichete piese", "Etichetă": "Etichetă", "Ex 30 → preț vânzare = preț achiziție × 1.30": "Ex 30 → preț vânzare = preț achiziție × 1.30", "Ex: 100": "Ex: 100", "Ex: 20": "Ex: 20", "Ex: 20 pentru +20%": "Ex: 20 pentru +20%", "Ex: 25": "Ex: 25", + "Ex: Curte 1, Pod 4, Atelier electric": "Ex: Curte 1, Pod 4, Atelier electric", "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ă...", @@ -588,6 +621,7 @@ "Ești sigur?": "Ты уверен?", "FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU", "Facturi": "Счета", + "Facturi & abonament": "Facturi & abonament", "Facturi neplătite": "Неоплаченные счета", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Счёт", @@ -603,6 +637,7 @@ "Filters": "Фильтры", "Filtre": "Фильтры", "Filtru": "Фильтр", + "Filtru:": "Filtru:", "Finalizat": "Завершено", "Financiar": "Financiar", "Finanțe": "Finanțe", @@ -624,6 +659,7 @@ "Folosit ultima dată": "Folosit ultima dată", "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.", "Force logout": "Выйти со всех устройств", + "Format:": "Format:", "Foto": "Фото", "Foto factură": "Foto factură", "Foto piesă": "Foto piesă", @@ -661,10 +697,12 @@ "Generează factură": "Generează factură", "Generează raport": "Сгенерировать отчёт", "Generează token": "Generează token", + "Generez ZIP...": "Generez ZIP...", "Global": "Глобально", "Gol — trage un card aici": "Пусто — перетащите карточку сюда", "Grafic": "График", "Gravitate": "Gravitate", + "Grupare:": "Grupare:", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet", "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.", "Găsite (cu articol existent)": "Găsite (cu articol existent)", @@ -672,6 +710,7 @@ "Hatchback": "Хэтчбек", "Hibrid": "Гибрид", "IBAN": "IBAN", + "IBAN:": "IBAN:", "ID": "ID", "IDNO / CUI": "IDNO / CUI", "Ianuarie": "Январь", @@ -718,6 +757,7 @@ "Inventar": "Инвентаризация", "Invitație": "Приглашение", "Invitații": "Приглашения", + "Ion Popescu": "Ion Popescu", "Istoric depozitare": "Istoric depozitare", "Istoric prețuri furnizori": "Istoric prețuri furnizori", "Iulie": "Июль", @@ -725,7 +765,7 @@ "JSON": "JSON", "Joi": "Четверг", "Jurnal": "Журнал", - "KPI mecanici": "KPI mecanici", + "KPI mecanici": "KPI механиков", "Kanban": "Канбан", "Kilometraj": "Kilometraj", "Km": "км", @@ -733,11 +773,15 @@ "Km ieșire": "Пробег выход", "Km intrare": "Пробег вход", "Km la ieșire:": "Km la ieșire:", + "Km la intrare:": "Km la intrare:", "Km parcurși": "Пробег", "La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.", "La revedere": "До свидания", + "La succes: webhook → automat status=paid + extends company.active_until": "La succes: webhook → automat status=paid + extends company.active_until", "La timp 90d": "La timp 90d", "La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.", + "Laracasts": "Laracasts", + "Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.", "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.", "Lead-uri": "Lead-uri", "Lead-uri pe sursă": "Lead-uri pe sursă", @@ -749,6 +793,7 @@ "Limite": "Limite", "Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.", "Linii": "Linii", + "Link": "Link", "Link client (QR)": "Link client (QR)", "Link tracking": "Ссылка отслеживания", "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.", @@ -769,6 +814,7 @@ "Locație": "Локация", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", + "Log in": "Log in", "Login": "Вход", "Logo": "Logo", "Logo & favicon": "Logo & favicon", @@ -779,16 +825,17 @@ "Loturi (FIFO)": "Loturi (FIFO)", "Lucrare": "Lucrare", "Lucrare blocată": "Работа заблокирована", - "Lucrări": "Lucrări", + "Lucrări": "Работы", "Lucrări la terți": "Lucrări la terți", "Lucrări terți": "Работы у третьих лиц", "Luna aceasta": "В этом месяце", "Luna curentă": "Текущий месяц", "Luna trecută": "Прошлый месяц", - "Luna următoare ▶": "Luna următoare ▶", + "Luna următoare ▶": "Следующий месяц ▶", "Lunar": "Lunar", "Luni": "Месяцы", "Luni (zi)": "Понедельник", + "Luni – Vineri: 08:00 – 18:00": "Luni – Vineri: 08:00 – 18:00", "Lună": "Lună", "Lățime": "Lățime", "MB folosiți": "MB folosiți", @@ -809,6 +856,8 @@ "Manoperă": "Работа", "Manuală": "Ручная", "Marca": "Marca", + "Marca/Model": "Marca/Model", + "Marca/Model:": "Marca/Model:", "Marchează Gata": "Отметить готово", "Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).", "Marchează anulat": "Отметить как отменено", @@ -832,13 +881,16 @@ "Markup %": "Наценка %", "Martie": "Март", "Marți": "Вторник", + "Matricea": "Matricea", "Max clienți": "Max clienți", "Max fișe/lună": "Max fișe/lună", "Max mașini": "Max mașini", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Автомобили", + "Mecanic": "Механик", "Mecanic implicit": "Механик по умолчанию", + "Mecanici": "Механики", "Medie": "Среднее", "Mediu": "Средний", "Merchant Code": "Merchant Code", @@ -846,16 +898,20 @@ "Mesaj client": "Mesaj client", "Mesaje": "Сообщения", "Mesaje AI/lună": "Mesaje AI/lună", + "Metoda": "Metoda", "Metode de livrare": "Metode de livrare", "Metode plată": "Способы оплаты", "Metodă": "Metodă", "Metodă plată": "Способ оплаты", "Miercuri": "Среда", + "Migrare la alt sistem CRM": "Migrare la alt sistem CRM", "Min.": "Мин.", "Minim": "Minim", "Minute": "Минуты", "Mod": "Режим", + "Mod stub:": "Mod stub:", "Mod tarifare": "Mod tarifare", + "Mod:": "Mod:", "Model": "Модель", "Model Claude": "Model Claude", "Model Gemini": "Model Gemini", @@ -884,12 +940,14 @@ "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": "Не заполнено", "Neconfirmat": "Не подтверждено", + "Neconfirmate": "Не подтверждено", "Necunoscut": "Неизвестно", "Neplătit": "Не оплачено", "Nepublicat": "Не опубликовано", "Nesemnat": "Не подписано", "Nesincronizat": "Не синхронизировано", "Net 30 / Avans": "Net 30 / Avans", + "Net:": "Net:", "Neverificat": "Не проверено", "New client": "Новый клиент", "New mașină": "Новое авто", @@ -913,15 +971,18 @@ "Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.", "Niciodată": "Никогда", "Niciun client magazin": "Niciun client magazin", + "Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", "Niciun coeficient": "Niciun coeficient", "Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).", "Niciun depozit": "Niciun depozit", "Niciun istoric": "Niciun istoric", + "Niciun lead.": "Niciun lead.", "Niciun lot înregistrat": "Niciun lot înregistrat", + "Niciun mecanic activ.": "Niciun mecanic activ.", "Niciun mecanic implicit": "Niciun mecanic implicit", - "Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.", + "Niciun mecanic nu a finalizat lucrări în această perioadă.": "Ни один механик не завершил работы за этот период.", "Niciun plan definit": "Niciun plan definit", "Niciun preț înregistrat": "Niciun preț înregistrat", "Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉", @@ -930,7 +991,9 @@ "Niciun tenant încă": "Niciun tenant încă", "Niciun șablon": "Niciun șablon", "No": "Нет", + "No-show alert": "No-show alert", "Noiembrie": "Ноябрь", + "Norma ore": "Норма часов", "Normal": "Обычный", "Norme-ore": "Нормо-часы", "Note interne": "Note interne", @@ -953,6 +1016,7 @@ "Nr. poliță": "Nr. poliță", "Nr. telefon": "Тел. номер", "Nr. înmatriculare": "Гос. номер", + "Nr.:": "Nr.:", "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.", "Nu ai cont?": "Нет аккаунта?", "Nu am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor", @@ -961,6 +1025,7 @@ "Nu re-trimite mai des de X zile": "Nu re-trimite mai des de X zile", "Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!", "Nu, renunță": "Нет, отменить", + "Numar": "Номер", "Nume": "Имя", "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", @@ -975,6 +1040,7 @@ "Numele este obligatoriu": "Numele este obligatoriu", "Numerar": "Наличные", "Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)", + "Număr": "Номер", "Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.", "OCR eșuat": "OCR eșuat", "Observații": "Комментарии", @@ -983,6 +1049,7 @@ "Ok": "Ок", "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).", "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).", + "Onboarded": "Onboarded", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", @@ -1016,6 +1083,7 @@ "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", "Pagina": "Страница", "Pagini": "Страницы", "Panou": "Панель", @@ -1032,7 +1100,12 @@ "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Пауза", + "PayPal": "PayPal", + "PayPal:": "PayPal:", + "Payload:": "Payload:", + "Paynet": "Paynet", "Pe pauză": "На паузе", + "Pe status": "Pe status", "Penalizări": "Penalizări", "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.", "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.", @@ -1064,6 +1137,7 @@ "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.", "Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare", "Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)", + "Plate": "Plate", "Plată": "Платёж", "Plată & total": "Оплата и итого", "Plată anulată": "Plată anulată", @@ -1098,6 +1172,7 @@ "Preview": "Предпросмотр", "Preview PDF": "Предпросмотр PDF", "Previzualizare": "Предпросмотр", + "Previzualizare →": "Previzualizare →", "Prezent": "Присутствует", "Prezențe": "Присутствия", "Prezență": "Присутствие", @@ -1137,6 +1212,7 @@ "Producător": "Producător", "Produs": "Товар", "Produse": "Товары", + "Produsele tale": "Produsele tale", "Profesie": "Profesie", "Profil": "Profil", "Profile": "Профиль", @@ -1162,6 +1238,7 @@ "Progres etapă": "Прогресс этапа", "Proprietar": "Владелец", "Provider implicit": "Provider implicit", + "Provider:": "Provider:", "Public": "Публично", "Public (afișat la signup)": "Public (afișat la signup)", "Publicat": "Опубликовано", @@ -1187,6 +1264,8 @@ "Rating": "Рейтинг", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Реактивировать", + "Read the": "Read the", + "Real ore": "Факт часов", "Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese", "Recalculează": "Recalculează", "Recent": "Недавно", @@ -1216,6 +1295,7 @@ "Refuzat de client": "Отклонено клиентом", "Regenerează": "Перегенерировать", "Register": "Регистрация", + "Regiune": "Regiune", "Regulă": "Правило", "Reia": "Продолжить", "Reminder ITP / revizie": "Reminder ITP / revizie", @@ -1293,6 +1373,7 @@ "Scadență": "Срок оплаты", "Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.", "Scaner cod QR / Bare": "Scaner cod QR / Bare", + "Schimb ulei + filtru": "Schimb ulei + filtru", "Scoate din magazin": "Scoate din magazin", "Scrie mesajul tău...": "Scrie mesajul tău...", "Scăzut": "Низкий", @@ -1323,11 +1404,13 @@ "Semnătură digitală": "Цифровая подпись", "Senzori TPMS": "Senzori TPMS", "Septembrie": "Сентябрь", + "Serial": "Serial", "Serie": "Серия", "Serie factură": "Серия счёта", "Service ID": "Service ID", "Servicii": "Услуги", "Servicii & tarif": "Услуги и тариф", + "Servicii oferite": "Servicii oferite", "Servicii oferite (separate prin virgulă)": "Servicii oferite (separate prin virgulă)", "Servicii terțe": "Сторонние услуги", "Sesiuni": "Сессии", @@ -1368,16 +1451,19 @@ "Standard": "Стандартно", "Stare": "Stare", "Stare timp": "Время", + "Stare zi": "Состояние дня", "Start": "Старт", "Status": "Статус", "Status dosar": "Status dosar", "Status implicit": "Статус по умолчанию", + "Status:": "Status:", "Stoc": "Остаток", "Stoc adăugat": "Stoc adăugat", "Stoc minim": "Stoc minim", "Stoc minim atins": "Достигнут мин. остаток", "Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)", "Storage (MB)": "Storage (MB)", + "Storage media": "Storage media", "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", "Sub minim": "Ниже мин.", "Subcontractare": "Субподряд", @@ -1386,8 +1472,11 @@ "Subdomeniul: .service.mir.md": "Subdomeniul: .service.mir.md", "Subiect": "Тема", "Subiect (email)": "Subiect (email)", + "Subiect *": "Subiect *", "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", "Subtotal": "Промежуточный итог", + "Subtotal manopere:": "Subtotal manopere:", + "Subtotal piese:": "Subtotal piese:", "Succes": "Успех", "Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.", "Sumă": "Сумма", @@ -1431,6 +1520,7 @@ "Telefon alternativ": "Telefon alternativ", "Telefon principal": "Telefon principal", "Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.", + "Telefon:": "Telefon:", "Telefonie": "Телефония", "Telegram bot": "Telegram bot", "Telegram chat ID": "Telegram chat ID", @@ -1454,6 +1544,7 @@ "Terț": "Terț", "Test notificare push": "Test notificare push", "Testează bot Telegram": "Testează bot Telegram", + "Theme color": "Theme color", "Timp lucrat": "Отработано", "Timp mediu": "Среднее время", "Timp total": "Общее время", @@ -1486,6 +1577,8 @@ "Token generat!": "Token generat!", "Token public": "Token public", "Token revocat": "Token revocat", + "Tokens consumate luna aceasta:": "Tokens consumate luna aceasta:", + "Tokens:": "Tokens:", "Top piese vândute": "Top piese vândute", "Tot apelul trebuie făcut pe subdomain-ul tău:": "Tot apelul trebuie făcut pe subdomain-ul tău:", "Total": "Итого", @@ -1514,6 +1607,7 @@ "Transfer bancar": "Банковский перевод", "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway", "Transport": "Транспорт", + "Tranz.": "Tranz.", "Trial expiră la": "Trial expiră la", "Trimis": "Отправлено", "Trimis · fără răspuns": "Отправлено · без ответа", @@ -1538,8 +1632,10 @@ "Ultim login": "Последний вход", "Ultima actualizare": "Последнее обновление", "Ultima autentificare": "Последний вход", + "Ultima logare": "Ultima logare", "Ultima modificare": "Последнее изменение", "Ultima sincronizare": "Последняя синхронизация", + "Ultimul cod citit:": "Ultimul cod citit:", "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": "Срочно", @@ -1561,6 +1657,8 @@ "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.", "VIN-căutare": "VIN-поиск", + "VIN:": "VIN:", + "VW Passat 2018": "VW Passat 2018", "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", @@ -1576,7 +1674,7 @@ "Venit generat": "Venit generat", "Venit luna curentă": "Доход тек. месяца", "Venit luna trecută": "Venit luna trecută", - "Venit manopere": "Venit manopere", + "Venit manopere": "Доход работ", "Venituri": "Доходы", "Verificare": "Проверка", "Verificat": "Проверено", @@ -1587,6 +1685,7 @@ "Vezi tot": "Смотреть все", "Viitoare": "Viitoare", "Vineri": "Пятница", + "Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe", "Vizibil": "Видимо", "Vizual": "Визуально", "Vizualizează": "Просмотр", @@ -1600,6 +1699,9 @@ "Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!", "Vă mulțumim!": "Vă mulțumim!", "Văzut": "Просмотрено", + "WBAFE81070CY34521": "WBAFE81070CY34521", + "Watch video tutorials at": "Watch video tutorials at", + "We suggest starting with the following.": "We suggest starting with the following.", "Web Push neconfigurat": "Web Push neconfigurat", "Webhook": "Webhook", "Webhook (Notify URL)": "Webhook (Notify URL)", @@ -1615,6 +1717,7 @@ "Yes": "Да", "ZIP": "ZIP", "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.", + "Zi": "Zi", "Zile": "Дни", "Zile libere": "Выходные", "Zile livrare": "Zile livrare", @@ -1622,64 +1725,93 @@ "Zonă": "Zonă", "Zoom in": "Приблизить", "Zoom out": "Отдалить", + "a expirat.": "a expirat.", + "a fost suspendat.": "a fost suspendat.", "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via", - "achiziție": "achiziție", - "achiziții": "achiziții", + "achiziție": "закупка", + "achiziții": "закупки", "active": "активный", "actualizat": "обновлено", + "ajustare": "ajustare", + "angajat": "сотрудник", "angajați": "angajați", "apasă": "нажмите", + "apel": "звонок", + "apeluri": "звонки", "asistent gândește...": "asistent gândește...", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", "call": "Звонок", + "canal": "канал", "canale marketing": "canale marketing", + "cerere": "заявка", + "cereri": "заявки", "cheltuială": "cheltuială", + "cheltuieli": "cheltuieli", "client": "клиент", - "client magazin": "client magazin", + "client magazin": "клиент магазина", "clienți": "клиенты", - "clienți magazin": "clienți magazin", + "clienți magazin": "клиенты магазина", "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.", "coeficient": "коэффициент", - "coeficienți preț": "coeficienți preț", + "coeficienți preț": "ценовые коэффициенты", "comandă": "comandă", "comenzi online": "comenzi online", - "deal-uri": "deal-uri", + "companie": "companie", + "companii": "companii", + "dashboard.stripe.com": "dashboard.stripe.com", + "deal": "сделка", + "deal-uri": "сделки", "deals": "сделок", + "depozit": "склад", + "depozite": "склады", + "developer.paypal.com": "developer.paypal.com", + "eveniment": "событие", "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: WVWZZZ1JZXW000001": "ex: WVWZZZ1JZXW000001", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", "facebook": "Facebook", + "facturi": "facturi", "factură": "factură", "finalizat": "завершено", "fișa de lucru completă": "fișa de lucru completă", - "fișe lucru": "fișe lucru", - "fișă": "fișă", + "fișe lucru": "заказ-наряды", + "fișă": "наряд", + "furnizor": "поставщик", + "furnizori": "поставщики", "fără client": "без клиента", "google": "Google", "h norm": " ч норм", "h real": " ч факт", "instagram": "Instagram", + "jurnal": "журнал", + "la fiecare request": "la fiecare request", "liber/ușor": "liber/ușor", "linii neîncasate.": "linii neîncasate.", - "lucrare caroserie": "lucrare caroserie", - "lucrare terți": "lucrare terți", - "lucrări caroserie": "lucrări caroserie", - "lucrări terți": "lucrări terți", + "lucrare caroserie": "кузовная работа", + "lucrare terți": "работа субподрядчика", + "lucrări caroserie": "кузовные работы", + "lucrări terți": "работы субподрядчиков", "mașini": "машины", "mașină": "машина", "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).", "new": "новый", "niciodată": "niciodată", - "norme-ore": "norme-ore", - "normă": "normă", + "norme": "нормы", + "norme-ore": "нормо-часы", + "normă": "норма", "null = fără trial": "null = fără trial", "pentru a alege": "чтобы выбрать", + "piese": "piese", "piesă": "piesă", "pk_test_...": "pk_test_...", + "plan": "plan", + "planuri": "planuri", "plată": "plată", "plăți": "plăți", + "pod": "пост", "portal.common.currency_mdl": "portal.common.currency_mdl", "portal.common.email": "portal.common.email", "portal.common.name": "portal.common.name", @@ -1794,22 +1926,34 @@ "portal.tracking.unit_pcs": "portal.tracking.unit_pcs", "portal.tracking.what_asked": "portal.tracking.what_asked", "posturi de lucru": "posturi de lucru", - "programări": "programări", + "programare": "запись", + "programări": "записи", "programări active": "programări active", "programări neconfirmate < 24h": "programări neconfirmate < 24h", "referral": "Рекомендация", "reguli markup": "reguli markup", "regulă": "regulă", + "rol": "роль", + "roluri": "роли", + "salarii": "зарплаты", + "salariu": "зарплата", "sau": "или", - "set anvelope": "set anvelope", - "seturi anvelope": "seturi anvelope", + "set anvelope": "комплект шин", + "seturi anvelope": "комплекты шин", "site": "Сайт", "subcontractor": "субподрядчик", - "subcontractori": "subcontractori", + "subcontractori": "субподрядчики", + "tehnician": "техник", + "tehnicieni": "техники", "telegram": "Telegram", - "template-uri": "template-uri", + "template": "шаблон", + "template-uri": "шаблоны", "ultima fișă": "ultima fișă", + "utilizator": "пользователь", + "utilizatori": "пользователи", "ușor": "ușor", + "vehicul": "автомобиль", + "vehicule": "автомобили", "vip": "vip", "walk_in": "Пришёл лично", "whatsapp": "WhatsApp", @@ -1859,38 +2003,51 @@ "Șters": "Удалено", "Șters de": "Удалено", "Șters la": "Удалено", - "șabloane servicii": "șabloane servicii", - "șablon": "șablon", + "șabloane servicii": "шаблоны услуг", + "șablon": "шаблон", "șters": "șters", "Țară": "Țară", "Ține-mă minte": "Запомнить меня", "— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)", + "— alege —": "— alege —", "— fără pod —": "— fără pod —", + "— niciunul —": "— niciunul —", + "ℹ️": "ℹ️", "← Săpt. anterioară": "← Săpt. anterioară", "← Înapoi": "← Înapoi", "← Înapoi la AutoCRM": "← Înapoi la AutoCRM", "← Înapoi la facturi": "← Înapoi la facturi", + "→ Mergi la AutoCRM": "→ Mergi la AutoCRM", "→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials", "→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus", "↗ Deschide Purchase": "↗ Deschide Purchase", "↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament", + "↗ Editare": "↗ Editare", + "≥9h/10": "≥9h/10", + "⏰ Abonament expirat": "⏰ Abonament expirat", "⏹ Oprește": "⏹ Oprește", - "◀ Luna precedentă": "◀ Luna precedentă", + "◀ Luna precedentă": "◀ Предыдущий месяц", "⚖️ Balanță": "⚖️ Balanță", + "⚙ Configurare tenant": "⚙ Configurare tenant", "⚙ Cum funcționează:": "⚙ Cum funcționează:", "⚠ Acțiune necesară": "⚠ Требуется действие", "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.", "⚠ Fără plan": "⚠ Fără plan", "⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:", + "⚠ Posibil churn": "⚠ Posibil churn", "⚠ Recomandări": "⚠ Recomandări", "⚠ Recomandări:": "⚠ Recomandări:", "⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):", "⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.", "⚠️ Stoc minim atins": "⚠️ Stoc minim atins", + "⛔ Cont suspendat": "⛔ Cont suspendat", "✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!", + "✅ VIN decodificat": "✅ VIN decodificat", "✏ Editează pod": "✏ Editează pod", "✓ Achitat": "✓ Оплачено", + "✓ Copiat": "✓ Copiat", "✓ Pe abonament plătit": "✓ На платной подписке", + "✓ valid": "✓ valid", "⬇ Descarcă backup acum": "⬇ Descarcă backup acum", "⭐ VIP fără contact recent": "⭐ VIP fără contact recent", "🅿️ PayPal": "🅿️ PayPal", @@ -1900,14 +2057,17 @@ "🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite", "🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar", "🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)", + "👋 Bun venit!": "👋 Bun venit!", "👥 Clienți": "👥 Clienți", "💰 Finanțe": "💰 Finanțe", "💰 Fișe neplătite": "💰 Fișe neplătite", + "💳 Istoric abonamente": "💳 Istoric abonamente", "💳 Plată confirmată": "💳 Plată confirmată", "💳 Plătește": "💳 Plătește", "💳 Stripe": "💳 Stripe", "💾 Salvează setările": "💾 Salvează setările", "📅 Programare confirmată": "📅 Programare confirmată", + "📊 Activitate live": "📊 Activitate live", "📊 Încărcare": "📊 Încărcare", "📋 Copiază": "📋 Copiază", "📍 Locație & contact": "📍 Locație & contact", @@ -1915,11 +2075,14 @@ "📦 Caută piesă în catalog": "📦 Caută piesă în catalog", "📦 Export complet date tenant": "📦 Export complet date tenant", "📷 Pornește scanner": "📷 Pornește scanner", + "🔎 Decode VIN": "🔎 Decode VIN", + "🕒 Program de lucru": "🕒 Program de lucru", "🖨 PDF programări": "🖨 PDF programări", "🖨 Tipărește": "🖨 Tipărește", "🗑 Șterge": "🗑 Șterge", "😴 Clienți pierduți": "😴 Clienți pierduți", "🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM", "🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare", - "🚗 Mărci suportate": "🚗 Mărci suportate" + "🚗 Mărci suportate": "🚗 Mărci suportate", + "🛒 Magazin piese online": "🛒 Magazin piese online" } \ No newline at end of file diff --git a/resources/views/emails/appointment-confirmed.blade.php b/resources/views/emails/appointment-confirmed.blade.php index ec5f1c5..8581945 100644 --- a/resources/views/emails/appointment-confirmed.blade.php +++ b/resources/views/emails/appointment-confirmed.blade.php @@ -16,12 +16,12 @@ {{ $appointment->date?->format('d.m.Y') }} - Ora + {{ __('Ora') }} {{ \Illuminate\Support\Str::substr($appointment->time_start, 0, 5) }} – {{ \Illuminate\Support\Str::substr($appointment->time_end, 0, 5) }} @if ($appointment->title) - Subiect + {{ __('Subiect') }} {{ $appointment->title }} @endif @if ($vehicle) @@ -32,11 +32,11 @@ @endif @if ($master) - Maistru + {{ __('Maistru') }} {{ $master->name }} @endif @if ($post) - Pod + {{ __('Pod') }} {{ $post->name }} @endif diff --git a/resources/views/emails/payment-received.blade.php b/resources/views/emails/payment-received.blade.php index 30ca132..c3a38fc 100644 --- a/resources/views/emails/payment-received.blade.php +++ b/resources/views/emails/payment-received.blade.php @@ -16,7 +16,7 @@ {{ number_format((float) $payment->amount, 2, '.', ' ') }} {{ $currency }} - Metoda + {{ __('Metoda') }} {{ \App\Models\Tenant\Payment::METHODS[$payment->method] ?? $payment->method }} diff --git a/resources/views/emails/service-reminder.blade.php b/resources/views/emails/service-reminder.blade.php index dc1ead8..ea61d8c 100644 --- a/resources/views/emails/service-reminder.blade.php +++ b/resources/views/emails/service-reminder.blade.php @@ -25,7 +25,7 @@ - + @forelse ($data['rows'] as $r) @@ -220,7 +220,7 @@
{{ __('Top piese vândute') }}
-
Vehicul
+
{{ __('Vehicul') }}
{{ $vehicle->make }} {{ $vehicle->model }} {{ $vehicle->year ?? '' }} @if ($vehicle->plate) [{{ $vehicle->plate }}] @endif diff --git a/resources/views/emails/shop/order-confirmation.blade.php b/resources/views/emails/shop/order-confirmation.blade.php index 3f81738..4c87a78 100644 --- a/resources/views/emails/shop/order-confirmation.blade.php +++ b/resources/views/emails/shop/order-confirmation.blade.php @@ -11,7 +11,7 @@

{{ __('Comanda ta a fost primită cu succes.') }}

-
Comanda
+
{{ __('Comanda') }}
#{{ $order->number }}
{{ $order->created_at->isoFormat('D MMM YYYY, HH:mm') }} · @@ -19,7 +19,7 @@
-

Produsele tale

+

{{ __('Produsele tale') }}

@foreach ($items as $item) @@ -34,7 +34,7 @@ @endforeach @if ((float) $order->delivery_fee > 0) - + @endif diff --git a/resources/views/emails/work-order-ready.blade.php b/resources/views/emails/work-order-ready.blade.php index eb83dc8..8ccfe6f 100644 --- a/resources/views/emails/work-order-ready.blade.php +++ b/resources/views/emails/work-order-ready.blade.php @@ -32,7 +32,7 @@ @if ($paid > 0) - + @endif @@ -51,6 +51,6 @@ @endif -

{{ __('Atașat veți găsi') }} {{ __('fișa de lucru completă') }} (PDF).

+

{{ __('Atașat veți găsi') }} {{ __('fișa de lucru completă') }} {{ __('(PDF).') }}

{{ __('Vă mulțumim pentru încredere!') }}

@endcomponent diff --git a/resources/views/filament/central/pages/payment-settings.blade.php b/resources/views/filament/central/pages/payment-settings.blade.php index 82f23c6..7477698 100644 --- a/resources/views/filament/central/pages/payment-settings.blade.php +++ b/resources/views/filament/central/pages/payment-settings.blade.php @@ -19,14 +19,14 @@
  • {{ __('Operatorul (tu) creezi factură:') }} /admin/companies/{id} {{ __('→ „Generează factură"') }}
  • {{ __('Tenantul vede factura în interiorul lui la') }} https://{slug}.service.mir.md/billing
  • {{ __('Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual') }}
  • -
  • La succes: webhook → automat status=paid + extends company.active_until
  • +
  • {{ __('La succes: webhook → automat status=paid + extends company.active_until') }}
  • {{ __('La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions') }}
  • {{ __('⚠ Pentru a primi plăți LIVE:') }}
      -
    • {{ __('Stripe: înregistrează cont la') }} dashboard.stripe.com {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}
    • -
    • PayPal: developer.paypal.com {{ __('→ creează aplicație live → ia credentials') }}
    • +
    • {{ __('Stripe: înregistrează cont la') }} {{ __('dashboard.stripe.com') }} {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}
    • +
    • {{ __('PayPal:') }} {{ __('developer.paypal.com') }} {{ __('→ creează aplicație live → ia credentials') }}
    • {{ __('Transfer bancar: pune doar IBAN-ul tău, fără cont gateway') }}
    diff --git a/resources/views/filament/central/resources/company/view.blade.php b/resources/views/filament/central/resources/company/view.blade.php index 704f900..a6b9bf4 100644 --- a/resources/views/filament/central/resources/company/view.blade.php +++ b/resources/views/filament/central/resources/company/view.blade.php @@ -105,10 +105,10 @@ {{-- STATS GRID --}}
    -
    📊 Activitate live
    +
    {{ __('📊 Activitate live') }}
    -
    Useri
    +
    {{ __('Useri') }}
    {{ $stats['users'] }}
    @@ -142,17 +142,17 @@
    {{ $this->record->settings['currency'] ?? 'MDL' }}
    -
    Storage media
    +
    {{ __('Storage media') }}
    {{ $stats['storage_mb'] }}
    {{ __('MB folosiți') }}
    -
    Ultima logare
    +
    {{ __('Ultima logare') }}
    {{ $stats['last_login'] ? \Carbon\Carbon::parse($stats['last_login'])->diffForHumans() : 'Niciodată' }}
    @if ($stats['last_login'] && \Carbon\Carbon::parse($stats['last_login'])->diffInDays() > 14) -
    ⚠ Posibil churn
    +
    {{ __('⚠ Posibil churn') }}
    @endif
    @@ -160,7 +160,7 @@ {{-- SUBSCRIPTIONS --}}
    -
    💳 Istoric abonamente
    +
    {{ __('💳 Istoric abonamente') }}
    @if ($this->record->subscriptions->isEmpty())
    {{ __('Niciun abonament emis. Folosește „Generează factură" de sus.') }} @@ -170,10 +170,10 @@
    - + - + @@ -199,7 +199,7 @@ {{-- CONFIG --}}
    -
    ⚙ Configurare tenant
    +
    {{ __('⚙ Configurare tenant') }}
    {{ __('Limbă') }}
    @@ -216,20 +216,20 @@
    {{ $this->record->settings['labor_rate'] ?? '—' }}
    -
    Onboarded
    +
    {{ __('Onboarded') }}
    {{ ! empty($this->record->settings['onboarded_at']) ? '✓ Da' : '✗ Nu' }}
    -
    Theme color
    +
    {{ __('Theme color') }}
    {{ $this->record->settings['theme_color'] ?? '#3B82F6' }}
    -
    AI provider
    +
    {{ __('AI provider') }}
    {{ $this->record->settings['ai']['default_provider'] ?? 'neconfigurat' }}
    diff --git a/resources/views/filament/tenant/ai-reply.blade.php b/resources/views/filament/tenant/ai-reply.blade.php index 198143a..dc2fc60 100644 --- a/resources/views/filament/tenant/ai-reply.blade.php +++ b/resources/views/filament/tenant/ai-reply.blade.php @@ -16,9 +16,9 @@ @if (! $isError && ($provider || $tokensIn !== null))
    - @if ($provider) Provider: {{ strtoupper($provider) }} @endif + @if ($provider) {{ __('Provider:') }} {{ strtoupper($provider) }} @endif @if ($tokensIn !== null || $tokensOut !== null) - Tokens: {{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }} ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out) + {{ __('Tokens:') }} {{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }} ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out) @endif @if ($latency !== null) Latency: {{ $latency }} ms @endif
    diff --git a/resources/views/filament/tenant/pages/ai-assistant.blade.php b/resources/views/filament/tenant/pages/ai-assistant.blade.php index 2042520..2b9d02d 100644 --- a/resources/views/filament/tenant/pages/ai-assistant.blade.php +++ b/resources/views/filament/tenant/pages/ai-assistant.blade.php @@ -93,7 +93,7 @@ @if ($totalCalls > 0)
    - Tokens consumate luna aceasta: + {{ __('Tokens consumate luna aceasta:') }} {{ number_format($totalTokens) }} tokens · {{ $totalCalls }} cereri @foreach ($usage as $provider => $u) · {{ strtoupper($provider) }}: {{ number_format($u['tokens_in'] + $u['tokens_out']) }} @@ -125,10 +125,10 @@ @if (! $chat || $chat->messages->isEmpty())
    -
    Asistent AI pentru autoservice
    +
    {{ __('Asistent AI pentru autoservice') }}
    {{ __('Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...') }}
    - Configurare: {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }} + {{ __('Configurare:') }} {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
    @else diff --git a/resources/views/filament/tenant/pages/api-tokens.blade.php b/resources/views/filament/tenant/pages/api-tokens.blade.php index dbf1eb6..8f9fe06 100644 --- a/resources/views/filament/tenant/pages/api-tokens.blade.php +++ b/resources/views/filament/tenant/pages/api-tokens.blade.php @@ -30,11 +30,11 @@ @click="navigator.clipboard.writeText($refs.t.innerText); copied = true; setTimeout(() => copied = false, 2000)" style="margin-left:12px;background:#3b82f6;color:white;padding:4px 10px;border:none;border-radius:4px;cursor:pointer;font-size:11px;"> {{ __('📋 Copiază') }} - ✓ Copiat + {{ __('✓ Copiat') }}
    @endif @@ -49,8 +49,8 @@
    - - + + @@ -77,10 +77,10 @@
    {{ __('Cum folosești API-ul:') }}
      -
    1. {{ __('Obține token cu') }} POST /api/v1/login cu email+password JSON
    2. +
    3. {{ __('Obține token cu') }} {{ __('POST /api/v1/login') }} cu email+password JSON
    4. {{ __('Sau generează unul aici (recomandat pentru integrări permanente)') }}
    5. -
    6. {{ __('Adaugă header') }} Authorization: Bearer <token> la fiecare request
    7. -
    8. Endpoints disponibile: /api/v1/clients, /api/v1/vehicles, /api/v1/work-orders (GET, POST, PATCH, DELETE)
    9. +
    10. {{ __('Adaugă header') }} Authorization: Bearer <token> {{ __('la fiecare request') }}
    11. +
    12. {{ __('Endpoints disponibile:') }} {{ __('/api/v1/clients') }}, {{ __('/api/v1/vehicles') }}, {{ __('/api/v1/work-orders') }} {{ __('(GET, POST, PATCH, DELETE)') }}
    13. {{ __('Tot apelul trebuie făcut pe subdomain-ul tău:') }} https://{{ tenant()?->slug ?? 'YOURSLUG' }}.service.mir.md/api/v1/...
    diff --git a/resources/views/filament/tenant/pages/backup.blade.php b/resources/views/filament/tenant/pages/backup.blade.php index 5e25bde..eadf33b 100644 --- a/resources/views/filament/tenant/pages/backup.blade.php +++ b/resources/views/filament/tenant/pages/backup.blade.php @@ -22,7 +22,7 @@

    • {{ __('Backup periodic (descarcă local sau sincronizează cu cloud)') }}
    • -
    • Migrare la alt sistem CRM
    • +
    • {{ __('Migrare la alt sistem CRM') }}
    • {{ __('Audit / verificări fiscale') }}
    • {{ __('Conformitate GDPR (la cererea ștergerii datelor)') }}
    @@ -31,12 +31,12 @@ depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.') }}

    - Format: {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }} + {{ __('Format:') }} {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}

    diff --git a/resources/views/filament/tenant/pages/calendar.blade.php b/resources/views/filament/tenant/pages/calendar.blade.php index 84c0558..8222f29 100644 --- a/resources/views/filament/tenant/pages/calendar.blade.php +++ b/resources/views/filament/tenant/pages/calendar.blade.php @@ -155,12 +155,12 @@

    -
    {{ __('CRM › Programări ›') }} Calendar vizual
    -

    Calendar vizual

    +
    {{ __('CRM › Programări ›') }} {{ __('Calendar vizual') }}
    +

    {{ __('Calendar vizual') }}

    - +
    @@ -177,12 +177,12 @@
    {{ __('programări active') }}
    -
    Confirmate
    +
    {{ __('Confirmate') }}
    {{ $stats['confirmed_count'] }} / {{ $stats['total_count'] }}
    {{ $stats['confirmation_rate_pct'] }}% rata confirmare
    -
    No-show alert
    +
    {{ __('No-show alert') }}
    {{ $stats['no_show_alert'] }}
    {{ __('programări neconfirmate < 24h') }}
    @@ -196,32 +196,32 @@
    - Mod: + {{ __('Mod:') }}
    - + - +
    - Grupare: + {{ __('Grupare:') }}
    - - + +
    @if ($viewMode === 'custom')
    - De la: + {{ __('De la:') }} {{ __('Până la:') }}
    @endif
    - Filtru: + {{ __('Filtru:') }}
    @@ -239,7 +239,7 @@
    {{ __('⚙ Cum funcționează:') }} - Matricea {{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile{{ __('. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.') }} + {{ __('Matricea') }} {{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile{{ __('. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.') }}
    @if ($viewMode === 'list') @@ -286,7 +286,7 @@ @endforeach @foreach ($rows as $row) -
    +
    {{ $row['name'] }} @if ($row['kind'] === 'post') @endif
    @@ -338,7 +338,7 @@

    {{ __('Legendă') }}

    -
    Mecanici
    +
    {{ __('Mecanici') }}
    @foreach ($this->getMasterOptions() as $id => $name) @php @@ -355,13 +355,13 @@
    0–5h/10 {{ __('liber/ușor') }}
    5–8.5h/10 mediu
    -
    ≥9h/10 plin
    +
    {{ __('≥9h/10') }} plin
    -
    Stare zi
    +
    {{ __('Stare zi') }}
    -
    Weekend
    +
    {{ __('Weekend') }}
    {{ __('Închis (Duminică/sărbătoare)') }}
    {{ __('Astăzi') }}
    @@ -382,11 +382,11 @@
    @if ($openEvent['client_name'])
    {{ $openEvent['client_name'] }}
    @endif - @if ($openEvent['client_phone'])
    {{ $openEvent['client_phone'] }}
    @endif + @if ($openEvent['client_phone'])
    {{ $openEvent['client_phone'] }}
    @endif @if ($openEvent['vehicle'])
    {{ $openEvent['vehicle'] }}
    @endif - @if ($openEvent['plate'])
    {{ $openEvent['plate'] }}
    @endif - @if ($openEvent['master_name'])
    {{ $openEvent['master_name'] }}
    @endif - @if ($openEvent['post_name'])
    {{ $openEvent['post_name'] }}
    @endif + @if ($openEvent['plate'])
    {{ $openEvent['plate'] }}
    @endif + @if ($openEvent['master_name'])
    {{ $openEvent['master_name'] }}
    @endif + @if ($openEvent['post_name'])
    {{ $openEvent['post_name'] }}
    @endif
    @if ($openEvent['notes'])
    {{ $openEvent['notes'] }}
    @@ -394,7 +394,7 @@
    - ↗ Editare + {{ __('↗ Editare') }}
    @endif
    @@ -410,10 +410,10 @@
    -
    +
    -
    +
    -
    +
    @@ -432,7 +432,7 @@ @endforeach
    -
    +
    +
    - +
    @@ -491,9 +491,9 @@
    - + - + @foreach ($this->getSupplierOptions() as $id => $name) @endforeach @@ -102,21 +102,21 @@
    - +
    - +
    - +
    Livrare{{ __('Livrare') }} {{ number_format((float) $order->delivery_fee, 2) }} {{ $currency }}
    Achitat{{ __('Achitat') }} {{ number_format($paid, 2, '.', ' ') }} {{ $currency }}
    {{ __('Factură') }}Plan{{ __('Plan') }} {{ __('Perioadă') }} {{ __('Sumă') }}Status{{ __('Status') }} {{ __('Plătit') }}
    {{ __('Nume') }} {{ __('Folosit ultima dată') }}CreatPermisiuni{{ __('Creat') }}{{ __('Permisiuni') }}
    - + diff --git a/resources/views/filament/tenant/pages/finance.blade.php b/resources/views/filament/tenant/pages/finance.blade.php index e4edc09..c9e1c33 100644 --- a/resources/views/filament/tenant/pages/finance.blade.php +++ b/resources/views/filament/tenant/pages/finance.blade.php @@ -56,8 +56,8 @@ @if ($tab === 'overview')
    {{ __('Încasări') }}
    {{ number_format($data['income'], 2, '.', ' ') }} MDL
    -
    Cheltuieli
    {{ number_format($data['expenses'], 2, '.', ' ') }} MDL
    -
    Profit
    {{ number_format($data['profit'], 2, '.', ' ') }} MDL
    +
    {{ __('Cheltuieli') }}
    {{ number_format($data['expenses'], 2, '.', ' ') }} MDL
    +
    {{ __('Profit') }}
    {{ number_format($data['profit'], 2, '.', ' ') }} MDL
    {{ __('Datorii clienți') }}
    {{ number_format($data['debtTotal'], 2, '.', ' ') }} MDL
    @@ -80,22 +80,22 @@ @endforeach
    - Net: {{ number_format($data['net'], 2, '.', ' ') }} MDL + {{ __('Net:') }} {{ number_format($data['net'], 2, '.', ' ') }} MDL
    @elseif ($tab === 'pnl')
    -
    Venituri
    +
    {{ __('Venituri') }}
    ArticolDenumireBrandCant.{{ __('Preț') }}Status{{ __('Articol') }}{{ __('Denumire') }}{{ __('Brand') }}{{ __('Cant.') }}{{ __('Preț') }}{{ __('Status') }}
    - +
    Manopere{{ number_format($data['worksRevenue'], 2, '.', ' ') }}
    {{ __('Manopere') }}{{ number_format($data['worksRevenue'], 2, '.', ' ') }}
    {{ __('Piese (vânzare)') }}{{ number_format($data['partsRevenue'], 2, '.', ' ') }}
    {{ __('Total venituri') }}{{ number_format($data['totalRevenue'], 2, '.', ' ') }}
    -
    Costuri
    +
    {{ __('Costuri') }}
    @foreach ($data['expensesByCat'] as $row) @@ -106,7 +106,7 @@
    -
    Profit net
    +
    {{ __('Profit net') }}
    {{ number_format($data['netProfit'], 2, '.', ' ') }} MDL
    Marjă: {{ $data['marginPct'] }}%
    Marjă piese: {{ number_format($data['partsMargin'], 2, '.', ' ') }} MDL
    @@ -115,7 +115,7 @@ @elseif ($tab === 'balance')
    -
    Active
    +
    {{ __('Active') }}
    {{ __('Cost piese (achiziție)') }}{{ number_format($data['partsCost'], 2, '.', ' ') }}
    diff --git a/resources/views/filament/tenant/pages/integrations.blade.php b/resources/views/filament/tenant/pages/integrations.blade.php index 555c3cc..102a43d 100644 --- a/resources/views/filament/tenant/pages/integrations.blade.php +++ b/resources/views/filament/tenant/pages/integrations.blade.php @@ -35,7 +35,7 @@
    - ℹ️ Status: {{ __('aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat. + {{ __('ℹ️') }} {{ __('Status:') }} {{ __('aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat. Pentru moment, valorile salvate sunt accesibile în cod via') }} $tenant->settings['integrations'].
    diff --git a/resources/views/filament/tenant/pages/mechanic-kpi.blade.php b/resources/views/filament/tenant/pages/mechanic-kpi.blade.php index f2390df..273ecfd 100644 --- a/resources/views/filament/tenant/pages/mechanic-kpi.blade.php +++ b/resources/views/filament/tenant/pages/mechanic-kpi.blade.php @@ -30,12 +30,12 @@
    {{ __('Numerar net (toate plățile - cheltuieli)') }}{{ number_format($data['netCash'], 2, '.', ' ') }} MDL
    {{ __('Datorii clienți (de încasat)') }}{{ number_format($data['debt'], 2, '.', ' ') }} MDL
    - + - - + + - + diff --git a/resources/views/filament/tenant/pages/onboarding.blade.php b/resources/views/filament/tenant/pages/onboarding.blade.php index 2031f6e..997591c 100644 --- a/resources/views/filament/tenant/pages/onboarding.blade.php +++ b/resources/views/filament/tenant/pages/onboarding.blade.php @@ -38,7 +38,7 @@
    -

    👋 Bun venit!

    +

    {{ __('👋 Bun venit!') }}

    {{ __('Hai să facem 30 de secunde de configurare ca AutoCRM-ul tău să arate exact cum vrei tu. Toate aceste setări pot fi schimbate oricând din meniul „Setări".') }}
    diff --git a/resources/views/filament/tenant/pages/pipeline-board.blade.php b/resources/views/filament/tenant/pages/pipeline-board.blade.php index 8515839..f8eb8a5 100644 --- a/resources/views/filament/tenant/pages/pipeline-board.blade.php +++ b/resources/views/filament/tenant/pages/pipeline-board.blade.php @@ -403,7 +403,7 @@
    - +
    @@ -411,7 +411,7 @@
    - +
    diff --git a/resources/views/filament/tenant/pages/recommendations.blade.php b/resources/views/filament/tenant/pages/recommendations.blade.php index 305319a..5c168bf 100644 --- a/resources/views/filament/tenant/pages/recommendations.blade.php +++ b/resources/views/filament/tenant/pages/recommendations.blade.php @@ -35,7 +35,7 @@ @empty -
    + @endforelse
    Mecanic{{ __('Mecanic') }} {{ __('Lucrări') }}Norma oreReal ore{{ __('Norma ore') }}{{ __('Real ore') }} {{ __('Eficiență') }}Venit manopere{{ __('Venit manopere') }}
    Niciun client pierdut. 🎉
    {{ __('Niciun client pierdut. 🎉') }}
    diff --git a/resources/views/filament/tenant/pages/reports.blade.php b/resources/views/filament/tenant/pages/reports.blade.php index 2f208b3..0ebb521 100644 --- a/resources/views/filament/tenant/pages/reports.blade.php +++ b/resources/views/filament/tenant/pages/reports.blade.php @@ -104,7 +104,7 @@
    {{ __('Încasări pe metodă') }}
    - + @forelse ($data['by_method'] as $row) @@ -119,9 +119,9 @@
    {{ __('Metodă') }}Tranz.{{ __('Total') }}
    {{ __('Metodă') }}{{ __('Tranz.') }}{{ __('Total') }}
    -
    Cheltuieli pe categorie
    +
    {{ __('Cheltuieli pe categorie') }}
    - + @forelse ($data['by_category'] as $row) @@ -150,7 +150,7 @@
    -
    Pe status
    +
    {{ __('Pe status') }}
    Categorie{{ __('Nr.') }}{{ __('Total') }}
    {{ __('Categorie') }}{{ __('Nr.') }}{{ __('Total') }}
    @forelse ($data['by_status'] as $row) @@ -169,11 +169,11 @@
    - - - + + + - + @forelse ($data['rows'] as $r) @@ -185,7 +185,7 @@ @empty - + @endforelse
    MecanicSpecializareManopere{{ __('Mecanic') }}{{ __('Specializare') }}{{ __('Manopere') }} {{ __('Ore') }}Venit{{ __('Venit') }}
    {{ number_format($r['revenue'], 2, '.', ' ') }}
    Niciun mecanic activ.
    {{ __('Niciun mecanic activ.') }}
    @@ -198,7 +198,7 @@
    {{ __('Manoperă') }} {{ __('Nr.') }} {{ __('Ore total') }}Venit{{ __('Venit') }}
    - + @forelse ($data['sold'] as $r) @@ -238,7 +238,7 @@
    {{ __('⚠️ Stoc minim atins') }}
    {{ __('Piesă') }}Cant.Venit{{ __('Marjă') }}
    {{ __('Piesă') }}{{ __('Cant.') }}{{ __('Venit') }}{{ __('Marjă') }}
    - + @forelse ($data['low'] as $p) @@ -270,7 +270,7 @@ @empty - + @endforelse
    {{ __('Piesă') }}{{ __('Stoc') }}Min.
    {{ __('Piesă') }}{{ __('Stoc') }}{{ __('Min.') }}
    {{ $row->cnt }}
    Niciun lead.
    {{ __('Niciun lead.') }}
    diff --git a/resources/views/filament/tenant/pages/scanner.blade.php b/resources/views/filament/tenant/pages/scanner.blade.php index 34ed58a..7077dd7 100644 --- a/resources/views/filament/tenant/pages/scanner.blade.php +++ b/resources/views/filament/tenant/pages/scanner.blade.php @@ -70,7 +70,7 @@
    - Ultimul cod citit: + {{ __('Ultimul cod citit:') }}
    diff --git a/resources/views/filament/tenant/pages/vin-search.blade.php b/resources/views/filament/tenant/pages/vin-search.blade.php index 7fc78af..5722de2 100644 --- a/resources/views/filament/tenant/pages/vin-search.blade.php +++ b/resources/views/filament/tenant/pages/vin-search.blade.php @@ -21,9 +21,9 @@
    -

    🔎 Decode VIN

    +

    {{ __('🔎 Decode VIN') }}

    - +
    @@ -31,13 +31,13 @@ @if ($decoded)
    @if ($decoded['valid']) -

    ✅ VIN decodificat

    +

    {{ __('✅ VIN decodificat') }}

    {{ __('Producător') }}
    {{ $decoded['manufacturer'] }}
    {{ __('Țară') }}
    {{ $decoded['country'] }}
    An model (estimat)
    {{ $decoded['year'] ?? '—' }}
    WMI
    {{ $decoded['wmi'] }}
    -
    Serial
    {{ $decoded['serial'] }}
    +
    {{ __('Serial') }}
    {{ $decoded['serial'] }}
    @else
    ⚠ {{ $decoded['error'] ?? 'WMI necunoscut — producătorul nu e în baza de date locală.' }}
    @@ -49,7 +49,7 @@

    {{ __('🚗 Mașini cu acest VIN în CRM') }}

    - + @foreach ($matches as $v) @@ -78,7 +78,7 @@
    Niciun rezultat pentru „{{ $partsQuery }}"
    @else
    VINMarca/ModelPlate{{ __('Client') }}Km
    VIN{{ __('Marca/Model') }}{{ __('Plate') }}{{ __('Client') }}{{ __('Km') }}
    - + @foreach ($parts as $p) diff --git a/resources/views/filament/tenant/part-qr.blade.php b/resources/views/filament/tenant/part-qr.blade.php index abcaef4..ba66abc 100644 --- a/resources/views/filament/tenant/part-qr.blade.php +++ b/resources/views/filament/tenant/part-qr.blade.php @@ -7,6 +7,6 @@ @if ($part->article)
    {{ $part->article }}
    @endif -
    Payload: {{ $payload }}
    +
    {{ __('Payload:') }} {{ $payload }}
    diff --git a/resources/views/filament/tenant/tracking-qr.blade.php b/resources/views/filament/tenant/tracking-qr.blade.php index 4d871df..163c78f 100644 --- a/resources/views/filament/tenant/tracking-qr.blade.php +++ b/resources/views/filament/tenant/tracking-qr.blade.php @@ -18,7 +18,7 @@
    - +
    VIN
    {{ $info['vin'] }}
    -
    Regiune
    +
    {{ __('Regiune') }}
    {{ $info['region'] ?? '—' }}
    {{ __('Țară') }}
    @@ -20,16 +20,16 @@
    {{ __('Producător') }}
    {{ $info['manufacturer'] ?? '— (WMI necunoscut)' }}
    -
    An model
    +
    {{ __('An model') }}
    {{ $info['year'] ?? '—' }}
    {{ __('Cod uzină') }}
    {{ $info['plant'] ?? '—' }}
    -
    Checksum (ISO)
    +
    {{ __('Checksum (ISO)') }}
    @if ($info['checksum_valid']) - ✓ valid + {{ __('✓ valid') }} @else {{ __('— (multe VIN-uri europene nu respectă checksum-ul NA)') }} @endif diff --git a/resources/views/parts/labels.blade.php b/resources/views/parts/labels.blade.php index 8adde3d..8598d73 100644 --- a/resources/views/parts/labels.blade.php +++ b/resources/views/parts/labels.blade.php @@ -2,7 +2,7 @@ - Etichete piese + {{ __('Etichete piese') }}
    Denumire{{ __('Cod') }}Brand{{ __('Stoc') }}{{ __('Preț') }}
    {{ __('Denumire') }}{{ __('Cod') }}{{ __('Brand') }}{{ __('Stoc') }}{{ __('Preț') }}