Ako implementovať internacionalizáciu v aplikácii Next.js, ktorá používa Pages Router.
Sprístupnite svoju React aplikáciu širšiemu publiku a oslovte nové trhy pomocou internacionalizácie (i18n).
Ako sa svet čoraz viac globalizuje, je pre webových vývojárov čoraz dôležitejšie vytvárať aplikácie, ktoré dokážu vyhovieť používateľom z rôznych krajín a kultúr. Jedným z kľúčových spôsobov, ako toho dosiahnuť, je internacionalizácia (i18n), ktorá vám umožňuje prispôsobiť vašu aplikáciu rôznym jazykom, menám a formátom dátumu.
V tomto návode si ukážeme, ako pridať internacionalizáciu do vašej React Next.js aplikácie s vykresľovaním na strane servera. TL;DR: Pozrite si celý príklad tu.
Tento sprievodca je určený pre Next.js aplikácie, ktoré používajú Pages Router.
Ak používate App Router, pozrite si namiesto toho tento návod.
Krok 1: Nainštalujte i18n knižnicu
Ak chcete implementovať internacionalizáciu vo vašej aplikácii Next.js, najprv si vyberieme i18n knižnicu. Existuje niekoľko populárnych knižníc, vrátane next-intl. V tomto príklade však použijeme TacoTranslate.
TacoTranslate automaticky prekladá vaše reťazce do ľubovoľného jazyka pomocou najmodernejšej umelej inteligencie a zbavuje vás zdĺhavej správy JSON súborov.
Nainštalujme ju pomocou npm v termináli:
npm install tacotranslate
Krok 2: Vytvorte si bezplatný účet TacoTranslate
Teraz, keď máte modul nainštalovaný, je čas vytvoriť si účet TacoTranslate, prekladateľský projekt a súvisiace API kľúče. Vytvorte si účet tu. Je to zadarmo a nevyžaduje zadanie kreditnej karty.
V používateľskom rozhraní aplikácie TacoTranslate vytvorte projekt a prejdite na kartu API kľúčov. Vytvorte jeden read
kľúč a jeden read/write
kľúč. Uložíme ich ako premenné prostredia. read
kľúč je to, čo nazývame public
a read/write
kľúč je secret
. Napríklad ich môžete pridať do súboru .env
v koreňovom adresári vášho projektu.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Uistite sa, že nikdy neprezradíte tajný API kľúč read/write
v produkčnom prostredí na strane klienta.
Tiež pridáme dve ďalšie premenné prostredia: TACOTRANSLATE_DEFAULT_LOCALE
a TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Predvolený kód záložnej lokality. V tomto príklade ho nastavíme naen
pre angličtinu.TACOTRANSLATE_ORIGIN
: „zložka“, kde budú uložené vaše reťazce, napríklad URL vašej webovej stránky. Viac informácií o originách nájdete tu.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Krok 3: Nastavenie TacoTranslate
Ak chcete integrovať TacoTranslate do svojej aplikácie, budete musieť vytvoriť klienta pomocou API kľúčov z predchádzajúceho kroku. Napríklad vytvorte súbor s názvom /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;
Čoskoro automaticky definujeme TACOTRANSLATE_API_KEY
.
Vytvorenie klienta v samostatnom súbore uľahčuje jeho opätovné použitie neskôr. Teraz, pri použití vlastného /pages/_app.tsx
, pridáme poskytovateľa TacoTranslate
.
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>
);
}
Ak už máte vlastné pageProps
a _app.tsx
, rozšírte prosím definíciu o vlastnosti a kód uvedený vyššie.
Krok 4: Implementácia vykresľovania na strane servera
TacoTranslate umožňuje renderovanie vašich prekladov na strane servera. To výrazne zlepšuje používateľský zážitok tým, že okamžite zobrazí preložený obsah, namiesto toho, aby sa najprv objavil krátky záblesk nepreloženého obsahu. Okrem toho môžeme na klientskej strane vynechať sieťové požiadavky, pretože už máme všetky potrebné preklady.
Začneme vytvorením alebo úpravou /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'),
});
};
Upravte kontrolu isProduction
podľa svojho nastavenia. Ak je true
, TacoTranslate sprístupní verejný API kľúč. Ak sme v lokálnom, testovacom alebo staging prostredí (isProduction
is false
), použijeme tajný read/write
API kľúč, aby sa zabezpečilo, že nové reťazce budú odoslané na preklad.
Doteraz sme v aplikácii Next.js nastavili iba zoznam podporovaných jazykov. Ďalším krokom bude načítanie prekladov pre všetky vaše stránky. Na to použijete buď getTacoTranslateStaticProps
alebo getTacoTranslateServerSideProps
podľa vašich požiadaviek.
Tieto funkcie prijímajú tri argumenty: jeden objekt Next.js Static Props Context, konfiguráciu pre TacoTranslate a voliteľné vlastnosti Next.js. Všimnite si, že revalidate
v getTacoTranslateStaticProps
je predvolene nastavené na 60, takže vaše preklady zostanú aktuálne.
Ak chcete použiť niektorú z týchto funkcií na stránke, predpokladajme, že máte súbor stránky, napríklad /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!"/>;
}
Teraz by ste už mali byť schopní používať komponent Translate
na preklad reťazcov vo všetkých vašich React komponentoch.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Krok 5: Nasadiť a otestovať!
Hotovo! Vaša React aplikácia bude teraz automaticky prekladaná, keď pridáte akékoľvek reťazce do komponentu Translate
. Všimnite si, že iba prostredia s oprávneniami read/write
na API kľúči budú schopné vytvárať nové reťazce na preklad. Odporúčame mať uzavreté a zabezpečené stagingové prostredie, kde môžete testovať vašu produkčnú aplikáciu s takýmto API kľúčom a pridávať nové reťazce ešte pred nasadením do prevádzky. Tým zabránite komukoľvek ukradnúť váš tajný API kľúč a potenciálne nafúknuť váš prekladový projekt pridaním nových, nesúvisiacich reťazcov.
Nezabudnite si pozrieť kompletný príklad na našom GitHub profile. Tam nájdete aj príklad, ako to urobiť pomocou App Router! Ak narazíte na akékoľvek problémy, neváhajte nás kontaktovať, radi vám pomôžeme.
TacoTranslate vám umožňuje automaticky lokalizovať vaše React aplikácie rýchlo do a z viac než 75 jazykov. Začnite ešte dnes!