@weglot/translate-react
Traduci il tuo
Reagisci,
Next.js oppure
Vite app
Niente wrapper t(), niente file JSON. Basta aggiungere un plugin di compilazione e una chiave API di Weglot : il testo nel tuo JSX viene tradotto durante la compilazione dell'app e il tuo team può modificare le traduzioni su Weglot senza dover modificare il codice.
Copia il prompt per · · · leggi la documentazione · visualizza su npm
Oltre 111.368 brand in tutto il mondo si affidano a Weglot per tradurre i propri siti.
// what your users see
Il codice JSX che hai scritto, in ogni linguaggio
Scrivi il testo una sola volta. Weglot lo traduce in fase di compilazione.
Stesso pulsante, cinque lingue. Larghezze misurate in tempo reale.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
Niente chiavi, niente t(). Scrivi il testo in JSX, tutto qui.
// how it works
Quattro passaggi. I tuoi componenti rimangono così come sono.
Le lingue di origine e di destinazione provengono dal tuo progetto Weglot , non dal tuo codice. Il plugin legge il testo nel tuo JSX in fase di compilazione e recupera le relative traduzioni.
-
Installa il pacchetto e aggiungi la tua chiave API
Crea un progetto " Weglot " 2.0, quindi copia la chiave API dalle impostazioni del progetto. Inizia con
pk_. Continua.envfuori dal controllo di versione.terminale · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
Aggiungi il plugin
Incorpora la configurazione di Next.js con
withWeglot. PuntosourceRootnella cartella che contiene le tue pagine e i tuoi componenti.Aggiungi
weglotPluginnella configurazione di Vite. Con Webpack, importalo da@weglot/translate-react/webpackinvece.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" })], });
-
Aggiungi il fornitore
Racchiudi il layout delle radici con
WeglotProviderdal punto di ingresso di Next.js, in modo che la modifica della lingua comporti l'aggiornamento dei componenti del server.Incorpora la tua app con
WeglotProvider, il prima possibile.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>, );
-
Compila e distribuisci in tutte le lingue del tuo progetto
Ogni build recupera le traduzioni mancanti da Weglot e scrive
public/translations/<locale>.json. Ignora quella cartella. Aggiungi un selettore di lingua conLocaleSwitcheroppureuseWeglotContext..gitignorepublic/translations/
// under the hood
Cosa succede quando si costruisce
- 01 Leggeil tuo JSX
- 02Inviaun nuovo messaggio
- 03 Traduzione di "Weglot "
- 04Creaun file per ogni lingua
// every language of your project
Una sola versione, per tutte le lingue che aggiungi
Seleziona le lingue su Weglot. Saranno incluse nella prossima versione.
enAggiungi una lingua in Weglot, quindi esegui la compilazione. I file di traduzione verranno distribuiti insieme alla tua app.
// built for coding agents
È il tuo agente a occuparsene
Non ci sono stringhe da riscrivere, quindi la modifica è minima e facile da verificare.






