From e680b2e63c0c9afb09d85d91736c61ed8acd408c Mon Sep 17 00:00:00 2001 From: Vasyka Date: Thu, 16 Jul 2026 11:10:09 +0000 Subject: [PATCH] i18n(parts-edit): override CreateAction, +19 translations for tabs/columns/empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CrossRefsRelationManager: explicit CreateAction/EditAction labels & modal headings (was auto-generated as 'Create Part Cross Ref') - +19 translations for PartResource sections (Prețuri, Furnizor preferat), photo gallery helper, relation-tab titles (Loturi FIFO, Coduri cross), Batches columns (Intrat/Rămas/Preț unit.), CrossRefs column (Cod echivalent), all empty-state headings/descriptions on the 3 relation managers, Val. abbreviation. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../CrossRefsRelationManager.php | 11 +++++-- lang/en.json | 27 +++++++++-------- lang/ru.json | 29 ++++++++++--------- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/app/Filament/Tenant/Resources/PartResource/RelationManagers/CrossRefsRelationManager.php b/app/Filament/Tenant/Resources/PartResource/RelationManagers/CrossRefsRelationManager.php index 6818d24..0ffe28a 100644 --- a/app/Filament/Tenant/Resources/PartResource/RelationManagers/CrossRefsRelationManager.php +++ b/app/Filament/Tenant/Resources/PartResource/RelationManagers/CrossRefsRelationManager.php @@ -36,8 +36,15 @@ class CrossRefsRelationManager extends RelationManager Tables\Columns\TextColumn::make('cross_article')->label(__('Cod'))->searchable(), Tables\Columns\TextColumn::make('brand')->placeholder('—'), ]) - ->headerActions([Actions\CreateAction::make()]) - ->actions([Actions\EditAction::make(), Actions\DeleteAction::make()]) + ->headerActions([ + Actions\CreateAction::make() + ->label(__('Adaugă cod cross')) + ->modalHeading(__('Adaugă cod echivalent')), + ]) + ->actions([ + Actions\EditAction::make()->modalHeading(__('Editează cod echivalent')), + Actions\DeleteAction::make(), + ]) ->emptyStateHeading(__('Niciun cod cross')) ->emptyStateDescription(__('Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.')); } diff --git a/lang/en.json b/lang/en.json index 1963cb8..9cb9cee 100644 --- a/lang/en.json +++ b/lang/en.json @@ -89,7 +89,9 @@ "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.", "Adaugă cheltuială": "Add expense", "Adaugă client": "Add client", - "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.": "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.", + "Adaugă cod cross": "Add cross code", + "Adaugă cod echivalent": "Add equivalent code", + "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.": "Add OEM/aftermarket equivalents so they can be found via shop search.", "Adaugă comentariu": "Add comment", "Adaugă echipa ta — colegi de la suport, sales, finance — fiecare cu rolul lui.": "Adaugă echipa ta — colegi de la suport, sales, finance — fiecare cu rolul lui.", "Adaugă furnizor": "Add supplier", @@ -172,7 +174,7 @@ "Anulează fișa": "Cancel order", "Anvelope": "Tires", "Apare în magazinul online public.": "Appears in the public online shop.", - "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.": "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.", + "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.": "Click \"Receive\" on the parts list to record the first stock intake.", "Apel": "Apel", "Aplicat": "Aplicat", "Aplică": "Apply", @@ -362,13 +364,13 @@ "Cod QR": "QR code", "Cod articol": "Article code", "Cod bare": "Barcode", - "Cod echivalent": "Cod echivalent", + "Cod echivalent": "Equivalent code", "Cod necunoscut": "Cod necunoscut", "Cod tracking": "Tracking code", "Cod uzină": "Factory code", "Code": "Code", "Codul produsului": "Product code", - "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", + "Coduri cross (OEM/echivalente)": "Cross codes (OEM/equivalents)", "Coeficient": "Coeficient", "Coeficienți preț": "Pricing coefficients", "Coloana Articol *": "Coloana Articol *", @@ -637,6 +639,7 @@ "Edit": "Edit", "Editare": "Edit", "Editează": "Edit", + "Editează cod echivalent": "Edit equivalent code", "Editează drepturi": "Edit permissions", "Editează piesă implicită": "Edit default part", "Editează produs": "Edit product", @@ -757,7 +760,7 @@ "Furnizor *": "Furnizor *", "Furnizor factură": "Invoice supplier", "Furnizor implicit": "Default supplier", - "Furnizor preferat": "Furnizor preferat", + "Furnizor preferat": "Preferred supplier", "Furnizori": "Suppliers", "Fără TVA": "Without VAT", "Fără acest cod, plata va fi greu de identificat.": "Without this code, payment will be hard to identify.", @@ -769,7 +772,7 @@ "GNC": "CNG", "GPL": "LPG", "GRANT — adaugă dreptul": "GRANT — add permission", - "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.", + "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Gallery of up to 8 images. First is shown in the catalog. Max 2 MB / image.", "Gata": "Ready", "Gata de ridicare": "Ready for pickup", "Gata estimat (ETA)": "Gata estimat (ETA)", @@ -844,7 +847,7 @@ "Interval dată": "Date range", "Interval orar": "Time range", "Intrare": "Incoming", - "Intrat": "Intrat", + "Intrat": "Received", "Inventar": "Inventory", "Invitație": "Invitation", "Invitații": "Invitations", @@ -929,7 +932,7 @@ "Logo actualizat": "Logo actualizat", "Logout": "Logout", "Loturi": "Loturi", - "Loturi (FIFO)": "Loturi (FIFO)", + "Loturi (FIFO)": "Batches (FIFO)", "Low Stock Table": "Low stock", "Low stock": "Low stock", "Lucrare": "Lucrare", @@ -1096,7 +1099,7 @@ "Niciun client magazin": "Niciun client magazin", "Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉", "Niciun client încă": "No clients yet", - "Niciun cod cross": "Niciun cod cross", + "Niciun cod cross": "No cross codes", "Niciun coeficient": "Niciun coeficient", "Niciun coeficient contextual nu se aplică (preț de bază).": "No contextual coefficient applies (base price).", "Niciun depozit": "Niciun depozit", @@ -1350,8 +1353,8 @@ "Preț vz.": "Sale price", "Preț vânzare": "Sale price", "Preț/h": "Price/h", - "Prețuri": "Prețuri", - "Prețurile se înregistrează automat la fiecare recepție de PO.": "Prețurile se înregistrează automat la fiecare recepție de PO.", + "Prețuri": "Prices", + "Prețurile se înregistrează automat la fiecare recepție de PO.": "Prices are auto-recorded on every PO receipt.", "Price": "Price", "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", @@ -1877,7 +1880,7 @@ "Va fi adăugată în Cerere nouă": "Will be added to \"New lead\"", "Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod", "Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?", - "Val.": "Val.", + "Val.": "Curr.", "Valoare": "Valoare", "Van": "Van", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Available variables: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}", diff --git a/lang/ru.json b/lang/ru.json index 8f89377..3f69db5 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -89,7 +89,9 @@ "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.": "Adaugă chei API ca să activezi asistentul. Cheile rămân la voi — nu sunt partajate.", "Adaugă cheltuială": "Добавить расход", "Adaugă client": "Добавить клиента", - "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.": "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.", + "Adaugă cod cross": "Добавить кросс-код", + "Adaugă cod echivalent": "Добавить эквивалентный код", + "Adaugă coduri echivalente OEM/aftermarket ca să fie găsite în căutarea din magazin.": "Добавьте OEM/aftermarket эквиваленты для нахождения через поиск в магазине.", "Adaugă comentariu": "Добавить комментарий", "Adaugă echipa ta — colegi de la suport, sales, finance — fiecare cu rolul lui.": "Adaugă echipa ta — colegi de la suport, sales, finance — fiecare cu rolul lui.", "Adaugă furnizor": "Добавить поставщика", @@ -172,7 +174,7 @@ "Anulează fișa": "Отменить наряд", "Anvelope": "Шины", "Apare în magazinul online public.": "Отображается в публичном интернет-магазине.", - "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.": "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.", + "Apasă „Recepție\" pe lista de piese pentru a înregistra prima intrare în depozit.": "Нажмите «Приёмка» в списке запчастей, чтобы зарегистрировать первое поступление на склад.", "Apel": "Apel", "Aplicat": "Aplicat", "Aplică": "Применить", @@ -362,13 +364,13 @@ "Cod QR": "QR-код", "Cod articol": "Артикул", "Cod bare": "Штрих-код", - "Cod echivalent": "Cod echivalent", + "Cod echivalent": "Эквивалентный код", "Cod necunoscut": "Cod necunoscut", "Cod tracking": "Код отслеживания", "Cod uzină": "Заводской код", "Code": "Код", "Codul produsului": "Код товара", - "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", + "Coduri cross (OEM/echivalente)": "Кросс-коды (OEM/эквиваленты)", "Coeficient": "Coeficient", "Coeficienți preț": "Ценовые коэффициенты", "Coloana Articol *": "Coloana Articol *", @@ -637,6 +639,7 @@ "Edit": "Изменить", "Editare": "Изменить", "Editează": "Изменить", + "Editează cod echivalent": "Изменить эквивалентный код", "Editează drepturi": "Изменить права", "Editează piesă implicită": "Изменить запчасть по умолчанию", "Editează produs": "Изменить товар", @@ -757,7 +760,7 @@ "Furnizor *": "Furnizor *", "Furnizor factură": "Поставщик счёта", "Furnizor implicit": "Поставщик по умолчанию", - "Furnizor preferat": "Furnizor preferat", + "Furnizor preferat": "Предпочтительный поставщик", "Furnizori": "Поставщики", "Fără TVA": "Без НДС", "Fără acest cod, plata va fi greu de identificat.": "Без этого кода платёж трудно идентифицировать.", @@ -769,7 +772,7 @@ "GNC": "CNG", "GPL": "LPG", "GRANT — adaugă dreptul": "GRANT — добавить право", - "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.", + "Galerie de până la 8 imagini. Prima e afișată în catalog. Max 2 MB / imagine.": "Галерея до 8 изображений. Первое отображается в каталоге. Максимум 2 МБ / изображение.", "Gata": "Готов", "Gata de ridicare": "Готов к выдаче", "Gata estimat (ETA)": "Gata estimat (ETA)", @@ -844,7 +847,7 @@ "Interval dată": "Диапазон дат", "Interval orar": "Часовой интервал", "Intrare": "Входящий", - "Intrat": "Intrat", + "Intrat": "Принято", "Inventar": "Инвентаризация", "Invitație": "Приглашение", "Invitații": "Приглашения", @@ -929,7 +932,7 @@ "Logo actualizat": "Logo actualizat", "Logout": "Выход", "Loturi": "Loturi", - "Loturi (FIFO)": "Loturi (FIFO)", + "Loturi (FIFO)": "Партии (FIFO)", "Low Stock Table": "Остаток ниже минимума", "Low stock": "Ниже минимума", "Lucrare": "Lucrare", @@ -1096,7 +1099,7 @@ "Niciun client magazin": "Niciun client magazin", "Niciun client pierdut. 🎉": "Niciun client pierdut. 🎉", "Niciun client încă": "Пока нет клиентов", - "Niciun cod cross": "Niciun cod cross", + "Niciun cod cross": "Нет кросс-кодов", "Niciun coeficient": "Niciun coeficient", "Niciun coeficient contextual nu se aplică (preț de bază).": "Контекстные коэффициенты не применяются (базовая цена).", "Niciun depozit": "Niciun depozit", @@ -1350,8 +1353,8 @@ "Preț vz.": "Цена прод.", "Preț vânzare": "Цена продажи", "Preț/h": "Цена/ч", - "Prețuri": "Prețuri", - "Prețurile se înregistrează automat la fiecare recepție de PO.": "Prețurile se înregistrează automat la fiecare recepție de PO.", + "Prețuri": "Цены", + "Prețurile se înregistrează automat la fiecare recepție de PO.": "Цены регистрируются автоматически при каждой приёмке PO.", "Price": "Цена", "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", @@ -1525,7 +1528,7 @@ "Rând": "Строка", "Rânduri": "Строки", "Rânduri per pagină": "Строк на странице", - "Rămas": "Осталось", + "Rămas": "Остаток", "Răspuns": "Отвечен", "Răspuns AI ne-parsabil ca JSON.": "Răspuns AI ne-parsabil ca JSON.", "SMS": "SMS", @@ -1877,7 +1880,7 @@ "Va fi adăugată în Cerere nouă": "Будет добавлена в «Новая заявка»", "Va fi pre-completat când creezi o programare pentru acest pod": "Va fi pre-completat când creezi o programare pentru acest pod", "Va recalcula sell_price pentru TOATE piesele active. Continui?": "Va recalcula sell_price pentru TOATE piesele active. Continui?", - "Val.": "Val.", + "Val.": "Вал.", "Valoare": "Valoare", "Van": "Фургон", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Доступные переменные: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}",