टोकन डिस्कवरी
"टोकन डिस्कवरी" वह तरीका है जिससे SDK यह पता लगाता है कि किसका अनुवाद करना है — अपने आप, आपके UI लिखने के ढंग से। इसके चार बिल्डिंग ब्लॉक हैं, जिनमें से हर एक अलग तरह की सामग्री के लिए है।
t() — एक इनलाइन स्ट्रिंग
यह मुख्य फ़ंक्शन है। इसे स्रोत टेक्स्ट के साथ कॉल करें, तो यह मौजूदा लोकेल का अनुवाद लौटाता है (या, अगर वह लोकेल अभी तैयार नहीं है, तो स्रोत टेक्स्ट ही लौटाता है)। वैकल्पिक category संबंधित वाक्यांशों को एक समूह में रखती है और मशीन ट्रांसलेटर को संदर्भ के रूप में भेजी जाती है; params {placeholders} को भरते हैं।
const t = useT();
// t(phrase, category?, params?)
t('Hello, {name}!', 'Greetings', { name }); <Translate> — एक कंटेंट ब्लॉक
मार्कअप के किसी हिस्से को रैप करें और SDK उसे एक कंटेंट ब्लॉक में टोकनाइज़ कर देता है — हर टेक्स्ट नोड एक फ़्रेज़ बन जाता है — फिर हर लोकेल बदलने पर पूरे ब्लॉक का दोबारा अनुवाद करता है। यह ब्लॉक अपनी सामग्री और श्रेणी से बनी एक स्थिर आईडी से पहचाना जाता है, इसलिए एक ही ब्लॉक हर रेंडर और रीलोड में पहचान लिया जाता है।
<Translate category="Home">
<p>Welcome to our store. Browse the catalog in your language.</p>
</Translate> <Phrase> — एक वाक्य, मार्कअप के साथ
जब किसी वाक्य में इनलाइन मार्कअप या इंटरपोलेशन हो, तो <Phrase> उसे एक ही अनुवाद-योग्य इकाई के रूप में रखता है — इसलिए "Hi Sarah, you have 3 items" का अनुवाद टुकड़ों में बँटने के बजाय एक स्वाभाविक वाक्य के रूप में होता है। यह पैरामीटर और बहुवचन को सपोर्ट करता है।
<Phrase category="Cart" params={{ name: 'Sarah', count: 3 }}>
Hi %name%, you have %count% items in your cart.
</Phrase> प्लेसहोल्डर मार्कर। इंटरपोलेशन को {name} के रूप में लिखें। जिस मार्कअप में कोई फ़्रेमवर्क पहले से { } का उपयोग करता है (JSX, Vue, Svelte), वहाँ इसके बजाय %name% लिखें — फ़्रेज़ कैप्चर करते समय SDK इसे वापस {name} में सामान्यीकृत कर देता है।
<DontTranslate> — इसे जैसा है वैसा रहने दें
ब्रांड नाम, कोड, आइडेंटिफ़ायर, पते — किसी क्षेत्र को चिह्नित करें ताकि उसका अनुवाद कभी न हो। यह translate="no" के रूप में रेंडर होता है और डिस्कवरी में पूरी तरह छोड़ दिया जाता है।
<p>Welcome! <DontTranslate>This sentence always stays in English.</DontTranslate> Thanks for visiting!</p> डिस्कवरी केवल राइट की (write key) के साथ ही होती है। ब्राउज़र में आप रीड-ओनली की भेजते हैं, इसलिए SDK कुछ भी रजिस्टर नहीं करता — वह केवल पहले से मौजूद अनुवाद फ़ेच करता है। रजिस्ट्रेशन डेवलपमेंट के समय की गतिविधि है। देखें कीज़ और एनवायरनमेंट।