svelte-dialect
Крошечный i18n на MessageFormat 2 для Svelte 5 и SvelteKit.
Руны вместо сторов, ключи с неймспейсами, определение локали на сервере, маршрутизация в URL и типизированные ключи сообщений — в библиотеке, которую можно прочитать за один присест. Этот сайт и есть демо: он работает ровно на той конфигурации, что описана здесь, вместе с префиксом.
Работает на MessageFormat 2 — разметка приходит сниппетами, а не склейкой строк
Быстрый старт #
Суть: создайте диалект один раз и подключите два хука. Полный путь — от установки до первой переведённой строки — на странице «Установка».
import { createDialect } from 'svelte-dialect/kit';
export const { t, handle, reroute, localizeHref, locales } = createDialect({
messages: import.meta.glob('./messages/**/*.json', { eager: true }),
defaultLocale: 'en',
routing: true
});import type { Handle } from '@sveltejs/kit/hooks';
import { handle as dialect } from '#lib/i18n.js';
export const handle: Handle = dialect;import type { Reroute } from '@sveltejs/kit/hooks';
import { reroute as dialect } from '#lib/i18n.js';
export const reroute: Reroute = dialect;Попробуйте #
Привет, Svelte!
Вы кликнули 0 раз
Категории множественного числа берутся из локали, а не из библиотеки. Переключитесь на английский — то же сообщение выберет one / other.
Куда дальше #
Установка
Установите пакет и подключите его по шагам — до первой переведённой строки на странице.
ПодробнееФайлы сообщений
Ключи с неймспейсами, множественное число, числа и даты, и что происходит, когда перевод отсутствует или сломан.
ПодробнееЛокаль в URL
/some/url для дефолтной локали, /ru/some/url для остальных — запоминается в cookie, переопределяется префиксом; на этой конфигурации работает сайт.
Подробнее