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:
2026-07-18 11:16:21 +00:00
parent af0327d27d
commit 49b491a7bd
4 changed files with 185 additions and 7 deletions
+59
View File
@@ -132,6 +132,65 @@ class Permissions
]; ];
} }
/** Human-readable label for each permission slug. Used by role editor + audit UI. */
public static function permissionLabels(): array
{
return [
'clients.view_all' => 'Vezi toți clienții',
'clients.view_own' => 'Vezi doar clienții proprii',
'clients.create' => 'Adaugă client',
'clients.edit' => 'Editează client',
'clients.delete' => 'Șterge client',
'clients.export' => 'Exportă clienți (CSV)',
'vehicles.view_all' => 'Vezi toate mașinile',
'vehicles.create' => 'Adaugă mașină',
'vehicles.edit' => 'Editează mașină',
'vehicles.delete' => 'Șterge mașină',
'work_orders.view_all' => 'Vezi toate fișele',
'work_orders.view_own_assigned' => 'Vezi doar fișele proprii asignate',
'work_orders.create' => 'Deschide fișă nouă',
'work_orders.edit' => 'Editează fișă',
'work_orders.delete' => 'Șterge fișă',
'work_orders.change_status' => 'Schimbă statusul fișei',
'work_orders.approve_discount_5' => 'Aprobă discount ≤ 5%',
'work_orders.approve_discount_20' => 'Aprobă discount ≤ 20%',
'work_orders.approve_discount_any' => 'Aprobă discount fără limită',
'work_orders.print' => 'Tipărește / PDF fișă',
'finance.view_overview' => 'Vezi panou finanțe',
'finance.view_pl' => 'Vezi profit & pierdere (P&L)',
'finance.view_internal_margin' => 'Vezi marja internă (baza de salariu)',
'finance.create_payment' => 'Înregistrează plată',
'finance.delete_payment' => 'Șterge plată',
'finance.create_expense' => 'Înregistrează cheltuială',
'finance.export' => 'Exportă rapoarte financiare',
'salaries.view_own' => 'Vezi propriul salariu',
'salaries.view_all' => 'Vezi salariile tuturor',
'salaries.calculate' => 'Calculează salarii',
'salaries.mark_paid' => 'Marchează salariul ca plătit',
'inventory.view' => 'Vezi stoc (piese)',
'inventory.create_part' => 'Adaugă piesă în catalog',
'inventory.edit_part' => 'Editează piesă',
'inventory.delete_part' => 'Șterge piesă',
'inventory.adjust_stock' => 'Ajustează stocul manual',
'inventory.create_purchase' => 'Creează comandă de aprovizionare',
'inventory.receive_goods' => 'Recepționează marfă',
'suppliers.view' => 'Vezi furnizori',
'suppliers.edit' => 'Editează furnizor',
'suppliers.delete' => 'Șterge furnizor',
'admin.users.view' => 'Vezi utilizatori',
'admin.users.manage' => 'Gestionează utilizatori (creează/blochează)',
'admin.roles.manage' => 'Editează roluri & drepturi',
'admin.settings.edit' => 'Editează setările companiei',
'admin.settings.integrations' => 'Configurează integrări externe',
'admin.api_tokens.manage' => 'Gestionează tokene API',
'admin.audit_log.view' => 'Vezi jurnalul de audit',
'admin.backup.download' => 'Descarcă backup',
'ai_assistant.use' => 'Folosește AI Assistant',
'ai_assistant.configure_keys' => 'Configurează chei API pentru AI',
'analytics.view' => 'Vezi rapoarte & analitică',
];
}
/** /**
* Role-permission matrix per TZ §2.4. * Role-permission matrix per TZ §2.4.
* Returns: ['owner' => [perm1, perm2, ...], ...] * Returns: ['owner' => [perm1, perm2, ...], ...]
@@ -35,7 +35,14 @@ class PermissionOverridesRelationManager extends RelationManager
->label(__('Drept')) ->label(__('Drept'))
->required() ->required()
->searchable() ->searchable()
->options(fn () => Permission::orderBy('name')->pluck('name', 'id')) ->options(function () {
$labels = Permissions::permissionLabels();
return Permission::orderBy('name')->get()
->mapWithKeys(fn ($p) => [
$p->id => ($labels[$p->name] ? __($labels[$p->name]) . " ({$p->name})" : $p->name),
])->all();
})
->helperText(__('Alege dreptul concret pe care vrei să-l acorzi (GRANT) sau să-l refuzi (DENY) pentru acest utilizator, indiferent de rolul lui.'))
->columnSpanFull(), ->columnSpanFull(),
Forms\Components\Select::make('mode') Forms\Components\Select::make('mode')
->required() ->required()
@@ -61,7 +68,11 @@ class PermissionOverridesRelationManager extends RelationManager
Tables\Columns\TextColumn::make('permission.name') Tables\Columns\TextColumn::make('permission.name')
->label(__('Drept')) ->label(__('Drept'))
->searchable() ->searchable()
->sortable(), ->sortable()
->formatStateUsing(function ($state) {
$labels = Permissions::permissionLabels();
return isset($labels[$state]) ? __($labels[$state]) . " ({$state})" : $state;
}),
Tables\Columns\TextColumn::make('mode') Tables\Columns\TextColumn::make('mode')
->badge() ->badge()
->colors(['success' => 'grant', 'danger' => 'deny']) ->colors(['success' => 'grant', 'danger' => 'deny'])
+56 -2
View File
@@ -108,11 +108,13 @@
"Adaugă imagine": "Add image", "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ă 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ș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ă 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ă 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ă 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ă": "Add part",
"Adaugă piesă implicită": "Add default part", "Adaugă piesă implicită": "Add default part",
"Adaugă piesă în catalog": "Add part to catalog",
"Adaugă plată": "Add payment", "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 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.", "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", "Adaugă vehicul": "Add vehicle",
"Address": "Address", "Address": "Address",
"Admin tenant (la creare)": "Admin tenant (la creare)", "Admin tenant (la creare)": "Admin tenant (la creare)",
"Administrare": "Administration",
"Administrator": "Administrator", "Administrator": "Administrator",
"Adresă": "Address", "Adresă": "Address",
"Adresă IP": "IP address", "Adresă IP": "IP address",
@@ -141,11 +144,13 @@
"Ai uitat parola?": "Forgot password?", "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 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.", "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", "Ale mele": "Mine",
"Aleatoriu": "Random", "Aleatoriu": "Random",
"Alege categorie": "Choose category", "Alege categorie": "Choose category",
"Alege client": "Choose client", "Alege client": "Choose client",
"Alege dată": "Choose date", "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 limbă": "Choose language",
"Alege maistru": "Choose master", "Alege maistru": "Choose master",
"Alege mecanic": "Choose mechanic", "Alege mecanic": "Choose mechanic",
@@ -172,6 +177,7 @@
"An fabricație": "Production year", "An fabricație": "Production year",
"An model": "Model year", "An model": "Model year",
"An model (estimat)": "Model year (est.)", "An model (estimat)": "Model year (est.)",
"Analitică": "Analytics",
"Angajat din": "Employed since", "Angajat din": "Employed since",
"Ani": "Years", "Ani": "Years",
"Anonim": "Anonymous", "Anonim": "Anonymous",
@@ -205,6 +211,9 @@
"Aprobat de": "Approved by", "Aprobat de": "Approved by",
"Aprobat de client": "Approved by client", "Aprobat de client": "Approved by client",
"Aprobă": "Approve", "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", "Arată": "Show",
"Arhivat": "Archived", "Arhivat": "Archived",
"Arhivează": "Archive", "Arhivează": "Archive",
@@ -266,7 +275,7 @@
"Beneficiar:": "Beneficiar:", "Beneficiar:": "Beneficiar:",
"Benzină": "Petrol", "Benzină": "Petrol",
"Berlină": "Sedan", "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", "Bifă": "Check",
"Bine ai venit": "Welcome", "Bine ai venit": "Welcome",
"Blocat": "Blocked", "Blocat": "Blocked",
@@ -307,6 +316,7 @@
"Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori",
"Calculație": "Quote", "Calculație": "Quote",
"Calculează luna curentă": "Calculate current month", "Calculează luna curentă": "Calculate current month",
"Calculează salarii": "Calculate salaries",
"Calendar": "Calendar", "Calendar": "Calendar",
"Calendar vizual": "Visual calendar", "Calendar vizual": "Visual calendar",
"Camion": "Truck", "Camion": "Truck",
@@ -435,6 +445,8 @@
"Condition": "Condition", "Condition": "Condition",
"Condiții (toate trebuie îndeplinite)": "Conditions (all must match)", "Condiții (toate trebuie îndeplinite)": "Conditions (all must match)",
"Configurare:": "Setup:", "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.", "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": "Configuration",
"Configurări avansate": "Advanced settings", "Configurări avansate": "Advanced settings",
@@ -494,6 +506,7 @@
"Credit": "Credit", "Credit": "Credit",
"Creează automat articolele noi în nomenclatură": "Auto-create new items in catalog", "Creează automat articolele noi în nomenclatură": "Auto-create new items in catalog",
"Creează cerere": "Create lead", "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ă 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.", "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", "Crescător": "Ascending",
@@ -597,6 +610,7 @@
"Descarcă": "Download", "Descarcă": "Download",
"Descarcă PDF": "Download PDF", "Descarcă PDF": "Download PDF",
"Descarcă QR (SVG)": "Download QR (SVG)", "Descarcă QR (SVG)": "Download QR (SVG)",
"Descarcă backup": "Download backup",
"Descarcă factura": "Download invoice", "Descarcă factura": "Download invoice",
"Descarcă template": "Download template", "Descarcă template": "Download template",
"Deschide": "Open", "Deschide": "Open",
@@ -604,6 +618,7 @@
"Deschide deal": "Open deal", "Deschide deal": "Open deal",
"Deschide fișa": "Open order", "Deschide fișa": "Open order",
"Deschide fișa pentru aprobare lucrare/piesă.": "Open the order to approve work/part.", "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 tenantul": "Deschide tenantul",
"Deschide →": "Open →", "Deschide →": "Open →",
"Deschis": "Opened", "Deschis": "Opened",
@@ -677,12 +692,19 @@
"Edit": "Edit", "Edit": "Edit",
"Editare": "Edit", "Editare": "Edit",
"Editează": "Edit", "Editează": "Edit",
"Editează client": "Edit client",
"Editează cod echivalent": "Edit equivalent code", "Editează cod echivalent": "Edit equivalent code",
"Editează drepturi": "Edit permissions", "Editează drepturi": "Edit permissions",
"Editează excepția": "Edit override", "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ă piesă implicită": "Edit default part",
"Editează produs": "Edit product", "Editează produs": "Edit product",
"Editează roluri & drepturi": "Edit roles & permissions",
"Editează rând": "Edit row", "Editează rând": "Edit row",
"Editează setările companiei": "Edit company settings",
"Efectuat": "Outgoing", "Efectuat": "Outgoing",
"Eficiență": "Efficiency", "Eficiență": "Efficiency",
"Electric": "Electric", "Electric": "Electric",
@@ -735,6 +757,8 @@
"Expiră la (opțional)": "Expires at (optional)", "Expiră la (opțional)": "Expires at (optional)",
"Export": "Export", "Export": "Export",
"Export CSV": "Export CSV", "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:", "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", "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ă ```.", "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șă asociată": "Linked order",
"Fișă de lucru": "Work order", "Fișă de lucru": "Work order",
"Fișă 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": "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.", "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.", "Folosit dacă markup = 0.": "Used when markup = 0.",
@@ -830,6 +855,8 @@
"Generează raport": "Generate report", "Generează raport": "Generate report",
"Generează token": "Generate token", "Generează token": "Generate token",
"Generez ZIP...": "Generez ZIP...", "Generez ZIP...": "Generez ZIP...",
"Gestionează tokene API": "Manage API tokens",
"Gestionează utilizatori (creează/blochează)": "Manage users (create/block)",
"Global": "Global", "Global": "Global",
"Gol — trage un card aici": "Empty — drop a card here", "Gol — trage un card aici": "Empty — drop a card here",
"Grafic": "Chart", "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ă 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ă anulat": "Mark as cancelled",
"Marchează plătit": "Mark as paid", "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ă setul ca ridicat de client.": "Mark set as picked up by client.",
"Marchează terminat": "Mark as done", "Marchează terminat": "Mark as done",
"Marcă": "Brand", "Marcă": "Brand",
@@ -1531,6 +1559,7 @@
"Recepționată parțial": "Partially received", "Recepționată parțial": "Partially received",
"Recepționată total": "Fully received", "Recepționată total": "Fully received",
"Recepționează": "Receive", "Recepționează": "Receive",
"Recepționează marfă": "Receive goods",
"Recomandat": "Recommended", "Recomandat": "Recommended",
"Recomandate": "Recommended", "Recomandate": "Recommended",
"Recomandă": "Recommend", "Recomandă": "Recommend",
@@ -1601,7 +1630,7 @@
"Rolul principal — sincronizat automat cu drepturile RBAC.": "Primary role — automatically synced with RBAC permissions.", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Primary role — automatically synced with RBAC permissions.",
"Roluri suplimentare": "Additional roles", "Roluri suplimentare": "Additional roles",
"Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Additional roles on top of the primary — permissions accumulate.", "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", "Română": "Romanian",
"Rotire": "Rotate", "Rotire": "Rotate",
"Roți": "Wheels", "Roți": "Wheels",
@@ -1643,6 +1672,7 @@
"Scaner cod QR / Bare": "Scaner cod QR / Bare", "Scaner cod QR / Bare": "Scaner cod QR / Bare",
"Scheduled at": "Scheduled at", "Scheduled at": "Scheduled at",
"Schimb ulei + filtru": "Oil + filter change", "Schimb ulei + filtru": "Oil + filter change",
"Schimbă statusul fișei": "Change order status",
"Scoate din magazin": "Scoate din magazin", "Scoate din magazin": "Scoate din magazin",
"Scrie mesajul tău...": "Type your message...", "Scrie mesajul tău...": "Type your message...",
"Scule / consumabile": "Tools / consumables", "Scule / consumabile": "Tools / consumables",
@@ -1849,6 +1879,7 @@
"Tip implicit": "Default type", "Tip implicit": "Default type",
"Tip jante": "Rim type", "Tip jante": "Rim type",
"Tipărește": "Print", "Tipărește": "Print",
"Tipărește / PDF fișă": "Print / PDF order",
"Tipărește etichete QR": "Print QR labels", "Tipărește etichete QR": "Print QR labels",
"Title": "Title", "Title": "Title",
"To": "To", "To": "To",
@@ -1998,9 +2029,24 @@
"Verificat": "Verified", "Verificat": "Verified",
"Verifică emailul": "Check your email", "Verifică emailul": "Check your email",
"Verifică și amintește": "Verify and remind", "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 imagine": "View image",
"Vezi jurnalul de audit": "View audit log",
"Vezi mai mult": "View more", "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 tot": "View all",
"Vezi toți clienții": "View all clients",
"Vezi utilizatori": "View users",
"Viber": "Viber", "Viber": "Viber",
"View": "View", "View": "View",
"Viitoare": "Viitoare", "Viitoare": "Viitoare",
@@ -2339,8 +2385,10 @@
"Încărcare service": "Workshop load", "Încărcare service": "Workshop load",
"Înregistrare": "Register", "Înregistrare": "Register",
"Înregistrat": "Registered", "Î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ă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ă 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.", "Î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...", "Î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", "Șabloane servicii": "Service templates",
@@ -2349,8 +2397,14 @@
"Șablon serviciu": "Service template", "Șablon serviciu": "Service template",
"Șablonul nu are rânduri": "Template has no rows", "Șablonul nu are rânduri": "Template has no rows",
"Șterge": "Delete", "Șterge": "Delete",
"Șterge client": "Delete client",
"Șterge conversația?": "Delete conversation?", "Șterge conversația?": "Delete conversation?",
"Șterge fișă": "Delete order",
"Șterge furnizor": "Delete supplier",
"Șterge imagine": "Delete image", "Șterge imagine": "Delete image",
"Șterge mașină": "Delete vehicle",
"Șterge piesă": "Delete part",
"Șterge plată": "Delete payment",
"Șterge produs": "Delete product", "Șterge produs": "Delete product",
"Șterge rând": "Delete row", "Șterge rând": "Delete row",
"Șterge selectate": "Delete selected", "Șterge selectate": "Delete selected",
+57 -3
View File
@@ -108,11 +108,13 @@
"Adaugă imagine": "Добавить изображение", "Adaugă imagine": "Добавить изображение",
"Adaugă manopere și piese care se aplică împreună când selectezi acest șablon pe o fișă.": "Добавьте работы и запчасти, которые применяются вместе при выборе этого шаблона в наряде.", "Adaugă manopere și piese care se aplică împreună când selectezi acest șablon pe o fișă.": "Добавьте работы и запчасти, которые применяются вместе при выборе этого шаблона в наряде.",
"Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.": "Добавляйте авто вручную или импортируйте из CSV. Используйте поиск VIN для быстрого декодера и авто-заполнения марка/модель/год.", "Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.": "Добавляйте авто вручную или импортируйте из CSV. Используйте поиск VIN для быстрого декодера и авто-заполнения марка/модель/год.",
"Adaugă mașină": "Добавить авто",
"Adaugă notă": "Добавить заметку", "Adaugă notă": "Добавить заметку",
"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ă 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.": "Добавьте запчасти, которые обычно устанавливаются в этой работе — они автоматически добавятся в наряд при выборе работы.", "Adaugă piesele care se montează de obicei la această manoperă — se adaugă automat în fișă când selectezi manopera.": "Добавьте запчасти, которые обычно устанавливаются в этой работе — они автоматически добавятся в наряд при выборе работы.",
"Adaugă piesă": "Добавить запчасть", "Adaugă piesă": "Добавить запчасть",
"Adaugă piesă implicită": "Добавить запчасть по умолчанию", "Adaugă piesă implicită": "Добавить запчасть по умолчанию",
"Adaugă piesă în catalog": "Добавить запчасть в каталог",
"Adaugă plată": "Добавить платёж", "Adaugă plată": "Добавить платёж",
"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 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.", "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": "Добавить транспорт", "Adaugă vehicul": "Добавить транспорт",
"Address": "Адрес", "Address": "Адрес",
"Admin tenant (la creare)": "Admin tenant (la creare)", "Admin tenant (la creare)": "Admin tenant (la creare)",
"Administrare": "Администрирование",
"Administrator": "Администратор", "Administrator": "Администратор",
"Adresă": "Адрес", "Adresă": "Адрес",
"Adresă IP": "IP-адрес", "Adresă IP": "IP-адрес",
@@ -141,11 +144,13 @@
"Ai uitat parola?": "Забыли пароль?", "Ai uitat parola?": "Забыли пароль?",
"Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".": "Aici apar cererile clienților potențiali. Convertește-le în deal-uri sau direct în programări de la butonul „Convertește\".", "Aici apar 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).": "Здесь появляются клиенты, зарегистрировавшиеся в интернет-магазине (/shop/register).", "Aici apar clienții care și-au creat cont în magazinul online (/shop/register).": "Здесь появляются клиенты, зарегистрировавшиеся в интернет-магазине (/shop/register).",
"Ajustează stocul manual": "Ручная корректировка остатка",
"Ale mele": "Мои", "Ale mele": "Мои",
"Aleatoriu": "Случайно", "Aleatoriu": "Случайно",
"Alege categorie": "Выбрать категорию", "Alege categorie": "Выбрать категорию",
"Alege client": "Выбрать клиента", "Alege client": "Выбрать клиента",
"Alege dată": "Выбрать дату", "Alege dată": "Выбрать дату",
"Alege dreptul concret pe care vrei să-l acorzi (GRANT) sau să-l refuzi (DENY) pentru acest utilizator, indiferent de rolul lui.": "Выберите конкретное право, которое хотите предоставить (GRANT) или запретить (DENY) для этого пользователя, независимо от его роли.",
"Alege limbă": "Выбрать язык", "Alege limbă": "Выбрать язык",
"Alege maistru": "Выбрать мастера", "Alege maistru": "Выбрать мастера",
"Alege mecanic": "Выбрать механика", "Alege mecanic": "Выбрать механика",
@@ -172,6 +177,7 @@
"An fabricație": "Год выпуска", "An fabricație": "Год выпуска",
"An model": "Модельный год", "An model": "Модельный год",
"An model (estimat)": "Модельный год (оценка)", "An model (estimat)": "Модельный год (оценка)",
"Analitică": "Аналитика",
"Angajat din": "Работает с", "Angajat din": "Работает с",
"Ani": "Годы", "Ani": "Годы",
"Anonim": "Аноним", "Anonim": "Аноним",
@@ -205,6 +211,9 @@
"Aprobat de": "Утверждено", "Aprobat de": "Утверждено",
"Aprobat de client": "Одобрено клиентом", "Aprobat de client": "Одобрено клиентом",
"Aprobă": "Утвердить", "Aprobă": "Утвердить",
"Aprobă discount fără limită": "Одобрить скидку без лимита",
"Aprobă discount ≤ 20%": "Одобрить скидку ≤ 20%",
"Aprobă discount ≤ 5%": "Одобрить скидку ≤ 5%",
"Arată": "Показать", "Arată": "Показать",
"Arhivat": "В архиве", "Arhivat": "В архиве",
"Arhivează": "В архив", "Arhivează": "В архив",
@@ -266,7 +275,7 @@
"Beneficiar:": "Beneficiar:", "Beneficiar:": "Beneficiar:",
"Benzină": "Бензин", "Benzină": "Бензин",
"Berlină": "Седан", "Berlină": "Седан",
"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.": "Отметьте, что может делать эта роль. Изменения вступают в силу сразу.",
"Bifă": "Флажок", "Bifă": "Флажок",
"Bine ai venit": "Добро пожаловать", "Bine ai venit": "Добро пожаловать",
"Blocat": "Заблокировано", "Blocat": "Заблокировано",
@@ -307,6 +316,7 @@
"Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori",
"Calculație": "Расчёт", "Calculație": "Расчёт",
"Calculează luna curentă": "Рассчитать текущий месяц", "Calculează luna curentă": "Рассчитать текущий месяц",
"Calculează salarii": "Расчёт зарплат",
"Calendar": "Календарь", "Calendar": "Календарь",
"Calendar vizual": "Визуальный календарь", "Calendar vizual": "Визуальный календарь",
"Camion": "Грузовик", "Camion": "Грузовик",
@@ -435,6 +445,8 @@
"Condition": "Состояние", "Condition": "Состояние",
"Condiții (toate trebuie îndeplinite)": "Условия (все должны выполняться)", "Condiții (toate trebuie îndeplinite)": "Условия (все должны выполняться)",
"Configurare:": "Настройка:", "Configurare:": "Настройка:",
"Configurează chei API pentru AI": "Настройка API-ключей для AI",
"Configurează integrări externe": "Настройка внешних интеграций",
"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": "Конфигурация",
"Configurări avansate": "Расширенная конфигурация", "Configurări avansate": "Расширенная конфигурация",
@@ -494,6 +506,7 @@
"Credit": "Кредит", "Credit": "Кредит",
"Creează automat articolele noi în nomenclatură": "Автоматически создавать новые артикулы", "Creează automat articolele noi în nomenclatură": "Автоматически создавать новые артикулы",
"Creează cerere": "Создать заявку", "Creează cerere": "Создать заявку",
"Creează comandă de aprovizionare": "Создать заказ на закупку",
"Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.": "Creează planuri (ex: Free, Basic, Pro) și atribuie-le companiilor.", "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.", "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": "По возрастанию", "Crescător": "По возрастанию",
@@ -597,6 +610,7 @@
"Descarcă": "Скачать", "Descarcă": "Скачать",
"Descarcă PDF": "Скачать PDF", "Descarcă PDF": "Скачать PDF",
"Descarcă QR (SVG)": "Скачать QR (SVG)", "Descarcă QR (SVG)": "Скачать QR (SVG)",
"Descarcă backup": "Скачать бэкап",
"Descarcă factura": "Скачать счёт", "Descarcă factura": "Скачать счёт",
"Descarcă template": "Скачать шаблон", "Descarcă template": "Скачать шаблон",
"Deschide": "Открыть", "Deschide": "Открыть",
@@ -604,6 +618,7 @@
"Deschide deal": "Открыть сделку", "Deschide deal": "Открыть сделку",
"Deschide fișa": "Открыть наряд", "Deschide fișa": "Открыть наряд",
"Deschide fișa pentru aprobare lucrare/piesă.": "Откройте наряд для одобрения работы/запчасти.", "Deschide fișa pentru aprobare lucrare/piesă.": "Откройте наряд для одобрения работы/запчасти.",
"Deschide fișă nouă": "Открыть новый наряд",
"Deschide tenantul": "Deschide tenantul", "Deschide tenantul": "Deschide tenantul",
"Deschide →": "Открыть →", "Deschide →": "Открыть →",
"Deschis": "Открыт", "Deschis": "Открыт",
@@ -677,12 +692,19 @@
"Edit": "Изменить", "Edit": "Изменить",
"Editare": "Изменить", "Editare": "Изменить",
"Editează": "Изменить", "Editează": "Изменить",
"Editează client": "Изменить клиента",
"Editează cod echivalent": "Изменить эквивалентный код", "Editează cod echivalent": "Изменить эквивалентный код",
"Editează drepturi": "Изменить права", "Editează drepturi": "Изменить права",
"Editează excepția": "Изменить исключение", "Editează excepția": "Изменить исключение",
"Editează fișă": "Изменить наряд",
"Editează furnizor": "Изменить поставщика",
"Editează mașină": "Изменить авто",
"Editează piesă": "Изменить запчасть",
"Editează piesă implicită": "Изменить запчасть по умолчанию", "Editează piesă implicită": "Изменить запчасть по умолчанию",
"Editează produs": "Изменить товар", "Editează produs": "Изменить товар",
"Editează roluri & drepturi": "Изменение ролей и прав",
"Editează rând": "Изменить строку", "Editează rând": "Изменить строку",
"Editează setările companiei": "Изменение настроек компании",
"Efectuat": "Исходящий", "Efectuat": "Исходящий",
"Eficiență": "Эффективность", "Eficiență": "Эффективность",
"Electric": "Электро", "Electric": "Электро",
@@ -735,6 +757,8 @@
"Expiră la (opțional)": "Истекает (опционально)", "Expiră la (opțional)": "Истекает (опционально)",
"Export": "Экспорт", "Export": "Экспорт",
"Export CSV": "Экспорт CSV", "Export CSV": "Экспорт CSV",
"Exportă clienți (CSV)": "Экспорт клиентов (CSV)",
"Exportă rapoarte financiare": "Экспорт финансовых отчётов",
"Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:": "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:", "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ă ```.", "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ă": "Связанный наряд", "Fișă asociată": "Связанный наряд",
"Fișă de lucru": "Заказ-наряд", "Fișă de lucru": "Заказ-наряд",
"Fișă lucru": "Заказ-наряд", "Fișă lucru": "Заказ-наряд",
"Folosește AI Assistant": "Использовать AI Assistant",
"Folosește „Check-in depozit": "Используйте «Приёмка на склад»", "Folosește „Check-in depozit": "Используйте «Приёмка на склад»",
"Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.": "Folosește „Check-in depozit\" pe set pentru a înregistra prima depozitare.", "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.": "Используется если наценка = 0.", "Folosit dacă markup = 0.": "Используется если наценка = 0.",
@@ -830,6 +855,8 @@
"Generează raport": "Сгенерировать отчёт", "Generează raport": "Сгенерировать отчёт",
"Generează token": "Создать токен", "Generează token": "Создать токен",
"Generez ZIP...": "Generez ZIP...", "Generez ZIP...": "Generez ZIP...",
"Gestionează tokene API": "Управление API-токенами",
"Gestionează utilizatori (creează/blochează)": "Управление пользователями (создание/блокировка)",
"Global": "Глобально", "Global": "Глобально",
"Gol — trage un card aici": "Пусто — перетащите карточку сюда", "Gol — trage un card aici": "Пусто — перетащите карточку сюда",
"Grafic": "График", "Grafic": "График",
@@ -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ă acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).",
"Marchează anulat": "Отметить как отменено", "Marchează anulat": "Отметить как отменено",
"Marchează plătit": "Отметить как оплачено", "Marchează plătit": "Отметить как оплачено",
"Marchează salariul ca plătit": "Отметить зарплату оплаченной",
"Marchează setul ca ridicat de client.": "Отметить комплект как выданный клиенту.", "Marchează setul ca ridicat de client.": "Отметить комплект как выданный клиенту.",
"Marchează terminat": "Отметить как готовое", "Marchează terminat": "Отметить как готовое",
"Marcă": "Марка", "Marcă": "Марка",
@@ -1531,6 +1559,7 @@
"Recepționată parțial": "Частично принята", "Recepționată parțial": "Частично принята",
"Recepționată total": "Полностью принята", "Recepționată total": "Полностью принята",
"Recepționează": "Принять", "Recepționează": "Принять",
"Recepționează marfă": "Приёмка товара",
"Recomandat": "Рекомендуется", "Recomandat": "Рекомендуется",
"Recomandate": "Рекомендуемые", "Recomandate": "Рекомендуемые",
"Recomandă": "Рекомендуется", "Recomandă": "Рекомендуется",
@@ -1601,7 +1630,7 @@
"Rolul principal — sincronizat automat cu drepturile RBAC.": "Основная роль — автоматически синхронизирована с правами RBAC.", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Основная роль — автоматически синхронизирована с правами RBAC.",
"Roluri suplimentare": "Доп. роли", "Roluri suplimentare": "Доп. роли",
"Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Дополнительные роли поверх основной — права суммируются.", "Roluri suplimentare peste rolul primar — drepturile se cumulează.": "Дополнительные роли поверх основной — права суммируются.",
"Rolurile sistem (owner/admin/etc.) au numele blocat": "Rolurile sistem (owner/admin/etc.) au numele blocat", "Rolurile sistem (owner/admin/etc.) au numele blocat": "Системные роли (owner/admin/и т.д.) имеют заблокированное имя",
"Română": "Румынский", "Română": "Румынский",
"Rotire": "Поворот", "Rotire": "Поворот",
"Roți": "Колёса", "Roți": "Колёса",
@@ -1643,6 +1672,7 @@
"Scaner cod QR / Bare": "Scaner cod QR / Bare", "Scaner cod QR / Bare": "Scaner cod QR / Bare",
"Scheduled at": "Запланировано", "Scheduled at": "Запланировано",
"Schimb ulei + filtru": "Замена масла + фильтр", "Schimb ulei + filtru": "Замена масла + фильтр",
"Schimbă statusul fișei": "Изменить статус наряда",
"Scoate din magazin": "Scoate din magazin", "Scoate din magazin": "Scoate din magazin",
"Scrie mesajul tău...": "Введите ваше сообщение...", "Scrie mesajul tău...": "Введите ваше сообщение...",
"Scule / consumabile": "Инструменты / расходники", "Scule / consumabile": "Инструменты / расходники",
@@ -1742,7 +1772,7 @@
"Status dosar": "Status dosar", "Status dosar": "Status dosar",
"Status implicit": "Статус по умолчанию", "Status implicit": "Статус по умолчанию",
"Status:": "Статус:", "Status:": "Статус:",
"Stoc": "Остаток", "Stoc": "Склад",
"Stoc adăugat": "Stoc adăugat", "Stoc adăugat": "Stoc adăugat",
"Stoc minim": "Stoc minim", "Stoc minim": "Stoc minim",
"Stoc minim atins": "Достигнут мин. остаток", "Stoc minim atins": "Достигнут мин. остаток",
@@ -1849,6 +1879,7 @@
"Tip implicit": "Тип по умолчанию", "Tip implicit": "Тип по умолчанию",
"Tip jante": "Тип дисков", "Tip jante": "Тип дисков",
"Tipărește": "Печать", "Tipărește": "Печать",
"Tipărește / PDF fișă": "Печать / PDF наряда",
"Tipărește etichete QR": "Печать QR-этикеток", "Tipărește etichete QR": "Печать QR-этикеток",
"Title": "Название", "Title": "Название",
"To": "До", "To": "До",
@@ -1998,9 +2029,24 @@
"Verificat": "Проверено", "Verificat": "Проверено",
"Verifică emailul": "Проверьте email", "Verifică emailul": "Проверьте email",
"Verifică și amintește": "Проверить и напомнить", "Verifică și amintește": "Проверить и напомнить",
"Vezi doar clienții proprii": "Просмотр только своих клиентов",
"Vezi doar fișele proprii asignate": "Просмотр только своих нарядов",
"Vezi furnizori": "Просмотр поставщиков",
"Vezi imagine": "Просмотр изображения", "Vezi imagine": "Просмотр изображения",
"Vezi jurnalul de audit": "Просмотр журнала аудита",
"Vezi mai mult": "Смотреть больше", "Vezi mai mult": "Смотреть больше",
"Vezi marja internă (baza de salariu)": "Просмотр внутренней маржи (базы зарплаты)",
"Vezi panou finanțe": "Просмотр финансов",
"Vezi profit & pierdere (P&L)": "Просмотр P&L",
"Vezi propriul salariu": "Просмотр своей зарплаты",
"Vezi rapoarte & analitică": "Просмотр отчётов и аналитики",
"Vezi salariile tuturor": "Просмотр зарплат всех",
"Vezi stoc (piese)": "Просмотр склада (запчасти)",
"Vezi toate fișele": "Просмотр всех нарядов",
"Vezi toate mașinile": "Просмотр всех авто",
"Vezi tot": "Смотреть все", "Vezi tot": "Смотреть все",
"Vezi toți clienții": "Просмотр всех клиентов",
"Vezi utilizatori": "Просмотр пользователей",
"Viber": "Viber", "Viber": "Viber",
"View": "Просмотр", "View": "Просмотр",
"Viitoare": "Viitoare", "Viitoare": "Viitoare",
@@ -2339,8 +2385,10 @@
"Încărcare service": "Загрузка сервиса", "Încărcare service": "Загрузка сервиса",
"Înregistrare": "Регистрация", "Înregistrare": "Регистрация",
"Înregistrat": "Зарегистрирован", "Înregistrat": "Зарегистрирован",
"Înregistrează cheltuială": "Регистрация расхода",
"Î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ă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.": "Регистрируйте работы, отправленные в сторонние мастерские (турбина, коробки, покраска). Стоимость субподрядчика + наценка автоматически входят в сумму связанного наряда.", "Înregistrează lucrările trimise la ateliere externe (turbo, cutii, vopsitorie). Costul terțului + markup intră automat în totalul fișei asociate.": "Регистрируйте работы, отправленные в сторонние мастерские (турбина, коробки, покраска). Стоимость субподрядчика + наценка автоматически входят в сумму связанного наряда.",
"Înregistrează plată": "Регистрация платежа",
"Înregistrează seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.": "Регистрируйте комплекты шин клиентов и управляйте сезонным хранением (tire hotel). Отслеживайте износ, TPMS и локацию на складе.", "Înregistrează seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.": "Регистрируйте комплекты шин клиентов и управляйте сезонным хранением (tire hotel). Отслеживайте износ, TPMS и локацию на складе.",
"Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...": "Спросите что угодно — диагноз, резюме, подсказки, тексты клиентам...", "Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...": "Спросите что угодно — диагноз, резюме, подсказки, тексты клиентам...",
"Șabloane servicii": "Шаблоны услуг", "Șabloane servicii": "Шаблоны услуг",
@@ -2349,8 +2397,14 @@
"Șablon serviciu": "Шаблон услуги", "Șablon serviciu": "Шаблон услуги",
"Șablonul nu are rânduri": "В шаблоне пока нет строк", "Șablonul nu are rânduri": "В шаблоне пока нет строк",
"Șterge": "Удалить", "Șterge": "Удалить",
"Șterge client": "Удалить клиента",
"Șterge conversația?": "Удалить диалог?", "Șterge conversația?": "Удалить диалог?",
"Șterge fișă": "Удалить наряд",
"Șterge furnizor": "Удалить поставщика",
"Șterge imagine": "Удалить изображение", "Șterge imagine": "Удалить изображение",
"Șterge mașină": "Удалить авто",
"Șterge piesă": "Удалить запчасть",
"Șterge plată": "Удаление платежа",
"Șterge produs": "Удалить товар", "Șterge produs": "Удалить товар",
"Șterge rând": "Удалить строку", "Șterge rând": "Удалить строку",
"Șterge selectate": "Удалить выбранные", "Șterge selectate": "Удалить выбранные",