TacoTranslate
/
DukumiintiQiimaha
 
Maqaal
May 04

Xalka ugu fiicani ee ku saabsan caalamiyeynta (i18n) ee barnaamijyada Next.js

Ma doonaysaa inaad ballaariso codsigaaga Next.js suuqa cusub? TacoTranslate waxay si aad u fudud u oggolaaneysaa inaad ku turjunto mashruucaaga Next.js, adigoo awood u leh inaad gaarto dhagaystayaal caalami ah iyada oo aan dhib lahayn.

Maxay u dooranaysaa TacoTranslate Next.js?

  • Isdhexgal Aan Kala Go' lahayn: Si gaar ah loogu naqshadeeyay codsiyada Next.js, TacoTranslate si fudud ayay ugu dhex milantaa habkaaga shaqo ee hadda jiro.
  • Ururinta Xarafka Si Toos ah: Ma jiro maarayn gacanta ah oo faylasha JSON ah. TacoTranslate si otomaatig ah ayuu uga ururiyaa xarfo koodhkaaga.
  • Tarjumida Awoodda AI: Ka faa’idayso awoodda AI si aad u bixiso turjumaado macnaha ku habboon oo ku habboon codka codsigaaga.
  • Taageero Luuqadeed Degdeg ah: Ku dar taageero luuqado cusub hal gujis kaliya, taasoo ka dhigaysa codsigaaga mid si caalami ah loo heli karo.

Sida ay u shaqayso

Maaddaama adduunku sii ballaaranayo, waxay noqoneysaa mid aad muhiim u ah horumariyeyaasha webka inay dhisaan codsiyo ka jawaabi kara isticmaaleyaasha ka kala imanaya wadamo iyo dhaqan kala duwan. Mid ka mid ah siyaabaha muhiimka ah ee tan lagu gaari karo waa iyada oo la adeegsanayo caalamiyeenta (i18n), taas oo kuu oggolaanaysa inaad u habeyso codsigaaga luqado, lacagaha, iyo qaababka taariikhda kala duwan.

Casharkan, waxaan ku sahamin doonaa sida loogu daro caalamiyeenta codsigaaga React Next.js, iyadoo la adeegsanayo server side rendering. TL;DR: Tus tusaalaha buuxa halkan.

Tilmaantan waxaa loogu talagalay codsiyada Next.js ee adeegsanaya Pages Router.
Haddii aad isticmaalayso App Router, fadlan halkii arag tilmaantan.

Tallaabada 1: Ku rakib maktabad i18n ah

Si aad u hirgeliso is-dhexgalka caalamiga ah ee codsigaaga Next.js, marka hore waxaan dooran doonaa maktabad i18n ah. Waxaa jira dhowr maktabadood oo caan ah, oo ay ku jiraan next-intl. Si kastaba ha ahaatee, tusaalahaan, waxaan u adeegsan doonaa TacoTranslate.

TacoTranslate si toos ah ayaa u turjumaa xarafyadaada luqad kasta iyadoo la adeegsanayo AI casri ah, waxaana uu kaa freedaa maaraynta daalasha leh ee faylasha JSON.

Aan ku rakibno adigoo adeegsanaya npm ee terminal-kaaga:

npm install tacotranslate

Tallaabada 2: Abuur koonto TacoTranslate oo bilaash ah

Hadda oo aad module-ka rakibtay, waa waqtigii aad abuuri lahayd akoonkaaga TacoTranslate, mashruuc turjumaad, iyo furayaasha API-ga la xidhiidha. Halkan ka samee akoon. Waa bilaash, waxaana aadan u baahnayn inaad ku darto kaarka deynta.

Gudaha TacoTranslate interface-ka codsiga, abuuri mashruuc, kadibna u gudub tabka furayaasha API-ga. Abuuri hal furaha read ah, iyo hal furaha read/write ah. Waxaan ku keydin doonaa sidii doorsoomayaasha deegaanka. Furaha read waxa aan ugu yeernaa public halka furaha read/write uu yahay secret. Tusaale ahaan, waxaad ku dari kartaa faylka .env ee xididka mashruucaaga.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Hubi inaadan waligaa sirta ah read/write API key ka bixin deegaanada wax soo saarka ee dhinaca macmiilka.

Waxaan sidoo kale ku dari doonaa laba isbeddel oo deegaanka ah: TACOTRANSLATE_DEFAULT_LOCALE iyo TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Koodhka asalka ah ee luqadda magdhowga ah. Tusaalahan, waxaan u dejin doonaa en oo ah Ingiriis.
  • TACOTRANSLATE_ORIGIN: “Faylka” meesha erayadaada lagu keydin doono, sida URL-ka boggaaga. Halkan ka akhriso wax badan oo ku saabsan asalka.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Tallaabada 3: Dejinta TacoTranslate

