product icon

Paraglide-SvelteKit

App

Inlang-ecosystem compatibility badge

Getting Started

Get started instantly with the Paraglide-SvelteKit CLI.

npx @inlang/paraglide-sveltekit init
npm install

The CLI will ask you which languages you want to support. This can be changed later.

  • Create an Inlang Project
  • Create translation files for each of your languages
  • Add necessary Provider Components and files
  • Update your vite.config.js file to use the Paraglide-SvelteKit Plugin.

You can now start your development server and visit /de, /ar, or whatever languages you've set up.

Creating Messages

Your messages live in messages/{languageTag}.json files. You can add messages in these files as key-value pairs of the message ID and the translations.

Use curly braces to add parameters.

// messages/en.json
{
	// The $schema key is automatically ignored
	"$schema": "https://inlang.com/schema/inlang-message-format",

	"hello_world": "Hello World!",
	"greetings": "Greetings {name}."
}

Learn more about the format in the Inlang Message Format Documentation.

Note: All messages you use in your project must be added to these files. It is not possible to dynamically add more messages at runtime.

Using messages in Code

The Paraglide compiler will generate a src/lib/paraglide/messages.js file that contains your messages. Import messages from there. By convention, a wildcard import is used.

<script>
	import * as m from '$lib/paraglide/messages.js'
</script>

<h1>{m.homepage_title()}</h1>
<p>{m.homepage_subtitle({ some: "param" })}</p>

Only messages used on the current page are sent to the client. Any messages that aren't used on the current page will be tree-shaken out.

Accessing Language in Code

You can access the current language with the languageTag() function.

<script>
	import { languageTag } from '$lib/paraglide/runtime.js'
</script>

<h1>{languageTag()}</h1>

On the server languageTag() is scoped to the current request, there is no danger of multiple requests interfering. languageTag() can safely be called in server-load functions and form actions.

Language detection

The language is determined based on the URL. If the first segment of the URL is a language tag, that language will be used. If no language tag is present, the default language will be used.

  • /about - English
  • /de/about - German

The reroute hook in src/hooks.js (added automatically) automatically rewrites requests that include the language in the URL to the correct page. There is no need to modify your routes to add a [locale] segment.

src/
  routes/
	+layout.svelte
	+page.svelte