अंतर्राष्ट्रीयकरण (i18n)
Apothem दस्तावेज़ साइट किस तरह अपना लोकेल समूह घोषित करती है, hreflang वैकल्पिक-भाषा लिंक उत्सर्जित करती है, और बारह भाषाओं में दाएँ-से-बाएँ रेंडरिंग करती है।
यह पृष्ठ बताता है कि Apothem दस्तावेज़ साइट एकाधिक भाषाओं को किस तरह संभालती
है: वह कौन-सा लोकेल समूह घोषित करती है, वह कौन-सा hreflang तंत्र उत्सर्जित
करती है, उसकी दाएँ-से-बाएँ रेंडरिंग, और प्रत्येक भाषा के पृष्ठ राउटिंग से कैसे
जोड़े जाते हैं।
निर्णय सारांश
- प्लेटफ़ॉर्म: Next.js App Router + Fumadocs। साइट
site/से बिल्ड होती है। लोकेल समूहsite/lib/i18n.tsमें घोषित है, और वैकल्पिक-भाषा लिंक तंत्रsite/lib/hreflang.tsमें रहता है। - लोकेल समूह: बारह भाषाएँ। बारह लोकेल वाला Modern Dev Cohort विहित
सत्य-स्रोत है, जिसमें अंग्रेज़ी स्रोत लोकेल है और ग्यारह लक्ष्यों में से
प्रत्येक अंग्रेज़ी पृष्ठ-सेट से मशीन-बीजित है; प्रति-लोकेल मानवीय समीक्षा
प्रगति में है, और
fallbackLanguage: 'en'हर उस पृष्ठ को कवर करता है जिसे किसी लोकेल ने अभी तक रचा नहीं है। - प्रति-लोकेल राउटिंग: पूरे समूह में सक्षम। हर लोकेल राउटिंग से जुड़ा है और
अपने स्वयं के URL उपसर्ग (
/es/,/zh-cn/, …) पर पहुँच-योग्य है; अंग्रेज़ी साइट रूट पर परोसी जाती है। hreflangतंत्र: सक्रिय। हर पृष्ठ एक<link rel="alternate">सेट उत्सर्जित करता है जो प्रत्येक लोकेल को और साथ में एकx-defaultफ़ॉलबैक को कवर करता है, ताकि खोज इंजन पूरा वैकल्पिक-भाषा क्लस्टर देखें। लिंक फ़ाइल सिस्टम से प्रति-फ़ाइल हल किए जाते हैं, इसलिए कोई पृष्ठ किसी लोकेल में केवल तभी विज्ञापित किया जाता है जब उस लोकेल के पास वह पृष्ठ हो।- दाएँ-से-बाएँ रेंडरिंग: सक्रिय। साझा स्टाइलशीट हर जगह तार्किक CSS गुणों का
उपयोग करती हैं, इसलिए अरबी पृष्ठ
dir="rtl"के तहत सही रेंडर होते हैं। - अनुवाद समीक्षा: प्रति पृष्ठ ट्रैक की जाती है। मशीन-बीजित लोकेल पृष्ठ परोसे
जाते हैं और जब तक कोई मनुष्य उनकी समीक्षा नहीं करता, उनके फ़्रंटमैटर में
machineTranslated: trueरहता है; यह फ़्लैग समीक्षा-ट्रैकिंग मेटाडेटा है और पृष्ठ इसे प्रदर्शित नहीं करता। किसी लोकेल में न मौजूद हर पृष्ठ के लिए अंग्रेज़ी फ़ॉलबैक है। किसी लोकेल के 80% पृष्ठों की समीक्षा हो जाना एक समीक्षा लक्ष्य है, प्रकाशन पर कोई रोक नहीं। - अनुवाद की ताज़गी: प्रति पृष्ठ ट्रैक की जाती है। प्रत्येक लोकेल पृष्ठ यह दर्ज करता है कि उसका अनुवाद किस अंग्रेज़ी पाठ से किया गया था। जब बाद में अंग्रेज़ी पृष्ठ बदलता है, तो अनुवादित पृष्ठ एक-पंक्ति की टिप्पणी दिखाता है जो अंग्रेज़ी पृष्ठ से लिंक करती है, और अंग्रेज़ी पृष्ठ आधिकारिक बना रहता है।
लोकेल समूह
Modern Dev Cohort बारह लोकेल घोषित करता है। अंग्रेज़ी साइट रूट पर परोसी जाती
है; ग्यारह लक्ष्यों में से प्रत्येक अंग्रेज़ी पृष्ठ-सेट से मशीन-बीजित है और अपने
स्वयं के URL उपसर्ग पर है, और fallbackLanguage: 'en' हर उस पृष्ठ को कवर करता है
जो अभी तक रचा नहीं गया है।
| कोड | पथ | भाषा | दिशा |
|---|---|---|---|
en | / | अंग्रेज़ी | LTR |
zh-CN | /zh-cn/ | सरलीकृत चीनी | LTR |
es | /es/ | स्पेनिश | LTR |
pt-BR | /pt-br/ | ब्राज़ीली पुर्तगाली | LTR |
fr | /fr/ | फ़्रेंच | LTR |
de | /de/ | जर्मन | LTR |
ja | /ja/ | जापानी | LTR |
ko | /ko/ | कोरियाई | LTR |
ru | /ru/ | रूसी | LTR |
id | /id/ | इंडोनेशियाई | LTR |
ar | /ar/ | अरबी | RTL |
hi | /hi/ | हिन्दी | LTR |
यह समूह एकमात्र सत्य-स्रोत है; इसमें संशोधन एक सुविचारित निर्णय से होकर जाते हैं, कभी चुपचाप किए गए संपादन से नहीं।
hreflang कैसे काम करता है
site/lib/hreflang.ts वह alternates.languages मैप बनाता है जिसे Next.js
प्रत्येक पृष्ठ के <head> में रेंडर करता है। इसका निर्माण एक नियम का पालन करता
है: किसी लोकेल का वैकल्पिक-भाषा लिंक केवल तब उत्सर्जित होता है जब उस लोकेल
ने वह पृष्ठ रचा हो, जिसे फ़ाइल सिस्टम से प्रति-फ़ाइल हल किया जाता है
(site/lib/translated-pages.ts)। इसलिए एक पूर्णतः अनुवादित पृष्ठ पूरा क्लस्टर
उत्सर्जित करता है:
<link rel="alternate" hreflang="en" href="https://apothem.ahmedgad.com/..." />
<link rel="alternate" hreflang="es" href="https://apothem.ahmedgad.com/es/..." />
<link rel="alternate" hreflang="ar" href="https://apothem.ahmedgad.com/ar/..." dir="rtl" />
<!-- … one per cohort locale … -->
<link rel="alternate" hreflang="x-default" href="https://apothem.ahmedgad.com/..." />पृष्ठ का canonical लिंक हमेशा उसका अपना URL होता है — यह कभी भी एक लोकेल से
दूसरे लोकेल की ओर इंगित नहीं करता।
दाएँ-से-बाएँ रेंडरिंग
अरबी समूह का दाएँ-से-बाएँ लोकेल है, और साइट इसे सही ढंग से रेंडर करती है:
- केवल तार्किक CSS गुण। साझा स्टाइलशीट और घटक भौतिक गुणों (
margin-left,text-align: left) के बजाय तार्किक गुणों (margin-inline-start,padding-inline-end,text-align: start,inset-inline-start) का उपयोग करते हैं। तार्किक गुणdir="rtl"के तहत स्वतः पलट जाते हैं, इसलिए वही स्टाइलशीट दोनों दिशाओं को सही ढंग से परोसती है। - दिशा विशेषता। अरबी पृष्ठ
lang="ar"के साथ-साथ<html>तत्व परdir="rtl"सेट करते हैं। - द्विदिश सामग्री। मिश्रित-दिशा स्ट्रिंग — उदाहरण के लिए किसी अरबी अनुच्छेद
के भीतर एक अंग्रेज़ी कमांड —
<bdi>में लपेटी जाती हैं, ताकि अंतःस्थापित बाएँ-से-दाएँ अंश दाएँ-से-बाएँ प्रवाह के भीतर सही रेंडर हो।
कोई लोकेल जोड़ना या अपडेट करना
समूह और राउटिंग site/lib/i18n.ts द्वारा संचालित होते हैं:
- अंग्रेज़ी स्रोत को प्रतिबिंबित करते हुए पृष्ठ को
content/docs/<locale>/के अंतर्गत रचें। - वह अंग्रेज़ी पाठ दर्ज करें जिसका यह अनुवाद है:
site/सेnode scripts/translation-sources.mjs --stamp <locale>/<path>.mdxचलाएँ, जो अंग्रेज़ी पृष्ठ का हैश लोकेल पृष्ठ केsourceHashफ़्रंटमैटर में लिखता है। - पुष्टि करें कि लोकेल
ROUTED_LOCALESमें सूचीबद्ध है (आज समूह के सभी बारह लोकेल राउट किए जाते हैं)। - इसका
hreflangलिंक और इसके रूट फ़ाइल सिस्टम से स्वतः हल हो जाते हैं।
पुराने अनुवाद
किसी लोकेल पृष्ठ का sourceHash उस अंग्रेज़ी पृष्ठ का हैश है जिससे उसका अनुवाद
किया गया था; यह अंग्रेज़ी फ़्रंटमैटर और गद्य को कवर करता है, लेकिन उन उत्पन्न
तालिकाओं को नहीं जिन्हें संदर्भ जनरेटर एक साथ हर भाषा में फिर से लिखता है। बिल्ड
के समय साइट वर्तमान अंग्रेज़ी पृष्ठ का हैश निकालती है; जब दोनों भिन्न होते हैं, तो
अनुवादित पृष्ठ एक टिप्पणी दिखाता है कि अनुवाद किए जाने के बाद से अंग्रेज़ी पृष्ठ
बदल गया है, और साथ में उसका लिंक देता है। प्रति लोकेल पुराने पृष्ठों की सूची
देखने के लिए site/ से node scripts/translation-sources.mjs चलाएँ, फिर प्रत्येक
अनुवाद को ताज़ा करें और ऊपर चरण 2 की तरह उसे स्टैम्प करें। जिस पृष्ठ का किसी
लोकेल ने बिल्कुल भी अनुवाद नहीं किया है, वह अंग्रेज़ी स्रोत से परोसा जाता है और
अंग्रेज़ी पाठ के रूप में चिह्नित होता है।
अंग्रेज़ी सत्य-स्रोत बनी रहती है; प्रत्येक लोकेल पृष्ठ अपने अंग्रेज़ी समकक्ष की संरचना, लिंक और कोड नमूनों को शब्दशः प्रतिबिंबित करता है।