Next.js + PolyLingo

Tilføj flersprogethed til din Next.js-app.

Oversæt dine locale-filer, Markdown-indhold og HTML-sider via et enkelt API-kald. Fungerer med App Router, next-intl og enhver i18n-routingopsætning.

App Router
Next.js 13–15 understøttet
next-intl
indbygget integration
10 sprog
én scriptkørsel
~3s
typisk oversættelsesscripts køretid

Next.js giver dig routing. Det giver dig ikke oversættelser.

Next.js App Router har fremragende indbygget understøttelse af locale-baseret routing. Biblioteker som next-intl gør det nemt at håndtere oversættelsesfiler og skifte locale. Hvad de ikke løser, er selve oversættelsen — nogen skal producere det oversatte indhold på hvert sprog, og det er som regel dig. For de fleste teams er workflowen at kopiere den engelske JSON til DeepL, rette den formatering, der bliver ødelagt, indsætte resultatet igen og gentage for hvert sprog. Det er langsomt, fejlbehæftet og skalerer ikke.

Den mest almindelige workflow er at skrive alle UI-strenge på engelsk i kildekoden og derefter oversætte messages.json-filen for hvert målsprog. I teorien er det ligetil. I praksis bliver det et tilbagevendende problem at holde 10+ locale-filer synkroniseret med kildeændringer. Hver gang den engelske tekst ændres, skal alle locale-filer opdateres. Når man bruger standard oversættelses-API'er til dette, bliver nøgle-navne korrupte, variabelpladsholdere oversat, og JSON-strukturen forskyder sig mellem locales — hvilket forårsager subtile runtime-fejl, der er svære at spore.

PolyLingo passer ind i din eksisterende Next.js i18n-opsætning.

Hvis du bruger next-intl eller et andet i18n-bibliotek, er dine beskeder allerede i JSON. PolyLingo tager den JSON, sender den gennem oversættelsesmodellen og returnerer oversatte kopier for hvert målsprog — med nøgler uberørte, indlejring intakt og strengværdier korrekt oversat. Du kan kalde det fra et build-script, en webhook eller PolyLingo UI. Resultatet placeres direkte i din messages-mappe.

Workflowen: skriv dine engelske messages.json. Kør et enkelt script, der kalder PolyLingo API med din kildefil og alle målsprogs-koder. Modtag én oversat JSON-fil pr. sprog med identisk struktur. Skriv hver til din messages/-mappe. Commit. Færdig.

For indholdstunge sites med Markdown i CMS (Sanity, Contentful) gælder samme tilgang for indhold: eksportér som Markdown eller HTML, oversæt, skriv tilbage til CMS via dets API. Hele pipeline kan køre som et build-step eller på en webhook-trigger.

