Lisää monikielisyys Next.js-sovellukseesi.
Käännä paikalliset tiedostosi, Markdown-sisältö ja HTML-sivut yhdellä API-kutsulla. Toimii App Routerin, next-intl:n ja minkä tahansa i18n-reitityksen kanssa.
Next.js tarjoaa reitityksen. Se ei tarjoa käännöksiä.
Next.js App Router tukee erinomaisesti paikallispohjaista reititystä. Kirjastot kuten next-intl tekevät käännöstiedostojen hallinnasta ja paikallisen vaihdosta helppoa. Mitä ne eivät ratkaise, on itse käännös — jonkun täytyy tuottaa käännetty sisältö jokaisella kielellä, ja se joku olet yleensä sinä. Useimmille tiimeille työnkulku on kopioida englanninkielinen JSON DeepL:ään, korjata rikkoutunut muotoilu, liittää tulos takaisin, ja toistaa jokaiselle kielelle. Se on hidasta, virhealtista eikä skaalaudu.
Yleisin työnkulku on kirjoittaa kaikki käyttöliittymän merkkijonot englanniksi lähdekoodiin ja sitten kääntää messages.json-tiedosto jokaiselle kohdekielelle. Teoriassa tämä on suoraviivaista. Käytännössä yli 10 paikallisen tiedoston pitäminen synkronissa lähdemuutosten kanssa on jatkuva kipukohta. Joka kerta kun englanninkielinen teksti muuttuu, jokainen paikallinen tiedosto täytyy päivittää. Kun käytetään tavallisia käännös-API:ita tähän, avaimet voivat rikkoutua, muuttujapaikat kääntyä ja JSON-rakenne vaihdella paikallisten välillä — aiheuttaen vaikeasti jäljitettäviä runtime-virheitä.
PolyLingo sopii olemassa olevaan Next.js i18n-asennukseesi.
Jos käytät next-intl:ää tai mitä tahansa muuta i18n-kirjastoa, viestisi ovat jo JSON-muodossa. PolyLingo ottaa tämän JSONin, lähettää sen käännösmallin läpi ja palauttaa käännetyt kopiot jokaiselle kohdekielelle — avaimet säilytettyinä, rakenteet ehjinä ja merkkijonot oikein käännettyinä. Voit kutsua sitä build-skriptistä, webhookista tai PolyLingo-käyttöliittymästä. Tulokset putoavat suoraan messages-kansioosi.
Työnkulku: kirjoita englanninkieliset messages.json-viestisi. Suorita yksi skripti, joka kutsuu PolyLingo API:a lähdetiedostollasi ja kaikilla kohdekielikoodeilla. Saat yhden käännetyn JSON-tiedoston per kieli, rakenteeltaan identtisen. Kirjoita ne messages/ kansioon. Tee commit. Valmista.
Sisältörikkailla sivustoilla, joissa on Markdown CMS:ssä (Sanity, Contentful), sama lähestymistapa pätee sisältöön: vie Markdownina tai HTML:nä, käännä, kirjoita takaisin CMS:ään sen API:n kautta. Koko putki voi toimia build-vaiheena tai webhook-käynnistyksenä.
// 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"
}
}Miksi PolyLingo sopii Next.js i18n-työnkulkuun
- ✓Käännä messages/*.json-tiedostot suoraan — avaimet aina säilytettyinä
- ✓Käännä Markdown-sisältö blogikirjoituksiin ja dokumentaatiosivuille
- ✓Toimii next-intl:n, next-i18next:n ja räätälöityjen asetusten kanssa
- ✓REST API integroituu build-skripteihin ja CMS-webhookeihin
- ✓Kaikki 36 kieltä yhdellä pyynnöllä
- ✓Ilmainen taso — 100 000 tokenia kuukaudessa
- ✓Tämä repositorio käyttää omaa työnkulkuaan: npm run i18n:polylingo generoi markkinointipaikalliset tiedostot messages/en.json:stä (katso MARKETING_I18N.md).
- ✓Toimii App Routerin ja Pages Routerin kanssa
- ✓Tulostiedostot ovat valmiita commitoitavaksi — ei uudelleenmuotoilua tarvita
Ota monikielisyys käyttöön Next.js-sovelluksessasi
Ota next-intl käyttöön englanninkielisellä viestitiedostollasi
Asenna next-intl ja konfiguroi i18n.ts ja middleware. Kirjoita kaikki käyttöliittymän merkkijonot messages/en.json-tiedostoon. Rakenna tiedosto sovelluksesi tarpeiden mukaan — tasainen tai sisäkkäinen. Tämä on totuuden lähteesi.
Suorita käännösskripti
Käytä PolyLingo JSON API:a pienen Node-skriptin kautta (katso yllä oleva koodi). Tässä monorepossa suorita npm run i18n:polylingo frontend/-kansiosta POLYLINGO_API_KEY asetettuna — se pilkkoo suuret nimetilat luotettavuuden vuoksi. Tyypilliset suoritukset kestävät alle minuutin koko markkinointipaketille.
Commitoi paikalliset tiedostot ja ota käyttöön
Generoidut paikalliset tiedostot ovat validia JSONia, rakenteeltaan identtisiä lähteen kanssa. Commitoi ne repositorioosi. Lisää käännösskripti CI-putkeen, jotta paikalliset tiedostot pysyvät synkronissa jokaisen sisällön muutoksen kanssa.
Next.js monikieliset käyttötapaukset
SaaS-sovellukset ja hallintapaneelit
Käännä koko käyttöliittymän merkkijonokirjasto yhdellä skriptin suorituksella. Tukee kaikkia next-intl:n muotoiluominaisuuksia — päivämääriä, numeroita, monikkoja — koska JSON-rakenne säilyy tarkasti.
Sisältösivustot ja blogit
Sisältörikkailla Next.js-sivustoilla, jotka käyttävät Sanityä tai Contentfulia, käytä PolyLingoa kääntämään sivujen sisältö sekä käyttöliittymän merkkijonot — sama API, samat muodon säilytyslupaukset.
Verkkokauppa alueellisilla versioilla
Käännä tuotteen nimet, kuvaukset, kategoriasivut ja kassakäyttöliittymä. Käytä Advanced-mallia markkinointiteksteihin, joissa brändin ääni on tärkeä, Standard-mallia toiminnallisiin käyttöliittymän merkkijonoihin.
Usein kysytyt kysymykset
Toimiiko tämä Next.js App Routerin kanssa?
Kyllä. PolyLingo-integraatio on vain skripti, joka lukee ja kirjoittaa JSON-tiedostoja — se ei riipu Next.js:n sisäisistä osista. Se toimii App Routerin, Pages Routerin tai minkä tahansa kehyksen kanssa. Näytetty next-intl-konfiguraatio käyttää v4 API:a requestLocale-toiminnolla, joka on yhteensopiva Next.js 13, 14 ja 15 kanssa.
Entä jos messages.json muuttuu usein?
Suositeltu käytäntö on lisätä käännösskripti CI/CD-putkeen, joka käynnistyy muutoksista messages/en.json-tiedostoon. Tämä pitää kaikki paikalliset tiedostot automaattisesti synkronissa. Tiimeille, joilla on usein tekstimuutoksia, tämä estää paikallisten tiedostojen eriytymisen kokonaan.
Toimiiko PolyLingo myös next-i18next:n kanssa next-intl:n lisäksi?
Kyllä. next-i18next käyttää samaa paikallista JSON-rakennetta. Käännösskripti toimii samalla tavalla — osoita se public/locales/en/ kansioon ja kirjoita tulokset muihin paikallisiin kansioihin. JSON-muodon yhteensopivuus on sama.
Entä dynaaminen sisältö, joka ei ole messages-tiedostossa?
Dynaaminen sisältö — blogikirjoitukset, tuotekuvaukset, käyttäjän luoma sisältö — tulisi kääntää datakerroksessa, joko CMS:ssäsi tai build-skriptillä, joka käsittelee sisällön ennen kuin se saavuttaa Next.js:n. PolyLingo käsittelee Markdownia, HTML:ää ja pelkkää tekstiä yhtä hyvin tähän tarkoitukseen.
Voinko kääntää vain ne merkkijonot, jotka ovat muuttuneet viimeisestä suorituksesta?
Inkrementaalinen käännös (vain muuttuneiden avainten kääntäminen) on suunnitteilla. Tällä hetkellä skripti kääntää koko tiedoston uudelleen. Useimmille viestitiedostoille (alle 20 kt) tämä on tarpeeksi nopeaa suoritettavaksi jokaisella commitilla. Erittäin suurille tiedostoille suositellaan pilkkomista nimetiloittain.
Onko olemassa tapa tarkistaa käännökset ennen tuotantoon vientiä?
Suositeltu käytäntö on commitoida käännetyt paikalliset tiedostot erilliselle haaralle tai PR:lle tarkistusta varten ennen yhdistämistä päähaaraan. Tämä on vakiokäytäntö tiimeille, jotka tarvitsevat ihmistarkistuksen käännösten laadulle. PolyLingo tuottaa hyvän ensimmäisen version — useimmille käyttöliittymän merkkijonoille Standard-mallin tulos ei vaadi muokkausta.
Aiheeseen liittyvät oppaat
Käännä JSON-paikalliset tiedostot
Miten PolyLingo käsittelee JSON-rakenteen, sisäkkäiset objektit ja interpolointimuuttujat.
Monikielisyys headless CMS:lle
Sisällön kääntäminen CMS-tasolla käyttöliittymän merkkijonojen käännöksen rinnalla.
Käännä Markdown rikkomatta muotoilua
Next.js-sivustoille, joissa on Markdown-blogikirjoituksia tai MDX-sivuja.
Saat ensimmäisen paikallisen tiedostosi käännettyä alle 5 minuutissa.
Ilmainen API-avain. Ei luottokorttia. Liitä messages JSON ja näe tulos heti.
Hanki API-avainKäännösskriptin käyttöönotto vie 5 minuuttia. Ilmainen taso — ei luottokorttia vaadita.