Lingvit

Multilingual Next.js apps without i18n rewrites

No next-intl, no i18n config in next.config, no locale-prefixed routing unless you want it. Add one Script component and Lingvit translates everything — SSR pages, SSG pages, App Router Server Components, and all client-side navigation.

What gets translated

  • Server-rendered (SSR) pages
  • Static (SSG) and ISR pages
  • App Router layouts and pages
  • Pages Router pages
  • Client Components after hydration
  • Dynamic routes and data-fetched content
  • Parallel and intercepting routes
  • Error and not-found pages

Setup guide

  1. Add the Script component to your root layout

    In app/layout.tsx (App Router) or pages/_app.tsx (Pages Router), import Next.js Script and add it with strategy="afterInteractive":

    import Script from "next/script";
    
    // Inside your layout's <body>:
    <Script
      src="https://cdn.lingvit.com/widget/v1/widget.bundle.js"
      strategy="afterInteractive"
    />
  2. The widget handles hydration automatically

    afterInteractive loads after Next.js hydration completes. The MutationObserver then watches for App Router navigations, Suspense boundary resolutions, and any state-driven DOM updates.

  3. Connect in the Lingvit dashboard

    Create a project at app.lingvit.com, add your Next.js app URL, and select target languages. Stored translations can be reused after the first generation; delivery latency still depends on the visitor network and page.

Frequently asked questions

Does it work with the App Router and Server Components?

Yes. Server Components render to HTML before reaching the browser — Lingvit translates that HTML just like any static content. Client Components are also covered after hydration.

Do I need to configure i18n in next.config?

No. Lingvit does not require internationalized routing. Your URLs stay as /pricing, /about etc. The language switcher handles the user's preference without URL changes, unless you specifically want locale prefixes.

Does it work with Vercel Edge Runtime?

Yes. Lingvit is a client-side widget with no dependency on your rendering runtime. Pages served from the Edge Runtime, the Node.js runtime, or static export all work identically.

Does it affect Core Web Vitals?

No. The script is loaded with strategy="afterInteractive", which defers it until after the page is interactive. LCP and FID are not affected.

Start translating your Next.js site

A monthly word generation allowance for new translations. Cached delivery uses no extra allowance.