diff --git a/app/Filament/Central/Resources/CompanyResource.php b/app/Filament/Central/Resources/CompanyResource.php index 3aee636..1218621 100644 --- a/app/Filament/Central/Resources/CompanyResource.php +++ b/app/Filament/Central/Resources/CompanyResource.php @@ -71,7 +71,7 @@ class CompanyResource extends Resource Forms\Components\Select::make('status') ->options([ 'trial' => 'Trial', - 'active' => 'Activ', + 'active' => __('Activ'), 'expired' => 'Expirat', 'suspended' => 'Suspendat', 'archived' => 'Arhivat', @@ -136,7 +136,7 @@ class CompanyResource extends Resource ]) ->filters([ Tables\Filters\SelectFilter::make('status')->options([ - 'trial' => 'Trial', 'active' => 'Activ', 'expired' => 'Expirat', + 'trial' => 'Trial', 'active' => __('Activ'), 'expired' => 'Expirat', 'suspended' => 'Suspendat', 'archived' => 'Arhivat', ]), ]) diff --git a/app/Filament/Central/Resources/SuperAdminResource.php b/app/Filament/Central/Resources/SuperAdminResource.php index e56d8f3..c03adaa 100644 --- a/app/Filament/Central/Resources/SuperAdminResource.php +++ b/app/Filament/Central/Resources/SuperAdminResource.php @@ -81,7 +81,7 @@ class SuperAdminResource extends Resource 'owner' => 'Proprietar', 'admin' => 'Administrator', 'support' => 'Suport', - 'sales' => 'Vânzări', + 'sales' => __('Vânzări'), 'finance' => 'Financiar', default => $s, }) diff --git a/app/Filament/Tenant/Pages/AiAssistant.php b/app/Filament/Tenant/Pages/AiAssistant.php index bb3decc..0acf887 100644 --- a/app/Filament/Tenant/Pages/AiAssistant.php +++ b/app/Filament/Tenant/Pages/AiAssistant.php @@ -51,7 +51,7 @@ class AiAssistant extends Page $chat = AiChat::create([ 'company_id' => $companyId, 'user_id' => $userId, - 'title' => 'Conversație nouă', + 'title' => __('Conversație nouă'), 'provider' => $this->defaultProvider(), ]); } @@ -81,7 +81,7 @@ class AiAssistant extends Page $chat = AiChat::create([ 'company_id' => app(TenantManager::class)->currentId(), 'user_id' => auth()->id(), - 'title' => 'Conversație nouă', + 'title' => __('Conversație nouă'), 'provider' => $this->defaultProvider(), ]); $this->chatId = $chat->id; diff --git a/app/Filament/Tenant/Pages/CalendarBoard.php b/app/Filament/Tenant/Pages/CalendarBoard.php index 972b4de..8ae98ad 100644 --- a/app/Filament/Tenant/Pages/CalendarBoard.php +++ b/app/Filament/Tenant/Pages/CalendarBoard.php @@ -118,7 +118,7 @@ class CalendarBoard extends Page public function getDays(): array { $today = Carbon::today()->toDateString(); - $names = ['Luni', 'Marți', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă', 'Duminică']; + $names = ['Luni', __('Marți'), 'Miercuri', 'Joi', 'Vineri', __('Sâmbătă'), __('Duminică')]; $start = Carbon::parse($this->weekStart); $count = match ($this->viewMode) { @@ -173,7 +173,7 @@ class CalendarBoard extends Page 'capacity_hours' => 8.0, ])->all(); // Always include "Fără maistru" row at the bottom - $rows[] = ['kind' => 'master', 'id' => 0, 'name' => 'Fără maistru', 'color' => '#94a3b8', 'meta' => '—', 'capacity_hours' => 0]; + $rows[] = ['kind' => 'master', 'id' => 0, 'name' => __('Fără maistru'), 'color' => '#94a3b8', 'meta' => '—', 'capacity_hours' => 0]; return $rows; } diff --git a/app/Filament/Tenant/Pages/Finance.php b/app/Filament/Tenant/Pages/Finance.php index aed2226..cc62e55 100644 --- a/app/Filament/Tenant/Pages/Finance.php +++ b/app/Filament/Tenant/Pages/Finance.php @@ -48,15 +48,15 @@ class Finance extends Page 'overview' => '📊 Overview', 'cashflow' => '💸 Cashflow', 'pnl' => '📈 P&L', - 'balance' => '⚖️ Balanță', + 'balance' => __('⚖️ Balanță'), ]; } public function periods(): array { return [ - 'this_month' => 'Luna curentă', - 'last_month' => 'Luna trecută', + 'this_month' => __('Luna curentă'), + 'last_month' => __('Luna trecută'), 'this_year' => 'Anul curent', 'last_30' => 'Ultimele 30 zile', ]; diff --git a/app/Filament/Tenant/Pages/Integrations.php b/app/Filament/Tenant/Pages/Integrations.php index e6281c1..0179e6d 100644 --- a/app/Filament/Tenant/Pages/Integrations.php +++ b/app/Filament/Tenant/Pages/Integrations.php @@ -69,7 +69,7 @@ class Integrations extends Page 'name' => 'Telegram Bot', 'icon' => '✈️', 'color' => '#229ED9', - 'description' => 'Primește cereri din canalul Telegram + trimite confirmări automate.', + 'description' => __('Primește cereri din canalul Telegram + trimite confirmări automate.'), 'fields' => [ 'bot_token' => ['label' => 'Bot Token', 'type' => 'password', 'placeholder' => 'din @BotFather'], 'chat_id' => ['label' => 'Channel/Chat ID', 'type' => 'text', 'placeholder' => '@psauto_md'], @@ -79,7 +79,7 @@ class Integrations extends Page 'name' => 'WhatsApp Business', 'icon' => '💬', 'color' => '#25D366', - 'description' => 'Trimite mesaje template către clienți (programări, confirmări).', + 'description' => __('Trimite mesaje template către clienți (programări, confirmări).'), 'fields' => [ 'phone_id' => ['label' => 'Phone Number ID', 'type' => 'text'], 'token' => ['label' => 'Permanent Access Token', 'type' => 'password'], @@ -99,7 +99,7 @@ class Integrations extends Page 'name' => 'Facebook / Instagram Lead Ads', 'icon' => '📘', 'color' => '#1877F2', - 'description' => 'Importă lead-uri direct din Lead Ads forms.', + 'description' => __('Importă lead-uri direct din Lead Ads forms.'), 'fields' => [ 'page_id' => ['label' => 'Page ID', 'type' => 'text'], 'access_token' => ['label' => 'Access Token', 'type' => 'password'], @@ -109,7 +109,7 @@ class Integrations extends Page 'name' => 'SMS Gateway', 'icon' => '📱', 'color' => '#6366F1', - 'description' => 'Trimite SMS-uri prin gateway local (Moldcell/Orange API).', + 'description' => __('Trimite SMS-uri prin gateway local (Moldcell/Orange API).'), 'fields' => [ 'provider' => ['label' => 'Provider', 'type' => 'text', 'placeholder' => 'moldcell / orange / twilio'], 'api_key' => ['label' => 'API Key', 'type' => 'password'], @@ -117,10 +117,10 @@ class Integrations extends Page ], ], 'webhook_in' => [ - 'name' => 'Webhook intrări (formulare site)', + 'name' => __('Webhook intrări (formulare site)'), 'icon' => '🪝', 'color' => '#8B5CF6', - 'description' => 'URL secret pentru POST direct cu lead-uri din site-ul tău.', + 'description' => __('URL secret pentru POST direct cu lead-uri din site-ul tău.'), 'fields' => [ 'secret' => ['label' => 'Secret token', 'type' => 'text', 'placeholder' => 'random string'], ], diff --git a/app/Filament/Tenant/Pages/Onboarding.php b/app/Filament/Tenant/Pages/Onboarding.php index 594fd1c..e8ee059 100644 --- a/app/Filament/Tenant/Pages/Onboarding.php +++ b/app/Filament/Tenant/Pages/Onboarding.php @@ -75,9 +75,9 @@ class Onboarding extends Page 'MDL' => 'MDL — Leu moldovenesc', 'EUR' => 'EUR — Euro', 'USD' => 'USD — US Dollar', - 'RON' => 'RON — Leu românesc', + 'RON' => __('RON — Leu românesc'), 'UAH' => 'UAH — Hryvnia', - 'RUB' => 'RUB — Rublă', + 'RUB' => __('RUB — Rublă'), ]) ->default('MDL') ->required() @@ -89,7 +89,7 @@ class Onboarding extends Page ->schema([ Forms\Components\Select::make('language') ->label(__('Limbă')) - ->options(['ro' => 'Română', 'ru' => 'Русский', 'en' => 'English']) + ->options(['ro' => __('Română'), 'ru' => 'Русский', 'en' => 'English']) ->required(), Forms\Components\ColorPicker::make('theme_color') ->label(__('Culoare brand')), diff --git a/app/Filament/Tenant/Pages/PipelineBoard.php b/app/Filament/Tenant/Pages/PipelineBoard.php index 02cf56d..7fac197 100644 --- a/app/Filament/Tenant/Pages/PipelineBoard.php +++ b/app/Filament/Tenant/Pages/PipelineBoard.php @@ -624,7 +624,7 @@ class PipelineBoard extends Page 'Telefon' => $lead->phone, 'Email' => $lead->email, 'Automobil' => trim(($lead->car ?: '') . ' ' . ($lead->model ?: '')), - 'Sursă' => Lead::SOURCES[$lead->source] ?? $lead->source, + __('Sursă') => Lead::SOURCES[$lead->source] ?? $lead->source, 'Buget estimat' => $lead->budget ? number_format($lead->budget, 0, '.', ' ') . ' MDL' : null, ], 'note' => $lead->message ?? $lead->notes, @@ -651,9 +651,9 @@ class PipelineBoard extends Page 'Client' => $deal->client?->name, 'Telefon' => $deal->client?->phone, 'Automobil' => trim(($deal->vehicle?->make ?? '') . ' ' . ($deal->vehicle?->model ?? '') . ' · ' . ($deal->vehicle?->plate ?? '')), - 'Sursă' => $deal->source ? (Lead::SOURCES[$deal->source] ?? $deal->source) : null, + __('Sursă') => $deal->source ? (Lead::SOURCES[$deal->source] ?? $deal->source) : null, 'Responsabil' => $deal->assignedTo?->name, - 'Sumă' => number_format($deal->price, 0, '.', ' ') . ' MDL', + __('Sumă') => number_format($deal->price, 0, '.', ' ') . ' MDL', ], 'note' => $deal->note, 'activity' => $this->loadActivity($deal), @@ -682,7 +682,7 @@ class PipelineBoard extends Page 'Telefon' => $wo->client?->phone, 'Automobil' => trim(($wo->vehicle?->make ?? '') . ' · ' . ($wo->vehicle?->plate ?? '')), 'Responsabil' => $wo->master?->name, - 'Sumă' => number_format($wo->total, 0, '.', ' ') . ' MDL', + __('Sumă') => number_format($wo->total, 0, '.', ' ') . ' MDL', 'De achitat' => number_format(max(0, $balanceDue), 0, '.', ' ') . ' MDL', ], 'note' => $wo->diagnosis ?: $wo->complaint, diff --git a/app/Filament/Tenant/Pages/Reports.php b/app/Filament/Tenant/Pages/Reports.php index c6037ab..130517e 100644 --- a/app/Filament/Tenant/Pages/Reports.php +++ b/app/Filament/Tenant/Pages/Reports.php @@ -58,10 +58,10 @@ class Reports extends Page public function periods(): array { return [ - 'today' => 'Astăzi', - 'this_week' => 'Săptămâna curentă', - 'this_month' => 'Luna curentă', - 'last_month' => 'Luna trecută', + 'today' => __('Astăzi'), + 'this_week' => __('Săptămâna curentă'), + 'this_month' => __('Luna curentă'), + 'last_month' => __('Luna trecută'), 'this_year' => 'Anul curent', ]; } @@ -69,12 +69,12 @@ class Reports extends Page public function tabs(): array { return [ - 'finance' => '💰 Finanțe', - 'workload' => '📊 Încărcare', + 'finance' => __('💰 Finanțe'), + 'workload' => __('📊 Încărcare'), 'masters' => '👨‍🔧 Mecanici', 'works' => '🔧 Manopere top', 'parts' => '📦 Piese', - 'clients' => '👥 Clienți', + 'clients' => __('👥 Clienți'), ]; } diff --git a/app/Filament/Tenant/Pages/Settings.php b/app/Filament/Tenant/Pages/Settings.php index 9ba5d63..2e5e01d 100644 --- a/app/Filament/Tenant/Pages/Settings.php +++ b/app/Filament/Tenant/Pages/Settings.php @@ -99,7 +99,7 @@ class Settings extends Page ->schema([ Forms\Components\Select::make('language') ->label(__('Limbă default')) - ->options(['ro' => 'Română', 'ru' => 'Русский', 'en' => 'English']) + ->options(['ro' => __('Română'), 'ru' => 'Русский', 'en' => 'English']) ->required(), Forms\Components\Select::make('currency') ->label(__('Monedă')) @@ -107,9 +107,9 @@ class Settings extends Page 'MDL' => 'MDL — Leu moldovenesc', 'EUR' => 'EUR — Euro', 'USD' => 'USD — US Dollar', - 'RON' => 'RON — Leu românesc', + 'RON' => __('RON — Leu românesc'), 'UAH' => 'UAH — Hryvnia', - 'RUB' => 'RUB — Rublă', + 'RUB' => __('RUB — Rublă'), ]) ->required() ->searchable(), @@ -339,7 +339,7 @@ class Settings extends Page $r = $svc->sendToUser( (int) auth()->id(), 'Test AutoCRM', - 'Notificările push funcționează ✅', + __('Notificările push funcționează ✅'), '/app', ); Notification::make() diff --git a/app/Filament/Tenant/Pages/Workload.php b/app/Filament/Tenant/Pages/Workload.php index 7b2312b..8ec4a2a 100644 --- a/app/Filament/Tenant/Pages/Workload.php +++ b/app/Filament/Tenant/Pages/Workload.php @@ -81,7 +81,7 @@ class Workload extends Page // Same for appointments without post (drop them on a virtual "—" row). $unposted = $appts->keys()->filter(fn ($k) => str_starts_with($k, '|')); if ($unposted->isNotEmpty()) { - $matrix[0] = ['post' => (object) ['id' => 0, 'name' => '— fără pod —', 'color' => '#9ca3af'], 'days' => []]; + $matrix[0] = ['post' => (object) ['id' => 0, 'name' => __('— fără pod —'), 'color' => '#9ca3af'], 'days' => []]; foreach ($days as $d) { $key = '|' . $d->format('Y-m-d'); $items = $appts->get($key, collect()); diff --git a/app/Filament/Tenant/Resources/ActivityResource.php b/app/Filament/Tenant/Resources/ActivityResource.php index 930ceca..9a4ab7f 100644 --- a/app/Filament/Tenant/Resources/ActivityResource.php +++ b/app/Filament/Tenant/Resources/ActivityResource.php @@ -53,7 +53,7 @@ class ActivityResource extends Resource ->colors([ 'success' => ['creat'], 'info' => ['modificat'], - 'danger' => ['șters'], + 'danger' => [__('șters')], 'warning' => ['restaurat'], ]), Tables\Columns\TextColumn::make('subject_type') @@ -76,7 +76,7 @@ class ActivityResource extends Resource ->filters([ Tables\Filters\SelectFilter::make('description') ->label(__('Acțiune')) - ->options(['creat' => 'creat', 'modificat' => 'modificat', 'șters' => 'șters']), + ->options(['creat' => 'creat', 'modificat' => 'modificat', __('șters') => __('șters')]), Tables\Filters\Filter::make('today') ->label(__('Astăzi')) ->query(fn ($q) => $q->whereDate('created_at', today())), diff --git a/app/Filament/Tenant/Resources/ClientResource.php b/app/Filament/Tenant/Resources/ClientResource.php index 426f714..54c5d92 100644 --- a/app/Filament/Tenant/Resources/ClientResource.php +++ b/app/Filament/Tenant/Resources/ClientResource.php @@ -57,7 +57,7 @@ class ClientResource extends Resource ->schema([ Forms\Components\Select::make('type') ->label(__('Tip')) - ->options(['individual' => 'Persoană fizică', 'company' => 'Persoană juridică']) + ->options(['individual' => __('Persoană fizică'), 'company' => __('Persoană juridică')]) ->default('individual') ->required() ->live(), @@ -68,8 +68,8 @@ class ClientResource extends Resource ->maxLength(160), Forms\Components\Select::make('status') ->options([ - 'new' => 'Nou', 'active' => 'Activ', 'vip' => 'VIP', - 'debtor' => 'Datornic', 'blocked' => 'Blocat', 'lost' => 'Pierdut', + 'new' => __('Nou'), 'active' => __('Activ'), 'vip' => 'VIP', + 'debtor' => 'Datornic', 'blocked' => __('Blocat'), 'lost' => 'Pierdut', ]) ->default('active') ->required(), @@ -133,8 +133,8 @@ class ClientResource extends Resource ]) ->filters([ Tables\Filters\SelectFilter::make('status')->options([ - 'new' => 'Nou', 'active' => 'Activ', 'vip' => 'VIP', - 'debtor' => 'Datornic', 'blocked' => 'Blocat', 'lost' => 'Pierdut', + 'new' => __('Nou'), 'active' => __('Activ'), 'vip' => 'VIP', + 'debtor' => 'Datornic', 'blocked' => __('Blocat'), 'lost' => 'Pierdut', ]), ]) ->actions([ diff --git a/app/Filament/Tenant/Resources/MasterResource.php b/app/Filament/Tenant/Resources/MasterResource.php index f70f6f1..2fe8a46 100644 --- a/app/Filament/Tenant/Resources/MasterResource.php +++ b/app/Filament/Tenant/Resources/MasterResource.php @@ -54,7 +54,7 @@ class MasterResource extends Resource Forms\Components\TextInput::make('phone')->label(__('Telefon'))->tel()->maxLength(40), Forms\Components\TextInput::make('email')->label(__('Email'))->email()->maxLength(120), Forms\Components\Select::make('status') - ->options(['active' => 'Activ', 'inactive' => 'Inactiv', 'blocked' => 'Blocat']) + ->options(['active' => __('Activ'), 'inactive' => __('Inactiv'), 'blocked' => __('Blocat')]) ->default('active') ->required(), ]), diff --git a/app/Filament/Tenant/Resources/PartResource.php b/app/Filament/Tenant/Resources/PartResource.php index 176f17e..7f76660 100644 --- a/app/Filament/Tenant/Resources/PartResource.php +++ b/app/Filament/Tenant/Resources/PartResource.php @@ -50,7 +50,7 @@ class PartResource extends Resource { return [ 'Stoc' => (int) $record->stock . ' ' . ($record->unit ?? 'buc'), - 'Preț' => number_format((float) $record->sell_price, 2), + __('Preț') => number_format((float) $record->sell_price, 2), ]; } diff --git a/app/Filament/Tenant/Resources/TireSetResource.php b/app/Filament/Tenant/Resources/TireSetResource.php index 5d8e495..f5dc888 100644 --- a/app/Filament/Tenant/Resources/TireSetResource.php +++ b/app/Filament/Tenant/Resources/TireSetResource.php @@ -77,7 +77,7 @@ class TireSetResource extends Resource Forms\Components\TextInput::make('model')->maxLength(64), Forms\Components\TextInput::make('dot_year')->label(__('DOT'))->maxLength(8)->placeholder('3621'), Forms\Components\Toggle::make('has_rims')->label(__('Cu jante')), - Forms\Components\Select::make('rim_type')->label(__('Tip jante'))->options(['steel' => 'Tablă', 'alloy' => 'Aliaj']), + Forms\Components\Select::make('rim_type')->label(__('Tip jante'))->options(['steel' => __('Tablă'), 'alloy' => 'Aliaj']), Forms\Components\Select::make('condition')->label(__('Stare'))->options(TireSet::CONDITIONS), ]), Schemas\Components\Section::make(__('Uzură (mm) per poziție')) diff --git a/app/Filament/Tenant/Resources/UserResource.php b/app/Filament/Tenant/Resources/UserResource.php index f818520..6313934 100644 --- a/app/Filament/Tenant/Resources/UserResource.php +++ b/app/Filament/Tenant/Resources/UserResource.php @@ -61,7 +61,7 @@ class UserResource extends Resource Forms\Components\TextInput::make('email')->email()->required()->maxLength(120), Forms\Components\TextInput::make('phone')->tel()->maxLength(40), Forms\Components\Select::make('locale') - ->options(['ro' => 'Română', 'ru' => 'Русский', 'en' => 'English']) + ->options(['ro' => __('Română'), 'ru' => 'Русский', 'en' => 'English']) ->default('ro'), ]), Schemas\Components\Section::make(__('Acces')) @@ -74,7 +74,7 @@ class UserResource extends Resource ->default('mechanic') ->helperText(__('Rolul principal — sincronizat automat cu drepturile RBAC.')), Forms\Components\Select::make('status') - ->options(['active' => 'Activ', 'inactive' => 'Inactiv', 'blocked' => 'Blocat']) + ->options(['active' => __('Activ'), 'inactive' => __('Inactiv'), 'blocked' => __('Blocat')]) ->default('active') ->required(), Forms\Components\TextInput::make('password') @@ -170,11 +170,11 @@ class UserResource extends Resource ]) ->filters([ Tables\Filters\SelectFilter::make('role')->options([ - 'admin' => 'Admin', 'manager' => 'Manager', 'receptionist' => 'Recepție', + 'admin' => 'Admin', 'manager' => 'Manager', 'receptionist' => __('Recepție'), 'mechanic' => 'Mecanic', 'parts_manager' => 'Magazie', 'accountant' => 'Contabil', 'marketer' => 'Marketing', ]), Tables\Filters\SelectFilter::make('status')->options([ - 'active' => 'Activ', 'inactive' => 'Inactiv', 'blocked' => 'Blocat', + 'active' => __('Activ'), 'inactive' => __('Inactiv'), 'blocked' => __('Blocat'), ]), ]) ->actions([ diff --git a/app/Filament/Tenant/Resources/UserResource/RelationManagers/PermissionOverridesRelationManager.php b/app/Filament/Tenant/Resources/UserResource/RelationManagers/PermissionOverridesRelationManager.php index 33c8dee..479383d 100644 --- a/app/Filament/Tenant/Resources/UserResource/RelationManagers/PermissionOverridesRelationManager.php +++ b/app/Filament/Tenant/Resources/UserResource/RelationManagers/PermissionOverridesRelationManager.php @@ -39,7 +39,7 @@ class PermissionOverridesRelationManager extends RelationManager ->columnSpanFull(), Forms\Components\Select::make('mode') ->required() - ->options(['grant' => 'GRANT — adaugă dreptul', 'deny' => 'DENY — interzice dreptul']) + ->options(['grant' => __('GRANT — adaugă dreptul'), 'deny' => 'DENY — interzice dreptul']) ->default('grant'), Forms\Components\DatePicker::make('expires_at') ->label(__('Expiră la (opțional)')) diff --git a/app/Filament/Tenant/Resources/VehicleResource.php b/app/Filament/Tenant/Resources/VehicleResource.php index 2bf22dd..ea35dd9 100644 --- a/app/Filament/Tenant/Resources/VehicleResource.php +++ b/app/Filament/Tenant/Resources/VehicleResource.php @@ -82,7 +82,7 @@ class VehicleResource extends Resource Forms\Components\TextInput::make('gearbox')->maxLength(60), Forms\Components\Select::make('fuel') ->options([ - 'Benzină' => 'Benzină', 'Diesel' => 'Diesel', 'Hybrid' => 'Hybrid', + __('Benzină') => __('Benzină'), 'Diesel' => 'Diesel', 'Hybrid' => 'Hybrid', 'EV' => 'Electric', 'GPL' => 'GPL', 'GNC' => 'GNC', ]), Forms\Components\Select::make('vehicle_class') diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index 2a2eb85..c674f34 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -100,7 +100,7 @@ class PaymentController return view('site.checkout-stub', [ 'gateway' => 'Stripe', 'sub' => $sub, - 'note' => 'Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.', + 'note' => __('Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.'), ]); } @@ -114,7 +114,7 @@ class PaymentController return view('site.checkout-stub', [ 'gateway' => 'PayPal', 'sub' => $sub, - 'note' => 'Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.', + 'note' => __('Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.'), ]); } diff --git a/app/Http/Controllers/ShopAuthController.php b/app/Http/Controllers/ShopAuthController.php index f7ab22f..323b5dd 100644 --- a/app/Http/Controllers/ShopAuthController.php +++ b/app/Http/Controllers/ShopAuthController.php @@ -44,7 +44,7 @@ class ShopAuthController extends Controller // Unique per tenant (handled by composite index, but check for nicer error). if (ShopCustomer::where('phone', $data['phone'])->exists()) { - return back()->withErrors(['phone' => 'Există deja un cont cu acest telefon.'])->withInput(); + return back()->withErrors(['phone' => __('Există deja un cont cu acest telefon.')])->withInput(); } // Auto-link to existing Client by phone if present. @@ -85,7 +85,7 @@ class ShopAuthController extends Controller remember: true ); if (! $ok) { - return back()->withErrors(['phone' => 'Telefon sau parolă incorecte.'])->withInput(); + return back()->withErrors(['phone' => __('Telefon sau parolă incorecte.')])->withInput(); } $request->session()->regenerate(); diff --git a/app/Http/Controllers/TrackingController.php b/app/Http/Controllers/TrackingController.php index 0156ad3..cb6c44d 100644 --- a/app/Http/Controllers/TrackingController.php +++ b/app/Http/Controllers/TrackingController.php @@ -63,7 +63,7 @@ class TrackingController extends Controller default => null, }; if (! $line || ! $line->isPendingApproval()) { - $request->session()->flash('approval_status', ['kind' => 'error', 'message' => 'Linia nu mai necesită aprobare.']); + $request->session()->flash('approval_status', ['kind' => 'error', 'message' => __('Linia nu mai necesită aprobare.')]); return redirect()->route('tracking.show', ['token' => $token]); } diff --git a/app/Services/Ai/OcrInvoiceService.php b/app/Services/Ai/OcrInvoiceService.php index 1f1da96..1cd17a3 100644 --- a/app/Services/Ai/OcrInvoiceService.php +++ b/app/Services/Ai/OcrInvoiceService.php @@ -25,7 +25,7 @@ class OcrInvoiceService public function extract(string $absPath, ?string $mime = null): array { if (! is_file($absPath)) { - return ['ok' => false, 'error' => 'Fișierul nu există.']; + return ['ok' => false, 'error' => __('Fișierul nu există.')]; } $mime ??= mime_content_type($absPath) ?: 'image/jpeg'; @@ -49,7 +49,7 @@ class OcrInvoiceService $key = data_get($company->settings, 'ai.claude_key'); if (! $key) { - return ['ok' => false, 'error' => '⚠️ Lipsește cheia Claude în Setări → AI.']; + return ['ok' => false, 'error' => __('⚠️ Lipsește cheia Claude în Setări → AI.')]; } $b64 = base64_encode(file_get_contents($absPath)); @@ -70,7 +70,7 @@ class OcrInvoiceService ['type' => 'image', 'source' => [ 'type' => 'base64', 'media_type' => $mime, 'data' => $b64, ]], - ['type' => 'text', 'text' => 'Extrage datele din această factură. Răspunde DOAR cu obiectul JSON, fără text suplimentar și fără ```.'], + ['type' => 'text', 'text' => __('Extrage datele din această factură. Răspunde DOAR cu obiectul JSON, fără text suplimentar și fără ```.')], ], ]], ]); @@ -87,7 +87,7 @@ class OcrInvoiceService $data = $this->parseJson($text); if ($data === null) { - return ['ok' => false, 'error' => 'Răspuns AI ne-parsabil ca JSON.', 'raw' => $text]; + return ['ok' => false, 'error' => __('Răspuns AI ne-parsabil ca JSON.'), 'raw' => $text]; } return [ diff --git a/app/Services/ExcelInvoiceImportService.php b/app/Services/ExcelInvoiceImportService.php index b1a3df6..5387250 100644 --- a/app/Services/ExcelInvoiceImportService.php +++ b/app/Services/ExcelInvoiceImportService.php @@ -131,7 +131,7 @@ class ExcelInvoiceImportService 'order_date' => today(), 'status' => 'ordered', 'total' => 0, - 'notes' => 'Auto-import Excel/CSV', + 'notes' => __('Auto-import Excel/CSV'), ]); $total = 0; foreach ($rows as $row) { diff --git a/app/Services/NotificationDispatcher.php b/app/Services/NotificationDispatcher.php index adc50c7..b0e3a5a 100644 --- a/app/Services/NotificationDispatcher.php +++ b/app/Services/NotificationDispatcher.php @@ -107,7 +107,7 @@ class NotificationDispatcher fn () => Mail::to($client->email)->send(new ServiceReminderMail( $set->vehicle, 'tire_swap', - 'E timpul să schimbi anvelopele ' . ($set->season === 'winter' ? 'de iarnă' : 'de vară') . + __('E timpul să schimbi anvelopele ') . ($set->season === 'winter' ? 'de iarnă' : 'de vară') . ' (' . $set->sizeLabel() . ').', $company )), diff --git a/app/Services/Notifications/TelegramService.php b/app/Services/Notifications/TelegramService.php index 16cf3cd..8a176c2 100644 --- a/app/Services/Notifications/TelegramService.php +++ b/app/Services/Notifications/TelegramService.php @@ -65,7 +65,7 @@ class TelegramService public function setWebhook(Company $company): array { $token = $this->tokenFor($company); - if (! $token) return ['ok' => false, 'error' => 'Lipsește bot token în setări.']; + if (! $token) return ['ok' => false, 'error' => __('Lipsește bot token în setări.')]; $secret = $this->webhookSecretFor($company); if (! $secret) { diff --git a/app/Services/VinDecoder.php b/app/Services/VinDecoder.php index 41ef404..0e80fc4 100644 --- a/app/Services/VinDecoder.php +++ b/app/Services/VinDecoder.php @@ -36,7 +36,7 @@ class VinDecoder { $vin = strtoupper(trim($vin)); if (strlen($vin) < 11) { - return ['valid' => false, 'error' => 'VIN trebuie să aibă cel puțin 11 caractere.']; + return ['valid' => false, 'error' => __('VIN trebuie să aibă cel puțin 11 caractere.')]; } $wmi = substr($vin, 0, 3); diff --git a/lang/en.json b/lang/en.json index d21dc7d..1237e95 100644 --- a/lang/en.json +++ b/lang/en.json @@ -9,7 +9,11 @@ "% marja piese": "% marja piese", "% marjă implicit": "Default margin %", "% piese": "% piese", + "+ Conversație nouă": "+ New conversation", + "+ Pod / spațiu nou": "+ New bay / space", + "+ Programare nouă": "+ New appointment", "+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}", + ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.", "0 = dezactivat": "0 = dezactivat", "1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.", "123456:ABC-XYZ...": "123456:ABC-XYZ...", @@ -19,24 +23,31 @@ "> 0 calculează automat prețul client.": "> 0 calculează automat prețul client.", "A1-03": "A1-03", "AGRNMD2X": "AGRNMD2X", - "AI: preț recomandat": "AI: preț recomandat", - "AI: recomandări": "AI: recomandări", - "AI: sugerează diagnostic": "AI: sugerează diagnostic", + "AI provider": "AI provider", + "AI: preț recomandat": "AI: recommended price", + "AI: recomandări": "AI: recommendations", + "AI: sugerează diagnostic": "AI: suggest diagnosis", "API Tokens": "API Tokens", "AUTOCRM_001": "AUTOCRM_001", "AYS...": "AYS...", - "Abonament": "Abonament", - "Abonament până la": "Abonament până la", - "Abonați": "Abonați", + "Abonament": "Subscription", + "Abonament până la": "Subscribed until", + "Abonamentul se extinde automat": "Subscription auto-renews", + "Abonamentul tău a fost extins.": "Your subscription has been extended.", + "Abonat": "Subscribed", + "Abonați": "Subscribers", "Absent": "Absent", "Accept": "Accept", + "Acceptă invitația": "Accept invitation", "Acces": "Acces", "Acces în aplicație (opțional)": "Acces în aplicație (opțional)", "Această acțiune este ireversibilă": "This action is irreversible", + "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ții": "Purchases", - "Acord": "Agreement", + "Acord": "Agreed", + "Acord client": "Client agreement", "Acordat de": "Acordat de", "Actions": "Actions", "Activ": "Active", @@ -60,6 +71,7 @@ "Acțiuni rapide": "Quick actions", "Acțiuni în bulk": "Bulk actions", "Acțiuni în masă": "Bulk actions", + "Adaugă": "Add", "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.", "Adaugă auto": "Add vehicle", "Adaugă cerere": "Add lead", @@ -70,6 +82,7 @@ "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", + "Adaugă header": "Add header", "Adaugă imagine": "Add image", "Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.": "Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.", "Adaugă notă": "Add note", @@ -89,10 +102,13 @@ "Adaugă utilizator": "Add user", "Adaugă vehicul": "Add vehicle", "Admin tenant (la creare)": "Admin tenant (la creare)", + "Administrator": "Administrator", "Adresă": "Address", "Adresă IP": "IP address", "Adresă email": "Email address", + "Adresă livrare:": "Delivery address:", "Afișează detalii marjă la procesele calculate": "Afișează detalii marjă la procesele calculate", + "Ai cerut resetarea parolei pentru contul tău de magazin. Apasă linkul de mai jos ca să setezi o parolă nouă:": "You requested a password reset for your shop account. Click the link below to set a new password:", "Ai deja cont?": "Already have an account?", "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\".", @@ -113,19 +129,27 @@ "Alege tip": "Choose type", "Alege vehicul": "Choose vehicle", "Alfabetic": "Alphabetically", + "Aliaj": "Alloy", + "All-Season": "All-Season", + "Alt": "Other", + "Alte": "Other", "Alte cheltuieli": "Other expenses", "Altă problemă": "Other problem", "An": "Year", - "An fabricație": "Model year", + "An fabricație": "Production year", + "An model": "Model year", + "An model (estimat)": "Model year (estimated)", "Angajat din": "Angajat din", "Ani": "Years", "Anonim": "Anonymous", "Antet": "Header", "Antet fișă": "Order header", "Anual": "Anual", + "Anul acesta": "This year", "Anul curent": "Current year", "Anul trecut": "Last year", "Anulat": "Cancelled", + "Anulată": "Cancelled", "Anulează": "Cancel", "Anulează fișa": "Cancel order", "Anvelope": "Tires", @@ -157,31 +181,41 @@ "Asigurare": "Asigurare", "Asigurător": "Asigurător", "Asistent AI": "AI Assistant", + "Asistent AI pentru autoservice": "AI assistant for auto service", "Astăzi": "Today", + "Atașamente": "Attachments", + "Atașat veți găsi": "Attached", "Atelierul meu": "Atelierul meu", "Atenție": "Warning", + "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "August", "Autentificare": "Login", "Autentificare 2FA": "2FA authentication", "Auto": "Vehicle", "Auto / model": "Vehicle / model", + "Auto-import Excel/CSV": "Auto-import Excel/CSV", "AutoCRM SRL": "AutoCRM SRL", + "Automată": "Automatic", "Automobile": "Vehicles", "Avans": "Advance", "Avans achitat": "Advance paid", "Avg zile": "Avg zile", "Azi": "Today", "Așteaptă piese": "Awaiting parts", + "Așteaptă piesele": "Awaiting parts", "Aștept aprobare client": "Awaiting client approval", "Așteptată": "Expected", "BIC / SWIFT": "BIC / SWIFT", "Backup": "Backup", "Backup & Export date": "Backup & Export date", + "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Balance", "Balanță": "Balance", "Banca": "Banca", "Bază": "Base", "Beneficiar": "Beneficiar", + "Benzină": "Petrol", + "Berlină": "Sedan", "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", "Bifă": "Check", "Bine ai venit": "Welcome", @@ -198,12 +232,18 @@ "Bot token": "Bot token", "Brand": "Brand", "Brand & contact": "Brand & contact", + "Break": "Wagon", "Buget": "Budget", "Buget & rezultate (luna curentă)": "Buget & rezultate (luna curentă)", "Bun venit": "Welcome", "Bun venit în AutoCRM!": "Bun venit în AutoCRM!", + "Bună": "Good", "Bună ziua": "Hello", + "Bărbat": "Male", + "CRM › Programări ›": "CRM › Programări ›", "CSV": "CSV", + "CVT": "CVT", + "Cabriolet": "Convertible", "Calcul": "Calcul", "Calcul.": "Quote", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", @@ -217,9 +257,11 @@ "Cantitate": "Quantity", "Cantitate recepționată": "Cantitate recepționată", "Cantitate restituită": "Cantitate restituită", - "Capacitate motor": "Engine size", + "Capacitate motor": "Engine capacity", "Capacitatea zilnică în ore": "Capacitatea zilnică în ore", + "Card bancar": "Bank card", "Caroserie": "Body type", + "Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli", "Catalog manoperă": "Catalog manoperă", "Categorie": "Category", "Categorie implicită": "Default category", @@ -230,6 +272,7 @@ "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", "Ce a spus clientul...": "What the client said...", + "Cere aprobarea": "Request approval", "Cerere": "Lead", "Cerere nouă": "New lead", "Cerere nouă adăugată": "New lead added", @@ -243,14 +286,18 @@ "Cheltuieli (luna)": "Expenses (month)", "Cheltuit": "Spent", "Cheltuit 90d": "Cheltuit 90d", + "Chirie": "Rent", "Chitanțe": "Receipts", "Chitanță": "Receipt", + "Cifră de afaceri": "Revenue", "Ciornă": "Draft", "Clase auto": "Vehicle classes", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", "Client": "Client", "Client & Auto": "Client & Auto", + "Client (nume, semnătură):": "Client (nume, semnătură):", + "Client / Auto": "Client / Auto", "Client CRM": "CRM client", "Client ID": "Client ID", "Client VIP": "Client VIP", @@ -258,25 +305,35 @@ "Client legat (CRM)": "Client legat (CRM)", "Client nou": "New client", "Clienți": "Clients", + "Clienți VIP cu care nu s-a vorbit de peste 30 zile.": "Clienți VIP cu care nu s-a vorbit de peste 30 zile.", + "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.": "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.", "Clienți magazin": "Shop customers", + "Clienți noi în perioadă": "Clienți noi în perioadă", "Cod": "Code", + "Cod QR": "QR code", "Cod articol": "Article code", - "Cod bare": "Cod bare", + "Cod bare": "Barcode", "Cod echivalent": "Cod echivalent", "Cod necunoscut": "Cod necunoscut", + "Cod tracking": "Tracking code", + "Cod uzină": "Cod uzină", "Codul produsului": "Product code", "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", "Coeficienți preț": "Pricing coefficients", + "Coloana Brand (opțional)": "Coloana Brand (opțional)", + "Coloana Preț *": "Coloana Preț *", "Coloane": "Columns", "Coloană": "Column", + "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", "Comandată": "Comandată", "Comandă": "Comandă", "Comandă nouă #": "Comandă nouă #", + "Comandă primită": "Comandă primită", "Combustibil": "Fuel", "Comenzi": "Orders", - "Comercial": "Comercial", + "Comercial": "Commercial", "Comision manopere": "Comision manopere", "Comision piese": "Comision piese", "Companie": "Company", @@ -289,15 +346,29 @@ "Configurări": "Configuration", "Configurări avansate": "Advanced settings", "Confirmare plată primită": "Confirmare plată primită", + "Confirmat": "Confirmed", + "Confirmă": "Confirm", "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.": "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.", "Confirmă emailul": "Verify email", + "Confirmă și importă": "Confirmă și importă", "Confirmă ștergerea": "Confirm deletion", + "Confirmăm primirea plății dvs.:": "Confirmăm primirea plății dvs.:", + "Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)", + "Consum": "Consumption", + "Consumabile": "Supplies", + "Contabil": "Accountant", "Contact": "Contact", "Contactare": "Contact", + "Contactat": "Contacted", "Contacte": "Contacte", "Contactează": "Contact", + "Continuă": "Continue", + "Continuă →": "Continuă →", + "Conversație nouă": "Conversație nouă", "Convertește": "Convertește", + "Convertit": "Converted", "Convertite": "Converted", + "Conține:": "Conține:", "Conținut": "Conținut", "Conținut șablon": "Conținut șablon", "Copiat": "Copied", @@ -307,8 +378,11 @@ "Cost & marjă": "Cost & marjă", "Cost (de la terț)": "Cost (de la terț)", "Cost (terț)": "Cost (terț)", + "Cost piese (achiziție)": "Cost piese (achiziție)", "Cost/lead": "Cost/lead", "Costuri": "Costs", + "Coupé": "Coupé", + "Creanțe": "Receivables", "Creat": "Creat", "Creat de": "Created by", "Creat la": "Created at", @@ -317,6 +391,7 @@ "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.", "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.", "Credit": "Credit", + "Creează automat articolele noi în nomenclatură": "Creează automat articolele noi în nomenclatură", "Creează cerere": "Create lead", "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.", @@ -328,15 +403,18 @@ "Culoare": "Color", "Culoare brand": "Brand color", "Culoare în calendar": "Culoare în calendar", + "Cum folosești API-ul:": "Cum folosești API-ul:", "Cumul.": "Cumul.", "Cumulabil": "Cumulabil", "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.", "Curăță": "Clear", "Cutie": "Gearbox", - "Cutie de viteze": "Transmission", + "Cutie de viteze": "Gearbox", + "Cutie viteze": "Gearbox", "Câmp obligatoriu": "Required field", "Când": "Când", "Când & unde": "Când & unde", + "DCT": "DCT", "DOT": "DOT", "Da, confirmă": "Yes, confirm", "Da, șterge": "Yes, delete", @@ -344,15 +422,20 @@ "Dashboard": "Dashboard", "Data": "Date", "Data & ora": "Data & ora", + "Data *": "Data *", "Data actualizării": "Updated at", "Data comandă": "Data comandă", "Data creării": "Created at", + "Data deschiderii:": "Data deschiderii:", "Data factură": "Invoice date", "Data ieșire": "Delivery date", "Data intrare": "Intake date", + "Data modificării": "Modified at", + "Data nașterii": "Birth date", "Data plății": "Payment date", "Data sfârșit": "End date", "Data început": "Start date", + "Data închiderii:": "Data închiderii:", "Date": "Date", "Date generale": "Date generale", "Date insuficiente": "Date insuficiente", @@ -360,13 +443,16 @@ "Date personale": "Date personale", "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.", "Datorie": "Debt", + "Datorii": "Debts", "Datorii clienți": "Client debt", + "Datorii clienți (de încasat)": "Datorii clienți (de încasat)", "Daune": "Daune", "De către": "De către", "De la": "From", "De la (preț achiziție)": "De la (preț achiziție)", "De la data": "From date", "De la ora": "From time", + "De la rândul (sărim header) *": "De la rândul (sărim header) *", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", "De procesat": "To process", "Deal": "Deal", @@ -377,6 +463,7 @@ "Deblochează": "Unblock", "Decembrie": "December", "Decode VIN": "Decode VIN", + "Decodează": "Decodează", "Deconectare": "Logout", "Delete": "Delete", "Demo (pentru demonstrații sales)": "Demo (pentru demonstrații sales)", @@ -388,9 +475,12 @@ "Depozit gol": "Depozit gol", "Depozit implicit": "Default warehouse", "Depozit țintă": "Target warehouse", + "Depozitar": "Warehouse keeper", "Depublică": "Unpublish", "Depășit termen": "Overdue", + "Descarcă": "Download", "Descarcă PDF": "Download PDF", + "Descarcă QR (SVG)": "Descarcă QR (SVG)", "Descarcă factura": "Download invoice", "Descarcă template": "Download template", "Deschide": "Open", @@ -399,10 +489,12 @@ "Deschide fișa": "Open order", "Deschide fișa pentru aprobare lucrare/piesă.": "Open the order to approve work/part.", "Deschide tenantul": "Deschide tenantul", + "Deschide →": "Deschide →", "Deschis": "Opened", "Deschis la": "Opened at", "Descrescător": "Descending", "Descriere": "Description", + "Descriere (opțional)": "Descriere (opțional)", "Descriere produs": "Product description", "Detalii": "Details", "Detalii (opțional)": "Details (optional)", @@ -439,13 +531,16 @@ "Drept": "Permission", "Drepturi": "Permissions", "Duminică": "Sunday", + "Duminică: închis": "Duminică: închis", "Duplică": "Duplicate", "Duplică rând": "Duplicate row", "După": "După", + "După efectuarea transferului:": "După efectuarea transferului:", "Durată": "Duration", "Durată (sec)": "Durată (sec)", "Durată estimată": "Estimated duration", "Durată reală": "Actual duration", + "E timpul să schimbi anvelopele ": "E timpul să schimbi anvelopele ", "EJk...": "EJk...", "ETA": "ETA", "Echipament defect": "Broken equipment", @@ -454,6 +549,8 @@ "Editează": "Edit", "Editează drepturi": "Editează drepturi", "Editează produs": "Edit product", + "Eficiență": "Eficiență", + "Electric": "Electric", "Electrică": "Electrical", "Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate", "Eliberează": "Issue", @@ -474,28 +571,35 @@ "Ex: Lipsește filtrul Mann W712/83": "e.g. Missing filter Mann W712/83", "Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric", "Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...", + "Ex: fără lift, doar diagnoză...": "Ex: fără lift, doar diagnoză...", "Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.", "Excepție": "Excepție", "Excepții": "Overrides", "Excepții drepturi": "Permission overrides", + "Există deja un cont cu acest telefon.": "Există deja un cont cu acest telefon.", "Expiră": "Expiră", "Expiră < 7 zile": "Expires < 7 days", "Expiră la (opțional)": "Expiră la (opțional)", "Export": "Export", "Export CSV": "Export CSV", + "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:": "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:", + "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ă ```.", "Extras": "Statement", "Ești sigur?": "Are you sure?", + "FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU", "Facturi": "Invoices", "Facturi neplătite": "Unpaid invoices", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Invoice", "Factură importată": "Factură importată", "Factură nouă": "New invoice", + "Factură:": "Factură:", "Fallback când mecanicul nu are marja proprie setată. Lasă gol = 0%.": "Fallback când mecanicul nu are marja proprie setată. Lasă gol = 0%.", "Favicon": "Favicon", "Față-Dreapta": "Față-Dreapta", "Față-Stânga": "Față-Stânga", "Februarie": "February", + "Femeie": "Female", "Filters": "Filters", "Filtre": "Filters", "Filtru": "Filter", @@ -504,23 +608,27 @@ "Finanțe": "Finanțe", "Fișe": "Orders", "Fișe active": "Active orders", + "Fișe deschise": "Fișe deschise", "Fișe lucru": "Work orders", "Fișe închise": "Closed orders", "Fișier": "File", + "Fișier Excel (.xlsx) sau CSV *": "Fișier Excel (.xlsx) sau CSV *", "Fișiere": "Files", + "Fișierul nu există.": "Fișierul nu există.", "Fișă": "Order", "Fișă asociată": "Fișă asociată", "Fișă de lucru": "Work order", "Fișă lucru": "Fișă lucru", "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.": "Folosit dacă markup = 0.", + "Folosit ultima dată": "Folosit ultima dată", "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.", "Force logout": "Force logout", "Foto": "Photo", "Foto factură": "Foto factură", "Foto piesă": "Foto piesă", "Foto înainte / după": "Foto înainte / după", - "Fotografii": "Fotografii", + "Fotografii": "Photos", "Frâne": "Brakes", "Frâne, Ulei, ...": "Frâne, Ulei, ...", "Funcție": "Funcție", @@ -528,12 +636,21 @@ "Funcționalități incluse": "Funcționalități incluse", "Furnizor": "Supplier", "Furnizor (opțional)": "Furnizor (opțional)", + "Furnizor *": "Furnizor *", "Furnizor factură": "Invoice supplier", "Furnizor implicit": "Default supplier", "Furnizor preferat": "Furnizor preferat", "Furnizori": "Suppliers", "Fără TVA": "Without VAT", + "Fără acest cod, plata va fi greu de identificat.": "Fără acest cod, plata va fi greu de identificat.", + "Fără articol (manual)": "Fără articol (manual)", + "Fără client": "No client", + "Fără maistru": "Fără maistru", "Fără răspuns": "No answer", + "Fără stoc": "Out of stock", + "GNC": "CNG", + "GPL": "LPG", + "GRANT — adaugă dreptul": "GRANT — adaugă dreptul", "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.", "Gata": "Ready", "Gata de ridicare": "Ready for pickup", @@ -548,18 +665,24 @@ "Gol — trage un card aici": "Empty — drop a card here", "Grafic": "Chart", "Gravitate": "Gravitate", + "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.", + "Găsite (cu articol existent)": "Găsite (cu articol existent)", "Hartă daune": "Hartă daune", + "Hatchback": "Hatchback", + "Hibrid": "Hybrid", "IBAN": "IBAN", "ID": "ID", "IDNO / CUI": "IDNO / CUI", "Ianuarie": "January", + "Iarnă": "Winter", "Iarnă 2025-2026": "Iarnă 2025-2026", "Iconiță (emoji)": "Iconiță (emoji)", "Identificare": "Identification", "Identitate": "Identitate", "Ieri": "Yesterday", "Ieșire": "Logout", + "Ieșiri": "Outflow", "Imagine": "Image", "Imagine principală": "Main image", "Imagini": "Images", @@ -570,12 +693,15 @@ "Import factură (OCR)": "Import factură (OCR)", "Import factură Excel/CSV": "Import factură Excel/CSV", "Import factură via OCR": "Import factură via OCR", + "Import finalizat cu succes": "Import finalizat cu succes", "Import mașini din CSV": "Import mașini din CSV", + "Import nou": "Import nou", "Import reușit — Purchase {$purchase->number}": "Import reușit — Purchase {$purchase->number}", "Import: {$r['imported']} adăugate, {$r['skipped']} ignorate": "Import: {$r['imported']} adăugate, {$r['skipped']} ignorate", "Import: {$r['imported']} adăugați, {$r['skipped']} ignorați": "Import: {$r['imported']} adăugați, {$r['skipped']} ignorați", "Importă din CSV": "Import from CSV", "Importă din Excel": "Import from Excel", + "Importă lead-uri direct din Lead Ads forms.": "Importă lead-uri direct din Lead Ads forms.", "Inactiv": "Inactive", "Infopanel": "Dashboard", "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.": "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.", @@ -585,10 +711,11 @@ "Integrări de plată": "Integrări de plată", "Integrări externe": "Integrări externe", "Integrări salvate": "Integrări salvate", - "Interval": "Range", + "Interval": "Interval", "Interval dată": "Date range", "Interval orar": "Time range", "Intrat": "Intrat", + "Inventar": "Inventory", "Invitație": "Invitation", "Invitații": "Invitations", "Istoric depozitare": "Istoric depozitare", @@ -601,24 +728,32 @@ "KPI mecanici": "KPI mecanici", "Kanban": "Kanban", "Kilometraj": "Kilometraj", - "Km": "Km", + "Km": "km", "Km curent": "Current mileage", "Km ieșire": "Km out", "Km intrare": "Km in", - "Km parcurși": "Km driven", + "Km la ieșire:": "Km la ieșire:", + "Km parcurși": "Mileage", "La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.", "La revedere": "Goodbye", "La timp 90d": "La timp 90d", "La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.", "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.", "Lead-uri": "Lead-uri", + "Lead-uri pe sursă": "Lead-uri pe sursă", + "Legendă": "Legendă", + "Legendă:": "Legendă:", "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.": "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.", "Limbă": "Language", "Limbă default": "Default language", "Limite": "Limite", + "Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.", "Linii": "Linii", "Link client (QR)": "Link client (QR)", "Link tracking": "Tracking link", + "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.", + "Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj.\n\nMulțumim,": "Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj.\n\nMulțumim,", + "Lipsește bot token în setări.": "Lipsește bot token în setări.", "Lipsă": "Lipsă", "Lipsă piesă": "Missing part", "Liste configurabile": "Configurable lists", @@ -626,11 +761,12 @@ "Livrare": "Livrare", "Livrare (zile)": "Livrare (zile)", "Livrare gratuită peste": "Livrare gratuită peste", + "Livrat": "Delivered", "Loading": "Loading...", "Loc.": "Loc.", "Local": "Local", "Localizare & monedă": "Localization & currency", - "Locație": "Locație", + "Locație": "Location", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", "Login": "Login", @@ -646,12 +782,16 @@ "Lucrări": "Lucrări", "Lucrări la terți": "Lucrări la terți", "Lucrări terți": "Outsourced jobs", + "Luna aceasta": "This month", "Luna curentă": "Current month", "Luna trecută": "Last month", + "Luna următoare ▶": "Luna următoare ▶", "Lunar": "Lunar", "Luni": "Months", "Luni (zi)": "Monday", + "Lună": "Lună", "Lățime": "Lățime", + "MB folosiți": "MB folosiți", "MD00 AG00 0000 ...": "MD00 AG00 0000 ...", "MDL pipeline total": "MDL pipeline total", "MDL închise azi": "MDL closed today", @@ -663,8 +803,11 @@ "Mai mic = aplicat primul.": "Mai mic = aplicat primul.", "Maistru": "Master", "Maistru / Mecanic": "Maistru / Mecanic", + "Maistru / Recepție:": "Maistru / Recepție:", + "Manager": "Manager", "Manopere": "Labor lines", "Manoperă": "Labor", + "Manuală": "Manual", "Marca": "Marca", "Marchează Gata": "Mark ready", "Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).", @@ -682,6 +825,7 @@ "Marjă internă (%)": "Internal margin (%)", "Marjă internă (%) — override": "Marjă internă (%) — override", "Marjă internă (nu TVA)": "Internal margin (not VAT)", + "Marjă profit:": "Marjă profit:", "Marketing": "Marketing", "Marketing (UTM)": "Marketing (UTM)", "Markup": "Markup", @@ -695,6 +839,7 @@ "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Vehicles", "Mecanic implicit": "Default mechanic", + "Medie": "Medium", "Mediu": "Medium", "Merchant Code": "Merchant Code", "Mesaj": "Mesaj", @@ -703,6 +848,7 @@ "Mesaje AI/lună": "Mesaje AI/lună", "Metode de livrare": "Metode de livrare", "Metode plată": "Payment methods", + "Metodă": "Metodă", "Metodă plată": "Payment method", "Miercuri": "Wednesday", "Min.": "Min.", @@ -720,10 +866,12 @@ "Moldova-Agroindbank": "Moldova-Agroindbank", "Monedă": "Currency", "Monedă platformă": "Monedă platformă", + "Monovolum": "Minivan", "Motiv": "Reason", "Motor": "Engine", "Motor / Frâne / Electrică ...": "Motor / Frâne / Electrică ...", - "Motorizare": "Engine", + "Motorină": "Diesel", + "Motorizare": "Engine type", "Multiplicator": "Multiplier", "Mulțumim": "Thank you", "Mâine": "Tomorrow", @@ -732,8 +880,10 @@ "Necesită acțiune": "Needs action", "Necesită aprobare": "Needs approval", "Necesită aprobare client": "Needs client approval", + "Necesită atenție": "Needs attention", "Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.", "Necompletat": "Empty", + "Neconfirmat": "Unconfirmed", "Necunoscut": "Unknown", "Neplătit": "Unpaid", "Nepublicat": "Unpublished", @@ -743,25 +893,38 @@ "Neverificat": "Not verified", "New client": "New client", "New mașină": "New vehicle", + "Nicio cheltuială.": "Nicio cheltuială.", "Nicio comandă încă": "Nicio comandă încă", + "Nicio conversație": "Nicio conversație", "Nicio daună marcată": "Nicio daună marcată", + "Nicio factură emisă încă": "Nicio factură emisă încă", "Nicio factură generată": "Nicio factură generată", "Nicio fișă de lucru": "Nicio fișă de lucru", + "Nicio fișă în perioada selectată.": "Nicio fișă în perioada selectată.", "Nicio lucrare de caroserie": "Nicio lucrare de caroserie", "Nicio lucrare la terți": "Nicio lucrare la terți", + "Nicio manoperă efectuată.": "Nicio manoperă efectuată.", "Nicio mașină încă": "Nicio mașină încă", + "Nicio metodă de plată configurată. Contactează operatorul.": "Nicio metodă de plată configurată. Contactează operatorul.", "Nicio piesă implicită": "Nicio piesă implicită", + "Nicio piesă montată.": "Nicio piesă montată.", + "Nicio plată în perioada selectată.": "Nicio plată în perioada selectată.", + "Nicio programare în această perioadă.": "Nicio programare în această perioadă.", + "Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.", "Niciodată": "Never", "Niciun client magazin": "Niciun client magazin", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", "Niciun coeficient": "Niciun coeficient", + "Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).", "Niciun depozit": "Niciun depozit", "Niciun istoric": "Niciun istoric", "Niciun lot înregistrat": "Niciun lot înregistrat", "Niciun mecanic implicit": "Niciun mecanic implicit", + "Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.", "Niciun plan definit": "Niciun plan definit", "Niciun preț înregistrat": "Niciun preț înregistrat", + "Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉", "Niciun set de anvelope": "Niciun set de anvelope", "Niciun subcontractor": "Niciun subcontractor", "Niciun tenant încă": "Niciun tenant încă", @@ -774,6 +937,8 @@ "Notificare": "Notification", "Notifications": "Notifications", "Notificări": "Notifications", + "Notificări clienți": "Client notifications", + "Notificările push funcționează ✅": "Notificările push funcționează ✅", "Notițe": "Notes", "Notițe / Reclamație": "Notes / Complaint", "Notițe / reclamație": "Notes / complaint", @@ -788,6 +953,7 @@ "Nr. poliță": "Nr. poliță", "Nr. telefon": "Phone number", "Nr. înmatriculare": "License plate", + "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 am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor", "Nu există date": "No data", @@ -799,20 +965,32 @@ "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", "Nume (descriere)": "Nume (descriere)", + "Nume *": "Nume *", "Nume admin": "Nume admin", "Nume canal": "Nume canal", + "Nume familie": "Last name", "Nume template": "Nume template", + "Nume, cod articol, brand...": "Nume, cod articol, brand...", + "Nume:": "Nume:", "Numele este obligatoriu": "Numele este obligatoriu", + "Numerar": "Cash", + "Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)", "Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.", "OCR eșuat": "OCR eșuat", "Observații": "Notes", + "Obține token cu": "Obține token cu", "Octombrie": "October", + "Ok": "OK", "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).", "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", - "Ora": "Hour", + "Operator platformă:": "Operator platformă:", + "Operatorul (tu) creezi factură:": "Operatorul (tu) creezi factură:", + "Operatorul confirmă manual factura ca plătită": "Operatorul confirmă manual factura ca plătită", + "Operatorul îți va emite factură când e timpul abonamentului.": "Operatorul îți va emite factură când e timpul abonamentului.", + "Ora": "Time", "Ora deschidere": "Opened at", "Ora ieșire": "Delivery time", "Ora intrare": "Intake time", @@ -820,6 +998,7 @@ "Ora începere": "Start time", "Ora închidere": "Closed at", "Oraș": "City", + "Oraș:": "Oraș:", "Ordine": "Order", "Ordonare": "Sort", "Ordonat": "Sorted", @@ -828,12 +1007,15 @@ "Ore (normă)": "Ore (normă)", "Ore disponibile / zi": "Available hours / day", "Ore lucrate": "Hours worked", + "Ore programate": "Ore programate", + "Ore total": "Ore total", "Ore/zi": "Hours/day", "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.", "PDF": "PDF", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", "PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.", "PO": "PO", + "POS": "POS", "Pagina": "Page", "Pagini": "Pages", "Panou": "Panel", @@ -847,31 +1029,48 @@ "Pas 1 — Datele afacerii": "Pas 1 — Datele afacerii", "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", + "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", + "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Pause", "Pe pauză": "Paused", "Penalizări": "Penalizări", + "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.", + "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.", + "Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.": "Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.", + "Pentru detalii, contactați administratorul platformei.": "Pentru detalii, contactați administratorul platformei.", "Per page": "Per page", "Perioada (YYYY-MM)": "Perioada (YYYY-MM)", "Perioadă": "Period", "Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)", "Perioadă raport": "Report period", "Perioadă trial (zile)": "Perioadă trial (zile)", + "Perioadă:": "Perioadă:", "Permisiuni": "Permisiuni", "Persoană contact": "Persoană contact", + "Persoană fizică": "Persoană fizică", + "Persoană juridică": "Persoană juridică", "Personalizat": "Custom", + "Pierdut": "Lost", "Pierdute": "Pierdute", "Piese": "Parts", + "Piese (vânzare)": "Piese (vânzare)", "Piese impl.": "Piese impl.", "Piese implicite": "Piese implicite", + "Piese în stoc": "Piese în stoc", "Piesă": "Part", "Piesă din catalog": "Piesă din catalog", "Pipeline": "Pipeline", "Plan": "Plan", "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.", + "Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare", "Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)", "Plată": "Payment", "Plată & total": "Payment & total", + "Plată anulată": "Plată anulată", + "Plată reușită": "Plată reușită", + "Plată reușită!": "Plată reușită!", "Plângere client": "Plângere client", + "Plătește direct din bancă (1-3 zile)": "Plătește direct din bancă (1-3 zile)", "Plătit": "Paid", "Plătit către terț": "Plătit către terț", "Plătit de": "Paid by", @@ -882,6 +1081,7 @@ "Plăți internaționale. Mai potrivit pentru clienți din afara MD.": "Plăți internaționale. Mai potrivit pentru clienți din afara MD.", "Pod": "Bay", "Pod / Spațiu lucru": "Bay / Work space", + "Pod / spațiu": "Bay / space", "Politica de confidențialitate": "Privacy policy", "Politici": "Policies", "Pontaj": "Timesheet", @@ -890,7 +1090,11 @@ "Post actualizat": "Post actualizat", "Poze": "Photos", "Pozele auto": "Vehicle photos", + "Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).": "Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).", + "Pre-completat automat la programări noi pe acest pod.": "Pre-completat automat la programări noi pe acest pod.", + "Precedent": "Previous", "Prefix facturi": "Prefix facturi", + "Prenume": "First name", "Preview": "Preview", "Preview PDF": "Preview PDF", "Previzualizare": "Preview", @@ -902,12 +1106,14 @@ "Preț anual": "Preț anual", "Preț client": "Client price", "Preț contextual": "Preț contextual", + "Preț de bază (markup)": "Preț de bază (markup)", "Preț fix": "Preț fix", "Preț fix (MDL)": "Preț fix (MDL)", "Preț implicit": "Default price", "Preț inteligent": "Smart price", "Preț lunar": "Preț lunar", "Preț orientativ (MDL)": "Preț orientativ (MDL)", + "Preț recomandat": "Preț recomandat", "Preț unit.": "Preț unit.", "Preț unitar": "Preț unitar", "Preț vz.": "Preț vz.", @@ -915,6 +1121,7 @@ "Preț/h": "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.", + "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", "Print": "Print", "Print factură": "Print invoice", @@ -927,6 +1134,7 @@ "Procesare carduri online. Funcționează în 30+ țări. Comision ~2.9% + 0.30€/tranzacție.": "Procesare carduri online. Funcționează în 30+ țări. Comision ~2.9% + 0.30€/tranzacție.", "Procesator de plăți Moldova. Acceptă carduri MAIB, MICB, Victoriabank, OTP, MD Cash, Bitcoin, e-money. Comision negociabil ~1.8-2.5%.": "Procesator de plăți Moldova. Acceptă carduri MAIB, MICB, Victoriabank, OTP, MD Cash, Bitcoin, e-money. Comision negociabil ~1.8-2.5%.", "Procesează": "Process", + "Producător": "Producător", "Produs": "Product", "Produse": "Products", "Profesie": "Profesie", @@ -934,13 +1142,18 @@ "Profile": "Profile", "Profit": "Profit", "Profit (luna)": "Profit (month)", + "Profit brut": "Gross profit", + "Profit net": "Net profit", "Programare": "Appointment", "Programare adăugată": "Programare adăugată", "Programare confirmată": "Programare confirmată", "Programare creată · mâine 10:00": "Appointment created · tomorrow 10:00", "Programare mutată": "Programare mutată", + "Programare nouă": "Programare nouă", "Programare ștearsă": "Programare ștearsă", + "Programarea dvs. este confirmată:": "Programarea dvs. este confirmată:", "Programat": "Scheduled", + "Programați-vă online sau sunați la": "Programați-vă online sau sunați la", "Programează": "Schedule", "Programează întâlnire": "Schedule meeting", "Programări": "Appointments", @@ -958,12 +1171,16 @@ "Publishable key": "Publishable key", "Putere": "Power", "Pâlnie": "Pipeline", - "Până la": "Until", + "Până la": "To", "Până la (gol = ∞)": "Până la (gol = ∞)", "Până la data": "To date", "Până la ora": "To time", + "Până la:": "Până la:", "QR": "QR", "ROI": "ROI", + "RON — Leu românesc": "RON — Leu românesc", + "RUB — Rublă": "RUB — Rublă", + "Raft": "Shelf", "Rapoarte": "Reports", "Raport": "Report", "Rata conversie": "Conversion rate", @@ -974,12 +1191,14 @@ "Recalculează": "Recalculează", "Recent": "Recent", "Recente": "Recent", - "Recepție": "Recepție", + "Recente / restul": "Recente / restul", + "Recepție": "Receive", + "Recepție acum:": "Recepție acum:", "Recepție completă — batch-uri create": "Recepție completă — batch-uri create", "Recepție totală": "Recepție totală", "Recepționat": "Recepționat", "Recepționat — batch creat": "Recepționat — batch creat", - "Recepționată": "Recepționată", + "Recepționată": "Received", "Recepționează": "Recepționează", "Recomandat": "Recommended", "Recomandate": "Recommended", @@ -990,9 +1209,11 @@ "Redeschide fișa": "Reopen order", "Ref.": "Ref.", "Ref. lot/factură": "Ref. lot/factură", - "Referință": "Referință", + "Referință": "Reference", "Referință (Stripe id, transfer)": "Referință (Stripe id, transfer)", "Referință (chitanță / tranzacție)": "Referință (chitanță / tranzacție)", + "Refuzat": "Rejected", + "Refuzat de client": "Rejected by client", "Regenerează": "Regenerate", "Register": "Register", "Regulă": "Rule", @@ -1006,6 +1227,7 @@ "Rerating": "Rerating", "Reset": "Reset", "Reset parolă": "Reset parolă", + "Resetare parolă": "Resetare parolă", "Resetează": "Reset", "Resetează 2FA": "Reset 2FA", "Resetează filtre": "Reset filters", @@ -1018,34 +1240,44 @@ "Restanță": "Restanță", "Restaurează": "Restore", "Restituire": "Restituire", + "Retur": "Return", "Returnat": "Returnat", "Revizie": "Service", "Revizii": "Services", - "Rezervat": "Rezervat", + "Revocă": "Revocă", + "Rezervare": "Reservation", + "Rezervat": "Reserved", + "Rezervă o programare": "Rezervă o programare", "Rezultat": "Result", "Rezultate": "Results", "Rezumat": "Summary", "Reîmprospătează": "Refresh", "Ridicat": "High", + "Robotizată": "Robotized", "Rol": "Role", "Rol primar": "Primary role", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Rolul principal — sincronizat automat cu drepturile RBAC.", "Roluri suplimentare": "Additional roles", "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", + "Română": "Română", "Rotire": "Rotate", "Rulează `php artisan push:vapid` și adaugă cheile în .env.": "Rulează `php artisan push:vapid` și adaugă cheile în .env.", "Rând": "Row", "Rânduri": "Rows", "Rânduri per pagină": "Rows per page", "Rămas": "Rămas", + "Răspuns": "Responded", + "Răspuns AI ne-parsabil ca JSON.": "Răspuns AI ne-parsabil ca JSON.", "SMS": "SMS", - "Salarii": "Payroll", + "Salarii": "Salaries", "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Salary & margin", "Salariu bază": "Salariu bază", + "Sales": "Sales", "Salut": "Hi", "Salvează": "Save", + "Salvează configurația pentru acest furnizor": "Salvează configurația pentru acest furnizor", "Salvează schimbările": "Save changes", "Salvează și adaugă altul": "Save and add another", "Salvează și continuă": "Save and continue", @@ -1053,16 +1285,20 @@ "Sarcini": "Tasks", "Sarcini restante": "Overdue tasks", "Sarcină": "Task", + "Sau generează unul aici (recomandat pentru integrări permanente)": "Sau generează unul aici (recomandat pentru integrări permanente)", "Save": "Save", "Scade din stoc piesele legate de catalog (FIFO) și marchează comanda confirmată.": "Scade din stoc piesele legate de catalog (FIFO) și marchează comanda confirmată.", "Scadent": "Scadent", "Scadent la": "Scadent la", "Scadență": "Due date", + "Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.", "Scaner cod QR / Bare": "Scaner cod QR / Bare", "Scoate din magazin": "Scoate din magazin", + "Scrie mesajul tău...": "Scrie mesajul tău...", "Scăzut": "Low", "Se completează automat când clientul scrie la bot": "Se completează automat când clientul scrie la bot", "Se procesează...": "Processing...", + "Se salvează...": "Se salvează...", "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.": "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.", "Search": "Search", "Secret": "Secret", @@ -1087,6 +1323,7 @@ "Semnătură digitală": "Digital signature", "Senzori TPMS": "Senzori TPMS", "Septembrie": "September", + "Serie": "Series", "Serie factură": "Invoice series", "Service ID": "Service ID", "Servicii": "Services", @@ -1101,10 +1338,14 @@ "Setează webhook": "Setează webhook", "Settings": "Settings", "Seturi anvelope": "Tire sets", + "Setări avansate": "Advanced settings", "Setări companie": "Company settings", + "Setări generale": "General settings", + "Setări plăți": "Payment settings", "Setări plăți salvate": "Setări plăți salvate", "Setări salvate": "Setări salvate", "Setările au fost salvate. Hai să adăugăm primul client.": "Setările au fost salvate. Hai să adăugăm primul client.", + "Sex": "Gender", "Sezon": "Sezon", "Sfat": "Tip", "Sign in": "Sign in", @@ -1113,14 +1354,17 @@ "Sincronizează": "Sync", "Sistem": "Sistem", "Site PSauto": "Public site", + "Slot": "Slot", "Slug": "Slug", "Sold": "Balance", + "Sosit": "Arrived", "Spate-Dreapta": "Spate-Dreapta", "Spate-Stânga": "Spate-Stânga", "Spațiu de lucru adăugat": "Spațiu de lucru adăugat", "Specialitate": "Specialitate", "Specializare": "Specializare", "Specificații": "Specificații", + "Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.": "Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.", "Standard": "Standard", "Stare": "Stare", "Stare timp": "Time state", @@ -1132,7 +1376,10 @@ "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)", "Storage (MB)": "Storage (MB)", + "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", + "Sub minim": "Below minimum", "Subcontractare": "Subcontracting", "Subcontractor": "Subcontractor", "Subcontractori": "Subcontractors", @@ -1142,24 +1389,34 @@ "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", "Subtotal": "Subtotal", "Succes": "Success", + "Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.", "Sumă": "Amount", + "Sumă achitată": "Sumă achitată", + "Sumă:": "Sumă:", "Sunet": "Sound", "Sunt de acord": "I agree", "Sunteți sigur?": "Are you sure?", "Sună": "Call", + "Sună-i sau trimite-le un email cu suma datorată.": "Sună-i sau trimite-le un email cu suma datorată.", + "Suport": "Support", "Sursă": "Source", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Suspended", "Suspendă": "Suspendă", "Suspensie": "Suspension", "Sâmbătă": "Saturday", + "Sâmbătă: 09:00 – 14:00": "Sâmbătă: 09:00 – 14:00", + "Săpt": "Săpt", "Săpt. lucrătoare": "Working days", + "Săpt. următoare →": "Săpt. următoare →", + "Săptămâna aceasta": "This week", "Săptămâna curentă": "Current week", "Săptămâna trecută": "Last week", "Săptămâni": "Weeks", "TPMS": "TPMS", "TPMS & foto": "TPMS & foto", "TVA": "VAT", + "Tablă": "Steel", "Tarif normo-oră": "Hour rate", "Tarif normo-oră (poți schimba oricând)": "Tarif normo-oră (poți schimba oricând)", "Tarif orar (MDL)": "Hourly rate (MDL)", @@ -1173,6 +1430,7 @@ "Telefon": "Phone", "Telefon alternativ": "Telefon alternativ", "Telefon principal": "Telefon principal", + "Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.", "Telefonie": "Calls", "Telegram bot": "Telegram bot", "Telegram chat ID": "Telegram chat ID", @@ -1183,6 +1441,7 @@ "Tenant suspendat.": "Tenant suspendat.", "Tenants recenți": "Tenants recenți", "Tenants total": "Total tenants", + "Tenantul vede factura în interiorul lui la": "Tenantul vede factura în interiorul lui la", "Termen": "Due date", "Termen limită": "Deadline", "Termene": "Termene", @@ -1190,6 +1449,7 @@ "Termeni de plată": "Termeni de plată", "Termeni plată": "Termeni plată", "Termeni și condiții": "Terms & conditions", + "Terminal": "Terminal", "Termină": "Finish", "Terț": "Terț", "Test notificare push": "Test notificare push", @@ -1216,39 +1476,64 @@ "Toate câmpurile": "All fields", "Toate limbile": "All languages", "Toate ok": "All OK", + "Toate piesele sunt în stoc.": "Toate piesele sunt în stoc.", "Toate plătite": "All paid", "Toate plățile": "All payments", "Toate produsele": "All products", "Toate rolurile": "All roles", + "Toate statusurile": "Toate statusurile", + "Toate timpurile": "Toate timpurile", "Token generat!": "Token generat!", "Token public": "Token public", "Token revocat": "Token revocat", + "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 deals active": "Total active deals", "Total general": "Grand total", + "Total ieșiri": "Total ieșiri", + "Total intrări": "Total intrări", "Total net": "Total net", "Total plătit": "Total paid", "Total rezultate": "Total results", + "Total venituri": "Total venituri", "Total în baza de date": "Total in database", + "Total încasat": "Total încasat", "Total înregistrate": "Total registered", + "Toți VIP-ii sunt în contact recent.": "Toți VIP-ii sunt în contact recent.", "Toți clienții": "All clients", + "Toți mecanicii": "Toți mecanicii", "Toți utilizatorii": "All users", "Tracking & ETA": "Tracking & ETA", + "Tracțiune": "Drive", "Trage fișierul aici": "Drop file here", + "Transfer": "Transfer", + "Transfer bancar": "Bank transfer", + "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway", + "Transport": "Transport", "Trial expiră la": "Trial expiră la", "Trimis": "Sent", + "Trimis · fără răspuns": "Sent · no response", "Trimite": "Send", "Trimite SMS": "Send SMS", + "Trimite SMS-uri prin gateway local (Moldcell/Orange API).": "Trimite SMS-uri prin gateway local (Moldcell/Orange API).", + "Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze.": "Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze.", "Trimite email": "Send email", "Trimite emailul standard de resetare a parolei către clientul magazinului.": "Trimite emailul standard de resetare a parolei către clientul magazinului.", "Trimite factură": "Send invoice", "Trimite invitație": "Send invitation", "Trimite link resetare": "Send reset link", "Trimite mesaj": "Send message", + "Trimite mesaje template către clienți (programări, confirmări).": "Trimite mesaje template către clienți (programări, confirmări).", "Trimite notificare": "Send notification", + "Trimite prin email": "Send by email", "Trimite reminder după X zile fără vizită": "Trimite reminder după X zile fără vizită", "Trimite reset parolă": "Trimite reset parolă", "UM": "Unit", + "URL secret pentru POST direct cu lead-uri din site-ul tău.": "URL secret pentru POST direct cu lead-uri din site-ul tău.", "Ulei": "Oil", "Ultim login": "Last login", "Ultima actualizare": "Last updated", @@ -1260,14 +1545,21 @@ "Urgent": "Urgent", "Urgente": "Urgent", "Urgență": "Urgency", + "Urmărește comanda →": "Urmărește comanda →", + "Următor": "Next", + "Următorul": "Next", + "Următorul →": "Următorul →", "User API": "User API", "Useri": "Useri", + "Utilități": "Utilities", "Utilizator": "User", "Utilizatori": "Users", + "Uzat": "Worn", "Uzură (mm) per poziție": "Uzură (mm) per poziție", "Uzură min": "Uzură min", "VIN": "VIN", "VIN căutare & piese": "VIN căutare & piese", + "VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.", "VIN-căutare": "VIN search", "Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.", "Va fi adăugată în Cerere nouă": "Will be added to \"New lead\"", @@ -1276,12 +1568,14 @@ "Val.": "Val.", "Valoare": "Valoare", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}", + "Vară": "Summer", "Vehicul": "Vehicle", "Vehicul existent": "Existing vehicle", "Vehicul nou": "New vehicle", "Venit": "Revenue", "Venit generat": "Venit generat", "Venit luna curentă": "Current month revenue", + "Venit luna trecută": "Venit luna trecută", "Venit manopere": "Venit manopere", "Venituri": "Revenues", "Verificare": "Verification", @@ -1297,12 +1591,20 @@ "Vizual": "Visual", "Vizualizează": "View", "Vizualizări": "Views", + "Vânzări": "Vânzări", "Vârstă max (ani)": "Max age (years)", "Vârstă min (ani)": "Min age (years)", + "Vă așteptăm! 🚗": "Vă așteptăm! 🚗", + "Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.": "Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.", + "Vă mulțumim": "Thank you", + "Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!", + "Vă mulțumim!": "Vă mulțumim!", + "Văzut": "Seen", "Web Push neconfigurat": "Web Push neconfigurat", "Webhook": "Webhook", "Webhook (Notify URL)": "Webhook (Notify URL)", "Webhook eșuat": "Webhook eșuat", + "Webhook intrări (formulare site)": "Webhook intrări (formulare site)", "Webhook secret": "Webhook secret", "Webhook setat — botul e gata": "Webhook setat — botul e gata", "Weekend": "Weekend", @@ -1312,6 +1614,7 @@ "XLS": "XLS", "Yes": "Yes", "ZIP": "ZIP", + "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.", "Zile": "Days", "Zile libere": "Days off", "Zile livrare": "Zile livrare", @@ -1319,20 +1622,24 @@ "Zonă": "Zonă", "Zoom in": "Zoom in", "Zoom out": "Zoom out", + "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via", "achiziție": "achiziție", "achiziții": "achiziții", "active": "active", "actualizat": "updated", "angajați": "angajați", "apasă": "click", + "asistent gândește...": "asistent gândește...", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", + "call": "Call", "canale marketing": "canale marketing", "cheltuială": "cheltuială", "client": "client", "client magazin": "client magazin", "clienți": "clients", "clienți magazin": "clienți magazin", + "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.", "coeficient": "coefficient", "coeficienți preț": "coeficienți preț", "comandă": "comandă", @@ -1343,19 +1650,26 @@ "ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express", "ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", + "facebook": "Facebook", "factură": "factură", "finalizat": "completed", + "fișa de lucru completă": "fișa de lucru completă", "fișe lucru": "fișe lucru", "fișă": "fișă", "fără client": "no client", + "google": "Google", "h norm": "h norm", "h real": "h real", + "instagram": "Instagram", + "liber/ușor": "liber/ușor", + "linii neîncasate.": "linii neîncasate.", "lucrare caroserie": "lucrare caroserie", "lucrare terți": "lucrare terți", "lucrări caroserie": "lucrări caroserie", "lucrări terți": "lucrări terți", "mașini": "vehicles", "mașină": "vehicle", + "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).", "new": "new", "niciodată": "niciodată", "norme-ore": "norme-ore", @@ -1381,6 +1695,8 @@ "portal.invitation.invalid_title": "portal.invitation.invalid_title", "portal.invitation.new_password": "portal.invitation.new_password", "portal.invitation.title_accept": "portal.invitation.title_accept", + "portal.invitation.welcome_body": "portal.invitation.welcome_body", + "portal.invitation.welcome_name": "portal.invitation.welcome_name", "portal.shop.add_to_cart": "portal.shop.add_to_cart", "portal.shop.address_delivery": "portal.shop.address_delivery", "portal.shop.all_categories": "portal.shop.all_categories", @@ -1408,14 +1724,18 @@ "portal.shop.forgot_title": "portal.shop.forgot_title", "portal.shop.full_name": "portal.shop.full_name", "portal.shop.have_account": "portal.shop.have_account", + "portal.shop.hello_name": "portal.shop.hello_name", "portal.shop.in_stock": "portal.shop.in_stock", "portal.shop.in_stock_only": "portal.shop.in_stock_only", + "portal.shop.in_stock_qty": "portal.shop.in_stock_qty", "portal.shop.login": "portal.shop.login", "portal.shop.logout": "portal.shop.logout", "portal.shop.my_account": "portal.shop.my_account", + "portal.shop.my_orders": "portal.shop.my_orders", "portal.shop.no_account": "portal.shop.no_account", "portal.shop.no_orders_yet": "portal.shop.no_orders_yet", "portal.shop.no_parts_found": "portal.shop.no_parts_found", + "portal.shop.no_parts_found_for": "portal.shop.no_parts_found_for", "portal.shop.notes": "portal.shop.notes", "portal.shop.on_order": "portal.shop.on_order", "portal.shop.order_date": "portal.shop.order_date", @@ -1453,6 +1773,7 @@ "portal.shop.vin_invalid": "portal.shop.vin_invalid", "portal.shop.vin_manufacturer": "portal.shop.vin_manufacturer", "portal.shop.vin_region": "portal.shop.vin_region", + "portal.shop.vin_search_parts": "portal.shop.vin_search_parts", "portal.shop.vin_title": "portal.shop.vin_title", "portal.shop.vin_year": "portal.shop.vin_year", "portal.tracking.approval_needed_body": "portal.tracking.approval_needed_body", @@ -1469,48 +1790,67 @@ "portal.tracking.ready_estimated": "portal.tracking.ready_estimated", "portal.tracking.recommendations": "portal.tracking.recommendations", "portal.tracking.stages": "portal.tracking.stages", + "portal.tracking.title_fisa": "portal.tracking.title_fisa", "portal.tracking.unit_pcs": "portal.tracking.unit_pcs", "portal.tracking.what_asked": "portal.tracking.what_asked", "posturi de lucru": "posturi de lucru", "programări": "programări", + "programări active": "programări active", + "programări neconfirmate < 24h": "programări neconfirmate < 24h", + "referral": "Referral", "reguli markup": "reguli markup", "regulă": "regulă", "sau": "or", "set anvelope": "set anvelope", "seturi anvelope": "seturi anvelope", + "site": "Website", "subcontractor": "subcontractor", "subcontractori": "subcontractori", + "telegram": "Telegram", "template-uri": "template-uri", + "ultima fișă": "ultima fișă", + "ușor": "ușor", "vip": "vip", + "walk_in": "Walk-in", + "whatsapp": "WhatsApp", "Împărtășește": "Share", "În așteptare": "Pending", + "În așteptare aprobare": "Awaiting approval", "În curs": "In progress", - "În depozit": "In warehouse", + "În depozit": "In stock", "În lucru": "In progress", "În pipeline": "In pipeline", "În trial": "In trial", "Înainte": "Back", + "Înapoi": "Back", + "Încarcă": "Upload", "Încarcă fișier": "Upload file", "Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV", "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.", + "Încasări": "Income", "Încasări (luna)": "Income (month)", + "Încasări pe metodă": "Încasări pe metodă", "Începe": "Start", "Începe lucrul": "Start work", "Închide": "Close", "Închide fișa": "Close order", "Închis": "Closed", + "Închis (Duminică/sărbătoare)": "Închis (Duminică/sărbătoare)", "Închis la": "Closed at", "Închise azi": "Closed today", "Încărcare STO": "Workshop load", + "Încărcare celulă": "Încărcare celulă", "Încărcare service": "Workshop load", "Înregistrare": "Register", "Înregistrat": "Registered", "Î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ă seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.": "Înregistrează seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.", + "Î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": "Service templates", "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese", "Șablon serviciu": "Service template", + "Șterge": "Delete", "Șterge imagine": "Delete image", "Șterge produs": "Delete product", "Șterge rând": "Delete row", @@ -1521,14 +1861,65 @@ "Șters la": "Deleted at", "șabloane servicii": "șabloane servicii", "șablon": "șablon", + "șters": "șters", + "Țară": "Țară", "Ține-mă minte": "Remember me", + "— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)", + "— fără pod —": "— fără pod —", + "← Săpt. anterioară": "← Săpt. anterioară", + "← Înapoi": "← Înapoi", + "← Înapoi la AutoCRM": "← Înapoi la AutoCRM", + "← Înapoi la facturi": "← Înapoi la facturi", + "→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials", + "→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus", + "↗ Deschide Purchase": "↗ Deschide Purchase", + "↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament", + "⏹ Oprește": "⏹ Oprește", + "◀ Luna precedentă": "◀ Luna precedentă", + "⚖️ Balanță": "⚖️ Balanță", + "⚙ Cum funcționează:": "⚙ Cum funcționează:", "⚠ Acțiune necesară": "⚠ Action needed", + "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.", + "⚠ Fără plan": "⚠ Fără plan", + "⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:", + "⚠ Recomandări": "⚠ Recomandări", + "⚠ Recomandări:": "⚠ Recomandări:", + "⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):", + "⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.", + "⚠️ Stoc minim atins": "⚠️ Stoc minim atins", + "✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!", + "✏ Editează pod": "✏ Editează pod", "✓ Achitat": "✓ Paid", "✓ Pe abonament plătit": "✓ On paid subscription", + "⬇ Descarcă backup acum": "⬇ Descarcă backup acum", + "⭐ VIP fără contact recent": "⭐ VIP fără contact recent", "🅿️ PayPal": "🅿️ PayPal", "🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)", "🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!", + "🎉 Termină configurarea": "🎉 Termină configurarea", "🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite", + "🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar", "🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)", - "💳 Stripe": "💳 Stripe" + "👥 Clienți": "👥 Clienți", + "💰 Finanțe": "💰 Finanțe", + "💰 Fișe neplătite": "💰 Fișe neplătite", + "💳 Plată confirmată": "💳 Plată confirmată", + "💳 Plătește": "💳 Plătește", + "💳 Stripe": "💳 Stripe", + "💾 Salvează setările": "💾 Salvează setările", + "📅 Programare confirmată": "📅 Programare confirmată", + "📊 Încărcare": "📊 Încărcare", + "📋 Copiază": "📋 Copiază", + "📍 Locație & contact": "📍 Locație & contact", + "📚 Cum se face plata în sistem:": "📚 Cum se face plata în sistem:", + "📦 Caută piesă în catalog": "📦 Caută piesă în catalog", + "📦 Export complet date tenant": "📦 Export complet date tenant", + "📷 Pornește scanner": "📷 Pornește scanner", + "🖨 PDF programări": "🖨 PDF programări", + "🖨 Tipărește": "🖨 Tipărește", + "🗑 Șterge": "🗑 Șterge", + "😴 Clienți pierduți": "😴 Clienți pierduți", + "🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM", + "🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare", + "🚗 Mărci suportate": "🚗 Mărci suportate" } \ No newline at end of file diff --git a/lang/ru.json b/lang/ru.json index 2f9777f..5b70087 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -9,7 +9,11 @@ "% marja piese": "% marja piese", "% marjă implicit": "% маржи по умолчанию", "% piese": "% piese", + "+ Conversație nouă": "+ Новый чат", + "+ Pod / spațiu nou": "+ Новый пост / место", + "+ Programare nouă": "+ Новая запись", "+1 {$item->article} — {$item->qty_received}/{$item->qty}": "+1 {$item->article} — {$item->qty_received}/{$item->qty}", + ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.": ". Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.", "0 = dezactivat": "0 = dezactivat", "1.15 = +15% peste prețul de bază. 0.95 = -5%.": "1.15 = +15% peste prețul de bază. 0.95 = -5%.", "123456:ABC-XYZ...": "123456:ABC-XYZ...", @@ -19,24 +23,31 @@ "> 0 calculează automat prețul client.": "> 0 calculează automat prețul client.", "A1-03": "A1-03", "AGRNMD2X": "AGRNMD2X", - "AI: preț recomandat": "AI: preț recomandat", - "AI: recomandări": "AI: recomandări", - "AI: sugerează diagnostic": "AI: sugerează diagnostic", + "AI provider": "AI-провайдер", + "AI: preț recomandat": "AI: рекомендованная цена", + "AI: recomandări": "AI: рекомендации", + "AI: sugerează diagnostic": "AI: подсказать диагноз", "API Tokens": "API Tokens", "AUTOCRM_001": "AUTOCRM_001", "AYS...": "AYS...", - "Abonament": "Abonament", - "Abonament până la": "Abonament până la", - "Abonați": "Abonați", + "Abonament": "Подписка", + "Abonament până la": "Подписка до", + "Abonamentul se extinde automat": "Подписка продлевается автоматически", + "Abonamentul tău a fost extins.": "Ваша подписка продлена.", + "Abonat": "Подписан", + "Abonați": "Подписчики", "Absent": "Отсутствует", "Accept": "Принимаю", + "Acceptă invitația": "Принять приглашение", "Acces": "Acces", "Acces în aplicație (opțional)": "Acces în aplicație (opțional)", "Această acțiune este ireversibilă": "Это действие необратимо", + "Acest email a fost generat automat. Vă rugăm nu răspundeți.": "Это письмо сгенерировано автоматически. Пожалуйста, не отвечайте.", "Achitat": "Оплачено", "Achitat azi": "Оплачено сегодня", "Achiziții": "Закупки", - "Acord": "Соглашение", + "Acord": "Согласовано", + "Acord client": "Согласование клиента", "Acordat de": "Acordat de", "Actions": "Действия", "Activ": "Активный", @@ -60,6 +71,7 @@ "Acțiuni rapide": "Быстрые действия", "Acțiuni în bulk": "Массовые действия", "Acțiuni în masă": "Массовые действия", + "Adaugă": "Добавить", "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.": "Adaugă atelierele terțe la care trimiți lucrări (turbo, cutii, vopsitorie, PDR) și urmărește costul + marja.", "Adaugă auto": "Добавить авто", "Adaugă cerere": "Добавить заявку", @@ -70,6 +82,7 @@ "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": "Добавить поставщика", + "Adaugă header": "Добавить заголовок", "Adaugă imagine": "Добавить изображение", "Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.": "Adaugă mașini manual sau importă din CSV. Folosește VIN-căutare pentru decoder rapid și completare automată brand/model/an.", "Adaugă notă": "Добавить заметку", @@ -89,10 +102,13 @@ "Adaugă utilizator": "Добавить пользователя", "Adaugă vehicul": "Добавить транспорт", "Admin tenant (la creare)": "Admin tenant (la creare)", + "Administrator": "Администратор", "Adresă": "Адрес", "Adresă IP": "IP-адрес", - "Adresă email": "Адрес email", + "Adresă email": "Email", + "Adresă livrare:": "Адрес доставки:", "Afișează detalii marjă la procesele calculate": "Afișează detalii marjă la procesele calculate", + "Ai cerut resetarea parolei pentru contul tău de magazin. Apasă linkul de mai jos ca să setezi o parolă nouă:": "Вы запросили сброс пароля для вашего аккаунта магазина. Нажмите ссылку ниже, чтобы задать новый пароль:", "Ai deja cont?": "Уже есть аккаунт?", "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\".", @@ -113,19 +129,27 @@ "Alege tip": "Выбрать тип", "Alege vehicul": "Выбрать транспорт", "Alfabetic": "По алфавиту", + "Aliaj": "Легкосплавный", + "All-Season": "Всесезонные", + "Alt": "Другой", + "Alte": "Прочее", "Alte cheltuieli": "Прочие расходы", "Altă problemă": "Другая проблема", "An": "Год", "An fabricație": "Год выпуска", + "An model": "Модельный год", + "An model (estimat)": "Модельный год (оценка)", "Angajat din": "Angajat din", "Ani": "Годы", "Anonim": "Аноним", "Antet": "Шапка", "Antet fișă": "Шапка наряда", "Anual": "Anual", + "Anul acesta": "В этом году", "Anul curent": "Текущий год", "Anul trecut": "Прошлый год", "Anulat": "Отменено", + "Anulată": "Отменено", "Anulează": "Отмена", "Anulează fișa": "Отменить наряд", "Anvelope": "Шины", @@ -143,7 +167,7 @@ "Aprobare": "Утверждение", "Aprobat": "Утверждено", "Aprobat de": "Утверждено", - "Aprobat de client": "Утверждено клиентом", + "Aprobat de client": "Одобрено клиентом", "Aprobă": "Утвердить", "Arată": "Показать", "Arhivat": "В архиве", @@ -157,31 +181,41 @@ "Asigurare": "Asigurare", "Asigurător": "Asigurător", "Asistent AI": "AI-ассистент", + "Asistent AI pentru autoservice": "AI-ассистент для автосервиса", "Astăzi": "Сегодня", + "Atașamente": "Вложения", + "Atașat veți găsi": "Во вложении", "Atelierul meu": "Atelierul meu", "Atenție": "Внимание", + "Audit / verificări fiscale": "Audit / verificări fiscale", "August": "Август", "Autentificare": "Аутентификация", "Autentificare 2FA": "2FA аутентификация", "Auto": "Авто", "Auto / model": "Авто / модель", + "Auto-import Excel/CSV": "Auto-import Excel/CSV", "AutoCRM SRL": "AutoCRM SRL", + "Automată": "Автоматическая", "Automobile": "Автомобили", "Avans": "Аванс", "Avans achitat": "Аванс оплачен", "Avg zile": "Avg zile", "Azi": "Сегодня", "Așteaptă piese": "Ждёт запчасти", + "Așteaptă piesele": "Ждёт запчасти", "Aștept aprobare client": "Ожидание одобрения клиента", "Așteptată": "Ожидается", "BIC / SWIFT": "BIC / SWIFT", "Backup": "Бэкап", "Backup & Export date": "Backup & Export date", + "Backup periodic (descarcă local sau sincronizează cu cloud)": "Backup periodic (descarcă local sau sincronizează cu cloud)", "Balance": "Баланс", "Balanță": "Баланс", "Banca": "Banca", "Bază": "База", "Beneficiar": "Beneficiar", + "Benzină": "Бензин", + "Berlină": "Седан", "Bifează ce poate face acest rol. Modificările au efect imediat.": "Bifează ce poate face acest rol. Modificările au efect imediat.", "Bifă": "Флажок", "Bine ai venit": "Добро пожаловать", @@ -198,12 +232,18 @@ "Bot token": "Bot token", "Brand": "Brand", "Brand & contact": "Бренд и контакты", + "Break": "Универсал", "Buget": "Бюджет", "Buget & rezultate (luna curentă)": "Buget & rezultate (luna curentă)", "Bun venit": "Добро пожаловать", "Bun venit în AutoCRM!": "Bun venit în AutoCRM!", + "Bună": "Хорошее", "Bună ziua": "Здравствуйте", + "Bărbat": "Мужской", + "CRM › Programări ›": "CRM › Programări ›", "CSV": "CSV", + "CVT": "CVT", + "Cabriolet": "Кабриолет", "Calcul": "Calcul", "Calcul.": "Расчёт", "Calculat salariul {$period} pentru {$count} utilizatori": "Calculat salariul {$period} pentru {$count} utilizatori", @@ -219,7 +259,9 @@ "Cantitate restituită": "Cantitate restituită", "Capacitate motor": "Объём двигателя", "Capacitatea zilnică în ore": "Capacitatea zilnică în ore", + "Card bancar": "Банковская карта", "Caroserie": "Кузов", + "Cashflow zilnic — verde = încasări, roșu = cheltuieli": "Cashflow zilnic — verde = încasări, roșu = cheltuieli", "Catalog manoperă": "Catalog manoperă", "Categorie": "Категория", "Categorie implicită": "Категория по умолчанию", @@ -230,6 +272,7 @@ "Caz asigurare": "Caz asigurare", "Caz de asigurare": "Caz de asigurare", "Ce a spus clientul...": "Что сказал клиент...", + "Cere aprobarea": "Запросить одобрение", "Cerere": "Заявка", "Cerere nouă": "Новая заявка", "Cerere nouă adăugată": "Новая заявка добавлена", @@ -243,14 +286,18 @@ "Cheltuieli (luna)": "Расходы (месяц)", "Cheltuit": "Потрачено", "Cheltuit 90d": "Cheltuit 90d", + "Chirie": "Аренда", "Chitanțe": "Квитанции", "Chitanță": "Квитанция", + "Cifră de afaceri": "Оборот", "Ciornă": "Черновик", "Clase auto": "Классы авто", "Clasă (pentru pricing)": "Clasă (pentru pricing)", "Claude API Key": "Claude API Key", "Client": "Клиент", "Client & Auto": "Client & Auto", + "Client (nume, semnătură):": "Client (nume, semnătură):", + "Client / Auto": "Client / Auto", "Client CRM": "Клиент CRM", "Client ID": "Client ID", "Client VIP": "Client VIP", @@ -258,25 +305,35 @@ "Client legat (CRM)": "Client legat (CRM)", "Client nou": "Новый клиент", "Clienți": "Клиенты", + "Clienți VIP cu care nu s-a vorbit de peste 30 zile.": "Clienți VIP cu care nu s-a vorbit de peste 30 zile.", + "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.": "Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.", "Clienți magazin": "Клиенты магазина", + "Clienți noi în perioadă": "Clienți noi în perioadă", "Cod": "Код", + "Cod QR": "QR-код", "Cod articol": "Артикул", - "Cod bare": "Cod bare", + "Cod bare": "Штрих-код", "Cod echivalent": "Cod echivalent", "Cod necunoscut": "Cod necunoscut", + "Cod tracking": "Код отслеживания", + "Cod uzină": "Cod uzină", "Codul produsului": "Код товара", "Coduri cross (OEM/echivalente)": "Coduri cross (OEM/echivalente)", "Coeficient": "Coeficient", "Coeficienți preț": "Ценовые коэффициенты", + "Coloana Brand (opțional)": "Coloana Brand (opțional)", + "Coloana Preț *": "Coloana Preț *", "Coloane": "Колонки", "Coloană": "Колонка", + "Comanda ta a fost primită cu succes.": "Comanda ta a fost primită cu succes.", "Comandat": "Comandat", "Comandată": "Comandată", "Comandă": "Comandă", "Comandă nouă #": "Comandă nouă #", + "Comandă primită": "Comandă primită", "Combustibil": "Топливо", "Comenzi": "Заказы", - "Comercial": "Comercial", + "Comercial": "Коммерческий", "Comision manopere": "Comision manopere", "Comision piese": "Comision piese", "Companie": "Компания", @@ -289,15 +346,29 @@ "Configurări": "Конфигурация", "Configurări avansate": "Расширенная конфигурация", "Confirmare plată primită": "Confirmare plată primită", + "Confirmat": "Подтверждено", + "Confirmă": "Подтвердить", "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.": "Confirmă că mecanicul ia fizic piesa din depozit. Stocul scade acum, fără să aștepți închiderea fișei.", "Confirmă emailul": "Подтвердите email", + "Confirmă și importă": "Confirmă și importă", "Confirmă ștergerea": "Подтвердите удаление", + "Confirmăm primirea plății dvs.:": "Confirmăm primirea plății dvs.:", + "Conformitate GDPR (la cererea ștergerii datelor)": "Conformitate GDPR (la cererea ștergerii datelor)", + "Consum": "Расход", + "Consumabile": "Расходники", + "Contabil": "Бухгалтер", "Contact": "Контакт", "Contactare": "Связь", + "Contactat": "Связались", "Contacte": "Contacte", "Contactează": "Связаться", + "Continuă": "Продолжить", + "Continuă →": "Continuă →", + "Conversație nouă": "Conversație nouă", "Convertește": "Convertește", + "Convertit": "Конвертирован", "Convertite": "Конвертированы", + "Conține:": "Conține:", "Conținut": "Conținut", "Conținut șablon": "Conținut șablon", "Copiat": "Скопировано", @@ -307,8 +378,11 @@ "Cost & marjă": "Cost & marjă", "Cost (de la terț)": "Cost (de la terț)", "Cost (terț)": "Cost (terț)", + "Cost piese (achiziție)": "Cost piese (achiziție)", "Cost/lead": "Cost/lead", "Costuri": "Стоимости", + "Coupé": "Купе", + "Creanțe": "Дебиторка", "Creat": "Creat", "Creat de": "Создано", "Creat la": "Создано", @@ -317,6 +391,7 @@ "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.": "Crează manual prima factură sau folosește butonul „Generează factură\" din pagina Companiei.", "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.": "Crează prima fișă pentru o mașină existentă. Adaugă manopere, piese, plăți — totalul se calculează automat.", "Credit": "Кредит", + "Creează automat articolele noi în nomenclatură": "Creează automat articolele noi în nomenclatură", "Creează cerere": "Создать заявку", "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.", @@ -328,15 +403,18 @@ "Culoare": "Цвет", "Culoare brand": "Цвет бренда", "Culoare în calendar": "Culoare în calendar", + "Cum folosești API-ul:": "Cum folosești API-ul:", "Cumul.": "Cumul.", "Cumulabil": "Cumulabil", "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.": "Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.", "Curăță": "Очистить", "Cutie": "Коробка", - "Cutie de viteze": "КПП", + "Cutie de viteze": "Коробка передач", + "Cutie viteze": "КПП", "Câmp obligatoriu": "Обязательное поле", "Când": "Când", "Când & unde": "Când & unde", + "DCT": "DCT", "DOT": "DOT", "Da, confirmă": "Да, подтвердить", "Da, șterge": "Да, удалить", @@ -344,15 +422,20 @@ "Dashboard": "Панель", "Data": "Дата", "Data & ora": "Data & ora", + "Data *": "Data *", "Data actualizării": "Дата обновления", "Data comandă": "Data comandă", "Data creării": "Дата создания", + "Data deschiderii:": "Data deschiderii:", "Data factură": "Дата счёта", "Data ieșire": "Дата выдачи", "Data intrare": "Дата приёма", + "Data modificării": "Дата изменения", + "Data nașterii": "Дата рождения", "Data plății": "Дата платежа", "Data sfârșit": "Дата окончания", "Data început": "Дата начала", + "Data închiderii:": "Data închiderii:", "Date": "Дата", "Date generale": "Date generale", "Date insuficiente": "Date insuficiente", @@ -360,13 +443,16 @@ "Date personale": "Date personale", "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.": "Datele apar pe facturi și pe pagina de plată a tenant-ului. Confirmarea o faci manual.", "Datorie": "Долг", + "Datorii": "Задолженности", "Datorii clienți": "Задолженности клиентов", + "Datorii clienți (de încasat)": "Datorii clienți (de încasat)", "Daune": "Daune", "De către": "De către", - "De la": "От", + "De la": "С", "De la (preț achiziție)": "De la (preț achiziție)", "De la data": "С даты", "De la ora": "С", + "De la rândul (sărim header) *": "De la rândul (sărim header) *", "De obicei 10× preț lunar (2 luni gratis).": "De obicei 10× preț lunar (2 luni gratis).", "De procesat": "К обработке", "Deal": "Сделка", @@ -377,6 +463,7 @@ "Deblochează": "Разблокировать", "Decembrie": "Декабрь", "Decode VIN": "Decode VIN", + "Decodează": "Decodează", "Deconectare": "Отключение", "Delete": "Удалить", "Demo (pentru demonstrații sales)": "Demo (pentru demonstrații sales)", @@ -388,9 +475,12 @@ "Depozit gol": "Depozit gol", "Depozit implicit": "Склад по умолчанию", "Depozit țintă": "Целевой склад", + "Depozitar": "Кладовщик", "Depublică": "Снять с публикации", "Depășit termen": "Просрочено", + "Descarcă": "Скачать", "Descarcă PDF": "Скачать PDF", + "Descarcă QR (SVG)": "Descarcă QR (SVG)", "Descarcă factura": "Скачать счёт", "Descarcă template": "Скачать шаблон", "Deschide": "Открыть", @@ -399,10 +489,12 @@ "Deschide fișa": "Открыть наряд", "Deschide fișa pentru aprobare lucrare/piesă.": "Откройте наряд для одобрения работы/запчасти.", "Deschide tenantul": "Deschide tenantul", + "Deschide →": "Deschide →", "Deschis": "Открыт", "Deschis la": "Открыт", "Descrescător": "По убыванию", "Descriere": "Описание", + "Descriere (opțional)": "Descriere (opțional)", "Descriere produs": "Описание товара", "Detalii": "Подробности", "Detalii (opțional)": "Детали (опционально)", @@ -439,13 +531,16 @@ "Drept": "Право", "Drepturi": "Права", "Duminică": "Воскресенье", + "Duminică: închis": "Duminică: închis", "Duplică": "Дублировать", "Duplică rând": "Дублировать строку", "După": "După", + "După efectuarea transferului:": "După efectuarea transferului:", "Durată": "Длительность", "Durată (sec)": "Durată (sec)", "Durată estimată": "Расчётная длительность", "Durată reală": "Фактическая длительность", + "E timpul să schimbi anvelopele ": "E timpul să schimbi anvelopele ", "EJk...": "EJk...", "ETA": "ETA", "Echipament defect": "Неисправное оборудование", @@ -454,6 +549,8 @@ "Editează": "Изменить", "Editează drepturi": "Editează drepturi", "Editează produs": "Изменить товар", + "Eficiență": "Eficiență", + "Electric": "Электро", "Electrică": "Электрика", "Eliberat: {$n} rezervări consumate": "Eliberat: {$n} rezervări consumate", "Eliberează": "Выдать", @@ -474,28 +571,35 @@ "Ex: Lipsește filtrul Mann W712/83": "Например: Нет фильтра Mann W712/83", "Ex: Pod 1, Curte 1, Atelier electric": "Ex: Pod 1, Curte 1, Atelier electric", "Ex: cu lift, fără lift, doar diagnoză...": "Ex: cu lift, fără lift, doar diagnoză...", + "Ex: fără lift, doar diagnoză...": "Ex: fără lift, doar diagnoză...", "Ex: lockdown temporar; acces pentru audit; etc.": "Ex: lockdown temporar; acces pentru audit; etc.", "Excepție": "Excepție", "Excepții": "Исключения", "Excepții drepturi": "Исключения прав", + "Există deja un cont cu acest telefon.": "Există deja un cont cu acest telefon.", "Expiră": "Expiră", "Expiră < 7 zile": "Истекает < 7 дней", "Expiră la (opțional)": "Expiră la (opțional)", "Export": "Экспорт", "Export CSV": "Экспорт CSV", + "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:": "Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:", + "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ă ```.", "Extras": "Выписка", "Ești sigur?": "Ты уверен?", + "FIȘĂ DE LUCRU": "FIȘĂ DE LUCRU", "Facturi": "Счета", "Facturi neplătite": "Неоплаченные счета", "Facturi pending / overdue": "Facturi pending / overdue", "Factură": "Счёт", "Factură importată": "Factură importată", "Factură nouă": "Новый счёт", + "Factură:": "Factură:", "Fallback când mecanicul nu are marja proprie setată. Lasă gol = 0%.": "Fallback când mecanicul nu are marja proprie setată. Lasă gol = 0%.", "Favicon": "Favicon", "Față-Dreapta": "Față-Dreapta", "Față-Stânga": "Față-Stânga", "Februarie": "Февраль", + "Femeie": "Женский", "Filters": "Фильтры", "Filtre": "Фильтры", "Filtru": "Фильтр", @@ -504,23 +608,27 @@ "Finanțe": "Finanțe", "Fișe": "Наряды", "Fișe active": "Активные наряды", + "Fișe deschise": "Fișe deschise", "Fișe lucru": "Рабочие листы", "Fișe închise": "Закрытые наряды", "Fișier": "Файл", + "Fișier Excel (.xlsx) sau CSV *": "Fișier Excel (.xlsx) sau CSV *", "Fișiere": "Файлы", + "Fișierul nu există.": "Fișierul nu există.", "Fișă": "Наряд", "Fișă asociată": "Fișă asociată", "Fișă de lucru": "Заказ-наряд", "Fișă lucru": "Fișă lucru", "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.": "Folosit dacă markup = 0.", + "Folosit ultima dată": "Folosit ultima dată", "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.": "Folosită de coeficienții de preț. Hibrid/EV se deduc și din combustibil.", "Force logout": "Выйти со всех устройств", "Foto": "Фото", "Foto factură": "Foto factură", "Foto piesă": "Foto piesă", "Foto înainte / după": "Foto înainte / după", - "Fotografii": "Fotografii", + "Fotografii": "Фотографии", "Frâne": "Тормоза", "Frâne, Ulei, ...": "Frâne, Ulei, ...", "Funcție": "Funcție", @@ -528,12 +636,21 @@ "Funcționalități incluse": "Funcționalități incluse", "Furnizor": "Поставщик", "Furnizor (opțional)": "Furnizor (opțional)", + "Furnizor *": "Furnizor *", "Furnizor factură": "Поставщик счёта", "Furnizor implicit": "Поставщик по умолчанию", "Furnizor preferat": "Furnizor preferat", "Furnizori": "Поставщики", "Fără TVA": "Без НДС", + "Fără acest cod, plata va fi greu de identificat.": "Fără acest cod, plata va fi greu de identificat.", + "Fără articol (manual)": "Fără articol (manual)", + "Fără client": "Без клиента", + "Fără maistru": "Fără maistru", "Fără răspuns": "Без ответа", + "Fără stoc": "Нет в наличии", + "GNC": "CNG", + "GPL": "LPG", + "GRANT — adaugă dreptul": "GRANT — adaugă dreptul", "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.", "Gata": "Готов", "Gata de ridicare": "Готов к выдаче", @@ -548,18 +665,24 @@ "Gol — trage un card aici": "Пусто — перетащите карточку сюда", "Grafic": "График", "Gravitate": "Gravitate", + "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet", "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.": "Grupează manopere + piese frecvente într-un șablon (ex: „Schimb ulei complet\") și aplică-l pe o fișă cu un click.", + "Găsite (cu articol existent)": "Găsite (cu articol existent)", "Hartă daune": "Hartă daune", + "Hatchback": "Хэтчбек", + "Hibrid": "Гибрид", "IBAN": "IBAN", "ID": "ID", "IDNO / CUI": "IDNO / CUI", "Ianuarie": "Январь", + "Iarnă": "Зима", "Iarnă 2025-2026": "Iarnă 2025-2026", "Iconiță (emoji)": "Iconiță (emoji)", "Identificare": "Идентификация", "Identitate": "Identitate", "Ieri": "Вчера", "Ieșire": "Выход", + "Ieșiri": "Расход", "Imagine": "Изображение", "Imagine principală": "Главное изображение", "Imagini": "Изображения", @@ -570,12 +693,15 @@ "Import factură (OCR)": "Import factură (OCR)", "Import factură Excel/CSV": "Import factură Excel/CSV", "Import factură via OCR": "Import factură via OCR", + "Import finalizat cu succes": "Import finalizat cu succes", "Import mașini din CSV": "Import mașini din CSV", + "Import nou": "Import nou", "Import reușit — Purchase {$purchase->number}": "Import reușit — Purchase {$purchase->number}", "Import: {$r['imported']} adăugate, {$r['skipped']} ignorate": "Import: {$r['imported']} adăugate, {$r['skipped']} ignorate", "Import: {$r['imported']} adăugați, {$r['skipped']} ignorați": "Import: {$r['imported']} adăugați, {$r['skipped']} ignorați", "Importă din CSV": "Импорт из CSV", "Importă din Excel": "Импорт из Excel", + "Importă lead-uri direct din Lead Ads forms.": "Importă lead-uri direct din Lead Ads forms.", "Inactiv": "Неактивно", "Infopanel": "Инфопанель", "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.": "Informația de bază — click pe titlul secțiunilor de mai jos pentru detalii.", @@ -589,6 +715,7 @@ "Interval dată": "Диапазон дат", "Interval orar": "Часовой интервал", "Intrat": "Intrat", + "Inventar": "Инвентаризация", "Invitație": "Приглашение", "Invitații": "Приглашения", "Istoric depozitare": "Istoric depozitare", @@ -601,24 +728,32 @@ "KPI mecanici": "KPI mecanici", "Kanban": "Канбан", "Kilometraj": "Kilometraj", - "Km": "Км", + "Km": "км", "Km curent": "Текущий пробег", "Km ieșire": "Пробег выход", "Km intrare": "Пробег вход", - "Km parcurși": "Пройдено км", + "Km la ieșire:": "Km la ieșire:", + "Km parcurși": "Пробег", "La editare lasă gol pentru a păstra parola actuală.": "La editare lasă gol pentru a păstra parola actuală.", "La revedere": "До свидания", "La timp 90d": "La timp 90d", "La trecere pe „Montată\" se scade automat din stoc.": "La trecere pe „Montată\" se scade automat din stoc.", "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.": "Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.", "Lead-uri": "Lead-uri", + "Lead-uri pe sursă": "Lead-uri pe sursă", + "Legendă": "Legendă", + "Legendă:": "Legendă:", "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.": "Legătura cu fișa CRM (opțional). Auto-matched la înregistrare după telefon.", "Limbă": "Язык", "Limbă default": "Язык по умолчанию", "Limite": "Limite", + "Linia nu mai necesită aprobare.": "Linia nu mai necesită aprobare.", "Linii": "Linii", "Link client (QR)": "Link client (QR)", "Link tracking": "Ссылка отслеживания", + "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.": "Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.", + "Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj.\n\nMulțumim,": "Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj.\n\nMulțumim,", + "Lipsește bot token în setări.": "Lipsește bot token în setări.", "Lipsă": "Lipsă", "Lipsă piesă": "Нет запчасти", "Liste configurabile": "Настраиваемые списки", @@ -626,11 +761,12 @@ "Livrare": "Livrare", "Livrare (zile)": "Livrare (zile)", "Livrare gratuită peste": "Livrare gratuită peste", + "Livrat": "Доставлено", "Loading": "Загрузка...", "Loc.": "Loc.", "Local": "Локально", "Localizare & monedă": "Локализация и валюта", - "Locație": "Locație", + "Locație": "Локация", "Locație (raft)": "Locație (raft)", "Locație rack/bin": "Locație rack/bin", "Login": "Вход", @@ -646,12 +782,16 @@ "Lucrări": "Lucrări", "Lucrări la terți": "Lucrări la terți", "Lucrări terți": "Работы у третьих лиц", + "Luna aceasta": "В этом месяце", "Luna curentă": "Текущий месяц", "Luna trecută": "Прошлый месяц", + "Luna următoare ▶": "Luna următoare ▶", "Lunar": "Lunar", "Luni": "Месяцы", "Luni (zi)": "Понедельник", + "Lună": "Lună", "Lățime": "Lățime", + "MB folosiți": "MB folosiți", "MD00 AG00 0000 ...": "MD00 AG00 0000 ...", "MDL pipeline total": "MDL всего в воронке", "MDL închise azi": "MDL закрыто сегодня", @@ -663,8 +803,11 @@ "Mai mic = aplicat primul.": "Mai mic = aplicat primul.", "Maistru": "Мастер", "Maistru / Mecanic": "Maistru / Mecanic", + "Maistru / Recepție:": "Maistru / Recepție:", + "Manager": "Менеджер", "Manopere": "Работы", "Manoperă": "Работа", + "Manuală": "Ручная", "Marca": "Marca", "Marchează Gata": "Отметить готово", "Marchează acest tenant ca demo (datele pot fi resetate periodic).": "Marchează acest tenant ca demo (datele pot fi resetate periodic).", @@ -682,7 +825,8 @@ "Marjă internă (%)": "Внутренняя маржа (%)", "Marjă internă (%) — override": "Marjă internă (%) — override", "Marjă internă (nu TVA)": "Внутренняя маржа (не НДС)", - "Marketing": "Marketing", + "Marjă profit:": "Marjă profit:", + "Marketing": "Маркетинг", "Marketing (UTM)": "Marketing (UTM)", "Markup": "Markup", "Markup %": "Наценка %", @@ -695,6 +839,7 @@ "Mașina e gata de ridicat": "Mașina e gata de ridicat", "Mașini": "Автомобили", "Mecanic implicit": "Механик по умолчанию", + "Medie": "Среднее", "Mediu": "Средний", "Merchant Code": "Merchant Code", "Mesaj": "Mesaj", @@ -703,6 +848,7 @@ "Mesaje AI/lună": "Mesaje AI/lună", "Metode de livrare": "Metode de livrare", "Metode plată": "Способы оплаты", + "Metodă": "Metodă", "Metodă plată": "Способ оплаты", "Miercuri": "Среда", "Min.": "Мин.", @@ -720,10 +866,12 @@ "Moldova-Agroindbank": "Moldova-Agroindbank", "Monedă": "Валюта", "Monedă platformă": "Monedă platformă", + "Monovolum": "Минивэн", "Motiv": "Причина", "Motor": "Двигатель", "Motor / Frâne / Electrică ...": "Motor / Frâne / Electrică ...", - "Motorizare": "Двигатель", + "Motorină": "Дизель", + "Motorizare": "Тип двигателя", "Multiplicator": "Множитель", "Mulțumim": "Спасибо", "Mâine": "Завтра", @@ -732,8 +880,10 @@ "Necesită acțiune": "Требует действия", "Necesită aprobare": "Требуется одобрение", "Necesită aprobare client": "Требуется одобрение клиента", + "Necesită atenție": "Требует внимания", "Necesită cel puțin 2 recepții complete cu data așteptată setată.": "Necesită cel puțin 2 recepții complete cu data așteptată setată.", "Necompletat": "Не заполнено", + "Neconfirmat": "Не подтверждено", "Necunoscut": "Неизвестно", "Neplătit": "Не оплачено", "Nepublicat": "Не опубликовано", @@ -743,25 +893,38 @@ "Neverificat": "Не проверено", "New client": "Новый клиент", "New mașină": "Новое авто", + "Nicio cheltuială.": "Nicio cheltuială.", "Nicio comandă încă": "Nicio comandă încă", + "Nicio conversație": "Nicio conversație", "Nicio daună marcată": "Nicio daună marcată", + "Nicio factură emisă încă": "Nicio factură emisă încă", "Nicio factură generată": "Nicio factură generată", "Nicio fișă de lucru": "Nicio fișă de lucru", + "Nicio fișă în perioada selectată.": "Nicio fișă în perioada selectată.", "Nicio lucrare de caroserie": "Nicio lucrare de caroserie", "Nicio lucrare la terți": "Nicio lucrare la terți", + "Nicio manoperă efectuată.": "Nicio manoperă efectuată.", "Nicio mașină încă": "Nicio mașină încă", + "Nicio metodă de plată configurată. Contactează operatorul.": "Nicio metodă de plată configurată. Contactează operatorul.", "Nicio piesă implicită": "Nicio piesă implicită", + "Nicio piesă montată.": "Nicio piesă montată.", + "Nicio plată în perioada selectată.": "Nicio plată în perioada selectată.", + "Nicio programare în această perioadă.": "Nicio programare în această perioadă.", + "Nicio programare în perioada selectată.": "Nicio programare în perioada selectată.", "Niciodată": "Никогда", "Niciun client magazin": "Niciun client magazin", "Niciun client încă": "Niciun client încă", "Niciun cod cross": "Niciun cod cross", "Niciun coeficient": "Niciun coeficient", + "Niciun coeficient contextual nu se aplică (preț de bază).": "Niciun coeficient contextual nu se aplică (preț de bază).", "Niciun depozit": "Niciun depozit", "Niciun istoric": "Niciun istoric", "Niciun lot înregistrat": "Niciun lot înregistrat", "Niciun mecanic implicit": "Niciun mecanic implicit", + "Niciun mecanic nu a finalizat lucrări în această perioadă.": "Niciun mecanic nu a finalizat lucrări în această perioadă.", "Niciun plan definit": "Niciun plan definit", "Niciun preț înregistrat": "Niciun preț înregistrat", + "Niciun rest de încasat. 🎉": "Niciun rest de încasat. 🎉", "Niciun set de anvelope": "Niciun set de anvelope", "Niciun subcontractor": "Niciun subcontractor", "Niciun tenant încă": "Niciun tenant încă", @@ -774,6 +937,8 @@ "Notificare": "Уведомление", "Notifications": "Уведомления", "Notificări": "Уведомления", + "Notificări clienți": "Уведомления клиентов", + "Notificările push funcționează ✅": "Notificările push funcționează ✅", "Notițe": "Заметки", "Notițe / Reclamație": "Заметки / Жалоба", "Notițe / reclamație": "Заметки / жалоба", @@ -788,6 +953,7 @@ "Nr. poliță": "Nr. poliță", "Nr. telefon": "Тел. номер", "Nr. înmatriculare": "Гос. номер", + "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?": "Нет аккаунта?", "Nu am găsit linii valide — verifică maparea coloanelor": "Nu am găsit linii valide — verifică maparea coloanelor", "Nu există date": "Нет данных", @@ -799,20 +965,32 @@ "Nume (RO)": "Nume (RO)", "Nume (RU)": "Nume (RU)", "Nume (descriere)": "Nume (descriere)", + "Nume *": "Nume *", "Nume admin": "Nume admin", "Nume canal": "Nume canal", + "Nume familie": "Фамилия", "Nume template": "Nume template", + "Nume, cod articol, brand...": "Nume, cod articol, brand...", + "Nume:": "Nume:", "Numele este obligatoriu": "Numele este obligatoriu", + "Numerar": "Наличные", + "Numerar net (toate plățile - cheltuieli)": "Numerar net (toate plățile - cheltuieli)", "Numărul de zile gratis după ce un tenant alege acest plan.": "Numărul de zile gratis după ce un tenant alege acest plan.", "OCR eșuat": "OCR eșuat", "Observații": "Комментарии", + "Obține token cu": "Obține token cu", "Octombrie": "Октябрь", + "Ok": "Ок", "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).": "On = arată „Bază salariu: X · marjă Y%\" sub Total în tabelul Manopere. Off = doar Total (util când review-uiești o Fișă cu clientul de față).", "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).": "On = din prețul manoperelor se scade marja pentru salariu. Off = manopere la cost (salariu pe Total integral).", "Onorat": "Onorat", "Onorează (scade stoc)": "Onorează (scade stoc)", "OpenAI API Key": "OpenAI API Key", - "Ora": "Час", + "Operator platformă:": "Operator platformă:", + "Operatorul (tu) creezi factură:": "Operatorul (tu) creezi factură:", + "Operatorul confirmă manual factura ca plătită": "Operatorul confirmă manual factura ca plătită", + "Operatorul îți va emite factură când e timpul abonamentului.": "Operatorul îți va emite factură când e timpul abonamentului.", + "Ora": "Время", "Ora deschidere": "Время открытия", "Ora ieșire": "Время выдачи", "Ora intrare": "Время приёма", @@ -820,6 +998,7 @@ "Ora începere": "Начало", "Ora închidere": "Время закрытия", "Oraș": "Город", + "Oraș:": "Oraș:", "Ordine": "Порядок", "Ordonare": "Сортировка", "Ordonat": "Отсортировано", @@ -828,12 +1007,15 @@ "Ore (normă)": "Ore (normă)", "Ore disponibile / zi": "Доступные часы / день", "Ore lucrate": "Отработанные часы", + "Ore programate": "Ore programate", + "Ore total": "Ore total", "Ore/zi": "Часов/день", "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.", "PDF": "PDF", "PNG/ICO, max 512 KB.": "PNG/ICO, max 512 KB.", "PNG/SVG, max 2 MB. Apare în sidebar.": "PNG/SVG, max 2 MB. Apare în sidebar.", "PO": "PO", + "POS": "POS", "Pagina": "Страница", "Pagini": "Страницы", "Panou": "Панель", @@ -847,31 +1029,48 @@ "Pas 1 — Datele afacerii": "Pas 1 — Datele afacerii", "Pas 2 — Brand & limbă": "Pas 2 — Brand & limbă", "Pas 3 — Tarif & terminat": "Pas 3 — Tarif & terminat", + "Pasul 1: Încarcă fișierul": "Pasul 1: Încarcă fișierul", + "Pasul 2: Mapează coloanele": "Pasul 2: Mapează coloanele", "Pauză": "Пауза", "Pe pauză": "На паузе", "Penalizări": "Penalizări", + "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.": "Pentru a activa PayPal, instalează `composer require srmklive/paypal` și activează în /admin/payment-settings.", + "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.": "Pentru a activa Stripe Checkout, instalează `composer require stripe/stripe-php` și activează în /admin/payment-settings.", + "Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.": "Pentru a continua să folosiți aplicația, vă rugăm să achitați factura.", + "Pentru detalii, contactați administratorul platformei.": "Pentru detalii, contactați administratorul platformei.", "Per page": "На странице", "Perioada (YYYY-MM)": "Perioada (YYYY-MM)", "Perioadă": "Период", "Perioadă (YYYY-MM)": "Perioadă (YYYY-MM)", "Perioadă raport": "Период отчёта", "Perioadă trial (zile)": "Perioadă trial (zile)", + "Perioadă:": "Perioadă:", "Permisiuni": "Permisiuni", "Persoană contact": "Persoană contact", + "Persoană fizică": "Persoană fizică", + "Persoană juridică": "Persoană juridică", "Personalizat": "Персонализировано", + "Pierdut": "Потерян", "Pierdute": "Pierdute", "Piese": "Запчасти", + "Piese (vânzare)": "Piese (vânzare)", "Piese impl.": "Piese impl.", "Piese implicite": "Piese implicite", + "Piese în stoc": "Piese în stoc", "Piesă": "Запчасть", "Piesă din catalog": "Piesă din catalog", "Pipeline": "Воронка", "Plan": "План", "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.": "Plan ascuns public, folosit pentru tenant-i demo cu features deblocate.", + "Plata apare în 1-3 zile lucrătoare": "Plata apare în 1-3 zile lucrătoare", "Plata stabilește automat starea fișei (unpaid/partial/paid)": "Plata stabilește automat starea fișei (unpaid/partial/paid)", "Plată": "Платёж", "Plată & total": "Оплата и итого", + "Plată anulată": "Plată anulată", + "Plată reușită": "Plată reușită", + "Plată reușită!": "Plată reușită!", "Plângere client": "Plângere client", + "Plătește direct din bancă (1-3 zile)": "Plătește direct din bancă (1-3 zile)", "Plătit": "Оплачено", "Plătit către terț": "Plătit către terț", "Plătit de": "Оплачено", @@ -882,6 +1081,7 @@ "Plăți internaționale. Mai potrivit pentru clienți din afara MD.": "Plăți internaționale. Mai potrivit pentru clienți din afara MD.", "Pod": "Пост", "Pod / Spațiu lucru": "Пост / рабочее место", + "Pod / spațiu": "Пост / место", "Politica de confidențialitate": "Политика конфиденциальности", "Politici": "Политики", "Pontaj": "Табель", @@ -890,7 +1090,11 @@ "Post actualizat": "Post actualizat", "Poze": "Фото", "Pozele auto": "Фото авто", + "Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).": "Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).", + "Pre-completat automat la programări noi pe acest pod.": "Pre-completat automat la programări noi pe acest pod.", + "Precedent": "Предыдущий", "Prefix facturi": "Prefix facturi", + "Prenume": "Имя", "Preview": "Предпросмотр", "Preview PDF": "Предпросмотр PDF", "Previzualizare": "Предпросмотр", @@ -902,12 +1106,14 @@ "Preț anual": "Preț anual", "Preț client": "Цена клиенту", "Preț contextual": "Preț contextual", + "Preț de bază (markup)": "Preț de bază (markup)", "Preț fix": "Preț fix", "Preț fix (MDL)": "Preț fix (MDL)", "Preț implicit": "Цена по умолчанию", "Preț inteligent": "Умная цена", "Preț lunar": "Preț lunar", "Preț orientativ (MDL)": "Preț orientativ (MDL)", + "Preț recomandat": "Preț recomandat", "Preț unit.": "Preț unit.", "Preț unitar": "Preț unitar", "Preț vz.": "Preț vz.", @@ -915,6 +1121,7 @@ "Preț/h": "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.", + "Primește cereri din canalul Telegram + trimite confirmări automate.": "Primește cereri din canalul Telegram + trimite confirmări automate.", "Primit": "Primit", "Print": "Печать", "Print factură": "Печать счёта", @@ -927,6 +1134,7 @@ "Procesare carduri online. Funcționează în 30+ țări. Comision ~2.9% + 0.30€/tranzacție.": "Procesare carduri online. Funcționează în 30+ țări. Comision ~2.9% + 0.30€/tranzacție.", "Procesator de plăți Moldova. Acceptă carduri MAIB, MICB, Victoriabank, OTP, MD Cash, Bitcoin, e-money. Comision negociabil ~1.8-2.5%.": "Procesator de plăți Moldova. Acceptă carduri MAIB, MICB, Victoriabank, OTP, MD Cash, Bitcoin, e-money. Comision negociabil ~1.8-2.5%.", "Procesează": "Обработать", + "Producător": "Producător", "Produs": "Товар", "Produse": "Товары", "Profesie": "Profesie", @@ -934,13 +1142,18 @@ "Profile": "Профиль", "Profit": "Прибыль", "Profit (luna)": "Прибыль (месяц)", + "Profit brut": "Валовая прибыль", + "Profit net": "Чистая прибыль", "Programare": "Запись", "Programare adăugată": "Programare adăugată", "Programare confirmată": "Programare confirmată", "Programare creată · mâine 10:00": "Запись создана · завтра 10:00", "Programare mutată": "Programare mutată", + "Programare nouă": "Programare nouă", "Programare ștearsă": "Programare ștearsă", + "Programarea dvs. este confirmată:": "Programarea dvs. este confirmată:", "Programat": "Запланировано", + "Programați-vă online sau sunați la": "Programați-vă online sau sunați la", "Programează": "Запланировать", "Programează întâlnire": "Запланировать встречу", "Programări": "Записи", @@ -962,8 +1175,12 @@ "Până la (gol = ∞)": "Până la (gol = ∞)", "Până la data": "До даты", "Până la ora": "По", + "Până la:": "Până la:", "QR": "QR", "ROI": "ROI", + "RON — Leu românesc": "RON — Leu românesc", + "RUB — Rublă": "RUB — Rublă", + "Raft": "Полка", "Rapoarte": "Отчёты", "Raport": "Отчёт", "Rata conversie": "Конверсия", @@ -974,12 +1191,14 @@ "Recalculează": "Recalculează", "Recent": "Недавно", "Recente": "Недавние", - "Recepție": "Recepție", + "Recente / restul": "Recente / restul", + "Recepție": "Приёмка", + "Recepție acum:": "Recepție acum:", "Recepție completă — batch-uri create": "Recepție completă — batch-uri create", "Recepție totală": "Recepție totală", "Recepționat": "Recepționat", "Recepționat — batch creat": "Recepționat — batch creat", - "Recepționată": "Recepționată", + "Recepționată": "Принято", "Recepționează": "Recepționează", "Recomandat": "Рекомендуется", "Recomandate": "Рекомендуемые", @@ -990,9 +1209,11 @@ "Redeschide fișa": "Переоткрыть наряд", "Ref.": "Реф.", "Ref. lot/factură": "Ref. lot/factură", - "Referință": "Referință", + "Referință": "Ссылка", "Referință (Stripe id, transfer)": "Referință (Stripe id, transfer)", "Referință (chitanță / tranzacție)": "Referință (chitanță / tranzacție)", + "Refuzat": "Отклонён", + "Refuzat de client": "Отклонено клиентом", "Regenerează": "Перегенерировать", "Register": "Регистрация", "Regulă": "Правило", @@ -1006,6 +1227,7 @@ "Rerating": "Rerating", "Reset": "Сбросить", "Reset parolă": "Reset parolă", + "Resetare parolă": "Resetare parolă", "Resetează": "Сбросить", "Resetează 2FA": "Сбросить 2FA", "Resetează filtre": "Сбросить фильтры", @@ -1018,34 +1240,44 @@ "Restanță": "Restanță", "Restaurează": "Восстановить", "Restituire": "Restituire", + "Retur": "Возврат", "Returnat": "Returnat", "Revizie": "ТО", "Revizii": "ТО", - "Rezervat": "Rezervat", + "Revocă": "Revocă", + "Rezervare": "Резерв", + "Rezervat": "Зарезервировано", + "Rezervă o programare": "Rezervă o programare", "Rezultat": "Результат", "Rezultate": "Результаты", "Rezumat": "Резюме", "Reîmprospătează": "Обновить", "Ridicat": "Высокий", + "Robotizată": "Робот", "Rol": "Роль", "Rol primar": "Основная роль", "Rolul principal — sincronizat automat cu drepturile RBAC.": "Rolul principal — sincronizat automat cu drepturile RBAC.", "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", + "Română": "Română", "Rotire": "Поворот", "Rulează `php artisan push:vapid` și adaugă cheile în .env.": "Rulează `php artisan push:vapid` și adaugă cheile în .env.", "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", "Salarii": "Зарплаты", "Salariu & comisioane": "Salariu & comisioane", "Salariu & marjă": "Зарплата и маржа", "Salariu bază": "Salariu bază", + "Sales": "Продажи", "Salut": "Привет", "Salvează": "Сохранить", + "Salvează configurația pentru acest furnizor": "Salvează configurația pentru acest furnizor", "Salvează schimbările": "Сохранить изменения", "Salvează și adaugă altul": "Сохранить и добавить другой", "Salvează și continuă": "Сохранить и продолжить", @@ -1053,16 +1285,20 @@ "Sarcini": "Задачи", "Sarcini restante": "Просроченные задачи", "Sarcină": "Задача", + "Sau generează unul aici (recomandat pentru integrări permanente)": "Sau generează unul aici (recomandat pentru integrări permanente)", "Save": "Сохранить", "Scade din stoc piesele legate de catalog (FIFO) și marchează comanda confirmată.": "Scade din stoc piesele legate de catalog (FIFO) și marchează comanda confirmată.", "Scadent": "Scadent", "Scadent la": "Scadent la", "Scadență": "Срок оплаты", + "Scanează codurile pieselor pentru a marca ca recepționate.": "Scanează codurile pieselor pentru a marca ca recepționate.", "Scaner cod QR / Bare": "Scaner cod QR / Bare", "Scoate din magazin": "Scoate din magazin", + "Scrie mesajul tău...": "Scrie mesajul tău...", "Scăzut": "Низкий", "Se completează automat când clientul scrie la bot": "Se completează automat când clientul scrie la bot", "Se procesează...": "Обработка...", + "Se salvează...": "Se salvează...", "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.": "Se vor crea batch-uri pentru toate restanțele rămase în depozitul țintă.", "Search": "Поиск", "Secret": "Secret", @@ -1087,6 +1323,7 @@ "Semnătură digitală": "Цифровая подпись", "Senzori TPMS": "Senzori TPMS", "Septembrie": "Сентябрь", + "Serie": "Серия", "Serie factură": "Серия счёта", "Service ID": "Service ID", "Servicii": "Услуги", @@ -1101,10 +1338,14 @@ "Setează webhook": "Setează webhook", "Settings": "Настройки", "Seturi anvelope": "Шины (комплекты)", + "Setări avansate": "Расширенные настройки", "Setări companie": "Настройки компании", + "Setări generale": "Общие настройки", + "Setări plăți": "Настройки платежей", "Setări plăți salvate": "Setări plăți salvate", "Setări salvate": "Setări salvate", "Setările au fost salvate. Hai să adăugăm primul client.": "Setările au fost salvate. Hai să adăugăm primul client.", + "Sex": "Пол", "Sezon": "Sezon", "Sfat": "Совет", "Sign in": "Войти", @@ -1113,14 +1354,17 @@ "Sincronizează": "Синхронизировать", "Sistem": "Sistem", "Site PSauto": "Сайт", + "Slot": "Слот", "Slug": "Slug", "Sold": "Баланс", + "Sosit": "Прибыл", "Spate-Dreapta": "Spate-Dreapta", "Spate-Stânga": "Spate-Stânga", "Spațiu de lucru adăugat": "Spațiu de lucru adăugat", "Specialitate": "Specialitate", "Specializare": "Specializare", "Specificații": "Specificații", + "Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.": "Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.", "Standard": "Стандартно", "Stare": "Stare", "Stare timp": "Время", @@ -1132,7 +1376,10 @@ "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)", "Storage (MB)": "Storage (MB)", + "Stripe: înregistrează cont la": "Stripe: înregistrează cont la", + "Sub minim": "Ниже мин.", "Subcontractare": "Субподряд", "Subcontractor": "Субподрядчик", "Subcontractori": "Субподрядчики", @@ -1142,24 +1389,34 @@ "Subiect și data sunt obligatorii": "Subiect și data sunt obligatorii", "Subtotal": "Промежуточный итог", "Succes": "Успех", + "Sugerează revizie / piese de uzură.": "Sugerează revizie / piese de uzură.", "Sumă": "Сумма", + "Sumă achitată": "Sumă achitată", + "Sumă:": "Sumă:", "Sunet": "Звук", "Sunt de acord": "Я согласен", "Sunteți sigur?": "Вы уверены?", "Sună": "Позвонить", + "Sună-i sau trimite-le un email cu suma datorată.": "Sună-i sau trimite-le un email cu suma datorată.", + "Suport": "Поддержка", "Sursă": "Источник", "Sursă & Atribuire": "Sursă & Atribuire", "Suspendat": "Приостановлено", "Suspendă": "Suspendă", "Suspensie": "Подвеска", "Sâmbătă": "Суббота", + "Sâmbătă: 09:00 – 14:00": "Sâmbătă: 09:00 – 14:00", + "Săpt": "Săpt", "Săpt. lucrătoare": "Раб. дни", + "Săpt. următoare →": "Săpt. următoare →", + "Săptămâna aceasta": "На этой неделе", "Săptămâna curentă": "Текущая неделя", "Săptămâna trecută": "Прошлая неделя", "Săptămâni": "Недели", "TPMS": "TPMS", "TPMS & foto": "TPMS & foto", "TVA": "НДС", + "Tablă": "Штампованный", "Tarif normo-oră": "Тариф нормо-часа", "Tarif normo-oră (poți schimba oricând)": "Tarif normo-oră (poți schimba oricând)", "Tarif orar (MDL)": "Часовой тариф (MDL)", @@ -1173,6 +1430,7 @@ "Telefon": "Телефон", "Telefon alternativ": "Telefon alternativ", "Telefon principal": "Telefon principal", + "Telefon sau parolă incorecte.": "Telefon sau parolă incorecte.", "Telefonie": "Телефония", "Telegram bot": "Telegram bot", "Telegram chat ID": "Telegram chat ID", @@ -1183,6 +1441,7 @@ "Tenant suspendat.": "Tenant suspendat.", "Tenants recenți": "Tenants recenți", "Tenants total": "Всего тенантов", + "Tenantul vede factura în interiorul lui la": "Tenantul vede factura în interiorul lui la", "Termen": "Срок", "Termen limită": "Крайний срок", "Termene": "Termene", @@ -1190,6 +1449,7 @@ "Termeni de plată": "Termeni de plată", "Termeni plată": "Termeni plată", "Termeni și condiții": "Условия и положения", + "Terminal": "Терминал", "Termină": "Завершить", "Terț": "Terț", "Test notificare push": "Test notificare push", @@ -1216,39 +1476,64 @@ "Toate câmpurile": "Все поля", "Toate limbile": "Все языки", "Toate ok": "Всё в порядке", + "Toate piesele sunt în stoc.": "Toate piesele sunt în stoc.", "Toate plătite": "Все оплачены", "Toate plățile": "Все платежи", "Toate produsele": "Все товары", "Toate rolurile": "Все роли", + "Toate statusurile": "Toate statusurile", + "Toate timpurile": "Toate timpurile", "Token generat!": "Token generat!", "Token public": "Token public", "Token revocat": "Token revocat", + "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 deals active": "Всего активных сделок", "Total general": "Общий итог", + "Total ieșiri": "Total ieșiri", + "Total intrări": "Total intrări", "Total net": "Total net", "Total plătit": "Всего оплачено", "Total rezultate": "Всего результатов", + "Total venituri": "Total venituri", "Total în baza de date": "Всего в базе", + "Total încasat": "Total încasat", "Total înregistrate": "Всего зарегистрировано", + "Toți VIP-ii sunt în contact recent.": "Toți VIP-ii sunt în contact recent.", "Toți clienții": "Все клиенты", + "Toți mecanicii": "Toți mecanicii", "Toți utilizatorii": "Все пользователи", "Tracking & ETA": "Отслеживание и ETA", + "Tracțiune": "Привод", "Trage fișierul aici": "Перетащите файл сюда", + "Transfer": "Перевод", + "Transfer bancar": "Банковский перевод", + "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway": "Transfer bancar: pune doar IBAN-ul tău, fără cont gateway", + "Transport": "Транспорт", "Trial expiră la": "Trial expiră la", "Trimis": "Отправлено", + "Trimis · fără răspuns": "Отправлено · без ответа", "Trimite": "Отправить", "Trimite SMS": "Отправить SMS", + "Trimite SMS-uri prin gateway local (Moldcell/Orange API).": "Trimite SMS-uri prin gateway local (Moldcell/Orange API).", + "Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze.": "Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze.", "Trimite email": "Отправить email", "Trimite emailul standard de resetare a parolei către clientul magazinului.": "Trimite emailul standard de resetare a parolei către clientul magazinului.", "Trimite factură": "Отправить счёт", "Trimite invitație": "Отправить приглашение", "Trimite link resetare": "Отправить ссылку сброса", "Trimite mesaj": "Отправить сообщение", + "Trimite mesaje template către clienți (programări, confirmări).": "Trimite mesaje template către clienți (programări, confirmări).", "Trimite notificare": "Отправить уведомление", + "Trimite prin email": "Отправить по email", "Trimite reminder după X zile fără vizită": "Trimite reminder după X zile fără vizită", "Trimite reset parolă": "Trimite reset parolă", "UM": "Ед.", + "URL secret pentru POST direct cu lead-uri din site-ul tău.": "URL secret pentru POST direct cu lead-uri din site-ul tău.", "Ulei": "Масло", "Ultim login": "Последний вход", "Ultima actualizare": "Последнее обновление", @@ -1260,14 +1545,21 @@ "Urgent": "Срочно", "Urgente": "Срочные", "Urgență": "Срочность", + "Urmărește comanda →": "Urmărește comanda →", + "Următor": "Следующий", + "Următorul": "Далее", + "Următorul →": "Următorul →", "User API": "User API", "Useri": "Useri", + "Utilități": "Коммуналка", "Utilizator": "Пользователь", "Utilizatori": "Пользователи", + "Uzat": "Изношено", "Uzură (mm) per poziție": "Uzură (mm) per poziție", "Uzură min": "Uzură min", "VIN": "VIN", "VIN căutare & piese": "VIN căutare & piese", + "VIN trebuie să aibă cel puțin 11 caractere.": "VIN trebuie să aibă cel puțin 11 caractere.", "VIN-căutare": "VIN-поиск", "Va deconecta utilizatorul pe toate device-urile.": "Va deconecta utilizatorul pe toate device-urile.", "Va fi adăugată în Cerere nouă": "Будет добавлена в «Новая заявка»", @@ -1276,12 +1568,14 @@ "Val.": "Val.", "Valoare": "Valoare", "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}": "Variabile disponibile: {name}, {car}, {date}, {time}, {amount}, {service}, {mileage}", + "Vară": "Лето", "Vehicul": "Транспорт", "Vehicul existent": "Существующий транспорт", "Vehicul nou": "Новый транспорт", "Venit": "Доход", "Venit generat": "Venit generat", "Venit luna curentă": "Доход тек. месяца", + "Venit luna trecută": "Venit luna trecută", "Venit manopere": "Venit manopere", "Venituri": "Доходы", "Verificare": "Проверка", @@ -1297,12 +1591,20 @@ "Vizual": "Визуально", "Vizualizează": "Просмотр", "Vizualizări": "Просмотры", + "Vânzări": "Vânzări", "Vârstă max (ani)": "Макс. возраст (лет)", "Vârstă min (ani)": "Мин. возраст (лет)", + "Vă așteptăm! 🚗": "Vă așteptăm! 🚗", + "Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.": "Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.", + "Vă mulțumim": "Спасибо", + "Vă mulțumim pentru încredere!": "Vă mulțumim pentru încredere!", + "Vă mulțumim!": "Vă mulțumim!", + "Văzut": "Просмотрено", "Web Push neconfigurat": "Web Push neconfigurat", "Webhook": "Webhook", "Webhook (Notify URL)": "Webhook (Notify URL)", "Webhook eșuat": "Webhook eșuat", + "Webhook intrări (formulare site)": "Webhook intrări (formulare site)", "Webhook secret": "Webhook secret", "Webhook setat — botul e gata": "Webhook setat — botul e gata", "Weekend": "Выходные", @@ -1312,6 +1614,7 @@ "XLS": "XLS", "Yes": "Да", "ZIP": "ZIP", + "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.": "ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.", "Zile": "Дни", "Zile libere": "Выходные", "Zile livrare": "Zile livrare", @@ -1319,20 +1622,24 @@ "Zonă": "Zonă", "Zoom in": "Приблизить", "Zoom out": "Отдалить", + "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via": "aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat.\n Pentru moment, valorile salvate sunt accesibile în cod via", "achiziție": "achiziție", "achiziții": "achiziții", "active": "активный", "actualizat": "обновлено", "angajați": "angajați", "apasă": "нажмите", + "asistent gândește...": "asistent gândește...", "auto-generat": "auto-generat", "bonusuri/avansuri": "bonusuri/avansuri", + "call": "Звонок", "canale marketing": "canale marketing", "cheltuială": "cheltuială", "client": "клиент", "client magazin": "client magazin", "clienți": "клиенты", "clienți magazin": "clienți magazin", + "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.": "clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese,\n depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.", "coeficient": "коэффициент", "coeficienți preț": "coeficienți preț", "comandă": "comandă", @@ -1343,19 +1650,26 @@ "ex: Mașină veche, Client VIP, Express": "ex: Mașină veche, Client VIP, Express", "ex: Revizie completă 15.000 km": "ex: Revizie completă 15.000 km", "ex: app-mobil, integrare-erp": "ex: app-mobil, integrare-erp", + "facebook": "Facebook", "factură": "factură", "finalizat": "завершено", + "fișa de lucru completă": "fișa de lucru completă", "fișe lucru": "fișe lucru", "fișă": "fișă", "fără client": "без клиента", + "google": "Google", "h norm": " ч норм", "h real": " ч факт", + "instagram": "Instagram", + "liber/ușor": "liber/ușor", + "linii neîncasate.": "linii neîncasate.", "lucrare caroserie": "lucrare caroserie", "lucrare terți": "lucrare terți", "lucrări caroserie": "lucrări caroserie", "lucrări terți": "lucrări terți", "mașini": "машины", "mașină": "машина", + "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).": "mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).", "new": "новый", "niciodată": "niciodată", "norme-ore": "norme-ore", @@ -1381,6 +1695,8 @@ "portal.invitation.invalid_title": "portal.invitation.invalid_title", "portal.invitation.new_password": "portal.invitation.new_password", "portal.invitation.title_accept": "portal.invitation.title_accept", + "portal.invitation.welcome_body": "portal.invitation.welcome_body", + "portal.invitation.welcome_name": "portal.invitation.welcome_name", "portal.shop.add_to_cart": "portal.shop.add_to_cart", "portal.shop.address_delivery": "portal.shop.address_delivery", "portal.shop.all_categories": "portal.shop.all_categories", @@ -1408,14 +1724,18 @@ "portal.shop.forgot_title": "portal.shop.forgot_title", "portal.shop.full_name": "portal.shop.full_name", "portal.shop.have_account": "portal.shop.have_account", + "portal.shop.hello_name": "portal.shop.hello_name", "portal.shop.in_stock": "portal.shop.in_stock", "portal.shop.in_stock_only": "portal.shop.in_stock_only", + "portal.shop.in_stock_qty": "portal.shop.in_stock_qty", "portal.shop.login": "portal.shop.login", "portal.shop.logout": "portal.shop.logout", "portal.shop.my_account": "portal.shop.my_account", + "portal.shop.my_orders": "portal.shop.my_orders", "portal.shop.no_account": "portal.shop.no_account", "portal.shop.no_orders_yet": "portal.shop.no_orders_yet", "portal.shop.no_parts_found": "portal.shop.no_parts_found", + "portal.shop.no_parts_found_for": "portal.shop.no_parts_found_for", "portal.shop.notes": "portal.shop.notes", "portal.shop.on_order": "portal.shop.on_order", "portal.shop.order_date": "portal.shop.order_date", @@ -1453,6 +1773,7 @@ "portal.shop.vin_invalid": "portal.shop.vin_invalid", "portal.shop.vin_manufacturer": "portal.shop.vin_manufacturer", "portal.shop.vin_region": "portal.shop.vin_region", + "portal.shop.vin_search_parts": "portal.shop.vin_search_parts", "portal.shop.vin_title": "portal.shop.vin_title", "portal.shop.vin_year": "portal.shop.vin_year", "portal.tracking.approval_needed_body": "portal.tracking.approval_needed_body", @@ -1469,48 +1790,67 @@ "portal.tracking.ready_estimated": "portal.tracking.ready_estimated", "portal.tracking.recommendations": "portal.tracking.recommendations", "portal.tracking.stages": "portal.tracking.stages", + "portal.tracking.title_fisa": "portal.tracking.title_fisa", "portal.tracking.unit_pcs": "portal.tracking.unit_pcs", "portal.tracking.what_asked": "portal.tracking.what_asked", "posturi de lucru": "posturi de lucru", "programări": "programări", + "programări active": "programări active", + "programări neconfirmate < 24h": "programări neconfirmate < 24h", + "referral": "Рекомендация", "reguli markup": "reguli markup", "regulă": "regulă", "sau": "или", "set anvelope": "set anvelope", "seturi anvelope": "seturi anvelope", + "site": "Сайт", "subcontractor": "субподрядчик", "subcontractori": "subcontractori", + "telegram": "Telegram", "template-uri": "template-uri", + "ultima fișă": "ultima fișă", + "ușor": "ușor", "vip": "vip", + "walk_in": "Пришёл лично", + "whatsapp": "WhatsApp", "Împărtășește": "Поделиться", "În așteptare": "В ожидании", + "În așteptare aprobare": "Ожидает одобрения", "În curs": "В процессе", "În depozit": "На складе", "În lucru": "В работе", "În pipeline": "В воронке", "În trial": "В триале", "Înainte": "Назад", + "Înapoi": "Назад", + "Încarcă": "Загрузить", "Încarcă fișier": "Загрузить файл", "Încarcă fișierul Excel sau CSV": "Încarcă fișierul Excel sau CSV", "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.": "Încarcă o poză cu factura. AI-ul extrage furnizorul, data și liniile. Verifici și salvezi.", + "Încasări": "Поступления", "Încasări (luna)": "Поступления (месяц)", + "Încasări pe metodă": "Încasări pe metodă", "Începe": "Начать", "Începe lucrul": "Начать работу", "Închide": "Закрыть", "Închide fișa": "Закрыть наряд", "Închis": "Закрыт", + "Închis (Duminică/sărbătoare)": "Închis (Duminică/sărbătoare)", "Închis la": "Закрыт", "Închise azi": "Закрыто сегодня", "Încărcare STO": "Загрузка СТО", + "Încărcare celulă": "Încărcare celulă", "Încărcare service": "Загрузка сервиса", "Înregistrare": "Регистрация", "Înregistrat": "Зарегистрирован", "Î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ă seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.": "Înregistrează seturile de anvelope ale clienților și gestionează depozitarea sezonieră (tire hotel). Urmărește uzura, TPMS și locația în depozit.", + "Î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": "Шаблоны услуг", "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese": "Șablon aplicat: {$r['labor']} manopere, {$r['parts']} piese", "Șablon serviciu": "Шаблон услуги", + "Șterge": "Удалить", "Șterge imagine": "Удалить изображение", "Șterge produs": "Удалить товар", "Șterge rând": "Удалить строку", @@ -1521,14 +1861,65 @@ "Șters la": "Удалено", "șabloane servicii": "șabloane servicii", "șablon": "șablon", + "șters": "șters", + "Țară": "Țară", "Ține-mă minte": "Запомнить меня", + "— (multe VIN-uri europene nu respectă checksum-ul NA)": "— (multe VIN-uri europene nu respectă checksum-ul NA)", + "— fără pod —": "— fără pod —", + "← Săpt. anterioară": "← Săpt. anterioară", + "← Înapoi": "← Înapoi", + "← Înapoi la AutoCRM": "← Înapoi la AutoCRM", + "← Înapoi la facturi": "← Înapoi la facturi", + "→ creează aplicație live → ia credentials": "→ creează aplicație live → ia credentials", + "→ ia keys → setează webhook la URL-ul de mai sus": "→ ia keys → setează webhook la URL-ul de mai sus", + "↗ Deschide Purchase": "↗ Deschide Purchase", + "↗ Deschide comanda în Filament": "↗ Deschide comanda în Filament", + "⏹ Oprește": "⏹ Oprește", + "◀ Luna precedentă": "◀ Luna precedentă", + "⚖️ Balanță": "⚖️ Balanță", + "⚙ Cum funcționează:": "⚙ Cum funcționează:", "⚠ Acțiune necesară": "⚠ Требуется действие", + "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.": "⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.", + "⚠ Fără plan": "⚠ Fără plan", + "⚠ Pentru a primi plăți LIVE:": "⚠ Pentru a primi plăți LIVE:", + "⚠ Recomandări": "⚠ Recomandări", + "⚠ Recomandări:": "⚠ Recomandări:", + "⚠ Token-ul tău nou (afișat o singură dată):": "⚠ Token-ul tău nou (afișat o singură dată):", + "⚠️ Lipsește cheia Claude în Setări → AI.": "⚠️ Lipsește cheia Claude în Setări → AI.", + "⚠️ Stoc minim atins": "⚠️ Stoc minim atins", + "✅ Mașina dvs. este gata!": "✅ Mașina dvs. este gata!", + "✏ Editează pod": "✏ Editează pod", "✓ Achitat": "✓ Оплачено", "✓ Pe abonament plătit": "✓ На платной подписке", + "⬇ Descarcă backup acum": "⬇ Descarcă backup acum", + "⭐ VIP fără contact recent": "⭐ VIP fără contact recent", "🅿️ PayPal": "🅿️ PayPal", "🇲🇩 Paynet (Moldova)": "🇲🇩 Paynet (Moldova)", "🎉 Bun venit în AutoCRM!": "🎉 Bun venit în AutoCRM!", + "🎉 Termină configurarea": "🎉 Termină configurarea", "🎉 Toate facturile sunt plătite": "🎉 Toate facturile sunt plătite", + "🏦 Instrucțiuni transfer bancar": "🏦 Instrucțiuni transfer bancar", "🏦 Transfer bancar (manual)": "🏦 Transfer bancar (manual)", - "💳 Stripe": "💳 Stripe" + "👥 Clienți": "👥 Clienți", + "💰 Finanțe": "💰 Finanțe", + "💰 Fișe neplătite": "💰 Fișe neplătite", + "💳 Plată confirmată": "💳 Plată confirmată", + "💳 Plătește": "💳 Plătește", + "💳 Stripe": "💳 Stripe", + "💾 Salvează setările": "💾 Salvează setările", + "📅 Programare confirmată": "📅 Programare confirmată", + "📊 Încărcare": "📊 Încărcare", + "📋 Copiază": "📋 Copiază", + "📍 Locație & contact": "📍 Locație & contact", + "📚 Cum se face plata în sistem:": "📚 Cum se face plata în sistem:", + "📦 Caută piesă în catalog": "📦 Caută piesă în catalog", + "📦 Export complet date tenant": "📦 Export complet date tenant", + "📷 Pornește scanner": "📷 Pornește scanner", + "🖨 PDF programări": "🖨 PDF programări", + "🖨 Tipărește": "🖨 Tipărește", + "🗑 Șterge": "🗑 Șterge", + "😴 Clienți pierduți": "😴 Clienți pierduți", + "🚗 Mașini cu acest VIN în CRM": "🚗 Mașini cu acest VIN în CRM", + "🚗 Mașini cu kilometraj mare": "🚗 Mașini cu kilometraj mare", + "🚗 Mărci suportate": "🚗 Mărci suportate" } \ No newline at end of file diff --git a/resources/views/emails/appointment-confirmed.blade.php b/resources/views/emails/appointment-confirmed.blade.php index fb429f3..ec5f1c5 100644 --- a/resources/views/emails/appointment-confirmed.blade.php +++ b/resources/views/emails/appointment-confirmed.blade.php @@ -5,14 +5,14 @@ 'email' => $email ?? null, 'city' => $city ?? null, 'logoUrl' => $logoUrl ?? null, - 'title' => 'Programare confirmată', -]) -

📅 Programare confirmată

+ 'title' => {{ __('\'Programare confirmată\', +])') }} +

{{ __('📅 Programare confirmată') }}

Bună ziua{{ $client?->name ? ', ' . $client->name : '' }},

-

Programarea dvs. este confirmată:

+

{{ __('Programarea dvs. este confirmată:') }}

- + @@ -25,7 +25,7 @@ @endif @if ($vehicle) - +
Data
{{ __('Data') }} {{ $appointment->date?->format('d.m.Y') }}
{{ $appointment->title }}
Auto
{{ __('Auto') }} {{ $vehicle->make }} {{ $vehicle->model }} @if ($vehicle->plate) [{{ $vehicle->plate }}] @endif @@ -41,6 +41,6 @@ @endif
-

Vă așteptăm! 🚗

+

{{ __('Vă așteptăm! 🚗') }}

Pentru reprogramare sau anulare, sunați-ne la {{ $phone ?? '—' }}.

@endcomponent diff --git a/resources/views/emails/layout.blade.php b/resources/views/emails/layout.blade.php index d7745f2..df1504a 100644 --- a/resources/views/emails/layout.blade.php +++ b/resources/views/emails/layout.blade.php @@ -28,7 +28,7 @@
{{ $companyName ?? 'AutoCRM' }}
@if (!empty($phone))
📞 {{ $phone }}
@endif @if (!empty($email))
✉ {{ $email }}
@endif -
Acest email a fost generat automat. Vă rugăm nu răspundeți.
+
{{ __('Acest email a fost generat automat. Vă rugăm nu răspundeți.') }}
diff --git a/resources/views/emails/payment-received.blade.php b/resources/views/emails/payment-received.blade.php index 0a84b7c..30ca132 100644 --- a/resources/views/emails/payment-received.blade.php +++ b/resources/views/emails/payment-received.blade.php @@ -5,14 +5,14 @@ 'email' => $email ?? null, 'city' => $city ?? null, 'logoUrl' => $logoUrl ?? null, - 'title' => 'Plată confirmată', -]) -

