i18n(injector-protocol PDF): switch keys from Cyrillic to RO source + 24 dict entries

Prior version used Cyrillic strings as __() keys — RO users saw
Cyrillic text because fallback = key. Now all PDF labels use RO as
the source-language key (e.g. 'Automobil', 'Nr. înmatriculare',
'Nr. protocol:', 'INJECTOARE'). ru.json + en.json provide translations.

+24 keys covering title, all field labels, table headers, measurement
column headers, before/after subheadings, footer note, conclusion
section, signature block, unit suffixes (km, ml).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-26 11:43:16 +00:00
parent f484167b51
commit 44726adcb3
3 changed files with 87 additions and 34 deletions
+26 -2
View File
@@ -37,6 +37,7 @@
"AI: preț recomandat": "AI: recommended price", "AI: preț recomandat": "AI: recommended price",
"AI: recomandări": "AI: recommendations", "AI: recomandări": "AI: recommendations",
"AI: sugerează diagnostic": "AI: suggest diagnosis", "AI: sugerează diagnostic": "AI: suggest diagnosis",
"AL INJECTOARELOR CU ELECTROVALVĂ": "OF SOLENOID INJECTORS",
"AMT (Robot)": "AMT (Robot)", "AMT (Robot)": "AMT (Robot)",
"API Tokens": "API tokens", "API Tokens": "API tokens",
"AUTOCRM_001": "AUTOCRM_001", "AUTOCRM_001": "AUTOCRM_001",
@@ -187,7 +188,7 @@
"Ambreiaj": "Clutch", "Ambreiaj": "Clutch",
"Amount": "Amount", "Amount": "Amount",
"An": "Year", "An": "Year",
"An fabricație": "Production year", "An fabricație": "Year",
"An model": "Model year", "An model": "Model year",
"An model (estimat)": "Model year (est.)", "An model (estimat)": "Model year (est.)",
"Analitică": "Analytics", "Analitică": "Analytics",
@@ -266,7 +267,9 @@
"AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md", "AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md",
"AutoCRM SRL": "AutoCRM SRL", "AutoCRM SRL": "AutoCRM SRL",
"Automată": "Automatic", "Automată": "Automatic",
"Automobil": "Vehicle",
"Automobile": "Vehicles", "Automobile": "Vehicles",
"Autoservice / Client": "Auto service / Client",
"Autoservis / Client": "Auto service / Client", "Autoservis / Client": "Auto service / Client",
"Avans": "Advance", "Avans": "Advance",
"Avans achitat": "Advance paid", "Avans achitat": "Advance paid",
@@ -326,6 +329,8 @@
"Bună ziua": "Hello", "Bună ziua": "Hello",
"Buy price": "Buy price", "Buy price": "Buy price",
"Bărbat": "Male", "Bărbat": "Male",
"CAUZA ADRESĂRII": "REASON FOR REQUEST",
"CONCLUZIE": "CONCLUSION",
"CRM Programări ": "CRM Appointments ", "CRM Programări ": "CRM Appointments ",
"CSV": "CSV", "CSV": "CSV",
"CVT": "CVT", "CVT": "CVT",
@@ -407,6 +412,7 @@
"Client ID": "Client ID", "Client ID": "Client ID",
"Client VIP": "VIP client", "Client VIP": "VIP client",
"Client existent": "Existing client", "Client existent": "Existing client",
"Client informat (semnătură)": "Client acknowledged (signature)",
"Client informat / a luat cunoștință": "Client informed / acknowledged", "Client informat / a luat cunoștință": "Client informed / acknowledged",
"Client legat (CRM)": "Linked client (CRM)", "Client legat (CRM)": "Linked client (CRM)",
"Client name": "Client name", "Client name": "Client name",
@@ -466,6 +472,7 @@
"Company name": "Company name", "Company name": "Company name",
"Complaint": "Complaint", "Complaint": "Complaint",
"Complet": "Full", "Complet": "Full",
"Completați rândurile după numărul de injectoare; lăsați goale rândurile în plus.": "Fill in rows per injector count; leave extra rows empty.",
"Concediu": "Vacation", "Concediu": "Vacation",
"Condition": "Condition", "Condition": "Condition",
"Condiții (toate trebuie îndeplinite)": "Conditions (all must match)", "Condiții (toate trebuie îndeplinite)": "Conditions (all must match)",
@@ -562,6 +569,7 @@
"Câmp obligatoriu": "Required field", "Câmp obligatoriu": "Required field",
"Când": "When", "Când": "When",
"Când & unde": "When & where", "Când & unde": "When & where",
"DATELE AUTOMOBILULUI ȘI CLIENTULUI": "VEHICLE AND CLIENT DATA",
"DCT": "DCT", "DCT": "DCT",
"DCT (Dual-Clutch)": "DCT (Dual-Clutch)", "DCT (Dual-Clutch)": "DCT (Dual-Clutch)",
"DENY — interzice dreptul": "DENY — deny the permission", "DENY — interzice dreptul": "DENY — deny the permission",
@@ -617,6 +625,7 @@
"Deals": "Deals", "Deals": "Deals",
"Debit": "Debit", "Debit": "Debit",
"Debit ÎNAINTE": "Flow BEFORE", "Debit ÎNAINTE": "Flow BEFORE",
"Debit, ml": "Flow, ml",
"Deblochează": "Unblock", "Deblochează": "Unblock",
"Decembrie": "December", "Decembrie": "December",
"Decode VIN": "Decode VIN", "Decode VIN": "Decode VIN",
@@ -764,6 +773,7 @@
"Engine": "Engine", "Engine": "Engine",
"Eroare": "Error", "Eroare": "Error",
"Eroare la recepție": "Receiving error", "Eroare la recepție": "Receiving error",
"Etanșeitate": "Tightness",
"Etanșeitate ÎNAINTE": "Tightness BEFORE", "Etanșeitate ÎNAINTE": "Tightness BEFORE",
"Etape": "Stages", "Etape": "Stages",
"Etapă": "Stage", "Etapă": "Stage",
@@ -921,6 +931,7 @@
"IBAN:": "IBAN:", "IBAN:": "IBAN:",
"ID": "ID", "ID": "ID",
"IDNO / CUI": "IDNO / CUI", "IDNO / CUI": "IDNO / CUI",
"INJECTOARE": "INJECTORS",
"ITP": "MOT", "ITP": "MOT",
"Ianuarie": "January", "Ianuarie": "January",
"Iarnă": "Winter", "Iarnă": "Winter",
@@ -996,6 +1007,7 @@
"KPI mecanici": "Mechanics KPI", "KPI mecanici": "Mechanics KPI",
"Kanban": "Kanban", "Kanban": "Kanban",
"Kilometraj": "Mileage", "Kilometraj": "Mileage",
"Kilometraj, km": "Mileage, km",
"Km": "km", "Km": "km",
"Km curent": "Current mileage", "Km curent": "Current mileage",
"Km ieșire": "Km out", "Km ieșire": "Km out",
@@ -1092,6 +1104,7 @@
"Mai": "May", "Mai": "May",
"Mai mic = aplicat primul.": "Lower = applied first.", "Mai mic = aplicat primul.": "Lower = applied first.",
"Maistru": "Master", "Maistru": "Master",
"Maistru (nume, semnătură)": "Master (name, signature)",
"Maistru / Mecanic": "Master / Mechanic", "Maistru / Mecanic": "Master / Mechanic",
"Maistru / Recepție:": "Master / Reception:", "Maistru / Recepție:": "Master / Reception:",
"Make": "Make", "Make": "Make",
@@ -1198,6 +1211,7 @@
"Multiplicator": "Multiplier", "Multiplicator": "Multiplier",
"Mulțumim": "Thank you", "Mulțumim": "Thank you",
"Mâine": "Tomorrow", "Mâine": "Tomorrow",
"MĂSURĂTORI MECANICA INJECTOARELOR": "INJECTOR MECHANICS MEASUREMENTS",
"Mărci auto suportate (separate prin virgulă)": "Supported makes (comma-separated)", "Mărci auto suportate (separate prin virgulă)": "Supported makes (comma-separated)",
"Măsurători mecanica injectoarelor": "Injector mechanics measurements", "Măsurători mecanica injectoarelor": "Injector mechanics measurements",
"Name": "Name", "Name": "Name",
@@ -1299,8 +1313,9 @@
"Nr. injectoare": "Injector count", "Nr. injectoare": "Injector count",
"Nr. poliță": "Policy no.", "Nr. poliță": "Policy no.",
"Nr. protocol": "Protocol no.", "Nr. protocol": "Protocol no.",
"Nr. protocol:": "Protocol no.:",
"Nr. telefon": "Phone number", "Nr. telefon": "Phone number",
"Nr. înmatriculare": "License plate", "Nr. înmatriculare": "Plate number",
"Nr.:": "Nr.:", "Nr.:": "Nr.:",
"Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.", "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.": "Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.",
"Nu ai cont?": "Don't have an account?", "Nu ai cont?": "Don't have an account?",
@@ -1392,6 +1407,7 @@
"POS": "POS", "POS": "POS",
"POST /api/v1/login": "POST /api/v1/login", "POST /api/v1/login": "POST /api/v1/login",
"PPF": "PPF", "PPF": "PPF",
"PROTOCOL DE DIAGNOSTIC ȘI CURĂȚARE": "DIAGNOSTIC AND CLEANING PROTOCOL",
"Pagina": "Page", "Pagina": "Page",
"Pagini": "Pages", "Pagini": "Pages",
"Paid": "Paid", "Paid": "Paid",
@@ -1703,6 +1719,7 @@
"Rezervat": "Reserved", "Rezervat": "Reserved",
"Rezervă o programare": "Rezervă o programare", "Rezervă o programare": "Rezervă o programare",
"Rezistență ÎNAINTE": "Resistance BEFORE", "Rezistență ÎNAINTE": "Resistance BEFORE",
"Rezistență, Ω": "Resistance, Ω",
"Rezultat": "Result", "Rezultat": "Result",
"Rezultate": "Results", "Rezultate": "Results",
"Rezumat": "Summary", "Rezumat": "Summary",
@@ -1963,9 +1980,12 @@
"Testează bot Telegram": "Test Telegram bot", "Testează bot Telegram": "Test Telegram bot",
"Theme color": "Theme color", "Theme color": "Theme color",
"Time": "Time", "Time": "Time",
"Timp deschidere, ms": "Opening time, ms",
"Timp lucrat": "Time worked", "Timp lucrat": "Time worked",
"Timp mediu": "Avg time", "Timp mediu": "Avg time",
"Timp total": "Total time", "Timp total": "Total time",
"Timp închidere KZ, ms": "Closing time (KZ), ms",
"Timp închidere, ms": "Closing time, ms",
"Tinichigerie": "Body repair", "Tinichigerie": "Body repair",
"Tinichigerie / Detailing": "Body / Detailing", "Tinichigerie / Detailing": "Body / Detailing",
"Tip": "Type", "Tip": "Type",
@@ -2253,6 +2273,7 @@
"depozit": "warehouse", "depozit": "warehouse",
"depozite": "warehouses", "depozite": "warehouses",
"developer.paypal.com": "developer.paypal.com", "developer.paypal.com": "developer.paypal.com",
"după": "after",
"eveniment": "event", "eveniment": "event",
"ex: Iarnă Michelin": "e.g. Winter Michelin", "ex: Iarnă Michelin": "e.g. Winter Michelin",
"ex: Mașină veche, Client VIP, Express": "e.g. Old vehicle, VIP client, Express", "ex: Mașină veche, Client VIP, Express": "e.g. Old vehicle, VIP client, Express",
@@ -2277,6 +2298,7 @@
"implicit": "default", "implicit": "default",
"instagram": "Instagram", "instagram": "Instagram",
"jurnal": "log", "jurnal": "log",
"km": "km",
"la fiecare request": "on every request", "la fiecare request": "on every request",
"liber": "free", "liber": "free",
"liber/ușor": "free/light", "liber/ușor": "free/light",
@@ -2290,6 +2312,7 @@
"mașină": "vehicle", "mașină": "vehicle",
"mediu": "medium", "mediu": "medium",
"mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "go to Settings → AI Assistant and add the API key (Claude / GPT / Gemini).", "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "go to Settings → AI Assistant and add the API key (Claude / GPT / Gemini).",
"ml": "ml",
"new": "new", "new": "new",
"niciodată": "never", "niciodată": "never",
"norme": "labors", "norme": "labors",
@@ -2500,6 +2523,7 @@
"Înregistrează plată": "Record payment", "Î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...",
"înainte": "before",
"Șabloane servicii": "Service templates", "Șabloane servicii": "Service templates",
"Șablon aplicat": "Template applied", "Șablon aplicat": "Template applied",
"Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese", "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese",
+24
View File
@@ -37,6 +37,7 @@
"AI: preț recomandat": "AI: рекомендованная цена", "AI: preț recomandat": "AI: рекомендованная цена",
"AI: recomandări": "AI: рекомендации", "AI: recomandări": "AI: рекомендации",
"AI: sugerează diagnostic": "AI: подсказать диагноз", "AI: sugerează diagnostic": "AI: подсказать диагноз",
"AL INJECTOARELOR CU ELECTROVALVĂ": "ЭЛЕКТРОКЛАПАННЫХ ФОРСУНОК",
"AMT (Robot)": "АКПП (Робот)", "AMT (Robot)": "АКПП (Робот)",
"API Tokens": "API-токены", "API Tokens": "API-токены",
"AUTOCRM_001": "AUTOCRM_001", "AUTOCRM_001": "AUTOCRM_001",
@@ -266,7 +267,9 @@
"AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md", "AutoCRM PSauto · psauto.service.mir.md": "AutoCRM PSauto · psauto.service.mir.md",
"AutoCRM SRL": "AutoCRM SRL", "AutoCRM SRL": "AutoCRM SRL",
"Automată": "Автоматическая", "Automată": "Автоматическая",
"Automobil": "Автомобиль",
"Automobile": "Автомобили", "Automobile": "Автомобили",
"Autoservice / Client": "Автосервис / Клиент",
"Autoservis / Client": "Автосервис / Клиент", "Autoservis / Client": "Автосервис / Клиент",
"Avans": "Аванс", "Avans": "Аванс",
"Avans achitat": "Аванс оплачен", "Avans achitat": "Аванс оплачен",
@@ -326,6 +329,8 @@
"Bună ziua": "Здравствуйте", "Bună ziua": "Здравствуйте",
"Buy price": "Цена закупки", "Buy price": "Цена закупки",
"Bărbat": "Мужской", "Bărbat": "Мужской",
"CAUZA ADRESĂRII": "ПРИЧИНА ОБРАЩЕНИЯ",
"CONCLUZIE": "ЗАКЛЮЧЕНИЕ",
"CRM Programări ": "CRM Записи ", "CRM Programări ": "CRM Записи ",
"CSV": "CSV", "CSV": "CSV",
"CVT": "CVT", "CVT": "CVT",
@@ -407,6 +412,7 @@
"Client ID": "ID клиента", "Client ID": "ID клиента",
"Client VIP": "VIP-клиент", "Client VIP": "VIP-клиент",
"Client existent": "Существующий клиент", "Client existent": "Существующий клиент",
"Client informat (semnătură)": "Клиент ознакомлен (подпись)",
"Client informat / a luat cunoștință": "Клиент проинформирован / ознакомлен", "Client informat / a luat cunoștință": "Клиент проинформирован / ознакомлен",
"Client legat (CRM)": "Привязанный клиент (CRM)", "Client legat (CRM)": "Привязанный клиент (CRM)",
"Client name": "Имя клиента", "Client name": "Имя клиента",
@@ -466,6 +472,7 @@
"Company name": "Название компании", "Company name": "Название компании",
"Complaint": "Жалоба", "Complaint": "Жалоба",
"Complet": "Полностью", "Complet": "Полностью",
"Completați rândurile după numărul de injectoare; lăsați goale rândurile în plus.": "Заполняйте строки по количеству форсунок; лишние строки оставьте пустыми.",
"Concediu": "Отпуск", "Concediu": "Отпуск",
"Condition": "Состояние", "Condition": "Состояние",
"Condiții (toate trebuie îndeplinite)": "Условия (все должны выполняться)", "Condiții (toate trebuie îndeplinite)": "Условия (все должны выполняться)",
@@ -562,6 +569,7 @@
"Câmp obligatoriu": "Обязательное поле", "Câmp obligatoriu": "Обязательное поле",
"Când": "Когда", "Când": "Когда",
"Când & unde": "Когда и где", "Când & unde": "Когда и где",
"DATELE AUTOMOBILULUI ȘI CLIENTULUI": "ДАННЫЕ АВТОМОБИЛЯ И КЛИЕНТА",
"DCT": "DCT", "DCT": "DCT",
"DCT (Dual-Clutch)": "DCT (Dual-Clutch)", "DCT (Dual-Clutch)": "DCT (Dual-Clutch)",
"DENY — interzice dreptul": "DENY — запретить право", "DENY — interzice dreptul": "DENY — запретить право",
@@ -617,6 +625,7 @@
"Deals": "Сделки", "Deals": "Сделки",
"Debit": "Дебет", "Debit": "Дебет",
"Debit ÎNAINTE": "Расход ДО", "Debit ÎNAINTE": "Расход ДО",
"Debit, ml": "Расход, мл",
"Deblochează": "Разблокировать", "Deblochează": "Разблокировать",
"Decembrie": "Декабрь", "Decembrie": "Декабрь",
"Decode VIN": "Декодировать VIN", "Decode VIN": "Декодировать VIN",
@@ -764,6 +773,7 @@
"Engine": "Двигатель", "Engine": "Двигатель",
"Eroare": "Ошибка", "Eroare": "Ошибка",
"Eroare la recepție": "Ошибка при приёмке", "Eroare la recepție": "Ошибка при приёмке",
"Etanșeitate": "Герметичность",
"Etanșeitate ÎNAINTE": "Герметичность ДО", "Etanșeitate ÎNAINTE": "Герметичность ДО",
"Etape": "Этапы", "Etape": "Этапы",
"Etapă": "Этап", "Etapă": "Этап",
@@ -921,6 +931,7 @@
"IBAN:": "IBAN:", "IBAN:": "IBAN:",
"ID": "ID", "ID": "ID",
"IDNO / CUI": "IDNO / CUI", "IDNO / CUI": "IDNO / CUI",
"INJECTOARE": "ФОРСУНКИ",
"ITP": "ТО", "ITP": "ТО",
"Ianuarie": "Январь", "Ianuarie": "Январь",
"Iarnă": "Зима", "Iarnă": "Зима",
@@ -996,6 +1007,7 @@
"KPI mecanici": "KPI механиков", "KPI mecanici": "KPI механиков",
"Kanban": "Канбан", "Kanban": "Канбан",
"Kilometraj": "Пробег", "Kilometraj": "Пробег",
"Kilometraj, km": "Пробег, км",
"Km": "км", "Km": "км",
"Km curent": "Текущий пробег", "Km curent": "Текущий пробег",
"Km ieșire": "Пробег выход", "Km ieșire": "Пробег выход",
@@ -1092,6 +1104,7 @@
"Mai": "Май", "Mai": "Май",
"Mai mic = aplicat primul.": "Меньше = применяется первым.", "Mai mic = aplicat primul.": "Меньше = применяется первым.",
"Maistru": "Мастер", "Maistru": "Мастер",
"Maistru (nume, semnătură)": "Мастер (ФИО, подпись)",
"Maistru / Mecanic": "Мастер / Механик", "Maistru / Mecanic": "Мастер / Механик",
"Maistru / Recepție:": "Мастер / Ресепшн:", "Maistru / Recepție:": "Мастер / Ресепшн:",
"Make": "Марка", "Make": "Марка",
@@ -1198,6 +1211,7 @@
"Multiplicator": "Множитель", "Multiplicator": "Множитель",
"Mulțumim": "Спасибо", "Mulțumim": "Спасибо",
"Mâine": "Завтра", "Mâine": "Завтра",
"MĂSURĂTORI MECANICA INJECTOARELOR": "ИЗМЕРЕНИЯ МЕХАНИКИ ФОРСУНОК",
"Mărci auto suportate (separate prin virgulă)": "Поддерживаемые марки (через запятую)", "Mărci auto suportate (separate prin virgulă)": "Поддерживаемые марки (через запятую)",
"Măsurători mecanica injectoarelor": "Измерения механики форсунок", "Măsurători mecanica injectoarelor": "Измерения механики форсунок",
"Name": "Имя", "Name": "Имя",
@@ -1299,6 +1313,7 @@
"Nr. injectoare": "Кол-во форсунок", "Nr. injectoare": "Кол-во форсунок",
"Nr. poliță": "№ полиса", "Nr. poliță": "№ полиса",
"Nr. protocol": "№ протокола", "Nr. protocol": "№ протокола",
"Nr. protocol:": "№ протокола:",
"Nr. telefon": "Тел. номер", "Nr. telefon": "Тел. номер",
"Nr. înmatriculare": "Гос. номер", "Nr. înmatriculare": "Гос. номер",
"Nr.:": "Nr.:", "Nr.:": "Nr.:",
@@ -1392,6 +1407,7 @@
"POS": "POS", "POS": "POS",
"POST /api/v1/login": "POST /api/v1/login", "POST /api/v1/login": "POST /api/v1/login",
"PPF": "PPF", "PPF": "PPF",
"PROTOCOL DE DIAGNOSTIC ȘI CURĂȚARE": "ПРОТОКОЛ ДИАГНОСТИКИ И ОЧИСТКИ",
"Pagina": "Страница", "Pagina": "Страница",
"Pagini": "Страницы", "Pagini": "Страницы",
"Paid": "Оплачено", "Paid": "Оплачено",
@@ -1703,6 +1719,7 @@
"Rezervat": "Зарезервировано", "Rezervat": "Зарезервировано",
"Rezervă o programare": "Rezervă o programare", "Rezervă o programare": "Rezervă o programare",
"Rezistență ÎNAINTE": "Сопротивление ДО", "Rezistență ÎNAINTE": "Сопротивление ДО",
"Rezistență, Ω": "Сопротивление, Ом",
"Rezultat": "Результат", "Rezultat": "Результат",
"Rezultate": "Результаты", "Rezultate": "Результаты",
"Rezumat": "Резюме", "Rezumat": "Резюме",
@@ -1963,9 +1980,12 @@
"Testează bot Telegram": "Тест Telegram-бота", "Testează bot Telegram": "Тест Telegram-бота",
"Theme color": "Theme color", "Theme color": "Theme color",
"Time": "Время", "Time": "Время",
"Timp deschidere, ms": "Время открытия, мс",
"Timp lucrat": "Отработано", "Timp lucrat": "Отработано",
"Timp mediu": "Среднее время", "Timp mediu": "Среднее время",
"Timp total": "Общее время", "Timp total": "Общее время",
"Timp închidere KZ, ms": "Время закр. в КЗ, мс",
"Timp închidere, ms": "Время закрытия, мс",
"Tinichigerie": "Кузовной ремонт", "Tinichigerie": "Кузовной ремонт",
"Tinichigerie / Detailing": "Кузов / Детейлинг", "Tinichigerie / Detailing": "Кузов / Детейлинг",
"Tip": "Тип", "Tip": "Тип",
@@ -2253,6 +2273,7 @@
"depozit": "склад", "depozit": "склад",
"depozite": "склады", "depozite": "склады",
"developer.paypal.com": "developer.paypal.com", "developer.paypal.com": "developer.paypal.com",
"după": "после",
"eveniment": "событие", "eveniment": "событие",
"ex: Iarnă Michelin": "например: Зима Michelin", "ex: Iarnă Michelin": "например: Зима Michelin",
"ex: Mașină veche, Client VIP, Express": "например: Старое авто, VIP-клиент, Экспресс", "ex: Mașină veche, Client VIP, Express": "например: Старое авто, VIP-клиент, Экспресс",
@@ -2277,6 +2298,7 @@
"implicit": "по умолчанию", "implicit": "по умолчанию",
"instagram": "Instagram", "instagram": "Instagram",
"jurnal": "журнал", "jurnal": "журнал",
"km": "км",
"la fiecare request": "при каждом запросе", "la fiecare request": "при каждом запросе",
"liber": "свободно", "liber": "свободно",
"liber/ușor": "свободно/легко", "liber/ușor": "свободно/легко",
@@ -2290,6 +2312,7 @@
"mașină": "машина", "mașină": "машина",
"mediu": "средне", "mediu": "средне",
"mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "перейдите в Настройки → AI-ассистент и добавьте API-ключ (Claude / GPT / Gemini).", "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "перейдите в Настройки → AI-ассистент и добавьте API-ключ (Claude / GPT / Gemini).",
"ml": "мл",
"new": "новый", "new": "новый",
"niciodată": "никогда", "niciodată": "никогда",
"norme": "нормы", "norme": "нормы",
@@ -2500,6 +2523,7 @@
"Înregistrează plată": "Регистрация платежа", "Î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...": "Спросите что угодно — диагноз, резюме, подсказки, тексты клиентам...",
"înainte": "до",
"Șabloane servicii": "Шаблоны услуг", "Șabloane servicii": "Шаблоны услуг",
"Șablon aplicat": "Шаблон применён", "Șablon aplicat": "Шаблон применён",
"Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese", "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese",
+37 -32
View File
@@ -170,6 +170,11 @@
'conclusion_needs_cleaning' => __('Necesită curățare repetată'), 'conclusion_needs_cleaning' => __('Necesită curățare repetată'),
'conclusion_needs_replacement' => __('Recomandată înlocuire'), 'conclusion_needs_replacement' => __('Recomandată înlocuire'),
]; ];
// PDF strings use RO keys as the source language; ru.json + en.json provide translations.
// NOTE: these labels were previously in Cyrillic (matching the sample PDF) — but that
// broke fallback on RO locale. Now the RO variant is the key.
$publicQr = asset('img/injector-protocol/qr-sample.png'); $publicQr = asset('img/injector-protocol/qr-sample.png');
@endphp @endphp
@@ -195,34 +200,34 @@
@endif @endif
</div> </div>
<div class="title">{{ __('ПРОТОКОЛ ДИАГНОСТИКИ И ОЧИСТКИ') }}<br>{{ __('ЭЛЕКТРОКЛАПАННЫХ ФОРСУНОК') }}</div> <div class="title">{{ __('PROTOCOL DE DIAGNOSTIC ȘI CURĂȚARE') }}<br>{{ __('AL INJECTOARELOR CU ELECTROVALVĂ') }}</div>
<div class="title-underline"></div> <div class="title-underline"></div>
{{-- ── SECTION 1: DATA ── --}} {{-- ── SECTION 1: DATA ── --}}
<div style="display:flex;justify-content:space-between;align-items:center;"> <div style="display:flex;justify-content:space-between;align-items:center;">
<div class="plaque">{{ __('ДАННЫЕ АВТОМОБИЛЯ И КЛИЕНТА') }}</div> <div class="plaque">{{ __('DATELE AUTOMOBILULUI ȘI CLIENTULUI') }}</div>
<div class="inline-field"> <div class="inline-field">
<span class="lbl">{{ __('№ протокола:') }}</span> <span class="lbl">{{ __('Nr. protocol:') }}</span>
<span class="val number" style="color:var(--blue);font-weight:700;">{{ $protocol->protocol_number ?? '—' }}</span> <span class="val number" style="color:var(--blue);font-weight:700;">{{ $protocol->protocol_number ?? '—' }}</span>
</div> </div>
</div> </div>
<div class="grid"> <div class="grid">
<div class="field"> <div class="field">
<div class="field-label">{{ __('Автосервис / Клиент') }}</div> <div class="field-label">{{ __('Autoservice / Client') }}</div>
<div class="field-value">{{ $protocol->source_name }}</div> <div class="field-value">{{ $protocol->source_name }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Телефон') }}</div> <div class="field-label">{{ __('Telefon') }}</div>
<div class="field-value">{{ $protocol->phone }}</div> <div class="field-value">{{ $protocol->phone }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Автомобиль') }}</div> <div class="field-label">{{ __('Automobil') }}</div>
<div class="field-value">{{ $protocol->car_model }}</div> <div class="field-value">{{ $protocol->car_model }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Гос. номер') }}</div> <div class="field-label">{{ __('Nr. înmatriculare') }}</div>
<div class="field-value">{{ $protocol->plate_number }}</div> <div class="field-value">{{ $protocol->plate_number }}</div>
</div> </div>
<div class="field"> <div class="field">
@@ -230,26 +235,26 @@
<div class="field-value" style="font-family:monospace;">{{ $protocol->vin }}</div> <div class="field-value" style="font-family:monospace;">{{ $protocol->vin }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Пробег, км') }}</div> <div class="field-label">{{ __('Kilometraj, km') }}</div>
<div class="field-value">{{ $protocol->mileage ? number_format($protocol->mileage, 0, '.', ' ') : '' }}</div> <div class="field-value">{{ $protocol->mileage ? number_format($protocol->mileage, 0, '.', ' ') : '' }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Год выпуска') }}</div> <div class="field-label">{{ __('An fabricație') }}</div>
<div class="field-value">{{ $protocol->year }}</div> <div class="field-value">{{ $protocol->year }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Марка форсунок') }}</div> <div class="field-label">{{ __('Marca injectoarelor') }}</div>
<div class="field-value">{{ $protocol->injector_brand }}</div> <div class="field-value">{{ $protocol->injector_brand }}</div>
</div> </div>
<div class="field"> <div class="field">
<div class="field-label">{{ __('Кол-во форсунок') }}</div> <div class="field-label">{{ __('Nr. injectoare') }}</div>
<div class="field-value">{{ $protocol->injector_count }}</div> <div class="field-value">{{ $protocol->injector_count }}</div>
</div> </div>
</div> </div>
{{-- ── SECTION 2: REASON ── --}} {{-- ── SECTION 2: REASON ── --}}
<div class="plaque">{{ __('ПРИЧИНА ОБРАЩЕНИЯ') }}</div> <div class="plaque">{{ __('CAUZA ADRESĂRII') }}</div>
<div class="cbrow"> <div class="cbrow">
@foreach ($reasons as $field => $label) @foreach ($reasons as $field => $label)
<div class="cb"> <div class="cb">
@@ -260,25 +265,25 @@
</div> </div>
{{-- ── SECTION 3: MEASUREMENTS ── --}} {{-- ── SECTION 3: MEASUREMENTS ── --}}
<div class="plaque">{{ __('ИЗМЕРЕНИЯ МЕХАНИКИ ФОРСУНОК') }}</div> <div class="plaque">{{ __('MĂSURĂTORI MECANICA INJECTOARELOR') }}</div>
<table class="meas"> <table class="meas">
<thead> <thead>
<tr> <tr>
<th rowspan="2" class="rot">{{ __('ФОРСУНКИ') }}</th> <th rowspan="2" class="rot">{{ __('INJECTOARE') }}</th>
<th colspan="2">{{ __('Сопротивление, Ом') }}</th> <th colspan="2">{{ __('Rezistență, Ω') }}</th>
<th colspan="2">{{ __('Время открытия, мс') }}</th> <th colspan="2">{{ __('Timp deschidere, ms') }}</th>
<th colspan="2">{{ __('Время закрытия, мс') }}</th> <th colspan="2">{{ __('Timp închidere, ms') }}</th>
<th colspan="2">{{ __('Время закр. в КЗ, мс') }}</th> <th colspan="2">{{ __('Timp închidere KZ, ms') }}</th>
<th colspan="2">{{ __('Расход, мл') }}</th> <th colspan="2">{{ __('Debit, ml') }}</th>
<th colspan="2">{{ __('Герметичность') }}</th> <th colspan="2">{{ __('Etanșeitate') }}</th>
</tr> </tr>
<tr> <tr>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
<th class="subhead">{{ __('до') }}</th><th class="subhead">{{ __('после') }}</th> <th class="subhead">{{ __('înainte') }}</th><th class="subhead">{{ __('după') }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -302,10 +307,10 @@
@endfor @endfor
</tbody> </tbody>
</table> </table>
<div class="meas-note">{{ __('Заполняйте строки по количеству форсунок; лишние строки оставьте пустыми.') }}</div> <div class="meas-note">{{ __('Completați rândurile după numărul de injectoare; lăsați goale rândurile în plus.') }}</div>
{{-- ── SECTION 4: CONCLUSION ── --}} {{-- ── SECTION 4: CONCLUSION ── --}}
<div class="plaque">{{ __('ЗАКЛЮЧЕНИЕ') }}</div> <div class="plaque">{{ __('CONCLUZIE') }}</div>
<div class="cbrow"> <div class="cbrow">
@foreach ($conclusions as $field => $label) @foreach ($conclusions as $field => $label)
<div class="cb"> <div class="cb">
@@ -314,22 +319,22 @@
</div> </div>
@endforeach @endforeach
</div> </div>
<div class="field-label" style="margin-top:2mm;">{{ __('Комментарий / рекомендации мастера') }}</div> <div class="field-label" style="margin-top:2mm;">{{ __('Comentariu / recomandări maistru') }}</div>
<div class="comment-box">{{ $protocol->master_comment }}</div> <div class="comment-box">{{ $protocol->master_comment }}</div>
<div class="sig-row"> <div class="sig-row">
<div class="sig"> <div class="sig">
<div class="field-label">{{ __('Мастер (ФИО, подпись)') }}</div> <div class="field-label">{{ __('Maistru (nume, semnătură)') }}</div>
<div class="val">{{ $protocol->master?->name ?: $protocol->master_name_signed }}</div> <div class="val">{{ $protocol->master?->name ?: $protocol->master_name_signed }}</div>
</div> </div>
<div class="sig"> <div class="sig">
<div class="field-label">{{ __('Дата выдачи') }}</div> <div class="field-label">{{ __('Data emiterii') }}</div>
<div class="val">{{ $protocol->issue_date?->format('d.m.Y') }}</div> <div class="val">{{ $protocol->issue_date?->format('d.m.Y') }}</div>
</div> </div>
</div> </div>
<div class="sig-row"> <div class="sig-row">
<div class="sig"> <div class="sig">
<div class="field-label">{{ __('Клиент ознакомлен (подпись)') }}</div> <div class="field-label">{{ __('Client informat (semnătură)') }}</div>
<div class="val">@if ($protocol->client_acknowledged) @endif</div> <div class="val">@if ($protocol->client_acknowledged) @endif</div>
</div> </div>
<div style="text-align:right;color:var(--gray-text);font-size:9pt;padding-top:8mm;"> <div style="text-align:right;color:var(--gray-text);font-size:9pt;padding-top:8mm;">