Paano ipatupad ang internasyonalasyon sa isang Next.js na aplikasyon na gumagamit ng Pages Router
Gawing mas madaling ma-access ang iyong React na aplikasyon at maabot ang mga bagong merkado gamit ang internationalization (i18n).
Habang nagiging mas global 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 upang makamit ito ay ang internationalization (i18n), na nagbibigay-daan sa iyo na iakma ang iyong aplikasyon sa iba't ibang wika, 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 i18n library
Upang ipatupad ang internationalization (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.
Ang TacoTranslate ay awtomatikong isinasalin ang iyong mga string sa anumang wika gamit ang makabagong AI, at inaalis ka nito 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 TacoTranslate account
Ngayon na na-install mo na ang module, oras na para lumikha ng iyong TacoTranslate account, isang translation project, at ang mga kaugnay na API key. Gumawa ng account dito. Libre ito, at hindi mo kailangang maglagay ng credit card.
Sa UI ng TacoTranslate application, gumawa ng isang proyekto, at pumunta sa 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 na production environment.
Idadagdag din namin ang dalawang karagdagang environment variable: TACOTRANSLATE_DEFAULT_LOCALE at TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Ang default na fallback na locale code. Sa halimbawang ito, itatakda namin ito saenpara sa Ingles.TACOTRANSLATE_ORIGIN: Ang “folder” kung saan itatago ang iyong mga string, tulad ng URL ng iyong website. Basahin ang higit pa tungkol sa mga origin dito.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comHakbang 3: Pagsasaayos ng TacoTranslate
Upang isama ang TacoTranslate sa iyong aplikasyon, kakailanganin mong lumikha ng isang client gamit ang mga API key na nabanggit 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 namin ang TACOTRANSLATE_API_KEY sa loob ng ilang sandali.
Ang paggawa ng client sa hiwalay na file ay nagpapadali na magamit muli ito sa hinaharap. Ngayon, gamit ang custom na /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 custom pageProps at _app.tsx, pakipalawakin ang definisyon gamit ang mga properties at code na nasa itaas.
Hakbang 4: Pagpapatupad ng rendering sa server
Pinahihintulutan ng TacoTranslate ang server-side rendering ng iyong mga pagsasalin. Malaki ang naitutulong nito sa karanasan ng gumagamit dahil ipinapakita agad ang isinaling nilalaman, sa halip na magpakita muna ng biglaang hindi pa isinaling nilalaman. Bukod pa rito, maaari nating laktawan ang mga kahilingan sa network mula sa client, dahil mayroon na tayong 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 tsek na isProduction upang umangkop sa iyong setup. Kung true, ipapakita ng TacoTranslate ang pampublikong API key. Kung nasa lokal, test, o staging na kapaligiran tayo (isProduction is false), gagamitin natin ang lihim na read/write API key upang matiyak na naipapadala ang mga bagong string para sa pagsasalin.
Hanggang ngayon, itinakda lamang namin ang Next.js na aplikasyon na may listahan ng mga sinusuportahang wika. Ang susunod na gagawin namin ay kunin ang mga pagsasalin para sa lahat ng iyong mga pahina. Para 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 object, ang konfigurasyon para sa TacoTranslate, at mga opsyonal na property ng Next.js. Tandaan na ang revalidate sa getTacoTranslateStaticProps ay naka-set sa 60 bilang default, upang manatiling napapanahon ang iyong mga pagsasalin.
Para magamit ang alinman sa mga function na ito sa isang pahina, ipagpalagay natin na mayroon kang isang file ng pahina tulad 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 upang 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 kami! Ang iyong React application ngayon ay awtomatikong maisasalin kapag nagdagdag ka ng anumang mga string sa isang Translate component. Tandaan na tanging ang mga kapaligiran na may mga permiso na read/write sa API key ang makakalikha ng mga bagong string na isasalin. Inirerekomenda naming magkaroon ng isang nakasarado 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 ito ilunsad. Makakaiwas ito sa sinumang magnanakaw ng iyong lihim na API key, at posibleng magdulot ng paglobo ng iyong proyekto ng pagsasalin dahil sa pagdaragdag ng mga bagong, hindi kaugnay na string.
Siguraduhing tingnan ang kumpletong halimbawa sa aming GitHub profile. Doon, makakakita ka rin ng isang halimbawa kung paano gawin ito gamit ang App Router! Kung makaranas ka ng anumang problema, huwag mag-atubiling makipag-ugnayan, at ikinalulugod naming tumulong.
Pinahihintulutan ng TacoTranslate na awtomatiko mong i-localize ang iyong mga React application nang mabilis papunta at mula sa mahigit 75 wika. Magsimula na ngayon!