TacoTranslate
/
ලේඛනමිල
 
මාර්ගෝපදේශය
මැයි 04

Next.js යෙදුමක Pages Router භාවිතා කරන විට ජාත්‍යන්තරීකරණය (internationalization) ක්‍රියාත්මක කරන ආකාරය

ජාත්‍යන්තරීකරණය (i18n) භාවිතයෙන් ඔබගේ React යෙදුම වඩා පහසින් ප්‍රවේශ කළ හැකි කරමින් නව වෙළඳපලවලට ළඟා වන්න.

ලෝකය වඩා ගෝලීකෘතව ගොඩබැසීමත් සමඟ, විවිධ රටවල් සහ සංස්කෘතික පසුබැසීම් ඇති පරිශීලකයන් සඳහා ගැළපෙන යෙදුම් වෙබ් සංවර්ධකයින් විසින් නිර්මාණය කිරීම වඩාත් වැදගත් වී තිබේ. ජාත්‍යන්තරීකරණය (i18n) මෙම අරමුණ සැළසුම් කිරීමේ ප්‍රධාන ක්‍රමවල එකක් වන අතර, එය ඔබට ඔබගේ යෙදුම විවිධ භාෂා, මුදල් ඒකක සහ දිනයේ ආකෘති අනුව හැඩගැසීමට ඉඩ සලසයි.

මෙම පන්තිකාවේදි, සේවාදායක පැත්තේ රෙන්ඩරින් සමඟ ඔබගේ React Next.js යෙදුමට ජාත්‍යන්තරීකරණය (i18n) කෙසේ එක් කරනවාද යන්න අපි විමසන්නෙමු. TL;DR: පූර්ණ උදාහරණය මෙහි බලන්න.

මෙම මාර්ගෝපදේශය Next.js යෙදුම් සඳහා වන අතර ඒවා Pages Router භාවිතා කරයි.
ඔබ App 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 යතුරක් නිර්මාණය කරන්න. අප ඒවා පරිසර විචල්‍ය ලෙස සුරකින්නෙමු. 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.

.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

පියවර 3: TacoTranslate පිහිටුවීම

TacoTranslate ඔබගේ යෙදුම සමඟ ඒකාබද්ධ කිරීමට, පෙර ලබාදුන් API යතුරු භාවිතයෙන් client එකක් නිර්මාණය කළ යුතුය. උදාහරණයක් ලෙස, /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_DEFAULT_LOCALE ?? '',
});

module.exports = tacoTranslate;

අපි ඉක්මනින් TACOTRANSLATE_API_KEY ස්වයංක්‍රීයව නිර්වචනය කරනු ඇත.

client එක වෙනම ගොනුවක තැනීමෙන් පසුව නැවත භාවිතා කිරීමට පහසු වේ. දැන්, අභිරුචි /pages/_app.tsx ගොනුව භාවිතයෙන්, අපි TacoTranslate provider එක එකතු කරමු.

/pages/_app.tsx
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';

type PageProperties = {
	origin: Origin;
	locale: Locale;
	locales: Locale[];
	localizations: Localizations;
};

export default function App({Component, pageProps}: AppProps<PageProperties>) {
	const {origin, locale, locales, localizations} = pageProps;

	return (
		<TacoTranslate
			client={tacoTranslate}
			origin={origin}
			locale={locale}
			localizations={localizations}
		>
			<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
			<Component {...pageProps} />
		</TacoTranslate>
	);
}

ඔබට දැනටමත් කස්ටම් pageProps සහ _app.tsx තිබේ නම්, කරුණාකර ඉහත සඳහන් ගුණාංග සහ කේතය සමඟ එම නිර්වචනය පුළුල් කරන්න.

පියවර 4: සේවාදායක පැත්තේ රෙන්ඩර කිරීම ක්‍රියාත්මක කිරීම

TacoTranslate ඔබගේ පරිවර්තන සේවාදායක පැත්තේ රෙන්ඩර කිරීමට ඉඩ සලසයි. මෙය පරිශීලක අත්දැකීම විශාල ලෙස වර්ධනය කරයි — පරිවර්තිත අන්තර්ගතය වහාම පෙන්වීමෙන් මුලින් නොපරිවර්තිත අන්තර්ගතයක් පැහැදිලියෙන් කෙටි කලකට පෙන්වීම (flash) සිදුවීම වැළැක්වේ. එමෙන්ම, අපට අවශ්‍ය සියලු පරිවර්තන දැනටමත් තිබීම නිසා client පැත්තෙන් ජාල ඉල්ලීම් පාවිච්චි කළ නොහැකිවීම වළක්වා හැක.

