Intermediatei18n25 मिनट18 अप्रैल 2026

स्टैटिक साइटों के लिए i18n — 5 लोकेल

CMS के बिना स्लैश-रूट लोकलाइज़ेशन: डिक्शनरी, डायनामिक [locale] पाथ, hreflang और पाँच भाषाओं को सिंक रखना।

आर्किटेक्चर

/en/blog/hello    ← डिफ़ॉल्ट लोकेल, फिर भी प्रिफ़िक्स्ड (स्पेशल केस से क्लीनर)
/ru/blog/hello
/zh/blog/hello
/ja/blog/hello
/de/blog/hello

तीन चलते हिस्से:

  1. डिक्शनरी — हर लोकेल के लिए एक JSON, समान शेप, Record<Locale, typeof en> के रूप में टाइप्ड, ताकि कोई की खिसकने पर TypeScript चीखे।
  2. डायनामिक रूटsrc/pages/[locale]/... जिसमें getStaticPaths() हर लोकेल लौटाता है।
  3. कंटेंट फ़ॉलबैक — पोस्ट एक बार en/ में लिखो, जब तक अनुवाद न आएँ हर लोकेल में रेंडर करो।

टाइप की वो चाल जो बचाती है

export type Locale = "en" | "ru" | "zh" | "ja" | "de";
const dictionaries: Record<Locale, typeof en> = { en, ru, zh, ja, de };

typeof en ही स्कीमा है। en.json में कोई की डालो और बाकी चार डिक्शनरी के पूरा होने तक बिल्ड फेल रहता है।

head मत भूलो

हर लोकेल के लिए <link rel="alternate" hreflang="..."> प्लस x-default, हर पेज का canonical, और Astro.url से बने पाथ। सर्च इंजन इस बोरिंग प्लंबिंग को इनाम देते हैं।