TacoTranslate
/
DokumentasyonPresyo
 
May 04

Paano mag-implement ng internationalization sa isang Next.js application na gumagamit ng Pages Router

Gawing mas accessible ang iyong React application at abutin ang mga bagong pamilihan gamit ang internationalization (i18n).

Habang nagiging higit na globalisado ang mundo, lalo ring nagiging mahalaga para sa mga web developer na bumuo ng mga aplikasyon na maaaring maglingkod sa mga gumagamit mula sa iba't ibang bansa at kultura. Isa sa mga pangunahing paraan upang makamit ito ay sa pamamagitan ng internationalization (i18n), na nagpapahintulot sa iyo na iangkop ang iyong aplikasyon sa iba't ibang mga wika, pera, at mga format ng petsa.

Sa tutorial na ito, susuriin natin kung paano idagdag ang internationalization sa iyong React Next.js na aplikasyon, gamit ang server side rendering. TL;DR: Tingnan ang buong halimbawa dito.

Ang gabay na ito ay para sa mga Next.js na aplikasyon na gumagamit ng Pages Router.
Kung gumagamit ka ng App Router, pakitingnan na lamang ang gabay na ito.

Hakbang 1: Mag-install ng i18n library

Upang ipatupad ang internationalization sa iyong Next.js application, pipiliin muna natin ang isang i18n library. Mayroong ilang mga kilalang libraries, kabilang na ang next-intl. Gayunpaman, sa halimbawang ito, gagamitin natin ang TacoTranslate.

Ang TacoTranslate ay awtomatikong isinasalin ang iyong mga string sa kahit anong wika gamit ang makabagong AI, at inilalayo ka mula sa nakakapagod na pamamahala ng mga JSON file.

I-install natin ito gamit ang npm sa iyong terminal:

npm install tacotranslate

Hakbang 2: Gumawa ng libreng TacoTranslate account

Ngayong na-install mo na ang module, panahon na para gumawa ng iyong TacoTranslate account, isang proyekto sa pagsasalin, at mga kaugnay na API key. Gumawa ng account dito. Libre ito, at hindi kailangan ng credit card.

Sa loob ng TacoTranslate application UI, gumawa ng proyekto, at mag-navigate sa tab ng API keys nito. Lumikha ng isang read key, at isang read/write key. Itatabi natin ang mga ito bilang mga environment variables. Ang read key ang tinatawag nating public, at ang read/write key naman ay secret. Halimbawa, maaari mo itong idagdag sa isang .env file sa root ng iyong proyekto.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Siguraduhing huwag kailanman ilantad ang sekreto read/write API key sa client side production environments.

Magdaragdag din tayo ng dalawang karagdagang environment variables: TACOTRANSLATE_DEFAULT_LOCALE at TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Ang default na fallback locale code. Sa halimbawang ito, itatakda natin ito sa en para sa Ingles.
  • TACOTRANSLATE_ORIGIN: Ang “folder” kung saan itatago ang iyong mga string, tulad ng URL ng iyong website. Basahin pa tungkol sa origins dito.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Hakbang 3: Pagsasaayos ng 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_DEFAULT_LOCALE ?? '',
});

module.exports = tacoTranslate;

Awtomatikong idi-define ang TACOTRANSLATE_API_KEY sa lalong madaling panahon.

Ang paggawa ng client sa isang hiwalay na file ay nagpapadali upang magamit muli ito sa hinaharap. Ngayon, gamit ang isang custom na /pages/_app.tsx, idaragdag natin ang 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>
	);
}

Kung mayroon ka nang custom na pageProps at _app.tsx, pakipahaba ang depinisyon gamit ang mga katangian at code mula sa itaas.

Hakbang 4: Pagpapatupad ng server side rendering

Pinapayagan ng TacoTranslate ang server side rendering ng iyong mga pagsasalin. Malaki ang naitutulong nito sa pagpapabuti ng karanasan ng gumagamit sa pamamagitan ng agarang pagpapakita ng isinalin na nilalaman, sa halip na isang sandaling pagpapakita ng hindi pa isinaling nilalaman. Bukod pa rito, maaari nating laktawan ang mga network request sa client, dahil nasa atin na ang lahat ng kinakailangang pagsasalin.

Magsisimula tayo sa pamamagitan ng paggawa o pag-modify ng /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'),
	});
};

Baguhin ang isProduction check upang umangkop sa iyong setup. Kung true, ipapakita ng TacoTranslate ang pampublikong API key. Kung kami ay nasa isang lokal, pagsubok, o staging na kapaligiran (isProduction is false), gagamitin namin ang lihim na read/write API key upang matiyak na ang mga bagong string ay ipinadala para sa pagsasalin.

Hanggang ngayon, itinakda lamang namin ang Next.js application na may isang listahan ng mga suportadong wika. Ang susunod na bagay na gagawin namin ay kumuha ng mga pagsasalin para sa lahat ng iyong mga pahina. Upang magawa ito, gagamitin mo ang alinman sa getTacoTranslateStaticProps o getTacoTranslateServerSideProps batay sa iyong mga kinakailangan.

Ang mga function na ito ay tumatagal ng tatlong mga argumento: Isang Next.js Static Props Context object, pagsasaayos para sa TacoTranslate, at opsyonal na mga katangian ng Next.js. Tandaan na ang revalidate sa getTacoTranslateStaticProps ay nakatakda sa 60 bilang default, upang manatiling napapanahon ang iyong mga pagsasalin.

Upang magamit ang alinman sa mga function sa isang pahina, ipagpalagay natin na mayroon kang isang file ng pahina tulad ng /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!"/>;
}

Dapat ay kaya mo nang gamitin ang Translate component upang isalin ang mga string sa loob ng lahat ng iyong React components.

import {Translate} from 'tacotranslate/react';

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

Hakbang 5: I-deploy at subukan!

Tapos na tayo! Ang iyong React application ay awtomatikong maisasalin kapag nagdagdag ka ng anumang mga string sa isang Translate component. Tandaan na tanging mga environment na may read/write na pahintulot sa API key lamang ang makakalikha ng mga bagong string na isasalin. Inirerekomenda naming magkaroon ng isang sarado at secure na staging environment kung saan maaari mong subukan ang iyong production application gamit ang ganoong API key, nagdadagdag ng mga bagong string bago ito ilunsad. Makakaiwas ito upang hindi manakaw ang iyong lihim na API key, at maiwasan ang posibleng pagdami ng hindi kaugnay na mga string sa iyong proyekto ng pagsasalin.

Tiyaking tingnan ang kumpletong halimbawa sa aming profile sa GitHub. Dito, makakakita ka rin ng halimbawa kung paano gawin ito gamit ang App Router! Kung makaranas ka ng anumang problema, huwag mag-atubiling makipag-ugnayan, at ikalulugod naming tumulong.

Pinapahintulutan ka ng TacoTranslate na awtomatikong i-localize ang iyong mga React application nang mabilis papunta at mula sa anumang wika. Magsimula na ngayon!

Isang produkto mula sa Nattskiftet