අපි /next.config.js ගොනුව සාදන හෝ සංස්කරණය කරන 것으로 ආරම්භ කරන්නෙමු.

/next.config.js
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');

module.exports = async () => {
	const config = {};

	return withTacoTranslate(config, {
		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'),
	});
};

ඔබගේ සැකසුම්ට ගැළපෙන පරිදි isProduction පරීක්ෂාව වෙනස් කරන්න. ඒක true නම්, TacoTranslate පොදු API යතුර ප්‍රදර්ශනය කරනු ඇත. අපි දේශීය, පරීක්ෂණ හෝ ස්ටේජින් පරිසරයක (isProduction is false) සිටිනවා නම්, නව පෙළ භාෂාපරිවර්තනය සඳහා යැවෙන බවට සහතික වීමට රහසිගත read/write API යතුර භාවිතා කරමු.

මෙතෙක් අපි Next.js යෙදුම සඳහා සහය දෙන භාෂා ලැයිස්තුවක් පමණක් සකස් කර තිබේ. ඊළඟට අපි කරන දෙය නම් ඔබගේ සියලු පිටු සඳහා පරිවර්තන ලබා ගැනීමයි. ඒ සඳහා, ඔබගේ අවශ්‍යතා අනුව getTacoTranslateStaticProps හෝ getTacoTranslateServerSideProps භාවිතා කරනු ඇත.

මෙම ක්‍රියාකාරකම් පරාමිතීන් තුනක් ගනී: එකක් Next.js Static Props Context වස්තුවක්, TacoTranslate සඳහා වූ වින්‍යාසයක්, සහ විකල්ප Next.js ගුණාංග. සලකන්න, getTacoTranslateStaticProps හි revalidate සාමාන්‍ය ලෙස 60 ලෙස සකසා ඇති බැවින්, ඔබගේ පරිවර්තන නිතර නවීනව පවති.

පිටුවක ඕනෑම ක්‍රියාවලියක් භාවිත කිරීමට, අපි හිතමු ඔබට /pages/hello-world.tsx වැනි පිටු ගොනුවක් ඇත.

/pages/hello-world.tsx
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';

export async function getStaticProps(context) {
	return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}

export default function Page() {
	return <Translate string="Hello, world!"/>;
}

ඔබ දැන් ඔබගේ සියලු React කොම්පෝනන්ට් තුළ ඇති පෙළ පරිවර්තනය කිරීමට Translate කොම්පෝනන්ට් එක භාවිතා කළ හැක.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

පියවර 5: දියත් කර පරීක්ෂා කරන්න!

අපි ඉවරයි! ඔබ Translate කොම්පොනන්ට් එකකට ඕනෑම පෙළක් එකතු කරන විට, ඔබගේ React යෙදුම දැන් ස්වයංක්‍රීයව පරිවර්තනය වේ. API යතුරට read/write අවසර ඇති පරිසරවලට පමණක් පරිවර්තනය සඳහා නව පෙළ නිර්මාණය කළ හැකි බව සලකන්න. අපි නිර්දේශ කරන්නේ, එවැනි API යතුරක් භාවිතයෙන් ඔබගේ ප්‍රොඩක්ෂන් යෙදුම පරීක්ෂා කළ හැකි හා ප්‍රචාරයට පෙර නව පෙළ එක් කිරීමට ඔබට ඉඩ සලසන වසා ඇති සහ ආරක්ෂිත staging පරිසරයක් තිබීමයි. මෙය කවුරුන්හටවත් ඔබේ රහසිගත API යතුර හොරකම් වීමට අවස්ථාවක් නොලබවීය, සහ අදාළ නොවන නව පෙළයන් එක් කිරීමෙන් ඔබේ පරිවර්තන ව්‍යාපෘතිය අතිරික්තව බරපතල වීම වළක්වනු ඇත.

නිසැකවම, අපගේ GitHub පැතිකඩේ ඇති සම්පූර්ණ උදාහරණය බලන්න. එහිදී, App Router භාවිතයෙන් මෙය කරන පිළිවෙත් වල උදාහරණයක්ද ඔබට හමුවේ! ගැටළු මතුවුවහොත්, නිදහසේ අප අමතන්න, අපි උදව් කිරීමට ඉතා සතුටින් සිටිමු.

TacoTranslate ඔබගේ React යෙදුම් 75කට වඩා භාෂාවන් වෙත සහ ඒවාෙන් වෙත ස්වයංක්‍රීයව හා වේගයෙන් ප්‍රදේශීයකරණය (localize) කිරීමට ඉඩ සලසයි. අදම ආරම්භ කරන්න!

Nattskiftet වෙතින් නිෂ්පාදනයක්නෝර්වේ නිෂ්පාදිත