@weglot/translate-react
Översätt din
Reagera,
Next.js eller
Vite app
Inga t()-wrappers, inga JSON-filer. Lägg till ett byggplugin och en API-nyckel från Weglot : texten i din JSX översätts när appen byggs, och ditt team redigerar översättningarna på Weglot utan att behöva röra koden.
Kopiera uppmaningen för · · · läs dokumentationen · visa på npm
111.368+ globala varumärken litar på Weglot för att översätta sina webbplatser
// what your users see
Den JSX-kod du skrev, på alla språk
Skriv texten en gång. Weglot översätter den vid kompilering.
Samma knapp, fem språk. Bredderna mäts i realtid.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
Inga nycklar, inget t(). Skriv texten i JSX, så är det med det.
// how it works
Fyra steg. Dina komponenter förblir oförändrade.
Käll- och målspråken hämtas från ditt Weglot -projekt, inte från din kod. Tillägget läser texten i din JSX vid kompilering och hämtar översättningarna.
-
Installera paketet och lägg till din API-nyckel
Skapa ett projekt i Weglot 2.0 och kopiera sedan API-nyckeln från projektinställningarna. Den börjar med
pk_. Fortsätt.envutanför versionshanteringen.terminal · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
Lägg till tillägget
Omgärda din Next.js-konfiguration med
withWeglot. PunktsourceRoottill mappen där dina sidor och komponenter finns.Lägg till
weglotPlugintill din Vite-konfiguration. Med Webpack importerar du den från@weglot/translate-react/webpackistället.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" })], });
-
Lägg till leverantören
Omgärda din rotlayout med
WeglotProviderfrån Next.js-startpunkten, så att en ändring av språk uppdaterar dina serverkomponenter.Omslut din app med
WeglotProvider, så tidigt som möjligt.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>, );
-
Kompilera och distribuera på alla språk i ditt projekt
Vid varje kompilering hämtas saknade översättningar från Weglot och skrivs
public/translations/<locale>.json. Strunta i den mappen. Lägg till en språkväljare medLocaleSwitcherelleruseWeglotContext..gitignorepublic/translations/
// under the hood
Vad händer när man bygger
- 01Läserdin JSX
- 02Skickarett nytt SMS
- 03Weglot översätter
- 04Skriveren fil per språk
// every language of your project
En enda version, alla språk du lägger till
Välj språk på Weglot. De ingår i nästa version.
enLägg till ett språk på Weglot och kör sedan en kompilering. Översättningsfilerna distribueras tillsammans med din app.
// built for coding agents
Din mäklare ordnar det
Det finns inga strängar att skriva om, så ändringen är liten och lätt att granska.






