Next.js + PolyLingo

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.

App Router
Podpora Next.js 13–15
next-intl
nativní integrace
10 jazyků
jedno spuštění skriptu
~3s
typický čas běhu překladového skriptu

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.

Nejčastější pracovní postup 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 je udržování více než 10 locale souborů synchronizovaných se změnami zdroje 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řekladu proměnných zástupců a JSON struktura se mezi locale liší — což způsobuje subtilní runtime chyby, které jsou těžko dohledatelné.

PolyLingo zapadne 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 JSON. 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 přes PolyLingo UI. Výsledek se přímo uloží do vašeho adresáře zpráv.

Pracovní postup: napište své anglické messages.json. Spusťte jeden skript, který zavolá PolyLingo API s vaším zdrojovým souborem a všemi kódy cílových jazyků. Obdržíte jeden přeložený JSON soubor na jazyk se stejnou strukturou. Každý zapiš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, zapište zpět do CMS přes jeho API. Celý proces může běžet jako krok sestavení nebo na webhook trigger.

PolyLingo překladový skript — tento repozitář obsahuje 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 — konfigurace next-intl v4
// 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 — přidejte překlad do svého 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"
  }
}

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 36 jazyků v jednom požadavku
  • Bezplatná úroveň — 100 000 tokenů měsíčně
  • Tento repozitář používá vlastní workflow: npm run i18n:polylingo znovu generuje marketingové locale ze souboru messages/en.json (viz MARKETING_I18N.md).
  • Funguje s App Routerem i Pages Routerem
  • Výstupní soubory jsou připravené ke commitu — není potřeba přeformátování

Nastavte vícejazyčnost ve své aplikaci Next.js

1

Nastavte next-intl s anglickým souborem zpráv

Nainstalujte next-intl a nakonfigurujte svůj i18n.ts a middleware. Napište všechny UI řetězce do messages/en.json. Strukturu souboru přizpůsobte potřebám aplikace — plochou nebo vnořenou. Toto bude váš jediný zdroj pravdy.

2

Spusťte překladový skript

Použijte PolyLingo JSON API ze skriptu v Node (viz kód výše). V tomto monorepo 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.

3

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, kategorie a UI pokladny. Použijte model Advanced pro marketingové texty, kde záleží na hlasu značky, Standard 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á API v4 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, který se spustí 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 i 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 adresář public/locales/en/ 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 jeho doručením 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 spuštění?

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 zkontrolovat překlady před nasazením do produkce?

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 větve. 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 Standard modelu nevyžaduje úpravy.

Získejte 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 zabere 5 minut. Bezplatná úroveň — není potřeba kreditní karta.

Přidejte vícejazyčnost do své aplikace Next.js — PolyLingo | PolyLingo