Arxitektura
/en/blog/hello ← standart lokal, baribir prefiksli (alohida holdan tozaroq)
/ru/blog/hello
/zh/blog/hello
/ja/blog/hello
/de/blog/hello
Uch harakatlanuvchi qism:
- Lug’atlar — har lokal uchun bitta JSON, bir xil shakl,
Record<Locale, typeof en>sifatida tiplangan, shunda kalit siljiganda TypeScript baqiradi. - Dinamik yo’llar —
src/pages/[locale]/...va har lokalni qaytaradigangetStaticPaths(). - Kontent qaytarilishi — postlarni bir marta
en/da yozing, tarjimalar yetguncha har lokal ostida render qiling.
Sizni qutqaradigan tip hiylasi
export type Locale = "en" | "ru" | "zh" | "ja" | "de";
const dictionaries: Record<Locale, typeof en> = { en, ru, zh, ja, de };
typeof en — bu sxema. en.jsonga kalit qo’shing va qolgan to’rt lug’at yetib borguncha build sinadi.
Headni unutmang
Har lokal uchun <link rel="alternate" hreflang="..."> va x-default, har sahifa uchun canonical hamda Astro.urldan olingan yo’llar. Qidiruv tizimlari zerikarli santexnikani mukofotlaydi.