Vilken kodningsagent som helst. Klistra in en prompt i den agent du redan använder.
Dokument som agenterna kan läsa. Ett llms.txt -index och Markdown-filer för varje sida.
package.jsonnext.config.tslayout.tsx.gitignore.envEn diff som du kan granska. Inga strängar har skrivits om.
Klistra in Claude-koden
Klistra in vid markören (Agentläge)
Klistra in i Codex$ npm install @weglot/translate-react
Kopiera kommandot. Samma steg som i introduktionsguiden.
// what gets translated
Tillägget kan skilja mellan text och kod
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> ); }
Texten är översatt. JSX-text, bokstavliga värden, konstanter, alt, title, platshållare, aria-label.
Koden lämnas orörd. Klassnamn, URL:er, logik.
Det är upp till dig. Behåll alla element som de är, eller använd data-weglot-skip.
// for your team
Redigera och granska utan att röra koden
Recension på Weglot. Produkt-, marknadsförings- och översättningsavdelningarna redigerar texten.
Ingen pull-begäran för att rätta ett ord.
Håll koll på vad som har granskats. Se framstegen för varje språk.
// fit
När man ska använda ” Weglot ” och när man inte ska göra det
Paketet befinner sig i förhandsgranskningsfasen. Här är var det passar in just nu.
Next.js-appens router
StöddNext.js 15 eller 16.0.4+, React 19.
Vite
StöddReact 19, Node 20.9+. Webpack fungerar också.
React-serverkomponenter
StöddNär du byter språk uppdateras dina serverkomponenter.
CMS- och API-innehåll
StöddMed tDynamic i Next.js-serverkomponenter.
Redigering av icke-utvecklare
StöddGranska och redigera i instrumentpanelen för ” Weglot ”.
En URL per språk
Inte änSpråket sparas idag i en cookie. Behöver nu indexerade URL:er per språk: använd next-intl eller Paraglide JS.
Översättningar som repo-filer
Översätt åtgärdWeglot översätter dina JSON-språkfiler i GitHub Actions och skapar en pull-begäran. Se dokumentationen →
React 18, Pages Router
Stöds inteÄven Next.js 14 eller äldre.
CMS eller webbplatsbyggare
Inte det här paketetDin webbplats är inte byggd i React: använd CMS-integrationerna på Weglot.
// compare
Varför inte ett klassiskt i18n-bibliotek?
i18n-bibliotek kräver att du ersätter varje sträng med en nyckel och har en fil per språk. Weglot läser in de strängar du redan har skrivit. Här ser du en jämförelse mellan alternativen.
| Kriterier | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | CMS-anpassad lokalisering |
|---|---|---|---|---|
| Omgärda strängar med t() eller meddelandefunktioner | Nejtext i JSX upptäcks vid kompilering. | Jat("key") för varje sträng. |
Jam.key() meddelandefunktioner. |
Endast innehållSträngar i din kod kräver fortfarande ett bibliotek. |
| Översättningsfiler per språk | Inget att underhållaGenereras vid kompilering, ignoreras av Git. | JaVanligtvis en JSON-fil per språkversion. | JaEn meddelandefil per språkversion. | Nejlagras i CMS. |
| Flerspråkig omdirigering och SEO (URL per språk, hreflang) | Inte ännuSpråket lagras i en cookie. Samma URL:er för alla språk, källspråket indexeras. | next-intl: jaInbyggd lokaliseringsrouting. i18next: via inställningarna i ditt ramverk. | JaInbyggda lokaliserade URL:er: språkprefix, översatta sökvägar eller domäner. Lägg till hreflang-taggar själv. | FrontendEtt headless CMS lagrar innehåll per språkversion. URL:er och hreflang kommer från din frontend. |
| Översättningar som har genererats åt dig | JaWeglot översätts med en LLM under byggprocessen. | NejTa med dina egna översättningar eller ett TMS. | Med hjälp av verktyginlang CLI-maskinöversättning eller din kodningsagent. | Betalt tilläggAI-översättning i betalda abonnemang: Contentful AI Actions, Sanity AI Assist, Strapi AI Translations. |
| Redigera översättningar utan hjälp av en utvecklare | JaGranska och redigera i Weglot -instrumentpanelen. | NejRedigera JSON-filer eller lägg till en separat TMS. | Med Finkinlangs webbredigerare, med ett GitHub-konto. | JaI CMS-redigeraren. |
| Skapad av en kodningsagent i en enda kommando | JaEn installation, två konfigurationsändringar. Kopierbar kommandorad nedan. | Lång uppgiftAgenten omformaterar varje sträng till nycklar och filer. | Lång uppgiftinit körs utan att fråga efter agenter, då blir varje sträng en m.key() meddelande. |
ej tillämpligtKonfigureras i CMS. |
VANLIGA FRÅGOR
Stöder den SEO: en URL per språk och hreflang?
Inte idag. Besökarens språk sparas i en cookie och alla språk visas på samma webbadresser, vilket innebär att sökmotorerna endast indexerar källspråket.
Du kan översätta sidrubriker och beskrivningar med tDynamicAll i generateMetadata. Om du redan nu behöver indexerade URL:er per språk kan du använda ett bibliotek med språkbaserad vidarekoppling, till exempel next-intl eller Paraglide JS.
Hur översätter jag dynamiskt innehåll från ett CMS, ett API eller användare?
Pluginet översätter endast text som finns i din kod. För innehåll som din kod aldrig kommer i kontakt med, anropa tDynamic, tDynamicAll eller tDynamicHtml från @weglot/translate-react/dynamic i Next.js-serverkomponenter.
Om API:et tar längre tid än 500 ms, eller om en text begärs för första gången, returnerar de källtexten. Översättningen är klar vid en senare förfrågan. Om du själv cachelagrar data bör du anpassa cachen efter besökarens språk.
Next.js eller Vite: vad förändras?
Next.js använder withWeglot från @weglot/translate-react/next och WeglotProvider från @weglot/translate-react/react/next. Vite använder weglotPlugin från @weglot/translate-react/vite och WeglotProvider från @weglot/translate-react/react. Webpack använder weglotPlugin från @weglot/translate-react/webpack.
Funktionerna för dynamiskt innehåll körs endast i Next.js-serverkomponenter.
Fungerar det med React Server Components?
Ja, med Next.js App Router. Importera WeglotProvider från @weglot/translate-react/react/next så att ett byte av språk uppdaterar dina serverkomponenter. tDynamic, tDynamicAll och tDynamicHtml körs på serversidan, i serverkomponenter.
Vad händer när jag bygger?
Tillägget hittar texten i JSX-koden under sourceRoot och begär de översättningar som saknas från API:et Weglot . Weglot genererar dem med hjälp av en LLM, och byggprocessen väntar i upp till translationTimeout (300 sekunder som standard). Därefter skriver den public/translations/<locale>.json.
Om översättningen misslyckas misslyckas kompileringen och det som mottagits sparas i den lokala cachen: kompilera på nytt för att fortsätta. Med buildMode: "cache-only", gör den här versionen inga nätverksanrop.
Var lagras översättningarna?
I ditt projekt Weglot , där du granskar och redigerar dem. Varje build sparar också de översättningar som den har tagit emot i <sourceRoot>/weglot/cache/<locale>.json. Lägg in den mappen i byggprocessen utan att anropa API:et, eller ignorera den. public/translations/ genereras och hamnar i .gitignore.
Vad översätts, och hur utesluter jag något?
Text i JSX, strängliteraler i JSX-uttryck, strängar som läses in från konstanter samt attribut såsom title, alt, placeholder och aria-label. Kod, URL:er, klassnamn och strängar utanför JSX lämnas oförändrade. Lägg till translate="no" eller data-weglot-skip för att behålla ett element på originalspråket. Definiera dina egna textattribut med translatableAttributes.
Gör din React-app flerspråkig utan att skriva om den
Installera paketet, lägg till din API-nyckel och kompilera.
$ npm install @weglot/translate-react
Vill du hellre göra det själv? Läs dokumentationen eller kolla in paketet på npm