Legg til flerspråklighet i din Next.js-app.
Oversett dine locale-filer, Markdown-innhold og HTML-sider gjennom ett enkelt API-kall. Fungerer med App Router, next-intl og alle i18n-rutingsoppsett.
Next.js gir deg ruting. Det gir deg ikke oversettelser.
Next.js App Router har utmerket innebygd støtte for locale-basert ruting. Biblioteker som next-intl gjør det enkelt å håndtere oversettelsesfiler og bytte mellom locale. Det de ikke løser er selve oversettelsen — noen må produsere det oversatte innholdet på hvert språk, og den noen er vanligvis deg. For de fleste team er arbeidsflyten å kopiere den engelske JSON-filen inn i DeepL, rette opp formateringen som blir ødelagt, lime resultatet tilbake, og gjenta for hvert språk. Det er tregt, feilutsatt og skalerer ikke.
Den vanligste arbeidsflyten er å skrive alle UI-strenger på engelsk i kildekoden, deretter oversette messages.json-filen for hvert målspråk. I teorien er dette enkelt. I praksis blir det en gjentakende smerte å holde 10+ locale-filer synkronisert med kildeendringer. Hver gang engelsk tekst endres, må alle locale-filer oppdateres. Når man bruker standard oversettelses-APIer for dette, blir nøkkelnavn korrupte, variabelplassholdere oversatt, og JSON-strukturen glir mellom locale — noe som forårsaker subtile runtime-feil som er vanskelige å spore.
PolyLingo passer inn i ditt eksisterende Next.js i18n-oppsett.
Hvis du bruker next-intl eller et annet i18n-bibliotek, er meldingene dine allerede i JSON. PolyLingo tar den JSON-en, sender den gjennom oversettelsesmodellen, og returnerer oversatte kopier for hvert målspråk — med nøkler uberørt, nestingen intakt, og strengverdier korrekt oversatt. Du kan kalle det fra et byggeskript, en webhook eller PolyLingo UI. Resultatet legges direkte i meldingsmappen din.
Arbeidsflyten: skriv dine engelske messages.json. Kjør et enkelt skript som kaller PolyLingo API med kildefilen og alle målspråkkoder. Motta én oversatt JSON-fil per språk, med identisk struktur. Skriv hver til messages/-mappen din. Commit. Ferdig.
For innholdstunge nettsteder med Markdown i CMS (Sanity, Contentful), gjelder samme tilnærming for innhold: eksporter som Markdown eller HTML, oversett, skriv tilbake til CMS via dets API. Hele pipelinen kan kjøres som et byggesteg eller på en webhook-trigger.
// This repository: frontend/scripts/translate-messages.mjs
// Chunks large namespaces (e.g. home) so the model stays within output limits.
//
// export POLYLINGO_API_KEY=pl_xxx
// npm run i18n:polylingo
//
// Writes messages/es.json, fr.json, … from messages/en.json via POST /v1/translate
// with format: "json". See MARKETING_I18N.md for options and CI notes.
//
// Minimal one-shot pattern (fine for small message files):
//
// const source = readFileSync('./messages/en.json', 'utf8')
// const { translations } = await fetch(apiUrl + '/translate', {
// method: 'POST',
// headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
// body: JSON.stringify({
// content: source, format: 'json', source: 'en',
// targets: ['es', 'fr', 'de'], model: 'standard',
// }),
// }).then((r) => r.json())
//
// for (const [lang, raw] of Object.entries(translations)) {
// const obj = typeof raw === 'string' ? JSON.parse(raw) : raw
// writeFileSync(`./messages/${lang}.json`, JSON.stringify(obj, null, 2))
// }// i18n.ts (next-intl v4)
import { getRequestConfig } from 'next-intl/server'
export const locales = [
'en', 'ar', 'bn', 'cs', 'da', 'de', 'el', 'es', 'fa', 'fi',
'fr', 'he', 'hi', 'id', 'it', 'ja', 'ko', 'ms', 'nl', 'no',
'pl', 'pt', 'ru', 'sv', 'sw', 'th', 'tr', 'uk', 'vi', 'zh',
] as const
export type Locale = (typeof locales)[number]
export default getRequestConfig(async ({ requestLocale }) => {
const locale = await requestLocale
return {
locale,
messages: (await import(`./messages/${locale}.json`)).default,
}
})// package.json
{
"scripts": {
"dev": "next dev",
"build": "next build",
"i18n:polylingo": "node scripts/translate-messages.mjs",
"translate:build": "npm run i18n:polylingo && next build"
}
}Hvorfor PolyLingo passer i Next.js i18n-arbeidsflyten
- ✓Oversett messages/*.json-filer direkte — nøkler alltid bevart
- ✓Oversett Markdown-innhold for blogginnlegg og dokumentasjonssider
- ✓Fungerer med next-intl, next-i18next og tilpassede oppsett
- ✓REST API integreres med byggeskript og CMS-webhooks
- ✓Alle 36 språk i én enkelt forespørsel
- ✓Gratisnivå — 100 000 tokens per måned
- ✓Dette repoet bruker arbeidsflyten selv: npm run i18n:polylingo regenererer markedsføringslocales fra messages/en.json (se MARKETING_I18N.md).
- ✓Fungerer med App Router og Pages Router
- ✓Utdatafiler er klare til commit — ingen omformatering nødvendig
Sett opp flerspråklighet i din Next.js-app
Sett opp next-intl med din engelske meldingsfil
Installer next-intl og konfigurer din i18n.ts og middleware. Skriv alle UI-strenger i messages/en.json. Strukturér filen slik appen din trenger — flat eller nestet. Dette blir din eneste sannhetskilde.
Kjør oversettelsesskriptet
Bruk PolyLingo JSON API fra et lite Node-skript (se kode ovenfor). I dette monorepoet kjør npm run i18n:polylingo fra frontend/ med POLYLINGO_API_KEY satt — det deler opp store namespaces for pålitelighet. Typiske kjøringer tar godt under ett minutt for en full markedsføringspakke.
Commit locale-filene og deploy
De genererte locale-filene er gyldig JSON med identisk struktur som kilden din. Commit dem til repoet ditt. Legg til oversettelsesskriptet i CI-pipelinen for å holde locales synkronisert med hver innholdsoppdatering.
Bruksområder for Next.js flerspråklighet
SaaS-apper og dashbord
Oversett hele UI-strengbiblioteket ditt i ett skriptkjør. Støtter alle next-intl formateringsfunksjoner — datoer, tall, flertall — fordi JSON-strukturen bevares nøyaktig.
Innholdssider og blogger
For innholdstunge Next.js-nettsteder som bruker Sanity eller Contentful, bruk PolyLingo til å oversette sideinnhold i tillegg til UI-strenger — samme API, samme formatbevaringsgarantier.
E-handel med regionale varianter
Oversett produktnavn, beskrivelser, kategorisider og kasse-UI. Bruk Advanced-modellen for markedsføringskopi der merkevarens stemme er viktig, Standard for funksjonelle UI-strenger.
Ofte stilte spørsmål
Fungerer dette med Next.js App Router?
Ja. PolyLingo-integrasjonen er bare et skript som leser og skriver JSON-filer — det har ingen avhengighet til Next.js interne deler. Det fungerer med App Router, Pages Router eller hvilket som helst rammeverk. next-intl-konfigurasjonseksempelet som vises bruker v4 API med requestLocale, som er kompatibelt med Next.js 13, 14 og 15.
Hva om min messages.json endres ofte?
Den anbefalte metoden er å legge oversettelsesskriptet til din CI/CD-pipeline, trigget ved endringer i messages/en.json. Dette holder alle locale-filer synkronisert automatisk. For team med hyppige tekstendringer forhindrer dette locale-drift helt.
Fungerer PolyLingo med next-i18next i tillegg til next-intl?
Ja. next-i18next bruker samme locale JSON-struktur. Oversettelsesskriptet fungerer identisk — pek det mot din public/locales/en/-mappe og skriv utdata til de andre locale-mappene. JSON-formatkompatibiliteten er den samme.
Hva med dynamisk innhold som ikke er i meldingsfilen?
Dynamisk innhold — blogginnlegg, produktbeskrivelser, brukergenerert innhold — bør oversettes på datalaget, enten i CMS eller via et byggeskript som behandler innholdet før det når Next.js. PolyLingo håndterer Markdown, HTML og ren tekst like godt for dette formålet.
Kan jeg oversette bare strengene som har endret seg siden forrige kjøring?
Inkrementell oversettelse (kun oversette endrede nøkler) er på veikartet. For øyeblikket oversetter skriptet hele filen på nytt. For de fleste meldingsfiler (under 20KB) er dette raskt nok til å kjøre ved hver commit. For veldig store filer anbefales det å dele opp etter namespace.
Finnes det en måte å gjennomgå oversettelser før de går i produksjon?
Den anbefalte metoden er å committe oversatte locale-filer til en egen branch eller PR for gjennomgang før sammenslåing til main. Dette er standard praksis for team som trenger menneskelig kvalitetssikring av oversettelser. PolyLingo genererer et godt førsteutkast — for de fleste UI-strenger krever Standard-modellen ingen redigering.
Relaterte guider
Oversett JSON locale-filer
Hvordan PolyLingo håndterer JSON-struktur, nestede objekter og interpolasjonsvariabler.
Flerspråklig for headless CMS
Oversettelse av innhold på CMS-nivå sammen med UI-strengoversettelse.
Oversett Markdown uten å ødelegge formatering
For Next.js-nettsteder med Markdown-blogginnlegg eller MDX-sider.
Få din første locale-fil oversatt på under 5 minutter.
Gratis API-nøkkel. Ingen kredittkort. Lim inn din messages JSON og se resultatet umiddelbart.
Få din API-nøkkelOversettelsesskriptet tar 5 minutter å sette opp. Gratisnivå — krever ikke kredittkort.