💳 Plată confirmată

+ 'title' => {{ __('\'Plată confirmată\', +])') }} +

{{ __('💳 Plată confirmată') }}

Bună ziua{{ $client?->name ? ', ' . $client->name : '' }},

-

Confirmăm primirea plății dvs.:

+

{{ __('Confirmăm primirea plății dvs.:') }}

- + @@ -20,17 +20,17 @@ - + @if ($payment->reference) - + @endif @if ($workOrder) - + @endif
Sumă achitată
{{ __('Sumă achitată') }} {{ number_format((float) $payment->amount, 2, '.', ' ') }} {{ $currency }}
{{ \App\Models\Tenant\Payment::METHODS[$payment->method] ?? $payment->method }}
Data
{{ __('Data') }} {{ $payment->paid_at?->format('d.m.Y') }}
Referință
{{ __('Referință') }} {{ $payment->reference }}
Fișă lucru
{{ __('Fișă lucru') }} {{ $workOrder->number }}
-

Vă mulțumim!

+

{{ __('Vă mulțumim!') }}

@endcomponent diff --git a/resources/views/emails/service-reminder.blade.php b/resources/views/emails/service-reminder.blade.php index d94e51c..dc1ead8 100644 --- a/resources/views/emails/service-reminder.blade.php +++ b/resources/views/emails/service-reminder.blade.php @@ -42,5 +42,5 @@ @endif -

