App Router ஐ பயன்படுத்தும் Next.js பயன்பாட்டில் பன்னாட்டு மொழி ஒருங்கிணைப்பை எப்படி அமல்படுத்துவது
உங்கள் React பயன்பாட்டை மேலும் அணுகுமுறைமிக்கதாக மாற்றி, சர்வதேசீકરણம் (i18n) மூலம் புதிய சந்தைகளுக்கு পৌঁறுங்கள்.
உலகம் மேலும் உலகளாவியமாக மாறும் போது, வலை முகாமையாளர்களுக்கு பல்வேறு நாடுகள் மற்றும் பண்பாட்டினரின் தேவைகளை பூர்த்தி செய்யக்கூடிய செயலிகளை உருவாக்குவது அவசியமாகிறது. இதை சாதிக்க முக்கியமான வழிகளில் ஒன்று என்னவெனில், உங்கள் செயலியை பல்வேறு மொழிகள், நாணயங்கள் மற்றும் தேதி வடிவங்கள் ஆகியவற்றுக்கு ஏற்ப மாற்ற உதவுகின்ற சர்வதேசம் (i18n) ஆகும்.
இந்த கட்டுரையில், உங்கள் React Next.js செயலியுடன் சர்வர் பக்கம் ரெண்டரிங் கொண்டு சர்வதேசத்தை எவ்வாறு சேர்க்கலாம் என்பதைக் காண்போம். TL;DR: முழு உதாரணத்தை இங்கே காண்க.
இந்த கையேடு App Router பயன்படுத்தும் Next.js பயன்பாடுகளுக்கானது.
நீங்கள் Pages Router பயன்படுத்தினால், பதிலாக இந்தக் கையேடைக் காணவும்.
படி 1: ஒரு i18n நூலகத்தை நிறுவுக
உங்கள் Next.js பயன்பாட்டில் சர்வதேசமயம்செய்தல் (internationalization) ஐ நடைமுறைப்படுத்த, முதலில் நாங்கள் ஒரு i18n நூலகம் தேர்ந்தெடுப்போம். பல பிரபல நூலகங்கள் உள்ளன, அதில் next-intl உட்பட. ஆனால் இந்த உதாரணத்தில், நாங்கள் TacoTranslate ஐப் பயன்படுத்துவதாக இருக்கும்.
TacoTranslate உங்கள் ஸ்டிரிங்களை நவீன AI மூலம் எந்த மொழியிலும் தானாக மொழிபெயர்க்கிறது, மற்றும் JSON கோப்புகளின் சோர்வான நிர்வகிப்பிலிருந்து உங்களை விடுவிக்கிறது.
இதை உங்கள் டெர்மினலில் npm மூலம் நிறுவுவோம்:
npm install tacotranslate
படிநிலை 2: இலவசமான TacoTranslate கணக்கை உருவாக்குக
இப்போது நீங்கள் மொடியூலை நிறுவியுள்ளீர்கள், உங்கள் TacoTranslate கணக்கை, ஒரு மொழிபெயர்ப்பு திட்டத்தை மற்றும் தொடர்புடைய API விசைகள் உருவாக்கும் நேரம் வந்துவிட்டது. இங்கே ஒரு கணக்கு உருவாக்கவும். இது இலவசம் மற்றும் கிரெடிட் கார்டு சேர்க்க தேவையில்லை.
TacoTranslate பயன்பாட்டின் UI-ல், ஒரு திட்டத்தை உருவாக்கி அதன் API விசைகள் தாவலை நேவிகேட் செய்யவும். ஒரு read
விசையையும் ஒரு read/write
விசையையும் உருவாக்கவும். அவைகளை சுற்றுச்சூழல் மாறில்களாகச் சேமிப்போம். read
விசை எங்களைப் போல public
என அழைக்கப்படுகிறது, மற்றும் read/write
விசை secret
ஆகும். எடுத்துக்காட்டாக, அவைகளை உங்கள் திட்டத்தின் ரூட் அடைவிலுள்ள .env
கோப்பில் சேர்க்கலாம்.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
கிளையன்ட் சைட் புரொடக்ஷன் சூழல்களுக்கு இரகசியமான read/write
API விசையைக் கசிவதற்கேடில்லை என்பதை உறுதி செய்க.
நாங்கள் மேலும் இரண்டு சூழல் மாறிலிகளையும் சேர்க்கப் போகின்றோம்: TACOTRANSLATE_DEFAULT_LOCALE
மற்றும் TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: இயல்புநிலை பின்னின.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
என்பது சில உள்ளமைக்கப்பட்ட பிழை கையாளல்களை கொண்ட ஒரு பயன்பாட்டு (utility) செயல்பாடு மட்டுமே. இப்போது, /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';
இது ஒரு கிளையண்ட் கூறு என்று குறிப்பிடுகிறது என்பதை கவனிக்கவும்.
Context provider இப்போது தயாராகியுள்ளது, அதனால் /app/[locale]/layout.tsx
எனும் கோப்பை உருவாக்குங்கள், இது நமது பயன்பாட்டில் மூலமாக அமைந்துள்ளது. இந்த பாதையில் Dynamic Routes பயன்படுத்தும் கோப்புறை உள்ளதைக் குறிப்பிட்டுக் கொள்ளுங்கள், இதில் [locale]
என்பது dynamic பராமெட்டராகும்.
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 வினாடிகள் கழித்து மறுபடியும் கட்டவும், உங்கள் மொழிபெயர்ப்புகளை புதுப்பிக்கவும் சொல்லுகிறது.
படி 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 மிடில்வேர் ஆவணங்களின்படி அமைக்க வேண்டியதை உறுதி செய்யுங்கள்.
கிளையண்டில், நீங்கள் locale
குக்கியை மாற்றி பயனரின் முன்னுரிமை மொழியை மாற்றலாம். இப்படிப்பட்டதிருப்பதற்கான யோசனைகளுக்காக முழு எடுத்துக்காட்டு குறியீட்டை பார்க்கவும்!
படி 5: இடைநிறுத்தி சோதனை செய்க!
நாம் முடிந்துவிட்டோம்! உங்கள் React பயன்பாடு இப்போது எந்தவொரு ஸ்டிரிங்க்களையும் Translate
காம்பொனென்ட்டுக்கு சேர்த்தவுடன் தானாக மொழிபெயர்க்கப்படும். API விசையில் read/write
அனுமதிகள் உள்ள சூழல்கள் மட்டுமே புதிய ஸ்டிரிங்க்களை மொழிபெயர்க்க உருவாக்க முடியும் என்பதைக் கவனikkவும். உங்கள் உற்பத்தி பயன்பாட்டைப் பரிசோதிக்க, அதன் முன்னர் புதிய ஸ்டிரிங்க்களைச் சேர்க்க—aபடி பாதுகாப்பான மற்றும் மூடப்பட்ட ஸ்டேஜிங் சூழலை வைத்திருக்க பரிந்துரைக்கிறோம். இது யாரும் உங்கள் இரகசிய 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!