feat(rbac): human labels + descriptions for all 50 permissions
- Add Permissions::permissionLabels() mapping every slug to a human-readable RO label (e.g. 'clients.view_all' → 'Vezi toți clienții'). - RoleResource permission checkboxes now show translated labels as titles + technical slug as description (so admins see both the meaning and the key). - PermissionOverridesRelationManager Select 'permission_id' now shows 'Human label (technical.slug)' format, plus helper text explaining GRANT/DENY. Same format on the display column. - +57 translations (50 permission labels in RU/EN + role page supporting keys + module labels). All 306 tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+56
-2
@@ -108,11 +108,13 @@
|
||||
"Adaugă imagine": "Add image",
|
||||
"Adaugă manopere și piese care se aplică împreună când selectezi acest șablon pe o fișă.": "Add labors and parts applied together when selecting this template on an order.",
|
||||
"Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.": "Add vehicles manually or import from CSV. Use VIN search for quick decode and auto-fill of brand/model/year.",
|
||||
"Adaugă mașină": "Add vehicle",
|
||||
"Adaugă notă": "Add note",
|
||||
"Adaugă piese manual, sau folosește Achiziții ca să le adaugi prin recepție de la furnizor (cu prețuri și stoc auto). Procentaj poate seta automat prețul de vânzare.": "Adaugă piese manual, sau folosește Achiziții ca să le adaugi prin recepție de la furnizor (cu prețuri și stoc auto). Procentaj poate seta automat prețul de vânzare.",
|
||||
"Adaugă piesele care se montează de obicei la această manoperă — se adaugă automat în fișă când selectezi manopera.": "Add parts usually installed with this labor — they are auto-added to the order when you select this labor.",
|
||||
"Adaugă piesă": "Add part",
|
||||
"Adaugă piesă implicită": "Add default part",
|
||||
"Adaugă piesă în catalog": "Add part to catalog",
|
||||
"Adaugă plată": "Add payment",
|
||||
"Adaugă primul client SaaS folosind butonul „Adaugă companie\" — se va crea un tenant nou cu admin pe `<slug>.service.mir.md/app`.": "Adaugă primul client SaaS folosind butonul „Adaugă companie\" — se va crea un tenant nou cu admin pe `<slug>.service.mir.md/app`.",
|
||||
"Adaugă primul tău client manual sau importă din CSV. Toate mașinile, fișele și plățile se vor lega automat de el.": "Adaugă primul tău client manual sau importă din CSV. Toate mașinile, fișele și plățile se vor lega automat de el.",
|
||||
@@ -128,6 +130,7 @@
|
||||
"Adaugă vehicul": "Add vehicle",
|
||||
"Address": "Address",
|
||||
"Admin tenant (la creare)": "Admin tenant (la creare)",
|
||||
"Administrare": "Administration",
|
||||
"Administrator": "Administrator",
|
||||
"Adresă": "Address",
|
||||
"Adresă IP": "IP address",
|
||||
@@ -141,11 +144,13 @@
|
||||
"Ai uitat parola?": "Forgot password?",
|
||||
"Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".",
|
||||
"Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Customers who register in the online shop (/shop/register) appear here.",
|
||||
"Ajustează stocul manual": "Adjust stock manually",
|
||||
"Ale mele": "Mine",
|
||||
"Aleatoriu": "Random",
|
||||
"Alege categorie": "Choose category",
|
||||
"Alege client": "Choose client",
|
||||
"Alege dată": "Choose date",
|
||||
"Alege dreptul concret pe care vrei să-l acorzi (GRANT) sau să-l refuzi (DENY) pentru acest utilizator, indiferent de rolul lui.": "Choose the specific permission you want to grant (GRANT) or deny (DENY) for this user, regardless of their role.",
|
||||
"Alege limbă": "Choose language",
|
||||
"Alege maistru": "Choose master",
|
||||
"Alege mecanic": "Choose mechanic",
|
||||
@@ -172,6 +177,7 @@
|
||||
"An fabricație": "Production year",
|
||||
"An model": "Model year",
|
||||
"An model (estimat)": "Model year (est.)",
|
||||
"Analitică": "Analytics",
|
||||
"Angajat din": "Employed since",
|
||||
"Ani": "Years",
|
||||
"Anonim": "Anonymous",
|
||||
@@ -205,6 +211,9 @@
|
||||
"Aprobat de": "Approved by",
|
||||
"Aprobat de client": "Approved by client",
|
||||
"Aprobă": "Approve",
|
||||
"Aprobă discount fără limită": "Approve discount without limit",
|
||||
"Aprobă discount ≤ 20%": "Approve discount ≤ 20%",
|
||||
"Aprobă discount ≤ 5%": "Approve discount ≤ 5%",
|
||||
"Arată": "Show",
|
||||
"Arhivat": "Archived",
|
||||
"Arhivează": "Archive",
|
||||
@@ -266,7 +275,7 @@
|
||||
"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.",
|
||||
"Bifează ce poate face acest rol. Modificările au efect imediat.": "Check what this role can do. Changes take effect immediately.",
|
||||
"Bifă": "Check",
|
||||
"Bine ai venit": "Welcome",
|
||||
"Blocat": "Blocked",
|
||||
@@ -307,6 +316,7 @@
|
||||
"Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori",
|
||||
"Calculație": "Quote",
|
||||
"Calculează luna curentă": "Calculate current month",
|
||||
"Calculează salarii": "Calculate salaries",
|
||||
"Calendar": "Calendar",
|
||||
"Calendar vizual": "Visual calendar",
|
||||
"Camion": "Truck",
|
||||
@@ -435,6 +445,8 @@
|
||||
"Condition": "Condition",
|
||||
"Condiții (toate trebuie îndeplinite)": "Conditions (all must match)",
|
||||
"Configurare:": "Setup:",
|
||||
"Configurează chei API pentru AI": "Configure AI API keys",
|
||||
"Configurează integrări externe": "Configure external integrations",
|
||||
"Configurează procentele pentru calcul salariu. Marja internă (nu TVA) se scade din prețul de manoperă pentru a determina baza salariului.": "Configure percentages for salary calculation. The internal margin (not VAT) is deducted from the labor price to determine salary base.",
|
||||
"Configurări": "Configuration",
|
||||
"Configurări avansate": "Advanced settings",
|
||||
@@ -494,6 +506,7 @@
|
||||
"Credit": "Credit",
|
||||
"Creează automat articolele noi în nomenclatură": "Auto-create new items in catalog",
|
||||
"Creează cerere": "Create lead",
|
||||
"Creează comandă de aprovizionare": "Create purchase order",
|
||||
"Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.",
|
||||
"Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.": "Creează un bot la @BotFather, lipește token-ul aici și apasă „Setează webhook\". Clienții îți scriu la bot, partajează telefonul, iar codul se leagă automat de fișa lor.",
|
||||
"Crescător": "Ascending",
|
||||
@@ -597,6 +610,7 @@
|
||||
"Descarcă": "Download",
|
||||
"Descarcă PDF": "Download PDF",
|
||||
"Descarcă QR (SVG)": "Download QR (SVG)",
|
||||
"Descarcă backup": "Download backup",
|
||||
"Descarcă factura": "Download invoice",
|
||||
"Descarcă template": "Download template",
|
||||
"Deschide": "Open",
|
||||
@@ -604,6 +618,7 @@
|
||||
"Deschide deal": "Open deal",
|
||||
"Deschide fișa": "Open order",
|
||||
"Deschide fișa pentru aprobare lucrare/piesă.": "Open the order to approve work/part.",
|
||||
"Deschide fișă nouă": "Open new order",
|
||||
"Deschide tenantul": "Deschide tenantul",
|
||||
"Deschide →": "Open →",
|
||||
"Deschis": "Opened",
|
||||
@@ -677,12 +692,19 @@
|
||||
"Edit": "Edit",
|
||||
"Editare": "Edit",
|
||||
"Editează": "Edit",
|
||||
"Editează client": "Edit client",
|
||||
"Editează cod echivalent": "Edit equivalent code",
|
||||
"Editează drepturi": "Edit permissions",
|
||||
"Editează excepția": "Edit override",
|
||||
"Editează fișă": "Edit order",
|
||||
"Editează furnizor": "Edit supplier",
|
||||
"Editează mașină": "Edit vehicle",
|
||||
"Editează piesă": "Edit part",
|
||||
"Editează piesă implicită": "Edit default part",
|
||||
"Editează produs": "Edit product",
|
||||
"Editează roluri & drepturi": "Edit roles & permissions",
|
||||
"Editează rând": "Edit row",
|
||||
"Editează setările companiei": "Edit company settings",
|
||||
"Efectuat": "Outgoing",
|
||||
"Eficiență": "Efficiency",
|
||||
"Electric": "Electric",
|
||||
@@ -735,6 +757,8 @@
|
||||
"Expiră la (opțional)": "Expires at (optional)",
|
||||
"Export": "Export",
|
||||
"Export CSV": "Export CSV",
|
||||
"Exportă clienți (CSV)": "Export clients (CSV)",
|
||||
"Exportă rapoarte financiare": "Export financial reports",
|
||||
"Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:": "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:",
|
||||
"Express": "Express",
|
||||
"Extrage datele din această factură. Răspunde DOAR cu obiectul JSON, fără text suplimentar și fără ```.": "Extrage datele din această factură. Răspunde DOAR cu obiectul JSON, fără text suplimentar și fără ```.",
|
||||
@@ -781,6 +805,7 @@
|
||||
"Fișă asociată": "Linked order",
|
||||
"Fișă de lucru": "Work order",
|
||||
"Fișă lucru": "Work order",
|
||||
"Folosește AI Assistant": "Use AI Assistant",
|
||||
"Folosește „Check-in depozit": "Use \"Check-in storage\"",
|
||||
"Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.",
|
||||
"Folosit dacă markup = 0.": "Used when markup = 0.",
|
||||
@@ -830,6 +855,8 @@
|
||||
"Generează raport": "Generate report",
|
||||
"Generează token": "Generate token",
|
||||
"Generez ZIP...": "Generez ZIP...",
|
||||
"Gestionează tokene API": "Manage API tokens",
|
||||
"Gestionează utilizatori (creează/blochează)": "Manage users (create/block)",
|
||||
"Global": "Global",
|
||||
"Gol — trage un card aici": "Empty — drop a card here",
|
||||
"Grafic": "Chart",
|
||||
@@ -1029,6 +1056,7 @@
|
||||
"Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).",
|
||||
"Marchează anulat": "Mark as cancelled",
|
||||
"Marchează plătit": "Mark as paid",
|
||||
"Marchează salariul ca plătit": "Mark salary as paid",
|
||||
"Marchează setul ca ridicat de client.": "Mark set as picked up by client.",
|
||||
"Marchează terminat": "Mark as done",
|
||||
"Marcă": "Brand",
|
||||
@@ -1531,6 +1559,7 @@
|
||||
"Recepționată parțial": "Partially received",
|
||||
"Recepționată total": "Fully received",
|
||||
"Recepționează": "Receive",
|
||||
"Recepționează marfă": "Receive goods",
|
||||
"Recomandat": "Recommended",
|
||||
"Recomandate": "Recommended",
|
||||
"Recomandă": "Recommend",
|
||||
@@ -1601,7 +1630,7 @@
|
||||
"Rolul principal — sincronizat automat cu drepturile RBAC.": "Primary role — automatically synced with RBAC permissions.",
|
||||
"Roluri suplimentare": "Additional roles",
|
||||
"Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Additional roles on top of the primary — permissions accumulate.",
|
||||
"Rolurile sistem (owner/admin/etc.) au numele blocat": "Rolurile sistem (owner/admin/etc.) au numele blocat",
|
||||
"Rolurile sistem (owner/admin/etc.) au numele blocat": "System roles (owner/admin/etc.) have locked names",
|
||||
"Română": "Romanian",
|
||||
"Rotire": "Rotate",
|
||||
"Roți": "Wheels",
|
||||
@@ -1643,6 +1672,7 @@
|
||||
"Scaner cod QR / Bare": "Scaner cod QR / Bare",
|
||||
"Scheduled at": "Scheduled at",
|
||||
"Schimb ulei + filtru": "Oil + filter change",
|
||||
"Schimbă statusul fișei": "Change order status",
|
||||
"Scoate din magazin": "Scoate din magazin",
|
||||
"Scrie mesajul tău...": "Type your message...",
|
||||
"Scule / consumabile": "Tools / consumables",
|
||||
@@ -1849,6 +1879,7 @@
|
||||
"Tip implicit": "Default type",
|
||||
"Tip jante": "Rim type",
|
||||
"Tipărește": "Print",
|
||||
"Tipărește / PDF fișă": "Print / PDF order",
|
||||
"Tipărește etichete QR": "Print QR labels",
|
||||
"Title": "Title",
|
||||
"To": "To",
|
||||
@@ -1998,9 +2029,24 @@
|
||||
"Verificat": "Verified",
|
||||
"Verifică emailul": "Check your email",
|
||||
"Verifică și amintește": "Verify and remind",
|
||||
"Vezi doar clienții proprii": "View only own clients",
|
||||
"Vezi doar fișele proprii asignate": "View only own assigned orders",
|
||||
"Vezi furnizori": "View suppliers",
|
||||
"Vezi imagine": "View image",
|
||||
"Vezi jurnalul de audit": "View audit log",
|
||||
"Vezi mai mult": "View more",
|
||||
"Vezi marja internă (baza de salariu)": "View internal margin (salary base)",
|
||||
"Vezi panou finanțe": "View finance overview",
|
||||
"Vezi profit & pierdere (P&L)": "View P&L",
|
||||
"Vezi propriul salariu": "View own salary",
|
||||
"Vezi rapoarte & analitică": "View reports & analytics",
|
||||
"Vezi salariile tuturor": "View all salaries",
|
||||
"Vezi stoc (piese)": "View stock (parts)",
|
||||
"Vezi toate fișele": "View all orders",
|
||||
"Vezi toate mașinile": "View all vehicles",
|
||||
"Vezi tot": "View all",
|
||||
"Vezi toți clienții": "View all clients",
|
||||
"Vezi utilizatori": "View users",
|
||||
"Viber": "Viber",
|
||||
"View": "View",
|
||||
"Viitoare": "Viitoare",
|
||||
@@ -2339,8 +2385,10 @@
|
||||
"Încărcare service": "Workshop load",
|
||||
"Înregistrare": "Register",
|
||||
"Înregistrat": "Registered",
|
||||
"Înregistrează cheltuială": "Record expense",
|
||||
"Înregistrează lucrări de tinichigerie, vopsitorie, PDR, detailing, ceramică, PPF sau polish. Hartă daune, dosar asigurare și arhivă foto înainte/după.": "Înregistrează lucrări de tinichigerie, vopsitorie, PDR, detailing, ceramică, PPF sau polish. Hartă daune, dosar asigurare și arhivă foto înainte/după.",
|
||||
"Înregistrează lucrările trimise la ateliere externe (turbo, cutii, vopsitorie). Costul terțului + markup intră automat în totalul fișei asociate.": "Register jobs sent to external workshops (turbo, gearboxes, paint). Subcontractor cost + markup automatically add up in the linked order total.",
|
||||
"Înregistrează plată": "Record payment",
|
||||
"Înregistrează seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.": "Register clients' tire sets and manage seasonal storage (tire hotel). Track wear, TPMS and warehouse location.",
|
||||
"Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...": "Ask me anything — diagnostics, summary, suggestions, drafting client messages...",
|
||||
"Șabloane servicii": "Service templates",
|
||||
@@ -2349,8 +2397,14 @@
|
||||
"Șablon serviciu": "Service template",
|
||||
"Șablonul nu are rânduri": "Template has no rows",
|
||||
"Șterge": "Delete",
|
||||
"Șterge client": "Delete client",
|
||||
"Șterge conversația?": "Delete conversation?",
|
||||
"Șterge fișă": "Delete order",
|
||||
"Șterge furnizor": "Delete supplier",
|
||||
"Șterge imagine": "Delete image",
|
||||
"Șterge mașină": "Delete vehicle",
|
||||
"Șterge piesă": "Delete part",
|
||||
"Șterge plată": "Delete payment",
|
||||
"Șterge produs": "Delete product",
|
||||
"Șterge rând": "Delete row",
|
||||
"Șterge selectate": "Delete selected",
|
||||
|
||||
Reference in New Issue
Block a user