Programați-vă online sau sunați la {{ $phone ?? '—' }}.

+

{{ __('Programați-vă online sau sunați la') }} {{ $phone ?? '—' }}.

@endcomponent diff --git a/resources/views/emails/shop/order-confirmation.blade.php b/resources/views/emails/shop/order-confirmation.blade.php index 4c6a3ac..3f81738 100644 --- a/resources/views/emails/shop/order-confirmation.blade.php +++ b/resources/views/emails/shop/order-confirmation.blade.php @@ -2,13 +2,13 @@ - Comandă primită + {{ __('Comandă primită') }} @php $brand = $company->display_name ?? $company->name; @endphp

{{ $brand }}

-

Comanda ta a fost primită cu succes.

+

{{ __('Comanda ta a fost primită cu succes.') }}

Comanda
@@ -39,7 +39,7 @@ @endif - Total + {{ __('Total') }} {{ number_format((float) $order->total, 2) }} {{ $currency }} @@ -48,13 +48,13 @@ @if ($order->address)

- Adresă livrare: {{ $order->address }} + {{ __('Adresă livrare:') }} {{ $order->address }}

@endif

- Urmărește comanda → + {{ __('Urmărește comanda →') }}

diff --git a/resources/views/emails/shop/password-reset.blade.php b/resources/views/emails/shop/password-reset.blade.php index 50bef3f..ab11527 100644 --- a/resources/views/emails/shop/password-reset.blade.php +++ b/resources/views/emails/shop/password-reset.blade.php @@ -2,22 +2,22 @@ - Resetare parolă + {{ __('Resetare parolă') }} @php $brand = $company->display_name ?? $company->name; @endphp

