You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add translations for French, German, Portuguese, Italian, Basque and Greek. (#77)
* fix(i18n): align English copy with Catalan source and sync JSX defaults
- Realign locales/en/common.json against locales/ca/common.json (source of truth).
Notable changes: about_us brand statement and tabs values, FAQ free/setup/gdpr
answers, hero subtitle/trusted_by, target_users description/list, comparison
and footer sentence-case, Òmnium diacritic, swapped New Belarus value/label,
"impugnments" -> "disputes", "catalan" -> "Catalan".
- Unify the primary CTA to "Start for free" across hero, app_landing,
use_cases_page, and FAQ.
- Sync stale JSX t() defaults with the updated JSON across components/,
lib/page-meta.ts, and pages/*/+title.ts so fallbacks no longer drift.
* fix(i18n): polish Spanish locale and align with EN source
- Replace wrong items.8 testimonial in es (was a fictitious "Federación
Deportiva"; now the proper BLOOCK quote matching en/ca).
- Fix mistranslations: "Confianza Probable" -> "Confianza Demostrable",
"entidad civil" -> "entidad cívica", "Cumple con GDPR" / "GDPR compliant"
-> "Cumple con el RGPD".
- Sync about_us mission/values, faq answers, and target_users copy with
the polished EN source.
- Unify primary CTA to imperative "Empieza gratis" and secondary to
"Habla con un experto" across hero, app_landing, use_cases_page, FAQ.
- Sentence-case and proper-noun fixes (Òmnium Cultural, Bisbalenc/a de
l'Any, "Directora ejecutiva", "¡Seguiremos"); replace double-spaced
em-dash leftovers with " - "; "Compañía" -> "Empresa".
* feat(i18n): write fresh German translation aligned with source
- Replace stale, key-mismatched de/common.json with a full translation
mirroring en's current key structure (0 missing, 0 extra keys).
- Use formal "Sie" address (German B2B convention), DSGVO instead of
GDPR, German number formatting (200.000, 77,12 %, 50 €), and
naturalized idioms ("gleiche Ausgangsbedingungen", "manipulationssicher",
"Allgemeine Geschäftsbedingungen").
* feat(i18n): write fresh Greek translation aligned with EN source
- Replace stale, key-mismatched el/common.json with a full translation
mirroring en's current key structure (0 missing, 0 extra keys).
- Use formal "εσείς" address (B2B convention), Greek acronyms
(ΓΚΠΔ, ΟΟΣΑ, ΕΕ), Greek number formatting (200.000, 77,12%, 50 €),
and naturalized terms ("ανοιχτός κώδικας", "απαραβίαστος",
"Όροι και προϋποθέσεις").
* feat(i18n): write fresh Italian translation aligned with EN source
- Replace stale, key-mismatched it/common.json with a full translation
mirroring en's current key structure (0 missing, 0 extra keys).
- Use informal "tu" address (modern Italian SaaS convention), keep
GDPR as the standard term, render numbers Italian-style (200.000,
77,12%, 50 €), and naturalize phrasing ("inalterabile", "ente
civico", "Ordine Professionale degli Infermieri").
* feat(i18n): write fresh Portuguese translation aligned with EN source
- Replace stale, key-mismatched pt/common.json with a full translation
mirroring en's current key structure (0 missing, 0 extra keys).
- Use European Portuguese (pt-PT) given the European brand context:
"registo", "câmara municipal", "folha de cálculo", "contacto",
"separador", and pt-PT progressive forms ("a enviar").
- Use formal address (3rd-person imperatives, "a sua"), Portuguese
acronyms (RGPD, OCDE, UE), Portuguese number formatting (200.000,
77,12%, 50 €), and naturalized terms ("código aberto", "inviolável",
"Presidente da Câmara").
* feat(i18n): add support for French and Basque (Euskera)
- Register 'fr' and 'eu' in locales/index.ts (Locale type, locales
array, availableLocales) - both commented out in the active list
pending review.
- Add locales/fr/common.json: full professional French translation
with formal "vous" address, French typography (« » guillemets,
narrow spaces, RGPD, OCDE, "200 000", "77,12 %"), and naturalized
idioms ("égaliser les chances", "Conditions générales").
- Add locales/eu/common.json: full Basque (Euskera) translation with
formal "zu" address, Basque acronyms (RGPD, ELGA), and pre-number
percent style (%30). Native Basque review recommended before
activation.
* feat(i18n): activate de, el, fr, it, pt locales
- Add German, Greek, French, Italian, and Portuguese to the active
locales array and uncomment them in availableLocales.
'Cutting-edge blockchain technology powering the future of democratic participation with transparent, secure, and accessible voting infrastructure.'
9
+
'Run secure, legally valid elections for your organization with the most verifiable voting technology. Start free, set up in minutes, no credit card needed.'
Copy file name to clipboardExpand all lines: locales/ca/common.json
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -114,7 +114,7 @@
114
114
},
115
115
{
116
116
"question": "Quant es tarda a configurar una votació?",
117
-
"answer": "Una sola persona pot crear i publicar una votació en menys d'una hora."
117
+
"answer": "Una sola persona pot crear i publicar una votació en menys de 30 minuts."
118
118
},
119
119
{
120
120
"question": "Els votants han d'instal·lar una app o crear un compte?",
@@ -442,7 +442,7 @@
442
442
"question": "Vocdoni és gratis?"
443
443
},
444
444
"gdpr": {
445
-
"answer": "Sí. Totes les dades s'allotgen en infraestructura de la UE. Els vots individuals s'encripten i no s'exposen mai, ni a l'organitzador ni a Vocdoni. Complim el RGPD i disposem de certificació ISO 27001.",
445
+
"answer": "Sí. Totes les dades s'allotgen en infraestructura de la UE. Els vots individuals s'encripten i no s'exposen mai, ni a l'organitzador ni a Vocdoni. Complim el RGPD.",
446
446
"question": "Compleix el RGPD?"
447
447
},
448
448
"hybrid": {
@@ -458,7 +458,7 @@
458
458
"question": "Vocdoni és codi obert?"
459
459
},
460
460
"setup": {
461
-
"answer": "Una sola persona pot configurar una elecció completa - llista de votants, papereta, calendari i ajustos de seguretat - en menys d'una hora. No cal equip tècnic, ni projecte d'implantació, ni especialistes externs. Els vostres membres reben un enllaç, hi fan clic, voten i ja està.",
461
+
"answer": "Una sola persona pot configurar una elecció completa - llista de votants, papereta, calendari i ajustos de seguretat - en menys de 30 minuts. No cal equip tècnic, ni projecte d'implantació, ni especialistes externs. Els vostres membres reben un enllaç, hi fan clic, voten i ja està.",
462
462
"question": "Quant de temps es tarda a configurar una elecció?"
0 commit comments