Lägg till flerspråkighet i din Next.js-app.
Översätt dina locale-filer, Markdown-innehåll och HTML-sidor via ett enda API-anrop. Fungerar med App Router, next-intl och alla i18n-routningsinställningar.
Next.js ger dig routing. Det ger dig inte översättningar.
Next.js App Router har utmärkt inbyggt stöd för locale-baserad routing. Bibliotek som next-intl gör hantering av översättningsfiler och byte av locale enkelt. Vad de inte löser är själva översättningen — någon måste producera det översatta innehållet på varje språk, och den någon är vanligtvis du. För de flesta team är arbetsflödet att kopiera den engelska JSON-filen till DeepL, fixa formateringen som går sönder, klistra in resultatet tillbaka, upprepa för varje språk. Det är långsamt, felbenäget och skalar inte.
Det vanligaste arbetsflödet är att skriva alla UI-strängar på engelska i källkoden och sedan översätta messages.json-filen för varje målspråk. I teorin är detta enkelt. I praktiken blir det ett återkommande problem att hålla 10+ locale-filer synkade med källändringar. Varje gång den engelska texten ändras måste varje locale-fil uppdateras. När man använder standardöversättnings-API:er för detta blir nyckelnamn korrupta, variabelplatshållare översätts och JSON-strukturen skiljer sig mellan locales — vilket orsakar subtila runtime-fel som är svåra att spåra.
PolyLingo passar in i din befintliga Next.js i18n-setup.
Om du använder next-intl eller något annat i18n-bibliotek är dina meddelanden redan i JSON. PolyLingo tar den JSON:en, skickar den genom översättningsmodellen och returnerar översatta kopior för varje målspråk — med nycklar orörda, nästling intakt och strängvärden korrekt översatta. Du kan anropa det från ett byggskript, en webhook eller PolyLingo UI. Resultatet hamnar direkt i din messages-mapp.
Arbetsflödet: skriv dina engelska messages.json. Kör ett enda skript som anropar PolyLingo API med din källfil och alla målspråkskoder. Ta emot en översatt JSON-fil per språk, med identisk struktur. Skriv varje till din messages/-katalog. Committa. Klart.
För innehållstunga sajter med Markdown i CMS (Sanity, Contentful) gäller samma tillvägagångssätt för innehåll: exportera som Markdown eller HTML, översätt, skriv tillbaka till CMS via dess API. Hela pipelinen kan köras som ett byggsteg eller på 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"
}
}Varför PolyLingo passar Next.js i18n-arbetsflödet
- ✓Översätt messages/*.json-filer direkt — nycklar bevaras alltid
- ✓Översätt Markdown-innehåll för blogginlägg och dokumentationssidor
- ✓Fungerar med next-intl, next-i18next och anpassade lösningar
- ✓REST API integreras med byggskript och CMS-webhooks
- ✓Alla 36 språk i en enda förfrågan
- ✓Gratisnivå — 100 000 tokens per månad
- ✓Detta repo använder arbetsflödet själva: npm run i18n:polylingo genererar om marknadsföringslocales från messages/en.json (se MARKETING_I18N.md).
- ✓Fungerar med App Router och Pages Router
- ✓Utdatafiler är redo att committas — ingen omintering behövs
Ställ in flerspråkighet i din Next.js-app
Ställ in next-intl med din engelska meddelandefil
Installera next-intl och konfigurera din i18n.ts och middleware. Skriv alla UI-strängar i messages/en.json. Strukturera filen som din app behöver — platt eller nästlad. Detta blir din enda sanning.
Kör översättningsskriptet
Använd PolyLingo JSON API från ett litet Node-skript (se kod ovan). I detta monorepo kör du npm run i18n:polylingo från frontend/ med POLYLINGO_API_KEY satt — det delar upp stora namespaces för tillförlitlighet. Typiska körningar tar långt under en minut för ett komplett marknadsföringspaket.
Committa locale-filerna och distribuera
De genererade locale-filerna är giltig JSON med identisk struktur som din källa. Committa dem till ditt repo. Lägg till översättningsskriptet i din CI-pipeline för att hålla locales synkade med varje innehållsändring.
Next.js flerspråkiga användningsfall
SaaS-appar och dashboards
Översätt hela ditt UI-strängbibliotek i en skriptkörning. Stöder alla next-intl formateringsfunktioner — datum, nummer, pluralformer — eftersom JSON-strukturen bevaras exakt.
Innehållssajter och bloggar
För innehållstunga Next.js-sajter som använder Sanity eller Contentful, använd PolyLingo för att översätta sidinnehåll samt UI-strängar — samma API, samma formatbevarande garantier.
E-handel med regionala varianter
Översätt produktnamn, beskrivningar, kategorisidor och checkout-UI. Använd Advanced-modellen för marknadsföringstexter där varumärkets röst är viktig, Standard för funktionella UI-strängar.
Vanliga frågor
Fungerar detta med Next.js App Router?
Ja. PolyLingo-integrationen är bara ett skript som läser och skriver JSON-filer — det har inget beroende av Next.js interna delar. Det fungerar med App Router, Pages Router eller vilket ramverk som helst. Exemplet på next-intl-konfiguration som visas använder v4 API med requestLocale, vilket är kompatibelt med Next.js 13, 14 och 15.
Vad händer om min messages.json ändras ofta?
Det rekommenderade mönstret är att lägga till översättningsskriptet i din CI/CD-pipeline, triggat vid ändringar i messages/en.json. Detta håller alla locale-filer synkade automatiskt. För team med frekventa textändringar förhindrar detta helt locale-drift.
Fungerar PolyLingo med next-i18next lika bra som med next-intl?
Ja. next-i18next använder samma locale JSON-struktur. Översättningsskriptet fungerar identiskt — peka det på din public/locales/en/-katalog och skriv utdata till de andra locale-katalogerna. JSON-formatkompatibiliteten är densamma.
Hur är det med dynamiskt innehåll som inte finns i messages-filen?
Dynamiskt innehåll — blogginlägg, produktbeskrivningar, användargenererat innehåll — bör översättas på datalagret, antingen i ditt CMS eller via ett byggskript som bearbetar innehållet innan det når Next.js. PolyLingo hanterar Markdown, HTML och ren text lika bra för detta ändamål.
Kan jag bara översätta de strängar som ändrats sedan senaste körningen?
Inkrementell översättning (endast översätta ändrade nycklar) finns på roadmap. För närvarande översätter skriptet hela filen igen. För de flesta meddelandefiler (under 20KB) är detta tillräckligt snabbt för att köras vid varje commit. För mycket stora filer rekommenderas att dela upp efter namespace.
Finns det ett sätt att granska översättningar innan de går i produktion?
Det rekommenderade mönstret är att committa översatta locale-filer till en separat branch eller PR för granskning innan sammanslagning till main. Detta är standardpraxis för team som behöver manuell granskning av översättningskvalitet. PolyLingo genererar ett bra första utkast — för de flesta UI-strängar kräver Standard-modellens output ingen redigering.
Relaterade guider
Översätt JSON locale-filer
Hur PolyLingo hanterar JSON-struktur, nästlade objekt och interpolationsvariabler.
Flerspråkighet för headless CMS
Översättning av innehåll på CMS-nivå tillsammans med UI-strängsöversättning.
Översätt Markdown utan att förstöra formateringen
För Next.js-sajter med Markdown-blogginlägg eller MDX-sidor.
Få din första locale-fil översatt på under 5 minuter.
Gratis API-nyckel. Ingen kreditkortsinformation. Klistra in din messages JSON och se resultatet direkt.
Få din API-nyckelÖversättningsskriptet tar 5 minuter att ställa in. Gratisnivå — inget kreditkort krävs.