{{ $brand }}

Salut {{ $customer->name }},

-

Ai cerut resetarea parolei pentru contul tău de magazin. Apasă linkul de mai jos ca să setezi o parolă nouă:

+

{{ __('Ai cerut resetarea parolei pentru contul tău de magazin. Apasă linkul de mai jos ca să setezi o parolă nouă:') }}

- Resetează parola + {{ __('Resetează parola') }}

-

Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.

+

{{ __('Linkul expiră în 60 de minute. Dacă nu ai cerut tu acest reset, ignoră emailul — contul tău e în siguranță.') }}

Email automat de la {{ $brand }} — nu răspunde la el. diff --git a/resources/views/emails/user-invitation.blade.php b/resources/views/emails/user-invitation.blade.php index b0829a6..59154af 100644 --- a/resources/views/emails/user-invitation.blade.php +++ b/resources/views/emails/user-invitation.blade.php @@ -6,11 +6,11 @@ Ai fost invitat de **{{ $invitedBy }}** să acce­sezi **{{ $companyName }}** pe Pentru a-ți activa contul și a-ți seta parola, apasă pe linkul de mai jos: -Acceptă invitația +{{ __('Acceptă invitația') }} -Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj. +{{ __('Linkul expiră în 7 zile. Dacă nu te aștepți la această invitație, ignoră acest mesaj. -Mulțumim,
+Mulțumim,') }}
**{{ $companyName }}** diff --git a/resources/views/emails/work-order-ready.blade.php b/resources/views/emails/work-order-ready.blade.php index 0e48107..eb83dc8 100644 --- a/resources/views/emails/work-order-ready.blade.php +++ b/resources/views/emails/work-order-ready.blade.php @@ -6,15 +6,15 @@ 'email' => $email ?? null, 'city' => $city ?? null, 'logoUrl' => $logoUrl ?? null, - 'title' => 'Mașina e gata', -]) -

✅ Mașina dvs. este gata!

+ 'title' => {{ __('\'Mașina e gata\', +])') }} +

{{ __('✅ Mașina dvs. este gata!') }}

Bună ziua{{ $client?->name ? ', ' . $client->name : '' }},

-

Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.

+

{{ __('Vă informăm că lucrările pentru autoturismul dvs. au fost finalizate. Puteți veni să-l ridicați.') }}

@empty - + @endforelse
-
Fișă lucru
+
{{ __('Fișă lucru') }}
{{ $workOrder->number }}
@if ($vehicle)
@@ -27,7 +27,7 @@ - + @if ($paid > 0) @@ -38,7 +38,7 @@ @endif @if ($balance > 0) - + @endif @@ -46,11 +46,11 @@ @if ($workOrder->recommendations)
- ⚠ Recomandări:
+ {{ __('⚠ Recomandări:') }}
{{ $workOrder->recommendations }}
@endif -

Atașat veți găsi fișa de lucru completă (PDF).

-

Vă mulțumim pentru încredere!

+

{{ __('Atașat veți găsi') }} {{ __('fișa de lucru completă') }} (PDF).

+

{{ __('Vă mulțumim pentru încredere!') }}

@endcomponent diff --git a/resources/views/filament/central/pages/payment-settings.blade.php b/resources/views/filament/central/pages/payment-settings.blade.php index a0c9c13..82f23c6 100644 --- a/resources/views/filament/central/pages/payment-settings.blade.php +++ b/resources/views/filament/central/pages/payment-settings.blade.php @@ -7,27 +7,27 @@ class="fi-btn fi-btn-color-primary" style="padding: 10px 24px; background: #6366f1; color: white; border-radius: 8px; border: none; cursor: pointer; font-weight: 500;" wire:loading.attr="disabled"> - 💾 Salvează setările - Se salvează... + {{ __('💾 Salvează setările') }} + {{ __('Se salvează...') }}
- 📚 Cum se face plata în sistem: + {{ __('📚 Cum se face plata în sistem:') }}
    -
  1. Operatorul (tu) creezi factură: /admin/companies/{id} → „Generează factură"
  2. -
  3. Tenantul vede factura în interiorul lui la https://{slug}.service.mir.md/billing
  4. -
  5. Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual
  6. +
  7. {{ __('Operatorul (tu) creezi factură:') }} /admin/companies/{id} {{ __('→ „Generează factură"') }}
  8. +
  9. {{ __('Tenantul vede factura în interiorul lui la') }} https://{slug}.service.mir.md/billing
  10. +
  11. {{ __('Click „Plătește" → opțiuni: card (Stripe), PayPal, sau transfer manual') }}
  12. La succes: webhook → automat status=paid + extends company.active_until
  13. -
  14. La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions
  15. +
  16. {{ __('La transfer manual: tenant trimite confirmare; operator click „Marchează plătit" în /admin/subscriptions') }}
- ⚠ Pentru a primi plăți LIVE: + {{ __('⚠ Pentru a primi plăți LIVE:') }}
    -
  • Stripe: înregistrează cont la dashboard.stripe.com → ia keys → setează webhook la URL-ul de mai sus
  • -
  • PayPal: developer.paypal.com → creează aplicație live → ia credentials
  • -
  • Transfer bancar: pune doar IBAN-ul tău, fără cont gateway
  • +
  • {{ __('Stripe: înregistrează cont la') }} dashboard.stripe.com {{ __('→ ia keys → setează webhook la URL-ul de mai sus') }}
  • +
  • PayPal: developer.paypal.com {{ __('→ creează aplicație live → ia credentials') }}
  • +
  • {{ __('Transfer bancar: pune doar IBAN-ul tău, fără cont gateway') }}
diff --git a/resources/views/filament/central/resources/company/view.blade.php b/resources/views/filament/central/resources/company/view.blade.php index 92f83c3..704f900 100644 --- a/resources/views/filament/central/resources/company/view.blade.php +++ b/resources/views/filament/central/resources/company/view.blade.php @@ -88,7 +88,7 @@ @if ($this->record->plan) 📦 {{ $this->record->plan->name }} @else - ⚠ Fără plan + {{ __('⚠ Fără plan') }} @endif @if ($daysLeft !== null) @if ($daysLeft < 0) @@ -112,39 +112,39 @@
{{ $stats['users'] }}
-
Clienți
+
{{ __('Clienți') }}
{{ $stats['clients'] }}
-
Mașini
+
{{ __('Mașini') }}
{{ $stats['vehicles'] }}
-
Fișe lucru
+
{{ __('Fișe lucru') }}
{{ $stats['work_orders'] }}
{{ $stats['work_orders_open'] }} deschise
-
Piese în stoc
+
{{ __('Piese în stoc') }}
{{ $stats['parts'] }}
@if ($stats['parts_low_stock'])
⚠ {{ $stats['parts_low_stock'] }} sub minim
@endif
-
Venit luna curentă
+
{{ __('Venit luna curentă') }}
{{ number_format($stats['revenue_this_month'], 0, ',', ' ') }}
{{ $this->record->settings['currency'] ?? 'MDL' }}
-
Venit luna trecută
+
{{ __('Venit luna trecută') }}
{{ number_format($stats['revenue_last_month'], 0, ',', ' ') }}
{{ $this->record->settings['currency'] ?? 'MDL' }}
Storage media
{{ $stats['storage_mb'] }}
-
MB folosiți
+
{{ __('MB folosiți') }}
Ultima logare
@@ -163,18 +163,18 @@
💳 Istoric abonamente
@if ($this->record->subscriptions->isEmpty())
- Niciun abonament emis. Folosește „Generează factură" de sus. + {{ __('Niciun abonament emis. Folosește „Generează factură" de sus.') }}
@else
Total{{ __('Total') }} {{ number_format($total, 2, '.', ' ') }} {{ $currency }}
Rest de plată{{ __('Rest de plată') }} {{ number_format($balance, 2, '.', ' ') }} {{ $currency }}
- + - - + + - + @@ -202,17 +202,17 @@
⚙ Configurare tenant
-
Limbă
+
{{ __('Limbă') }}
{{ ['ro' => 'Română', 'ru' => 'Русский', 'en' => 'English'][$this->record->settings['language'] ?? 'ro'] ?? '—' }}
-
Monedă
+
{{ __('Monedă') }}
{{ $this->record->settings['currency'] ?? 'MDL' }}
-
Tarif normo-oră
+
{{ __('Tarif normo-oră') }}
{{ $this->record->settings['labor_rate'] ?? '—' }}
diff --git a/resources/views/filament/tenant/pages/ai-assistant.blade.php b/resources/views/filament/tenant/pages/ai-assistant.blade.php index 772e1e0..2042520 100644 --- a/resources/views/filament/tenant/pages/ai-assistant.blade.php +++ b/resources/views/filament/tenant/pages/ai-assistant.blade.php @@ -104,7 +104,7 @@
{{-- Sidebar: chat history --}}
- + @forelse ($chats as $c)
@@ -114,7 +114,7 @@ wire:confirm="Șterge conversația?">×
@empty -
Nicio conversație
+
{{ __('Nicio conversație') }}
@endforelse
@@ -126,9 +126,9 @@
Asistent AI pentru autoservice
-
Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...
+
{{ __('Întreabă-mă orice — diagnostic, sumar, sugestii, redactare mesaje către clienți...') }}
- Configurare: mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini). + Configurare: {{ __('mergi la Setări → Asistent AI și adaugă cheia API (Claude / GPT / Gemini).') }}
@else @@ -152,7 +152,7 @@ @if ($loading)
- asistent gândește... + {{ __('asistent gândește...') }}
@endif
@@ -161,12 +161,12 @@ - +
diff --git a/resources/views/filament/tenant/pages/api-tokens.blade.php b/resources/views/filament/tenant/pages/api-tokens.blade.php index d2438fe..dbf1eb6 100644 --- a/resources/views/filament/tenant/pages/api-tokens.blade.php +++ b/resources/views/filament/tenant/pages/api-tokens.blade.php @@ -23,13 +23,13 @@ @if ($newToken)
-

