TacoTranslate
/
ഡോക്യുമെന്റേഷൻവിലനിര്‍ണ്ണയം
 
ട്യൂട്ടോറിയൽ
മേയ് 04

Next.js അപ്ലിക്കേഷനിൽ, App Router ഉപയോഗിച്ചു കൊണ്ടുള്ള അർഥവത്താക്കൽ എങ്ങനെ നടപ്പിലാക്കാം

നിങ്ങളുടെ 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 കീസ് ടാബിലേക്കു പോകുക. ഒരു 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 സജ്ജമാക്കൽ

TacoTranslate-നെ നിങ്ങളുടെ അപ്ലിക്കേഷനോടൊപ്പം ഇന്റഗ്രേറ്റ് ചെയ്യാൻ, മുൻപ് ലഭിച്ച API കീകൾ ഉപയോഗിച്ച് ഒരു ക്ലയന്റ് സൃഷ്ടിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, /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 ഒന്ന് യൂട്ടിലിറ്റി ഫംഗ്ഷനാണ്, അതിൽ ചില ബിൽറ്റ്-ഇൻ എറർ ഹാൻഡ്ലിങ്ങും vardır. ഇപ്പോൾ, /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 സർവർ സൈഡ് റെൻഡറിംഗിനെ പിന്തുണയ്ക്കുന്നു. ഇത് അസാധാരണമായി ഉപയോക്തൃ അനുഭവം മെച്ചപ്പെടുത്തുന്നു, ആദ്യം ഭാഷാന്തരമാക്കാത്ത ഉള്ളടക്കത്തിന്റെ മിന്നലിനു പകരം, ഉടനെ തന്നെ പരിഭാഷയാക്കിയ ഉള്ളടക്കം പ്രദർശിപ്പിക്കുന്നതാണ്. കൂടാതെ, ഉപയോക്താവ് കാണുന്ന പേജിന് ആവശ്യമായ പരിഭാഷകൾ നമുക്ക് ഇതിനകം ലഭ്യമ olduğതിനാൽ, ക്ലയന്റിൽ നെറ്റ്‌വർക്ക് അഭ്യർത്ഥനകൾ ഒഴിവാക്കാൻ കഴിയും.

സർവർ സൈഡ് റെൻഡറിംഗ് സജ്ജമാക്കാൻ, /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);
}

നിങ്ങളുടെ matcher നു Next.js Middleware documentation-നുസരിച്ച് ക്രമീകരണം ഉറപ്പാക്കുക. Next.js Middleware documentation.

ക്ലയന്റിൽ, ഉപയോക്താവിന്റെ ഇഷ്ടഭാഷ എന്താണെന്ന് മാറ്റാൻ locale കുക്കി മാറ്റാൻ കഴിയും. ഇത് ചെയ്യുന്നതിന് ആശയങ്ങൾക്കായി പൂർണ്ണ ഉദാഹരണ കോഡ് കാണുക!

പടി 5: ഡിപ്ലോയ് ചെയ്ത് ടെസ്റ്റ് ചെയ്യുക!

നമുക്ക് കഴിഞ്ഞു! നിങ്ങൾ ഏതെങ്കിലും സ്ട്രിങുകൾ Translate കംപോണന്റിലേക്ക് ചേർക്കുമ്പോളൊക്കെ നിങ്ങളുടെ React ആപ്പ്ലിക്കേഷൻ ഇപ്പോൾ സ്വയമേവ വിവർത്തനം ചെയ്യും. API കീയിൽ read/write അനുമതികളുള്ള പരിസരങ്ങൾ മാത്രമേ പുതിയ വിവർത്തനം ചെയ്യാനുള്ള സ്ട്രിങ്‌സ് സൃഷ്ടിക്കാൻ കഴിയൂ എന്ന കാര്യം ശ്രദ്ധിക്കുക. ഇങ്ങനെ പ്രവർത്തിക്കുന്ന ഒരു അടച്ചും സുരക്ഷിതമായ സ്റ്റേജിംഗ് പരിസരം ഉണ്ടായിരിക്കണമെന്ന് ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു, അവിടെ നിങ്ങൾ നിങ്ങളുടെ പ്രൊഡക്ഷൻ ആപ്പ്ലിക്കേഷൻ ഒരു API കീ ഉപയോഗിച്ച് പരീക്ഷിച്ച്, ലൈവിൽ പോവുന്നതിന് മുമ്പ് പുതിയ സ്ട്രിങ്‌സ് ചേർത്താൽ ഉത്തമം. ഇത് നിങ്ങളുടെ രഹസ്യ API കീ കവർന്നെടുക്കുന്നതിൽ നിന്ന് ആരെയും തടയുകയും, അനവധി ബന്ധപ്പെട്ടിട്ടില്ലാത്ത പുതിയ സ്ട്രിങ്‌സ് ചേർത്ത് നിങ്ങളുടെ വിവർത്തന പ്രോജക്റ്റ് അനാവശ്യമായി വലുതാകുന്നത് തടയുകയും ചെയ്യും.

നിങ്ങളുടെ GitHub പ്രൊഫൈലില്‍ പൂർണ്ണ ഉദാഹരണം പരിശോദിക്കാൻ ഇവിടെ ക്ലിക്ക് ചെയ്യുക. അവിടെ, Pages Router ഉപയോഗിച്ച് ഇത് എങ്ങനെ ചെയ്യാമെന്ന് ഒരു ഉദാഹരണവും നിങ്ങൾക്ക് കണ്ടെത്താം! നിങ്ങൾക്ക് എന്തെങ്കിലും പ്രശ്നങ്ങൾ ഉണ്ടെങ്കിൽ, മടിക്കാതെ ബന്ധപ്പെടുക, ഞങ്ങൾ സഹായിക്കാൻ ഏറെ സന്നദ്ധരാണ്.

TacoTranslate ന്റെ സഹായത്തോടെ നിങ്ങളുടെ React ആപ്ലിക്കേഷനുകൾ ഏത് ഭാഷയിലും അതിവേഗം സ്വയം ലൊക്കലൈസ് ചെയ്യാം. ഇന്ന് തന്നെ ആരംഭിക്കൂ!

Nattskiftet ൽ നിന്നുള്ള ഒരു ഉൽപ്പന്നംനോർവേയിൽ നിർമ്മിച്ചത്