App Router ஐ பயன்படுத்தும் Next.js செயலியில் பன்னாட்டு மொழியாக்கத்தை எப்படி செயல்படுத்துவது
உங்கள் React பயன்பாட்டை மேலும் அணுகக்கூடியதாக மாற்றி, சர்வதேசப்படுத்தல் (i18n) மூலம் புதிய சந்தைகளுக்கு எட்டுங்கள்.
உலகம் மேலும் உலகமயமாகி வருவதால், வெவ்வேறு நாடுகள் மற்றும் பண்பாடுகளிலிருந்து வரும் பயனாளர்களை கவனிக்கும் வகையில் செயலிகள் உருவாக்குவது வலை மேம்படுத்துநர்களுக்கு மிகவும் முக்கியமாகிறது. இதனை அடைவதற்கான முக்கிய வழிகளில் ஒன்றாக சர்வதேசமயத்தல் (internationalization (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 விசைகள் தாவிற்கு செல்லவும். ஒரு 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: தானாக கையாளப்படும் மாற்று மொழி குறியீடு. இந்த எடுத்துக்காட்டில், அதைen(ஆங்கிலம்) என்று அமைக்கிறோம்.TACOTRANSLATE_ORIGIN: உங்கள் ஸ்ட்ரிங்கள் சேமிக்கப்படும் "கோப்புறை", உதாரணமாக உங்கள் வலைத்தளத்தின் URL போன்றது. இங்கு origins பற்றி மேலும் படிக்கவும்.
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'; என்பதை கவனிக்கவும்.
context வழங்குநர் இப்போது தயாராக இருக்கும் நிலையில், எங்கள் பயன்பாட்டில் ரூட் லேஅவுட் ஆகும் /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!" />
);
}Next.js-க்கு பக்கத்தை 60 விநாடிகளுக்குப் பிறகு மீண்டும் கட்டமைக்க சொல்லி, உங்கள் மொழிபெயர்ப்புகளை புதுப்பிக்கப்பட்ட நிலையில் வைத்திருக்கும் என்பதை 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 விசையைப் பயன்படுத்துவோம்.
வழிமுறை (routing) மற்றும் மறுவழி சுட்டல்கள் (redirection) எதிர்பார்த்தபடி செயல்படுவதை உறுதிசெய்ய, /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: வெளியேற்றவும் மற்றும் சோதனை செய்யவும்!
முடிந்துவிட்டது! உங்கள் React பயன்பாடு இப்போது Translate கூறில் எந்த உரைகளையும் சேர்த்தவுடன் தானாக மொழிபெயர்க்கப்படும். குறிப்பு: API விசையில் read/write அனுமதிகள் உள்ள சூழ்நிலைகளில் மட்டுமே மொழிபெயரிக்க வேண்டிய புதிய உரைகளை உருவாக்க முடியும். இந்த மாதிரியான 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!