@weglot/translate-react
Vertaal je
Reageren,
Next.js of
Vite app
Geen t()-wrappers, geen JSON-bestanden. Voeg een build-plugin en een API-sleutel van Weglot toe: de tekst in je JSX wordt vertaald wanneer je app wordt gebouwd, en je team bewerkt de vertalingen op Weglot zonder de code aan te raken.
Kopieer de opdracht voor · · · lees de documentatie · bekijk op npm
111.368+ wereldwijde merken vertrouwen op Weglot om hun websites te vertalen
// what your users see
De JSX die je hebt geschreven, in elke taal
Schrijf de tekst één keer. Weglot vertaalt deze tijdens het bouwen.
Eén knop, vijf talen. Breedtes worden in realtime gemeten.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
Geen sleutels, geen t(). Schrijf de tekst gewoon in JSX, dat is alles.
// how it works
Vier stappen. Je onderdelen blijven zoals ze zijn.
De bron- en doeltalen zijn afkomstig uit je Weglot -project, niet uit je code. De plug-in leest de tekst in je JSX tijdens het bouwen en haalt de vertalingen op.
-
Installeer het pakket en voeg je API-sleutel toe
Maak een ‘ Weglot 2.0’-project aan en kopieer vervolgens de API-sleutel uit de projectinstellingen. Deze begint met
pk_. Bewaar.envbuiten de versiebeheeromgeving.terminal · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
Voeg de plug-in toe
Omhul je Next.js-configuratie met
withWeglot. PuntsourceRootnaar de map waarin je pagina’s en componenten staan.Toevoegen
weglotPluginin je Vite-configuratie. Met Webpack importeer je het vanuit@weglot/translate-react/webpackin plaats daarvan.next.config.tsimport type { NextConfig } from "next"; import { withWeglot } from "@weglot/translate-react/next"; const nextConfig: NextConfig = {}; export default async function (): Promise<NextConfig> { return await withWeglot(nextConfig, { sourceRoot: "./app" }); }
vite.config.tsimport { defineConfig } from "vite"; import { weglotPlugin } from "@weglot/translate-react/vite"; export default defineConfig({ plugins: [weglotPlugin({ sourceRoot: "src" })], });
-
De aanbieder toevoegen
Omring je root-layout met
WeglotProvidervanaf het startpunt van Next.js, zodat je servercomponenten worden vernieuwd wanneer je van taal wisselt.Omhul je app met
WeglotProvider, zo vroeg mogelijk.app/layout.tsximport { WeglotProvider } from "@weglot/translate-react/react/next"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WeglotProvider>{children}</WeglotProvider> </body> </html> ); }
src/main.tsximport { WeglotProvider } from "@weglot/translate-react/react"; root.render( <WeglotProvider> <App /> </WeglotProvider>, );
-
Ontwikkel en lever op in elke taal van je project
Bij elke build worden ontbrekende vertalingen opgehaald van Weglot en worden deze opgeslagen
public/translations/<locale>.json. Negeer die map. Voeg een taalschakelaar toe metLocaleSwitcherofuseWeglotContext..gitignorepublic/translations/
// under the hood
Wat gebeurt er als je bouwt
- 01Leestje JSX
- 02Verzendteen nieuw bericht
- 03Weglot vertaalt
- 04Maaktéén bestand per taal aan
// every language of your project
Eén build, voor elke taal die je toevoegt
Kies talen op Weglot. Deze worden in de volgende build meegeleverd.
enVoeg een taal toe via Weglot en voer vervolgens de build uit. De vertaalbestanden worden samen met je app geïmplementeerd.
// built for coding agents
Je makelaar regelt het
Er hoeven geen strings te worden herschreven, dus de wijziging is klein en gemakkelijk te controleren.






