From 4967bb319c8f8ed60f7de8e71df8f6fc7770a6dc Mon Sep 17 00:00:00 2001 From: Vlad Sazonau <16666234+VladSez@users.noreply.github.com> Date: Sat, 18 Apr 2026 02:17:29 +0200 Subject: [PATCH] fix: update Terms of Service text for clarity and consistency (#214) * fix: update Terms of Service text for clarity and consistency - Modified the Terms of Service text in the invoice form tests to include apply for better accuracy. - Updated footer descriptions across multiple language files to clarify terms of use and include a link to the Terms of Service. - Enhanced the About page and Changelog layout to ensure consistent presentation of Terms of Service information. * i18n fixes --- e2e/invoice-form.test.ts | 4 ++-- messages/de.json | 2 +- messages/en.json | 3 +-- messages/es.json | 2 +- messages/fr.json | 2 +- messages/it.json | 2 +- messages/nl.json | 2 +- messages/pl.json | 2 +- messages/pt.json | 2 +- messages/ru.json | 2 +- messages/uk.json | 2 +- src/app/(app)/components/index.tsx | 4 ++-- src/app/(app)/page.client.tsx | 7 +++---- src/app/[locale]/about/page.tsx | 12 +++++++++++- src/app/changelog/layout.tsx | 20 ++++++++++++++++++-- 15 files changed, 46 insertions(+), 22 deletions(-) diff --git a/e2e/invoice-form.test.ts b/e2e/invoice-form.test.ts index 5444eec..7bc3baf 100644 --- a/e2e/invoice-form.test.ts +++ b/e2e/invoice-form.test.ts @@ -181,7 +181,7 @@ test.describe("Invoice Generator Page", () => { const termsOfServiceLink = page.getByTestId("mobile-terms-of-service-link"); // Check that Terms of Service are displayed await expect(termsOfServiceLink).toBeVisible(); - await expect(termsOfServiceLink).toHaveText("Terms of Service"); + await expect(termsOfServiceLink).toHaveText("Terms of Service apply"); await expect(termsOfServiceLink).toHaveAttribute("href", "/tos"); // Test desktop view @@ -196,7 +196,7 @@ test.describe("Invoice Generator Page", () => { ); // Check that Terms of Service are displayed await expect(termsOfServiceLink2).toBeVisible(); - await expect(termsOfServiceLink2).toHaveText("Terms of Service"); + await expect(termsOfServiceLink2).toHaveText("Terms of Service apply"); await expect(termsOfServiceLink2).toHaveAttribute("href", "/tos"); }); diff --git a/messages/de.json b/messages/de.json index 300f4f0..aee21cf 100644 --- a/messages/de.json +++ b/messages/de.json @@ -55,7 +55,7 @@ "noSignup": "Keine Anmeldung erforderlich. 100% kostenlos und Open-Source." }, "footer": { - "description": "Ein kostenloses Open-Source-Tool zur Erstellung professioneller PDF-Rechnungen mit Live-Vorschau. Keine Buchhaltungssoftware. Keine Compliance-Garantien. Es gelten die Nutzungsbedingungen. Bitte lesen Sie unsere Nutzungsbedingungen fur weitere Details.", + "description": "Ein kostenloses Open-Source-Tool zur Erstellung professioneller PDF-Rechnungen mit Live-Vorschau.



Keine Buchhaltungssoftware. Keine Compliance-Garantien. Durch die Nutzung dieses Tools stimmen Sie den Nutzungsbedingungen zu.", "product": "Produkt", "links": { "features": "Funktionen", diff --git a/messages/en.json b/messages/en.json index e56ca76..2b86a11 100644 --- a/messages/en.json +++ b/messages/en.json @@ -3,7 +3,6 @@ "tagline": "Free Invoice Generator with Live PDF Preview", "hero": { "title": "Create professional invoices in seconds", - "description": "EasyInvoicePDF is a free, open-source invoice generator with real-time preview. Create, customize, and download professional invoices. No sign-up required." }, "features": { @@ -48,7 +47,7 @@ "noSignup": "No sign-up required. 100% free and open-source." }, "footer": { - "description": "Create professional invoices in seconds with our free & open-source invoice maker. 100% in-browser, no sign-up required. Includes live PDF preview and a Stripe-style template - perfect for freelancers, startups, and small businesses. Not accounting software. No compliance guarantees. Terms apply. Please review our Terms of Service for more details.", + "description": "Create professional invoices in seconds with our free & open-source invoice maker. 100% in-browser, no sign-up required. Includes live PDF preview and a Stripe-style template - perfect for freelancers, startups, and small businesses.



Not accounting software. No compliance guarantees. By using this tool, you agree to the Terms of Service.", "product": "Product", "links": { "features": "Features", diff --git a/messages/es.json b/messages/es.json index 0ecccd9..49f4064 100644 --- a/messages/es.json +++ b/messages/es.json @@ -55,7 +55,7 @@ "noSignup": "No requiere registro. 100% gratuito y de código abierto." }, "footer": { - "description": "Una herramienta gratuita de codigo abierto para crear facturas PDF profesionales con vista previa en tiempo real. No es software de contabilidad. Sin garantias de cumplimiento. Se aplican los terminos. Por favor, revise nuestros Terminos de Servicio para mas detalles.", + "description": "Una herramienta gratuita de código abierto para crear facturas PDF profesionales con vista previa en tiempo real.



No es software de contabilidad. Sin garantías de cumplimiento. Al usar esta herramienta, aceptas los Términos del servicio.", "product": "Producto", "links": { "features": "Características", diff --git a/messages/fr.json b/messages/fr.json index 950d91f..da216af 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -47,7 +47,7 @@ "noSignup": "Aucune inscription requise. 100% gratuit et open-source." }, "footer": { - "description": "Un outil gratuit et open-source pour créer des factures PDF professionnelles avec aperçu en temps réel. Pas un logiciel de comptabilite. Aucune garantie de conformite. Les conditions s'appliquent. Veuillez consulter nos Conditions d'utilisation pour plus de details.", + "description": "Un outil gratuit et open-source pour créer des factures PDF professionnelles avec aperçu en temps réel.



Pas un logiciel de comptabilité. Aucune garantie de conformité. En utilisant cet outil, vous acceptez les Conditions d'utilisation.", "product": "Produit", "links": { "features": "Fonctionnalités", diff --git a/messages/it.json b/messages/it.json index abe16fb..74cba17 100644 --- a/messages/it.json +++ b/messages/it.json @@ -47,7 +47,7 @@ "noSignup": "Nessuna registrazione richiesta. 100% gratuito e open-source." }, "footer": { - "description": "Uno strumento gratuito e open-source per creare fatture PDF professionali con anteprima in tempo reale. Non e un software di contabilita. Nessuna garanzia di conformita. Si applicano i termini. Si prega di consultare i nostri Termini di Servizio per ulteriori dettagli.", + "description": "Uno strumento gratuito e open-source per creare fatture PDF professionali con anteprima in tempo reale.



Non è un software di contabilità. Nessuna garanzia di conformità. Utilizzando questo strumento, accetti i Termini di servizio.", "product": "Prodotto", "links": { "features": "Funzionalità", diff --git a/messages/nl.json b/messages/nl.json index ef725a3..2d9d1a3 100644 --- a/messages/nl.json +++ b/messages/nl.json @@ -47,7 +47,7 @@ "noSignup": "Geen registratie vereist. 100% gratis en open-source." }, "footer": { - "description": "Een gratis, open-source tool voor het maken van professionele PDF-facturen met realtime voorbeeld. Geen boekhoudsoftware. Geen nalevingsgaranties. Voorwaarden zijn van toepassing. Lees onze Servicevoorwaarden voor meer informatie.", + "description": "Een gratis, open-source tool voor het maken van professionele PDF-facturen met realtime voorbeeld.



Geen boekhoudsoftware. Geen nalevingsgaranties. Door deze tool te gebruiken, gaat u akkoord met de Servicevoorwaarden.", "product": "Product", "links": { "features": "Functies", diff --git a/messages/pl.json b/messages/pl.json index bf350de..4037a40 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -55,7 +55,7 @@ "noSignup": "Bez rejestracji. W 100% darmowe i open-source." }, "footer": { - "description": "Darmowe narzedzie open-source do tworzenia profesjonalnych faktur PDF z podgladem w czasie rzeczywistym. Nie jest oprogramowaniem ksiegowym. Brak gwarancji zgodnosci. Obowiazuja warunki. Prosimy zapoznac sie z naszymi Warunkami korzystania z uslugi, aby uzyskac wiecej informacji.", + "description": "Darmowe narzędzie open-source do tworzenia profesjonalnych faktur PDF z podglądem w czasie rzeczywistym.



Nie jest oprogramowaniem księgowym. Brak gwarancji zgodności. Korzystając z tego narzędzia, akceptujesz Regulamin.", "product": "Produkt", "links": { "features": "Funkcje", diff --git a/messages/pt.json b/messages/pt.json index b1ca650..fcc9a6a 100644 --- a/messages/pt.json +++ b/messages/pt.json @@ -55,7 +55,7 @@ "noSignup": "Não requer cadastro. 100% gratuito e de código aberto." }, "footer": { - "description": "Uma ferramenta gratuita de codigo aberto para criar faturas PDF profissionais com pre-visualizacao em tempo real. Nao e um software de contabilidade. Sem garantias de conformidade. Os termos se aplicam. Por favor, revise nossos Termos de Servico para mais detalhes.", + "description": "Uma ferramenta gratuita de código aberto para criar faturas PDF profissionais com pré-visualização em tempo real.



Não é um software de contabilidade. Sem garantias de conformidade. Ao usar esta ferramenta, você concorda com os Termos de serviço.", "product": "Produto", "links": { "features": "Recursos", diff --git a/messages/ru.json b/messages/ru.json index 0ab1923..75a8ff4 100644 --- a/messages/ru.json +++ b/messages/ru.json @@ -55,7 +55,7 @@ "noSignup": "Без регистрации. 100% бесплатно и с открытым исходным кодом." }, "footer": { - "description": "Бесплатный инструмент с открытым исходным кодом для создания профессиональных PDF-инвойсов с предпросмотром в реальном времени. Не является бухгалтерским программным обеспечением. Никаких гарантий соответствия. Применяются условия. Пожалуйста, ознакомьтесь с нашими Условиями использования для получения дополнительной информации.", + "description": "Бесплатный инструмент с открытым исходным кодом для создания профессиональных PDF-инвойсов с предпросмотром в реальном времени.



Не является бухгалтерским программным обеспечением. Никаких гарантий соответствия. Используя этот инструмент, вы соглашаетесь с Условиями использования.", "product": "Продукт", "links": { "features": "Возможности", diff --git a/messages/uk.json b/messages/uk.json index 1edb067..2fd7d10 100644 --- a/messages/uk.json +++ b/messages/uk.json @@ -55,7 +55,7 @@ "noSignup": "Без реєстрації. 100% безкоштовно та з відкритим кодом." }, "footer": { - "description": "Безкоштовний інструмент з відкритим кодом для створення професійних PDF-рахунків з попереднім переглядом у реальному часі. Не є бухгалтерським програмним забезпеченням. Жодних гарантій відповідності. Умови застосовуються. Будь ласка, ознайомтеся з нашими Умовами використання для отримання додаткової інформації.", + "description": "Створюйте професійні рахунки за секунди за допомогою нашого безкоштовного інструменту з відкритим кодом. 100% у браузері, без реєстрації. Включає попередній перегляд PDF та шаблон у стилі Stripe - ідеально для фрілансерів, стартапів і малого бізнесу.



Не є бухгалтерським програмним забезпеченням. Жодних гарантій відповідності. Використовуючи цей інструмент, ви погоджуєтесь з Умовами використання.", "product": "Продукт", "links": { "features": "Можливості", diff --git a/src/app/(app)/components/index.tsx b/src/app/(app)/components/index.tsx index abc7398..9123140 100644 --- a/src/app/(app)/components/index.tsx +++ b/src/app/(app)/components/index.tsx @@ -306,7 +306,7 @@ export function InvoiceClientPage({ className="underline hover:text-black" data-testid="mobile-terms-of-service-link" > - Terms of Service + Terms of Service apply @@ -371,7 +371,7 @@ export function InvoiceClientPage({ className="underline hover:text-black" data-testid="desktop-terms-of-service-link" > - Terms of Service + Terms of Service apply diff --git a/src/app/(app)/page.client.tsx b/src/app/(app)/page.client.tsx index 4694d80..75173e3 100644 --- a/src/app/(app)/page.client.tsx +++ b/src/app/(app)/page.client.tsx @@ -738,15 +738,14 @@ export function AppPageClient({ Includes live PDF preview and a Stripe-style template - perfect for freelancers, startups, and small businesses.

- Not accounting software. No compliance guarantees. Terms apply. - Please review our{" "} + Not accounting software. No compliance guarantees. By using this + tool, you agree to the{" "} Terms of Service - {" "} - for more details. + ), footerCreatedBy: "Made by", diff --git a/src/app/[locale]/about/page.tsx b/src/app/[locale]/about/page.tsx index cf5b9b7..1651c28 100644 --- a/src/app/[locale]/about/page.tsx +++ b/src/app/[locale]/about/page.tsx @@ -158,7 +158,17 @@ export default function AboutPage({ params }: { params: { locale: Locale } }) { } translations={{ - footerDescription: t("footer.description"), + footerDescription: t.rich("footer.description", { + br: () =>
, + tosLink: (chunks) => ( + + {chunks} + + ), + }), footerCreatedBy: t("footer.createdBy"), product: t("footer.product"), }} diff --git a/src/app/changelog/layout.tsx b/src/app/changelog/layout.tsx index 110bafa..17c5979 100644 --- a/src/app/changelog/layout.tsx +++ b/src/app/changelog/layout.tsx @@ -102,8 +102,24 @@ export default function ChangelogLayout({ children }: ChangelogLayoutProps) { {children}