Kuinka toteuttaa kansainvälistäminen Next.js-sovelluksessa, joka käyttää Pages Router
Tee React-sovelluksestasi saavutettavampi ja tavoita uusia markkinoita kansainvälistämisen (i18n) avulla.
Maailman globalisoituessa verkkokehittäjien on yhä tärkeämpää rakentaa sovelluksia, jotka palvelevat käyttäjiä eri maista ja kulttuureista. Yksi keskeisistä tavoista saavuttaa tämä on kansainvälistäminen (i18n), jonka avulla voit sopeuttaa sovelluksesi eri kielille, valuutoille ja päivämäärämuodoille.
Tässä opetusohjeessa käsittelemme, miten toteuttaa kansainvälistäminen React Next.js -sovellukseesi palvelinpuolen renderöinnin avulla. TL;DR: Katso koko esimerkki täältä.
Tämä opas koskee Next.js-sovelluksia, jotka käyttävät Pages Router.
Jos käytät App Router, katso sen sijaan tämä opas.
Vaihe 1: Asenna i18n-kirjasto
Kansainvälistämisen (i18n) toteuttamiseksi Next.js‑sovelluksessasi valitsemme ensin i18n‑kirjaston. Saatavilla on useita suosittuja kirjastoja, kuten next-intl. Tässä esimerkissä käytämme kuitenkin TacoTranslate.
TacoTranslate kääntää merkkijonosi automaattisesti mihin tahansa kieleen huippuluokan tekoälyn avulla ja vapauttaa sinut JSON‑tiedostojen työläästä hallinnasta.
Asennetaan se komentorivilläsi käyttäen npm:
npm install tacotranslateVaihe 2: Luo ilmainen TacoTranslate-tili
Nyt kun olet asentanut moduulin, on aika luoda TacoTranslate-tilisi, käännösprojekti ja siihen liittyvät API-avaimet. Luo tili tästä. Se on ilmaista, eikä vaadi luottokortin lisäämistä.
TacoTranslate-sovelluksen käyttöliittymässä luo projekti ja siirry sen API-avaimet-välilehdelle. Luo yksi read -avain ja yksi read/write -avain. Tallennamme ne ympäristömuuttujiin. read -avain on se, mitä kutsumme public -avaimeksi, ja read/write -avain on secret. Esimerkiksi voit lisätä ne projektisi juureen olevaan .env -tiedostoon.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Varmista, ettet koskaan vuoda salaista read/write API-avainta asiakaspuolen tuotantoympäristöihin.
Lisäämme myös kaksi muuta ympäristömuuttujaa: TACOTRANSLATE_DEFAULT_LOCALE ja TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Oletusarvoinen varapaikkakielen (locale) koodi. Tässä esimerkissä asetamme senenenglannille.TACOTRANSLATE_ORIGIN: Se "kansio", johon merkkijonosi tallennetaan, esimerkiksi verkkosivustosi URL-osoite. Lue lisää originista täältä.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comVaihe 3: TacoTranslate-palvelun käyttöönotto
Liittääksesi TacoTranslate sovellukseesi, sinun täytyy luoda klientti käyttäen aiemmin mainittuja API-avaimia. Esimerkiksi luo tiedosto nimeltä /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;Määrittelemme automaattisesti TACOTRANSLATE_API_KEY pian.
Luomalla asiakasohjelman erilliseen tiedostoon helpotat sen uudelleenkäyttöä myöhemmin. Nyt, käyttäen mukautettua /pages/_app.tsx-tiedostoa, lisäämme TacoTranslate providerin.
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>
);
}Jos sinulla on jo mukautetut pageProps ja _app.tsx, laajenna määrittelyä yllä olevilla ominaisuuksilla ja koodilla.
Vaihe 4: Palvelinpuolen renderoinnin toteuttaminen
TacoTranslate mahdollistaa käännösten palvelinpuolen renderöinnin. Tämä parantaa käyttäjäkokemusta merkittävästi näyttämällä käännetyn sisällön välittömästi sen sijaan, että ensin nähtäisiin hetken ajan kääntämätöntä sisältöä. Lisäksi voimme ohittaa asiakaspuolen verkkopyynnöt, koska meillä on jo kaikki tarvitsemamme käännökset.
Aloitamme luomalla tai muokkaamalla /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'),
});
};Muokkaa isProduction tarkistusta vastaamaan asetuksiasi. Jos true, TacoTranslate näyttää julkisen API-avaimen. Jos olemme paikallisessa, testaus- tai staging-ympäristössä (isProduction is false), käytämme salaista read/write API-avainta varmistaaksemme, että uudet merkkijonot lähetetään käännettäväksi.
Toistaiseksi olemme vain määrittäneet Next.js‑sovellukselle tuettujen kielten luettelon. Seuraavaksi haemme käännökset kaikille sivuillesi. Tätä varten käytät joko getTacoTranslateStaticProps tai getTacoTranslateServerSideProps tarpeidesi mukaan.
Nämä funktiot ottavat kolme argumenttia: yhden Next.js Static Props Context -olion, TacoTranslate-konfiguraation ja valinnaiset Next.js-ominaisuudet. Huomaa, että getTacoTranslateStaticProps-funktion revalidate on oletusarvoisesti asetettu arvoon 60, jotta käännöksesi pysyvät ajan tasalla.
Jos haluat käyttää jompaa kumpaa funktiota sivulla, oletetaan, että sinulla on sivutiedosto, kuten /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!"/>;
}Sinun pitäisi nyt pystyä käyttämään Translate komponenttia kääntääksesi merkkijonoja kaikissa React-komponenteissasi.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Vaihe 5: Ota käyttöön ja testaa!
Olemme valmiit! React-sovelluksesi käännetään nyt automaattisesti, kun lisäät mitä tahansa merkkijonoja Translate -komponenttiin. Huomaa, että vain ympäristöt, joilla on read/write -oikeudet API-avaimeen, pystyvät luomaan uusia käännettäviä merkkijonoja. Suosittelemme käytettäväksi suljettua ja suojattua staging-ympäristöä, jossa voit testata tuotantosovellustasi tällaisella API-avaimella ja lisätä uusia merkkijonoja ennen julkaisua. Tämä estää ketään varastamasta salaista API-avaintasi ja mahdollisesti paisuttamasta käännösprojektiasi lisäämällä uusia, asiaankuulumattomia merkkijonoja.
Muista katsoa täydellinen esimerkki GitHub-profiilistamme. Sieltä löydät myös esimerkin siitä, miten tämä tehdään käyttäen App Routeria! Jos kohtaat ongelmia, ota rohkeasti yhteyttä, niin autamme mielellämme.
TacoTranslate mahdollistaa React-sovellustesi automaattisen lokalisoimisen nopeasti yli 75 kielelle ja takaisin. Aloita tänään!