Skip to content

Commit abac39b

Browse files
authored
fix(paraglide): prerender & ignore cache (#844)
1 parent f277f0d commit abac39b

File tree

5 files changed

+59
-18
lines changed

5 files changed

+59
-18
lines changed

.changeset/lovely-onions-boil.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
fix(paraglide): git ignore cache of inlang project

.changeset/thick-vans-smash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
fix(paraglide): multi language when prerendering is now working by default

packages/sv/lib/addons/paraglide/index.ts

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,6 @@ export default defineAddon({
7070

7171
sv.devDependency('@inlang/paraglide-js', '^2.6.0');
7272

73-
sv.file('project.inlang/settings.json', (content) => {
74-
if (content) return content;
75-
76-
const { data, generateCode } = parseJson(content);
77-
78-
for (const key in DEFAULT_INLANG_PROJECT) {
79-
data[key] = DEFAULT_INLANG_PROJECT[key as keyof typeof DEFAULT_INLANG_PROJECT];
80-
}
81-
const { validLanguageTags } = parseLanguageTagInput(options.languageTags);
82-
const baseLocale = validLanguageTags[0];
83-
84-
data.baseLocale = baseLocale;
85-
data.locales = validLanguageTags;
86-
87-
return generateCode();
88-
});
89-
9073
// add the vite plugin
9174
sv.file(files.viteConfig, (content) => {
9275
const { ast, generateCode } = parseScript(content);
@@ -175,11 +158,46 @@ export default defineAddon({
175158
if (!content) return content;
176159

177160
if (!content.includes(`\n${paraglideOutDir}`)) {
178-
content = content.trimEnd() + `\n\n# Paraglide\n${paraglideOutDir}`;
161+
content = content.trimEnd() + `\n\n# Paraglide\n${paraglideOutDir}\nproject.inlang/cache/`;
179162
}
180163
return content;
181164
});
182165

166+
sv.file('project.inlang/settings.json', (content) => {
167+
if (content) return content;
168+
169+
const { data, generateCode } = parseJson(content);
170+
171+
for (const key in DEFAULT_INLANG_PROJECT) {
172+
data[key] = DEFAULT_INLANG_PROJECT[key as keyof typeof DEFAULT_INLANG_PROJECT];
173+
}
174+
const { validLanguageTags } = parseLanguageTagInput(options.languageTags);
175+
const baseLocale = validLanguageTags[0];
176+
177+
data.baseLocale = baseLocale;
178+
data.locales = validLanguageTags;
179+
180+
return generateCode();
181+
});
182+
183+
sv.file(`${kit.routesDirectory}/+layout.svelte`, (content) => {
184+
const { ast, generateCode } = parseSvelte(content);
185+
const scriptAst = svelte.ensureScript(ast);
186+
imports.addNamed(scriptAst, {
187+
imports: ['locales', 'localizeHref'],
188+
from: '$lib/paraglide/runtime'
189+
});
190+
imports.addNamed(scriptAst, { imports: ['page'], from: '$app/state' });
191+
ast.fragment.nodes.push(
192+
...svelte.toFragment(`<div style="display:none">
193+
{#each locales as locale}
194+
<a href={localizeHref(page.url.pathname, { locale })}>{locale}</a>
195+
{/each}
196+
</div>`)
197+
);
198+
return generateCode();
199+
});
200+
183201
if (options.demo) {
184202
sv.file(`${kit.routesDirectory}/demo/+page.svelte`, (content) => {
185203
return addToDemoPage(content, 'paraglide', typescript);

packages/sv/lib/cli/tests/snapshots/create-with-all-addons/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ vite.config.ts.timestamp-*
2525

2626
# Paraglide
2727
src/lib/paraglide
28+
project.inlang/cache/
2829

2930
# SQLite
3031
*.db
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
<script lang="ts">
2+
import { page } from '$app/state';
3+
import { locales, localizeHref } from '$lib/paraglide/runtime';
24
import './layout.css';
35
import favicon from '$lib/assets/favicon.svg';
46
57
let { children } = $props();
68
</script>
79

810
<svelte:head><link rel="icon" href={favicon} /></svelte:head>
11+
912
{@render children()}
13+
<div style="display:none">
14+
{#each locales as locale}
15+
<a
16+
href={localizeHref(page.url.pathname, { locale })}
17+
>
18+
{locale}
19+
</a>
20+
{/each}
21+
</div>

0 commit comments

Comments
 (0)