i18n(finance): full page — tabs/periods/pnl/balance + Expense.CATEGORIES

- All 4 tabs (Overview/Cashflow/P&L/Balanță) built with __() around
  the text portion, emoji stays in code
- 4 period presets wrapped with __()
- P&L table Marjă/Marjă piese footer wrapped
- Expense::CATEGORIES values look up through __() in the expensesByCat
  loop so categories show translated (Salariu → Зарплата etc.)
- +25 translations covering all UI copy on /app/finance

306 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-17 06:28:53 +00:00
parent 5a2b97833a
commit 2b56bbc35b
4 changed files with 60 additions and 40 deletions
+26 -16
View File
@@ -56,6 +56,7 @@
"Acest email a fost generat automat. Vă rugăm nu răspundeți.": "This email was auto-generated. Please do not reply.",
"Achitat": "Paid",
"Achitat azi": "Paid today",
"Achiziție piese": "Parts purchase",
"Achiziții": "Purchases",
"Acord": "Agreed",
"Acord client": "Client agreement",
@@ -63,7 +64,7 @@
"Actions": "Actions",
"Activ": "Active",
"Activare": "Activation",
"Active": "Active",
"Active": "Assets",
"Active acum": "Active now",
"Activează": "Activate",
"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.",
@@ -307,7 +308,8 @@
"Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money",
"Card bancar": "Bank card",
"Caroserie": "Body type",
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Daily cashflow — green = income, red = expense",
"Cashflow": "Cashflow",
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Daily cashflow — green = income, red = expenses",
"Catalog manoperă": "Labor catalog",
"Categorie": "Category",
"Categorie implicită": "Default category",
@@ -534,7 +536,7 @@
"Datorie": "Debt",
"Datorii": "Debts",
"Datorii clienți": "Client debt",
"Datorii clienți (de încasat)": "Client debts (to collect)",
"Datorii clienți (de încasat)": "Client debt (to collect)",
"Daune": "Daune",
"De către": "By",
"De făcut": "To do",
@@ -985,7 +987,7 @@
"Maistru / Recepție:": "Master / Reception:",
"Make": "Make",
"Manager": "Manager",
"Manopere": "Labor lines",
"Manopere": "Labor",
"Manoperă": "Labor",
"Manuală": "Manual",
"Marca": "Make",
@@ -1008,7 +1010,9 @@
"Marjă internă (%)": "Internal margin (%)",
"Marjă internă (%) — override": "Internal margin (%) — override",
"Marjă internă (nu TVA)": "Internal margin (not VAT)",
"Marjă piese:": "Parts margin:",
"Marjă profit:": "Profit margin:",
"Marjă:": "Margin:",
"Marketing": "Marketing",
"Marketing (UTM)": "Marketing (UTM)",
"Markup": "Markup",
@@ -1241,8 +1245,10 @@
"Ore programate": "Scheduled hours",
"Ore total": "Ore total",
"Ore/zi": "Hours/day",
"Overview": "Overview",
"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.",
"P&L": "P&L",
"PDF": "PDF",
"PDR": "PDR",
"PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.",
@@ -1296,7 +1302,7 @@
"Perioadă (YYYY-MM)": "Period (YYYY-MM)",
"Perioadă raport": "Report period",
"Perioadă trial (zile)": "Trial period (days)",
"Perioadă:": "Perioadă:",
"Perioadă:": "Period:",
"Permisiuni": "Permisiuni",
"Persoană contact": "Contact person",
"Persoană fizică": "Individual",
@@ -1310,7 +1316,7 @@
"Pierdut": "Lost",
"Pierdute": "Pierdute",
"Piese": "Parts",
"Piese (vânzare)": "Piese (vânzare)",
"Piese (vânzare)": "Parts (sales)",
"Piese impl.": "Default parts",
"Piese implicite": "Default parts",
"Piese în stoc": "Piese în stoc",
@@ -1569,6 +1575,7 @@
"SUV": "SUV",
"SUV / Crossover": "SUV / Crossover",
"Salarii": "Salaries",
"Salariu": "Salary",
"Salariu & comisioane": "Salariu & comisioane",
"Salariu & marjă": "Salary & margin",
"Salariu bază": "Base salary",
@@ -1597,6 +1604,7 @@
"Schimb ulei + filtru": "Oil + filter change",
"Scoate din magazin": "Scoate din magazin",
"Scrie mesajul tău...": "Scrie mesajul tău...",
"Scule / consumabile": "Tools / consumables",
"Scăzut": "Low",
"Se completează automat când clientul scrie la bot": "Auto-filled when the client writes to the bot",
"Se procesează...": "Processing...",
@@ -1695,7 +1703,7 @@
"Stoc adăugat": "Stoc adăugat",
"Stoc minim": "Stoc minim",
"Stoc minim atins": "Minimum stock reached",
"Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)",
"Stoc piese (la preț achiziție)": "Parts stock (at purchase price)",
"Stock": "Stock",
"Storage": "Storage",
"Storage (MB)": "Storage (MB)",
@@ -1752,6 +1760,7 @@
"Tarifare": "Rating",
"Task": "Task",
"Tasks": "Tasks",
"Taxe": "Taxes",
"Taxă depozitare": "Storage fee",
"Taxă livrare": "Delivery fee",
"Tehnice": "Technical",
@@ -1817,7 +1826,7 @@
"Toate produsele": "All products",
"Toate rolurile": "All roles",
"Toate statusurile": "Toate statusurile",
"Toate timpurile": "Toate timpurile",
"Toate timpurile": "All time",
"Token generat!": "Token generat!",
"Token public": "Token public",
"Token revocat": "Token revocat",
@@ -1826,20 +1835,20 @@
"Top piese vândute": "Top piese vândute",
"Tot apelul trebuie făcut pe subdomain-ul tău:": "Tot apelul trebuie făcut pe subdomain-ul tău:",
"Total": "Total",
"Total active": "Total active",
"Total cheltuit": "Total cheltuit",
"Total costuri": "Total costuri",
"Total active": "Total assets",
"Total cheltuit": "Total spent",
"Total costuri": "Total costs",
"Total deals active": "Total active deals",
"Total general": "Grand total",
"Total ieșiri": "Total ieșiri",
"Total intrări": "Total intrări",
"Total ieșiri": "Total outflow",
"Total intrări": "Total inflow",
"Total net": "Total net",
"Total paid": "Total paid",
"Total plătit": "Total paid",
"Total rezultate": "Total results",
"Total venituri": "Total venituri",
"Total venituri": "Total revenue",
"Total în baza de date": "Total in database",
"Total încasat": "Total încasat",
"Total încasat": "Total received",
"Total înregistrate": "Total registered",
"Toți": "All",
"Toți VIP-ii sunt în contact recent.": "Toți VIP-ii sunt în contact recent.",
@@ -1885,6 +1894,7 @@
"Ultima logare": "Ultima logare",
"Ultima modificare": "Last modified",
"Ultima sincronizare": "Last synced",
"Ultimele 30 zile": "Last 30 days",
"Ultimul cod citit:": "Last code read:",
"Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "A default warehouse was created at migration. Add others if you have separate physical locations (branch, hall, mobile).",
"Updated at": "Updated at",
@@ -1937,7 +1947,7 @@
"Venit luna curentă": "Current month revenue",
"Venit luna trecută": "Venit luna trecută",
"Venit manopere": "Labor revenue",
"Venituri": "Revenues",
"Venituri": "Revenue",
"Verificare": "Verification",
"Verificat": "Verified",
"Verifică emailul": "Check your email",