Si aad codsigaaga ugu dhexgaliso TacoTranslate, waxaad u baahan doontaa inaad abuurto macmiil isticmaalaya furayaasha API ka hor. Tusaale ahaan, samee fayl lagu magacaabo /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;

Waxaan si otomaatig ah u qeexi doonaa TACOTRANSLATE_API_KEY dhowaan.

Abuurista client-ka fayl gooni ah waxay ka dhigeysaa mid sahlan in mar kale la isticmaalo mustaqbalka. Hadda, anagoo adeegsanayna custom /pages/_app.tsx, waxaan ku dari doonaa bixiyaha TacoTranslate.

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

Haddii aad horey u leedahay pageProps iyo _app.tsx khaas ah, fadlan ballaadhi qeexitaanka adoo adeegsanaya hantida iyo koodhka kor ku xusan.

Tallaabada 4: Hirgelinta server ka dhinaca rendering

TacoTranslate waxay kuu oggolaaneysaa in tarjumaadahaaga lagu soo bandhigo server-ka dhiniciisa. Tani waxay si weyn u hagaajisaa waayo-aragnimada isticmaaleha iyadoo si degdeg ah loo muujinayo macluumaadka la turjumay, halkii marka hore laga soo bandhigi lahaa macluumaad aan la turjumin oo si kooban u muuqda. Intaas waxaa dheer, waxaan ka dhimi karnaa codsiyada shabakadda ee dhinaca macaamilka, sababtoo ah waxaan horey u haynaa dhammaan tarjumaadihii aan u baahnayn.

Waxaan ku bilaabi doonaa abuurista ama wax ka beddelka /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'),
	});
};

Wax ka bedel jeeg isProduction si aad ugu habboonaato qaabkaaga. Haddii true, TacoTranslate waxay dusha ka saari doontaa muhiimka ah API dadweynaha. Hadaynu ku jirno goob maxali ah, tijaabo, ama jawi goob-socodka (isProduction is false), waxaanu isticmaali doonaa furaha sirta read/write API si loo hubiyo in xadhig cusub loo diro si loo turjumo.

Illaa hadda, waxaan kaliya dejinnay codsiga Next.js liiska luqadaha la taageeray. Waxa xiga ee aan sameyn doono waa inaan soo qaadanno turjumaadaha dhammaan bogaggaaga. Si taas loo sameeyo, waxaad isticmaali doontaa mid ka mid ah getTacoTranslateStaticProps ama getTacoTranslateServerSideProps iyadoo ku saleysan shuruudahaaga.

Farsamooyinkan waxay qaataan seddex dooddo: Hal shay oo ah Next.js Static Props Context, qaabeynta TacoTranslate, iyo hanti doorsoomayaal ah oo Next.js ah. Ogoow in revalidate ee ku jira getTacoTranslateStaticProps si caadi ah loo dejiyey 60, si tarjumaadahaagu ay u sii ahaadaan kuwo casri ah.

Si aad mid kasta oo ka mid ah farsamooyinkan ugu isticmaasho bog, aan u qaadanno inaad haysato fayl bog sida /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!"/>;
}

Hadda waa inaad awood u yeelatid inaad isticmaasho qeybta Translate si aad u turjunto xarfo ku dhex jira dhammaan qaybahaaga React.

import {Translate} from 'tacotranslate/react';

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

Tallaabada 5: Daabac oo tijaabi!

Waan dhammaynay! Hadda codsigaaga Next.js ayaa si toos ah loo turjumi doonaa markaad ku darto xarfo cusub oo ku jira qaybta Translate. Ogeysiis in kaliya deegaanada leh rukhsadaha read/write ee furaha API-ga ay awoodi doonaan inay abuuraan xarfo cusub oo la turjumo. Waxaan kugula talineynaa inaad yeelato deegaan tijaabo oo xiran oo ammaan ah halkaas oo aad ku tijaabin karto codsigaaga wax soo saar leh furaha API-ga noocaas ah, adigoo ku daraya xarfo cusub ka hor intaadan noolayn. Tani waxay ka hortagi doontaa in qof kasta uu xado furahaaga API-ga qarsoon, isla markaana laga hortago in mashruucaaga turjumaadda uu buuxsamo xarfo cusub oo aan xiriir la lahayn.

Hubi inaad eegto tusaalaha dhameystiran ee ku yaala profile-keena GitHub. Halkaas, waxaad sidoo kale ka heli doontaa tusaale muujinaya sida tan loogu sameeyo iyadoo la adeegsanayo App Router! Haddii aad wax dhibaato ah la kulanto, xor ayaad u tahay inaad nala soo xiriirto, waxaana si weyn kuugu caawin doonaa.

TacoTranslate waxay kuu oggolaaneysaa inaad si otomaatig ah ula qabsato codsiyada React si dhaqso leh luuqad kasta iyo luuqad kasta oo kale. Bilow maanta!

Alaab ka socota Nattskiftet