Tłumaczenie maszynowe. Przeczytaj angielski oryginał: A static blog that translates its own URLs into eight languages →
To pierwszy wpis, więc wypada wyjaśnić, na czym działa maszyna, która go opublikowała. Cała strona to statyczne pliki — nie ma serwera, bazy danych ani niczego, co trzeba utrzymywać.
Pisanie wpisu
Wrzuć plik Markdown do src/content/blog/en/. Nazwa pliku staje się URL-em, więc how-i-removed-greptile.md publikuje się pod /blog/how-i-removed-greptile. Frontmatter jest krótki:
---
title: How I removed Greptile
description: One sentence for search results and social cards.
pubDate: 2026-08-07
tags: [tooling, code-review]
---
Ustaw draft: true, dopóki pracujesz. Wersje robocze renderują się w npm run dev, ale nie wchodzą do finalnego buildu.
Tłumaczenie
Gdy wpis trafia na main, GitHub Action wysyła go do DeepSeek V4 Flash i zapisuje osiem tłumaczeń z powrotem do repozytorium jako zwykłe pliki Markdown. Slug też jest tłumaczony, więc turecka wersja tego wpisu znajduje się pod tureckim URL-em, a nie pod angielskim z doklejonym prefiksem /tr.
Każdy przetłumaczony plik przechowuje hash angielskiego źródła, z którego powstał. Przy następnym uruchomieniu pomijane są wpisy, których hash wciąż pasuje — edycja jednego wpisu powoduje ponowne tłumaczenie tylko tego jednego, a nie całego archiwum.
| Warstwa | Wybór |
|---|---|
| Framework | Astro, statyczne wyjście |
| Hosting | Statyczne zasoby Cloudflare Workers |
| Tłumaczenie | DeepSeek V4 Flash na Fireworks |
| Treść | Markdown w gicie |
Wdrożenie
Scalenie do main uruchamia proces tłumaczenia, zatwierdza zmiany, buduje i wdraża. Build trwa kilka sekund, a wynikiem jest folder z HTML-em.
Najfajniejszą cechą statycznej strony jest to, że scenariusze awarii są nudne. Nic nie może się wyłożyć o 3 nad ranem, bo nic nie działa.
Naciśnij T, aby przełączyć między jasnym a ciemnym motywem, a B, A, G lub L, aby skakać po stronie.