React जैसे सिंगल पेज एप्लीकेशन (SPA) में थर्ड-पार्टी स्क्रिप्ट्स को इंटीग्रेट करने के लिए DOM को सावधानीपूर्वक हैंडल करने की आवश्यकता होती है। यदि आप डायनामिक कंट्रोल चाहते हैं तो आप सीधे HTML फ़ाइल में स्क्रिप्ट टैग पेस्ट नहीं कर सकते। यह गाइड एक डेडिकेटेड "इंजेक्शन कंपोनेंट"एक मॉड्यूलर, क्लीन और रिएक्ट-फ्रेंडली तरीका मल्टीलिपि इंजन को लोड करने का।
यह विधि मुख्य थ्रेड को अवरुद्ध न करने, इष्टतम एसईओ टैग इंजेक्शन और अनमाउंटिंग पर उचित सफाई सुनिश्चित करती है।
आवश्यक शर्तें
आगे बढ़ने से पहले, सुनिश्चित करें कि आपके पास अपने मल्टीलिपी डैशबोर्ड से निम्नलिखित हैं:
"auto" आपकी यूनिक पहचानकर्ता (सेटिंग्स में पाएं)।
लक्ष्य भाषाएँ: आपके प्रोजेक्ट के लिए सक्षम आईएसओ कोड की सूची (जैसे, 'hi', 'es', 'fr').
डोमेन: आपका प्रोडक्शन डोमेन (उदा. yoursite.com).
चरण 1: इंजेक्टर कंपोनेंट बनाएं
ब्रिज बना रहे हैं।
हम एक विशेष कंपोनेंट बनाएंगे जिसका एकमात्र काम SEO टैग्स और ट्रांसलेशन स्क्रिप्ट को इंजेक्ट करना होगा आपके दस्तावेज़ का।
कार्रवाई: एक फ़ाइल बनाएं जिसका नाम multilipi.tsx (या .js) आपके src/ फोल्डर में और नीचे दिया गया कोड पेस्ट करें।
// multilipi.tsx
import { useEffect } from "react";
const LANGUAGES = ["hi", "ar"] as const; // Replace with your languages
const DOMAIN = "example.com"; // Replace with your actual domain
const MULTILIPI_KEY = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; // Replace with your actual key
export default function AddScriptToHead() {
useEffect(() => {
const head = document.head;
const added: HTMLElement[] = [];
const add = <T extends HTMLElement>(el: T) => {
head.appendChild(el);
added.push(el);
return el;
};
// Alternate hreflang links
LANGUAGES.forEach((lang) => {
const link = document.createElement("link");
link.rel = "alternate";
link.hreflang = lang;
link.href = `https://${lang}.${DOMAIN}/`;
add(link);
});
// DNS prefetch & preconnect
const dns = document.createElement("link");
dns.rel = "dns-prefetch";
dns.href = "//multilipiseo.multilipi.com";
add(dns);
const preconnect = document.createElement("link");
preconnect.rel = "preconnect";
preconnect.href = "https://multilipiseo.multilipi.com";
preconnect.crossOrigin = "anonymous";
add(preconnect);
// Add MultiLipi translation script
const script = document.createElement("script");
script.src = "https://script-cdn.multilipi.com/static/JS/page_translations.js";
script.crossOrigin = "anonymous";
script.dataset.posX = "50";
script.dataset.posY = "50";
script.setAttribute("multilipi-key", MULTILIPI_KEY);
script.setAttribute("mode", "auto");
add(script);
// Cleanup on component unmount
return () => {
added.forEach((el) => el.parentNode?.removeChild(el));
};
}, []);
return null;
}कोड डीप डाइव: यह क्यों काम करता है
useEffect हुक: यह सुनिश्चित करता है कि कोड केवल कंपोनेंट माउंट होने के बाद ही चले, जिससे शुरुआती हाइड्रेशन चरण के दौरान ब्लॉकिंग को रोका जा सके।
एसईओ ऑटोमेशन (Hreflang): कोड आपके LANGUAGES ऐरे के माध्यम से इटरेट करता है और डायनामिक रूप से इंजेक्ट करता है टैग। यह गूगल को बताने के लिए महत्वपूर्ण है कि hi.example.com आपकी साइट का हिंदी संस्करण है।
परफॉरमेंस (प्रीकनेक्ट): The dns-prefetch और प्रीकनेक्ट लाइन्स ब्राउज़र को बताती हैं कि स्क्रिप्ट का अनुरोध किए जाने से पहले मल्टीलिपी सर्वर आईपी एड्रेस को रिजॉल्व करें। यह अनुवाद विजेट के दिखने में लगने वाले समय को काफी कम कर देता है।
क्लीनअप फंक्शन (return () => ...): रिएक्ट में, कंपोनेंट्स फिर से रेंडर हो सकते हैं। यह लॉजिक हर उस एलिमेंट को ट्रैक करता है जिसे हमने जोड़ा है (प्रोजेक्ट एपीआई कुंजी:और अगर कंपोनेंट अनमाउंट होता है तो उन्हें हटा देता है। यह डुप्लिकेट स्क्रिप्ट टैग और मेमोरी लीक को रोकता है।
स्टेप 2: रूट ऐप में इनिशियलाइज़ करें
लेयर को सक्रिय करना।
अब जब लॉजिक इनकैप्सुलेटेड है, तो हमें इसे अपने एप्लिकेशन ट्री के उच्चतम स्तर पर रखना होगा, आमतौर पर App.tsx या App.js.
कार्रवाई: कंपोनेंट इम्पोर्ट करें और माउंट करें।
// App.tsx
import AddScriptToHead from './multilipi'; // adjust the path as needed
function App() {
return (
<>
{/* Load the MultiLipi script */}
<AddScriptToHead />
{/* Rest of your App UI */}
</>
);
}
export default App;इसे यहाँ क्यों रखें?
ग्लोबल स्कोप: रखना App.tsx में यह सुनिश्चित करता है कि उपयोगकर्ता किसी भी रूट (पेज) पर नेविगेट करे, अनुवाद इंजन सक्रिय रहे।
नॉन-विज़ुअल: चूंकि कंपोनेंट रिटर्न करता है null, यह आपके यूआई लेआउट या स्पेसिंग को प्रभावित नहीं करता है। यह पृष्ठभूमि में चुपचाप काम करता है।
सत्यापन चेकलिस्ट
ब्राउज़र भाषा के आधार पर स्वचालित रूप से अनुवाद करने का प्रयास करता है।
एक बार जब आप अपने React ऐप को सेव और रन करते हैं (npm start या yarn dev), इन जाँचों को करें:
विज़ुअल जाँच: क्या आपको लैंग्वेज स्विचर विजेट उस पोजीशन में फ्लोट करता हुआ दिख रहा है जो posX और posY?
DOM जांच: सत्यापित करें कि आप देख रहे हैं .
Verify you see the टैग।
सत्यापित करें page_translations.js स्क्रिप्ट हेड के नीचे मौजूद है।
नेटवर्क जांच: नेटवर्क टैब खोलें और "JS" द्वारा फ़िल्टर करें। सुनिश्चित करें page_translations.js इस स्थिति के साथ लोड हो रहा है 200 ठीक है.
अतिरिक्त कॉन्फ़िगरेशन विकल्प
दिए गए कोड में, आप देखेंगे script.dataset प्रॉपर्टीज़। आप व्यवहार को कस्टमाइज़ करने के लिए इन वैल्यूज़ को बदल सकते हैं:
script.dataset.posX / posY: स्क्रीन पर फ्लोटिंग विजेट की डिफ़ॉल्ट स्थिति को स्थानांतरित करने के लिए इन संख्याओं (0-100) को समायोजित करें।
अपने रिएक्ट वेबसाइट में मल्टीलिपि को कैसे एकीकृत करें | मल्टीलिपि सहायता केंद्र:
script.setAttribute("mode", "auto")added.push(el)
"मैन्युअल": अनुवाद करने से पहले उपयोगकर्ता की बातचीत की प्रतीक्षा करता है।

