diff --git a/.changeset/grumpy-years-juggle.md b/.changeset/grumpy-years-juggle.md new file mode 100644 index 000000000..fb1b8d01b --- /dev/null +++ b/.changeset/grumpy-years-juggle.md @@ -0,0 +1,5 @@ +--- +'sv': patch +--- + +fix(paraglide): add text-direction support diff --git a/packages/sv/src/addons/paraglide.ts b/packages/sv/src/addons/paraglide.ts index 53ac29d76..6bcde3224 100644 --- a/packages/sv/src/addons/paraglide.ts +++ b/packages/sv/src/addons/paraglide.ts @@ -111,11 +111,15 @@ export default defineAddon({ from: '$lib/paraglide/server', imports: ['paraglideMiddleware'] }); + js.imports.addNamed(ast, { + from: '$lib/paraglide/runtime', + imports: ['getTextDirection'] + }); const hookHandleContent = `({ event, resolve }) => paraglideMiddleware(event.request, ({ request, locale }) => { event.request = request; return resolve(event, { - transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale) + transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale).replace('%paraglide.dir%', getTextDirection(locale)) }); });`; js.kit.addHooksHandle(ast, { @@ -128,7 +132,7 @@ export default defineAddon({ return generateCode(); }); - // add the lang attribute placeholder to app.html + // add the lang and dir attributes placeholder to app.html sv.file('src/app.html', (content) => { const { ast, generateCode } = parse.html(content); @@ -143,6 +147,7 @@ export default defineAddon({ return generateCode(); } html.addAttribute(htmlNode, 'lang', '%paraglide.lang%'); + html.addAttribute(htmlNode, 'dir', '%paraglide.dir%'); return generateCode(); }); diff --git a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/app.html b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/app.html index 8bf98e7ee..74b5065b0 100644 --- a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/app.html +++ b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/app.html @@ -1,6 +1,6 @@ - + diff --git a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.server.ts b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.server.ts index 141074b53..f0872bb70 100644 --- a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.server.ts +++ b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/src/hooks.server.ts @@ -3,13 +3,14 @@ import { building } from '$app/environment'; import { auth } from '$lib/server/auth'; import { svelteKitHandler } from 'better-auth/svelte-kit'; import type { Handle } from '@sveltejs/kit'; +import { getTextDirection } from '$lib/paraglide/runtime'; import { paraglideMiddleware } from '$lib/paraglide/server'; const handleParaglide: Handle = ({ event, resolve }) => paraglideMiddleware(event.request, ({ request, locale }) => { event.request = request; return resolve(event, { - transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale) + transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale).replace('%paraglide.dir%', getTextDirection(locale)) }); });