i18n for Svelte - Docs Github
Go to Home
SSR Mode
Your lang: en it randomly generate for simulate ssr mode
Available locale: id, en
// src/hooks.server.ts
import { setDefaultLocale } from '$lib/lang/i18n.js';
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ event, resolve }) => {
// const lang = event.request.headers.get('accept-language')?.split(',')[0];
// random generate for simulate ssr mode locale
const lang = (Math.random() > 0.5 ? 'id' : 'en') as 'id' | 'en';
console.log(lang);
setDefaultLocale(lang);
return resolve(event);
};
// +page.svelte
import { availableLocales, getLocale, setLocale, t } from '$lib/lang/i18n.js';
const toggleLocale = () => {
const locale = getLocale();
const newLocale = locale === 'en' ? 'id' : 'en';
setLocale(newLocale);
// hit api for change user language in database
};
en.json
{
"world": "World",
"hello_{name}": "Hello {name}",
"you_have_{count}_apple": "You have {count} apple",
"you_have_{count}_apple_plural": "You have {count} apples",
"you_have_{count}_item": "You have {count} item"
}
id.json
{
"world": "Dunia",
"hello_{name}": "Halo {name}",
"you_have_{count}_apple": "Kamu punya {count} apel",
"you_have_{count}_apple_plural": "Kamu punya {count} apel",
"you_have_{count}_item": "Kamu punya {count} item"
}
Current lang: id
{t('world')} Dunia