क्या मैं Intlayer को global provider के बिना उपयोग कर सकता हूँ?
हाँ। getIntlayer और getDictionary साधारण functions हैं जिन्हें किसी provider की ज़रूरत नहीं होती, और useIntlayer भी provider के बाहर काम करता है।
कोड को क्लिपबोर्ड पर कॉपी करें
कौन सा locale उपयोग होता है?
स्पष्ट रूप से दिया गया locale हमेशा प्राथमिकता पाता है। अन्यथा, locale इस क्रम में resolve होता है:
- वर्तमान request का locale, server पर, जब कोई Intlayer integration उसे संभालता है:
express-intlayer,fastify-intlayer,hono-intlayer,adonis-intlayer,elysia-intlayer,remix-intlayerऔरastro-intlayerके middlewares, या React Server Components मेंIntlayerProvider। - browser में संग्रहीत locale (cookie,
localStorage,sessionStorage), जिसे आपका locale switcher सहेजता है। - आपके configuration का
defaultLocale।
हर request अपनी cookies और headers से resolve होती है, और उसी request के scope में रखी जाती है। अलग-अलग locale वाले एक साथ आने वाले users कभी locale साझा नहीं करते।
यही resolution getDictionary पर, build optimization द्वारा दोबारा लिखे गए calls पर, और provider के बाहर render किए गए useIntlayer और useDictionaryDynamic पर भी लागू होता है।
Next.js Server Components
Next.js में, request का locale केवल asynchronous रूप से, headers() और cookies() के ज़रिए पढ़ा जा सकता है। getIntlayerAsync का उपयोग करें, जो next-intlayer/server के getLocale() की तरह ही उसकी प्रतीक्षा करता है:
कोड को क्लिपबोर्ड पर कॉपी करें
headers पढ़ने से route dynamic rendering में चला जाता है। जब IntlayerProvider पहले से locale देता है, तो headers नहीं पढ़े जाते और route static रहता है।
Performance: provider के साथ या बिना
content वही है। अंतर reactivity और rendering cost का है।
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| provider के साथ | provider के बिना | |
|---|---|---|
| locale बदलना | components बिना reload के वहीं re-render होते हैं | कुछ भी re-render नहीं होता; नया locale अगले call पर दिखता है (navigation, reload) |
| एक read की cost | context lookup और locale का subscription | एक memoized function call, एक ही key + locale के लिए वही object |
| एक बदलाव की cost | हर consumer का re-render | कोई नहीं |
| server rendering | server और browser एक ही locale render करते हैं | request integration के बाहर, server defaultLocale और browser संग्रहीत locale render करता है: संभावित hydration mismatch |
| Bundle | provider का code | संग्रहीत locale पढ़ने के लिए लगभग 100 bytes (gzip), अगले बदलाव तक cache |
उन interactive apps के लिए provider रखें जो locale वहीं बदलते हैं या server पर render करते हैं। backends, scripts, URL से locale लेने वाले static pages (उसे स्पष्ट रूप से पास करें), या content को एक बार पढ़ने वाले code के लिए provider के बिना काम करें।
अधिक जानकारी के लिए getIntlayer देखें।