feat(i18n): convert 38 hardcoded static labels + safe blade wrap + 226 keys

- 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) <noreply@anthropic.com>
This commit is contained in:
2026-07-15 06:17:10 +00:00
parent 3911012c65
commit 7077fff3b3
63 changed files with 800 additions and 284 deletions
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+12 -2
View File
@@ -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;
@@ -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;
+12 -2
View File
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+12 -2
View File
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
+12 -2
View File
@@ -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;
@@ -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;
+12 -2
View File
@@ -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;
@@ -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;
+195 -32
View File
@@ -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ță.",
@@ -770,6 +815,7 @@
"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",
"Logo (opțional)": "Logo (opțional)",
@@ -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: <slug>.service.mir.md": "Subdomeniul: <slug>.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 &lt; 24h": "programări neconfirmate &lt; 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"
}
+194 -31
View File
@@ -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: <slug>.service.mir.md": "Subdomeniul: <slug>.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 &lt; 24h": "programări neconfirmate &lt; 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"
}
@@ -16,12 +16,12 @@
<td style="padding:14px 18px;font-size:18px;text-align:right;font-weight:700;color:{{ $themeColor }};">
{{ $appointment->date?->format('d.m.Y') }}
</td></tr>
<tr><td style="padding:8px 18px;font-size:13px;color:#374151;">Ora</td>
<tr><td style="padding:8px 18px;font-size:13px;color:#374151;">{{ __('Ora') }}</td>
<td style="padding:8px 18px;font-size:14px;text-align:right;font-weight:600;">
{{ \Illuminate\Support\Str::substr($appointment->time_start, 0, 5) }} {{ \Illuminate\Support\Str::substr($appointment->time_end, 0, 5) }}
</td></tr>
@if ($appointment->title)
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Subiect</td>
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Subiect') }}</td>
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $appointment->title }}</td></tr>
@endif
@if ($vehicle)
@@ -32,11 +32,11 @@
</td></tr>
@endif
@if ($master)
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Maistru</td>
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Maistru') }}</td>
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $master->name }}</td></tr>
@endif
@if ($post)
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Pod</td>
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Pod') }}</td>
<td style="padding:8px 18px;font-size:12px;text-align:right;">{{ $post->name }}</td></tr>
@endif
</table>
@@ -16,7 +16,7 @@
<td style="padding:14px 18px;font-size:18px;text-align:right;font-weight:700;color:#059669;">
{{ number_format((float) $payment->amount, 2, '.', ' ') }} {{ $currency }}
</td></tr>
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">Metoda</td>
<tr><td style="padding:8px 18px;font-size:12px;color:#6b7280;">{{ __('Metoda') }}</td>
<td style="padding:8px 18px;font-size:12px;text-align:right;">
{{ \App\Models\Tenant\Payment::METHODS[$payment->method] ?? $payment->method }}
</td></tr>
@@ -25,7 +25,7 @@
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:16px 0;border:1px solid #e5e7eb;border-radius:8px;">
<tr><td style="padding:14px;">
<div style="font-size:11px;text-transform:uppercase;color:#6b7280;letter-spacing:.5px;">Vehicul</div>
<div style="font-size:11px;text-transform:uppercase;color:#6b7280;letter-spacing:.5px;">{{ __('Vehicul') }}</div>
<div style="font-size:16px;font-weight:700;margin-top:4px;">
{{ $vehicle->make }} {{ $vehicle->model }} {{ $vehicle->year ?? '' }}
@if ($vehicle->plate) <span style="color:{{ $themeColor }};">[{{ $vehicle->plate }}]</span> @endif
@@ -11,7 +11,7 @@
<p style="color: #6b7280; margin-bottom: 24px;">{{ __('Comanda ta a fost primită cu succes.') }}</p>
<div style="background: #f9fafb; border-radius: 10px; padding: 18px; margin-bottom: 18px;">
<div style="font-size: 14px; color: #6b7280;">Comanda</div>
<div style="font-size: 14px; color: #6b7280;">{{ __('Comanda') }}</div>
<div style="font-size: 22px; font-weight: 700; margin-bottom: 8px;">#{{ $order->number }}</div>
<div style="color: #6b7280; font-size: 13px;">
{{ $order->created_at->isoFormat('D MMM YYYY, HH:mm') }} ·
@@ -19,7 +19,7 @@
</div>
</div>
<h3 style="font-size: 16px; margin-bottom: 8px;">Produsele tale</h3>
<h3 style="font-size: 16px; margin-bottom: 8px;">{{ __('Produsele tale') }}</h3>
<table style="width: 100%; border-collapse: collapse; margin-bottom: 18px; font-size: 14px;">
@foreach ($items as $item)
<tr>
@@ -34,7 +34,7 @@
@endforeach
@if ((float) $order->delivery_fee > 0)
<tr>
<td style="padding: 8px 0; color: #6b7280;">Livrare</td>
<td style="padding: 8px 0; color: #6b7280;">{{ __('Livrare') }}</td>
<td style="padding: 8px 0; text-align: right;">{{ number_format((float) $order->delivery_fee, 2) }} {{ $currency }}</td>
</tr>
@endif
@@ -32,7 +32,7 @@
</tr>
@if ($paid > 0)
<tr>
<td style="padding:6px 16px;font-size:12px;color:#6b7280;">Achitat</td>
<td style="padding:6px 16px;font-size:12px;color:#6b7280;">{{ __('Achitat') }}</td>
<td style="padding:6px 16px;font-size:12px;text-align:right;color:#059669;">{{ number_format($paid, 2, '.', ' ') }} {{ $currency }}</td>
</tr>
@endif
@@ -51,6 +51,6 @@
</div>
@endif
<p style="margin-top:20px;">{{ __('Atașat veți găsi') }} <b>{{ __('fișa de lucru completă') }}</b> (PDF).</p>
<p style="margin-top:20px;">{{ __('Atașat veți găsi') }} <b>{{ __('fișa de lucru completă') }}</b> {{ __('(PDF).') }}</p>
<p>{{ __('Vă mulțumim pentru încredere!') }}</p>
@endcomponent
@@ -19,14 +19,14 @@
<li>{{ __('Operatorul (tu) creezi factură:') }} <code>/admin/companies/{id}</code> {{ __('→ „Generează factură"') }}</li>
<li>{{ __('Tenantul vede factura în interiorul lui la') }} <code>https://{slug}.service.mir.md/billing</code></li>
<li>{{ __('Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual') }}</li>
<li>La succes: webhook automat status=paid + extends company.active_until</li>
<li>{{ __('La succes: webhook → automat status=paid + extends company.active_until') }}</li>
<li>{{ __('La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions') }}</li>
</ol>
<div style="margin-top:12px;padding-top:12px;border-top:1px solid #e5e7eb;">
<b>{{ __('⚠ Pentru a primi plăți LIVE:') }}</b>
<ul style="margin:4px 0 0 18px;padding:0;font-size:12px;">
<li>{{ __('Stripe: înregistrează cont la') }} <a href="https://dashboard.stripe.com" target="_blank" style="color:#6366f1;">dashboard.stripe.com</a> {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}</li>
<li>PayPal: <a href="https://developer.paypal.com/dashboard/applications" target="_blank" style="color:#6366f1;">developer.paypal.com</a> {{ __('→ creează aplicație live → ia credentials') }}</li>
<li>{{ __('Stripe: înregistrează cont la') }} <a href="https://dashboard.stripe.com" target="_blank" style="color:#6366f1;">{{ __('dashboard.stripe.com') }}</a> {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}</li>
<li>{{ __('PayPal:') }} <a href="https://developer.paypal.com/dashboard/applications" target="_blank" style="color:#6366f1;">{{ __('developer.paypal.com') }}</a> {{ __('→ creează aplicație live → ia credentials') }}</li>
<li>{{ __('Transfer bancar: pune doar IBAN-ul tău, fără cont gateway') }}</li>
</ul>
</div>
@@ -105,10 +105,10 @@
{{-- STATS GRID --}}
<div class="cv-section">
<div class="cv-section-title">📊 Activitate live</div>
<div class="cv-section-title">{{ __('📊 Activitate live') }}</div>
<div class="cv-grid">
<div class="cv-card">
<div class="label">Useri</div>
<div class="label">{{ __('Useri') }}</div>
<div class="value">{{ $stats['users'] }}</div>
</div>
<div class="cv-card">
@@ -142,17 +142,17 @@
<div class="sub">{{ $this->record->settings['currency'] ?? 'MDL' }}</div>
</div>
<div class="cv-card">
<div class="label">Storage media</div>
<div class="label">{{ __('Storage media') }}</div>
<div class="value">{{ $stats['storage_mb'] }}</div>
<div class="sub">{{ __('MB folosiți') }}</div>
</div>
<div class="cv-card {{ $stats['last_login'] && \Carbon\Carbon::parse($stats['last_login'])->diffInDays() > 14 ? 'danger' : '' }}">
<div class="label">Ultima logare</div>
<div class="label">{{ __('Ultima logare') }}</div>
<div class="value" style="font-size:14px;">
{{ $stats['last_login'] ? \Carbon\Carbon::parse($stats['last_login'])->diffForHumans() : 'Niciodată' }}
</div>
@if ($stats['last_login'] && \Carbon\Carbon::parse($stats['last_login'])->diffInDays() > 14)
<div class="sub"> Posibil churn</div>
<div class="sub">{{ __('⚠ Posibil churn') }}</div>
@endif
</div>
</div>
@@ -160,7 +160,7 @@
{{-- SUBSCRIPTIONS --}}
<div class="cv-section">
<div class="cv-section-title">💳 Istoric abonamente</div>
<div class="cv-section-title">{{ __('💳 Istoric abonamente') }}</div>
@if ($this->record->subscriptions->isEmpty())
<div style="padding:32px;text-align:center;color:#9ca3af;font-size:13px;border:1px dashed #e5e7eb;border-radius:8px;">
{{ __('Niciun abonament emis. Folosește „Generează factură" de sus.') }}
@@ -170,10 +170,10 @@
<thead>
<tr>
<th>{{ __('Factură') }}</th>
<th>Plan</th>
<th>{{ __('Plan') }}</th>
<th>{{ __('Perioadă') }}</th>
<th>{{ __('Sumă') }}</th>
<th>Status</th>
<th>{{ __('Status') }}</th>
<th>{{ __('Plătit') }}</th>
</tr>
</thead>
@@ -199,7 +199,7 @@
{{-- CONFIG --}}
<div class="cv-section">
<div class="cv-section-title"> Configurare tenant</div>
<div class="cv-section-title">{{ __('⚙ Configurare tenant') }}</div>
<div class="cv-grid" style="grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));">
<div class="cv-card">
<div class="label">{{ __('Limbă') }}</div>
@@ -216,20 +216,20 @@
<div class="value" style="font-size:14px;">{{ $this->record->settings['labor_rate'] ?? '—' }}</div>
</div>
<div class="cv-card">
<div class="label">Onboarded</div>
<div class="label">{{ __('Onboarded') }}</div>
<div class="value" style="font-size:14px;">
{{ ! empty($this->record->settings['onboarded_at']) ? '✓ Da' : '✗ Nu' }}
</div>
</div>
<div class="cv-card">
<div class="label">Theme color</div>
<div class="label">{{ __('Theme color') }}</div>
<div class="value" style="display:flex;align-items:center;gap:6px;font-size:14px;">
<span style="display:inline-block;width:18px;height:18px;border-radius:3px;background:{{ $this->record->settings['theme_color'] ?? '#3B82F6' }};"></span>
{{ $this->record->settings['theme_color'] ?? '#3B82F6' }}
</div>
</div>
<div class="cv-card">
<div class="label">AI provider</div>
<div class="label">{{ __('AI provider') }}</div>
<div class="value" style="font-size:14px;">
{{ $this->record->settings['ai']['default_provider'] ?? 'neconfigurat' }}
</div>
@@ -16,9 +16,9 @@
@if (! $isError && ($provider || $tokensIn !== null))
<div class="text-xs text-gray-500 dark:text-gray-400 border-t border-gray-200 dark:border-gray-700 pt-2 flex flex-wrap gap-3">
@if ($provider) <span>Provider: <strong>{{ strtoupper($provider) }}</strong></span> @endif
@if ($provider) <span>{{ __('Provider:') }} <strong>{{ strtoupper($provider) }}</strong></span> @endif
@if ($tokensIn !== null || $tokensOut !== null)
<span>Tokens: <strong>{{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }}</strong> ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out)</span>
<span>{{ __('Tokens:') }} <strong>{{ ($tokensIn ?? 0) + ($tokensOut ?? 0) }}</strong> ({{ $tokensIn ?? 0 }} in / {{ $tokensOut ?? 0 }} out)</span>
@endif
@if ($latency !== null) <span>Latency: {{ $latency }} ms</span> @endif
</div>
@@ -93,7 +93,7 @@
@if ($totalCalls > 0)
<div style="margin-bottom:12px;padding:10px 14px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;font-size:12px;color:#1e3a8a;">
<strong>Tokens consumate luna aceasta:</strong>
<strong>{{ __('Tokens consumate luna aceasta:') }}</strong>
{{ 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())
<div class="ai-empty">
<div style="font-size:32px;margin-bottom:8px;"></div>
<div style="font-size:14px;font-weight:600;margin-bottom:4px;">Asistent AI pentru autoservice</div>
<div style="font-size:14px;font-weight:600;margin-bottom:4px;">{{ __('Asistent AI pentru autoservice') }}</div>
<div style="font-size:12px;">{{ __('Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...') }}</div>
<div style="font-size:11px;margin-top:16px;color:#9ca3af;">
<b>Configurare:</b> {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
<b>{{ __('Configurare:') }}</b> {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
</div>
</div>
@else
@@ -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;">
<span x-show="!copied">{{ __('📋 Copiază') }}</span>
<span x-show="copied" x-cloak> Copiat</span>
<span x-show="copied" x-cloak>{{ __('✓ Copiat') }}</span>
</button>
</div>
<button type="button" wire:click="dismissNew" style="font-size:12px;color:#6b7280;background:none;border:none;cursor:pointer;">
Am salvat token-ul, ascunde-l
{{ __('Am salvat token-ul, ascunde-l') }}
</button>
</div>
@endif
@@ -49,8 +49,8 @@
<tr>
<th>{{ __('Nume') }}</th>
<th>{{ __('Folosit ultima dată') }}</th>
<th>Creat</th>
<th>Permisiuni</th>
<th>{{ __('Creat') }}</th>
<th>{{ __('Permisiuni') }}</th>
<th></th>
</tr>
</thead>
@@ -77,10 +77,10 @@
<div class="at-doc" style="margin-top:16px;">
<b>{{ __('Cum folosești API-ul:') }}</b>
<ol style="margin:8px 0 0 20px;">
<li>{{ __('Obține token cu') }} <code>POST /api/v1/login</code> cu <code>email</code>+<code>password</code> JSON</li>
<li>{{ __('Obține token cu') }} <code>{{ __('POST /api/v1/login') }}</code> cu <code>email</code>+<code>password</code> JSON</li>
<li>{{ __('Sau generează unul aici (recomandat pentru integrări permanente)') }}</li>
<li>{{ __('Adaugă header') }} <code>Authorization: Bearer &lt;token&gt;</code> la fiecare request</li>
<li>Endpoints disponibile: <code>/api/v1/clients</code>, <code>/api/v1/vehicles</code>, <code>/api/v1/work-orders</code> (GET, POST, PATCH, DELETE)</li>
<li>{{ __('Adaugă header') }} <code>Authorization: Bearer &lt;token&gt;</code> {{ __('la fiecare request') }}</li>
<li>{{ __('Endpoints disponibile:') }} <code>{{ __('/api/v1/clients') }}</code>, <code>{{ __('/api/v1/vehicles') }}</code>, <code>{{ __('/api/v1/work-orders') }}</code> {{ __('(GET, POST, PATCH, DELETE)') }}</li>
<li>{{ __('Tot apelul trebuie făcut pe subdomain-ul tău:') }} <code>https://{{ tenant()?->slug ?? 'YOURSLUG' }}.service.mir.md/api/v1/...</code></li>
</ol>
</div>
@@ -22,7 +22,7 @@
</p>
<ul class="bk-list">
<li>{{ __('Backup periodic (descarcă local sau sincronizează cu cloud)') }}</li>
<li>Migrare la alt sistem CRM</li>
<li>{{ __('Migrare la alt sistem CRM') }}</li>
<li>{{ __('Audit / verificări fiscale') }}</li>
<li>{{ __('Conformitate GDPR (la cererea ștergerii datelor)') }}</li>
</ul>
@@ -31,12 +31,12 @@
depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.') }}
</p>
<p class="bk-p">
<b>Format:</b> {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}
<b>{{ __('Format:') }}</b> {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}
</p>
<button type="button" class="bk-btn" wire:click="downloadBackup" wire:loading.attr="disabled">
<span wire:loading.remove wire:target="downloadBackup">{{ __('⬇ Descarcă backup acum') }}</span>
<span wire:loading wire:target="downloadBackup">Generez ZIP...</span>
<span wire:loading wire:target="downloadBackup">{{ __('Generez ZIP...') }}</span>
</button>
<p class="bk-p" style="margin-top:24px;font-size:11px;color:#9ca3af;">
@@ -155,12 +155,12 @@
<div class="cv-shell" x-data="{ dragEventId: null }">
<div class="cv-head">
<div>
<div class="cv-breadcrumb">{{ __('CRM Programări ') }} <strong style="color:var(--cv-text);">Calendar vizual</strong></div>
<h1>Calendar vizual</h1>
<div class="cv-breadcrumb">{{ __('CRM Programări ') }} <strong style="color:var(--cv-text);">{{ __('Calendar vizual') }}</strong></div>
<h1>{{ __('Calendar vizual') }}</h1>
</div>
<div class="cv-btn-group">
<button class="cv-btn" wire:click="exportPdf">{{ __('🖨 PDF programări') }}</button>
<button class="cv-btn" wire:click="openNewPostForm">+ Pod nou</button>
<button class="cv-btn" wire:click="openNewPostForm">{{ __('+ Pod nou') }}</button>
<button class="cv-btn cv-btn-primary" wire:click="openNewForm">{{ __('+ Programare nouă') }}</button>
</div>
</div>
@@ -177,12 +177,12 @@
<div class="cv-kpi-sub">{{ __('programări active') }}</div>
</div>
<div class="cv-kpi">
<div class="cv-kpi-label">Confirmate</div>
<div class="cv-kpi-label">{{ __('Confirmate') }}</div>
<div class="cv-kpi-value green">{{ $stats['confirmed_count'] }} / {{ $stats['total_count'] }}</div>
<div class="cv-kpi-sub">{{ $stats['confirmation_rate_pct'] }}% rata confirmare</div>
</div>
<div class="cv-kpi">
<div class="cv-kpi-label">No-show alert</div>
<div class="cv-kpi-label">{{ __('No-show alert') }}</div>
<div class="cv-kpi-value red">{{ $stats['no_show_alert'] }}</div>
<div class="cv-kpi-sub">{{ __('programări neconfirmate &lt; 24h') }}</div>
</div>
@@ -196,32 +196,32 @@
<button class="cv-btn" wire:click="setWeekToday">{{ __('Astăzi') }}</button>
</div>
<div class="cv-toolbar-group">
<span class="cv-toolbar-label">Mod:</span>
<span class="cv-toolbar-label">{{ __('Mod:') }}</span>
<div class="cv-view-switcher">
<button class="{{ $viewMode === 'day' ? 'active' : '' }}" wire:click="setViewMode('day')">Zi</button>
<button class="{{ $viewMode === 'day' ? 'active' : '' }}" wire:click="setViewMode('day')">{{ __('Zi') }}</button>
<button class="{{ $viewMode === 'week' ? 'active' : '' }}" wire:click="setViewMode('week')">{{ __('Săpt') }}</button>
<button class="{{ $viewMode === 'month' ? 'active' : '' }}" wire:click="setViewMode('month')">{{ __('Lună') }}</button>
<button class="{{ $viewMode === 'custom' ? 'active' : '' }}" wire:click="setViewMode('custom')">Custom</button>
<button class="{{ $viewMode === 'custom' ? 'active' : '' }}" wire:click="setViewMode('custom')">{{ __('Custom') }}</button>
<button class="{{ $viewMode === 'list' ? 'active' : '' }}" wire:click="setViewMode('list')">{{ __('Listă') }}</button>
</div>
</div>
<div class="cv-toolbar-group">
<span class="cv-toolbar-label">Grupare:</span>
<span class="cv-toolbar-label">{{ __('Grupare:') }}</span>
<div class="cv-view-switcher">
<button class="{{ $groupBy === 'post' ? 'active' : '' }}" wire:click="setGroupBy('post')">Pod</button>
<button class="{{ $groupBy === 'master' ? 'active' : '' }}" wire:click="setGroupBy('master')">Mecanic</button>
<button class="{{ $groupBy === 'post' ? 'active' : '' }}" wire:click="setGroupBy('post')">{{ __('Pod') }}</button>
<button class="{{ $groupBy === 'master' ? 'active' : '' }}" wire:click="setGroupBy('master')">{{ __('Mecanic') }}</button>
</div>
</div>
@if ($viewMode === 'custom')
<div class="cv-toolbar-group">
<span class="cv-toolbar-label">De la:</span>
<span class="cv-toolbar-label">{{ __('De la:') }}</span>
<input type="date" class="cv-select" wire:model.live="customStart">
<span class="cv-toolbar-label">{{ __('Până la:') }}</span>
<input type="date" class="cv-select" wire:model.live="customEnd">
</div>
@endif
<div class="cv-toolbar-group" style="margin-left:auto;">
<span class="cv-toolbar-label">Filtru:</span>
<span class="cv-toolbar-label">{{ __('Filtru:') }}</span>
<select class="cv-select" wire:change="setMasterFilter($event.target.value)">
<option value="">{{ __('Toți mecanicii') }}</option>
@foreach ($this->getMasterOptions() as $id => $name)
@@ -230,8 +230,8 @@
</select>
<select class="cv-select" wire:change="setStatusFilter($event.target.value)">
<option value="all">{{ __('Toate statusurile') }}</option>
<option value="confirmed" @if($statusFilter==='confirmed')selected @endif>Confirmate</option>
<option value="unconfirmed" @if($statusFilter==='unconfirmed')selected @endif>Neconfirmate</option>
<option value="confirmed" @if($statusFilter==='confirmed')selected @endif>{{ __('Confirmate') }}</option>
<option value="unconfirmed" @if($statusFilter==='unconfirmed')selected @endif>{{ __('Neconfirmate') }}</option>
<option value="in_work" @if($statusFilter==='in_work')selected @endif>{{ __('În lucru') }}</option>
</select>
</div>
@@ -239,7 +239,7 @@
<div class="cv-notes">
<strong>{{ __('⚙ Cum funcționează:') }}</strong>
Matricea <strong>{{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile</strong>{{ __('. 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') }} <strong>{{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile</strong>{{ __('. 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.') }}
</div>
@if ($viewMode === 'list')
@@ -286,7 +286,7 @@
@endforeach
@foreach ($rows as $row)
<div class="cv-cell cv-row-label" @if ($row['kind'] === 'post' && $row['id']) wire:click="openRenamePost({{ $row['id'] }})" style="cursor:pointer;" title="Click pentru a redenumi" @endif>
<div class="cv-cell cv-row-label" @if ($row['kind'] === 'post' && $row['id']) wire:click="openRenamePost({{ $row['id'] }})" style="cursor:pointer;" title="{{ __('Click pentru a redenumi') }}" @endif>
<span class="cv-row-color" style="background:{{ $row['color'] }}"></span>
<div>
<div>{{ $row['name'] }} @if ($row['kind'] === 'post') <span style="font-size:10px; opacity:0.5;"></span>@endif</div>
@@ -338,7 +338,7 @@
<h3>{{ __('Legendă') }}</h3>
<div class="cv-legend-row">
<div>
<div class="cv-legend-col">Mecanici</div>
<div class="cv-legend-col">{{ __('Mecanici') }}</div>
<div class="cv-legend-items">
@foreach ($this->getMasterOptions() as $id => $name)
@php
@@ -355,13 +355,13 @@
<div class="cv-legend-items">
<div class="cv-legend-item"><span class="cv-load" style="position:static;">05h/10</span> {{ __('liber/ușor') }}</div>
<div class="cv-legend-item"><span class="cv-load warn" style="position:static;">58.5h/10</span> mediu</div>
<div class="cv-legend-item"><span class="cv-load full" style="position:static;">≥9h/10</span> plin</div>
<div class="cv-legend-item"><span class="cv-load full" style="position:static;">{{ __('≥9h/10') }}</span> plin</div>
</div>
</div>
<div>
<div class="cv-legend-col">Stare zi</div>
<div class="cv-legend-col">{{ __('Stare zi') }}</div>
<div class="cv-legend-items">
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:#FAFAFA; border:1px solid var(--cv-border);"></span> Weekend</div>
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:#FAFAFA; border:1px solid var(--cv-border);"></span> {{ __('Weekend') }}</div>
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:repeating-linear-gradient(45deg,#FAFAFA,#FAFAFA 2px,#F1F5F9 2px,#F1F5F9 4px); border:1px solid var(--cv-border);"></span> {{ __('Închis (Duminică/sărbătoare)') }}</div>
<div class="cv-legend-item"><span class="cv-legend-dot" style="background:var(--cv-blue-bg); border:1px solid var(--cv-blue);"></span> {{ __('Astăzi') }}</div>
</div>
@@ -382,11 +382,11 @@
<div class="cv-panel-body">
<div class="cv-two-cols">
@if ($openEvent['client_name'])<div class="cv-pfield"><label>{{ __('Client') }}</label><div class="cv-pfield-val">{{ $openEvent['client_name'] }}</div></div>@endif
@if ($openEvent['client_phone'])<div class="cv-pfield"><label>Telefon</label><div class="cv-pfield-val" style="color:var(--cv-blue);">{{ $openEvent['client_phone'] }}</div></div>@endif
@if ($openEvent['client_phone'])<div class="cv-pfield"><label>{{ __('Telefon') }}</label><div class="cv-pfield-val" style="color:var(--cv-blue);">{{ $openEvent['client_phone'] }}</div></div>@endif
@if ($openEvent['vehicle'])<div class="cv-pfield"><label>{{ __('Auto') }}</label><div class="cv-pfield-val">{{ $openEvent['vehicle'] }}</div></div>@endif
@if ($openEvent['plate'])<div class="cv-pfield"><label>Numar</label><div class="cv-pfield-val">{{ $openEvent['plate'] }}</div></div>@endif
@if ($openEvent['master_name'])<div class="cv-pfield"><label>Maistru</label><div class="cv-pfield-val">{{ $openEvent['master_name'] }}</div></div>@endif
@if ($openEvent['post_name'])<div class="cv-pfield"><label>Pod</label><div class="cv-pfield-val">{{ $openEvent['post_name'] }}</div></div>@endif
@if ($openEvent['plate'])<div class="cv-pfield"><label>{{ __('Numar') }}</label><div class="cv-pfield-val">{{ $openEvent['plate'] }}</div></div>@endif
@if ($openEvent['master_name'])<div class="cv-pfield"><label>{{ __('Maistru') }}</label><div class="cv-pfield-val">{{ $openEvent['master_name'] }}</div></div>@endif
@if ($openEvent['post_name'])<div class="cv-pfield"><label>{{ __('Pod') }}</label><div class="cv-pfield-val">{{ $openEvent['post_name'] }}</div></div>@endif
</div>
@if ($openEvent['notes'])
<div class="cv-pfield"><label>{{ __('Notițe') }}</label><div class="cv-pfield-val" style="white-space:pre-wrap;">{{ $openEvent['notes'] }}</div></div>
@@ -394,7 +394,7 @@
</div>
<div class="cv-panel-actions">
<button class="cv-btn" wire:click="deleteEvent({{ $openEvent['id'] }})" onclick="return confirm('Ștergi această programare?')">{{ __('🗑 Șterge') }}</button>
<a class="cv-btn cv-btn-primary" href="{{ route('filament.tenant.resources.appointments.edit', ['record' => $openEvent['id']]) }}"> Editare</a>
<a class="cv-btn cv-btn-primary" href="{{ route('filament.tenant.resources.appointments.edit', ['record' => $openEvent['id']]) }}">{{ __('↗ Editare') }}</a>
</div>
@endif
</div>
@@ -410,10 +410,10 @@
<div class="cv-close" wire:click="$set('showNewForm', false)"></div>
</div>
<div class="cv-panel-body">
<div class="cv-pfield"><label>Subiect *</label><input wire:model="newAppt.title" type="text" placeholder="Schimb ulei + filtru"></div>
<div class="cv-pfield"><label>{{ __('Subiect *') }}</label><input wire:model="newAppt.title" type="text" placeholder="{{ __('Schimb ulei + filtru') }}"></div>
<div class="cv-two-cols">
<div class="cv-pfield"><label>{{ __('Data *') }}</label><input wire:model="newAppt.date" type="date"></div>
<div class="cv-pfield"><label>Pod</label>
<div class="cv-pfield"><label>{{ __('Pod') }}</label>
<select wire:model="newAppt.post_id">
<option value=""></option>
@foreach ($this->getPostOptions() as $id => $name)
@@ -421,7 +421,7 @@
@endforeach
</select>
</div>
<div class="cv-pfield"><label>De la</label><input wire:model="newAppt.time_start" type="time"></div>
<div class="cv-pfield"><label>{{ __('De la') }}</label><input wire:model="newAppt.time_start" type="time"></div>
<div class="cv-pfield"><label>{{ __('Până la') }}</label><input wire:model="newAppt.time_end" type="time"></div>
</div>
<div class="cv-pfield"><label>{{ __('Client') }}</label>
@@ -432,7 +432,7 @@
@endforeach
</select>
</div>
<div class="cv-pfield"><label>Maistru</label>
<div class="cv-pfield"><label>{{ __('Maistru') }}</label>
<select wire:model="newAppt.master_id">
<option value=""></option>
@foreach ($this->getMasterOptions() as $id => $name)
@@ -457,11 +457,11 @@
<p style="font-size:13px; color:#4a5568; margin-bottom:16px;">{{ __('Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).') }}</p>
<div class="cv-pfield">
<label>{{ __('Nume *') }}</label>
<input type="text" wire:model="newPost.name" placeholder="Ex: Curte 1, Pod 4, Atelier electric" autofocus>
<input type="text" wire:model="newPost.name" placeholder="{{ __('Ex: Curte 1, Pod 4, Atelier electric') }}" autofocus>
</div>
<div class="cv-two-cols">
<div class="cv-pfield">
<label>Culoare</label>
<label>{{ __('Culoare') }}</label>
<input type="color" wire:model="newPost.color" style="height:40px; padding:4px;">
</div>
<div class="cv-pfield">
@@ -491,9 +491,9 @@
<input type="text" wire:model="renamingPostName" autofocus>
</div>
<div class="cv-pfield">
<label>Mecanic implicit</label>
<label>{{ __('Mecanic implicit') }}</label>
<select wire:model="renamingPostMasterId">
<option value=""> niciunul </option>
<option value="">{{ __('— niciunul —') }}</option>
@foreach ($this->getMasterOptions() as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
@@ -54,7 +54,7 @@
<div class="wiz-field">
<label>{{ __('Furnizor *') }}</label>
<select wire:model="supplierId">
<option value=""> alege </option>
<option value="">{{ __('— alege —') }}</option>
@foreach ($this->getSupplierOptions() as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
@@ -102,21 +102,21 @@
<div class="wiz-grid">
<div class="wiz-field">
<label>Coloana Articol *</label>
<label>{{ __('Coloana Articol *') }}</label>
<select wire:model="mapping.article_col">
<option value=""></option>
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
</select>
</div>
<div class="wiz-field">
<label>Coloana Denumire *</label>
<label>{{ __('Coloana Denumire *') }}</label>
<select wire:model="mapping.name_col">
<option value=""></option>
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
</select>
</div>
<div class="wiz-field">
<label>Coloana Cantitate *</label>
<label>{{ __('Coloana Cantitate *') }}</label>
<select wire:model="mapping.qty_col">
<option value=""></option>
@foreach ($headersPreview['columns'] as $c)<option value="{{ $c }}">{{ $c }}</option>@endforeach
@@ -151,7 +151,7 @@
<div class="wiz-actions">
<button class="wiz-btn" wire:click="$set('step', 1)">{{ __('← Înapoi') }}</button>
<button class="wiz-btn wiz-btn-primary" wire:click="goToStep3">Previzualizare </button>
<button class="wiz-btn wiz-btn-primary" wire:click="goToStep3">{{ __('Previzualizare →') }}</button>
</div>
@endif
@@ -178,7 +178,7 @@
<table class="wiz-preview-table">
<thead>
<tr>
<th>Articol</th><th>Denumire</th><th>Brand</th><th>Cant.</th><th>{{ __('Preț') }}</th><th>Status</th>
<th>{{ __('Articol') }}</th><th>{{ __('Denumire') }}</th><th>{{ __('Brand') }}</th><th>{{ __('Cant.') }}</th><th>{{ __('Preț') }}</th><th>{{ __('Status') }}</th>
</tr>
</thead>
<tbody>
@@ -56,8 +56,8 @@
@if ($tab === 'overview')
<div class="fn-grid fn-grid-4">
<div class="fn-card"><div class="fn-stat-l">{{ __('Încasări') }}</div><div class="fn-stat-v fn-success">{{ number_format($data['income'], 2, '.', ' ') }} MDL</div></div>
<div class="fn-card"><div class="fn-stat-l">Cheltuieli</div><div class="fn-stat-v fn-danger">{{ number_format($data['expenses'], 2, '.', ' ') }} MDL</div></div>
<div class="fn-card"><div class="fn-stat-l">Profit</div><div class="fn-stat-v {{ $data['profit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['profit'], 2, '.', ' ') }} MDL</div></div>
<div class="fn-card"><div class="fn-stat-l">{{ __('Cheltuieli') }}</div><div class="fn-stat-v fn-danger">{{ number_format($data['expenses'], 2, '.', ' ') }} MDL</div></div>
<div class="fn-card"><div class="fn-stat-l">{{ __('Profit') }}</div><div class="fn-stat-v {{ $data['profit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['profit'], 2, '.', ' ') }} MDL</div></div>
<div class="fn-card"><div class="fn-stat-l">{{ __('Datorii clienți') }}</div><div class="fn-stat-v fn-warning">{{ number_format($data['debtTotal'], 2, '.', ' ') }} MDL</div></div>
</div>
@@ -80,22 +80,22 @@
@endforeach
</div>
<div style="text-align:right;margin-top:12px;font-size:14px;">
Net: <b class="{{ $data['net'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['net'], 2, '.', ' ') }} MDL</b>
{{ __('Net:') }} <b class="{{ $data['net'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['net'], 2, '.', ' ') }} MDL</b>
</div>
</div>
@elseif ($tab === 'pnl')
<div class="fn-grid fn-grid-2" style="margin-bottom: 16px;">
<div class="fn-card">
<div class="fn-h3">Venituri</div>
<div class="fn-h3">{{ __('Venituri') }}</div>
<table class="fn-tbl">
<tr><td>Manopere</td><td class="fn-r">{{ number_format($data['worksRevenue'], 2, '.', ' ') }}</td></tr>
<tr><td>{{ __('Manopere') }}</td><td class="fn-r">{{ number_format($data['worksRevenue'], 2, '.', ' ') }}</td></tr>
<tr><td>{{ __('Piese (vânzare)') }}</td><td class="fn-r">{{ number_format($data['partsRevenue'], 2, '.', ' ') }}</td></tr>
<tr style="border-top:2px solid #e5e7eb;"><td class="fn-bold">{{ __('Total venituri') }}</td><td class="fn-r fn-bold fn-success">{{ number_format($data['totalRevenue'], 2, '.', ' ') }}</td></tr>
</table>
</div>
<div class="fn-card">
<div class="fn-h3">Costuri</div>
<div class="fn-h3">{{ __('Costuri') }}</div>
<table class="fn-tbl">
<tr><td>{{ __('Cost piese (achiziție)') }}</td><td class="fn-r fn-danger">{{ number_format($data['partsCost'], 2, '.', ' ') }}</td></tr>
@foreach ($data['expensesByCat'] as $row)
@@ -106,7 +106,7 @@
</div>
</div>
<div class="fn-card" style="text-align:right;">
<div class="fn-stat-l">Profit net</div>
<div class="fn-stat-l">{{ __('Profit net') }}</div>
<div class="fn-stat-v {{ $data['netProfit'] >= 0 ? 'fn-success' : 'fn-danger' }}">{{ number_format($data['netProfit'], 2, '.', ' ') }} MDL</div>
<div style="font-size:12px;color:#6b7280;margin-top:4px;">Marjă: {{ $data['marginPct'] }}%</div>
<div style="font-size:11px;color:#9ca3af;margin-top:4px;">Marjă piese: {{ number_format($data['partsMargin'], 2, '.', ' ') }} MDL</div>
@@ -115,7 +115,7 @@
@elseif ($tab === 'balance')
<div class="fn-grid fn-grid-2">
<div class="fn-card">
<div class="fn-h3">Active</div>
<div class="fn-h3">{{ __('Active') }}</div>
<table class="fn-tbl">
<tr><td>{{ __('Numerar net (toate plățile - cheltuieli)') }}</td><td class="fn-r fn-bold fn-success">{{ number_format($data['netCash'], 2, '.', ' ') }} MDL</td></tr>
<tr><td>{{ __('Datorii clienți (de încasat)') }}</td><td class="fn-r fn-warning">{{ number_format($data['debt'], 2, '.', ' ') }} MDL</td></tr>
@@ -35,7 +35,7 @@
</style>
<div style="background: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px 16px; border-radius: 6px; margin-bottom: 16px; font-size: 13px;">
<b>Status:</b> {{ __('aceste integrări sunt placeholder UI le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.
{{ __('️') }} <b>{{ __('Status:') }}</b> {{ __('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') }} <code>$tenant->settings['integrations']</code>.
</div>
@@ -30,12 +30,12 @@
<table class="kpi-table">
<thead>
<tr>
<th>Mecanic</th>
<th>{{ __('Mecanic') }}</th>
<th>{{ __('Lucrări') }}</th>
<th>Norma ore</th>
<th>Real ore</th>
<th>{{ __('Norma ore') }}</th>
<th>{{ __('Real ore') }}</th>
<th>{{ __('Eficiență') }}</th>
<th>Venit manopere</th>
<th>{{ __('Venit manopere') }}</th>
</tr>
</thead>
<tbody>
@@ -38,7 +38,7 @@
<div class="ob-wrap">
<div class="ob-intro">
<h3>👋 Bun venit!</h3>
<h3>{{ __('👋 Bun venit!') }}</h3>
{{ __('Hai facem 30 de secunde de configurare ca AutoCRM-ul tău arate exact cum vrei tu.
Toate aceste setări pot fi schimbate oricând din meniul „Setări".') }}
</div>
@@ -403,7 +403,7 @@
<form class="pb-panel-body" wire:submit.prevent="createNewLead">
<div class="pb-form-field">
<label>{{ __('Nume') }} *</label>
<input type="text" wire:model="newName" placeholder="Ion Popescu" autofocus>
<input type="text" wire:model="newName" placeholder="{{ __('Ion Popescu') }}" autofocus>
</div>
<div class="pb-form-field">
<label>{{ __('Telefon') }} *</label>
@@ -411,7 +411,7 @@
</div>
<div class="pb-form-field">
<label>{{ __('Auto / model') }}</label>
<input type="text" wire:model="newCar" placeholder="VW Passat 2018">
<input type="text" wire:model="newCar" placeholder="{{ __('VW Passat 2018') }}">
</div>
<div class="pb-form-field">
<label>{{ __('Sursă') }}</label>
@@ -35,7 +35,7 @@
</td>
</tr>
@empty
<tr><td colspan="2" class="rc-empty">Niciun client pierdut. 🎉</td></tr>
<tr><td colspan="2" class="rc-empty">{{ __('Niciun client pierdut. 🎉') }}</td></tr>
@endforelse
</table>
</div>
@@ -104,7 +104,7 @@
<div class="rp-card">
<div class="rp-h3">{{ __('Încasări pe metodă') }}</div>
<table class="rp-tbl">
<thead><tr><th>{{ __('Metodă') }}</th><th class="rp-right">Tranz.</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
<thead><tr><th>{{ __('Metodă') }}</th><th class="rp-right">{{ __('Tranz.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
<tbody>
@forelse ($data['by_method'] as $row)
<tr>
@@ -119,9 +119,9 @@
</table>
</div>
<div class="rp-card">
<div class="rp-h3">Cheltuieli pe categorie</div>
<div class="rp-h3">{{ __('Cheltuieli pe categorie') }}</div>
<table class="rp-tbl">
<thead><tr><th>Categorie</th><th class="rp-right">{{ __('Nr.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
<thead><tr><th>{{ __('Categorie') }}</th><th class="rp-right">{{ __('Nr.') }}</th><th class="rp-right">{{ __('Total') }}</th></tr></thead>
<tbody>
@forelse ($data['by_category'] as $row)
<tr>
@@ -150,7 +150,7 @@
</div>
</div>
<div class="rp-card">
<div class="rp-h3">Pe status</div>
<div class="rp-h3">{{ __('Pe status') }}</div>
<table class="rp-tbl">
<tbody>
@forelse ($data['by_status'] as $row)
@@ -169,11 +169,11 @@
<div class="rp-card" style="overflow-x: auto;">
<table class="rp-tbl">
<thead><tr>
<th>Mecanic</th>
<th>Specializare</th>
<th class="rp-right">Manopere</th>
<th>{{ __('Mecanic') }}</th>
<th>{{ __('Specializare') }}</th>
<th class="rp-right">{{ __('Manopere') }}</th>
<th class="rp-right">{{ __('Ore') }}</th>
<th class="rp-right">Venit</th>
<th class="rp-right">{{ __('Venit') }}</th>
</tr></thead>
<tbody>
@forelse ($data['rows'] as $r)
@@ -185,7 +185,7 @@
<td class="rp-right rp-bold rp-success">{{ number_format($r['revenue'], 2, '.', ' ') }}</td>
</tr>
@empty
<tr><td colspan="5" class="rp-muted">Niciun mecanic activ.</td></tr>
<tr><td colspan="5" class="rp-muted">{{ __('Niciun mecanic activ.') }}</td></tr>
@endforelse
</tbody>
</table>
@@ -198,7 +198,7 @@
<th>{{ __('Manoperă') }}</th>
<th class="rp-right">{{ __('Nr.') }}</th>
<th class="rp-right">{{ __('Ore total') }}</th>
<th class="rp-right">Venit</th>
<th class="rp-right">{{ __('Venit') }}</th>
</tr></thead>
<tbody>
@forelse ($data['rows'] as $r)
@@ -220,7 +220,7 @@
<div class="rp-card" style="overflow-x: auto;">
<div class="rp-h3">{{ __('Top piese vândute') }}</div>
<table class="rp-tbl">
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">Cant.</th><th class="rp-right">Venit</th><th class="rp-right">{{ __('Marjă') }}</th></tr></thead>
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Cant.') }}</th><th class="rp-right">{{ __('Venit') }}</th><th class="rp-right">{{ __('Marjă') }}</th></tr></thead>
<tbody>
@forelse ($data['sold'] as $r)
<tr>
@@ -238,7 +238,7 @@
<div class="rp-card">
<div class="rp-h3">{{ __('⚠️ Stoc minim atins') }}</div>
<table class="rp-tbl">
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Stoc') }}</th><th class="rp-right">Min.</th></tr></thead>
<thead><tr><th>{{ __('Piesă') }}</th><th class="rp-right">{{ __('Stoc') }}</th><th class="rp-right">{{ __('Min.') }}</th></tr></thead>
<tbody>
@forelse ($data['low'] as $p)
<tr>
@@ -270,7 +270,7 @@
<td class="rp-right rp-bold">{{ $row->cnt }}</td>
</tr>
@empty
<tr><td colspan="2" class="rp-muted">Niciun lead.</td></tr>
<tr><td colspan="2" class="rp-muted">{{ __('Niciun lead.') }}</td></tr>
@endforelse
</tbody>
</table>
@@ -70,7 +70,7 @@
</div>
<div x-show="lastDecoded" class="sc-status" x-cloak>
Ultimul cod citit: <strong x-text="lastDecoded"></strong>
{{ __('Ultimul cod citit:') }} <strong x-text="lastDecoded"></strong>
</div>
<div class="sc-manual">
@@ -21,9 +21,9 @@
</style>
<div class="vs-card">
<h2 style="font-size:16px;font-weight:600;margin-bottom:12px;">🔎 Decode VIN</h2>
<h2 style="font-size:16px;font-weight:600;margin-bottom:12px;">{{ __('🔎 Decode VIN') }}</h2>
<form wire:submit="decode" style="display:flex;gap:12px;flex-wrap:wrap;">
<input type="text" wire:model="vin" class="vs-input" placeholder="WBAFE81070CY34521" maxlength="17" style="flex:1;min-width:300px;">
<input type="text" wire:model="vin" class="vs-input" placeholder="{{ __('WBAFE81070CY34521') }}" maxlength="17" style="flex:1;min-width:300px;">
<button type="submit" class="vs-btn">{{ __('Decodează') }}</button>
</form>
</div>
@@ -31,13 +31,13 @@
@if ($decoded)
<div class="vs-card">
@if ($decoded['valid'])
<h3 style="font-size:14px;font-weight:600;margin-bottom:16px;"> VIN decodificat</h3>
<h3 style="font-size:14px;font-weight:600;margin-bottom:16px;">{{ __('✅ VIN decodificat') }}</h3>
<div class="vs-grid">
<div><div class="vs-stat-l">{{ __('Producător') }}</div><div class="vs-stat-v">{{ $decoded['manufacturer'] }}</div></div>
<div><div class="vs-stat-l">{{ __('Țară') }}</div><div class="vs-stat-v">{{ $decoded['country'] }}</div></div>
<div><div class="vs-stat-l">An model (estimat)</div><div class="vs-stat-v">{{ $decoded['year'] ?? '—' }}</div></div>
<div><div class="vs-stat-l">WMI</div><div class="vs-stat-v" style="font-family:monospace;">{{ $decoded['wmi'] }}</div></div>
<div><div class="vs-stat-l">Serial</div><div class="vs-stat-v" style="font-family:monospace;font-size:12px;">{{ $decoded['serial'] }}</div></div>
<div><div class="vs-stat-l">{{ __('Serial') }}</div><div class="vs-stat-v" style="font-family:monospace;font-size:12px;">{{ $decoded['serial'] }}</div></div>
</div>
@else
<div style="color:#dc2626;"> {{ $decoded['error'] ?? 'WMI necunoscut — producătorul nu e în baza de date locală.' }}</div>
@@ -49,7 +49,7 @@
<div class="vs-card">
<h3 style="font-size:14px;font-weight:600;margin-bottom:12px;">{{ __('🚗 Mașini cu acest VIN în CRM') }}</h3>
<table class="vs-tbl">
<thead><tr><th>VIN</th><th>Marca/Model</th><th>Plate</th><th>{{ __('Client') }}</th><th>Km</th></tr></thead>
<thead><tr><th>VIN</th><th>{{ __('Marca/Model') }}</th><th>{{ __('Plate') }}</th><th>{{ __('Client') }}</th><th>{{ __('Km') }}</th></tr></thead>
<tbody>
@foreach ($matches as $v)
<tr>
@@ -78,7 +78,7 @@
<div style="color:#9ca3af;text-align:center;padding:20px;">Niciun rezultat pentru {{ $partsQuery }}"</div>
@else
<table class="vs-tbl">
<thead><tr><th>Denumire</th><th>{{ __('Cod') }}</th><th>Brand</th><th>{{ __('Stoc') }}</th><th>{{ __('Preț') }}</th></tr></thead>
<thead><tr><th>{{ __('Denumire') }}</th><th>{{ __('Cod') }}</th><th>{{ __('Brand') }}</th><th>{{ __('Stoc') }}</th><th>{{ __('Preț') }}</th></tr></thead>
<tbody>
@foreach ($parts as $p)
<tr>
@@ -7,6 +7,6 @@
@if ($part->article)
<div class="text-xs text-gray-500 dark:text-gray-400 font-mono">{{ $part->article }}</div>
@endif
<div class="text-xs text-gray-400 mt-1">Payload: <code>{{ $payload }}</code></div>
<div class="text-xs text-gray-400 mt-1">{{ __('Payload:') }} <code>{{ $payload }}</code></div>
</div>
</div>
@@ -18,7 +18,7 @@
</div>
<div class="space-y-2">
<label class="block text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide">Link</label>
<label class="block text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide">{{ __('Link') }}</label>
<div class="flex gap-2">
<input
type="text"
@@ -11,7 +11,7 @@
<dt class="text-gray-500 dark:text-gray-400">VIN</dt>
<dd class="font-mono text-gray-900 dark:text-gray-100">{{ $info['vin'] }}</dd>
<dt class="text-gray-500 dark:text-gray-400">Regiune</dt>
<dt class="text-gray-500 dark:text-gray-400">{{ __('Regiune') }}</dt>
<dd class="text-gray-900 dark:text-gray-100">{{ $info['region'] ?? '—' }}</dd>
<dt class="text-gray-500 dark:text-gray-400">{{ __('Țară') }}</dt>
@@ -20,16 +20,16 @@
<dt class="text-gray-500 dark:text-gray-400">{{ __('Producător') }}</dt>
<dd class="text-gray-900 dark:text-gray-100 font-semibold">{{ $info['manufacturer'] ?? '— (WMI necunoscut)' }}</dd>
<dt class="text-gray-500 dark:text-gray-400">An model</dt>
<dt class="text-gray-500 dark:text-gray-400">{{ __('An model') }}</dt>
<dd class="text-gray-900 dark:text-gray-100 font-semibold">{{ $info['year'] ?? '—' }}</dd>
<dt class="text-gray-500 dark:text-gray-400">{{ __('Cod uzină') }}</dt>
<dd class="font-mono text-gray-900 dark:text-gray-100">{{ $info['plant'] ?? '—' }}</dd>
<dt class="text-gray-500 dark:text-gray-400">Checksum (ISO)</dt>
<dt class="text-gray-500 dark:text-gray-400">{{ __('Checksum (ISO)') }}</dt>
<dd class="text-gray-900 dark:text-gray-100">
@if ($info['checksum_valid'])
<span class="text-green-600 dark:text-green-400"> valid</span>
<span class="text-green-600 dark:text-green-400">{{ __('✓ valid') }}</span>
@else
<span class="text-gray-500">{{ __('— (multe VIN-uri europene nu respectă checksum-ul NA)') }}</span>
@endif
+1 -1
View File
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="UTF-8">
<title>Etichete piese</title>
<title>{{ __('Etichete piese') }}</title>
<style>
@page { size: A4; margin: 10mm; }
* { box-sizing: border-box; }
+6 -6
View File
@@ -29,12 +29,12 @@
<table>
<thead>
<tr>
<th style="width:60px;">Ora</th>
<th>Subiect</th>
<th style="width:60px;">{{ __('Ora') }}</th>
<th>{{ __('Subiect') }}</th>
<th>{{ __('Client / Auto') }}</th>
<th>Pod</th>
<th>Maistru</th>
<th style="width:60px;">Status</th>
<th>{{ __('Pod') }}</th>
<th>{{ __('Maistru') }}</th>
<th style="width:60px;">{{ __('Status') }}</th>
</tr>
</thead>
<tbody>
@@ -60,6 +60,6 @@
<div class="empty">{{ __('Nicio programare în această perioadă.') }}</div>
@endforelse
<div class="footer">AutoCRM PSauto · psauto.service.mir.md</div>
<div class="footer">{{ __('AutoCRM PSauto · psauto.service.mir.md') }}</div>
</body>
</html>
+16 -16
View File
@@ -134,13 +134,13 @@
</div>
<div class="col col-half">
<div class="doc-title">{{ __('FIȘĂ DE LUCRU') }}</div>
<div class="doc-meta">Nr.: <b>{{ $wo->number }}</b></div>
<div class="doc-meta">{{ __('Nr.:') }} <b>{{ $wo->number }}</b></div>
<div class="doc-meta">{{ __('Data deschiderii:') }} <b>{{ $wo->opened_at?->format('d.m.Y') }}</b></div>
@if ($wo->closed_at)
<div class="doc-meta">{{ __('Data închiderii:') }} <b>{{ $wo->closed_at->format('d.m.Y') }}</b></div>
@endif
<div class="doc-meta">
Status: <b>{{ \App\Models\Tenant\WorkOrder::STATUSES[$wo->status] ?? $wo->status }}</b>
{{ __('Status:') }} <b>{{ \App\Models\Tenant\WorkOrder::STATUSES[$wo->status] ?? $wo->status }}</b>
</div>
</div>
</div>
@@ -152,9 +152,9 @@
<h3>{{ __('Client') }}</h3>
<div class="kv">
<div><b>{{ __('Nume:') }}</b> {{ $wo->client?->name ?? '—' }}</div>
<div><b>Telefon:</b> {{ $wo->client?->phone ?? '—' }}</div>
<div><b>{{ __('Telefon:') }}</b> {{ $wo->client?->phone ?? '—' }}</div>
@if ($wo->client?->email)
<div><b>Email:</b> {{ $wo->client->email }}</div>
<div><b>{{ __('Email:') }}</b> {{ $wo->client->email }}</div>
@endif
</div>
</div>
@@ -163,12 +163,12 @@
<div class="box">
<h3>{{ __('Auto') }}</h3>
<div class="kv">
<div><b>Marca/Model:</b> {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }} {{ $wo->vehicle?->year }}</div>
<div><b>Nr.:</b> {{ $wo->vehicle?->plate ?? '—' }}</div>
<div><b>{{ __('Marca/Model:') }}</b> {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }} {{ $wo->vehicle?->year }}</div>
<div><b>{{ __('Nr.:') }}</b> {{ $wo->vehicle?->plate ?? '—' }}</div>
@if ($wo->vehicle?->vin)
<div><b>VIN:</b> {{ $wo->vehicle->vin }}</div>
<div><b>{{ __('VIN:') }}</b> {{ $wo->vehicle->vin }}</div>
@endif
<div><b>Km la intrare:</b> {{ $wo->mileage_in ? number_format($wo->mileage_in, 0, '.', ' ') : '—' }}</div>
<div><b>{{ __('Km la intrare:') }}</b> {{ $wo->mileage_in ? number_format($wo->mileage_in, 0, '.', ' ') : '—' }}</div>
@if ($wo->mileage_out)
<div><b>{{ __('Km la ieșire:') }}</b> {{ number_format($wo->mileage_out, 0, '.', ' ') }}</div>
@endif
@@ -184,18 +184,18 @@
<div style="margin-bottom: 8px;">{{ $wo->complaint }}</div>
@endif
@if ($wo->diagnosis)
<h3>Diagnostic</h3>
<h3>{{ __('Diagnostic') }}</h3>
<div>{{ $wo->diagnosis }}</div>
@endif
</div>
@endif
@if ($wo->works->isNotEmpty())
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">Manopere</h3>
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">{{ __('Manopere') }}</h3>
<table class="items">
<thead>
<tr>
<th style="width: 50%;">Denumire</th>
<th style="width: 50%;">{{ __('Denumire') }}</th>
<th class="r" style="width: 12%;">{{ __('Ore') }}</th>
<th class="r" style="width: 18%;">{{ __('Preț/h') }}</th>
<th class="r" style="width: 20%;">{{ __('Total') }}</th>
@@ -213,7 +213,7 @@
</tbody>
<tfoot>
<tr>
<td colspan="3" class="r">Subtotal manopere:</td>
<td colspan="3" class="r">{{ __('Subtotal manopere:') }}</td>
<td class="r">{{ number_format((float) $worksTotal, 2, '.', ' ') }} {{ $currency }}</td>
</tr>
</tfoot>
@@ -221,13 +221,13 @@
@endif
@if ($wo->parts->isNotEmpty())
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">Piese</h3>
<h3 style="font-size: 12px; margin: 12px 0 4px; text-transform: uppercase; color: {{ $themeColor }};">{{ __('Piese') }}</h3>
<table class="items">
<thead>
<tr>
<th style="width: 40%;">Denumire</th>
<th style="width: 40%;">{{ __('Denumire') }}</th>
<th style="width: 18%;">{{ __('Cod') }}</th>
<th class="r" style="width: 10%;">Cant.</th>
<th class="r" style="width: 10%;">{{ __('Cant.') }}</th>
<th class="r" style="width: 14%;">{{ __('Preț') }}</th>
<th class="r" style="width: 18%;">{{ __('Total') }}</th>
</tr>
@@ -245,7 +245,7 @@
</tbody>
<tfoot>
<tr>
<td colspan="4" class="r">Subtotal piese:</td>
<td colspan="4" class="r">{{ __('Subtotal piese:') }}</td>
<td class="r">{{ number_format((float) $partsTotal, 2, '.', ' ') }} {{ $currency }}</td>
</tr>
</tfoot>
+1 -1
View File
@@ -7,7 +7,7 @@
<p class="muted" style="margin-bottom:16px;">{{ __('portal.shop.vin_intro') }}</p>
<form method="GET" action="/shop/vin" style="display:flex;gap:8px;flex-wrap:wrap;">
<input type="text" name="vin" value="{{ $vin }}" maxlength="17" placeholder="ex: WVWZZZ1JZXW000001"
<input type="text" name="vin" value="{{ $vin }}" maxlength="17" placeholder="{{ __('ex: WVWZZZ1JZXW000001') }}"
style="flex:1;min-width:240px;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-family:monospace;text-transform:uppercase;">
<button class="btn" type="submit">{{ __('portal.shop.vin_decode') }}</button>
</form>
@@ -19,10 +19,10 @@
<div class="box">
<h1>{{ __('🏦 Instrucțiuni transfer bancar') }}</h1>
<div class="row"><span>Beneficiar:</span> <b>{{ $bank['beneficiary'] ?? '—' }}</b></div>
<div class="row"><span>IBAN:</span> <code onclick="navigator.clipboard.writeText(this.textContent)">{{ $bank['iban'] ?? '—' }}</code></div>
<div class="row"><span>BIC / SWIFT:</span> <code>{{ $bank['bic'] ?? '—' }}</code></div>
<div class="row"><span>Banca:</span> {{ $bank['bank_name'] ?? '—' }}</div>
<div class="row"><span>{{ __('Beneficiar:') }}</span> <b>{{ $bank['beneficiary'] ?? '—' }}</b></div>
<div class="row"><span>{{ __('IBAN:') }}</span> <code onclick="navigator.clipboard.writeText(this.textContent)">{{ $bank['iban'] ?? '—' }}</code></div>
<div class="row"><span>{{ __('BIC / SWIFT:') }}</span> <code>{{ $bank['bic'] ?? '—' }}</code></div>
<div class="row"><span>{{ __('Banca:') }}</span> {{ $bank['bank_name'] ?? '—' }}</div>
<div class="row"><span>{{ __('Sumă:') }}</span> <b>{{ number_format($sub->amount, 2) }} {{ $sub->currency }}</b></div>
<div class="ref-box">
@@ -40,7 +40,7 @@
<ul style="margin: 8px 0 0 20px;">
<li>{{ __('Plata apare în 1-3 zile lucrătoare') }}</li>
<li>{{ __('Operatorul confirmă manual factura ca plătită') }}</li>
<li>Abonamentul se extinde automat</li>
<li>{{ __('Abonamentul se extinde automat') }}</li>
</ul>
</div>
+8 -8
View File
@@ -57,7 +57,7 @@
<body>
<div class="wrap">
<a href="/app" class="nav-back">{{ __('← Înapoi la AutoCRM') }}</a>
<h1>Facturi & abonament</h1>
<h1>{{ __('Facturi & abonament') }}</h1>
<p class="sub">{{ $tenant->display_name ?? $tenant->name }} · {{ $tenant->slug }}.service.mir.md</p>
@if ($invoices->isEmpty())
@@ -116,8 +116,8 @@
<div class="method">
<div class="icon">💳</div>
<div>
<div class="label">Card bancar</div>
<div class="desc">Visa, Mastercard prin Stripe</div>
<div class="label">{{ __('Card bancar') }}</div>
<div class="desc">{{ __('Visa, Mastercard prin Stripe') }}</div>
</div>
</div>
</button>
@@ -132,8 +132,8 @@
<div class="method">
<div class="icon">🅿️</div>
<div>
<div class="label">PayPal</div>
<div class="desc">Cont PayPal sau card prin PayPal</div>
<div class="label">{{ __('PayPal') }}</div>
<div class="desc">{{ __('Cont PayPal sau card prin PayPal') }}</div>
</div>
</div>
</button>
@@ -148,8 +148,8 @@
<div class="method">
<div class="icon">🇲🇩</div>
<div>
<div class="label">Paynet</div>
<div class="desc">Card MAIB / MICB / Victoriabank, MD Cash, e-money</div>
<div class="label">{{ __('Paynet') }}</div>
<div class="desc">{{ __('Card MAIB / MICB / Victoriabank, MD Cash, e-money') }}</div>
</div>
</div>
</button>
@@ -164,7 +164,7 @@
<div class="method">
<div class="icon">🏦</div>
<div>
<div class="label">Transfer bancar</div>
<div class="label">{{ __('Transfer bancar') }}</div>
<div class="desc">{{ __('Plătește direct din bancă (1-3 zile)') }}</div>
</div>
</div>
+1 -1
View File
@@ -19,7 +19,7 @@
<p style="color:#6b7280;font-size:14px;">{{ __('Factură:') }} <b>{{ $sub->invoice_number ?? '#' . $sub->id }}</b> · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}</p>
<div class="note">
<b>Mod stub:</b><br>
<b>{{ __('Mod stub:') }}</b><br>
{{ $note }}<br><br>
În prod, aici redirectează la pagina {{ $gateway }} Checkout cu sumele și metadatele facturii. La success, webhook-ul marchează automat factura ca plătită.
</div>
+6 -6
View File
@@ -60,14 +60,14 @@
<p>Autoservice profesional{{ $city ? ' — ' . $city : '' }}. Diagnostic, reparații, piese, ITP.</p>
@if (! empty($shopEnabled))
<a href="/shop" style="display:inline-block;margin-top:20px;background:#fff;color:{{ $themeColor }};padding:12px 28px;border-radius:8px;font-weight:700;text-decoration:none;">
🛒 Magazin piese online
{{ __('🛒 Magazin piese online') }}
</a>
@endif
</header>
@if (! empty($services))
<section class="section">
<h2>Servicii oferite</h2>
<h2>{{ __('Servicii oferite') }}</h2>
<div class="services-grid">
@foreach ($services as $s)
<div class="service-card">
@@ -84,12 +84,12 @@
<div class="info-block">
<h3>{{ __('📍 Locație & contact') }}</h3>
@if ($city) <p><b>{{ __('Oraș:') }}</b> {{ $city }}</p> @endif
@if ($phone) <p><b>Telefon:</b> <a href="tel:{{ $phone }}" style="color:inherit;">{{ $phone }}</a></p> @endif
@if ($email) <p><b>Email:</b> <a href="mailto:{{ $email }}" style="color:inherit;">{{ $email }}</a></p> @endif
@if ($phone) <p><b>{{ __('Telefon:') }}</b> <a href="tel:{{ $phone }}" style="color:inherit;">{{ $phone }}</a></p> @endif
@if ($email) <p><b>{{ __('Email:') }}</b> <a href="mailto:{{ $email }}" style="color:inherit;">{{ $email }}</a></p> @endif
</div>
<div class="info-block">
<h3>🕒 Program de lucru</h3>
<p>Luni Vineri: 08:00 18:00</p>
<h3>{{ __('🕒 Program de lucru') }}</h3>
<p>{{ __('Luni Vineri: 08:00 18:00') }}</p>
<p>{{ __('Sâmbătă: 09:00 14:00') }}</p>
<p>{{ __('Duminică: închis') }}</p>
</div>
@@ -16,7 +16,7 @@
<h1>{{ __('Plată reușită!') }}</h1>
<p style="color:#6b7280;">Factura {{ $sub->invoice_number ?? '#' . $sub->id }} a fost achitată.</p>
<p style="color:#6b7280;font-size:13px;margin-top:8px;">{{ __('Abonamentul tău a fost extins.') }}</p>
<a href="/app" class="btn"> Mergi la AutoCRM</a>
<a href="/app" class="btn">{{ __('→ Mergi la AutoCRM') }}</a>
</div>
</body>
</html>
+2 -2
View File
@@ -13,8 +13,8 @@
</head>
<body>
<div class="card">
<h1> Abonament expirat</h1>
<p>Abonamentul pentru <b>{{ $company->name }}</b> a expirat.</p>
<h1>{{ __('⏰ Abonament expirat') }}</h1>
<p>{{ __('Abonamentul pentru') }} <b>{{ $company->name }}</b> {{ __('a expirat.') }}</p>
<p>{{ __('Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.') }}</p>
</div>
</body>
+2 -2
View File
@@ -13,8 +13,8 @@
</head>
<body>
<div class="card">
<h1> Cont suspendat</h1>
<p>Contul <b>{{ $company->name }}</b> a fost suspendat.</p>
<h1>{{ __('⛔ Cont suspendat') }}</h1>
<p>{{ __('Contul') }} <b>{{ $company->name }}</b> {{ __('a fost suspendat.') }}</p>
<p>{{ __('Pentru detalii, contactați administratorul platformei.') }}</p>
</div>
</body>
+10 -10
View File
@@ -28,21 +28,21 @@
href="{{ url('/dashboard') }}"
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal"
>
Dashboard
{{ __('Dashboard') }}
</a>
@else
<a
href="{{ route('login') }}"
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] text-[#1b1b18] border border-transparent hover:border-[#19140035] dark:hover:border-[#3E3E3A] rounded-sm text-sm leading-normal"
>
Log in
{{ __('Log in') }}
</a>
@if (Route::has('register'))
<a
href="{{ route('register') }}"
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal">
Register
{{ __('Register') }}
</a>
@endif
@endauth
@@ -52,8 +52,8 @@
<div class="flex items-center justify-center w-full transition-opacity opacity-100 duration-750 lg:grow starting:opacity-0">
<main class="flex max-w-[335px] w-full flex-col-reverse lg:max-w-4xl lg:flex-row">
<div class="text-[13px] leading-[20px] flex-1 p-6 pb-12 lg:p-20 bg-white dark:bg-[#161615] dark:text-[#EDEDEC] shadow-[inset_0px_0px_0px_1px_rgba(26,26,0,0.16)] dark:shadow-[inset_0px_0px_0px_1px_#fffaed2d] rounded-bl-lg rounded-br-lg lg:rounded-tl-lg lg:rounded-br-none">
<h1 class="mb-1 font-medium">Let's get started</h1>
<p class="mb-2 text-[#706f6c] dark:text-[#A1A09A]">Laravel has an incredibly rich ecosystem. <br>We suggest starting with the following.</p>
<h1 class="mb-1 font-medium">{{ __('Let\'s get started') }}</h1>
<p class="mb-2 text-[#706f6c] dark:text-[#A1A09A]">{{ __('Laravel has an incredibly rich ecosystem.') }} <br>{{ __('We suggest starting with the following.') }}</p>
<ul class="flex flex-col mb-4 lg:mb-6">
<li class="flex items-center gap-4 py-2 relative before:border-l before:border-[#e3e3e0] dark:before:border-[#3E3E3A] before:top-1/2 before:bottom-0 before:left-[0.4rem] before:absolute">
<span class="relative py-1 bg-white dark:bg-[#161615]">
@@ -62,9 +62,9 @@
</span>
</span>
<span>
Read the
{{ __('Read the') }}
<a href="https://laravel.com/docs" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
<span>Documentation</span>
<span>{{ __('Documentation') }}</span>
<svg
width="10"
height="11"
@@ -89,9 +89,9 @@
</span>
</span>
<span>
Watch video tutorials at
{{ __('Watch video tutorials at') }}
<a href="https://laracasts.com" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
<span>Laracasts</span>
<span>{{ __('Laracasts') }}</span>
<svg
width="10"
height="11"
@@ -113,7 +113,7 @@
<ul class="flex gap-3 text-sm leading-normal">
<li>
<a href="https://cloud.laravel.com" target="_blank" class="inline-block dark:bg-[#eeeeec] dark:border-[#eeeeec] dark:text-[#1C1C1A] dark:hover:bg-white dark:hover:border-white hover:bg-black hover:border-black px-5 py-1.5 bg-[#1b1b18] rounded-sm border border-black text-white text-sm leading-normal">
Deploy now
{{ __('Deploy now') }}
</a>
</li>
</ul>