अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
संस्करण इतिहास
- "Providers और hooks को सीधे react-native-intlayer से import करें; react-intlayer अब सीधी dependency के रूप में आवश्यक नहीं है"v9.0.025/6/2026
- "सॉलिड useIntlayer API उपयोग को सीधे प्रॉपर्टी एक्सेस में अपडेट करें"v8.9.04/5/2026
- "init कमांड जोड़ें"v7.5.930/12/2025
- "डीबग अनुभाग जोड़ें"v6.1.62/10/2025
- "प्रारंभिक इतिहास"v5.5.1029/6/2025
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
अपने Expo और React Native ऐप का अनुवाद करें | अंतर्राष्ट्रीयकरण (i18n)
विषय सूची
विकल्पों पर Intlayer क्यों?
react-native-localize या i18next जैसे मुख्य समाधानों की तुलना में, Intlayer एक ऐसा समाधान है जो एकीकृत अनुकूलन के साथ आता है जैसे:
Intlayer को घटक-स्तरीय सामग्री स्कोपिंग, TypeScript समर्थन, और मोबाइल ऐप्स में अंतर्राष्ट्रीयकरण (i18n) को बढ़ाने के लिए आवश्यक सभी सुविधाओं की पेशकश करके React Native और Expo के साथ पूरी तरह से काम करने के लिए अनुकूलित किया गया है।
आपके एप्लिकेशन की सामग्री का दायरा बड़े पैमाने के अनुप्रयोगों के लिए रखरखाव की सुविधा प्रदान करता है। आप अपने संपूर्ण सामग्री कोडबेस की समीक्षा करने के मानसिक बोझ के बिना किसी एक फीचर फ़ोल्डर की नकल कर सकते हैं या उसे हटा सकते हैं। इसके अतिरिक्त, आपकी सामग्री की सटीकता सुनिश्चित करने के लिए Intlayer पूरी तरह से टाइप किया गया है।
सामग्री का सह-स्थानीकरण बड़े भाषा मॉडल (LLM) द्वारा आवश्यक संदर्भ को कम करता है। Intlayer टूल के एक सूट के साथ भी आता है, जैसे CLI ताकि लापता अनुवादों का परीक्षण किया जा सके,LSP, MCP, और agent skills, AI एजेंटों के लिए डेवलपर अनुभव (DX) को और भी आसान बनाने के लिए।
अपने AI प्रदाता की कीमत पर अपनी पसंद के LLM का उपयोग करके अपने CI/CD पाइपलाइन में अनुवाद करने के लिए स्वचालन का उपयोग करें। Intlayer सामग्री निष्कर्षण को स्वचालित करने के लिए एक कंपाइलर के साथ-साथ पृष्ठभूमि में अनुवाद में मदद करने के लिए एक वेब प्लेटफ़ॉर्म भी प्रदान करता है।
बड़े पैमाने पर JSON फ़ाइलों को घटकों से जोड़ने से प्रदर्शन और प्रतिक्रियाशीलता संबंधी समस्याएं हो सकती हैं। Intlayer बिल्ड समय पर आपकी सामग्री लोडिंग को अनुकूलित करता है।
सिर्फ एक i18n समाधान से अधिक, Intlayer एक स्व-होस्टेड विज़ुअल एडिटर और एक पूर्ण CMS प्रदान करता है आपकी बहुभाषी सामग्री को वास्तविक समय में प्रबंधित करने में मदद करता है, जिससे अनुवादकों, कॉपीराइटरों और टीम के अन्य सदस्यों के साथ सहयोग सहज हो जाता है। सामग्री को स्थानीय और/या दूरस्थ रूप से संग्रहीत किया जा सकता है।
अपने पृष्ठों में विशाल JSON फ़ाइलें लोड करने के बजाय, केवल आवश्यक सामग्री लोड करें। Intlayer आपके बंडल और दृश्य आकार को 50% तक कम करने में मदद करता है।
निर्भरताएँ स्थापित करें
GitHub पर एप्लिकेशन टेम्पलेट देखें।
अपने React Native प्रोजेक्ट से, निम्नलिखित पैकेज स्थापित करें:
bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
npx intlayer@canary init --interactive # v9# npx intlayer init # v8--interactiveफ्लैग वैकल्पिक है। यदि आप AI एजेंट हैं तोintlayer-cli initका उपयोग करें।यह कमांड आपके environment का पता लगाएगा और आवश्यक पैकेज इंस्टॉल करेगा। उदाहरण के लिए:
bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
npm install intlayer react-native-intlayerपैकेज
intlayer
कॉन्फ़िगरेशन, शब्दकोश सामग्री, प्रकार निर्माण और CLI कमांड के लिए कोर i18n टूलकिट।react-native-intlayer
React Native एकीकरण जो कॉन्टेक्स्ट प्रदाताओं और React हुक्स प्रदान करता है जिनका उपयोग आप locale प्राप्त करने और स्विच करने के लिए करेंगे, React Native polyfills, और React Native bundler के साथ Intlayer को एकीकृत करने के लिए Metro प्लगइन। यहreact-intlayerसे सब कुछ re-export करता है, इसलिए React Native ऐप में आपको केवल इसी एकल पैकेज की आवश्यकता है।
Intlayer कॉन्फ़िग बनाएं
अपने प्रोजेक्ट रूट (या कहीं भी सुविधाजनक) में, एक Intlayer कॉन्फ़िग फ़ाइल बनाएं। यह कुछ इस प्रकार दिख सकती है:
intlayer.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
/** * यदि Locales प्रकार उपलब्ध नहीं है, तो अपने tsconfig.json में moduleResolution को "bundler" पर सेट करने का प्रयास करें */ import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // ... अपनी आवश्यकतानुसार अन्य स्थानीय भाषाएँ जोड़ें ], defaultLocale: Locales.ENGLISH, }, }; export default config;इस कॉन्फ़िग में, आप कर सकते हैं:
- अपने समर्थित स्थानीय भाषाओं की सूची कॉन्फ़िगर करें।
- एक डिफ़ॉल्ट स्थानीय भाषा सेट करें।
- बाद में, आप अधिक उन्नत विकल्प जोड़ सकते हैं (जैसे, लॉग्स, कस्टम कंटेंट डायरेक्टरीज़, आदि)।
- अधिक जानकारी के लिए Intlayer कॉन्फ़िगरेशन दस्तावेज़ देखें।
Metro प्लगइन जोड़ें
Metro React Native के लिए एक बंडलर है। यह
react-native initकमांड से बनाए गए React Native प्रोजेक्ट्स के लिए डिफ़ॉल्ट बंडलर है। Intlayer को Metro के साथ उपयोग करने के लिए, आपको अपनेmetro.config.jsफ़ाइल में प्लगइन जोड़ना होगा:metro.config.jsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
const { getDefaultConfig } = require("expo/metro-config");const { configMetroIntlayer } = require("react-native-intlayer/metro");module.exports = (async () => { const defaultConfig = getDefaultConfig(__dirname); return await configMetroIntlayer(defaultConfig);})();नोट:
configMetroIntlayerएक promise फ़ंक्शन है। यदि आप इसे synchronously उपयोग करना चाहते हैं, या IIFE (Immediately Invoked Function Expression) से बचना चाहते हैं, तो इसके बजायconfigMetroIntlayerSyncका उपयोग करें। नोट:configMetroIntlayerSyncसर्वर स्टार्ट पर intlayer dictionaries बनाने की अनुमति नहीं देताIntlayer प्रदाता जोड़ें
अपने एप्लिकेशन में उपयोगकर्ता की भाषा को सिंक्रनाइज़ रखने के लिए, आपको अपने रूट कंपोनेंट को
react-native-intlayerसेIntlayerProviderकंपोनेंट के साथ रैप करना होगा।हमेशा
react-native-intlayerसे import करें। इसकाIntlayerProviderIntlayer द्वारा उपयोग की जाने वाली web API के लिए polyfills शामिल करता है, और यह पैकेजreact-intlayerसे सभी hooks और utilities को re-export करता है।इसके अलावा, आपको यह सुनिश्चित करने के लिए कि Intlayer सही ढंग से काम कर सके, अपने
index.jsफ़ाइल मेंintlayerPolyfillफ़ंक्शन जोड़ना होगा।app/_layout.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
import { Stack } from "expo-router"; import { getLocales } from "expo-localization"; import { IntlayerProvider } from "react-native-intlayer"; import { type FC } from "react"; const getDeviceLocale = () => getLocales()[0]?.languageTag; const RootLayout: FC = () => { return ( <IntlayerProvider defaultLocale={getDeviceLocale()}> <Stack> <Stack.Screen name="(tabs)" options={{ headerShown: false }} /> </Stack> </IntlayerProvider> ); }; export default RootLayout;अपनी सामग्री घोषित करें
प्रोजेक्ट में कहीं भी content declaration फाइलें बनाएं (आमतौर पर
src/के अंदर), Intlayer द्वारा समर्थित किसी भी एक्सटेंशन फॉर्मेट का उपयोग करते हुए:.content.json.content.jsonc.content.json5.content.ts.content.tsx.content.js.content.jsx.content.mjs.content.mjx.content.cjs.content.md.content.mdx.content.yaml.content.yml- आदि।
Expo Router (वेब):
.content.*फ़ाइलों कोapp/डायरेक्टरी से बाहर रखें। Expo Routerapp/के अंदर मौजूद हर JavaScript/TypeScript फ़ाइल को एक रूट मानता है। वेब पर, इसकी रूट खोज फ़ाइल सिस्टम को सीधे स्कैन करती है और Metro केresolver.blockListका सम्मान नहीं करती है, इसलिए एक सह-स्थित*.content.tsरूट के रूप में पंजीकृत हो जाता है।app/(tabs)/_layout.content.tsजैसी फ़ाइल को लेआउट के रूप में भी पार्स किया जाता है (.contentभाग को प्लेटफ़ॉर्म प्रत्यय के रूप में पढ़ा जाता है), जो वास्तविक_layout.tsxके साथ टकराता है और यह त्रुटि देता है:plaintextकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
The layouts "./(tabs)/_layout.content.ts" and "./(tabs)/_layout.tsx" conflict on the route "/(tabs)/_layout.content". Remove or rename one of these files.अपनी घोषणाओं को
app/के बाहर किसी डायरेक्टरी में रखें (उदाहरण के लिएcontent/याsrc/content/)। Intlayer प्रोजेक्ट में कहीं भी.content.*फ़ाइलों की खोज करता है और शब्दकोशों को उनकीkeyद्वारा संदर्भित किया जाता है, इसलिए कोई आयात परिवर्तन आवश्यक नहीं है। नेटिव पर इसकी आवश्यकता नहीं है (Metro काblockListपहले से ही उन्हें छुपाता है), लेकिन गैर-app/डायरेक्टरी का उपयोग करने से दोनों प्लेटफ़ॉर्म काम करते रहते हैं।उदाहरण (React Native के लिए TSX नोड्स के साथ TypeScript):
src/app.content.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
import { t, type Dictionary } from "intlayer"; import type { ReactNode } from "react"; /** * हमारे "app" डोमेन के लिए कंटेंट शब्दकोश */ import { t, type Dictionary } from "intlayer"; const homeScreenContent = { key: "home-screen", content: { title: t({ en: "Welcome!", fr: "Bienvenue!", es: "¡Bienvenido!", }), }, } satisfies Dictionary; export default homeScreenContent;सामग्री घोषणाओं के विवरण के लिए, देखें Intlayer की सामग्री दस्तावेज़।
अपने घटकों में Intlayer का उपयोग करें
स्थानीयकृत सामग्री प्राप्त करने के लिए चाइल्ड कॉम्पोनेंट्स में
useIntlayerहुक का उपयोग करें।उदाहरण
app/(tabs)/index.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
import { Image, StyleSheet, Platform } from "react-native"; import { useIntlayer } from "react-native-intlayer"; import { HelloWave } from "@/components/HelloWave"; import ParallaxScrollView from "@/components/ParallaxScrollView"; import { ThemedText } from "@/components/ThemedText"; import { ThemedView } from "@/components/ThemedView"; import { type FC } from "react"; const HomeScreen = (): FC => { const { title, steps } = useIntlayer("home-screen"); return ( <ParallaxScrollView headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }} headerImage={ <Image source={require("@/assets/images/partial-react-logo.png")} style={styles.reactLogo} /> } > <ThemedView style={styles.titleContainer}> <ThemedText type="title">{title}</ThemedText> <HelloWave /> </ThemedView> </ParallaxScrollView> ); }; const styles = StyleSheet.create({ titleContainer: { flexDirection: "row", alignItems: "center", gap: 8, }, }); export default HomeScreen;जब आप
content.someKeyका उपयोग स्ट्रिंग-आधारित प्रॉप्स में करते हैं (जैसे, किसी बटन केtitleयाTextकंपोनेंट केchildrenमें), तो वास्तविक स्ट्रिंग प्राप्त करने के लिएcontent.someKey.valueकॉल करें।यदि आपका ऐप पहले से मौजूद है, तो आप हजारों घटकों को एक सेकंड में बदलने के लिए Intlayer कंपाइलर को एक्सट्रैक्ट कमांड के साथ उपयोग कर सकते हैं।
ऐप का लोकल बदलें
वैकल्पिकअपने कंपोनेंट्स के भीतर से लोकल बदलने के लिए, आप
useLocaleहुक केsetLocaleमेथड का उपयोग कर सकते हैं:src/components/LocaleSwitcher.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
import { type FC } from "react"; import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; import { getLocaleName } from "intlayer"; import { useLocale } from "react-native-intlayer"; export const LocaleSwitcher: FC = () => { const { setLocale, availableLocales } = useLocale(); return ( <View style={styles.container}> {availableLocales.map((locale) => ( <TouchableOpacity key={locale} style={styles.button} onPress={() => setLocale(locale)} > <Text style={styles.text}>{getLocaleName(locale)}</Text> </TouchableOpacity> ))} </View> ); }; const styles = StyleSheet.create({ container: { flexDirection: "row", justifyContent: "center", alignItems: "center", gap: 8, }, button: { paddingVertical: 6, paddingHorizontal: 12, borderRadius: 6, backgroundColor: "#ddd", }, text: { fontSize: 14, fontWeight: "500", color: "#333", }, });यह उन सभी कंपोनेंट्स को पुनः रेंडर करता है जो Intlayer सामग्री का उपयोग करते हैं, अब नए लोकल के लिए अनुवाद दिखाते हुए।
अधिक जानकारी के लिए
useLocaleदस्तावेज़ देखें।
TypeScript कॉन्फ़िगर करें (यदि आप TypeScript का उपयोग करते हैं)
Intlayer ऑटोकम्प्लीशन को बेहतर बनाने और अनुवाद त्रुटियों को पकड़ने के लिए एक छिपे हुए फ़ोल्डर (डिफ़ॉल्ट रूप से .intlayer) में टाइप परिभाषाएँ उत्पन्न करता है:
कोड को क्लिपबोर्ड पर कॉपी करें
// tsconfig.json{ // ... आपका मौजूदा TS कॉन्फ़िग "include": [ "src", // आपका स्रोत कोड ".intlayer/types/**/*.ts", // <-- सुनिश्चित करें कि स्वचालित रूप से उत्पन्न प्रकार शामिल हैं // ... जो कुछ भी आप पहले से शामिल करते हैं ],}यह निम्नलिखित सुविधाओं को सक्षम करता है:
- ऑटोकम्प्लीशन आपके शब्दकोश की कुंजियों के लिए।
- टाइप जांच जो चेतावनी देता है यदि आप किसी अस्तित्वहीन कुंजी तक पहुँचते हैं या प्रकार मेल नहीं खाते हैं।
गिट कॉन्फ़िगरेशन
Intlayer द्वारा स्वचालित रूप से उत्पन्न फ़ाइलों को कमिट करने से बचने के लिए, अपनी .gitignore में निम्नलिखित जोड़ें:
कोड को क्लिपबोर्ड पर कॉपी करें
# Intlayer द्वारा उत्पन्न फ़ाइलों को अनदेखा करें.intlayerVS कोड एक्सटेंशन
Intlayer के साथ अपने विकास अनुभव को बेहतर बनाने के लिए, आप आधिकारिक Intlayer VS Code एक्सटेंशन इंस्टॉल कर सकते हैं।
VS कोड मार्केटप्लेस से इंस्टॉल करें
यह एक्सटेंशन प्रदान करता है:
- अनुवाद कुंजियों के लिए ऑटोकम्प्लीशन।
- गायब अनुवादों के लिए रीयल-टाइम त्रुटि पहचान।
- अनुवादित सामग्री के इनलाइन पूर्वावलोकन।
- अनुवादों को आसानी से बनाने और अपडेट करने के लिए त्वरित क्रियाएं।
एक्सटेंशन का उपयोग कैसे करें, इसके लिए अधिक जानकारी के लिए देखें Intlayer VS कोड एक्सटेंशन दस्तावेज़।
आगे बढ़ें
- विज़ुअल एडिटर: अनुवादों को दृश्य रूप से प्रबंधित करने के लिए Intlayer विज़ुअल एडिटर का उपयोग करें।
- CMS एकीकरण: आप अपने शब्दकोश की सामग्री को एक CMS से बाहरी रूप से प्रबंधित और प्राप्त भी कर सकते हैं।
- CLI कमांड्स: ऐसे कार्यों के लिए Intlayer CLI का अन्वेषण करें जैसे अनुवाद निकालना या गुम हुए कुंजियों की जांच करना।
Intlayer के माध्यम से पूरी तरह से सशक्त i18n के साथ अपने React Native ऐप्स का निर्माण करें!
Debug
React Native, React Web की तुलना में कम स्थिर हो सकता है, इसलिए version alignment पर अतिरिक्त ध्यान दें।
Intlayer मुख्य रूप से Web Intl API को target करता है; React Native पर आपको appropriate polyfills शामिल करने होंगे।
Checklist:
intlayerऔरreact-native-intlayerके नवीनतम versions का उपयोग करें।- Intlayer polyfill को enable करें।
- यदि आप
getLocaleNameया अन्य Intl-API-based utilities का उपयोग करते हैं, तो इन polyfills को जल्दी import करें (उदाहरण के लिएindex.jsयाApp.tsxमें):
कोड को क्लिपबोर्ड पर कॉपी करें
import "intl";import "@formatjs/intl-getcanonicallocales/polyfill";import "@formatjs/intl-locale/polyfill";import "@formatjs/intl-pluralrules/polyfill";import "@formatjs/intl-displaynames/polyfill";import "@formatjs/intl-listformat/polyfill";import "@formatjs/intl-numberformat/polyfill";import "@formatjs/intl-relativetimeformat/polyfill";import "@formatjs/intl-datetimeformat/polyfill";- यदि modules resolve करने में विफल हों तो अपने Metro configuration (resolver aliases, asset plugins,
tsconfigpaths) को verify करें।