PolyLingo oversættelsesscript — dette repo indeholder translate-messages.mjs
// 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 konfiguration
// 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 — tilføj oversættelse til din build-pipeline
// 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 til Next.js i18n-workflow

  • Oversæt messages/*.json-filer direkte — nøgler bevares altid
  • Oversæt Markdown-indhold til blogindlæg og dokumentationssider
  • Fungerer med next-intl, next-i18next og brugerdefinerede opsætninger
  • REST API integreres med build-scripts og CMS-webhooks
  • Alle 36 sprog i én enkelt forespørgsel
  • Gratis niveau — 100.000 tokens pr. måned
  • Dette repo bruger workflowen selv: npm run i18n:polylingo regenererer marketing-locales fra messages/en.json (se MARKETING_I18N.md).
  • Fungerer med App Router og Pages Router
  • Output-filer er klar til commit — ingen omformatering nødvendig

Opsæt flersprogethed i din Next.js-app

1

Opsæt next-intl med din engelske messages-fil

Installer next-intl og konfigurer din i18n.ts og middleware. Skriv alle UI-strenge i messages/en.json. Strukturér filen som din app har brug for — flad eller indlejret. Dette bliver din eneste sandhedskilde.

2

Kør oversættelsesscriptet

Brug PolyLingo JSON API fra et lille Node-script (se kode ovenfor). I dette monorepo kør npm run i18n:polylingo fra frontend/ med POLYLINGO_API_KEY sat — det opdeler store namespaces for pålidelighed. Typiske kørselstider er under et minut for en komplet marketingpakke.

3

Commit locale-filerne og deploy

De genererede locale-filer er gyldig JSON med identisk struktur som din kilde. Commit dem til dit repo. Tilføj oversættelsesscriptet til din CI-pipeline for at holde locales synkroniseret med hver indholdsændring.

Next.js flersprogede brugsscenarier

🚀

SaaS-apps og dashboards

Oversæt hele dit UI-strengbibliotek i én scriptkørsel. Understøtter alle next-intl formateringsfunktioner — datoer, tal, flertal — fordi JSON-strukturen bevares præcist.

📰

Indholdssites og blogs

For indholdstunge Next.js-sites med Sanity eller Contentful, brug PolyLingo til at oversætte sideindhold samt UI-strenge — samme API, samme formatbevarende garantier.

🛒

E-handel med regionale varianter

Oversæt produktnavne, beskrivelser, kategorisider og checkout-UI. Brug Advanced-modellen til marketingtekst, hvor brandstemme betyder noget, Standard til funktionelle UI-strenge.

Ofte stillede spørgsmål

Fungerer dette med Next.js App Router?

Ja. PolyLingo-integrationen er bare et script, der læser og skriver JSON-filer — det har ingen afhængighed til Next.js interne funktioner. Det fungerer med App Router, Pages Router eller ethvert framework. Eksemplet på next-intl-konfiguration bruger v4 API med requestLocale, som er kompatibel med Next.js 13, 14 og 15.

Hvad hvis min messages.json ændres ofte?

Den anbefalede metode er at tilføje oversættelsesscriptet til din CI/CD-pipeline, som trigges ved ændringer i messages/en.json. Dette holder alle locale-filer synkroniseret automatisk. For teams med hyppige tekstændringer forhindrer det locale-drift helt.

Fungerer PolyLingo med next-i18next såvel som next-intl?

Ja. next-i18next bruger samme locale JSON-struktur. Oversættelsesscriptet fungerer identisk — peg det mod din public/locales/en/-mappe og skriv output til de andre locale-mapper. JSON-formatkompatibiliteten er den samme.

Hvad med dynamisk indhold, der ikke er i messages-filen?

Dynamisk indhold — blogindlæg, produktbeskrivelser, bruger-genereret indhold — bør oversættes på datalaget, enten i dit CMS eller via et build-script, der behandler indholdet før det når Next.js. PolyLingo håndterer Markdown, HTML og almindelig tekst lige godt til dette formål.

Kan jeg kun oversætte de strenge, der er ændret siden sidste kørsel?

Inkrementel oversættelse (kun oversættelse af ændrede nøgler) er på roadmap. Lige nu oversætter scriptet hele filen igen. For de fleste beskedfiler (under 20KB) er det hurtigt nok til at køre ved hver commit. For meget store filer anbefales opdeling efter namespace.

Er der en måde at gennemgå oversættelser før de går i produktion?

Den anbefalede metode er at committe oversatte locale-filer til en separat gren eller PR til gennemgang før sammensmeltning til main. Dette er standard praksis for teams, der har brug for menneskelig gennemgang af oversættelseskvalitet. PolyLingo genererer et godt første udkast — for de fleste UI-strenge kræver Standard-modellen ikke redigering.

Få din første locale-fil oversat på under 5 minutter.

Gratis API-nøgle. Ingen kreditkort. Indsæt din messages JSON og se output med det samme.

Få din API-nøgle

Oversættelsesscriptet tager 5 minutter at sætte op. Gratis niveau — intet kreditkort krævet.

Tilføj flersprogethed til din Next.js-app — PolyLingo | PolyLingo