@@ -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 ) ;
0 commit comments