⚠ Token-ul tău nou (afișat o singură dată):

+

{{ __('⚠ Token-ul tău nou (afișat o singură dată):') }}

{{ $newToken }}
@@ -42,13 +42,13 @@
@php $tokens = $this->getTokens(); @endphp @if (empty($tokens)) -
Niciun token generat. Folosește butonul „Generează token" de sus.
+
{{ __('Niciun token generat. Folosește butonul „Generează token" de sus.') }}
@else
Factură{{ __('Factură') }} PlanPerioadăSumă{{ __('Perioadă') }}{{ __('Sumă') }} StatusPlătit{{ __('Plătit') }}
- - + + @@ -65,7 +65,7 @@ + class="at-revoke">{{ __('Revocă') }} @endforeach @@ -75,13 +75,13 @@
- Cum folosești API-ul: + {{ __('Cum folosești API-ul:') }}
    -
  1. Obține token cu POST /api/v1/login cu email+password JSON
  2. -
  3. Sau generează unul aici (recomandat pentru integrări permanente)
  4. -
  5. Adaugă header Authorization: Bearer <token> la fiecare request
  6. +
  7. {{ __('Obține token cu') }} POST /api/v1/login cu email+password JSON
  8. +
  9. {{ __('Sau generează unul aici (recomandat pentru integrări permanente)') }}
  10. +
  11. {{ __('Adaugă header') }} Authorization: Bearer <token> la fiecare request
  12. Endpoints disponibile: /api/v1/clients, /api/v1/vehicles, /api/v1/work-orders (GET, POST, PATCH, DELETE)
  13. -
  14. Tot apelul trebuie făcut pe subdomain-ul tău: https://{{ tenant()?->slug ?? 'YOURSLUG' }}.service.mir.md/api/v1/...
  15. +
  16. {{ __('Tot apelul trebuie făcut pe subdomain-ul tău:') }} https://{{ tenant()?->slug ?? 'YOURSLUG' }}.service.mir.md/api/v1/...