Qualsiasi agente di codifica. Incolla un prompt nell'agente che già utilizzi.
I documenti che gli agenti possono leggere. Un file di indice llms.txt e un file Markdown per ogni pagina.
package.jsonnext.config.tslayout.tsx.gitignore.envUn diff che puoi controllare. Nessuna stringa è stata riscritta.
Incolla nel Claude Code
Incolla in corrispondenza del cursore (modalità Agente)
Incolla nel Codex$ npm install @weglot/translate-react
Copia il prompt. Segui gli stessi passaggi indicati nella guida introduttiva.
// what gets translated
Il plugin distingue il testo dal codice
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> ); }
Il testo è stato tradotto. Testo JSX, valori letterali, costanti, alt, title, placeholder, aria-label.
Il codice rimane invariato. Nomi delle classi, URL, logica.
Decidi tu. Puoi lasciare qualsiasi elemento così com’è oppure utilizzare l’attributo `data-weglot-skip`.
// for your team
Modifica e revisione senza intervenire sul codice
Recensione su Weglot. Il testo è stato revisionato dai responsabili del prodotto, del marketing e dai traduttori.
Non inviare pull request solo per correggere una parola.
Tieni traccia di ciò che è stato rivisto. Visualizza i progressi per ciascuna lingua.
// fit
Quando usare " Weglot" e quando non farlo
Il pacchetto è in fase di anteprima. Ecco dove si colloca attualmente.
Router delle app Next.js
SupportatoNext.js 15 o 16.0.4+, React 19.
Vite
SupportatoReact 19, Node 20.9+. Funziona anche Webpack.
Componenti server di React
SupportatoLa modifica della lingua comporta l'aggiornamento dei componenti del server.
Contenuti CMS e API
SupportatoCon tDynamic nei componenti server di Next.js.
Modifiche da parte di utenti non sviluppatori
SupportatoRivedi e modifica nella dashboard di Weglot .
Un URL per ogni lingua
Non ancoraLa lingua è attualmente memorizzata in un cookie. Ora servono gli URL indicizzati per ciascuna lingua: usa next-intl o Paraglide JS.
Traduzioni sotto forma di file repo
Traduci azioneWeglot traduce i tuoi file JSON delle impostazioni locali in GitHub Actions e apre una pull request. Consulta la documentazione →
React 18, Pages Router
Non supportatoAnche Next.js 14 o versioni precedenti.
CMS o strumento per la creazione di siti web
Non questo pacchettoIl tuo sito non è realizzato con React: utilizza le integrazioni CMS disponibili su Weglot.
// compare
Perché non una classica libreria i18n?
Le librerie i18n richiedono di sostituire ogni stringa con una chiave e di mantenere un file per ogni lingua. Weglot legge le stringhe che hai già scritto. Ecco un confronto tra le opzioni.
| Criteri | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | Localizzazione nativa CMS |
|---|---|---|---|---|
| Racchiudere le stringhe nelle funzioni t() o nelle funzioni di messaggio | NoIl testo in JSX viene rilevato in fase di compilazione. | Sìt("key") per ogni stringa. |
Sìm.key() funzioni di messaggistica. |
Solo contenutoLe stringhe nel tuo codice richiedono comunque una libreria. |
| File di traduzione per lingua | Nessuno da gestireGenerato durante la compilazione, ignorato da Git. | SìIn genere un file JSON per ogni lingua. | SìUn file di messaggi per ogni impostazione locale. | Nomemorizzati nel CMS. |
| Routing multilingue e SEO (URL per lingua, hreflang) | Non ancoraLingua memorizzata in un cookie. Stessi URL per tutte le lingue, lingua di origine indicizzata. | next-intl: sìRouting locale integrato. i18next: tramite la configurazione del framework. | SìURL localizzati integrati: prefissi di lingua, percorsi tradotti o domini. Aggiungi tu stesso i tag hreflang. | Front-endUn CMS headless memorizza i contenuti in base alla lingua. Gli URL e gli attributi hreflang provengono dal front-end. |
| Traduzioni generate per te | SìWeglot viene tradotto con un modello LLM durante la compilazione. | NoPorta le tue traduzioni o un sistema di gestione delle traduzioni (TMS). | Con gli strumentila traduzione automatica via CLI di inlang o il tuo agente di programmazione. | Componenti aggiuntivi a pagamentoTraduzione tramite IA nei piani a pagamento: Contentful AI Actions, Sanity AI Assist, Strapi AI Translations. |
| Modifica le traduzioni senza l'aiuto di uno sviluppatore | SìControlla e modifica nella dashboard di Weglot . | NoModifica i file JSON oppure aggiungi un TMS separato. | Con Finkl'editor web di inlang, con un account GitHub. | SìNell'editor CMS. |
| Creato da un agente di programmazione in un unico prompt | SìUna sola installazione, due modifiche alla configurazione. Di seguito il prompt da copiare. | Attività lungaL'agente riscrive ogni stringa in chiavi e file. | Attività lungainit funziona senza richiedere l'inserimento di agenti, quindi ogni stringa diventa un m.key() messaggio. |
n/aConfigurato nel CMS. |
FAQ
Supporta la SEO: un URL per lingua e l'attributo hreflang?
Non oggi. La lingua del visitatore viene memorizzata in un cookie e ogni lingua viene fornita tramite gli stessi URL, quindi i motori di ricerca indicizzano solo la lingua di origine.
È possibile tradurre i titoli e le descrizioni delle pagine con tDynamicAll in generateMetadata. Se hai bisogno fin da subito di URL indicizzati per lingua, utilizza una libreria con routing basato sulle impostazioni locali, come next-intl o Paraglide JS.
Come posso tradurre i contenuti dinamici provenienti da un CMS, da un'API o dagli utenti?
Il plugin traduce solo il testo presente nel codice. Per i contenuti che il codice non rileva, chiama tDynamic, tDynamicAll oppure tDynamicHtml da @weglot/translate-react/dynamic nei componenti server di Next.js.
Se l'API impiega più di 500 ms o se un testo viene richiesto per la prima volta, restituisce il testo originale. La traduzione sarà disponibile alla richiesta successiva. Se si memorizzano i dati nella cache autonomamente, è opportuno che la cache dipenda dalla lingua del visitatore.
Next.js o Vite: cosa cambia?
Next.js utilizza withWeglot da @weglot/translate-react/next e WeglotProvider da @weglot/translate-react/react/next. Vite utilizza weglotPlugin da @weglot/translate-react/vite e WeglotProvider da @weglot/translate-react/react. Webpack utilizza weglotPlugin da @weglot/translate-react/webpack.
Le funzioni relative ai contenuti dinamici funzionano solo nei componenti server di Next.js.
Funziona con i React Server Components?
Sì, con l'App Router di Next.js. Importa WeglotProvider da @weglot/translate-react/react/next in modo che il cambio di lingua aggiorni i componenti del server. tDynamic, tDynamicAll e tDynamicHtml eseguiti lato server, nei componenti del server.
Cosa succede quando eseguo la compilazione?
Il plugin individua il testo nel codice JSX all'interno di sourceRoot e richiede all'API Weglot le traduzioni mancanti. Weglot le genera tramite un modello di linguaggio di grandi dimensioni (LLM), e la compilazione attende fino a translationTimeout (300 secondi per impostazione predefinita). Successivamente scrive public/translations/<locale>.json.
Se la traduzione non va a buon fine, la compilazione fallisce e il sistema conserva i dati ricevuti nella cache locale: eseguire nuovamente la compilazione per continuare. Con buildMode: "cache-only", la build non effettua alcuna chiamata di rete.
Dove vengono salvate le traduzioni?
Nel tuo progetto Weglot , dove puoi controllarle e modificarle. Ogni build conserva inoltre le traduzioni ricevute in <sourceRoot>/weglot/cache/<locale>.json. Inserisci quella cartella nella build senza richiamare l'API, oppure ignorala. public/translations/ viene generato e va in .gitignore.
Cosa viene tradotto e come posso escludere qualcosa?
Testo in JSX, stringhe letterali all’interno di espressioni JSX, stringhe lette da costanti e attributi quali title, alt, placeholder e aria-label. Il codice, gli URL, i nomi delle classi e le stringhe al di fuori di JSX rimangono invariati. Aggiungi translate="no" oppure data-weglot-skip per mantenere un elemento nella lingua originale. Dichiarare le proprie proprietà di testo con translatableAttributes.
Rendi la tua app React multilingue senza riscriverla
Installa il pacchetto, aggiungi la tua chiave API, compila.
$ npm install @weglot/translate-react
Preferisci farlo da solo? Leggi la documentazione o dai un’occhiata al pacchetto su npm