Paano ipatupad ang internationalization sa isang Next.js na aplikasyon na gumagamit ng Pages Router
Gawing mas accessible ang iyong React application at abutin ang mga bagong merkado gamit ang internationalization (i18n).
Habang nagiging mas globalisado ang mundo, lalong nagiging mahalaga para sa mga web developer na bumuo ng mga aplikasyon na makakatugon sa mga gumagamit mula sa iba't ibang bansa at kultura. Isa sa mga pangunahing paraan para makamit ito ay ang internationalization (i18n), na nagpapahintulot sa iyo na iangkop ang iyong aplikasyon sa iba't ibang mga wika, mga pera, at mga format ng petsa.
Sa tutorial na ito, tatalakayin natin kung paano idagdag ang internationalization sa iyong React Next.js na aplikasyon, kasama 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, mangyaring tingnan ang gabay na ito sa halip.
Hakbang 1: Mag-install ng isang i18n library
Upang ipatupad ang internasyonal na pagsasalin (i18n) sa iyong Next.js na aplikasyon, pipiliin muna natin ang isang i18n na library. Mayroong ilang mga kilalang library, kabilang ang next-intl. Gayunpaman, sa halimbawang ito, gagamitin natin ang TacoTranslate.
TacoTranslate ay awtomatikong isinasalin ang iyong mga string sa anumang wika gamit ang makabagong AI, at pinapalaya ka mula sa nakakapagod na pamamahala ng mga JSON file.
I-install natin ito gamit ang npm sa iyong terminal:
npm install tacotranslateHakbang 2: Gumawa ng libreng account sa TacoTranslate
Ngayong na-install mo na ang module, oras na para gumawa ng iyong TacoTranslate account, isang proyektong pagsasalin, at mga kaugnay na API key. Gumawa ng account dito. Libre ito, at hindi kinakailangan ng credit card.
Sa loob ng TacoTranslate application UI, gumawa ng isang proyekto at buksan ang tab na API keys nito. Gumawa ng isang read key at isang read/write key. Ise-save natin ang mga ito bilang mga environment variable. Ang read key ang tinatawag nating public at ang read/write key ay secret. Halimbawa, maaari mo silang idagdag sa isang .env file sa root ng iyong proyekto.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Siguraduhing huwag kailanman ibunyag ang lihim na read/write API key sa mga client-side production environment.
Idadagdag din namin ang dalawang karagdagang environment variable: TACOTRANSLATE_DEFAULT_LOCALE at TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Ang default na fallback na code ng locale. Sa halimbawang ito, itatakda namin ito saenpara sa Ingles.TACOTRANSLATE_ORIGIN: Ang “folder” kung saan itatabi ang iyong mga string, tulad ng URL ng iyong website. Basahin pa tungkol sa mga origin dito.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comHakbang 3: Pagsasaayos ng TacoTranslate
Upang maisama ang TacoTranslate sa iyong aplikasyon, kailangan mong gumawa ng isang client gamit ang mga API key mula kanina. Halimbawa, gumawa ng isang file na pinangalanang /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 itatakda ang TACOTRANSLATE_API_KEY sa lalong madaling panahon.
Ang paggawa ng client sa hiwalay na file ay nagpapadali ng muling paggamit nito sa hinaharap. Ngayon, gamit ang isang custom /pages/_app.tsx, idaragdag natin ang TacoTranslate provider.
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 pasadyang pageProps at _app.tsx, palawakin ang depinisyon gamit ang mga katangian at kodigo mula sa itaas.
Hakbang 4: Pagpapatupad ng server-side rendering
Pinapayagan ng TacoTranslate ang pag-render sa server ng iyong mga pagsasalin. Malaki ang naitutulong nito sa karanasan ng gumagamit dahil agad na ipinapakita ang isinaling nilalaman, sa halip na magpakita muna ng sandaling nilalaman na hindi pa nasasalin. Dagdag pa, maaari nating laktawan ang mga network request sa kliyente, dahil nasa atin na ang lahat ng kinakailangang pagsasalin.
Magsisimula tayo sa pamamagitan ng paglikha o pagbabago ng /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 pagsusuri ng isProduction upang umangkop sa iyong setup. Kung true, ipapakita ng TacoTranslate ang pampublikong API key. Kung tayo ay nasa lokal, test, o staging na environment (isProduction is false), gagamitin namin ang lihim na read/write API key upang tiyakin na ang mga bagong string ay naipapadala para sa pagsasalin.
Hanggang ngayon, naitakda lang namin ang Next.js na aplikasyon na may listahan ng mga sinusuportahang wika. Ang susunod na gagawin natin ay kunin ang mga pagsasalin para sa lahat ng iyong mga pahina. Upang gawin iyon, gagamitin mo alinman ang getTacoTranslateStaticProps o getTacoTranslateServerSideProps batay sa iyong mga pangangailangan.
Ang mga function na ito ay tumatanggap ng tatlong argumento: isang Next.js Static Props Context na object, konfigurasyon para sa TacoTranslate, at mga opsyonal na katangian ng Next.js. Tandaan na ang revalidate sa getTacoTranslateStaticProps ay nakatakda sa 60 bilang default, upang manatiling napapanahon ang iyong mga pagsasalin.
Para gamitin ang alinmang function sa isang pahina, ipagpalagay natin na mayroon kang file ng pahina na katulad ng /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 maaari mo na ngayong gamitin ang Translate component para isalin ang mga string sa lahat ng iyong mga React component.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Hakbang 5: I-deploy at subukan!
Tapos na! Ang iyong React application ay awtomatikong maisasalin kapag nagdagdag ka ng anumang mga string sa isang Translate component. Tandaan na tanging mga kapaligiran na may read/write na pahintulot sa API key ang makakalikha ng mga bagong string na isasalin. Inirerekomenda naming magkaroon ng isang sarado at ligtas na staging environment kung saan maaari mong subukan ang iyong production application gamit ang ganoong API key, at magdagdag ng mga bagong string bago ilunsad. Mapipigilan nito ang sinumang sinumang magnakaw ng iyong lihim na API key, at posibleng magdulot ng paglobo sa iyong proyekto sa pagsasalin sa pamamagitan ng pagdagdag ng mga bagong, hindi kaugnay na string.
Siguraduhing tingnan ang kumpletong halimbawa sa aming GitHub profile. Doon, makikita mo rin ang isang halimbawa kung paano gawin ito gamit ang App Router! Kung makaranas ka ng anumang problema, huwag mag-atubiling makipag-ugnayan, at lubos kaming ikalulugod na tumulong.
Pinapahintulutan ng TacoTranslate na awtomatikong i-localize nang mabilis ang iyong mga React application mula at papunta sa mahigit 75 wika. Magsimula na ngayon!