diff --git a/resources/views/filament/tenant/pages/backup.blade.php b/resources/views/filament/tenant/pages/backup.blade.php index b9dcbf3..5e25bde 100644 --- a/resources/views/filament/tenant/pages/backup.blade.php +++ b/resources/views/filament/tenant/pages/backup.blade.php @@ -16,31 +16,31 @@
-

📦 Export complet date tenant

+

{{ __('📦 Export complet date tenant') }}

- Exportă toate datele companiei tale într-un fișier ZIP. Util pentru: + {{ __('Exportă toate datele companiei tale într-un fișier ZIP. Util pentru:') }}

    -
  • Backup periodic (descarcă local sau sincronizează cu cloud)
  • +
  • {{ __('Backup periodic (descarcă local sau sincronizează cu cloud)') }}
  • Migrare la alt sistem CRM
  • -
  • Audit / verificări fiscale
  • -
  • Conformitate GDPR (la cererea ștergerii datelor)
  • +
  • {{ __('Audit / verificări fiscale') }}
  • +
  • {{ __('Conformitate GDPR (la cererea ștergerii datelor)') }}

- Conține: clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese, - depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata. + {{ __('Conține:') }} {{ __('clienți, mașini, lead-uri, deal-uri, programări, fișe de lucru cu manopere și piese, + depozit, furnizori, achiziții, plăți, cheltuieli, salarii, useri, logo + favicon, manifest cu metadata.') }}

