आर्किटेक्चर
/en/blog/hello ← डिफ़ॉल्ट लोकेल, फिर भी प्रिफ़िक्स्ड (स्पेशल केस से क्लीनर)
/ru/blog/hello
/zh/blog/hello
/ja/blog/hello
/de/blog/hello
तीन चलते हिस्से:
- डिक्शनरी — हर लोकेल के लिए एक JSON, समान शेप,
Record<Locale, typeof en>के रूप में टाइप्ड, ताकि कोई की खिसकने पर TypeScript चीखे। - डायनामिक रूट —
src/pages/[locale]/...जिसमेंgetStaticPaths()हर लोकेल लौटाता है। - कंटेंट फ़ॉलबैक — पोस्ट एक बार
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 से बने पाथ। सर्च इंजन इस बोरिंग प्लंबिंग को इनाम देते हैं।