Přidejte vícejazyčnost do své aplikace Next.js.
Překládejte své locale soubory, obsah v Markdownu a HTML stránky přes jedno API volání. Funguje s App Routerem, next-intl a jakýmkoli i18n routingem.
Next.js vám poskytuje směrování. Neposkytuje překlady.
Next.js App Router má vynikající vestavěnou podporu pro směrování založené na locale. Knihovny jako next-intl usnadňují správu překladových souborů a přepínání locale. Co však neřeší, je samotný překlad — někdo musí vytvořit přeložený obsah ve všech jazycích, a tím někým jste obvykle vy. Pro většinu týmů je pracovní postup zkopírovat anglický JSON do DeepL, opravit poškozené formátování, vložit výsledek zpět a opakovat pro každý jazyk. Je to pomalé, náchylné k chybám a neškáluje se to.
Nejběžnější workflow je psát všechny UI řetězce v angličtině přímo ve zdrojovém kódu a pak překládat soubor messages.json pro každý cílový jazyk. Teoreticky je to jednoduché. V praxi však udržovat více než 10 locale souborů synchronizovaných se změnami ve zdroji je opakující se bolest. Pokaždé, když se změní anglický text, je potřeba aktualizovat všechny locale soubory. Při použití standardních překladových API dochází ke korupci názvů klíčů, překládání proměnných zástupců a JSON struktura se mezi locale liší — což způsobuje subtilní runtime chyby, které se těžko hledají.
PolyLingo zapadá do vašeho stávajícího Next.js i18n nastavení.
Pokud používáte next-intl nebo jinou i18n knihovnu, vaše zprávy jsou už v JSONu. PolyLingo vezme tento JSON, pošle ho přes překladový model a vrátí přeložené kopie pro každý cílový jazyk — s nezměněnými klíči, zachovanou strukturou a správně přeloženými textovými hodnotami. Můžete ho volat ze skriptu při sestavení, webhooku nebo z PolyLingo UI. Výsledek se přímo uloží do vašeho adresáře s messages.
Workflow: napište své anglické messages.json. Spusťte jeden skript, který zavolá PolyLingo API s vaším zdrojovým souborem a všemi cílovými jazyky. Obdržíte jeden přeložený JSON soubor na jazyk se stejnou strukturou. Každý uložte do adresáře messages/. Commitněte. Hotovo.
Pro obsahově náročné stránky s Markdownem v CMS (Sanity, Contentful) platí stejný přístup k obsahu: exportujte jako Markdown nebo HTML, přeložte, vraťte zpět do CMS přes jeho API. Celý proces může běžet jako krok sestavení nebo na 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"
}
}Proč PolyLingo zapadá do Next.js i18n workflow
- ✓Překládejte přímo soubory messages/*.json — klíče jsou vždy zachovány
- ✓Překládejte obsah v Markdownu pro blogové příspěvky a dokumentační stránky
- ✓Funguje s next-intl, next-i18next a vlastními nastaveními
- ✓REST API se integruje se skripty sestavení a CMS webhooky
- ✓Všechny 43 jazyků v jednom požadavku
- ✓Bezplatná úroveň — 50 000 tokenů měsíčně
- ✓Tento repozitář používá workflow sám na sobě: npm run i18n:polylingo regeneruje marketingové locale z messages/en.json (viz MARKETING_I18N.md).
- ✓Funguje s App Routerem i Pages Routerem
- ✓Výstupní soubory jsou připravené ke commitnutí — není potřeba přeformátování
Nastavte vícejazyčnost ve své aplikaci Next.js
Nastavte next-intl s vaším anglickým messages souborem
Nainstalujte next-intl a nakonfigurujte svůj i18n.ts a middleware. Napište všechny UI řetězce do messages/en.json. Strukturujte soubor podle potřeb vaší aplikace — plochou nebo vnořenou. Toto se stane vaším jediným zdrojem pravdy.
Spusťte překladový skript
Použijte PolyLingo JSON API ze skriptu v Node (viz kód výše). V tomto monorepu spusťte npm run i18n:polylingo z frontend/ s nastaveným POLYLINGO_API_KEY — skript rozděluje velké namespace pro spolehlivost. Typické běhy trvají výrazně méně než minutu pro celý marketingový balíček.
Commitněte locale soubory a nasadťe
Vygenerované locale soubory jsou platný JSON se stejnou strukturou jako zdroj. Commitněte je do repozitáře. Přidejte překladový skript do CI pipeline, aby byly locale vždy synchronizované se změnami obsahu.
Použití vícejazyčnosti v Next.js
SaaS aplikace a dashboardy
Přeložte celou knihovnu UI řetězců v jednom spuštění skriptu. Podporuje všechny formátovací funkce next-intl — data, čísla, množná čísla — protože JSON struktura je přesně zachována.
Obsahové stránky a blogy
Pro obsahově náročné Next.js stránky používající Sanity nebo Contentful použijte PolyLingo k překladu obsahu stránek i UI řetězců — stejné API, stejné záruky zachování formátu.
E-commerce s regionálními variantami
Překládejte názvy produktů, popisy, stránky kategorií a checkout UI. Použijte pokročilý model pro marketingové texty, kde záleží na hlasu značky, standardní model pro funkční UI řetězce.
Často kladené otázky
Funguje to s Next.js App Routerem?
Ano. Integrace PolyLingo je jen skript, který čte a zapisuje JSON soubory — nemá žádnou závislost na interních částech Next.js. Funguje s App Routerem, Pages Routerem nebo jakýmkoli frameworkem. Ukázka konfigurace next-intl používá v4 API s requestLocale, které je kompatibilní s Next.js 13, 14 a 15.
Co když se můj messages.json často mění?
Doporučený postup je přidat překladový skript do CI/CD pipeline, spouštěný při změnách messages/en.json. Tím se všechny locale soubory automaticky synchronizují. Pro týmy s častými změnami textů to zcela zabrání driftu locale.
Funguje PolyLingo s next-i18next stejně jako s next-intl?
Ano. next-i18next používá stejnou strukturu locale JSON. Překladový skript funguje stejně — nasměrujte ho na svůj public/locales/en/ adresář a výstupy zapisujte do ostatních locale adresářů. Kompatibilita formátu JSON je stejná.
Co s dynamickým obsahem, který není v messages souboru?
Dynamický obsah — blogové příspěvky, popisy produktů, uživatelský obsah — by měl být překládán na datové vrstvě, buď ve vašem CMS, nebo přes build skript, který zpracuje obsah před tím, než se dostane do Next.js. PolyLingo zvládá Markdown, HTML i prostý text stejně dobře pro tento účel.
Mohu překládat jen řetězce, které se změnily od posledního běhu?
Postupný překlad (překlad pouze změněných klíčů) je v plánu. V současnosti skript překládá celý soubor znovu. Pro většinu message souborů (pod 20KB) je to dostatečně rychlé, aby se spouštělo při každém commitu. Pro velmi velké soubory se doporučuje rozdělení podle namespace.
Existuje způsob, jak si překlady před nasazením zkontrolovat?
Doporučený postup je commitnout přeložené locale soubory do samostatné větve nebo PR k revizi před sloučením do main. To je standardní praxe pro týmy, které potřebují lidskou kontrolu kvality překladu. PolyLingo generuje kvalitní první verzi — pro většinu UI řetězců výstup ze Standard modelu nevyžaduje úpravy.
Související návody
Překlad JSON locale souborů
Jak PolyLingo zachází se strukturou JSON, vnořenými objekty a interpolacemi.
Vícejazyčnost pro headless CMS
Překlad obsahu na úrovni CMS spolu s překladem UI řetězců.
Překlad Markdownu bez poškození formátování
Pro Next.js stránky s blogovými příspěvky v Markdownu nebo MDX stránkami.
Získejte svůj první přeložený locale soubor za méně než 5 minut.
Zdarma API klíč. Žádná kreditní karta. Vložte svůj messages JSON a ihned uvidíte výstup.
Získejte svůj API klíčNastavení překladového skriptu trvá 5 minut. Bezplatná úroveň — není potřeba kreditní karta.