feat(i18n): mega-wrap 494 raw RO strings + 269 lang entries + 161 human RU/163 EN
Broad sweep across the whole codebase:
- Blade views (39 files, 315 wraps): tag-text and title/placeholder/alt
attributes wrapped with {{ __() }}. Excludes scripts, styles, @php,
@verbatim, {{ }}, {!! !!}, comments to avoid touching interpolations.
- PHP (54 files, 179 wraps): array 'key' => 'RO value' patterns and
list items with diacritics wrapped with __(). Reverted __() inside
const arrays (PHP disallows non-constant expressions).
- Added 269 new keys to lang/{ru,en}.json (identity fallback for
unknowns → 161 human RU + 163 EN translations added for the most
common enums, stages, roles, statuses, payment methods, vehicle
categories, warehouse, portal, form actions.
Missing translations fall back to RO so the UI never breaks. All 306
tests pass; view cache compiles cleanly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,18 +17,18 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="box">
|
||||
<h1>🏦 Instrucțiuni transfer bancar</h1>
|
||||
<h1>{{ __('🏦 Instrucțiuni transfer bancar') }}</h1>
|
||||
|
||||
<div class="row"><span>Beneficiar:</span> <b>{{ $bank['beneficiary'] ?? '—' }}</b></div>
|
||||
<div class="row"><span>IBAN:</span> <code onclick="navigator.clipboard.writeText(this.textContent)">{{ $bank['iban'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>BIC / SWIFT:</span> <code>{{ $bank['bic'] ?? '—' }}</code></div>
|
||||
<div class="row"><span>Banca:</span> {{ $bank['bank_name'] ?? '—' }}</div>
|
||||
<div class="row"><span>Sumă:</span> <b>{{ number_format($sub->amount, 2) }} {{ $sub->currency }}</b></div>
|
||||
<div class="row"><span>{{ __('Sumă:') }}</span> <b>{{ number_format($sub->amount, 2) }} {{ $sub->currency }}</b></div>
|
||||
|
||||
<div class="ref-box">
|
||||
<b>⚠ Important — la „Detalii plată" / „Reference" scrie EXACT:</b><br>
|
||||
<b>{{ __('⚠ Important — la „Detalii plată" / „Reference" scrie EXACT:') }}</b><br>
|
||||
<code style="font-size:14px;font-weight:700;display:block;margin:8px 0;padding:8px;background:#fff;border-radius:4px;">{{ $sub->invoice_number ?? 'INV-' . $sub->id }}</code>
|
||||
Fără acest cod, plata va fi greu de identificat.
|
||||
{{ __('Fără acest cod, plata va fi greu de identificat.') }}
|
||||
</div>
|
||||
|
||||
@if (! empty($bank['instructions']))
|
||||
@@ -36,15 +36,15 @@
|
||||
@endif
|
||||
|
||||
<div style="margin-top:20px;padding-top:16px;border-top:1px solid #e5e7eb;font-size:12px;color:#6b7280;line-height:1.6;">
|
||||
După efectuarea transferului:
|
||||
{{ __('După efectuarea transferului:') }}
|
||||
<ul style="margin: 8px 0 0 20px;">
|
||||
<li>Plata apare în 1-3 zile lucrătoare</li>
|
||||
<li>Operatorul confirmă manual factura ca plătită</li>
|
||||
<li>{{ __('Plata apare în 1-3 zile lucrătoare') }}</li>
|
||||
<li>{{ __('Operatorul confirmă manual factura ca plătită') }}</li>
|
||||
<li>Abonamentul se extinde automat</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<a href="/billing" class="btn-back">← Înapoi la facturi</a>
|
||||
<a href="/billing" class="btn-back">{{ __('← Înapoi la facturi') }}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -56,15 +56,15 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<a href="/app" class="nav-back">← Înapoi la AutoCRM</a>
|
||||
<a href="/app" class="nav-back">{{ __('← Înapoi la AutoCRM') }}</a>
|
||||
<h1>Facturi & abonament</h1>
|
||||
<p class="sub">{{ $tenant->display_name ?? $tenant->name }} · {{ $tenant->slug }}.service.mir.md</p>
|
||||
|
||||
@if ($invoices->isEmpty())
|
||||
<div class="empty">
|
||||
<div style="font-size:48px;margin-bottom:8px;">📄</div>
|
||||
<div style="font-size:16px;font-weight:600;margin-bottom:4px;">Nicio factură emisă încă</div>
|
||||
<div style="font-size:13px;">Operatorul îți va emite factură când e timpul abonamentului.</div>
|
||||
<div style="font-size:16px;font-weight:600;margin-bottom:4px;">{{ __('Nicio factură emisă încă') }}</div>
|
||||
<div style="font-size:13px;">{{ __('Operatorul îți va emite factură când e timpul abonamentului.') }}</div>
|
||||
</div>
|
||||
@else
|
||||
@foreach ($invoices as $inv)
|
||||
@@ -95,7 +95,7 @@
|
||||
<span style="color:#10b981;font-weight:600;">✓</span>
|
||||
@else
|
||||
<button class="btn-pay" onclick="document.getElementById('m-{{ $inv->id }}').classList.add('open')">
|
||||
💳 Plătește
|
||||
{{ __('💳 Plătește') }}
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
@@ -106,7 +106,7 @@
|
||||
<div class="modal-box">
|
||||
<span class="modal-close" onclick="document.getElementById('m-{{ $inv->id }}').classList.remove('open')">×</span>
|
||||
<h3>Plătește {{ $inv->invoice_number ?? '#' . $inv->id }}</h3>
|
||||
<p>Sumă: <b>{{ number_format($inv->amount, 2) }} {{ $inv->currency }}</b></p>
|
||||
<p>{{ __('Sumă:') }} <b>{{ number_format($inv->amount, 2) }} {{ $inv->currency }}</b></p>
|
||||
|
||||
@if ($methods['stripe'])
|
||||
<form method="POST" action="{{ route('pay.start', ['subscription' => $inv->id]) }}" class="method-form">
|
||||
@@ -165,7 +165,7 @@
|
||||
<div class="icon">🏦</div>
|
||||
<div>
|
||||
<div class="label">Transfer bancar</div>
|
||||
<div class="desc">Plătește direct din bancă (1-3 zile)</div>
|
||||
<div class="desc">{{ __('Plătește direct din bancă (1-3 zile)') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
@if (! $methods['stripe'] && ! $methods['paypal'] && ! $methods['paynet'] && ! $methods['bank'])
|
||||
<div style="text-align:center;color:#9ca3af;padding:32px 16px;font-size:13px;">
|
||||
Nicio metodă de plată configurată. Contactează operatorul.
|
||||
{{ __('Nicio metodă de plată configurată. Contactează operatorul.') }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
@if (! empty($legal['name']))
|
||||
<div style="margin-top:32px;padding:16px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;font-size:12px;color:#6b7280;">
|
||||
<b>Operator platformă:</b> {{ $legal['name'] }}
|
||||
<b>{{ __('Operator platformă:') }}</b> {{ $legal['name'] }}
|
||||
@if (! empty($legal['idno'])) · IDNO {{ $legal['idno'] }} @endif
|
||||
@if (! empty($legal['address'])) · {{ $legal['address'] }} @endif
|
||||
@if (! empty($legal['email'])) · {{ $legal['email'] }} @endif
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="box">
|
||||
<div style="font-size:48px;margin-bottom:12px;">🚧</div>
|
||||
<h1>{{ $gateway }} Checkout</h1>
|
||||
<p style="color:#6b7280;font-size:14px;">Factură: <b>{{ $sub->invoice_number ?? '#' . $sub->id }}</b> · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}</p>
|
||||
<p style="color:#6b7280;font-size:14px;">{{ __('Factură:') }} <b>{{ $sub->invoice_number ?? '#' . $sub->id }}</b> · {{ number_format($sub->amount, 2) }} {{ $sub->currency }}</p>
|
||||
|
||||
<div class="note">
|
||||
<b>Mod stub:</b><br>
|
||||
@@ -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ă.
|
||||
</div>
|
||||
|
||||
<a href="/billing" class="btn">← Înapoi</a>
|
||||
<a href="/billing" class="btn">{{ __('← Înapoi') }}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -82,20 +82,20 @@
|
||||
<section class="section">
|
||||
<div class="info">
|
||||
<div class="info-block">
|
||||
<h3>📍 Locație & contact</h3>
|
||||
@if ($city) <p><b>Oraș:</b> {{ $city }}</p> @endif
|
||||
<h3>{{ __('📍 Locație & contact') }}</h3>
|
||||
@if ($city) <p><b>{{ __('Oraș:') }}</b> {{ $city }}</p> @endif
|
||||
@if ($phone) <p><b>Telefon:</b> <a href="tel:{{ $phone }}" style="color:inherit;">{{ $phone }}</a></p> @endif
|
||||
@if ($email) <p><b>Email:</b> <a href="mailto:{{ $email }}" style="color:inherit;">{{ $email }}</a></p> @endif
|
||||
</div>
|
||||
<div class="info-block">
|
||||
<h3>🕒 Program de lucru</h3>
|
||||
<p>Luni – Vineri: 08:00 – 18:00</p>
|
||||
<p>Sâmbătă: 09:00 – 14:00</p>
|
||||
<p>Duminică: închis</p>
|
||||
<p>{{ __('Sâmbătă: 09:00 – 14:00') }}</p>
|
||||
<p>{{ __('Duminică: închis') }}</p>
|
||||
</div>
|
||||
@if (! empty($cars))
|
||||
<div class="info-block">
|
||||
<h3>🚗 Mărci suportate</h3>
|
||||
<h3>{{ __('🚗 Mărci suportate') }}</h3>
|
||||
<p>{{ implode(', ', array_slice($cars, 0, 12)) }}@if (count($cars) > 12), …@endif</p>
|
||||
</div>
|
||||
@endif
|
||||
@@ -103,7 +103,7 @@
|
||||
</section>
|
||||
|
||||
<section class="cta">
|
||||
<h2>Rezervă o programare</h2>
|
||||
<h2>{{ __('Rezervă o programare') }}</h2>
|
||||
@if ($phone)
|
||||
<a href="tel:{{ $phone }}">📞 {{ $phone }}</a>
|
||||
@endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ro">
|
||||
<head><meta charset="UTF-8"><title>Plată anulată</title>
|
||||
<head><meta charset="UTF-8"><title>{{ __('Plată anulată') }}</title>
|
||||
<style>
|
||||
body { font-family: system-ui, sans-serif; background: #fef2f2; padding: 60px 20px; text-align: center; color: #1f2937; }
|
||||
.box { max-width: 480px; margin: 0 auto; background:#fff; padding:40px 24px; border-radius:12px; }
|
||||
@@ -10,9 +10,9 @@
|
||||
<body>
|
||||
<div class="box">
|
||||
<div style="font-size:48px;">↩</div>
|
||||
<h1 style="color:#ef4444;">Plată anulată</h1>
|
||||
<p style="color:#6b7280;">Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.</p>
|
||||
<a href="/billing" class="btn">← Înapoi la facturi</a>
|
||||
<h1 style="color:#ef4444;">{{ __('Plată anulată') }}</h1>
|
||||
<p style="color:#6b7280;">{{ __('Nu a fost prelevată nicio sumă. Poți încerca din nou oricând.') }}</p>
|
||||
<a href="/billing" class="btn">{{ __('← Înapoi la facturi') }}</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html lang="ro">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Plată reușită</title>
|
||||
<title>{{ __('Plată reușită') }}</title>
|
||||
<style>
|
||||
body { font-family: system-ui, sans-serif; background: #f0fdf4; padding: 60px 20px; text-align: center; color: #1f2937; }
|
||||
.box { max-width: 480px; margin: 0 auto; background:#fff; padding:40px 24px; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,.05); }
|
||||
@@ -13,9 +13,9 @@
|
||||
<body>
|
||||
<div class="box">
|
||||
<div style="font-size:64px;">✓</div>
|
||||
<h1>Plată reușită!</h1>
|
||||
<h1>{{ __('Plată reușită!') }}</h1>
|
||||
<p style="color:#6b7280;">Factura {{ $sub->invoice_number ?? '#' . $sub->id }} a fost achitată.</p>
|
||||
<p style="color:#6b7280;font-size:13px;margin-top:8px;">Abonamentul tău a fost extins.</p>
|
||||
<p style="color:#6b7280;font-size:13px;margin-top:8px;">{{ __('Abonamentul tău a fost extins.') }}</p>
|
||||
<a href="/app" class="btn">→ Mergi la AutoCRM</a>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user