From 38650da87512e1df9384b36b905d532a01642d7d Mon Sep 17 00:00:00 2001 From: Vasyka Date: Thu, 16 Jul 2026 05:21:29 +0000 Subject: [PATCH] fix(i18n): auto-translate labels on Filament columns/fields/filters/actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause of untranslated table headers: Filament's HasLabel::getLabel() auto-generates a label from the field name (e.g. `name` → "Name") but only calls __() on it if you also invoke ->translateLabel(). Without that, the auto-generated label always renders in English regardless of app locale. Fix: configureUsing() in AppServiceProvider makes translateLabel() the default for every Column, BaseFilter, Field, Action and BulkAction. Then added 175 human RU/EN translations for Filament's auto-generated keys (Name, Phone, Email, Status, Balance, Created at, Plate, Make, Model, Year, VIN, Mileage, Owner, Client, Vehicle, Amount, Total, Qty, Actions, Search, Filter, Export, Import, plus enums/relationships). All 306 tests pass. Deploy will fix table headers on Clients / Vehicles / Work orders / Payments / Purchases / Suppliers etc. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/Providers/AppServiceProvider.php | 15 +++ lang/en.json | 169 +++++++++++++++++++++++++ lang/ru.json | 181 ++++++++++++++++++++++++++- 3 files changed, 359 insertions(+), 6 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 39a2ad2..e2ba0a9 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -21,5 +21,20 @@ class AppServiceProvider extends ServiceProvider if (! $this->app->runningInConsole() && (str_starts_with(config('app.url'), 'https://') || env('FORCE_HTTPS'))) { URL::forceScheme('https'); } + + // Auto-translate labels on every Filament component that has one. + // Without this, auto-derived labels (e.g. `name` → "Name") bypass __() + // and always render in English regardless of the app locale. + foreach ([ + \Filament\Tables\Columns\Column::class, + \Filament\Tables\Filters\BaseFilter::class, + \Filament\Forms\Components\Field::class, + \Filament\Actions\Action::class, + \Filament\Actions\BulkAction::class, + ] as $class) { + if (class_exists($class) && method_exists($class, 'configureUsing')) { + $class::configureUsing(fn ($c) => method_exists($c, 'translateLabel') ? $c->translateLabel() : $c); + } + } } } diff --git a/lang/en.json b/lang/en.json index d7bc8d9..df2d8a8 100644 --- a/lang/en.json +++ b/lang/en.json @@ -72,6 +72,7 @@ "Activi": "Active", "Activitate recentă": "Recent activity", "Activă": "Active", + "Actual hours": "Actual hours", "Actualizat la": "Updated at", "Actualizează": "Update", "Acțiune": "Action", @@ -108,6 +109,7 @@ "Adaugă serviciu": "Add service", "Adaugă utilizator": "Add user", "Adaugă vehicul": "Add vehicle", + "Address": "Address", "Admin tenant (la creare)": "Admin tenant (la creare)", "Administrator": "Administrator", "Adresă": "Address", @@ -143,6 +145,7 @@ "Alte cheltuieli": "Other expenses", "Altă problemă": "Other problem", "Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l", + "Amount": "Amount", "An": "Year", "An fabricație": "Production year", "An model": "Model year", @@ -171,6 +174,7 @@ "Aplică prețul": "Aplică prețul", "Aplică toate regulile la stoc": "Aplică toate regulile la stoc", "Aplică șablon": "Apply template", + "Approved at": "Approved at", "Aprilie": "April", "Aprobare": "Approval", "Aprobat": "Approved", @@ -181,6 +185,8 @@ "Arhivat": "Archived", "Arhivează": "Archive", "Arhivă": "Archive", + "Article": "Article", + "Article code": "Article code", "Articol": "Articol", "Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii", "Articole": "Articole", @@ -196,6 +202,8 @@ "Atașat veți găsi": "Attached", "Atelierul meu": "My workshop", "Atenție": "Warning", + "Attachment": "Attachment", + "Attachments": "Attachments", "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "August", "Autentificare": "Login", @@ -221,9 +229,12 @@ "Backup & Export date": "Backup & Export date", "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Balance", + "Balance due": "Balance due", "Balanță": "Balance", "Banca": "Banca", "Banca:": "Banca:", + "Barcode": "Barcode", + "Bay": "Bay", "Bază": "Base", "Beneficiar": "Beneficiar", "Beneficiar:": "Beneficiar:", @@ -238,6 +249,7 @@ "Blochez": "Block", "Blochez lucrarea": "Block the work", "Boală": "Sick", + "Body type": "Body type", "Bon": "Receipt", "Bonuri": "Receipts", "Bot OK: @{$name}": "Bot OK: @{$name}", @@ -248,6 +260,7 @@ "Break": "Wagon", "Buget": "Budget", "Buget & rezultate (luna curentă)": "Buget & rezultate (luna curentă)", + "Bulk actions": "Bulk actions", "Bun venit": "Welcome", "Bun venit în AutoCRM!": "Bun venit în AutoCRM!", "Bună": "Good", @@ -280,6 +293,7 @@ "Categorie": "Category", "Categorie implicită": "Default category", "Categorii": "Categorii", + "Category": "Category", "Caută": "Search", "Caută client, mașină, număr...": "Search client, vehicle, number...", "Caută în tabel": "Search in table", @@ -307,7 +321,9 @@ "Chitanță": "Receipt", "Cifră de afaceri": "Revenue", "Ciornă": "Draft", + "City": "City", "Clase auto": "Vehicle classes", + "Class": "Class", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", "Click pentru a redenumi": "Click pentru a redenumi", @@ -320,12 +336,14 @@ "Client VIP": "Client VIP", "Client existent": "Existing client", "Client legat (CRM)": "Client legat (CRM)", + "Client name": "Client name", "Client nou": "New client", "Clienți": "Clients", "Clienți VIP cu care nu s-a vorbit de peste 30 zile.": "Clienți VIP cu care nu s-a vorbit de peste 30 zile.", "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.": "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.", "Clienți magazin": "Shop customers", "Clienți noi în perioadă": "Clienți noi în perioadă", + "Closed at": "Closed at", "Cod": "Code", "Cod QR": "QR code", "Cod articol": "Article code", @@ -334,6 +352,7 @@ "Cod necunoscut": "Cod necunoscut", "Cod tracking": "Tracking code", "Cod uzină": "Cod uzină", + "Code": "Code", "Codul produsului": "Product code", "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", @@ -345,6 +364,7 @@ "Coloana Preț *": "Coloana Preț *", "Coloane": "Columns", "Coloană": "Column", + "Color": "Color", "Comanda": "Comanda", "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", @@ -357,16 +377,23 @@ "Comercial": "Commercial", "Comision manopere": "Comision manopere", "Comision piese": "Comision piese", + "Comment": "Comment", + "Comments": "Comments", "Companie": "Company", "Companie & plan": "Companie & plan", "Companie creată: {$result['company']->name}": "Companie creată: {$result['company']->name}", + "Company": "Company", + "Company name": "Company name", + "Complaint": "Complaint", "Complet": "Full", "Concediu": "Vacation", + "Condition": "Condition", "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", + "Confirm password": "Confirm password", "Confirmare plată primită": "Confirmare plată primită", "Confirmat": "Confirmed", "Confirmate": "Confirmed", @@ -406,6 +433,7 @@ "Cost piese (achiziție)": "Cost piese (achiziție)", "Cost/lead": "Cost/lead", "Costuri": "Costs", + "Country": "Country", "Coupé": "Coupé", "Creanțe": "Receivables", "Creat": "Creat", @@ -432,6 +460,7 @@ "Cumul.": "Cumul.", "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ă.", + "Currency": "Currency", "Curăță": "Clear", "Custom": "Custom", "Cutie": "Gearbox", @@ -493,11 +522,14 @@ "Decodează": "Decodează", "Deconectare": "Logout", "Delete": "Delete", + "Delete selected": "Delete selected", + "Deleted at": "Deleted at", "Demo (pentru demonstrații sales)": "Demo (pentru demonstrații sales)", "Denumire": "Name", "Denumire afișată": "Display name", "Denumire companie": "Company name", "Denumire produs": "Product name", + "Department": "Department", "Deploy now": "Deploy now", "Depozit": "Warehouse", "Depozit gol": "Depozit gol", @@ -524,6 +556,8 @@ "Descriere": "Description", "Descriere (opțional)": "Descriere (opțional)", "Descriere produs": "Product description", + "Description": "Description", + "Deselect all": "Deselect all", "Detalii": "Details", "Detalii (opțional)": "Details (optional)", "Detalii auto": "Vehicle details", @@ -533,6 +567,7 @@ "Dezactivare": "Deactivation", "Dezactivează": "Deactivate", "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.": "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.", + "Diagnosis": "Diagnosis", "Diagnostic": "Diagnostic", "Diagnostic AI bazat pe plângerea clientului": "Diagnostic AI bazat pe plângerea clientului", "Diagnosticare": "Diagnostics", @@ -541,6 +576,7 @@ "Diametru R": "Diametru R", "Dimensiune": "Dimensiune", "Din catalog (lasă gol pentru text liber)": "Din catalog (lasă gol pentru text liber)", + "Disabled": "Disabled", "Discount": "Discount", "Discount %": "Discount %", "Distribuie": "Distribute", @@ -557,14 +593,18 @@ "Documente": "Documents", "Done": "Done", "Downgrade": "Downgrade", + "Draft": "Draft", "Drept": "Permission", "Drepturi": "Permissions", + "Due at": "Due date", + "Due date": "Due date", "Duminică": "Sunday", "Duminică: închis": "Duminică: închis", "Duplică": "Duplicate", "Duplică rând": "Duplicate row", "După": "După", "După efectuarea transferului:": "După efectuarea transferului:", + "Duration": "Duration", "Durată": "Duration", "Durată (sec)": "Durată (sec)", "Durată estimată": "Estimated duration", @@ -585,8 +625,11 @@ "Eliberează": "Issue", "Email": "Email", "Email admin": "Email admin", + "Email verified at": "Email verified", "Email:": "Email:", "Empty": "No results", + "Enabled": "Enabled", + "End": "End", "Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook", "Endpoints disponibile:": "Endpoints disponibile:", "Eroare": "Error", @@ -595,6 +638,8 @@ "Etapă": "Stage", "Etichete piese": "Etichete piese", "Etichetă": "Etichetă", + "Event": "Event", + "Events": "Events", "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", @@ -610,6 +655,8 @@ "Excepții": "Overrides", "Excepții drepturi": "Permission overrides", "Există deja un cont cu acest telefon.": "Există deja un cont cu acest telefon.", + "Expense": "Expense", + "Expenses": "Expenses", "Expiră": "Expiră", "Expiră < 7 zile": "Expires < 7 days", "Expiră la (opțional)": "Expiră la (opțional)", @@ -634,6 +681,9 @@ "Față-Stânga": "Față-Stânga", "Februarie": "February", "Femeie": "Female", + "File": "File", + "Files": "Files", + "Filter": "Filter", "Filters": "Filters", "Filtre": "Filters", "Filtru": "Filter", @@ -658,6 +708,7 @@ "Folosit dacă markup = 0.": "Folosit dacă markup = 0.", "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 delete": "Force delete", "Force logout": "Force logout", "Format:": "Format:", "Foto": "Photo", @@ -665,8 +716,10 @@ "Foto piesă": "Foto piesă", "Foto înainte / după": "Foto înainte / după", "Fotografii": "Photos", + "From": "From", "Frâne": "Brakes", "Frâne, Ulei, ...": "Frâne, Ulei, ...", + "Fuel": "Fuel", "Funcție": "Funcție", "Funcționalități": "Funcționalități", "Funcționalități incluse": "Funcționalități incluse", @@ -709,6 +762,8 @@ "Hartă daune": "Hartă daune", "Hatchback": "Hatchback", "Hibrid": "Hybrid", + "Hourly rate": "Hourly rate", + "Hours": "Hours", "IBAN": "IBAN", "IBAN:": "IBAN:", "ID": "ID", @@ -722,6 +777,8 @@ "Ieri": "Yesterday", "Ieșire": "Logout", "Ieșiri": "Outflow", + "Image": "Image", + "Images": "Images", "Imagine": "Image", "Imagine principală": "Main image", "Imagini": "Images", @@ -742,6 +799,7 @@ "Importă din Excel": "Import from Excel", "Importă lead-uri direct din Lead Ads forms.": "Importă lead-uri direct din Lead Ads forms.", "Inactiv": "Inactive", + "Inactive": "Inactive", "Infopanel": "Dashboard", "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.": "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.", "Informație": "Info", @@ -757,12 +815,21 @@ "Inventar": "Inventory", "Invitație": "Invitation", "Invitații": "Invitations", + "Invoice number": "Invoice number", "Ion Popescu": "Ion Popescu", + "Is active": "Active", + "Is default": "Default", + "Is deleted": "Deleted", + "Is enabled": "Enabled", + "Is published": "Published", + "Is vip": "VIP", "Istoric depozitare": "Istoric depozitare", "Istoric prețuri furnizori": "Istoric prețuri furnizori", "Iulie": "July", "Iunie": "June", "JSON": "JSON", + "Job": "Job", + "Jobs": "Jobs", "Joi": "Thursday", "Jurnal": "Audit log", "KPI mecanici": "Mechanics KPI", @@ -780,11 +847,17 @@ "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.", + "Labor": "Labor", + "Labors": "Labors", + "Language": "Language", "Laracasts": "Laracasts", "Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.", + "Last login at": "Last login", "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": "Lead", "Lead-uri": "Lead-uri", "Lead-uri pe sursă": "Lead-uri pe sursă", + "Leads": "Leads", "Legendă": "Legendă", "Legendă:": "Legendă:", "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.": "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.", @@ -811,6 +884,7 @@ "Loc.": "Loc.", "Local": "Local", "Localizare & monedă": "Localization & currency", + "Location": "Location", "Locație": "Location", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", @@ -851,6 +925,7 @@ "Maistru": "Master", "Maistru / Mecanic": "Maistru / Mecanic", "Maistru / Recepție:": "Maistru / Recepție:", + "Make": "Make", "Manager": "Manager", "Manopere": "Labor lines", "Manoperă": "Labor", @@ -866,6 +941,7 @@ "Marchează terminat": "Mark as done", "Marcă": "Brand", "Marcă implicită": "Default brand", + "Margin": "Margin", "Marja": "Margin", "Marja piese": "Marja piese", "Marja profitului": "Profit margin", @@ -881,10 +957,13 @@ "Markup %": "Markup %", "Martie": "March", "Marți": "Tuesday", + "Master": "Master", + "Master name": "Master", "Matricea": "Matricea", "Max clienți": "Max clienți", "Max fișe/lună": "Max fișe/lună", "Max mașini": "Max mașini", + "Max qty": "Max qty", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Vehicles", @@ -898,6 +977,8 @@ "Mesaj client": "Mesaj client", "Mesaje": "Messages", "Mesaje AI/lună": "Mesaje AI/lună", + "Message": "Message", + "Method": "Method", "Metoda": "Metoda", "Metode de livrare": "Metode de livrare", "Metode plată": "Payment methods", @@ -905,6 +986,8 @@ "Metodă plată": "Payment method", "Miercuri": "Wednesday", "Migrare la alt sistem CRM": "Migrare la alt sistem CRM", + "Mileage": "Mileage", + "Min qty": "Min qty", "Min.": "Min.", "Minim": "Minim", "Minute": "Minutes", @@ -917,6 +1000,7 @@ "Model Gemini": "Model Gemini", "Model OpenAI": "Model OpenAI", "Model implicit": "Default model", + "Model year": "Model year", "Modele": "Models", "Modificat de": "Modified by", "Moldova-Agroindbank": "Moldova-Agroindbank", @@ -932,6 +1016,7 @@ "Mulțumim": "Thank you", "Mâine": "Tomorrow", "Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)", + "Name": "Name", "Neachitat": "Unpaid", "Necesită acțiune": "Needs action", "Necesită aprobare": "Needs approval", @@ -993,10 +1078,12 @@ "No": "No", "No-show alert": "No-show alert", "Noiembrie": "November", + "Norm hours": "Norm hours", "Norma ore": "Norm hours", "Normal": "Normal", "Norme-ore": "Labor rates", "Note interne": "Note interne", + "Notes": "Notes", "Notificare": "Notification", "Notifications": "Notifications", "Notificări": "Notifications", @@ -1026,6 +1113,8 @@ "Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!", "Nu, renunță": "No, cancel", "Numar": "Number", + "Number": "Number", + "Number generated": "Number generated", "Nume": "Name", "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", @@ -1050,9 +1139,11 @@ "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", + "Only trashed": "Only trashed", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", + "Opened at": "Opened at", "Operator platformă:": "Operator platformă:", "Operatorul (tu) creezi factură:": "Operatorul (tu) creezi factură:", "Operatorul confirmă manual factura ca plătită": "Operatorul confirmă manual factura ca plătită", @@ -1066,6 +1157,9 @@ "Ora închidere": "Closed at", "Oraș": "City", "Oraș:": "Oraș:", + "Order": "Order", + "Order number": "Order number", + "Orders": "Orders", "Ordine": "Order", "Ordonare": "Sort", "Ordonat": "Sorted", @@ -1077,6 +1171,7 @@ "Ore programate": "Ore programate", "Ore total": "Ore total", "Ore/zi": "Hours/day", + "Owner": "Owner", "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.": "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.", "PDF": "PDF", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", @@ -1086,6 +1181,7 @@ "POST /api/v1/login": "POST /api/v1/login", "Pagina": "Page", "Pagini": "Pages", + "Paid at": "Paid at", "Panou": "Panel", "Panou control": "Control panel", "Parolă": "Password", @@ -1093,16 +1189,24 @@ "Parolă (lasă gol pentru auto-generat)": "Parolă (lasă gol pentru auto-generat)", "Parolă API": "Parolă API", "Parolă resetată.": "Parolă resetată.", + "Part": "Part", + "Parts": "Parts", "Parțial": "Partial", "Pas 1 — Datele afacerii": "Pas 1 — Datele afacerii", "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", + "Password": "Password", "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Pause", + "Pay status": "Pay status", "PayPal": "PayPal", "PayPal:": "PayPal:", "Payload:": "Payload:", + "Payment": "Payment", + "Payment date": "Payment date", + "Payment method": "Payment method", + "Payments": "Payments", "Paynet": "Paynet", "Pe pauză": "Paused", "Pe status": "Pe status", @@ -1123,6 +1227,10 @@ "Persoană fizică": "Persoană fizică", "Persoană juridică": "Persoană juridică", "Personalizat": "Custom", + "Phone": "Phone", + "Phone alt": "Alt. phone", + "Photo": "Photo", + "Photos": "Photos", "Pierdut": "Lost", "Pierdute": "Pierdute", "Piese": "Parts", @@ -1161,6 +1269,7 @@ "Pontaj": "Timesheet", "Populare": "Popular", "Posibili clienți noi": "Potential new clients", + "Position": "Position", "Post actualizat": "Post actualizat", "Poze": "Photos", "Pozele auto": "Vehicle photos", @@ -1196,6 +1305,7 @@ "Preț/h": "Preț/h", "Prețuri": "Prețuri", "Prețurile se înregistrează automat la fiecare recepție de PO.": "Prețurile se înregistrează automat la fiecare recepție de PO.", + "Price": "Price", "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", "Print": "Print", @@ -1246,6 +1356,9 @@ "Publică": "Publish", "Publică în magazin": "Publică în magazin", "Publishable key": "Publishable key", + "Published": "Published", + "Purchase": "Purchase", + "Purchases": "Purchases", "Putere": "Power", "Pâlnie": "Pipeline", "Până la": "To", @@ -1254,6 +1367,8 @@ "Până la ora": "To time", "Până la:": "Până la:", "QR": "QR", + "Qty": "Qty", + "Quantity": "Quantity", "ROI": "ROI", "RON — Leu românesc": "RON — Leu românesc", "RUB — Rublă": "RUB — Rublă", @@ -1261,11 +1376,14 @@ "Rapoarte": "Reports", "Raport": "Report", "Rata conversie": "Conversion rate", + "Rate": "Rate", "Rating": "Rating", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Reactivate", "Read the": "Read the", + "Ready at": "Ready at", "Real ore": "Real hours", + "Reason": "Reason", "Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese", "Recalculează": "Recalculează", "Recent": "Recent", @@ -1288,22 +1406,27 @@ "Redeschide fișa": "Reopen order", "Ref.": "Ref.", "Ref. lot/factură": "Ref. lot/factură", + "Reference": "Reference", "Referință": "Reference", "Referință (Stripe id, transfer)": "Referință (Stripe id, transfer)", "Referință (chitanță / tranzacție)": "Referință (chitanță / tranzacție)", "Refuzat": "Rejected", "Refuzat de client": "Rejected by client", "Regenerează": "Regenerate", + "Region": "Region", "Register": "Register", "Regiune": "Regiune", "Regulă": "Rule", "Reia": "Resume", + "Remember me": "Remember me", "Reminder ITP / revizie": "Reminder ITP / revizie", "Reminder service auto": "Reminder service auto", "Renunță": "Cancel", "Reordonează": "Reorder", "Reparație": "Repair", "Reparații": "Repairs", + "Report": "Report", + "Reports": "Reports", "Rerating": "Rerating", "Reset": "Reset", "Reset parolă": "Reset parolă", @@ -1320,8 +1443,10 @@ "Restanță": "Restanță", "Restaurează": "Restore", "Restituire": "Restituire", + "Restore": "Restore", "Retur": "Return", "Returnat": "Returnat", + "Revenue": "Revenue", "Revizie": "Service", "Revizii": "Services", "Revocă": "Revocă", @@ -1336,6 +1461,7 @@ "Robotizată": "Robotized", "Rol": "Role", "Rol primar": "Primary role", + "Role": "Role", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Rolul principal — sincronizat automat cu drepturile RBAC.", "Roluri suplimentare": "Additional roles", "Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Roluri suplimentare peste rolul primar — drepturile se cumulează.", @@ -1354,6 +1480,7 @@ "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Salary & margin", "Salariu bază": "Salariu bază", + "Salary base": "Salary base", "Sales": "Sales", "Salut": "Hi", "Salvează": "Save", @@ -1373,6 +1500,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", + "Scheduled at": "Scheduled at", "Schimb ulei + filtru": "Schimb ulei + filtru", "Scoate din magazin": "Scoate din magazin", "Scrie mesajul tău...": "Scrie mesajul tău...", @@ -1382,11 +1510,13 @@ "Se salvează...": "Se salvează...", "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.": "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.", "Search": "Search", + "Season": "Season", "Secret": "Secret", "Secret key": "Secret key", "Secret semnătură": "Secret semnătură", "Secunde": "Seconds", "Securitate": "Security", + "Select all": "Select all", "Selectat": "Selected", "Selectate": "Selected", "Selectează": "Select", @@ -1405,9 +1535,12 @@ "Senzori TPMS": "Senzori TPMS", "Septembrie": "September", "Serial": "Serial", + "Serial number": "Serial number", "Serie": "Series", "Serie factură": "Invoice series", + "Service": "Service", "Service ID": "Service ID", + "Services": "Services", "Servicii": "Services", "Servicii & tarif": "Services & rate", "Servicii oferite": "Servicii oferite", @@ -1431,16 +1564,20 @@ "Sex": "Gender", "Sezon": "Sezon", "Sfat": "Tip", + "Shelf": "Shelf", "Sign in": "Sign in", "Sign up": "Sign up", "Sincronizat": "Synced", "Sincronizează": "Sync", "Sistem": "Sistem", "Site PSauto": "Public site", + "Sku": "SKU", "Slot": "Slot", "Slug": "Slug", "Sold": "Balance", + "Solution": "Solution", "Sosit": "Arrived", + "Source": "Source", "Spate-Dreapta": "Spate-Dreapta", "Spate-Stânga": "Spate-Stânga", "Spațiu de lucru adăugat": "Spațiu de lucru adăugat", @@ -1462,6 +1599,8 @@ "Stoc minim": "Stoc minim", "Stoc minim atins": "Minimum stock reached", "Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)", + "Stock": "Stock", + "Storage": "Storage", "Storage (MB)": "Storage (MB)", "Storage media": "Storage media", "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", @@ -1474,6 +1613,7 @@ "Subiect (email)": "Subiect (email)", "Subiect *": "Subiect *", "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", + "Submit": "Submit", "Subtotal": "Subtotal", "Subtotal manopere:": "Subtotal manopere:", "Subtotal piese:": "Subtotal piese:", @@ -1488,6 +1628,7 @@ "Sună": "Call", "Sună-i sau trimite-le un email cu suma datorată.": "Sună-i sau trimite-le un email cu suma datorată.", "Suport": "Support", + "Supplier": "Supplier", "Sursă": "Source", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Suspended", @@ -1512,6 +1653,8 @@ "Tarif/h": "Tarif/h", "Tarif/oră": "Tarif/oră", "Tarifare": "Tarifare", + "Task": "Task", + "Tasks": "Tasks", "Taxă depozitare": "Taxă depozitare", "Taxă livrare": "Taxă livrare", "Tehnice": "Tehnice", @@ -1545,6 +1688,7 @@ "Test notificare push": "Test notificare push", "Testează bot Telegram": "Testează bot Telegram", "Theme color": "Theme color", + "Time": "Time", "Timp lucrat": "Time worked", "Timp mediu": "Avg time", "Timp total": "Total time", @@ -1556,6 +1700,8 @@ "Tip jante": "Tip jante", "Tipărește": "Print", "Tipărește etichete QR": "Tipărește etichete QR", + "Title": "Title", + "To": "To", "Toate": "All", "Toate atelierele": "All workshops", "Toate autovehiculele": "All vehicles", @@ -1590,6 +1736,7 @@ "Total ieșiri": "Total ieșiri", "Total intrări": "Total intrări", "Total net": "Total net", + "Total paid": "Total paid", "Total plătit": "Total paid", "Total rezultate": "Total results", "Total venituri": "Total venituri", @@ -1606,8 +1753,10 @@ "Transfer": "Transfer", "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", + "Transmission": "Transmission", "Transport": "Transport", "Tranz.": "Tranz.", + "Trashed": "Trashed", "Trial expiră la": "Trial expiră la", "Trimis": "Sent", "Trimis · fără răspuns": "Sent · no response", @@ -1626,6 +1775,7 @@ "Trimite prin email": "Send by email", "Trimite reminder după X zile fără vizită": "Trimite reminder după X zile fără vizită", "Trimite reset parolă": "Trimite reset parolă", + "Type": "Type", "UM": "Unit", "URL secret pentru POST direct cu lead-uri din site-ul tău.": "URL secret pentru POST direct cu lead-uri din site-ul tău.", "Ulei": "Oil", @@ -1637,6 +1787,7 @@ "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).", + "Updated at": "Updated at", "Upgrade": "Upgrade", "Urgent": "Urgent", "Urgente": "Urgent", @@ -1645,7 +1796,9 @@ "Următor": "Next", "Următorul": "Next", "Următorul →": "Următorul →", + "User": "User", "User API": "User API", + "User name": "User", "Useri": "Useri", "Utilități": "Utilities", "Utilizator": "User", @@ -1667,6 +1820,13 @@ "Valoare": "Valoare", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}", "Vară": "Summer", + "Vat": "VAT", + "Vat rate": "VAT rate", + "Vehicle": "Vehicle", + "Vehicle class": "Vehicle class", + "Vehicle make": "Vehicle make", + "Vehicle model": "Vehicle model", + "Vehicle plate": "Vehicle plate", "Vehicul": "Vehicle", "Vehicul existent": "Existing vehicle", "Vehicul nou": "New vehicle", @@ -1683,7 +1843,9 @@ "Vezi imagine": "View image", "Vezi mai mult": "View more", "Vezi tot": "View all", + "View": "View", "Viitoare": "Viitoare", + "Vin": "VIN", "Vineri": "Friday", "Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe", "Vizibil": "Visible", @@ -1700,6 +1862,7 @@ "Vă mulțumim!": "Vă mulțumim!", "Văzut": "Seen", "WBAFE81070CY34521": "WBAFE81070CY34521", + "Warehouse": "Warehouse", "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", @@ -1709,11 +1872,17 @@ "Webhook intrări (formulare site)": "Webhook intrări (formulare site)", "Webhook secret": "Webhook secret", "Webhook setat — botul e gata": "Webhook setat — botul e gata", + "Website": "Website", "Weekend": "Weekend", "Welcome": "Welcome", "WhatsApp": "WhatsApp", "Widget": "Widget", + "With trashed": "With trashed", + "Without trashed": "Without trashed", + "Work": "Work", + "Works": "Works", "XLS": "XLS", + "Year": "Year", "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.", diff --git a/lang/ru.json b/lang/ru.json index 22048dd..bd64727 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -59,7 +59,7 @@ "Actions": "Действия", "Activ": "Активный", "Activare": "Активация", - "Active": "Активные", + "Active": "Активный", "Active acum": "В работе сейчас", "Activează": "Активировать", "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.": "Activează / dezactivează notificările auto către clienți. Telegram are prioritate dacă clientul are cont legat.", @@ -72,6 +72,7 @@ "Activi": "Активные", "Activitate recentă": "Недавняя активность", "Activă": "Активна", + "Actual hours": "Факт. часы", "Actualizat la": "Обновлено", "Actualizează": "Обновить", "Acțiune": "Действие", @@ -108,6 +109,7 @@ "Adaugă serviciu": "Добавить услугу", "Adaugă utilizator": "Добавить пользователя", "Adaugă vehicul": "Добавить транспорт", + "Address": "Адрес", "Admin tenant (la creare)": "Admin tenant (la creare)", "Administrator": "Администратор", "Adresă": "Адрес", @@ -143,6 +145,7 @@ "Alte cheltuieli": "Прочие расходы", "Altă problemă": "Другая проблема", "Am salvat token-ul, ascunde-l": "Am salvat token-ul, ascunde-l", + "Amount": "Сумма", "An": "Год", "An fabricație": "Год выпуска", "An model": "Модельный год", @@ -171,6 +174,7 @@ "Aplică prețul": "Aplică prețul", "Aplică toate regulile la stoc": "Aplică toate regulile la stoc", "Aplică șablon": "Применить шаблон", + "Approved at": "Утверждено", "Aprilie": "Апрель", "Aprobare": "Утверждение", "Aprobat": "Утверждено", @@ -181,6 +185,8 @@ "Arhivat": "В архиве", "Arhivează": "В архив", "Arhivă": "Архив", + "Article": "Артикул", + "Article code": "Артикул", "Articol": "Articol", "Articol nu se potrivește comenzii": "Articol nu se potrivește comenzii", "Articole": "Articole", @@ -196,6 +202,8 @@ "Atașat veți găsi": "Во вложении", "Atelierul meu": "Моя мастерская", "Atenție": "Внимание", + "Attachment": "Вложение", + "Attachments": "Вложения", "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "Август", "Autentificare": "Аутентификация", @@ -221,9 +229,12 @@ "Backup & Export date": "Backup & Export date", "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Баланс", + "Balance due": "К оплате", "Balanță": "Баланс", "Banca": "Banca", "Banca:": "Banca:", + "Barcode": "Штрих-код", + "Bay": "Пост", "Bază": "База", "Beneficiar": "Beneficiar", "Beneficiar:": "Beneficiar:", @@ -238,16 +249,18 @@ "Blochez": "Блокировать", "Blochez lucrarea": "Заблокировать работу", "Boală": "Больничный", + "Body type": "Кузов", "Bon": "Чек", "Bonuri": "Чеки", "Bot OK: @{$name}": "Bot OK: @{$name}", "Bot Telegram nu răspunde": "Bot Telegram nu răspunde", "Bot token": "Bot token", - "Brand": "Brand", + "Brand": "Бренд", "Brand & contact": "Бренд и контакты", "Break": "Универсал", "Buget": "Бюджет", "Buget & rezultate (luna curentă)": "Buget & rezultate (luna curentă)", + "Bulk actions": "Массовые действия", "Bun venit": "Добро пожаловать", "Bun venit în AutoCRM!": "Bun venit în AutoCRM!", "Bună": "Хорошее", @@ -280,6 +293,7 @@ "Categorie": "Категория", "Categorie implicită": "Категория по умолчанию", "Categorii": "Categorii", + "Category": "Категория", "Caută": "Поиск", "Caută client, mașină, număr...": "Поиск клиента, авто, номера...", "Caută în tabel": "Поиск в таблице", @@ -307,7 +321,9 @@ "Chitanță": "Квитанция", "Cifră de afaceri": "Оборот", "Ciornă": "Черновик", + "City": "Город", "Clase auto": "Классы авто", + "Class": "Класс", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", "Click pentru a redenumi": "Click pentru a redenumi", @@ -320,12 +336,14 @@ "Client VIP": "Client VIP", "Client existent": "Существующий клиент", "Client legat (CRM)": "Client legat (CRM)", + "Client name": "Имя клиента", "Client nou": "Новый клиент", "Clienți": "Клиенты", "Clienți VIP cu care nu s-a vorbit de peste 30 zile.": "Clienți VIP cu care nu s-a vorbit de peste 30 zile.", "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.": "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.", "Clienți magazin": "Клиенты магазина", "Clienți noi în perioadă": "Clienți noi în perioadă", + "Closed at": "Закрыт", "Cod": "Код", "Cod QR": "QR-код", "Cod articol": "Артикул", @@ -334,6 +352,7 @@ "Cod necunoscut": "Cod necunoscut", "Cod tracking": "Код отслеживания", "Cod uzină": "Cod uzină", + "Code": "Код", "Codul produsului": "Код товара", "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", @@ -345,6 +364,7 @@ "Coloana Preț *": "Coloana Preț *", "Coloane": "Колонки", "Coloană": "Колонка", + "Color": "Цвет", "Comanda": "Comanda", "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", @@ -357,16 +377,23 @@ "Comercial": "Коммерческий", "Comision manopere": "Comision manopere", "Comision piese": "Comision piese", + "Comment": "Комментарий", + "Comments": "Комментарии", "Companie": "Компания", "Companie & plan": "Companie & plan", "Companie creată: {$result['company']->name}": "Companie creată: {$result['company']->name}", + "Company": "Компания", + "Company name": "Название компании", + "Complaint": "Жалоба", "Complet": "Полностью", "Concediu": "Отпуск", + "Condition": "Состояние", "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": "Расширенная конфигурация", + "Confirm password": "Подтверждение пароля", "Confirmare plată primită": "Confirmare plată primită", "Confirmat": "Подтверждено", "Confirmate": "Подтверждено", @@ -406,6 +433,7 @@ "Cost piese (achiziție)": "Cost piese (achiziție)", "Cost/lead": "Cost/lead", "Costuri": "Стоимости", + "Country": "Страна", "Coupé": "Купе", "Creanțe": "Дебиторка", "Creat": "Creat", @@ -432,6 +460,7 @@ "Cumul.": "Cumul.", "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ă.", + "Currency": "Валюта", "Curăță": "Очистить", "Custom": "Свой", "Cutie": "Коробка", @@ -493,11 +522,14 @@ "Decodează": "Decodează", "Deconectare": "Отключение", "Delete": "Удалить", + "Delete selected": "Удалить выбранные", + "Deleted at": "Удалён", "Demo (pentru demonstrații sales)": "Demo (pentru demonstrații sales)", "Denumire": "Наименование", "Denumire afișată": "Отображаемое название", "Denumire companie": "Название компании", "Denumire produs": "Название товара", + "Department": "Отдел", "Deploy now": "Deploy now", "Depozit": "Склад", "Depozit gol": "Depozit gol", @@ -524,6 +556,8 @@ "Descriere": "Описание", "Descriere (opțional)": "Descriere (opțional)", "Descriere produs": "Описание товара", + "Description": "Описание", + "Deselect all": "Снять выбор", "Detalii": "Подробности", "Detalii (opțional)": "Детали (опционально)", "Detalii auto": "Данные авто", @@ -533,6 +567,7 @@ "Dezactivare": "Деактивация", "Dezactivează": "Деактивировать", "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.": "Dezactivează 2FA pentru acest utilizator. Va trebui să re-configureze TOTP la următoarea autentificare.", + "Diagnosis": "Диагноз", "Diagnostic": "Диагностика", "Diagnostic AI bazat pe plângerea clientului": "Diagnostic AI bazat pe plângerea clientului", "Diagnosticare": "Диагностика", @@ -541,6 +576,7 @@ "Diametru R": "Diametru R", "Dimensiune": "Dimensiune", "Din catalog (lasă gol pentru text liber)": "Din catalog (lasă gol pentru text liber)", + "Disabled": "Выключен", "Discount": "Скидка", "Discount %": "Скидка %", "Distribuie": "Распределить", @@ -557,14 +593,18 @@ "Documente": "Документы", "Done": "Готово", "Downgrade": "Понижение", + "Draft": "Черновик", "Drept": "Право", "Drepturi": "Права", + "Due at": "Срок", + "Due date": "Срок", "Duminică": "Воскресенье", "Duminică: închis": "Duminică: închis", "Duplică": "Дублировать", "Duplică rând": "Дублировать строку", "După": "După", "După efectuarea transferului:": "După efectuarea transferului:", + "Duration": "Длительность", "Durată": "Длительность", "Durată (sec)": "Durată (sec)", "Durată estimată": "Расчётная длительность", @@ -585,8 +625,11 @@ "Eliberează": "Выдать", "Email": "Email", "Email admin": "Email admin", + "Email verified at": "Email подтверждён", "Email:": "Email:", "Empty": "Нет результатов", + "Enabled": "Включён", + "End": "Конец", "Endpoint webhook: https://service.mir.md/payments/stripe/webhook": "Endpoint webhook: https://service.mir.md/payments/stripe/webhook", "Endpoints disponibile:": "Endpoints disponibile:", "Eroare": "Ошибка", @@ -595,6 +638,8 @@ "Etapă": "Этап", "Etichete piese": "Etichete piese", "Etichetă": "Etichetă", + "Event": "Событие", + "Events": "События", "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", @@ -610,6 +655,8 @@ "Excepții": "Исключения", "Excepții drepturi": "Исключения прав", "Există deja un cont cu acest telefon.": "Există deja un cont cu acest telefon.", + "Expense": "Расход", + "Expenses": "Расходы", "Expiră": "Expiră", "Expiră < 7 zile": "Истекает < 7 дней", "Expiră la (opțional)": "Expiră la (opțional)", @@ -634,6 +681,9 @@ "Față-Stânga": "Față-Stânga", "Februarie": "Февраль", "Femeie": "Женский", + "File": "Файл", + "Files": "Файлы", + "Filter": "Фильтр", "Filters": "Фильтры", "Filtre": "Фильтры", "Filtru": "Фильтр", @@ -658,6 +708,7 @@ "Folosit dacă markup = 0.": "Folosit dacă markup = 0.", "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 delete": "Удалить безвозвратно", "Force logout": "Выйти со всех устройств", "Format:": "Format:", "Foto": "Фото", @@ -665,8 +716,10 @@ "Foto piesă": "Foto piesă", "Foto înainte / după": "Foto înainte / după", "Fotografii": "Фотографии", + "From": "От", "Frâne": "Тормоза", "Frâne, Ulei, ...": "Frâne, Ulei, ...", + "Fuel": "Топливо", "Funcție": "Funcție", "Funcționalități": "Funcționalități", "Funcționalități incluse": "Funcționalități incluse", @@ -709,6 +762,8 @@ "Hartă daune": "Hartă daune", "Hatchback": "Хэтчбек", "Hibrid": "Гибрид", + "Hourly rate": "Часовая ставка", + "Hours": "Часы", "IBAN": "IBAN", "IBAN:": "IBAN:", "ID": "ID", @@ -722,6 +777,8 @@ "Ieri": "Вчера", "Ieșire": "Выход", "Ieșiri": "Расход", + "Image": "Изображение", + "Images": "Изображения", "Imagine": "Изображение", "Imagine principală": "Главное изображение", "Imagini": "Изображения", @@ -742,6 +799,7 @@ "Importă din Excel": "Импорт из Excel", "Importă lead-uri direct din Lead Ads forms.": "Importă lead-uri direct din Lead Ads forms.", "Inactiv": "Неактивно", + "Inactive": "Неактивный", "Infopanel": "Инфопанель", "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.": "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.", "Informație": "Информация", @@ -757,12 +815,21 @@ "Inventar": "Инвентаризация", "Invitație": "Приглашение", "Invitații": "Приглашения", + "Invoice number": "№ счёта", "Ion Popescu": "Ion Popescu", + "Is active": "Активно", + "Is default": "По умолчанию", + "Is deleted": "Удалено", + "Is enabled": "Включено", + "Is published": "Опубликовано", + "Is vip": "VIP", "Istoric depozitare": "Istoric depozitare", "Istoric prețuri furnizori": "Istoric prețuri furnizori", "Iulie": "Июль", "Iunie": "Июнь", "JSON": "JSON", + "Job": "Работа", + "Jobs": "Работы", "Joi": "Четверг", "Jurnal": "Журнал", "KPI mecanici": "KPI механиков", @@ -780,11 +847,17 @@ "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.", + "Labor": "Работа", + "Labors": "Работы", + "Language": "Язык", "Laracasts": "Laracasts", "Laravel has an incredibly rich ecosystem.": "Laravel has an incredibly rich ecosystem.", + "Last login at": "Последний вход", "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": "Заявка", "Lead-uri": "Lead-uri", "Lead-uri pe sursă": "Lead-uri pe sursă", + "Leads": "Заявки", "Legendă": "Legendă", "Legendă:": "Legendă:", "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.": "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.", @@ -811,6 +884,7 @@ "Loc.": "Loc.", "Local": "Локально", "Localizare & monedă": "Локализация и валюта", + "Location": "Локация", "Locație": "Локация", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", @@ -851,6 +925,7 @@ "Maistru": "Мастер", "Maistru / Mecanic": "Maistru / Mecanic", "Maistru / Recepție:": "Maistru / Recepție:", + "Make": "Марка", "Manager": "Менеджер", "Manopere": "Работы", "Manoperă": "Работа", @@ -866,6 +941,7 @@ "Marchează terminat": "Отметить как готовое", "Marcă": "Марка", "Marcă implicită": "Марка по умолчанию", + "Margin": "Маржа", "Marja": "Маржа", "Marja piese": "Marja piese", "Marja profitului": "Маржа прибыли", @@ -877,14 +953,17 @@ "Marjă profit:": "Marjă profit:", "Marketing": "Маркетинг", "Marketing (UTM)": "Marketing (UTM)", - "Markup": "Markup", + "Markup": "Наценка", "Markup %": "Наценка %", "Martie": "Март", "Marți": "Вторник", + "Master": "Мастер", + "Master name": "Мастер", "Matricea": "Matricea", "Max clienți": "Max clienți", "Max fișe/lună": "Max fișe/lună", "Max mașini": "Max mașini", + "Max qty": "Макс. кол-во", "Max useri": "Max useri", "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Автомобили", @@ -898,6 +977,8 @@ "Mesaj client": "Mesaj client", "Mesaje": "Сообщения", "Mesaje AI/lună": "Mesaje AI/lună", + "Message": "Сообщение", + "Method": "Метод", "Metoda": "Metoda", "Metode de livrare": "Metode de livrare", "Metode plată": "Способы оплаты", @@ -905,6 +986,8 @@ "Metodă plată": "Способ оплаты", "Miercuri": "Среда", "Migrare la alt sistem CRM": "Migrare la alt sistem CRM", + "Mileage": "Пробег", + "Min qty": "Мин. кол-во", "Min.": "Мин.", "Minim": "Minim", "Minute": "Минуты", @@ -917,6 +1000,7 @@ "Model Gemini": "Model Gemini", "Model OpenAI": "Model OpenAI", "Model implicit": "Модель по умолчанию", + "Model year": "Модельный год", "Modele": "Модели", "Modificat de": "Изменено", "Moldova-Agroindbank": "Moldova-Agroindbank", @@ -932,6 +1016,7 @@ "Mulțumim": "Спасибо", "Mâine": "Завтра", "Mărci auto suportate (separate prin virgulă)": "Mărci auto suportate (separate prin virgulă)", + "Name": "Имя", "Neachitat": "Не оплачено", "Necesită acțiune": "Требует действия", "Necesită aprobare": "Требуется одобрение", @@ -993,10 +1078,12 @@ "No": "Нет", "No-show alert": "No-show alert", "Noiembrie": "Ноябрь", + "Norm hours": "Норма часов", "Norma ore": "Норма часов", "Normal": "Обычный", "Norme-ore": "Нормо-часы", "Note interne": "Note interne", + "Notes": "Заметки", "Notificare": "Уведомление", "Notifications": "Уведомления", "Notificări": "Уведомления", @@ -1026,6 +1113,8 @@ "Nu te poți șterge pe tine!": "Nu te poți șterge pe tine!", "Nu, renunță": "Нет, отменить", "Numar": "Номер", + "Number": "Номер", + "Number generated": "Номер создан", "Nume": "Имя", "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", @@ -1050,9 +1139,11 @@ "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", + "Only trashed": "Только удалённые", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", + "Opened at": "Открыт", "Operator platformă:": "Operator platformă:", "Operatorul (tu) creezi factură:": "Operatorul (tu) creezi factură:", "Operatorul confirmă manual factura ca plătită": "Operatorul confirmă manual factura ca plătită", @@ -1066,6 +1157,9 @@ "Ora închidere": "Время закрытия", "Oraș": "Город", "Oraș:": "Oraș:", + "Order": "Заказ", + "Order number": "№ заказа", + "Orders": "Заказы", "Ordine": "Порядок", "Ordonare": "Сортировка", "Ordonat": "Отсортировано", @@ -1077,6 +1171,7 @@ "Ore programate": "Ore programate", "Ore total": "Ore total", "Ore/zi": "Часов/день", + "Owner": "Владелец", "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.": "Owner = drepturi totale. Admin = aproape la fel. Sales = doar tenanți + planuri. Finance = facturi. Support = read-only.", "PDF": "PDF", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", @@ -1086,6 +1181,7 @@ "POST /api/v1/login": "POST /api/v1/login", "Pagina": "Страница", "Pagini": "Страницы", + "Paid at": "Оплачено", "Panou": "Панель", "Panou control": "Панель управления", "Parolă": "Пароль", @@ -1093,16 +1189,24 @@ "Parolă (lasă gol pentru auto-generat)": "Parolă (lasă gol pentru auto-generat)", "Parolă API": "Parolă API", "Parolă resetată.": "Parolă resetată.", + "Part": "Запчасть", + "Parts": "Запчасти", "Parțial": "Частично", "Pas 1 — Datele afacerii": "Pas 1 — Datele afacerii", "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", + "Password": "Пароль", "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Пауза", + "Pay status": "Статус оплаты", "PayPal": "PayPal", "PayPal:": "PayPal:", "Payload:": "Payload:", + "Payment": "Платёж", + "Payment date": "Дата платежа", + "Payment method": "Способ оплаты", + "Payments": "Платежи", "Paynet": "Paynet", "Pe pauză": "На паузе", "Pe status": "Pe status", @@ -1123,6 +1227,10 @@ "Persoană fizică": "Persoană fizică", "Persoană juridică": "Persoană juridică", "Personalizat": "Персонализировано", + "Phone": "Телефон", + "Phone alt": "Тел. дополн.", + "Photo": "Фото", + "Photos": "Фото", "Pierdut": "Потерян", "Pierdute": "Pierdute", "Piese": "Запчасти", @@ -1137,7 +1245,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", + "Plate": "Гос. номер", "Plată": "Платёж", "Plată & total": "Оплата и итого", "Plată anulată": "Plată anulată", @@ -1161,6 +1269,7 @@ "Pontaj": "Табель", "Populare": "Популярные", "Posibili clienți noi": "Потенциальные новые клиенты", + "Position": "Должность", "Post actualizat": "Post actualizat", "Poze": "Фото", "Pozele auto": "Фото авто", @@ -1196,6 +1305,7 @@ "Preț/h": "Preț/h", "Prețuri": "Prețuri", "Prețurile se înregistrează automat la fiecare recepție de PO.": "Prețurile se înregistrează automat la fiecare recepție de PO.", + "Price": "Цена", "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", "Print": "Печать", @@ -1246,6 +1356,9 @@ "Publică": "Опубликовать", "Publică în magazin": "Publică în magazin", "Publishable key": "Publishable key", + "Published": "Опубликовано", + "Purchase": "Закупка", + "Purchases": "Закупки", "Putere": "Мощность", "Pâlnie": "Воронка", "Până la": "До", @@ -1254,6 +1367,8 @@ "Până la ora": "По", "Până la:": "Până la:", "QR": "QR", + "Qty": "Кол-во", + "Quantity": "Количество", "ROI": "ROI", "RON — Leu românesc": "RON — Leu românesc", "RUB — Rublă": "RUB — Rublă", @@ -1261,11 +1376,14 @@ "Rapoarte": "Отчёты", "Raport": "Отчёт", "Rata conversie": "Конверсия", + "Rate": "Ставка", "Rating": "Рейтинг", "Rating actualizat → {$score}★": "Rating actualizat → {$score}★", "Reactivează": "Реактивировать", "Read the": "Read the", + "Ready at": "Готов", "Real ore": "Факт часов", + "Reason": "Причина", "Recalculat preț pentru {$count} piese": "Recalculat preț pentru {$count} piese", "Recalculează": "Recalculează", "Recent": "Недавно", @@ -1288,22 +1406,27 @@ "Redeschide fișa": "Переоткрыть наряд", "Ref.": "Реф.", "Ref. lot/factură": "Ref. lot/factură", + "Reference": "Ссылка", "Referință": "Ссылка", "Referință (Stripe id, transfer)": "Referință (Stripe id, transfer)", "Referință (chitanță / tranzacție)": "Referință (chitanță / tranzacție)", "Refuzat": "Отклонён", "Refuzat de client": "Отклонено клиентом", "Regenerează": "Перегенерировать", + "Region": "Регион", "Register": "Регистрация", "Regiune": "Regiune", "Regulă": "Правило", "Reia": "Продолжить", + "Remember me": "Запомнить меня", "Reminder ITP / revizie": "Reminder ITP / revizie", "Reminder service auto": "Reminder service auto", "Renunță": "Отменить", "Reordonează": "Изменить порядок", "Reparație": "Ремонт", "Reparații": "Ремонты", + "Report": "Отчёт", + "Reports": "Отчёты", "Rerating": "Rerating", "Reset": "Сбросить", "Reset parolă": "Reset parolă", @@ -1320,8 +1443,10 @@ "Restanță": "Restanță", "Restaurează": "Восстановить", "Restituire": "Restituire", + "Restore": "Восстановить", "Retur": "Возврат", "Returnat": "Returnat", + "Revenue": "Доход", "Revizie": "ТО", "Revizii": "ТО", "Revocă": "Revocă", @@ -1336,6 +1461,7 @@ "Robotizată": "Робот", "Rol": "Роль", "Rol primar": "Основная роль", + "Role": "Роль", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Rolul principal — sincronizat automat cu drepturile RBAC.", "Roluri suplimentare": "Доп. роли", "Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Roluri suplimentare peste rolul primar — drepturile se cumulează.", @@ -1354,6 +1480,7 @@ "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Зарплата и маржа", "Salariu bază": "Salariu bază", + "Salary base": "База зарплаты", "Sales": "Продажи", "Salut": "Привет", "Salvează": "Сохранить", @@ -1373,6 +1500,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", + "Scheduled at": "Запланировано", "Schimb ulei + filtru": "Schimb ulei + filtru", "Scoate din magazin": "Scoate din magazin", "Scrie mesajul tău...": "Scrie mesajul tău...", @@ -1382,11 +1510,13 @@ "Se salvează...": "Se salvează...", "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.": "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.", "Search": "Поиск", + "Season": "Сезон", "Secret": "Secret", "Secret key": "Secret key", "Secret semnătură": "Secret semnătură", "Secunde": "Секунды", "Securitate": "Безопасность", + "Select all": "Выбрать все", "Selectat": "Выбрано", "Selectate": "Выбранные", "Selectează": "Выбрать", @@ -1404,10 +1534,13 @@ "Semnătură digitală": "Цифровая подпись", "Senzori TPMS": "Senzori TPMS", "Septembrie": "Сентябрь", - "Serial": "Serial", + "Serial": "Серийный №", + "Serial number": "Серийный номер", "Serie": "Серия", "Serie factură": "Серия счёта", + "Service": "Услуга", "Service ID": "Service ID", + "Services": "Услуги", "Servicii": "Услуги", "Servicii & tarif": "Услуги и тариф", "Servicii oferite": "Servicii oferite", @@ -1431,16 +1564,20 @@ "Sex": "Пол", "Sezon": "Sezon", "Sfat": "Совет", + "Shelf": "Полка", "Sign in": "Войти", "Sign up": "Регистрация", "Sincronizat": "Синхронизировано", "Sincronizează": "Синхронизировать", "Sistem": "Sistem", "Site PSauto": "Сайт", + "Sku": "SKU", "Slot": "Слот", "Slug": "Slug", "Sold": "Баланс", + "Solution": "Решение", "Sosit": "Прибыл", + "Source": "Источник", "Spate-Dreapta": "Spate-Dreapta", "Spate-Stânga": "Spate-Stânga", "Spațiu de lucru adăugat": "Spațiu de lucru adăugat", @@ -1452,7 +1589,7 @@ "Stare": "Stare", "Stare timp": "Время", "Stare zi": "Состояние дня", - "Start": "Старт", + "Start": "Начало", "Status": "Статус", "Status dosar": "Status dosar", "Status implicit": "Статус по умолчанию", @@ -1462,6 +1599,8 @@ "Stoc minim": "Stoc minim", "Stoc minim atins": "Достигнут мин. остаток", "Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)", + "Stock": "Остаток", + "Storage": "Хранение", "Storage (MB)": "Storage (MB)", "Storage media": "Storage media", "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", @@ -1474,6 +1613,7 @@ "Subiect (email)": "Subiect (email)", "Subiect *": "Subiect *", "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", + "Submit": "Отправить", "Subtotal": "Промежуточный итог", "Subtotal manopere:": "Subtotal manopere:", "Subtotal piese:": "Subtotal piese:", @@ -1488,6 +1628,7 @@ "Sună": "Позвонить", "Sună-i sau trimite-le un email cu suma datorată.": "Sună-i sau trimite-le un email cu suma datorată.", "Suport": "Поддержка", + "Supplier": "Поставщик", "Sursă": "Источник", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Приостановлено", @@ -1512,6 +1653,8 @@ "Tarif/h": "Tarif/h", "Tarif/oră": "Tarif/oră", "Tarifare": "Tarifare", + "Task": "Задача", + "Tasks": "Задачи", "Taxă depozitare": "Taxă depozitare", "Taxă livrare": "Taxă livrare", "Tehnice": "Tehnice", @@ -1545,6 +1688,7 @@ "Test notificare push": "Test notificare push", "Testează bot Telegram": "Testează bot Telegram", "Theme color": "Theme color", + "Time": "Время", "Timp lucrat": "Отработано", "Timp mediu": "Среднее время", "Timp total": "Общее время", @@ -1556,6 +1700,8 @@ "Tip jante": "Tip jante", "Tipărește": "Печать", "Tipărește etichete QR": "Tipărește etichete QR", + "Title": "Название", + "To": "До", "Toate": "Все", "Toate atelierele": "Все мастерские", "Toate autovehiculele": "Все авто", @@ -1590,6 +1736,7 @@ "Total ieșiri": "Total ieșiri", "Total intrări": "Total intrări", "Total net": "Total net", + "Total paid": "Всего оплачено", "Total plătit": "Всего оплачено", "Total rezultate": "Всего результатов", "Total venituri": "Total venituri", @@ -1606,8 +1753,10 @@ "Transfer": "Перевод", "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", + "Transmission": "КПП", "Transport": "Транспорт", "Tranz.": "Tranz.", + "Trashed": "Удалённые", "Trial expiră la": "Trial expiră la", "Trimis": "Отправлено", "Trimis · fără răspuns": "Отправлено · без ответа", @@ -1626,6 +1775,7 @@ "Trimite prin email": "Отправить по email", "Trimite reminder după X zile fără vizită": "Trimite reminder după X zile fără vizită", "Trimite reset parolă": "Trimite reset parolă", + "Type": "Тип", "UM": "Ед.", "URL secret pentru POST direct cu lead-uri din site-ul tău.": "URL secret pentru POST direct cu lead-uri din site-ul tău.", "Ulei": "Масло", @@ -1637,6 +1787,7 @@ "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).", + "Updated at": "Обновлён", "Upgrade": "Обновление", "Urgent": "Срочно", "Urgente": "Срочные", @@ -1645,7 +1796,9 @@ "Următor": "Следующий", "Următorul": "Далее", "Următorul →": "Următorul →", + "User": "Пользователь", "User API": "User API", + "User name": "Пользователь", "Useri": "Useri", "Utilități": "Коммуналка", "Utilizator": "Пользователь", @@ -1667,6 +1820,13 @@ "Valoare": "Valoare", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}", "Vară": "Лето", + "Vat": "НДС", + "Vat rate": "Ставка НДС", + "Vehicle": "Авто", + "Vehicle class": "Класс авто", + "Vehicle make": "Марка авто", + "Vehicle model": "Модель авто", + "Vehicle plate": "Гос. номер авто", "Vehicul": "Транспорт", "Vehicul existent": "Существующий транспорт", "Vehicul nou": "Новый транспорт", @@ -1683,7 +1843,9 @@ "Vezi imagine": "Просмотр изображения", "Vezi mai mult": "Смотреть больше", "Vezi tot": "Смотреть все", + "View": "Просмотр", "Viitoare": "Viitoare", + "Vin": "VIN", "Vineri": "Пятница", "Visa, Mastercard prin Stripe": "Visa, Mastercard prin Stripe", "Vizibil": "Видимо", @@ -1700,6 +1862,7 @@ "Vă mulțumim!": "Vă mulțumim!", "Văzut": "Просмотрено", "WBAFE81070CY34521": "WBAFE81070CY34521", + "Warehouse": "Склад", "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", @@ -1709,11 +1872,17 @@ "Webhook intrări (formulare site)": "Webhook intrări (formulare site)", "Webhook secret": "Webhook secret", "Webhook setat — botul e gata": "Webhook setat — botul e gata", + "Website": "Сайт", "Weekend": "Выходные", "Welcome": "Добро пожаловать", "WhatsApp": "WhatsApp", "Widget": "Виджет", + "With trashed": "Включая удалённые", + "Without trashed": "Без удалённых", + "Work": "Работа", + "Works": "Работы", "XLS": "XLS", + "Year": "Год", "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.",