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
+25 -15
View File
@@ -56,6 +56,7 @@
"Acest email a fost generat automat. Vă rugăm nu răspundeți.": "Это письмо сгенерировано автоматически. Пожалуйста, не отвечайте.",
"Achitat": "Оплачено",
"Achitat azi": "Оплачено сегодня",
"Achiziție piese": "Закупка запчастей",
"Achiziții": "Закупки",
"Acord": "Согласовано",
"Acord client": "Согласование клиента",
@@ -63,7 +64,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.",
@@ -307,7 +308,8 @@
"Card MAIB / MICB / Victoriabank, MD Cash, e-money": "Card MAIB / MICB / Victoriabank, MD Cash, e-money",
"Card bancar": "Банковская карта",
"Caroserie": "Кузов",
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Дневной cashflow — зелёный = доход, красный = расход",
"Cashflow": "Cashflow",
"Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Дневной cashflow — зелёный = поступления, красный = расходы",
"Catalog manoperă": "Каталог работ",
"Categorie": "Категория",
"Categorie implicită": "Категория по умолчанию",
@@ -461,7 +463,7 @@
"Cost (terț)": "Стоимость (субподр.)",
"Cost piese (achiziție)": "Стоимость запчастей (закупка)",
"Cost/lead": "Cost/lead",
"Costuri": "Стоимости",
"Costuri": "Затраты",
"Country": "Страна",
"Coupé": "Купе",
"Creanțe": "Дебиторка",
@@ -1008,7 +1010,9 @@
"Marjă internă (%)": "Внутренняя маржа (%)",
"Marjă internă (%) — override": "Внутренняя маржа (%) — override",
"Marjă internă (nu TVA)": "Внутренняя маржа (не НДС)",
"Marjă piese:": "Маржа запчастей:",
"Marjă profit:": "Маржа прибыли:",
"Marjă:": "Маржа:",
"Marketing": "Маркетинг",
"Marketing (UTM)": "Marketing (UTM)",
"Markup": "Наценка",
@@ -1096,7 +1100,7 @@
"Nesemnat": "Не подписано",
"Nesincronizat": "Не синхронизировано",
"Net 30 / Avans": "Net 30 / Аванс",
"Net:": "Net:",
"Net:": "Итого:",
"Neverificat": "Не проверено",
"New client": "Новый клиент",
"New mașină": "Новое авто",
@@ -1241,8 +1245,10 @@
"Ore programate": "Запланированные часы",
"Ore total": "Ore total",
"Ore/zi": "Часов/день",
"Overview": "Обзор",
"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)": "Период (ГГГГ-ММ)",
"Perioadă raport": "Период отчёта",
"Perioadă trial (zile)": "Пробный период (дни)",
"Perioadă:": "Perioadă:",
"Perioadă:": "Период:",
"Permisiuni": "Permisiuni",
"Persoană contact": "Контактное лицо",
"Persoană fizică": "Физ. лицо",
@@ -1310,7 +1316,7 @@
"Pierdut": "Потерян",
"Pierdute": "Pierdute",
"Piese": "Запчасти",
"Piese (vânzare)": "Piese (vânzare)",
"Piese (vânzare)": "Запчасти (продажа)",
"Piese impl.": "Запчасти",
"Piese implicite": "Запчасти по умолчанию",
"Piese în stoc": "Piese în stoc",
@@ -1569,6 +1575,7 @@
"SUV": "SUV",
"SUV / Crossover": "SUV / Кроссовер",
"Salarii": "Зарплаты",
"Salariu": "Зарплата",
"Salariu & comisioane": "Salariu & comisioane",
"Salariu & marjă": "Зарплата и маржа",
"Salariu bază": "Базовая зарплата",
@@ -1597,6 +1604,7 @@
"Schimb ulei + filtru": "Замена масла + фильтр",
"Scoate din magazin": "Scoate din magazin",
"Scrie mesajul tău...": "Scrie mesajul tău...",
"Scule / consumabile": "Инструменты / расходники",
"Scăzut": "Низкий",
"Se completează automat când clientul scrie la bot": "Заполняется автоматически, когда клиент пишет боту",
"Se procesează...": "Обработка...",
@@ -1695,7 +1703,7 @@
"Stoc adăugat": "Stoc adăugat",
"Stoc minim": "Stoc minim",
"Stoc minim atins": "Достигнут мин. остаток",
"Stoc piese (la preț achiziție)": "Stoc piese (la preț achiziție)",
"Stoc piese (la preț achiziție)": "Остаток запчастей (по закупке)",
"Stock": "Остаток",
"Storage": "Хранение",
"Storage (MB)": "Storage (MB)",
@@ -1752,6 +1760,7 @@
"Tarifare": "Тарификация",
"Task": "Задача",
"Tasks": "Задачи",
"Taxe": "Налоги",
"Taxă depozitare": "Плата за хранение",
"Taxă livrare": "Плата за доставку",
"Tehnice": "Технические",
@@ -1817,7 +1826,7 @@
"Toate produsele": "Все товары",
"Toate rolurile": "Все роли",
"Toate statusurile": "Toate statusurile",
"Toate timpurile": "Toate timpurile",
"Toate timpurile": "За всё время",
"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 active": "Total active",
"Total cheltuit": "Total cheltuit",
"Total costuri": "Total costuri",
"Total active": "Всего активов",
"Total cheltuit": "Всего потрачено",
"Total costuri": "Всего затрат",
"Total deals active": "Всего активных сделок",
"Total general": "Общий итог",
"Total ieșiri": "Total ieșiri",
"Total intrări": "Total intrări",
"Total ieșiri": "Всего расходов",
"Total intrări": "Всего поступлений",
"Total net": "Total net",
"Total paid": "Всего оплачено",
"Total plătit": "Всего оплачено",
"Total rezultate": "Всего результатов",
"Total venituri": "Total venituri",
"Total venituri": "Всего доходов",
"Total în baza de date": "Всего в базе",
"Total încasat": "Total încasat",
"Total încasat": "Всего получено",
"Total înregistrate": "Всего зарегистрировано",
"Toți": "Все",
"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": "Последнее изменение",
"Ultima sincronizare": "Последняя синхронизация",
"Ultimele 30 zile": "Последние 30 дней",
"Ultimul cod citit:": "Последний код:",
"Un depozit implicit a fost creat la migrare. Adaugă altele dacă ai locații fizice separate (sucursală, hală, mobil).": "Склад по умолчанию создан при миграции. Добавьте другие, если есть отдельные физические локации (филиал, ангар, мобильный).",
"Updated at": "Обновлён",