Lingvit

Add automatic translation to any Svelte or SvelteKit app

One script in app.html (SvelteKit) or index.html (Svelte) translates all components, routes, and dynamically loaded content — without touching a single component file.

What gets translated

  • All Svelte components and pages
  • SvelteKit route layouts
  • Server-side rendered content
  • Svelte stores rendered in templates
  • Dynamic imports and lazy routes
  • Error pages (+error.svelte)

Setup guide

  1. Create a Lingvit project

    Sign up at app.lingvit.com, create a project, and add your domain.

  2. Add the script to your HTML template

    For SvelteKit, edit src/app.html. For plain Svelte (Vite), edit index.html:

    <!-- SvelteKit: src/app.html -->
    <!doctype html>
    <html lang="%sveltekit.lang%">
      <head>%sveltekit.head%</head>
      <body>
        <div style="display: contents">%sveltekit.body%</div>
        <script src="https://cdn.lingvit.com/widget/v1/widget.bundle.js" async></script>
      </body>
    </html>
  3. Select languages and deploy

    Choose target languages in the Lingvit dashboard. SvelteKit client-side navigation and reactive Svelte store updates are detected automatically.

Frequently asked questions

Does it work with SvelteKit's file-based routing?

Yes. SvelteKit's client-side routing replaces page content in the DOM, which Lingvit's MutationObserver detects and translates immediately.

Svelte 4 or Svelte 5?

Both. Lingvit operates at the HTML output level, so it works with any version of Svelte or SvelteKit, including Svelte 5's runes-based reactivity.

What about server-rendered pages?

SSR pages are rendered in the source language on the server. Lingvit translates client-side immediately after hydration — typically within milliseconds.

Does it handle content loaded by SvelteKit load functions?

Yes. Content rendered from load function results appears in the DOM like any other dynamic content — Lingvit observes and translates it automatically.

Start translating your Svelte / SvelteKit site

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