Sut i weithredu rhyngwladoli mewn cymhwysiad Next.js sy’n defnyddio’r App Router
Gwnewch eich cais React yn fwy hygyrch a chyrraedd marchnadoedd newydd gyda rhyngwladoli (i18n).
Wrth i'r byd ddod yn fwy rhyngwladol, mae'n dod yn fwyfwy pwysig i ddatblygwyr gwe adeiladu ceisiadau sy'n medru ymateb i ddefnyddwyr o wledydd a diwylliannau gwahanol. Un o'r ffyrdd allweddol i wireddu hyn yw drwy rhyngwladoliad (i18n), sy'n caniatáu i chi addasu eich cais i wahanol ieithoedd, arian cyfred, a fformatau dyddiad.
Mewn erthygl hon, byddwn yn archwilio sut i ychwanegu rhyngwladoliad i'ch cais React Next.js, gyda rendro ochr y gweinydd. TL;DR: Gweler yr enghraifft lawn yma.
Mae’r canllaw hwn ar gyfer ceisiadau Next.js sy’n defnyddio’r App Router.
Os ydych chi’n defnyddio’r Pages Router, gweler y canllaw hwn yn lle hynny.
Cam 1: Gosod llyfrgell i18n
I weithredu rhyngwladoli yn eich cais Next.js, byddwn yn dewis llyfrgell i18n yn gyntaf. Mae sawl llyfrgell boblogaidd, gan gynnwys next-intl. Yn yr enghraifft hon, fodd bynnag, byddwn yn defnyddio TacoTranslate.
Mae TacoTranslate yn cyfieithu eich llinellau yn awtomatig i unrhyw iaith gan ddefnyddio AI arloesol, ac yn eich rhyddhau rhag y gwaith diflas o reoli ffeiliau JSON.
Gadewch i ni ei osod gan ddefnyddio npm yn eich terminal:
npm install tacotranslate
Cam 2: Creu cyfrif TacoTranslate am ddim
Nawr eich bod wedi gosod y modiwl, mae'n bryd creu eich cyfrif TacoTranslate, prosiect cyfieithu, a allweddi API cysylltiedig. Creu cyfrif yma. Mae'n rhad ac am ddim, ac nid yw'n gofyn i chi ychwanegu cerdyn credyd.
Within the TacoTranslate application UI, create a project, and navigate to its API keys tab. Create one read
key, and one read/write
key. We’ll save them as environment variables. The read
key is what we call public
and the read/write
key is secret
. For example, you could add them to a .env
file in the root of your project.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Gwnewch yn siŵr nad ydych byth yn gollwng y gyfrinach read/write
allwedd API i amgylcheddau cynhyrchu ochr cwsmeriaid.
Byddwn hefyd yn ychwanegu dwy newidyn amgylcheddol arall: TACOTRANSLATE_DEFAULT_LOCALE
a TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Y cod lleoliad wrth gefn diofyn. Yn yr enghraifft hon, fe’i gosodwn ien
ar gyfer Saesneg.TACOTRANSLATE_ORIGIN
: Y “ffolder” lle bydd eich llinynnau yn cael eu storio, megis URL eich gwefan. Darllenwch fwy am darddiadau yma.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Cam 3: Gosod TacoTranslate
I integreiddio TacoTranslate gyda’ch cais, bydd angen i chi greu cleient gan ddefnyddio'r allweddi API o'r blaen. Er enghraifft, crëwch ffeil o’r enw /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_IS_PRODUCTION === 'true'
? process.env.TACOTRANSLATE_PROJECT_LOCALE
: undefined,
});
module.exports = tacoTranslate;
Byddwn yn diffinio TACOTRANSLATE_API_KEY
a TACOTRANSLATE_PROJECT_LOCALE
yn awtomatig yn fuan.
Mae creu’r cleient mewn ffeil ar wahân yn ei gwneud yn hawdd ei ddefnyddio eto yn nes ymlaen. Mae getLocales
yn swyddogaeth ddefnyddiol sy’n cynnwys rhywfaint o driniaeth gwalliau adeiledig. Nawr, creu ffeil o’r enw /app/[locale]/tacotranslate.tsx
, lle byddwn yn gweithredu’r darparwr TacoTranslate
.
'use client';
import React, {type ReactNode} from 'react';
import {
type TranslationContextProperties,
TacoTranslate as ImportedTacoTranslate,
} from 'tacotranslate/react';
import tacoTranslateClient from '@/tacotranslate-client';
export default function TacoTranslate({
locale,
origin,
localizations,
children,
}: TranslationContextProperties & {
readonly children: ReactNode;
}) {
return (
<ImportedTacoTranslate
client={tacoTranslateClient}
locale={locale}
origin={origin}
localizations={localizations}
>
{children}
</ImportedTacoTranslate>
);
}
Sylwch ar 'use client';
sy'n dangos mai cydran cleient yw hon.
Gyda'r darparwr cyd-destun bellach yn barod i fynd, creu ffeil o'r enw /app/[locale]/layout.tsx
, y cynllun gwraidd yn ein cais. Sylwch fod gan y llwybr hwn ffolder sy'n defnyddio Dynamic Routes, lle [locale]
yw'r paramedr deinamig.
import React, {type ReactNode} from 'react';
import {type Locale, isRightToLeftLocaleCode} from 'tacotranslate';
import './global.css';
import tacoTranslateClient from '@/tacotranslate-client';
import TacoTranslate from './tacotranslate';
export async function generateStaticParams() {
const locales = await tacoTranslateClient.getLocales();
return locales.map((locale) => ({locale}));
}
type RootLayoutParameters = {
readonly params: Promise<{locale: Locale}>;
readonly children: ReactNode;
};
export default async function RootLayout({params, children}: RootLayoutParameters) {
const {locale} = await params;
const origin = process.env.TACOTRANSLATE_ORIGIN;
const localizations = await tacoTranslateClient.getLocalizations({
locale,
origins: [origin /* , other origins to fetch */],
});
return (
<html lang={locale} dir={isRightToLeftLocaleCode(locale) ? 'rtl' : 'ltr'}>
<body>
<TacoTranslate
locale={locale}
origin={origin}
localizations={localizations}
>
{children}
</TacoTranslate>
</body>
</html>
);
}
Y peth cyntaf i'w nodi yma yw ein bod yn defnyddio ein paramedr Dynamic Route
[locale]
i nôl cyfieithiadau ar gyfer y iaith honno. Yn ogystal, mae generateStaticParams
yn sicrhau bod pob cod lleol a ydych wedi’i actifadu ar gyfer eich prosiect yn cael eu rhag-gynhyrchu.
Nawr, gadewch i ni adeiladu ein tudalen gyntaf! Creu ffeil o’r enw /app/[locale]/page.tsx
.
import React from 'react';
import {Translate} from 'tacotranslate/react';
export const revalidate = 60;
export default async function Page() {
return (
<Translate string="Hello, world!" />
);
}
Sylwch ar y newidyn revalidate
sy’n dweud wrth Next.js i ailadeiladu’r dudalen ar ôl 60 eiliad, a chadw’ch cyfieithiadau yn gyfredol.
Cam 4: Gweithredu rendro ochr y gweinydd
Mae TacoTranslate yn cefnogi rendro ochr y gweinydd. Mae hyn yn gwella profiad y defnyddiwr yn fawr drwy ddangos cynnwys wedi’i gyfieithu ar unwaith, yn hytrach na fflach o gynnwys heb ei gyfieithu yn gyntaf. Yn ogystal, gallwn sgipio ceisiadau rhwydwaith ar y cleient, oherwydd mae gennym eisoes y cyfieithiadau sydd eu hangen ar gyfer y dudalen mae’r defnyddiwr yn ei gwylio.
I osod rendu ochr y gweinydd, crëwch neu addaswch /next.config.js
:
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');
module.exports = async () => {
const config = await withTacoTranslate(
{},
{
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'),
}
);
// NOTE: Remove i18n from config when using the app router
return {...config, i18n: undefined};
};
Addaswch y gwirio isProduction
i gyd-fynd â’ch gosodiad. Os yw true
, bydd TacoTranslate yn dangos allwedd API cyhoeddus. Os ydym mewn amgylchedd lleol, prawf, neu gamfa (isProduction
is false
), byddwn yn defnyddio’r allwedd API gyfrinachol read/write
i sicrhau bod llinynnau newydd yn cael eu hanfon ar gyfer cyfieithu.
I sicrhau bod llwybro a ailgyfeirio yn gweithio fel y disgwylir, bydd angen i ni greu ffeil o’r enw /middleware.ts
. Gan ddefnyddio Middleware, gallwn ailddirprwyo defnyddwyr i dudalennau a gyflwynir yn eu hiaith ddewisol.
import {type NextRequest} from 'next/server';
import {middleware as tacoTranslateMiddleware} from 'tacotranslate/next';
import tacoTranslate from '@/tacotranslate-client';
export const config = {
matcher: ['/((?!api|_next|favicon.ico).*)'],
};
export async function middleware(request: NextRequest) {
return tacoTranslateMiddleware(tacoTranslate, request);
}
Gwnewch yn siŵr eich bod yn sefydlu’r matcher
yn unol â dogfennaeth Canolrwydi Next.js.
Ar y cleient, gallwch newid y cwci locale
i newid pa iaith sydd gan y defnyddiwr fel ei ddewis. Gweler y cod enghreifftiol cyflawn am syniadau ar sut i wneud hyn!
Cam 5: Rhoi ar waith a phrofi!
Rydym wedi gorffen! Bydd eich cais React yn cael ei gyfieithu yn awtomatig erbyn hyn pan fyddwch yn ychwanegu unrhyw llinynnau i gydran Translate
. Sylwch mai dim ond mewn amgylcheddau gyda chaniatâd read/write
ar allwedd API y bydd modd creu llinynnau newydd i’w cyfieithu. Rydym yn argymell cael amgylchedd camu ar gau a diogel lle gallwch brofi eich cais cynhyrchu gydag allwedd API o’r fath, gan ychwanegu llinynnau newydd cyn mynd yn fyw. Bydd hyn yn atal unrhyw un rhag dwyn eich allwedd API gyfrinachol, ac yn bosibl yn atal ehangu diangen eich prosiect cyfieithu trwy ychwanegu llinynnau newydd nad ydynt yn gysylltiedig.
Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the Pages Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.
TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!