अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
अपने पसंदीदा AI एसिस्टेंट में Intlayer MCP सर्वर को एकीकृत करके आप सभी दस्तावेज़ को सीधे ChatGPT, DeepSeek, Cursor, VSCode से प्राप्त कर सकते हैं।
MCP सर्वर दस्तावेज़ देखेंइस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
नया Intlayer v7 - क्या नया है?
Intlayer v7 में आपका स्वागत है! यह प्रमुख रिलीज़ प्रदर्शन, टाइप सुरक्षा, और डेवलपर अनुभव में महत्वपूर्ण सुधार लाती है। नीचे मुख्य बिंदु दिए गए हैं, साथ ही माइग्रेशन नोट्स और व्यावहारिक उदाहरण।
मुख्य बिंदु
- तेज़ बिल्ड के लिए कैशिंग रणनीति
- बेहतर TypeScript टाइप जनरेशन लोकल-विशिष्ट टाइप्स के साथ
- बंडल अनुकूलन: लोकल्स को enum के बजाय स्ट्रिंग्स के रूप में
- नए रूटिंग मोड्स: prefix-no-default, prefix-all, no-prefix, search-params
- GDPR-अनुपालन लोकल स्टोरेज, डिफ़ॉल्ट के रूप में localStorage के साथ
- लचीला स्टोरेज कॉन्फ़िगरेशन: कुकीज़, localStorage, sessionStorage, या कई विकल्प
- विजुअल एडिटर पैकेज का आकार 30% छोटा
- बेहतर मिडलवेयर कॉन्फ़िगरेशन विकल्प
- बेहतर कंटेंट प्रबंधन के लिए अपडेटेड fill कमांड व्यवहार
- पूर्ण कंटेंट घोषणा फ़ाइल अपडेट के साथ बेहतर स्थिरता
- अनुवाद की सटीकता के लिए बुद्धिमान पुनः प्रयास प्रबंधन
- तेज़ अनुवाद प्रसंस्करण के लिए समानांतरता
- AI संदर्भ सीमाओं के भीतर बड़े फ़ाइलों को संभालने के लिए स्मार्ट chunking
प्रदर्शन: तेज़ बिल्ड के लिए कैशिंग
esbuild के साथ हर बिल्ड पर कंटेंट घोषणाओं को फिर से बनाने के बजाय, v7 एक कैशिंग रणनीति लागू करता है जो बिल्ड प्रक्रिया को तेज़ करता है।
npx intlayer buildनई कैशिंग प्रणाली:
- अनावश्यक प्रोसेसिंग से बचने के लिए संकलित कंटेंट घोषणाओं को संग्रहीत करता है
- परिवर्तनों का पता लगाता है और केवल संशोधित फ़ाइलों को पुनर्निर्मित करता है
- बड़े प्रोजेक्ट्स के लिए बिल्ड समय को काफी कम करता है
TypeScript: लोकल-विशिष्ट टाइप जनरेशन
TypeScript टाइप अब प्रत्येक लोकल के लिए उत्पन्न होते हैं, जो मजबूत टाइपिंग प्रदान करते हैं और सभी लोकल्स में यूनियन टाइप्स को समाप्त करते हैं।
v6 व्यवहार:
const content = getIntlayer("my-title-content", "en");// typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }v7 व्यवहार:
const content = getIntlayer("my-title-content", "en");// typeof content = { title: "My title" }लाभ:
- आपके IDE में अधिक सटीक ऑटोकंप्लीट
- बेहतर टाइप सुरक्षा बिना क्रॉस-लोकल टाइप प्रदूषण के
- टाइप जटिलता को कम करके बेहतर प्रदर्शन
बंडल अनुकूलन: लोकल्स को स्ट्रिंग्स के रूप में
Locales टाइप अब एक enum नहीं है, जिसका मतलब है कि यह अब पूरी तरह से ट्री-शेकेबल है और आपके बंडल को हजारों अप्रयुक्त लोकल रिकॉर्ड्स से भारी नहीं करेगा।
v6:
import { Locales } from "intlayer";// सभी लोकल्स शामिल करने वाला enum -> ट्री-शेकेबल नहींconst locale: Locales = Locales.ENGLISH;v7:
import { Locales, Locale } from "intlayer";// स्ट्रिंग टाइप -> पूरी तरह से ट्री-शेकेबलconst locale: Locale = Locales.ENGLISH;क्योंकि Locales अब एक enum नहीं है, आपको टाइप को Locales से Locale में बदलना होगा ताकि आप लोकल को एक टाइप के रूप में प्राप्त कर सकें।
अधिक जानकारी के लिए इम्प्लीमेंटेशन विवरण देखें।
अधिक लचीलापन के लिए नए रूटिंग मोड
v7 एक एकीकृत routing.mode कॉन्फ़िगरेशन पेश करता है जो पिछले prefixDefault और noPrefix विकल्पों को बदलता है, जिससे URL संरचना पर अधिक सूक्ष्म नियंत्रण मिलता है।
उपलब्ध रूटिंग मोड
- prefix-no-default (डिफ़ॉल्ट): डिफ़ॉल्ट लोकल में कोई प्रीफिक्स नहीं होता, अन्य लोकल्स में होता है
- /dashboard (en) या /fr/dashboard (fr)
- prefix-all: सभी लोकल्स में प्रीफिक्स होता है
- /en/dashboard (en) या /fr/dashboard (fr)`
- no-prefix: URL में कोई लोकल प्रीफिक्स नहीं (लोकल स्टोरेज/हेडर के माध्यम से संभाला जाता है)
- सभी लोकल्स के लिए /dashboard
- search-params: लोकल को क्वेरी पैरामीटर के रूप में पास किया जाता है
- /dashboard?locale=en या /dashboard?locale=fr
बुनियादी कॉन्फ़िगरेशन
// intlayer.config.tsexport default { internationalization: { locales: ["en", "fr", "es"], defaultLocale: "en", }, routing: { mode: "prefix-no-default", // डिफ़ॉल्ट },};GDPR अनुपालन: localStorage / कुकीज़ स्टोरेज
v7 उपयोगकर्ता की गोपनीयता को प्राथमिकता देता है और कुकीज़ के बजाय localStorage को डिफ़ॉल्ट स्टोरेज तंत्र के रूप में उपयोग करता है। यह बदलाव लोकल प्राथमिकताओं के लिए कुकी सहमति आवश्यकताओं से बचकर GDPR अनुपालन में मदद करता है।
स्टोरेज कॉन्फ़िगरेशन विकल्प
नया routing.storage फ़ील्ड पिछले middleware.cookieName और middleware.serverSetCookie विकल्पों के अतिरिक्त भी उपलब्ध है, जो लचीली स्टोरेज कॉन्फ़िगरेशन प्रदान करता है:
// स्टोरेज अक्षम करेंstorage: false// सरल स्टोरेज प्रकारstorage: 'cookie'storage: 'localStorage'storage: 'sessionStorage'// कस्टम विशेषताओं के साथ कुकीstorage: { type: 'cookie', name: 'custom-locale', domain: '.example.com', secure: true, sameSite: 'strict'}// कस्टम कुंजी के साथ localStoragestorage: { type: 'localStorage', name: 'custom-locale'}// पुनरावृत्ति के लिए कई स्टोरेज प्रकारstorage: ['cookie', 'localStorage']GDPR-अनुपालन कॉन्फ़िगरेशन उदाहरण
उत्पादन अनुप्रयोगों के लिए जिन्हें कार्यक्षमता और GDPR अनुपालन के बीच संतुलन बनाना होता है:
// intlayer.config.tsexport default { internationalization: { locales: ["en", "fr", "es"], defaultLocale: "en", }, routing: { mode: "prefix-no-default", storage: [ { type: "localStorage", // प्राथमिक स्टोरेज (कोई सहमति आवश्यक नहीं) name: "user-locale", }, { type: "cookie", // वैकल्पिक कुकी स्टोरेज (सहमति आवश्यक) name: "user-locale", secure: true, sameSite: "strict", httpOnly: false, }, ], },};कुकी स्टोरेज सक्षम / अक्षम करें
React / Next.js का उपयोग करते हुए उदाहरण:
ग्लोबली परिभाषित किया जा सकता है:
<IntlayerProvider isCookieEnabled={false}> <App /></IntlayerProvider>प्रत्येक हुक के लिए स्थानीय रूप से ओवरराइड किया जा सकता है:
const { setLocale } = useLocale({ isCookieEnabled: false });setLocale("en");नोट: कुकीज़ डिफ़ॉल्ट रूप से सक्षम हैं। नोट: अपने विशिष्ट उपयोग के लिए GDPR कुकी आवश्यकताओं की जांच करें।
विज़ुअल एडिटर: 30% छोटा पैकेज
विज़ुअल एडिटर पैकेज को पिछले संस्करण की तुलना में 30% छोटा करने के लिए अनुकूलित किया गया है, इसके कारण:
- कोड एडिटर प्रदर्शन में सुधार
- Intlayer कोर पैकेजों पर अनावश्यक निर्भरताओं को हटाना
- बेहतर ट्री-शेकिंग और मॉड्यूल बंडलिंग
इससे आपके एप्लिकेशन के लिए डाउनलोड समय तेज़ होता है और रनटाइम प्रदर्शन में सुधार होता है।
Fill कमांड: बेहतर कंटेंट प्रबंधन के लिए अपडेटेड व्यवहार
v7 में fill कमांड के लिए बेहतर व्यवहार पेश किया गया है, जो अधिक पूर्वानुमेय और लचीला कंटेंट प्रबंधन प्रदान करता है:
नया fill व्यवहार
- fill: true - सभी लोकल्स के लिए भरे गए कंटेंट के साथ वर्तमान फ़ाइल को पुनः लिखता है
- fill: "path/to/file" - निर्दिष्ट फ़ाइल को भरे बिना वर्तमान फ़ाइल को संशोधित किए बिना भरता है
- fill: false - ऑटो-फिल को पूरी तरह से अक्षम करता है
जटिल कंटेंट संरचनाओं के लिए उन्नत समर्थन
fill कमांड अब जटिल कंटेंट घोषणा संरचनाओं का समर्थन करता है, जिसमें शामिल हैं:
- संयोजित ऑब्जेक्ट्स: कंटेंट घोषणाएं जो अन्य ऑब्जेक्ट्स का संदर्भ देती हैं
- डिस्ट्रक्चर्ड कंटेंट: कंटेंट जो डिस्ट्रक्चरिंग पैटर्न का उपयोग करता है
- नेस्टेड संदर्भ: ऑब्जेक्ट्स जो जटिल पदानुक्रमों में एक-दूसरे को कॉल करते हैं
- डायनामिक कंटेंट संरचनाएं: कंटेंट जिसमें सशर्त या गणना की गई विशेषताएं होती हैं
लाभ
- स्पष्ट इरादा: व्यवहार अब अधिक स्पष्ट है कि क्या संशोधित किया जाता है
- बेहतर पृथक्करण: कंटेंट फ़ाइलों को भरे गए अनुवादों से अलग रखा जा सकता है
- सुधारित कार्यप्रवाह: डेवलपर्स के पास यह नियंत्रित करने का अधिक विकल्प होता है कि अनुवाद कहाँ संग्रहीत किए जाते हैं
- जटिल संरचना समर्थन: कई परस्पर जुड़े ऑब्जेक्ट्स के साथ परिष्कृत कंटेंट आर्किटेक्चर को संभालें
उदाहरण उपयोग
// सभी लोकल्स के साथ वर्तमान फ़ाइल को पुनः लिखेंconst content = { key: "example", fill: true, // इस फ़ाइल को पुनः लिखता है content: { title: "Hello World", },};// वर्तमान फ़ाइल को संशोधित किए बिना अलग फ़ाइल भरेंconst content = { key: "example", fill: "./translations.json", // translations.json बनाता/अपडेट करता है content: { title: "Hello World", },};// ऑटो-फिल अक्षम करेंconst content = { key: "example", fill: false, // कोई ऑटो-फिल नहीं content: { title: "Hello World", },};// संयोजित ऑब्जेक्ट्स के साथ जटिल कंटेंट संरचनाconst sharedContent = { buttons: { save: "सहेजें", cancel: "रद्द करें", },};const content = { key: "complex-example", fill: true, content: { // अन्य ऑब्जेक्ट्स के संदर्भ sharedContent, // डीस्ट्रक्चर्ड कंटेंट ...sharedContent, // नेस्टेड संदर्भ sections: [ { ...sharedContent.buttons, header: "सेक्शन 1", }, ], },};बेहतर स्थिरता और अनुवाद प्रबंधन
v7 कई सुधार प्रस्तुत करता है जो कंटेंट अनुवाद को अधिक विश्वसनीय और कुशल बनाते हैं:
पूर्ण कंटेंट घोषणा फ़ाइल अपडेट्स
सिस्टम अब आंशिक अपडेट के बजाय .content.{ts,js,cjs,mjs} फ़ाइलों को अपडेट करता है, जिससे सुनिश्चित होता है कि:
- डेटा अखंडता: पूरी फ़ाइल को पुनः लिखने से आंशिक अपडेट से बचा जाता है जो कंटेंट को भ्रष्ट कर सकते हैं
- संगति: सभी लोकल्स को एक साथ अपडेट किया जाता है, जिससे सिंक्रनाइज़ेशन बना रहता है
- विश्वसनीयता: अधूरी या त्रुटिपूर्ण कंटेंट फ़ाइलों के जोखिम को कम करता है
बुद्धिमान पुनः प्रयास प्रबंधन
नए पुनः प्रयास तंत्र गलत प्रारूपों में कंटेंट भेजने से रोकते हैं, और यदि एक अनुरोध विफल हो जाता है तो पूरे भरने की प्रक्रिया को टूटने से बचाते हैं।
तेज़ प्रोसेसिंग के लिए समानांतरता
अनुवाद संचालन अब कतार में चलते हैं ताकि उन्हें समानांतर में चलाया जा सके। इससे प्रक्रिया काफी तेज़ हो जाती है।
बड़े फ़ाइलों के लिए स्मार्ट चंकिंग
उन्नत चंकिंग रणनीतियाँ बड़ी कंटेंट फ़ाइलों को AI संदर्भ विंडो से अधिक हुए बिना संभालती हैं:
उदाहरण कार्यप्रवाह
// बड़ी कंटेंट फ़ाइल स्वचालित रूप से चंक की जाती हैconst content = { key: "large-documentation", fill: true, content: { // AI प्रोसेसिंग के लिए बड़ी सामग्री को स्वचालित रूप से चंक किया गया introduction: "..." // 5000+ अक्षर sections: [ // कई बड़े सेक्शन ] }};सिस्टम स्वचालित रूप से:
- सामग्री के आकार और संरचना का विश्लेषण करता है
- सामग्री को उपयुक्त रूप से चंक करता है
- चंक्स को समानांतर में प्रोसेस करता है
- आवश्यक होने पर मान्यकरण करता है और पुनः प्रयास करता है
- पूरी फ़ाइल को पुनर्निर्मित करता है
v6 से माइग्रेशन नोट्स
हटाई गई कॉन्फ़िगरेशन
- middleware.cookieName: इसे routing.storage से बदला गया है
- middleware.serverSetCookie: इसे routing.storage से बदला गया है
- middleware.prefixDefault: इसे routing.mode से बदला गया है
- middleware.noPrefix: इसे routing.mode से बदला गया है
माइग्रेशन मैपिंग
कॉन्फ़िगरेशन मैपिंग
| v6 कॉन्फ़िगरेशन | v7 कॉन्फ़िगरेशन |
|---|---|
| autoFill: xxx | fill: xxx |
| prefixDefault: false | mode: 'prefix-no-default' |
| prefixDefault: true | mode: 'prefix-all' |
| noPrefix: true | mode: 'no-prefix' |
| cookieName: 'my-locale' | storage: { type: 'cookie', name: 'my-locale' } |
| serverSetCookie: 'never' | storage: false या स्टोरेज एरे से कुकी हटाएं |
उदाहरण माइग्रेशन
पहले (v6):
export default { middleware: { headerName: "x-intlayer-locale", cookieName: "intlayer-locale", prefixDefault: false, basePath: "", serverSetCookie: "always", noPrefix: false, },};बाद में (v7):
export default { routing: { mode: "prefix-no-default", storage: "localStorage", // या 'cookie' यदि आपको कुकी स्टोरेज की आवश्यकता है headerName: "x-intlayer-locale", basePath: "", },};शब्दकोश सामग्री मैपिंग
| v6 शब्दकोश सामग्री | v7 शब्दकोश सामग्री |
|---|---|
| autoFill: xxx | fill: xxx |
उदाहरण माइग्रेशन
पहले (v6):
const content = { key: "example", autoFill: true, // इस फ़ाइल को पुनः लिखता है content: { title: "हैलो वर्ल्ड", },};बाद में (v7):
const content = { key: "example", fill: true, // इस फ़ाइल को पुनः लिखता है content: { title: "हैलो वर्ल्ड", },};v5 से v6 तक माइग्रेशन नोट्स
अधिक जानकारी के लिए v5 से v6 तक माइग्रेशन नोट्स देखें।