db5a997e50
Architecture décidée et documentée dans ADR.md : SvelteKit natif en fichiers plats plutôt que Strapi (55 outils, données statiques, souveraineté et budget performance prioritaires — doctrine §1.2, §4.4). - frontend/ : SvelteKit 2 + Svelte 5 (runes), adapter-static, 58 pages prérendues, CSS natif en @layer (reset→tokens→base→layouts→components), tokens oklch(), container queries, typo fluide clamp(), 2 polices WOFF2 auto-hébergées (Atkinson Hyperlegible, Fraunces), zéro CDN tiers - i18n FR/gcf typé (clé manquante = erreur de build), bascule Kréyòl persistée en localStorage, micro-textes créoles (« Ou pa manké ayen ») - Composants : ToolCard, DifficultyBadge (forme+texte+couleur, jamais la couleur seule), CategoryNav (≤5 entrées, divulgation progressive), SearchBar (raccourci /), LanguageSwitcher, EndMarker - content/ : 55 fiches migrées depuis src/ (script frontend/scripts/ migrate-tools.mjs, idempotent), licences SPDX reprises de directory.json - docs/ : DESIGN_SYSTEM.md et CONTENT_GUIDE.md Budgets vérifiés : JS 41 Ko gzip, CSS 2,9 Ko gzip, svelte-check 0 erreur. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
64 lines
2.0 KiB
JSON
64 lines
2.0 KiB
JSON
{
|
|
"site": {
|
|
"name": "Exit Chat Control",
|
|
"tagline": "Reprends le contrôle de ton internet",
|
|
"description": "Annuaire d'outils libres pour la souveraineté numérique — messagerie chiffrée, VPN, auto-hébergement, OS libres."
|
|
},
|
|
"nav": {
|
|
"home": "Accueil",
|
|
"directory": "Annuaire",
|
|
"contribute": "Contribuer",
|
|
"skipToContent": "Aller au contenu"
|
|
},
|
|
"hero": {
|
|
"title": "Chwazi zouti ou",
|
|
"subtitle": "Reprends le contrôle de ton internet : des outils libres, expliqués simplement, du premier geste au serveur auto-hébergé.",
|
|
"cta": "Voir l'annuaire"
|
|
},
|
|
"directory": {
|
|
"title": "Annuaire des outils",
|
|
"intro": "Chaque outil est libre, vérifié, et classé par difficulté. Commence par le vert.",
|
|
"filterCategory": "Catégorie",
|
|
"filterDifficulty": "Difficulté",
|
|
"allCategories": "Toutes les catégories",
|
|
"allDifficulties": "Toutes",
|
|
"results": "outils",
|
|
"resultOne": "outil",
|
|
"empty": "Ayen pa maché èvè filtè-lasa — essaie d'élargir les filtres.",
|
|
"endOfList": "Ou pa manké ayen",
|
|
"endOfListSub": "Tu es au bout de la liste — rien ne se recharge dans ton dos.",
|
|
"prevPage": "Page précédente",
|
|
"nextPage": "Page suivante",
|
|
"page": "Page"
|
|
},
|
|
"tool": {
|
|
"what": "À quoi ça sert",
|
|
"why": "Pourquoi c'est important",
|
|
"who": "Pour qui, quand",
|
|
"install": "Installer et utiliser",
|
|
"officialSite": "Site officiel",
|
|
"sourceCode": "Code source",
|
|
"license": "Licence",
|
|
"category": "Catégorie",
|
|
"backToDirectory": "Retour à l'annuaire"
|
|
},
|
|
"difficulty": {
|
|
"beginner": "Débutant",
|
|
"intermediate": "Intermédiaire",
|
|
"advanced": "Avancé"
|
|
},
|
|
"search": {
|
|
"label": "Rechercher un outil",
|
|
"placeholder": "Rechercher… (touche /)",
|
|
"noResults": "Aucun outil trouvé"
|
|
},
|
|
"lang": {
|
|
"switchLabel": "Langue",
|
|
"switchTo": "Passer en"
|
|
},
|
|
"footer": {
|
|
"license": "Contenu et code libres (MIT). Zéro tracker, zéro CDN, zéro cookie.",
|
|
"contribute": "Proposer un outil ou une correction"
|
|
}
|
|
}
|