TacoTranslate
/
ஆவணங்கள்விலை நிர்ணயம்
 
பயிற்சி
மே 04

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 கோப்பிலிருந்து கூட சேர்க்கலாம்.

.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 போன்றது. இருப்பிடங்கள் பற்றி மேலும் இங்கே படியுங்கள்.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

படி 3: TacoTranslate அமைத்தல்

To integrate TacoTranslate with your application, you’ll need to create a client using the API keys from earlier. For example, create a file named /tacotranslate-client.js.

/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 வழங்குநரை உருவாக்க உள்ளோம்.

/app/[locale]/tacotranslate.tsx
'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] என்பது டைனமிக் பண்புரிமை ஆகும்.

/app/[locale]/layout.tsx
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 என்ற கோப்பை உருவாக்கவும்.

/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 கோப்பை உருவாக்க அல்லது திருத்தவும்:

/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 பயன்படுத்தி, பயனர்களை அவர்கள் விரும்பும் மொழியில் வழங்கப்படும் பக்கங்களுக்கு முறையை மாற்றலாம்.

/middleware.ts
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);
}

matcherNext.js Middleware ஆவணத்திற்கு ஏற்ப அமைக்க உறுதிப்படுத்தவும்.

கிளையண்டில், locale குக்கீயை மாற்றி பயனரின் விருப்பமான மொழியை மாற்றலாம். இதை எவ்வாறு செய்வது என்பதற்கான யோசனைகளுக்கு முழுமையான எடுத்துக்காட்டு குறியீட்டை காணவும்!

படி 5: ப்ரதிபலித்து சோதனை செய்க!

நாம் முடிந்துவிட்டோம்! நீங்கள் எந்தச் சொல்லுணைகளையாவது Translate கூறிக்குள் சேர்க்கும் பொழுது உங்கள் React பயன்பாடு தானாகவே மொழிபெயர்ப்பாகப்படும். API விசையில் read/write அனுமதிகள் கொண்ட சூழல்கள் மட்டுமே புதிய சொல்லுணைகளை உருவாக்கி மொழிபெயர்க்கக்கூடியவை என்பதை கவனத்தில் கொள்ளுங்கள். அணைத்துவிடப்பட்ட மற்றும் பாதுகாக்கப்பட்ட ஒரு மேடை சூழலைக் கொண்டிருக்க பரிந்துரைக்கிறோம், அங்கு நீங்கள் உங்கள் தயாரிப்பு பயன்பாட்டை அத்தகைய API விசையுடன் சோதனை செய்யலாம், உயிரோட்டமாக வெளியிடுவதற்கு முன் புதிய சொல்லுணைகளைச் சேர்க்கலாம். இதனால் யாரும் உங்கள் ரகசிய API விசையை திருட வேண்டாம், மேலும் புதிய, தொடர்பில்லாத சொல்லுணைகள் சேர்க்கப்படுவதால் உங்கள் மொழிபெயர்ப்பு திட்டம் பெரிதாகி உருவாகும் அபாயத்தையும் தடுக்கும்.

நிச்சயமாக எங்கள் GitHub پروஃபைலில் உள்ள முழுமையான எடுத்துக்காட்டை பார்வையிடவும். அங்கே, நீங்கள் Pages Router பயன்படுத்தி இதை எப்படி செய்வது என்பதற்கான எடுத்துக்காட்டையும் காணலாம்! ஏதேனும் பிரச்சனைகள் தோன்றினால், தயவுசெய்து தொடர்பு கொள்ள தயங்க வேண்டாம், உங்களுக்கு உதவ மிகவும் மகிழ்ச்சியாக இருக்கும்.

TacoTranslate உதவியுடன், உங்கள் React விண்ணப்பங்களைக் கைவிட்டு எந்த மொழியிலிருந்தும் தானாகவே விரைவாகத் துவக்கவும் முடியும். இன்று துவங்குங்கள்!

Nattskiftet வழங்கிய ஒரு தயாரிப்பு