- Format: ZIP cu fișiere JSON (1 per tabel) + media + manifest.json. + Format: {{ __('ZIP cu fișiere JSON (1 per tabel) + media + manifest.json.') }}

- ⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță. + {{ __('⚠ Backup-urile pot conține date sensibile (telefoane, emailuri, plăți). Stochează-le în siguranță.') }}

diff --git a/resources/views/filament/tenant/pages/calendar.blade.php b/resources/views/filament/tenant/pages/calendar.blade.php index dd55252..84c0558 100644 --- a/resources/views/filament/tenant/pages/calendar.blade.php +++ b/resources/views/filament/tenant/pages/calendar.blade.php @@ -155,26 +155,26 @@
-
CRM › Programări › Calendar vizual
+
{{ __('CRM › Programări ›') }} Calendar vizual

Calendar vizual

- + - +
-
Ore programate
+
{{ __('Ore programate') }}
{{ $stats['scheduled_hours'] }} / {{ $stats['capacity_hours'] }}
săptămâna curentă · {{ $stats['utilization_pct'] }}% capacitate
-
Fișe deschise
+
{{ __('Fișe deschise') }}
{{ $stats['open_count'] }}
-
programări active
+
{{ __('programări active') }}
Confirmate
@@ -184,7 +184,7 @@
No-show alert
{{ $stats['no_show_alert'] }}
-
programări neconfirmate < 24h
+
{{ __('programări neconfirmate < 24h') }}
@@ -193,16 +193,16 @@
{{ $this->getWeekLabel() }}
- +
Mod:
- - + + - +
@@ -216,37 +216,37 @@
De la: - Până la: + {{ __('Până la:') }}
@endif
Filtru:
- ⚙ Cum funcționează: - Matricea {{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii. + {{ __('⚙ Cum funcționează:') }} + Matricea {{ $groupBy === 'post' ? 'Pod' : 'Mecanic' }} × Zile{{ __('. Drag-and-drop între celule pentru a reprograma. Indicator de încărcare pe fiecare celulă (ore_planificate / capacitate). Click pe celulă goală → programare rapidă. Click pe eveniment → detalii.') }}
@if ($viewMode === 'list') @php $list = $this->getListAppointments(); @endphp
@if (empty($list)) -
Nicio programare în perioada selectată.
+
{{ __('Nicio programare în perioada selectată.') }}
@else
NumeFolosit ultima dată{{ __('Nume') }}{{ __('Folosit ultima dată') }} Creat Permisiuni
@@ -335,7 +335,7 @@ @endif
-

Legendă

+

{{ __('Legendă') }}

Mecanici
@@ -351,9 +351,9 @@
-
Încărcare celulă
+
{{ __('Încărcare celulă') }}
-
0–5h/10 liber/ușor
+
0–5h/10 {{ __('liber/ușor') }}
5–8.5h/10 mediu
≥9h/10 plin
@@ -362,8 +362,8 @@
Stare zi
Weekend
-
Închis (Duminică/sărbătoare)
-
Astăzi
+
{{ __('Închis (Duminică/sărbătoare)') }}
+
{{ __('Astăzi') }}
@@ -381,19 +381,19 @@
- @if ($openEvent['client_name'])
{{ $openEvent['client_name'] }}
@endif + @if ($openEvent['client_name'])
{{ $openEvent['client_name'] }}
@endif @if ($openEvent['client_phone'])
{{ $openEvent['client_phone'] }}
@endif - @if ($openEvent['vehicle'])
{{ $openEvent['vehicle'] }}
@endif + @if ($openEvent['vehicle'])
{{ $openEvent['vehicle'] }}
@endif @if ($openEvent['plate'])
{{ $openEvent['plate'] }}
@endif @if ($openEvent['master_name'])
{{ $openEvent['master_name'] }}
@endif @if ($openEvent['post_name'])
{{ $openEvent['post_name'] }}
@endif
@if ($openEvent['notes']) -
{{ $openEvent['notes'] }}
+
{{ $openEvent['notes'] }}
@endif
- + ↗ Editare
@endif @@ -404,7 +404,7 @@ @if ($showNewForm)
-
Programare nouă
+
{{ __('Programare nouă') }}
{{ $newAppt['date'] ?? '' }}
@@ -412,7 +412,7 @@
-
+
-
+
-
+
-
+
- - + +
@endif
@@ -453,10 +453,10 @@ @if ($showNewPostForm)
-

+ Pod / spațiu nou

-

Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).

+

{{ __('+ Pod / spațiu nou') }}

+

{{ __('Poți adăuga un loc de muncă (cu lift sau fără — ex: curte, atelier electric).') }}

- +
@@ -465,17 +465,17 @@
- +
- - + +
- - + +
@@ -485,9 +485,9 @@ @if ($renamingPostId)
-

✏ Editează pod

+

{{ __('✏ Editează pod') }}

- +
@@ -498,11 +498,11 @@ @endforeach -

Pre-completat automat la programări noi pe acest pod.

+

{{ __('Pre-completat automat la programări noi pe acest pod.') }}

- - + +
diff --git a/resources/views/filament/tenant/pages/excel-import-wizard.blade.php b/resources/views/filament/tenant/pages/excel-import-wizard.blade.php index fff70ef..9b81fad 100644 --- a/resources/views/filament/tenant/pages/excel-import-wizard.blade.php +++ b/resources/views/filament/tenant/pages/excel-import-wizard.blade.php @@ -49,10 +49,10 @@
{{-- STEP 1: Upload --}} @if ($step === 1) -

Pasul 1: Încarcă fișierul

+

{{ __('Pasul 1: Încarcă fișierul') }}

- + @if ($upload)
Selectat: {{ $upload->getClientOriginalName() }}
@@ -70,14 +70,14 @@
- +
@endif {{-- STEP 2: Mapping --}} @if ($step === 2) -

Pasul 2: Mapează coloanele

-

Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.

+

{{ __('Pasul 2: Mapează coloanele') }}

+

{{ __('Spune-i sistemului ce reprezintă fiecare coloană din fișier. Vom salva configurația pentru imporțările viitoare.') }}

@@ -123,21 +123,21 @@
- +
- +
- +
@@ -145,12 +145,12 @@
- +
@endif @@ -162,7 +162,7 @@
{{ $previewSummary['found'] }} - Găsite (cu articol existent) + {{ __('Găsite (cu articol existent)') }}
{{ $previewSummary['new'] }} @@ -170,7 +170,7 @@
{{ $previewSummary['no_article'] }} - Fără articol (manual) + {{ __('Fără articol (manual)') }}
@@ -178,7 +178,7 @@
- + @@ -199,13 +199,13 @@
- - + +
@endif @@ -213,13 +213,13 @@ @if ($step === 4)
-

Import finalizat cu succes

+

{{ __('Import finalizat cu succes') }}

{{ $previewSummary['total'] }} poziții importate în Purchase nouă

@if (session('purchase_id')) - ↗ Deschide Purchase + {{ __('↗ Deschide Purchase') }} @endif - +
@endif diff --git a/resources/views/filament/tenant/pages/finance.blade.php b/resources/views/filament/tenant/pages/finance.blade.php index 2f626a8..e4edc09 100644 --- a/resources/views/filament/tenant/pages/finance.blade.php +++ b/resources/views/filament/tenant/pages/finance.blade.php @@ -39,7 +39,7 @@
- Perioadă: + {{ __('Perioadă:') }} @foreach ($periods as $key => $label) @@ -55,19 +55,19 @@ @if ($tab === 'overview')
-
Încasări
{{ number_format($data['income'], 2, '.', ' ') }} MDL
+
{{ __('Încasări') }}
{{ number_format($data['income'], 2, '.', ' ') }} MDL
Cheltuieli
{{ number_format($data['expenses'], 2, '.', ' ') }} MDL
Profit
{{ number_format($data['profit'], 2, '.', ' ') }} MDL
-
Datorii clienți
{{ number_format($data['debtTotal'], 2, '.', ' ') }} MDL
+
{{ __('Datorii clienți') }}
{{ number_format($data['debtTotal'], 2, '.', ' ') }} MDL
@elseif ($tab === 'cashflow')
-
Total intrări
{{ number_format($data['totalIn'], 2, '.', ' ') }} MDL
-
Total ieșiri
{{ number_format($data['totalOut'], 2, '.', ' ') }} MDL
+
{{ __('Total intrări') }}
{{ number_format($data['totalIn'], 2, '.', ' ') }} MDL
+
{{ __('Total ieșiri') }}
{{ number_format($data['totalOut'], 2, '.', ' ') }} MDL
-
Cashflow zilnic — verde = încasări, roșu = cheltuieli
+
{{ __('Cashflow zilnic — verde = încasări, roșu = cheltuieli') }}
@foreach ($data['rows'] as $r)
@@ -90,18 +90,18 @@
Venituri
ArticolDenumireBrandCant.PrețStatusArticolDenumireBrandCant.{{ __('Preț') }}Status
- - + +
Manopere{{ number_format($data['worksRevenue'], 2, '.', ' ') }}
Piese (vânzare){{ number_format($data['partsRevenue'], 2, '.', ' ') }}
Total venituri{{ number_format($data['totalRevenue'], 2, '.', ' ') }}
{{ __('Piese (vânzare)') }}{{ number_format($data['partsRevenue'], 2, '.', ' ') }}
{{ __('Total venituri') }}{{ number_format($data['totalRevenue'], 2, '.', ' ') }}
Costuri
- + @foreach ($data['expensesByCat'] as $row) @endforeach - +
Cost piese (achiziție){{ number_format($data['partsCost'], 2, '.', ' ') }}
{{ __('Cost piese (achiziție)') }}{{ number_format($data['partsCost'], 2, '.', ' ') }}
{{ \App\Models\Tenant\Expense::CATEGORIES[$row->category] ?? $row->category }}{{ number_format((float) $row->total, 2, '.', ' ') }}
Total costuri{{ number_format($data['partsCost'] + $data['totalExpenses'], 2, '.', ' ') }}
{{ __('Total costuri') }}{{ number_format($data['partsCost'] + $data['totalExpenses'], 2, '.', ' ') }}
@@ -117,17 +117,17 @@
Active
- - - - + + + +
Numerar net (toate plățile - cheltuieli){{ number_format($data['netCash'], 2, '.', ' ') }} MDL
Datorii clienți (de încasat){{ number_format($data['debt'], 2, '.', ' ') }} MDL
Stoc piese (la preț achiziție){{ number_format($data['stockValue'], 2, '.', ' ') }} MDL
Total active{{ number_format($data['netCash'] + $data['debt'] + $data['stockValue'], 2, '.', ' ') }}
{{ __('Numerar net (toate plățile - cheltuieli)') }}{{ number_format($data['netCash'], 2, '.', ' ') }} MDL
{{ __('Datorii clienți (de încasat)') }}{{ number_format($data['debt'], 2, '.', ' ') }} MDL
{{ __('Stoc piese (la preț achiziție)') }}{{ number_format($data['stockValue'], 2, '.', ' ') }} MDL
{{ __('Total active') }}{{ number_format($data['netCash'] + $data['debt'] + $data['stockValue'], 2, '.', ' ') }}
-
Toate timpurile
+
{{ __('Toate timpurile') }}
- - + +
Total încasat{{ number_format($data['allTimePayments'], 2, '.', ' ') }} MDL
Total cheltuit{{ number_format($data['allTimeExpenses'], 2, '.', ' ') }} MDL
{{ __('Total încasat') }}{{ number_format($data['allTimePayments'], 2, '.', ' ') }} MDL
{{ __('Total cheltuit') }}{{ number_format($data['allTimeExpenses'], 2, '.', ' ') }} MDL
diff --git a/resources/views/filament/tenant/pages/integrations.blade.php b/resources/views/filament/tenant/pages/integrations.blade.php index 5e7d832..555c3cc 100644 --- a/resources/views/filament/tenant/pages/integrations.blade.php +++ b/resources/views/filament/tenant/pages/integrations.blade.php @@ -35,8 +35,8 @@
- ℹ️ Status: aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat. - Pentru moment, valorile salvate sunt accesibile în cod via $tenant->settings['integrations']. + ℹ️ Status: {{ __('aceste integrări sunt placeholder UI — le configurezi aici, dar implementarea actuală a fiecărui canal e proiect separat. + Pentru moment, valorile salvate sunt accesibile în cod via') }} $tenant->settings['integrations'].
@@ -71,7 +71,7 @@
@endforeach - + @endforeach diff --git a/resources/views/filament/tenant/pages/mechanic-kpi.blade.php b/resources/views/filament/tenant/pages/mechanic-kpi.blade.php index 43bd184..f2390df 100644 --- a/resources/views/filament/tenant/pages/mechanic-kpi.blade.php +++ b/resources/views/filament/tenant/pages/mechanic-kpi.blade.php @@ -19,22 +19,22 @@
- +
{{ $this->getPeriodLabel() }}
- +
@if (empty($rows)) -
Niciun mecanic nu a finalizat lucrări în această perioadă.
+
{{ __('Niciun mecanic nu a finalizat lucrări în această perioadă.') }}
@else - + - + diff --git a/resources/views/filament/tenant/pages/onboarding.blade.php b/resources/views/filament/tenant/pages/onboarding.blade.php index 80b3e4e..2031f6e 100644 --- a/resources/views/filament/tenant/pages/onboarding.blade.php +++ b/resources/views/filament/tenant/pages/onboarding.blade.php @@ -39,8 +39,8 @@

👋 Bun venit!

- Hai să facem 30 de secunde de configurare ca AutoCRM-ul tău să arate exact cum vrei tu. - Toate aceste setări pot fi schimbate oricând din meniul „Setări". + {{ __('Hai să facem 30 de secunde de configurare ca AutoCRM-ul tău să arate exact cum vrei tu. + Toate aceste setări pot fi schimbate oricând din meniul „Setări".') }}
{{-- Stepper --}} @@ -61,14 +61,14 @@
@if ($step > 1) - + @endif
@if ($step < 3) - + @else - + @endif
diff --git a/resources/views/filament/tenant/pages/recommendations.blade.php b/resources/views/filament/tenant/pages/recommendations.blade.php index 9a85b48..305319a 100644 --- a/resources/views/filament/tenant/pages/recommendations.blade.php +++ b/resources/views/filament/tenant/pages/recommendations.blade.php @@ -21,8 +21,8 @@
-
😴 Clienți pierduți {{ $lost->count() }}
-
Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.
+
{{ __('😴 Clienți pierduți') }} {{ $lost->count() }}
+
{{ __('Clienți care n-au mai venit de peste 6 luni — bun moment pentru un mesaj de revenire.') }}
MecanicLucrări{{ __('Lucrări') }} Norma ore Real oreEficiență{{ __('Eficiență') }} Venit manopere
@forelse ($lost as $c) @@ -31,7 +31,7 @@
{{ $c->phone }}
@empty @@ -41,8 +41,8 @@
-
🚗 Mașini cu kilometraj mare {{ $highMileage->count() }}
-
Sugerează revizie / piese de uzură.
+
{{ __('🚗 Mașini cu kilometraj mare') }} {{ $highMileage->count() }}
+
{{ __('Sugerează revizie / piese de uzură.') }}
- ultima fișă
{{ $c->workOrders->first()?->opened_at?->diffForHumans() ?? '—' }} + {{ __('ultima fișă') }}
{{ $c->workOrders->first()?->opened_at?->diffForHumans() ?? '—' }}
@forelse ($highMileage as $v) @@ -62,8 +62,8 @@
-
💰 Fișe neplătite {{ $unpaid->count() }}
-
Sună-i sau trimite-le un email cu suma datorată.
+
{{ __('💰 Fișe neplătite') }} {{ $unpaid->count() }}
+
{{ __('Sună-i sau trimite-le un email cu suma datorată.') }}
@forelse ($unpaid as $w) @@ -77,14 +77,14 @@ @empty - + @endforelse
Niciun rest de încasat. 🎉
{{ __('Niciun rest de încasat. 🎉') }}
-
⭐ VIP fără contact recent {{ $vip->count() }}
-
Clienți VIP cu care nu s-a vorbit de peste 30 zile.
+
{{ __('⭐ VIP fără contact recent') }} {{ $vip->count() }}
+
{{ __('Clienți VIP cu care nu s-a vorbit de peste 30 zile.') }}
@forelse ($vip as $c) @@ -97,7 +97,7 @@ @empty - + @endforelse
Toți VIP-ii sunt în contact recent.
{{ __('Toți VIP-ii sunt în contact recent.') }}
diff --git a/resources/views/filament/tenant/pages/reports.blade.php b/resources/views/filament/tenant/pages/reports.blade.php index 53ca75e..2f208b3 100644 --- a/resources/views/filament/tenant/pages/reports.blade.php +++ b/resources/views/filament/tenant/pages/reports.blade.php @@ -69,7 +69,7 @@
- Perioadă: + {{ __('Perioadă:') }} @foreach ($periods as $key => $label) @@ -88,9 +88,9 @@ @foreach ([ ['Încasări', $data['income'], 'success'], ['Cheltuieli', $data['expenses'], 'danger'], - ['Profit', $data['profit'], $data['profit'] >= 0 ? 'success' : 'danger'], - ['Datorii clienți', $data['debt'], 'warning'], - ] as [$label, $value, $color]) + ['Profit', $data['profit'], $data['profit'] >{{ __('= 0 ? \'success\' : \'danger\'], + [\'Datorii clienți\', $data[\'debt\'], \'warning\'], + ] as [$label, $value, $color])') }}
{{ $label }}
@@ -102,9 +102,9 @@
-
Încasări pe metodă
+
{{ __('Încasări pe metodă') }}
- + @forelse ($data['by_method'] as $row) @@ -113,7 +113,7 @@ @empty - + @endforelse
MetodăTranz.Total
{{ __('Metodă') }}Tranz.{{ __('Total') }}
{{ number_format((float)$row->total, 2, '.', ' ') }}
Nicio plată în perioada selectată.
{{ __('Nicio plată în perioada selectată.') }}
@@ -121,7 +121,7 @@
Cheltuieli pe categorie
- + @forelse ($data['by_category'] as $row) @@ -130,22 +130,22 @@ @empty - + @endforelse
CategorieNr.Total
Categorie{{ __('Nr.') }}{{ __('Total') }}
{{ number_format((float)$row->total, 2, '.', ' ') }}
Nicio cheltuială.
{{ __('Nicio cheltuială.') }}
-
Marjă profit: {{ $data['margin_pct'] }}%
+
{{ __('Marjă profit:') }} {{ $data['margin_pct'] }}%
@elseif ($tab === 'workload')
-
Fișe deschise
+
{{ __('Fișe deschise') }}
{{ $data['opened'] }}
-
Fișe închise
+
{{ __('Fișe închise') }}
{{ $data['closed'] }}
@@ -159,7 +159,7 @@
{{ $row->cnt }}
Nicio fișă în perioada selectată.
{{ __('Nicio fișă în perioada selectată.') }}
@@ -172,7 +172,7 @@ Mecanic Specializare Manopere - Ore + {{ __('Ore') }} Venit @@ -195,9 +195,9 @@
- - - + + + @@ -209,7 +209,7 @@ @empty - + @endforelse
ManoperăNr.Ore total{{ __('Manoperă') }}{{ __('Nr.') }}{{ __('Ore total') }} Venit
{{ number_format((float)$r->revenue, 2, '.', ' ') }}
Nicio manoperă efectuată.
{{ __('Nicio manoperă efectuată.') }}
@@ -218,9 +218,9 @@ @elseif ($tab === 'parts')
-
Top piese vândute
+
{{ __('Top piese vândute') }}
- + @forelse ($data['sold'] as $r) @@ -230,15 +230,15 @@ @empty - + @endforelse
PiesăCant.VenitMarjă
{{ __('Piesă') }}Cant.Venit{{ __('Marjă') }}
{{ number_format((float)$r->margin, 2, '.', ' ') }}
Nicio piesă montată.
{{ __('Nicio piesă montată.') }}
-
⚠️ Stoc minim atins
+
{{ __('⚠️ Stoc minim atins') }}
- + @forelse ($data['low'] as $p) @@ -247,7 +247,7 @@ @empty - + @endforelse
PiesăStocMin.
{{ __('Piesă') }}{{ __('Stoc') }}Min.
{{ $p->min_qty }}
Toate piesele sunt în stoc.
{{ __('Toate piesele sunt în stoc.') }}
@@ -257,11 +257,11 @@ @elseif ($tab === 'clients')
-
Clienți noi în perioadă
+
{{ __('Clienți noi în perioadă') }}
{{ $data['new_count'] }}
-
Lead-uri pe sursă
+
{{ __('Lead-uri pe sursă') }}
@forelse ($data['by_source'] as $row) diff --git a/resources/views/filament/tenant/pages/scanner.blade.php b/resources/views/filament/tenant/pages/scanner.blade.php index fa4a1fd..34ed58a 100644 --- a/resources/views/filament/tenant/pages/scanner.blade.php +++ b/resources/views/filament/tenant/pages/scanner.blade.php @@ -38,17 +38,17 @@ @php $pending = $this->getPendingItems(); @endphp
📦 Mod recepție — {{ $purchase->number }}
-
Scanează codurile pieselor pentru a marca ca recepționate. {{ count($pending) }} linii neîncasate.
+
{{ __('Scanează codurile pieselor pentru a marca ca recepționate.') }} {{ count($pending) }} {{ __('linii neîncasate.') }}
@if (! empty($receivedToasts))
- Recepție acum: + {{ __('Recepție acum:') }} @foreach (array_reverse(array_slice($receivedToasts, -5)) as $t)
· {{ $t['at'] }} — {{ $t['article'] }}: {{ rtrim(rtrim(number_format($t['qty_received'], 2), '0'), '.') }}/{{ rtrim(rtrim(number_format($t['qty_total'], 2), '0'), '.') }}
@endforeach
@endif
@endif @@ -59,14 +59,14 @@
- Apasă „Pornește" pentru a deschide camera. + {{ __('Apasă „Pornește" pentru a deschide camera.') }}
- - + +
@@ -76,7 +76,7 @@
- +
diff --git a/resources/views/filament/tenant/pages/settings.blade.php b/resources/views/filament/tenant/pages/settings.blade.php index 1763471..808d8d5 100644 --- a/resources/views/filament/tenant/pages/settings.blade.php +++ b/resources/views/filament/tenant/pages/settings.blade.php @@ -4,7 +4,7 @@
- Salvează + {{ __('Salvează') }}
diff --git a/resources/views/filament/tenant/pages/vin-search.blade.php b/resources/views/filament/tenant/pages/vin-search.blade.php index 2581372..7fc78af 100644 --- a/resources/views/filament/tenant/pages/vin-search.blade.php +++ b/resources/views/filament/tenant/pages/vin-search.blade.php @@ -24,7 +24,7 @@

🔎 Decode VIN

- + @@ -33,8 +33,8 @@ @if ($decoded['valid'])

✅ VIN decodificat

-
Producător
{{ $decoded['manufacturer'] }}
-
Țară
{{ $decoded['country'] }}
+
{{ __('Producător') }}
{{ $decoded['manufacturer'] }}
+
{{ __('Țară') }}
{{ $decoded['country'] }}
An model (estimat)
{{ $decoded['year'] ?? '—' }}
WMI
{{ $decoded['wmi'] }}
Serial
{{ $decoded['serial'] }}
@@ -47,9 +47,9 @@ @php $matches = $this->vehicleMatches(); @endphp @if ($matches->isNotEmpty())
-

🚗 Mașini cu acest VIN în CRM

+

{{ __('🚗 Mașini cu acest VIN în CRM') }}

- + @foreach ($matches as $v) @@ -67,9 +67,9 @@ @endif
-

📦 Caută piesă în catalog

+

{{ __('📦 Caută piesă în catalog') }}

+ placeholder="{{ __('Nume, cod articol, brand...') }}" style="font-size:14px;text-transform:none;font-family:inherit;"> @php $parts = $this->partsResults(); @endphp @if ($partsQuery) @@ -78,7 +78,7 @@
Niciun rezultat pentru „{{ $partsQuery }}"
@else
VINMarca/ModelPlateClientKm
VINMarca/ModelPlate{{ __('Client') }}Km
- + @foreach ($parts as $p) diff --git a/resources/views/filament/tenant/pages/workload.blade.php b/resources/views/filament/tenant/pages/workload.blade.php index 18ecb2f..9d83225 100644 --- a/resources/views/filament/tenant/pages/workload.blade.php +++ b/resources/views/filament/tenant/pages/workload.blade.php @@ -29,9 +29,9 @@
- + {{ $data['weekLabel'] }} - + capacitate ref: {{ $data['capacity'] }}h/zi
@@ -84,9 +84,9 @@
DenumireCodBrandStocPreț
Denumire{{ __('Cod') }}Brand{{ __('Stoc') }}{{ __('Preț') }}
- Legendă: + {{ __('Legendă:') }} liber - ușor + {{ __('ușor') }} mediu plin (peste capacitate)
diff --git a/resources/views/filament/tenant/smart-price.blade.php b/resources/views/filament/tenant/smart-price.blade.php index aecbf5e..ccc5d3a 100644 --- a/resources/views/filament/tenant/smart-price.blade.php +++ b/resources/views/filament/tenant/smart-price.blade.php @@ -1,6 +1,6 @@
- Preț de bază (markup) + {{ __('Preț de bază (markup)') }} {{ number_format($quote['base'], 2) }} MDL
@@ -14,11 +14,11 @@ @endforeach
@else -
Niciun coeficient contextual nu se aplică (preț de bază).
+
{{ __('Niciun coeficient contextual nu se aplică (preț de bază).') }}
@endif
- Preț recomandat + {{ __('Preț recomandat') }} {{ number_format($quote['final'], 2) }} MDL
diff --git a/resources/views/filament/tenant/tracking-qr.blade.php b/resources/views/filament/tenant/tracking-qr.blade.php index 5256ee8..4d871df 100644 --- a/resources/views/filament/tenant/tracking-qr.blade.php +++ b/resources/views/filament/tenant/tracking-qr.blade.php @@ -10,7 +10,7 @@ @endphp

- Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze. + {{ __('Trimite acest link clientului — vede statusul fișei, ETA și fotografiile fără să se logheze.') }}

@@ -33,7 +33,7 @@ rel="noopener" class="inline-flex items-center px-3 py-2 text-sm rounded-md bg-primary-600 text-white hover:bg-primary-700" > - Deschide → + {{ __('Deschide →') }}
@@ -43,6 +43,6 @@ href="{{ route('tracking.qr', $wo->tracking_token) }}" download="WO-{{ $wo->number }}-qr.svg" class="text-xs text-primary-600 hover:underline" - >Descarcă QR (SVG) + >{{ __('Descarcă QR (SVG)') }}
diff --git a/resources/views/filament/tenant/vin-decode.blade.php b/resources/views/filament/tenant/vin-decode.blade.php index 19eeb0a..2a64efc 100644 --- a/resources/views/filament/tenant/vin-decode.blade.php +++ b/resources/views/filament/tenant/vin-decode.blade.php @@ -14,16 +14,16 @@
Regiune
{{ $info['region'] ?? '—' }}
-
Țară
+
{{ __('Țară') }}
{{ $info['country'] ?? '—' }}
-
Producător
+
{{ __('Producător') }}
{{ $info['manufacturer'] ?? '— (WMI necunoscut)' }}
An model
{{ $info['year'] ?? '—' }}
-
Cod uzină
+
{{ __('Cod uzină') }}
{{ $info['plant'] ?? '—' }}
Checksum (ISO)
@@ -31,13 +31,13 @@ @if ($info['checksum_valid']) ✓ valid @else - — (multe VIN-uri europene nu respectă checksum-ul NA) + {{ __('— (multe VIN-uri europene nu respectă checksum-ul NA)') }} @endif
- Detalii granulare (model, motorizare) necesită bază TecDoc/NHTSA. Folosește butonul „AI: recomandări" pentru sugestii bazate pe an + producător. + {{ __('Detalii granulare (model, motorizare) necesită bază TecDoc/NHTSA. Folosește butonul „AI: recomandări" pentru sugestii bazate pe an + producător.') }}
@endif
diff --git a/resources/views/parts/labels.blade.php b/resources/views/parts/labels.blade.php index 7409229..8adde3d 100644 --- a/resources/views/parts/labels.blade.php +++ b/resources/views/parts/labels.blade.php @@ -42,7 +42,7 @@
{{ $labels->count() }} etichete - +
diff --git a/resources/views/pdf/appointments.blade.php b/resources/views/pdf/appointments.blade.php index 7f3e8bd..c5ee4cb 100644 --- a/resources/views/pdf/appointments.blade.php +++ b/resources/views/pdf/appointments.blade.php @@ -31,7 +31,7 @@ Ora Subiect - Client / Auto + {{ __('Client / Auto') }} Pod Maistru Status @@ -57,7 +57,7 @@ @empty -
Nicio programare în această perioadă.
+
{{ __('Nicio programare în această perioadă.') }}
@endforelse diff --git a/resources/views/pdf/work-order.blade.php b/resources/views/pdf/work-order.blade.php index 1a5e0da..0b620b4 100644 --- a/resources/views/pdf/work-order.blade.php +++ b/resources/views/pdf/work-order.blade.php @@ -133,11 +133,11 @@ @endif
-
FIȘĂ DE LUCRU
+
{{ __('FIȘĂ DE LUCRU') }}
Nr.: {{ $wo->number }}
-
Data deschiderii: {{ $wo->opened_at?->format('d.m.Y') }}
+
{{ __('Data deschiderii:') }} {{ $wo->opened_at?->format('d.m.Y') }}
@if ($wo->closed_at) -
Data închiderii: {{ $wo->closed_at->format('d.m.Y') }}
+
{{ __('Data închiderii:') }} {{ $wo->closed_at->format('d.m.Y') }}
@endif
Status: {{ \App\Models\Tenant\WorkOrder::STATUSES[$wo->status] ?? $wo->status }} @@ -149,9 +149,9 @@
-

Client

+

{{ __('Client') }}

-
Nume: {{ $wo->client?->name ?? '—' }}
+
{{ __('Nume:') }} {{ $wo->client?->name ?? '—' }}
Telefon: {{ $wo->client?->phone ?? '—' }}
@if ($wo->client?->email)
Email: {{ $wo->client->email }}
@@ -161,7 +161,7 @@
-

Auto

+

{{ __('Auto') }}

Marca/Model: {{ $wo->vehicle?->make }} {{ $wo->vehicle?->model }} {{ $wo->vehicle?->year }}
Nr.: {{ $wo->vehicle?->plate ?? '—' }}
@@ -170,7 +170,7 @@ @endif
Km la intrare: {{ $wo->mileage_in ? number_format($wo->mileage_in, 0, '.', ' ') : '—' }}
@if ($wo->mileage_out) -
Km la ieșire: {{ number_format($wo->mileage_out, 0, '.', ' ') }}
+
{{ __('Km la ieșire:') }} {{ number_format($wo->mileage_out, 0, '.', ' ') }}
@endif
@@ -180,7 +180,7 @@ @if ($wo->complaint || $wo->diagnosis)
@if ($wo->complaint) -

Plângere client

+

{{ __('Plângere client') }}

{{ $wo->complaint }}
@endif @if ($wo->diagnosis) @@ -196,9 +196,9 @@ Denumire - Ore - Preț/h - Total + {{ __('Ore') }} + {{ __('Preț/h') }} + {{ __('Total') }} @@ -226,10 +226,10 @@ Denumire - Cod + {{ __('Cod') }} Cant. - Preț - Total + {{ __('Preț') }} + {{ __('Total') }} @@ -268,7 +268,7 @@ @if ($wo->recommendations)
-

⚠ Recomandări

+

{{ __('⚠ Recomandări') }}

{{ $wo->recommendations }}
@endif @@ -277,11 +277,11 @@ diff --git a/resources/views/site/bank-instructions.blade.php b/resources/views/site/bank-instructions.blade.php index b56385b..315eed3 100644 --- a/resources/views/site/bank-instructions.blade.php +++ b/resources/views/site/bank-instructions.blade.php @@ -17,18 +17,18 @@
-

🏦 Instrucțiuni transfer bancar

+

{{ __('🏦 Instrucțiuni transfer bancar') }}

Beneficiar: {{ $bank['beneficiary'] ?? '—' }}
IBAN: {{ $bank['iban'] ?? '—' }}
BIC / SWIFT: {{ $bank['bic'] ?? '—' }}
Banca: {{ $bank['bank_name'] ?? '—' }}
-
Sumă: {{ number_format($sub->amount, 2) }} {{ $sub->currency }}
+
{{ __('Sumă:') }} {{ number_format($sub->amount, 2) }} {{ $sub->currency }}
- ⚠ Important — la „Detalii plată" / „Reference" scrie EXACT:
+ {{ __('⚠ Important — la „Detalii plată" / „Reference" scrie EXACT:') }}
{{ $sub->invoice_number ?? 'INV-' . $sub->id }} - Fără acest cod, plata va fi greu de identificat. + {{ __('Fără acest cod, plata va fi greu de identificat.') }}
@if (! empty($bank['instructions'])) @@ -36,15 +36,15 @@ @endif
- După efectuarea transferului: + {{ __('După efectuarea transferului:') }}
    -
  • Plata apare în 1-3 zile lucrătoare
  • -
  • Operatorul confirmă manual factura ca plătită
  • +
  • {{ __('Plata apare în 1-3 zile lucrătoare') }}
  • +
  • {{ __('Operatorul confirmă manual factura ca plătită') }}
  • Abonamentul se extinde automat
- ← Înapoi la facturi + {{ __('← Înapoi la facturi') }}
diff --git a/resources/views/site/billing.blade.php b/resources/views/site/billing.blade.php index 8eb369b..2c554f5 100644 --- a/resources/views/site/billing.blade.php +++ b/resources/views/site/billing.blade.php @@ -56,15 +56,15 @@
- ← Înapoi la AutoCRM + {{ __('← Înapoi la AutoCRM') }}

Facturi & abonament

{{ $tenant->display_name ?? $tenant->name }} · {{ $tenant->slug }}.service.mir.md

@if ($invoices->isEmpty())
📄
-
Nicio factură emisă încă
-
Operatorul îți va emite factură când e timpul abonamentului.
+
{{ __('Nicio factură emisă încă') }}
+
{{ __('Operatorul îți va emite factură când e timpul abonamentului.') }}
@else @foreach ($invoices as $inv) @@ -95,7 +95,7 @@ @else @endif
@@ -106,7 +106,7 @@ @@ -174,7 +174,7 @@ @if (! $methods['stripe'] && ! $methods['paypal'] && ! $methods['paynet'] && ! $methods['bank'])
- Nicio metodă de plată configurată. Contactează operatorul. + {{ __('Nicio metodă de plată configurată. Contactează operatorul.') }}
@endif @@ -184,7 +184,7 @@ @if (! empty($legal['name']))
- Operator platformă: {{ $legal['name'] }} + {{ __('Operator platformă:') }} {{ $legal['name'] }} @if (! empty($legal['idno'])) · IDNO {{ $legal['idno'] }} @endif @if (! empty($legal['address'])) · {{ $legal['address'] }} @endif @if (! empty($legal['email'])) · {{ $legal['email'] }} @endif diff --git a/resources/views/site/checkout-stub.blade.php b/resources/views/site/checkout-stub.blade.php index 4f89231..2f3effe 100644 --- a/resources/views/site/checkout-stub.blade.php +++ b/resources/views/site/checkout-stub.blade.php @@ -16,7 +16,7 @@
🚧

{{ $gateway }} Checkout

-

Factură: {{ $sub->invoice_number ?? '#' . $sub->id }} · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}

+

{{ __('Factură:') }} {{ $sub->invoice_number ?? '#' . $sub->id }} · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}

