Static site built with Vite. Content is authored in Markdown and rendered as static HTML during build, with client-side enhancements for search/interactions.
npm installnpm run dev(Vite dev server)
npm run buildproducesdist/vite.config.jscopiescontent/blog/and the required parts ofcontent/specification/intodist/content/dist/assets/*filenames are hashed by Vite for caching; edit source insrc/
- Translation files live in
locales/*.txt - File format is
key = value(lines starting with#are comments) - Reference file (source of truth for keys):
locales/en.txt
- Copy
locales/en.txtto a new file namedlocales/<locale>.txt(example:locales/fr.txt). - Translate only the values (right side of
=), and keep all keys identical tolocales/en.txt. - Register the locale in
vite.config.jsinsidei18nPlugin({ locales: [...] }). - Register the locale in
src/main.js:- Add it to
I18N_SUPPORTED_LOCALES - If the language is RTL, add it to
I18N_RTL_LOCALES - Add an alias in
I18N_LOCALE_ALIASESonly if needed
- Add it to
- Add the locale to the language switcher dropdown in
src/partials/nav.html. - Run
npm run buildand confirmdist/<locale>/index.htmlis generated. - Run
npm run devand verify/<locale>/loads translated content.
- Source:
content/blog/*.md - Rendered by:
vite.config.jsstatic generation (fallback runtime logic lives insrc/blog.js) - Routing:
/blog/→ list (blog.html)/blog/<slug>/→ post (blog-post.html)
- Source:
content/specification/(git submodule) - Rendered by:
vite.config.jsstatic generation (fallback runtime logic lives insrc/specification.js)