Skip to content

Instantly share code, notes, and snippets.

@omar2205
Last active February 3, 2023 15:10
Show Gist options
  • Save omar2205/d55d8ff748192f9685431a688beb5dc1 to your computer and use it in GitHub Desktop.
Save omar2205/d55d8ff748192f9685431a688beb5dc1 to your computer and use it in GitHub Desktop.
i18n svelte type-safe
<html theme="%theme%" lang="%lang%" dir="%dir%">
import type { Handle } from '@sveltejs/kit'
import { parseSettingsCookie, resetSettingsCookie } from './lib/cookies'
const RTL_LANGS = ['ar']
export const handle = (({ event, resolve }) => {
let settingsCookie: undefined | string = event.cookies.get('settings')
if (!settingsCookie) {
resetSettingsCookie(event)
}
const { settings, badCookie } = parseSettingsCookie(settingsCookie)
if (badCookie) {
resetSettingsCookie(event)
}
event.locals.settings = settings
return resolve(event, {
transformPageChunk: ({ html }) =>
html
.replace('%theme%', settings.theme)
.replace('%lang%', settings.lang)
.replace('%dir%', RTL_LANGS.includes(settings.lang.toLowerCase()) ? 'rtl' : 'ltr'),
})
}) satisfies Handle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment