Tradução automática. Ler o original em inglês: A static blog that translates its own URLs into eight languages →
Este é o primeiro post, então nada melhor do que explicar a máquina que o publicou. O site inteiro é feito de arquivos estáticos. Sem servidor, sem banco de dados, nada para manter rodando.
Escrevendo um post
Basta colocar um arquivo markdown em src/content/blog/en/. O nome do arquivo vira a URL, então how-i-removed-greptile.md é publicado em /blog/how-i-removed-greptile. O frontmatter é curto:
---
title: How I removed Greptile
description: One sentence for search results and social cards.
pubDate: 2026-08-07
tags: [tooling, code-review]
---
Defina draft: true enquanto ainda estiver trabalhando nele. Rascunhos são renderizados no npm run dev, mas ficam de fora do build.
Tradução
Quando um post chega na main, uma GitHub Action o envia para o DeepSeek V4 Flash e escreve oito traduções de volta no repositório como arquivos markdown comuns. O slug também é traduzido, então a versão turca deste post vive em uma URL turca, em vez de uma inglesa com um prefixo /tr grudado.
Cada arquivo traduzido registra um hash da fonte em inglês de onde veio. Na próxima execução, posts cujo hash ainda corresponde são pulados, então editar um post retraduz um post, não o arquivo inteiro.
| Camada | Escolha |
|---|---|
| Framework | Astro, saída estática |
| Hospedagem | Cloudflare Workers static assets |
| Tradução | DeepSeek V4 Flash no Fireworks |
| Conteúdo | Markdown no git |
Deploy
Fazer merge na main roda o passo de tradução, commita o que mudou, faz o build e faz o deploy. O build leva alguns segundos e a saída é uma pasta de HTML.
A melhor propriedade de um site estático é que os modos de falha são entediantes. Nada pode cair às 3 da manhã, porque não há nada rodando.
Pressione T para alternar entre claro e escuro, e B, A, G ou L para navegar pelo site.