📖 README: English | 简体中文 | 繁體中文 | 日本語 | Français | Русский | Español
🌐 Live demo: hcr.cialo.site
HTTP Cats · refined is a multilingual HTTP status code reference site built with Next.js. It covers 120+ status codes — including standard RFC codes, Nginx 4xx extensions, Cloudflare 5xx, and the full Cloudflare 1xxx error series — each illustrated with a cat picture, organized by category, and translated into seven languages. A refined fork of httpcats/http.cat.
- 🌏 Multilingual — Full UI and per-status-code descriptions in 7 languages, with automatic fallback to English when a translation is missing
- 📊 120+ status codes — Standard codes missing from the original (505, etc.), Nginx extensions (444, 494–499), Cloudflare 5xx (520–527, 530), and all Cloudflare 1xxx errors (1000–1201)
- 🗂️ Category tabs — Codes grouped by class (1xx / 2xx / 3xx / 4xx / 5xx / Cloudflare 1xxx) with descriptions
- 🖼️ Image fallback — Codes without dedicated images use a graceful placeholder
- ✨ Cleaner UI — Ads removed, social cruft trimmed, frosted-glass language switcher
| Locale | Language | Path |
|---|---|---|
en |
English | / |
zh-CN |
简体中文 | /zh-CN |
zh-TW |
繁體中文 | /zh-TW |
ja |
日本語 | /ja |
fr |
Français | /fr |
ru |
Русский | /ru |
es |
Español | /es |
PRs welcome for additional languages. See Adding a new language.
- Node.js 18+
- npm
npm install
npm run devThe app will be available at http://localhost:3000.
npm run buildStatic files are exported to /out.
| Path | Language |
|---|---|
/ |
English |
/zh-CN |
简体中文 |
/zh-TW |
繁體中文 |
/ja |
日本語 |
/fr |
Français |
/ru |
Русский |
/es |
Español |
/status/<code> |
Status detail (English) |
/<locale>/status/<code> |
Status detail (localized) |
| Framework | Next.js 16 (App Router, static export) |
| UI | React 19 + Tailwind CSS |
| Language | TypeScript |
| Content | Markdown (remark + rehype) |
- Add an entry to
lib/statuses.js:
505: {
code: 505,
message: 'HTTP Version Not Supported',
messageI18n: {
'zh-CN': '不支持的 HTTP 版本',
'zh-TW': '不支援的 HTTP 版本',
ja: 'サポートされていない HTTP バージョン',
fr: 'Version HTTP non prise en charge',
ru: 'Версия HTTP не поддерживается',
es: 'Versión HTTP no soportada',
},
hasImage: false,
},- Add an English description at
content/en/<code>.md - Add localized descriptions at
content/<locale>/<code>.mdfor each supported language (missing locales fall back to English) - If you have a cat image, place it in
public/images/andpublic/images-original/, then sethasImage: true
Use <locale> for a BCP 47 code (e.g. de, ko, pt-BR).
- Content — create
content/<locale>/<code>.mdfor every status code (translate fromcontent/en/) - UI strings — copy
locales/en/common.jsontolocales/<locale>/common.json, changeLOCALEto the new code, translate the values - Status code names (optional) — add a
<locale>key to each entry'smessageI18ninlib/statuses.js. Status detail headings will show this as a subtitle. Skip this step and only the English name will render - Routes — create
app/<locale>/page.tsxandapp/<locale>/status/[status]/page.tsx(copy from an existing locale and replace thegetTranslationsargument, link paths, OG locale, and description template) - Switcher — add a row to
LANGUAGESincomponents/LanguageSwitcher/LanguageSwitcher.tsx - SEO — in
app/layout.tsx:- add the locale to
metadata.alternates.languages - add the locale to the inline
<html lang>IIFE map
- add the locale to
- Site-wide locale config — in
lib/locale.ts:- add the locale to
SUPPORTED_LOCALES - add the locale to
HREFLANG_MAP(this powersbuildHrefLangMap()used by every detail page; no per-page wiring needed)
- add the locale to
- README — write
docs/README.<locale>.mdand add the locale to the navigation row + Languages table in every existing README - GitHub repo — append the language to the About description and add a topic for the language
- Sitemap — regenerate
public/sitemap.xml
Thanks to @girliemac for creating the amazing HTTP status cats images.
Thanks to @pfdborges for creating the http.cat logo (RIP 🕯️).
Original project by @rogeriopvl.
MIT
