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 ఫైళ్ల మందమైన నిర్వహణ నుండి మిమ్మల్ని విముక్తి చేస్తుంది.
ద్వారా మీరు మీ టెర్మినల్లో npm ఉపయోగించి దీన్ని ఇన్స్టాల్ చేద్దాం:
npm install tacotranslate
స్టెప్ 2: ఉచిత TacoTranslate ఖాతాను సృష్టించండి
మీరు ఇప్పుడు మాడ్యూల్ను ఇన్స్టాల్ చేసుకొన్నాక, మీ TacoTranslate ఖాతా, ఒక అనువాద ప్రాజెక్టు మరియు సంబంధిత API కీలు సృష్టించుకునే సమయం ఇది. ఇక్కడ ఖాతా సృష్టించండి. ఇది ఉచితం, మరియు క్రెడిట్ కార్డ్ జోడించాల్సిన అవసరం లేదు.
TacoTranslate అనువర్తనం UI లో, ఒక ప్రాజెక్ట్ సృష్టించండి, మరియు దాని API keys ట్యాబ్ కు లేవుట చేయండి. ఒక 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
దశ 3: 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!" />
);
}
60 సెకన్ల తర్వాత పేజీని తిరిగి నిర్మించమని మరియు మీ అనువాదాలను తాజా గా ఉంచమని Next.js కు తెలియజేసే revalidate
వేరియబుల్ ను గమనించండి.
పదవి 4: సర్వర్ సైడ్ రెండరింగ్ను అమలు చేయడం
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 డాక్యుమెంటేషన్ ప్రకారం సరిగా సెటప్ చేసుకోవడాన్ని నిర్ధారించుకోండి.
క్లయెంట్ పక్కన, మీరు locale
కుకీని మార్చి వాడుకరి ఇష్టపడే భాషను మార్చవచ్చు. ఈ విషయం తెలుసుకోవడానికి సంపూర్ణ ఉదాహరణ కోడ్ను చూడండి!
దశ 5: డిప్లాయ్ చేసి పరీక్షించండి!
మేము పూర్తయ్యాం! మీరు Translate
కంపోనెంట్లో ఏమైనా స్ట్రింగ్స్ను జోడించినప్పుడు మీ React అప్లికేషన్ స్వయంచాలకంగా అనువదించబడుతుంది. API కీపై read/write
అనుమతులు ఉన్నప్పుడు మాత్రమే కొత్త స్ట్రింగ్స్ను అనువదించేందుకు సృష్టించగలరు అని గమనించండి. మీరు లైవ్ వెళ్లేముందు కొత్త స్ట్రింగ్స్ను జోడిస్తూ మీ ప్రొడక్షన్ అప్లికేషన్ను అటువంటి API కీతో పరీక్షించుకునే మూసి మరియు సురక్షితమైన స్టేజింగ్ పర్యావరణాన్ని కలిగి ఉండాలని మేము సలహా ఇస్తున్నాము. ఇది ఎవరు మీ రహస్య API కీని దొంగిలించకుండా నిరోధిస్తుంది మరియు కొత్త, సంబందం లేని స్ట్రింగ్స్ జోడించడం వలన మీ అనువాద ప్రాజెక్ట్ను వృద్ధి చెందటం కూడా దూరం చేస్తుంది.
మా GitHub ప్రొఫైల్లో పూర్తి ఉదాహరణను పరిశీలించండి. అక్కడ, మీరు Pages Router ఉపయోగించి దీన్ని ఎలా చేయాలో కూడా ఒక ఉదాహరణ కనుగొంటారు! మీరు ఎలాంటి సమస్యలు ఎదుర్కొంటే, సంకోచించకండి మమ్మల్ని సంప్రదించండి, మేము సహాయం చేయడానికి ఆనందంగా ఉన్నాము.
TacoTranslate మీ React అనువర్తనాలను ఏ భాషను అయినా త్వరగా ఆటోమిటిక్గా లోకలైజ్ చేయడానికి సులభతరంగా చేస్తుంది. ఈరోజే మొదలు పెట్టండి!