Completa i18n IT/EN/FR/DE/ES su sito pubblico, area autenticata e admin.

Tutte le view marketing, legali, viewer, dashboard e admin usano t(); mailer utente-facing e flash localizzati; admin con LocaleResolver e selettore lingua.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-24 00:38:50 +02:00
co-authored by Cursor
parent fb7068f86c
commit b88f44ab1c
158 changed files with 9444 additions and 1536 deletions
+17 -17
View File
@@ -1,12 +1,12 @@
<h2>Pagamenti da fatturare</h2>
<h2><%= t("admin.billing.index.title") %></h2>
<p style="color:#666;margin-bottom:16px">
Pagamenti Stripe <strong>pagati</strong> senza PDF fattura. Genera il PDF nei tuoi sistemi, poi caricalo qui: viene associato al pagamento e inviato via email al cliente.
<%= t("admin.billing.index.description") %>
</p>
<% if @clubs.many? %>
<p style="margin-bottom:16px">
Filtra società:
<%= link_to "Tutte", admin_billing_path, class: (@filter_club ? nil : "admin-nav-active") %>
<%= t("admin.billing.index.filter_label") %>
<%= link_to t("admin.billing.index.filter_all"), admin_billing_path, class: (@filter_club ? nil : "admin-nav-active") %>
<% @clubs.each do |club| %>
· <%= link_to club.name, admin_billing_path(club_id: club.id), class: (@filter_club&.id == club.id ? "admin-nav-active" : nil) %>
<% end %>
@@ -33,7 +33,7 @@
· <strong><%= payment.formatted_amount %></strong>
</div>
<% unless club.billing_profile_complete? %>
<span class="billing-pending-card__warn">Dati fatturazione incompleti</span>
<span class="billing-pending-card__warn"><%= t("admin.billing.index.incomplete_profile_warning") %></span>
<% end %>
</header>
@@ -46,16 +46,16 @@
<% end %>
</dl>
<% else %>
<p class="billing-pending-card__warn">Nessun dato di fatturazione — il cliente deve completare il profilo.</p>
<p class="billing-pending-card__warn"><%= t("admin.billing.index.no_billing_data") %></p>
<% end %>
<%= form_with url: admin_billing_payment_attach_pdf_path(payment),
method: :post, multipart: true, local: true, class: "billing-upload-form" do %>
<label class="billing-upload-form__label">
PDF fattura
<%= t("admin.billing.index.pdf_label") %>
<%= file_field_tag :pdf, accept: "application/pdf", required: true %>
</label>
<%= submit_tag "Carica PDF e invia al cliente", class: "admin-btn admin-btn--primary" %>
<%= submit_tag t("admin.billing.index.upload_button"), class: "admin-btn admin-btn--primary" %>
<% end %>
</div>
</article>
@@ -63,21 +63,21 @@
</div>
<% else %>
<p class="admin-flash" style="background:#1b3d1b;border-color:#2e7d32">
Nessun pagamento in attesa di fattura<%= @filter_club ? " per #{@filter_club.name}" : "" %>.
<%= t("admin.billing.index.none_pending", club: (@filter_club ? t("admin.billing.index.none_pending_for_club", club: @filter_club.name) : "")) %>
</p>
<% end %>
<% if @completed_payments.any? %>
<h2 style="margin-top:40px;font-size:1.15rem">Fatture già caricate</h2>
<h2 style="margin-top:40px;font-size:1.15rem"><%= t("admin.billing.index.uploaded_title") %></h2>
<table class="admin-table">
<thead>
<tr>
<th>Data</th>
<th>Società</th>
<th>Descrizione</th>
<th>Importo</th>
<th>Fattura</th>
<th>Stato</th>
<th><%= t("admin.billing.index.table.date") %></th>
<th><%= t("admin.billing.index.table.club") %></th>
<th><%= t("admin.billing.index.table.description") %></th>
<th><%= t("admin.billing.index.table.amount") %></th>
<th><%= t("admin.billing.index.table.invoice") %></th>
<th><%= t("admin.billing.index.table.status") %></th>
</tr>
</thead>
<tbody>
@@ -96,4 +96,4 @@
</table>
<% end %>
<p style="margin-top:24px"><%= link_to "← Dashboard", admin_root_path %></p>
<p style="margin-top:24px"><%= link_to t("admin.billing.index.back_dashboard"), admin_root_path %></p>