Author:
    Creation:2024-03-07Last update:2026-09-27

    Intlayer के साथ अपनी Astro साइट का अनुवाद करें

    ide.intlayer.org
    intlayer-astro-template.vercel.app

    विषय-सूची

    विकल्पों पर इन्टलेयर क्यों?

    एस्ट्रो-आई18एन या आई18नेक्स्ट जैसे मुख्य समाधानों की तुलना में, इंटलेयर एक ऐसा समाधान है जो एकीकृत अनुकूलन के साथ आता है जैसे:

    इंटलेयर को बहुभाषी रूटिंग, साइटमैप, और स्केलिंग अंतर्राष्ट्रीयकरण (i18n) के लिए आवश्यक सभी सुविधाओं की पेशकश करके एस्ट्रो के साथ पूरी तरह से काम करने के लिए अनुकूलित किया गया है।

    अपने पृष्ठों में विशाल JSON फ़ाइलें लोड करने के बजाय, केवल आवश्यक सामग्री लोड करें। इंटलेयर आपके बंडल और पृष्ठ आकार को 50% तक कम करने में मदद करता है।

    आपके एप्लिकेशन की सामग्री का दायरा बड़े पैमाने के अनुप्रयोगों के लिए रखरखाव की सुविधा प्रदान करता है। आप अपने संपूर्ण सामग्री कोडबेस की समीक्षा करने के मानसिक बोझ के बिना किसी एक फीचर फ़ोल्डर की नकल कर सकते हैं या उसे हटा सकते हैं। इसके अतिरिक्त, आपकी सामग्री की सटीकता सुनिश्चित करने के लिए Intlayer पूरी तरह से टाइप किया गया है।

    सामग्री का सह-स्थानीकरण बड़े भाषा मॉडल (एलएलएम) द्वारा आवश्यक संदर्भ को कम करता है। इंटलेयर टूल के एक सूट के साथ भी आता है, जैसे CLI ताकि लापता अनुवादों का परीक्षण किया जा सके,LSP, MCP, और agent skills, AI एजेंटों के लिए डेवलपर अनुभव (DX) को और भी आसान बनाने के लिए।

    अपने एआई प्रदाता की कीमत पर अपनी पसंद के एलएलएम का उपयोग करके अपने सीआई/सीडी पाइपलाइन में अनुवाद करने के लिए स्वचालन का उपयोग करें। इंटलेयर सामग्री निष्कर्षण को स्वचालित करने के लिए एक कंपाइलर के साथ-साथ पृष्ठभूमि में अनुवाद में मदद करने के लिए एक वेब प्लेटफ़ॉर्म भी प्रदान करता है।

    बड़े पैमाने पर JSON फ़ाइलों को घटकों से जोड़ने से प्रदर्शन और प्रतिक्रियाशीलता संबंधी समस्याएं हो सकती हैं। इंटलेयर बिल्ड समय पर आपकी सामग्री लोडिंग को अनुकूलित करता है।

    सिर्फ एक i18n समाधान से अधिक, Intlayer एक स्व-होस्टेड विज़ुअल एडिटर और एक [पूर्ण] प्रदान करता है सीएमएस](/hi/doc/concept/cms) आपकी बहुभाषी सामग्री को वास्तविक समय में प्रबंधित करने में मदद करता है, जिससे अनुवादकों, कॉपीराइटरों और टीम के अन्य सदस्यों के साथ सहयोग सहज हो जाता है। सामग्री को स्थानीय और/या दूरस्थ रूप से संग्रहीत किया जा सकता है।

    Astro में Intlayer को कॉन्फ़िगर करने के लिए चरण-दर-चरण मार्गदर्शिका

    GitHub पर एप्लिकेशन टेम्पलेट देखें।

    1. निर्भरताएँ स्थापित करें

      अपने package manager का उपयोग करके आवश्यक packages को install करें:

      bash
      npx intlayer init --interactive
      

      अपने पसंदीदा पैकेज मैनेजर का उपयोग करके आवश्यक पैकेज स्थापित करें:

      यह command आपके environment को detect करेगा और आवश्यक packages को install करेगा। उदाहरण के लिए:
      bash
      npm install intlayer astro-intlayer
      
      • intlayer मुख्य पैकेज जो कॉन्फ़िगरेशन प्रबंधन, अनुवाद, सामग्री घोषणा, ट्रांसपाइलेशन और CLI कमांड के लिए i18n टूल प्रदान करता है।

      • astro-intlayer Intlayer को Vite बंडलर के साथ एकीकृत करने के लिए Astro एकीकरण प्लगइन, प्रत्येक अनुरोध के लोकेल को Astro.locals.intlayer में हल करने वाला एक मिडलवेयर, और useIntlayer / useDictionary / useLocale हुक्स शामिल हैं। वही आयात पथ आपके .astro फ्रंटमैट में सर्वर कार्यान्वयन और <script> ब्लॉक में क्लाइंट कार्यान्वयन (vanilla-intlayer द्वारा समर्थित) को हल करता है।

    2. अपना प्रोजेक्ट कॉन्फ़िगर करें

      आर्किटेक्चर

      इस आर्किटेक्चर में, astro.config.ts में पंजीकृत intlayer() इंटीग्रेशन आपकी डिक्शनरी बनाता है और एक मिडलवेयर जोड़ता है जो प्रत्येक अनुरोध के लोकेल को हल करता है और इसे Astro.locals.intlayer पर प्रदर्शित करता है। पेज src/pages/[...locale]/ रेस्ट सेगमेंट के तहत रहते हैं, इसलिए डिफ़ॉल्ट लोकेल बिना किसी प्रीफ़िक्स के सर्व किया जाता है और अन्य प्रत्येक लोकेल को अपना समर्पित URL मिलता है। .astro फ़ाइलें astro-intlayer के useIntlayer / useLocale हुक्स के साथ कंटेंट को पढ़ती हैं, और कंटेंट घोषणाएं src/ में आपके कंपोनेंट्स के साथ रखी जाती हैं।

      bash
      .
      ├── src
      │   ├── app.content.tsx               # App content declaration
      │   ├── components
      │   │   └── LocaleSwitcher.astro      # Locale switcher component
      │   └── pages
      │       ├── [...locale]
      │       │   └── index.astro           # Localized page (rest param also serves the default locale)
      │       ├── robots.txt.ts             # robots.txt endpoint
      │       └── sitemap.xml.ts            # Localized sitemap endpoint
      ├── astro.config.ts                   # Astro config with the intlayer() integration
      ├── intlayer.config.ts
      ├── package.json
      └── tsconfig.json
      

      कॉन्फ़िगरेशन

      अपने एप्लिकेशन की भाषाओं को परिभाषित करने के लिए एक कॉन्फ़िगरेशन फ़ाइल बनाएँ:

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";
      
      const config: IntlayerConfig = {
        internationalization: {
          locales: [
            Locales.ENGLISH,
            Locales.FRENCH,
            Locales.SPANISH,
            Locales.HINDI,
            // आपकी अन्य भाषाएँ
          ],
          defaultLocale: Locales.ENGLISH,
        },
      };
      
      export default config;
      
      इस कॉन्फ़िगरेशन फ़ाइल के माध्यम से, आप स्थानीयकृत URL, मिडलवेयर रीडायरेक्ट, कुकी नाम, सामग्री घोषणाओं का स्थान और एक्सटेंशन कॉन्फ़िगर कर सकते हैं, कंसोल में Intlayer लॉग को अक्षम कर सकते हैं, और बहुत कुछ। उपलब्ध मापदंडों की पूरी सूची के लिए, कॉन्फ़िगरेशन दस्तावेज़ देखें।
    3. अपने Astro कॉन्फ़िगरेशन में Intlayer को एकीकृत करें

      अपने Astro कॉन्फ़िगरेशन में intlayer प्लगइन जोड़ें।

      astro.config.ts
      // @ts-check
      
      import { intlayer } from "astro-intlayer";
      import { defineConfig } from "astro/config";
      
      // https://astro.build/config
      export default defineConfig({
        integrations: [intlayer()],
      });
      
      intlayer() एकीकरण प्लगइन का उपयोग Intlayer को Astro के साथ एकीकृत करने के लिए किया जाता है। यह सामग्री घोषणा फ़ाइलों के उत्पादन को सुनिश्चित करता है और विकास मोड में उनकी निगरानी करता है। यह Astro एप्लिकेशन के भीतर Intlayer पर्यावरण चर को परिभाषित करता है और प्रदर्शन को अनुकूलित करने के लिए उपनाम (aliases) प्रदान करता है।
    4. अपनी सामग्री घोषित करें

      अनुवादों को संग्रहीत करने के लिए अपनी सामग्री घोषणाएँ बनाएँ और प्रबंधित करें:

      src/app.content.tsx
      import { t, type Dictionary } from "intlayer";
      import type { ReactNode } from "react";
      
      const appContent = {
        key: "app",
        content: {
          title: t({
            en: "Hello World",
            fr: "Bonjour le monde",
            es: "Hola mundo",
            hi: "नमस्ते दुनिया",
          }),
        },
      } satisfies Dictionary;
      
      export default appContent;
      
      सामग्री घोषणाओं को आपके एप्लिकेशन में कहीं भी परिभाषित किया जा सकता है, बशर्ते वे contentDir (डिफ़ॉल्ट रूप से ./src) में शामिल हों और सामग्री घोषणा फ़ाइल एक्सटेंशन (डिफ़ॉल्ट रूप से .content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}) से मेल खाती हों।
      अधिक जानकारी के लिए, सामग्री घोषणा दस्तावेज़ देखें।
    5. Astro में सामग्री का उपयोग करना

      astro-intlayer द्वारा निर्यात किए गए हुक्स के साथ .astro फ़ाइलों में अपने शब्दकोशों का उपयोग करें। वे react-intlayer के समान हस्ताक्षर साझा करते हैं: useIntlayer("key") एक शब्दकोश की सामग्री लौटाता है और useLocale() बिना किसी तर्क के वर्तमान लोकेल लौटाता है।

      लोकेल astro-intlayer मिडलवेयर से आता है, जिसे एकीकरण आपके अपने src/middleware.ts से पहले पंजीकृत करता है। यह प्रत्येक अनुरोध के लिए इसे URL उपसर्ग, फिर क्लाइंट द्वारा सहेजे गए लोकेल (कुकी या हेडर), फिर Accept-Language से हल करता है, और इसे Astro.locals.intlayer में संग्रहीत करता है। प्री-रेंडर किए गए पृष्ठ केवल URL का उपयोग करते हैं, क्योंकि वे प्रत्येक आगंतुक के लिए एक बार रेंडर होते हैं।

      आपको प्रत्येक पृष्ठ पर hreflang और विहित (canonical) लिंक जैसे SEO मेटाडेटा भी जोड़ना चाहिए और उपयोगकर्ताओं को भाषा बदलने की अनुमति देने के लिए एक भाषा स्विचर शामिल करना चाहिए।

      src/pages/index.astro
      ---
      import { useIntlayer, useLocale } from "astro-intlayer";
      import {
        getLocalizedUrl,
        defaultLocale,
        localeMap,
        getHTMLTextDir,
      } from "intlayer";
      import LocaleSwitcher from "../components/LocaleSwitcher.astro";
      
      // मिडलवेयर द्वारा हल किया गया लोकेल (उदा. /hi/about -> 'hi')
      const { locale } = useLocale();
      
      // उस लोकेल के लिए 'app' शब्दकोश की सामग्री
      const { title } = useIntlayer("app");
      ---
      
      <!doctype html>
      <html lang={locale} dir={getHTMLTextDir(locale)}>
        <head>
          <meta charset="utf-8" />
          <meta name="viewport" content="width=device-width" />
          <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
          <title>{title}</title>
      
          <!-- Canonical link: Tells search engines which is the primary version of this page -->
          <link
            rel="canonical"
            href={new URL(getLocalizedUrl(Astro.url.pathname, locale), Astro.site)}
          />
      
          <!-- Hreflang: Tell Google about all localized versions -->
          {
            localeMap(({ locale: mapLocale }) => (
              <link
                rel="alternate"
                hreflang={mapLocale}
                href={new URL(
                  getLocalizedUrl(Astro.url.pathname, mapLocale),
                  Astro.site
                )}
              />
            ))
          }
      
          <!-- x-default: Fallback for users in unmatched languages -->
          <link
            rel="alternate"
            hreflang="x-default"
            href={new URL(
              getLocalizedUrl(Astro.url.pathname, defaultLocale),
              Astro.site
            )}
          />
        </head>
        <body>
          <header>
            <LocaleSwitcher />
          </header>
          <main>
            <h1>{title}</h1>
          </main>
        </body>
      </html>
      
      Astro.locals.intlayer आपके अपने मिडलवेयर और एंडपॉइंट्स के लिए locale, defaultLocale और availableLocales भी प्रदर्शित करता है। एक कॉल के लिए अनुरोध लोकेल को ओवरराइड करने के लिए दूसरे तर्क के रूप में एक लोकेल या चयनकर्ता पास करें (useIntlayer("app", "fr"), useIntlayer("faq", { item: 2 }))।
    6. स्थानीयकृत रूटिंग

      स्थानीयकृत पृष्ठों को परोसने के लिए गतिशील रूट सेगमेंट बनाएँ (उदा. src/pages/[locale]/index.astro):

      src/pages/[locale]/index.astro
      ---
      import { getIntlayer } from "intlayer";
      
      const { title } = getIntlayer('app');
      ---
      
      <h1>{title}</h1>
      

      Astro एकीकरण एक Vite मिडलवेयर जोड़ता है जो विकास के दौरान भाषा-संवेदनशील रूटिंग और पर्यावरण परिभाषाओं में मदद करता है। आप अपनी स्वयं की तर्क या intlayer टूल जैसे getLocalizedUrl का उपयोग करके विभिन्न भाषाओं के बीच लिंक भी बना सकते हैं।

    7. भाषा स्विचर जोड़ें

      उपयोगकर्ताओं को भाषाओं के बीच स्विच करने की अनुमति देने के लिए, आप एक LocaleSwitcher घटक बना सकते हैं। इस घटक को सभी समर्थित भाषाओं की एक सूची प्रदर्शित करनी चाहिए और प्रत्येक भाषा में उसी पृष्ठ पर लिंक करना चाहिए।

      src/components/LocaleSwitcher.astro
      ---
      import { useLocale } from "astro-intlayer";
      import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
      
      const { locale, availableLocales } = useLocale();
      const pathWithoutLocale = getPathWithoutLocale(Astro.url.pathname);
      ---
      
      <nav aria-label="Languages">
        <ul>
          {
            availableLocales.map((localeItem) => (
              <li key={localeItem} class="p-1">
                <a
                  href={getLocalizedUrl(pathWithoutLocale, localeItem)}
                  data-locale={localeItem}
                  aria-current={localeItem === locale ? "page" : undefined}
                >
                  {getLocaleName(localeItem)}
                </a>
              </li>
            ))
          }
        </ul>
      </nav>
      
      <script>
        // ब्राउज़र में, वही आयात क्लाइंट कार्यान्वयन को हल करता है
        import { useLocale } from "astro-intlayer";
        import { getLocalizedUrl, type LocalesValues } from "intlayer";
      
        // विकल्प को लोकेल कुकी में सहेजता है, फिर स्थानीयकृत URL पर नेविगेट करता है
        const { setLocale } = useLocale({
          onLocaleChange: (newLocale) => {
            window.location.href = getLocalizedUrl(window.location.pathname, newLocale);
          },
        });
      
        const localeLinks = document.querySelectorAll("[data-locale]");
      
        localeLinks.forEach((link) => {
          link.addEventListener("click", (event) => {
            const locale = link.getAttribute("data-locale") as LocalesValues;
      
            event.preventDefault();
            setLocale(locale);
          });
        });
      </script>
      
      <style>
        nav {
          display: flex;
          gap: 1rem;
        }
        ul {
          display: flex;
          list-style: none;
          padding: 0;
          margin: 0;
          gap: 0.5rem;
        }
        a[aria-current="page"] {
          font-weight: bold;
          text-decoration: underline;
        }
      </style>
      

      स्थिरता पर नोट: क्लाइंट-साइड useLocale से setLocale उपयोगकर्ता की भाषा प्राथमिकता को कुकी में सहेजता है। यह Intlayer को पसंद याद रखने और भविष्य की यात्राओं पर उपयोगकर्ता को उनकी पसंदीदा भाषा में स्वचालित रूप से पुनर्निर्देशित करने की अनुमति देता है: ऑन-डिमांड रेंडर किए गए पेज (output: 'server' या prerender = false वाला एडेप्टर) किसी भी HTML को भेजे जाने से पहले Intlayer मिडलवेयर द्वारा पुनर्निर्देशित किए जाते हैं, जबकि प्री-रेंडर किए गए पेज, जो स्थिर फ़ाइलों के रूप में प्रस्तुत किए जाते हैं, एक छोटी स्क्रिप्ट द्वारा पुनर्निर्देशित किए जाते हैं जिसे एकीकरण प्रत्येक पेज में इंजेक्ट करता है। दोनों को बंद करने के लिए routing.enableProxy को false पर सेट करें। astro dev में, कुकी को पुनर्निर्देशन स्रोत के रूप में तब तक अनदेखा किया जाता है जब तक कि routing.enableProxy को true पर सेट न किया गया हो, ताकि कोई पुरानी कुकी उन पेजों को हाईजैक न कर सके जिन पर आप काम कर रहे हैं।

      सर्वर / क्लाइंट अंतर-संगतता: astro-intlayer फ्रंटमैट में अपने सर्वर हुक्स (Astro.locals पढ़ना) और <script> ब्लॉक और आइलैंड्स में vanilla-intlayer के क्लाइंट हुक्स को समान नाम और सामग्री संरचना के साथ हल करता है। setLocale और onChange केवल क्लाइंट पर कार्य करते हैं, क्लाइंट स्टोर को इनिशियलाइज़ करने के लिए वहां एक बार installIntlayer() को कॉल करें। astro-intlayer/client क्लाइंट प्रविष्टि को स्पष्ट रूप से प्रदर्शित करता है।

    8. Sitemap और Robots.txt

      Intlayer आपकी स्थानीयकृत साइटमैप और robots.txt फ़ाइलों को गतिशील रूप से बनाने के लिए उपयोगिताओं की पेशकश करता है।

      साइटमैप (Sitemap)

      Intlayer comes with a built-in sitemap generator to help you create a sitemap for your application easily. It handles localized routes and adds the necessary metadata for search engines.

      The Intlayer generated sitemap supports the xhtml:link namespace (Hreflang XML Extensions). Unlike the default sitemap generators that only list raw URLs, Intlayer automatically creates the required bidirectional links between all language versions of a page (e.g., /about, /about?lang=fr, and /about?lang=es). This ensures search engines correctly index and serve the right language version to the right audience.

      अपने सभी स्थानीयकृत रूट सहित साइटमैप उत्पन्न करने के लिए src/pages/sitemap.xml.ts बनाएँ।

      src/pages/sitemap.xml.ts
      import type { APIRoute } from "astro";
      import { generateSitemap, type SitemapUrlEntry } from "intlayer";
      
      const pathList: SitemapUrlEntry[] = [
        { path: "/", changefreq: "daily", priority: 1.0 },
        { path: "/about", changefreq: "monthly", priority: 0.7 },
      ];
      
      export const GET: APIRoute = async ({ site }) => {
        const xmlOutput = generateSitemap(pathList, {
          siteUrl: "https://example.com",
        });
      
        return new Response(xmlOutput, {
          headers: { "Content-Type": "application/xml" },
        });
      };
      

      Robots.txt

      खोज इंजन क्रॉलिंग को नियंत्रित करने के लिए src/pages/robots.txt.ts बनाएँ।

      src/pages/robots.txt.ts
      import type { APIRoute } from "astro";
      import { getMultilingualUrls } from "intlayer";
      
      const getAllMultilingualUrls = (urls: string[]) =>
        urls.flatMap((url) => Object.values(getMultilingualUrls(url)) as string[]);
      
      const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);
      
      export const GET: APIRoute = ({ site }) => {
        const robotsTxt = [
          "User-agent: *",
          "Allow: /",
          ...disallowedPaths.map((path) => `Disallow: ${path}`),
          "",
          `Sitemap: ${new URL("/sitemap.xml", site).href}`,
        ].join("\n");
      
        return new Response(robotsTxt, {
          headers: { "Content-Type": "text/plain" },
        });
      };
      
    9. अपने पसंदीदा फ्रेमवर्क का उपयोग जारी रखें

      अपनी पसंद के फ्रेमवर्क का उपयोग करके अपना एप्लिकेशन बनाना जारी रखें।

    10. अपने घटकों की सामग्री निकालें

      वैकल्पिक

      यदि आपके पास मौजूदा कोडबेस है, तो हजारों फ़ाइलों को बदलना समय लेने वाला हो सकता है।

      इस प्रक्रिया को आसान बनाने के लिए, Intlayer आपके घटकों को बदलने और सामग्री निकालने के लिए एक कंपाइलर / एक्सट्रैक्टर का प्रस्ताव करता है।

      इसे सेट करने के लिए, आप अपनी intlayer.config.ts फ़ाइल में एक compiler अनुभाग जोड़ सकते हैं:

      intlayer.config.ts
      import { type IntlayerConfig } from "intlayer";
      
      const config: IntlayerConfig = {
        // ... आपका शेष कॉन्फ़िगरेशन
        compiler: {
          /**
           * इंगित करता है कि क्या कंपाइलर सक्षम होना चाहिए।
           */
          enabled: true,
      
          /**
           * आउटपुट फ़ाइलों का पथ परिभाषित करता है
           */
          output: ({ fileName, extension }) => `./${fileName}${extension}`,
      
          /**
           * इंगित करता है कि क्या घटकों को बदलने के बाद सहेजा जाना चाहिए। उस तरह से, कंपाइलर को ऐप बदलने के लिए केवल एक बार चलाया जा सकता है, और फिर इसे हटाया जा सकता है।
           */
          saveComponents: false,
      
          /**
           * शब्दकोश कुंजी उपसर्ग
           */
          dictionaryKeyPrefix: "",
        },
      };
      
      export default config;
      

      अपने घटकों को बदलने और सामग्री निकालने के लिए एक्सट्रैक्टर चलाएँ

      bash
      npx intlayer extract
      

      अपने घटकों को बदलने और सामग्री निकालने के लिए अपना एप्लिकेशन बिल्ड करें

      bash
      npm run build # या npm run dev
      

    TypeScript कॉन्फ़िगरेशन

    Intlayer अपने कोडबेस को अधिक मजबूत बनाने के लिए TypeScript का लाभ उठाने के लिए मॉड्यूल ऑगमेंटेशन (module augmentation) का उपयोग करता है।

    Autocompletion

    Translation Error

    सुनिश्चित करें कि आपके TypeScript कॉन्फ़िगरेशन में स्वतः उत्पन्न प्रकार शामिल हैं।

    tsconfig.json
    {
      // ... आपका मौजूदा TypeScript कॉन्फ़िगरेशन
      "include": [
        // ... आपका मौजूदा TypeScript कॉन्फ़िगरेशन
        ".intlayer/**/*.ts", // स्वतः उत्पन्न प्रकारों को शामिल करें
      ],
    }
    

    Git कॉन्फ़िगरेशन

    Intlayer द्वारा उत्पन्न फ़ाइलों को अनदेखा करने की अनुशंसा की जाती है। यह उन्हें आपके Git रिपॉजिटरी में कमिट करने से बचाता है।

    ऐसा करने के लिए, अपनी .gitignore फ़ाइल में निम्न निर्देश जोड़ें:

    bash
    # Intlayer द्वारा उत्पन्न फ़ाइलों को अनदेखा करें
    .intlayer
    

    VS Code एक्सटेंशन

    Intlayer के साथ अपने विकास अनुभव को बेहतर बनाने के लिए, आप आधिकारिक Intlayer VS Code एक्सटेंशन स्थापित कर सकते हैं।

    यह एक्सटेंशन प्रदान करता है:

    • अनुवाद कुंजियों के लिए ऑटो-पूर्णता।
    • अनुपलब्ध अनुवादों के लिए वास्तविक समय त्रुटि पहचान।
    • अनूदित सामग्री का इनलाइन पूर्वावलोकन।
    • आसानी से अनुवाद बनाने और अपडेट करने के लिए त्वरित क्रियाएं।

    एक्सटेंशन का उपयोग करने के बारे में अधिक जानकारी के लिए, VS Code एक्सटेंशन दस्तावेज़ देखें।

    अपने ज्ञान को और गहरा करें

    यदि आप और अधिक सीखना चाहते हैं, तो आप विजुअल एडिटर को भी लागू कर सकते हैं या अपनी सामग्री को बाहरी बनाने के लिए CMS का उपयोग कर सकते हैं।

    अक्सर पूछे जाने वाले प्रश्न

    Astro URL उपसर्गों के लिए i18n रूटिंग प्रदान करता है, लेकिन सामग्री प्रबंधन आप पर छोड़ देता है:

    • Astro का अंतर्निहित i18n प्लस मैन्युअल JSON/TS फ़ाइलें: कोई प्रकार सुरक्षा, बहुवचन नियम या लापता अनुवाद उपकरण नहीं।
    • i18next या अलग-अलग आइलैंड लाइब्रेरी (vue-i18n, svelte-i18n): प्रत्येक आइलैंड प्रकार के लिए अपने स्वयं के कैटलॉग के साथ एक पूर्ण लाइब्रेरी।
    • Intlayer: Astro पृष्ठों और प्रत्येक आइलैंड फ्रेमवर्क दोनों के लिए एक साझा सामग्री परत, बिल्ड समय पर संकलित, पूर्ण प्रकारों, AI अनुवाद, विज़ुअल एडिटर और CMS के साथ।

    प्रमुख लाभ यह है कि वही शब्दकोश .astro पृष्ठों और React, Vue, Svelte, Solid, Preact या Lit आइलैंड को सेवा प्रदान करता है। Intlayer क्यों चुनें देखें।

    नेमस्पेस-आधारित समाधानों की तुलना में बहुत कम, क्योंकि एक पृष्ठ कभी भी उस कैटलॉग को डाउनलोड नहीं करता है जिसे वह रेंडर नहीं करता है। Astro पृष्ठ बिल्ड समय पर रेंडर होते हैं, इसलिए केवल अनुवादित HTML भेजा जाता है बिना किसी अतिरिक्त शब्दकोश के; केवल इंटरैक्टिव आइलैंड घटक ही शब्दकोश प्राप्त करते हैं। गतिशील शब्दकोश सामग्री को प्रति लोकेल विभाजित करते हैं, जिससे बंडल 50% तक कम हो जाता है। बंडल अनुकूलन और बेंचमार्क देखें।

    काफी हद तक हाँ। i18next माइग्रेशन गाइड का पालन करें। आप sync JSON प्लगइन के माध्यम से भी धीरे-धीरे माइग्रेट कर सकते हैं।

    हाँ। sync JSON plugin आपकी /messages/{locale}/{namespace}.json फ़ाइलों को सत्य का स्रोत बनाए रखता है और दोनों दिशाओं में उनसे Intlayer dictionaries बनाता है। sync PO plugin gettext catalogs के लिए भी ऐसा ही करता है, और per locale files आपको locales को एक फ़ाइल में समूहीकृत करने के बजाय भाषा के अनुसार content को विभाजित करने देते हैं।

    नहीं। npx intlayer extract चलाएं और Intlayer आपकी फ़ाइलों को पढ़ता है, उपयोगकर्ता के अनुकूल स्ट्रिंग्स निकालता है, और प्रत्येक के बगल में एक .content फ़ाइल लिखता है, जिससे आप कैटलॉग में मैन्युअल रूप से कॉपी करने के बजाय एक diff की समीक्षा करते हैं। इस गाइड का चरण 15 इसे समझाता है।

    पूर्ण स्वचालन के लिए, Intlayer Compiler बिल्ड समय पर यही काम करता है: प्रत्येक परिवर्तन पर कोड स्कैन करता है, शब्दकोश उत्पन्न करता है और HMR के साथ सिंक करता है।

    कंपाइलर को चालू करने से पहले दो सीमाएं जानने योग्य हैं। यह स्थिर विश्लेषण द्वारा काम करता है, इसलिए जो स्ट्रिंग्स केवल रनटाइम पर मौजूद होती हैं, जैसे कि API त्रुटि कोड या CMS फ़ील्ड, वे पहुंच से बाहर रहती हैं। और इसे className="active" या स्थिति कोड जैसे एप्लिकेशन लॉजिक से उपयोगकर्ता के सामने आने वाले टेक्स्ट को अलग करना होगा, जिसके लिए एक बड़े कोडबेस में कुछ एनोटेशन की आवश्यकता होती है। extract command आपको लूप में रखकर दोनों से बचाता है।

    पाँच उपकरण, सभी वैकल्पिक:

    • VS Code extension: useIntlayer कुंजी से उसे घोषित करने वाली सामग्री फ़ाइल पर जाएं, घटकों से सामग्री निकालें, और कमांड पैलेट या Intlayer टैब से build, fill, test, push और pull चलाएं।
    • LSP server: LSP का समर्थन करने वाले किसी भी संपादक में समान सुविधा, परिभाषा पर जाएं, अनुवादित मान का पूर्वावलोकन देखें, और कुंजी पूर्णता प्राप्त करें। i18next, react-i18next, next-intl और use-intl कॉल का भी समर्थन करता है।
    • MCP server: Cursor, VS Code, Claude Desktop, Claude Code और ChatGPT के लिए Intlayer दस्तावेज़ और CLI प्रदान करता है।
    • Agent skills: केंद्रित कौशल जैसे intlayer-config, intlayer-cli और intlayer-content।
    • ESLint plugin: no-raw-text नियम हार्डकोडेड स्ट्रिंग्स को चिह्नित करता है।