App Router वापरणाऱ्या Next.js अॅप्लिकेशनमध्ये आंतरराष्ट्रीयीकरण कसे अंमलात आणावे
तुमचे React अॅप्लिकेशन अधिक प्रवेशयोग्य करा आणि आंतरराष्ट्रीयीकरण (i18n) सोबत नवीन बाजारपेठांपर्यंत पोहोचा.
जसं जग अधिक जागतिक बनत आहे, तसं वेब विकसकांसाठी विविध देशांतील आणि संस्कृतींतील वापरकर्त्यांसाठी योग्य अनुप्रयोग तयार करणे अधिक महत्त्वाचे होत आहे. यासाठी एक महत्त्वाचा मार्ग म्हणजे आंतरराष्ट्रीयीकरण (i18n), ज्यामुळे तुम्ही तुमचा अनुप्रयोग वेगवेगळ्या भाषा, चलने, आणि तारीख स्वरूपात सानुकूलित करू शकता.
या लेखात, आपण तुमच्या React Next.js अनुप्रयोगात आंतरराष्ट्रीयीकरण कसे जोडायचे ते सर्व्हर साइड रेंडरिंगसह पाहणार आहोत. TL;DR: संपूर्ण उदाहरण येथे पहा.
हा मार्गदर्शक App Router वापरणाऱ्या Next.js अनुप्रयोगांसाठी आहे.
जर आपण Pages Router वापरत असाल, तर त्याऐवजी हा मार्गदर्शक पहा.
पायरी 1: i18n लायब्ररी इन्स्टॉल करा
आपल्या Next.js अनुप्रयोगात आंतरराष्ट्रीयीकरण लागू करण्यासाठी, आपण सर्वप्रथम एक i18n लायब्ररी निवडू. काही लोकप्रिय लायब्ररी आहेत, ज्यामध्ये next-intl समाविष्ट आहे. परंतु, या उदाहरणात आपण TacoTranslate वापरणार आहोत.
TacoTranslate अत्याधुनिक AI वापरून आपले स्ट्रिंग कोणत्याही भाषेत स्वयंचलितपणे भाषांतरित करते आणि JSON फाइल्सच्या tedious व्यवस्थापनापासून आपल्याला मुक्त करते.
चला, आपल्या टर्मिनलमध्ये npm वापरून ते इन्स्टॉल करूया:
npm install tacotranslate
पाऊल २: एक मोफत TacoTranslate खाते तयार करा
आता जेव्हा तुम्ही मॉड्यूल इंस्टॉल केले आहे, तेव्हा तुमचे TacoTranslate खाते, एक अनुवाद प्रकल्प आणि संबंधित API की तयार करण्याची वेळ आली आहे. इथे खाते तयार करा. हे मोफत आहे, आणि यासाठी तुम्हाला क्रेडिट कार्ड जोडण्याची गरज नाही.
TacoTranslate अॅप्लिकेशन UI मध्ये, एक प्रोजेक्ट तयार करा आणि त्याच्या API कीज टॅबकडे जा. एक read
की तयार करा आणि एक read/write
की तयार करा. आम्ही त्यांना पर्यावरणीय चल (environment variables) म्हणून जतन करू. read
कीला आपण public
म्हणतो आणि read/write
की ही secret
असते. उदाहरणार्थ, तुम्ही त्यांना तुमच्या प्रोजेक्टच्या मूळ फोल्डरमधील .env
फाईलमध्ये जोडू शकता.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
खात्री करा की तुम्ही कधीही गुपित read/write
API की क्लायंट साइड उत्पादन वातावरणात लीक करू नका.
आम्ही आणखी दोन वातावरणातील चल किवा environment variables जोडणार आहोत: TACOTRANSLATE_DEFAULT_LOCALE
आणि TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: डीफॉल्ट फॉलबॅक लोकेल कोड. या उदाहरणात, आपण ते इंग्रजीसाठीen
म्हणून सेट करू.TACOTRANSLATE_ORIGIN
: "फोल्डर" जिथे तुमच्या स्ट्रिंग्ज संग्रहित केल्या जातील, जसे की तुमच्या वेबसाइटचा URL. येथे ओरिजिनबद्दल अधिक वाचा.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
पायरी ३: TacoTranslate सेट करणे
तुमच्या अर्जासोबत TacoTranslate एकत्रित करण्यासाठी, तुम्हाला आधीच्या API कीज वापरून क्लायंट तयार करावा लागेल. उदाहरणार्थ, /tacotranslate-client.js
नावाचा फाइल तयार करा.
const {default: createTacoTranslateClient} = require('tacotranslate');
const tacoTranslate = createTacoTranslateClient({
apiKey:
process.env.TACOTRANSLATE_SECRET_API_KEY ??
process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
process.env.TACOTRANSLATE_API_KEY,
projectLocale:
process.env.TACOTRANSLATE_IS_PRODUCTION === 'true'
? process.env.TACOTRANSLATE_PROJECT_LOCALE
: undefined,
});
module.exports = tacoTranslate;
आम्ही लवकरच आपोआप TACOTRANSLATE_API_KEY
आणि TACOTRANSLATE_PROJECT_LOCALE
निश्चित करणार आहोत.
क्लायंट वेगळ्या फाईलमध्ये तयार केल्याने नंतर पुन्हा वापरायला सोपे होते. getLocales
फक्त एक उपयुक्त फंक्शन आहे ज्यामध्ये काही अंगभूत त्रुटी हाताळणी आहे. आता, एक फाईल तयार करा ज्याचे नाव आहे /app/[locale]/tacotranslate.tsx
, ज्यात आपण TacoTranslate
प्रदाता अंमलात आणणार आहोत.
'use client';
import React, {type ReactNode} from 'react';
import {
type TranslationContextProperties,
TacoTranslate as ImportedTacoTranslate,
} from 'tacotranslate/react';
import tacoTranslateClient from '@/tacotranslate-client';
export default function TacoTranslate({
locale,
origin,
localizations,
children,
}: TranslationContextProperties & {
readonly children: ReactNode;
}) {
return (
<ImportedTacoTranslate
client={tacoTranslateClient}
locale={locale}
origin={origin}
localizations={localizations}
>
{children}
</ImportedTacoTranslate>
);
}
लक्षात घ्या 'use client';
, जे दर्शवते की हा एक क्लायंट कॉम्पोनेंट आहे.
संदर्भ प्रदाता आता तयार असल्यामुळे, आपल्या अनुप्रयोगातील मूळ लेआउटसाठी /app/[locale]/layout.tsx
नावाचा एक फाइल तयार करा. लक्षात घ्या की या मार्गात एक फोल्डर आहे जो Dynamic Routes वापरतो, जिथे [locale]
हा डायनॅमिक पॅरामीटर आहे.
import React, {type ReactNode} from 'react';
import {type Locale, isRightToLeftLocaleCode} from 'tacotranslate';
import './global.css';
import tacoTranslateClient from '@/tacotranslate-client';
import TacoTranslate from './tacotranslate';
export async function generateStaticParams() {
const locales = await tacoTranslateClient.getLocales();
return locales.map((locale) => ({locale}));
}
type RootLayoutParameters = {
readonly params: Promise<{locale: Locale}>;
readonly children: ReactNode;
};
export default async function RootLayout({params, children}: RootLayoutParameters) {
const {locale} = await params;
const origin = process.env.TACOTRANSLATE_ORIGIN;
const localizations = await tacoTranslateClient.getLocalizations({
locale,
origins: [origin /* , other origins to fetch */],
});
return (
<html lang={locale} dir={isRightToLeftLocaleCode(locale) ? 'rtl' : 'ltr'}>
<body>
<TacoTranslate
locale={locale}
origin={origin}
localizations={localizations}
>
{children}
</TacoTranslate>
</body>
</html>
);
}
इथे लक्ष देण्यासारखी पहिली गोष्ट म्हणजे आपण आमचा Dynamic Route
पॅरामीटर [locale]
त्या भाषेसाठी अनुवाद मिळवण्यासाठी वापरत आहोत. तसेच, generateStaticParams
हे तुमच्या प्रोजेक्टसाठी सक्रिय केलेले सर्व लोकेल कोड्स प्री-रेंडर होतात याची खात्री करत आहे.
आता, चला आपला पहिला पृष्ठ तयार करूया! /app/[locale]/page.tsx
नावाचा एक फाइल तयार करा.
import React from 'react';
import {Translate} from 'tacotranslate/react';
export const revalidate = 60;
export default async function Page() {
return (
<Translate string="Hello, world!" />
);
}
टीप करा revalidate
व्हेरिएबल ज्यामुळे Next.js ला पृष्ठ 60 सेकंदांनंतर पुन्हा तयार करण्यास सांगितले जाते, आणि तुमच्या भाषांतरांना अद्ययावत ठेवते.
पायरी ४: सर्व्हर साईड रेंडरिंगची अंमलबजावणी करणे
TacoTranslate सर्व्हर साइड रेंडरिंगला समर्थन देते. यामुळे वापरकर्त्याचा अनुभव अत्यंत सुधारतो कारण अनुवादित सामग्री लगेच दाखवली जाते, आणि आधी अनुवादित नसलेली सामग्री थोड्याच वेळासाठी दिसून येत नाही. याशिवाय, क्लायंटवर नेटवर्क विनंत्या टाळू शकतो, कारण आपण आधीच वापरकर्ता पाहत असलेल्या पृष्ठासाठी आवश्यक अनुवाद उपलब्ध आहेत.
सर्व्हर साईड रेंडरिंग सेट करण्यासाठी, /next.config.js
तयार करा किंवा सुधारणा करा:
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = await withTacoTranslate(
{},
{
client: tacoTranslateClient,
isProduction:
process.env.TACOTRANSLATE_ENV === 'production' ||
process.env.VERCEL_ENV === 'production' ||
(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
process.env.NODE_ENV === 'production'),
}
);
// NOTE: Remove i18n from config when using the app router
return {...config, i18n: undefined};
};
तुमच्या सेटअपनुसार isProduction
तपासणी सुधारित करा. जर true
असेल, तर TacoTranslate सार्वजनिक API की प्रदर्शित करेल. जर आपण स्थानिक, चाचणी किंवा स्टेजिंग वातावरणात असू (isProduction
is false
), तर नवीन स्ट्रिंग्ज भाषांतरासाठी पाठविण्यासाठी गुप्त read/write
API की वापरू.
राउटिंग आणि पुनर्निर्देशन अपेक्षित पद्धतीने कार्य करण्यासाठी, आपल्याला /middleware.ts
नावाचा एक फाईल तयार करावा लागेल. Middleware वापरून, आपण वापरकर्त्यांना त्यांच्या पसंतीच्या भाषेत सादर केलेल्या पृष्ठांवर पुनर्निर्देशित करू शकतो.
import {type NextRequest} from 'next/server';
import {middleware as tacoTranslateMiddleware} from 'tacotranslate/next';
import tacoTranslate from '@/tacotranslate-client';
export const config = {
matcher: ['/((?!api|_next|favicon.ico).*)'],
};
export async function middleware(request: NextRequest) {
return tacoTranslateMiddleware(tacoTranslate, request);
}
झाली करणे आवश्यक आहे की matcher
चालू ठेवताना Next.js Middleware documentation नुसार सेट केलेले आहे.
क्लायंटवर, तुम्ही locale
कुकीमध्ये बदल करू शकता जेणेकरून वापरकर्त्याची प्राधान्य दिलेली भाषा बदलता येईल. कृपया पूर्ण उदाहरण कोड पहा, कसे करायचे याबाबत कल्पना मिळवण्यासाठी!
पायरी 5: तैनात करा आणि चाचणी करा!
आम्ही पूर्ण केले! जेव्हा तुम्ही Translate
कॉम्पोनंटमध्ये कोणतेही स्ट्रिंग्स जोडाल तेव्हा तुमचे React अॅप्लिकेशन आता आपोआप भाषांतरित केले जाईल. लक्षात ठेवा की फक्त अशा वातावरणांना जेथे API कीसाठी read/write
परवानग्या आहेत, नवीन स्ट्रिंग्स तयार करण्याची परवानगी असेल. आम्ही शिफारस करतो की एक बंद आणि सुरक्षित staging वातावरण असावे जिथे तुम्ही तुमचे उत्पादन अॅप्लिकेशन अशाप्रकारे API कीसह चाचणी करू शकता, लाईव्ह होण्यापूर्वी नवीन स्ट्रिंग्स जोडत. यामुळे कोणालाही तुमची गुप्त API की चोरी करण्यापासून प्रतिबंध होईल आणि कदाचित तुम्हाला अनावश्यक, असंबंधित स्ट्रिंग्स जोडून तुमच्या भाषांतर प्रोजेक्टचा आकार वाढण्यापासून बचाव होईल.
Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the Pages Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.
TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!