Mod stub:
@@ -24,7 +24,7 @@ În prod, aici redirectează la pagina {{ $gateway }} Checkout cu sumele și metadatele facturii. La success, webhook-ul marchează automat factura ca plătită.
- ← Înapoi + {{ __('← Înapoi') }}
diff --git a/resources/views/site/landing.blade.php b/resources/views/site/landing.blade.php index 01d5ae7..32cd8b4 100644 --- a/resources/views/site/landing.blade.php +++ b/resources/views/site/landing.blade.php @@ -82,20 +82,20 @@
-

📍 Locație & contact

- @if ($city)

Oraș: {{ $city }}

@endif +

{{ __('📍 Locație & contact') }}

+ @if ($city)

{{ __('Oraș:') }} {{ $city }}

@endif @if ($phone)

Telefon: {{ $phone }}

@endif @if ($email)

Email: {{ $email }}

@endif

🕒 Program de lucru

Luni – Vineri: 08:00 – 18:00

-

Sâmbătă: 09:00 – 14:00

-

Duminică: închis

+

{{ __('Sâmbătă: 09:00 – 14:00') }}

+

{{ __('Duminică: închis') }}

@if (! empty($cars))
-

🚗 Mărci suportate

+

{{ __('🚗 Mărci suportate') }}

{{ implode(', ', array_slice($cars, 0, 12)) }}@if (count($cars) > 12), …@endif

@endif @@ -103,7 +103,7 @@
-

Rezervă o programare

+

{{ __('Rezervă o programare') }}

@if ($phone) 📞 {{ $phone }} @endif diff --git a/resources/views/site/payment-cancel.blade.php b/resources/views/site/payment-cancel.blade.php index 1e874bc..70edca4 100644 --- a/resources/views/site/payment-cancel.blade.php +++ b/resources/views/site/payment-cancel.blade.php @@ -1,6 +1,6 @@ -Plată anulată +{{ __('Plată anulată') }}
-
Client (nume, semnătură):
+
{{ __('Client (nume, semnătură):') }}
-
Maistru / Recepție:
+
{{ __('Maistru / Recepție:') }}