Elke codeeragent. Plak één prompt in de agent die je al gebruikt.
Bestanden die agents kunnen lezen. Een llms.txt -index en Markdown-bestanden voor elke pagina.
package.jsonnext.config.tslayout.tsx.gitignore.envEen diff die je kunt bekijken. Er zijn geen regels herschreven.
Plak de Claude-code hier
Plakken op de cursor (Agent-modus)
In Codex plakken$ npm install @weglot/translate-react
Kopieer de opdracht. Volg dezelfde stappen als in de handleiding voor beginners.
// what gets translated
De plug-in kan tekst van code onderscheiden
export default function Pricing() { return ( <section className="pricing"> <h2>Choose your plan</h2> <input placeholder="Email address" /> <a href="/signup">{"Start free trial"}</a> <span translate="no">Weglot</span> </section> ); }
De tekst is vertaald. JSX-tekst, letterlijke waarden, constanten, alt, title, placeholder, aria-label.
De code blijft ongewijzigd. Klassennamen, URL’s, logica.
De keuze is aan jou. Je kunt elk element ongewijzigd laten, of de attributen `data-weglot-skip` gebruiken.
// for your team
Bewerken en controleren zonder de code aan te raken
Recensie op Weglot. De tekst wordt bewerkt door de product-, marketing- en vertaalafdelingen.
Geen pull-verzoek om een woord te corrigeren.
Houd bij wat er is doorgenomen. Bekijk de voortgang per taal.
// fit
Wanneer moet je ‘ Weglot ’ gebruiken, en wanneer niet?
Het pakket bevindt zich in de preview-fase. Dit is waar het op dit moment in past.
Next.js-app-router
OndersteundNext.js 15 of 16.0.4+, React 19.
Vite
OndersteundReact 19, Node 20.9+. Webpack werkt ook.
React-servercomponenten
OndersteundAls je de taal wijzigt, worden je servercomponenten vernieuwd.
CMS- en API-inhoud
OndersteundMet tDynamic in Next.js-servercomponenten.
Bewerken door niet-ontwikkelaars
OndersteundBekijk en bewerk dit in het dashboard van de ‘ Weglot ’.
Eén URL per taal
Nog nietDe taal wordt momenteel in een cookie opgeslagen. Je hebt nu geïndexeerde URL’s per taal nodig: gebruik next-intl of Paraglide JS.
Vertalingen als repo-bestanden
VertaalactieWeglot vertaalt je JSON-locale-bestanden in GitHub Actions en opent een pull-verzoek. Zie de documentatie →
React 18, Pages Router
Niet ondersteundOok Next.js 14 of ouder.
CMS of websitebouwer
Niet dit pakketJe website is niet gebouwd met React: maak gebruik van de CMS-integraties op Weglot.
// compare
Waarom geen klassieke i18n-bibliotheek?
i18n-bibliotheken vragen je om elke tekenreeks te vervangen door een sleutel en één bestand per taal aan te houden. Weglot leest de tekenreeksen die je al hebt geschreven. Hieronder zie je een vergelijking van de opties.
| Criteria | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | CMS-lokalisatie in de oorspronkelijke taal |
|---|---|---|---|---|
| Zet strings tussen t() of berichtfuncties | NeeTekst in JSX wordt tijdens het bouwen gedetecteerd. | Jat("key") voor elke tekenreeks. |
Jam.key() berichtfuncties. |
Alleen inhoudVoor strings in je code heb je nog steeds een bibliotheek nodig. |
| Vertaalbestanden per taal | Geen onderhoud nodigGegenererd tijdens het bouwen, genegeerd door Git. | JaMeestal één JSON-bestand per taalversie. | JaEén berichtbestand per taalversie. | Neeopgeslagen in het CMS. |
| Meertalige routering en SEO (URL per taal, hreflang) | Nog nietTaal opgeslagen in een cookie. Dezelfde URL's voor alle talen, brontaal geïndexeerd. | next-intl: jaIngebouwde lokalisatierouting. i18next: via de configuratie van uw framework. | JaIngebouwde gelokaliseerde URL's: locale-voorvoegsels, vertaalde paden of domeinen. Voeg zelf hreflang-tags toe. | Front-endEen headless CMS slaat content per taalversie op. URL's en hreflang-attributen zijn afkomstig van je front-end. |
| Voor u gegenereerde vertalingen | JaWeglot wordt tijdens het bouwen vertaald met een LLM. | NeeNeem je eigen vertalingen of een TMS mee. | Met behulp vaninlang CLI-machinevertaling, of je programmeeragent. | Betaalde uitbreidingAI-vertaling bij betaalde abonnementen: Contentful AI Actions, Sanity AI Assist, Strapi AI Translations. |
| Vertalingen bewerken zonder hulp van een ontwikkelaar | JaBekijk en bewerk dit in het dashboard van Weglot . | NeeJSON-bestanden bewerken of een aparte TMS toevoegen. | Met Finkde webeditor van inlang, met een GitHub-account. | JaIn de CMS-editor. |
| Opgezet door een programmeeragent in één opdracht | JaEén installatie, twee configuratiewijzigingen. Hieronder staat een kopieerbare prompt. | Tijdrovende taakDe agent herschrijft elke tekenreeks naar sleutels en bestanden. | Een langdurige taakinit zonder dat er om agenten wordt gevraagd, dan wordt elke tekenreeks een m.key() bericht. |
n.v.t.Geconfigureerd in het CMS. |
FAQ
Wordt er rekening gehouden met SEO: één URL per taal en hreflang?
Vandaag niet. De taal van de bezoeker wordt opgeslagen in een cookie en elke taal wordt via dezelfde URL’s weergegeven, waardoor zoekmachines alleen de brontaal indexeren.
Je kunt paginatitels en beschrijvingen vertalen met tDynamicAll in generateMetadata. Als je nu per taal geïndexeerde URL’s nodig hebt, gebruik dan een bibliotheek met locale-routing, zoals next-intl of Paraglide JS.
Hoe vertaal ik dynamische inhoud uit een CMS, een API of van gebruikers?
De plug-in vertaalt alleen tekst die in je code staat. Voor inhoud die je code nooit te zien krijgt, roep je tDynamic, tDynamicAll of tDynamicHtml uit @weglot/translate-react/dynamic in Next.js-servercomponenten.
Als de API langer dan 500 ms nodig heeft, of als een tekst voor het eerst wordt opgevraagd, wordt de brontekst weergegeven. Bij een volgende aanvraag is de vertaling dan beschikbaar. Als je zelf gegevens in de cache opslaat, laat de cache dan afhangen van de taal van de bezoeker.
Next.js of Vite: wat verandert er?
Next.js maakt gebruik van withWeglot uit @weglot/translate-react/next en WeglotProvider uit @weglot/translate-react/react/next. Vite maakt gebruik van weglotPlugin uit @weglot/translate-react/vite en WeglotProvider uit @weglot/translate-react/react. Webpack maakt gebruik van weglotPlugin uit @weglot/translate-react/webpack.
De functies voor dynamische inhoud werken alleen in Next.js-servercomponenten.
Werkt het met React Server Components?
Ja, met de Next.js App Router. Importeer WeglotProvider uit @weglot/translate-react/react/next zodat het wijzigen van de taal ervoor zorgt dat je servercomponenten worden vernieuwd. tDynamic, tDynamicAll en tDynamicHtml worden aan de serverzijde uitgevoerd, in servercomponenten.
Wat gebeurt er als ik bouw?
De plug-in zoekt de tekst in de JSX onder sourceRoot en vraagt de API van Weglot om de ontbrekende vertalingen. Weglot genereert deze met een LLM, en de build wacht maximaal translationTimeout (standaard 300 seconden). Vervolgens schrijft het public/translations/<locale>.json.
Als het vertalen mislukt, mislukt de build en wordt de ontvangen informatie in de lokale cache bewaard: voer de build opnieuw uit om door te gaan. Met buildMode: "cache-only", de build voert geen netwerkverzoeken uit.
Waar worden de vertalingen opgeslagen?
In je Weglot -project, waar je ze kunt bekijken en bewerken. Elke build bewaart ook de vertaalde teksten die het heeft ontvangen in <sourceRoot>/weglot/cache/<locale>.json. Voeg die map toe aan de build zonder de API aan te roepen, of negeer deze. public/translations/ wordt gegenereerd en gaat naar .gitignore.
Wat wordt er vertaald, en hoe kan ik iets uitsluiten?
Tekst in JSX, tekenreeksletterlijke waarden in JSX-uitdrukkingen, tekenreeksen die uit constanten worden gelezen, en attributen zoals title, alt, placeholder en aria-label. Code, URL’s, klassennamen en tekenreeksen buiten JSX blijven ongewijzigd. Voeg toe translate="no" of data-weglot-skip om een element in de oorspronkelijke taal te behouden. Definieer je eigen tekst-props met translatableAttributes.
Maak je React-app meertalig zonder deze te herschrijven
Installeer het pakket, voeg je API-sleutel toe en bouw het.
$ npm install @weglot/translate-react
Wil je het liever zelf doen? Lees dan de documentatie of bekijk het pakket op npm