@intlayer/docs 8.5.2 → 8.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/docs/ar/intlayer_with_react_router_v7.md +2 -4
  2. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +2 -4
  3. package/docs/ar/intlayer_with_svelte_kit.md +2 -2
  4. package/docs/ar/intlayer_with_tanstack+solid.md +0 -17
  5. package/docs/ar/intlayer_with_tanstack.md +0 -8
  6. package/docs/ar/intlayer_with_vite+lit.md +0 -1
  7. package/docs/ar/intlayer_with_vite+solid.md +0 -1
  8. package/docs/ar/intlayer_with_vite+svelte.md +1 -1
  9. package/docs/bn/intlayer_with_vite+lit.md +0 -1
  10. package/docs/cs/intlayer_with_vite+lit.md +0 -1
  11. package/docs/de/intlayer_with_react_router_v7.md +2 -4
  12. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -2
  13. package/docs/de/intlayer_with_svelte_kit.md +2 -2
  14. package/docs/de/intlayer_with_tanstack+solid.md +78 -21
  15. package/docs/de/intlayer_with_tanstack.md +96 -28
  16. package/docs/de/intlayer_with_vite+lit.md +0 -1
  17. package/docs/de/intlayer_with_vite+solid.md +0 -1
  18. package/docs/de/intlayer_with_vite+svelte.md +1 -1
  19. package/docs/en/intlayer_with_react_router_v7.md +1 -2
  20. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +2 -4
  21. package/docs/en/intlayer_with_svelte_kit.md +2 -2
  22. package/docs/en/intlayer_with_tanstack+solid.md +79 -19
  23. package/docs/en/intlayer_with_tanstack.md +81 -10
  24. package/docs/en/intlayer_with_vite+lit.md +0 -1
  25. package/docs/en/intlayer_with_vite+solid.md +0 -1
  26. package/docs/en/intlayer_with_vite+svelte.md +5 -6
  27. package/docs/en-GB/intlayer_with_react_router_v7.md +2 -4
  28. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +2 -4
  29. package/docs/en-GB/intlayer_with_svelte_kit.md +2 -2
  30. package/docs/en-GB/intlayer_with_tanstack+solid.md +71 -17
  31. package/docs/en-GB/intlayer_with_tanstack.md +74 -9
  32. package/docs/en-GB/intlayer_with_vite+lit.md +0 -1
  33. package/docs/en-GB/intlayer_with_vite+solid.md +0 -1
  34. package/docs/en-GB/intlayer_with_vite+svelte.md +1 -1
  35. package/docs/es/intlayer_with_react_router_v7.md +2 -4
  36. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +2 -4
  37. package/docs/es/intlayer_with_svelte_kit.md +2 -2
  38. package/docs/es/intlayer_with_tanstack+solid.md +78 -21
  39. package/docs/es/intlayer_with_tanstack.md +96 -28
  40. package/docs/es/intlayer_with_vite+lit.md +0 -1
  41. package/docs/es/intlayer_with_vite+solid.md +0 -1
  42. package/docs/es/intlayer_with_vite+svelte.md +1 -1
  43. package/docs/fr/intlayer_with_react_router_v7.md +2 -4
  44. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +2 -4
  45. package/docs/fr/intlayer_with_svelte_kit.md +3 -3
  46. package/docs/fr/intlayer_with_tanstack+solid.md +78 -21
  47. package/docs/fr/intlayer_with_tanstack.md +96 -28
  48. package/docs/fr/intlayer_with_vite+lit.md +0 -1
  49. package/docs/fr/intlayer_with_vite+solid.md +0 -1
  50. package/docs/fr/intlayer_with_vite+svelte.md +1 -1
  51. package/docs/hi/intlayer_with_react_router_v7.md +2 -4
  52. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +2 -4
  53. package/docs/hi/intlayer_with_svelte_kit.md +2 -2
  54. package/docs/hi/intlayer_with_tanstack+solid.md +0 -17
  55. package/docs/hi/intlayer_with_tanstack.md +0 -8
  56. package/docs/hi/intlayer_with_vite+lit.md +0 -1
  57. package/docs/hi/intlayer_with_vite+solid.md +0 -1
  58. package/docs/hi/intlayer_with_vite+svelte.md +1 -1
  59. package/docs/id/intlayer_with_react_router_v7.md +2 -4
  60. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +2 -4
  61. package/docs/id/intlayer_with_svelte_kit.md +2 -2
  62. package/docs/id/intlayer_with_tanstack+solid.md +0 -17
  63. package/docs/id/intlayer_with_tanstack.md +0 -8
  64. package/docs/id/intlayer_with_vite+lit.md +0 -1
  65. package/docs/id/intlayer_with_vite+solid.md +0 -1
  66. package/docs/id/intlayer_with_vite+svelte.md +1 -1
  67. package/docs/it/intlayer_with_react_router_v7.md +2 -4
  68. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +2 -4
  69. package/docs/it/intlayer_with_svelte_kit.md +3 -3
  70. package/docs/it/intlayer_with_tanstack+solid.md +76 -19
  71. package/docs/it/intlayer_with_tanstack.md +96 -30
  72. package/docs/it/intlayer_with_vite+lit.md +0 -1
  73. package/docs/it/intlayer_with_vite+solid.md +0 -1
  74. package/docs/it/intlayer_with_vite+svelte.md +1 -1
  75. package/docs/ja/intlayer_with_react_router_v7.md +1 -2
  76. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +2 -4
  77. package/docs/ja/intlayer_with_tanstack+solid.md +81 -22
  78. package/docs/ja/intlayer_with_tanstack.md +779 -93
  79. package/docs/ja/intlayer_with_vite+lit.md +0 -1
  80. package/docs/ja/intlayer_with_vite+solid.md +0 -1
  81. package/docs/ja/intlayer_with_vite+svelte.md +1 -1
  82. package/docs/ko/intlayer_with_react_router_v7.md +2 -4
  83. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +2 -4
  84. package/docs/ko/intlayer_with_svelte_kit.md +2 -2
  85. package/docs/ko/intlayer_with_tanstack+solid.md +79 -22
  86. package/docs/ko/intlayer_with_tanstack.md +95 -101
  87. package/docs/ko/intlayer_with_vite+lit.md +0 -1
  88. package/docs/ko/intlayer_with_vite+solid.md +0 -1
  89. package/docs/ko/intlayer_with_vite+svelte.md +1 -1
  90. package/docs/nl/intlayer_with_vite+lit.md +0 -1
  91. package/docs/pl/intlayer_with_react_router_v7.md +2 -4
  92. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +2 -4
  93. package/docs/pl/intlayer_with_svelte_kit.md +2 -2
  94. package/docs/pl/intlayer_with_tanstack+solid.md +0 -17
  95. package/docs/pl/intlayer_with_tanstack.md +0 -8
  96. package/docs/pl/intlayer_with_vite+lit.md +0 -1
  97. package/docs/pl/intlayer_with_vite+solid.md +0 -1
  98. package/docs/pl/intlayer_with_vite+svelte.md +1 -1
  99. package/docs/pt/intlayer_with_react_router_v7.md +1 -2
  100. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +2 -4
  101. package/docs/pt/intlayer_with_svelte_kit.md +3 -3
  102. package/docs/pt/intlayer_with_tanstack+solid.md +76 -19
  103. package/docs/pt/intlayer_with_tanstack.md +96 -30
  104. package/docs/pt/intlayer_with_vite+lit.md +0 -1
  105. package/docs/pt/intlayer_with_vite+solid.md +0 -1
  106. package/docs/pt/intlayer_with_vite+svelte.md +1 -1
  107. package/docs/ru/intlayer_with_react_router_v7.md +2 -4
  108. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +2 -4
  109. package/docs/ru/intlayer_with_svelte_kit.md +2 -2
  110. package/docs/ru/intlayer_with_tanstack+solid.md +78 -21
  111. package/docs/ru/intlayer_with_tanstack.md +99 -33
  112. package/docs/ru/intlayer_with_vite+lit.md +0 -1
  113. package/docs/ru/intlayer_with_vite+solid.md +0 -1
  114. package/docs/ru/intlayer_with_vite+svelte.md +1 -1
  115. package/docs/tr/intlayer_with_react_router_v7.md +2 -4
  116. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +2 -4
  117. package/docs/tr/intlayer_with_svelte_kit.md +2 -2
  118. package/docs/tr/intlayer_with_tanstack+solid.md +0 -17
  119. package/docs/tr/intlayer_with_tanstack.md +0 -8
  120. package/docs/tr/intlayer_with_vite+lit.md +0 -1
  121. package/docs/tr/intlayer_with_vite+solid.md +0 -1
  122. package/docs/tr/intlayer_with_vite+svelte.md +1 -1
  123. package/docs/uk/intlayer_with_react_router_v7.md +1 -2
  124. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +2 -4
  125. package/docs/uk/intlayer_with_svelte_kit.md +2 -2
  126. package/docs/uk/intlayer_with_tanstack+solid.md +0 -17
  127. package/docs/uk/intlayer_with_tanstack.md +0 -8
  128. package/docs/uk/intlayer_with_vite+lit.md +0 -1
  129. package/docs/uk/intlayer_with_vite+solid.md +0 -1
  130. package/docs/uk/intlayer_with_vite+svelte.md +1 -1
  131. package/docs/ur/intlayer_with_vite+lit.md +0 -1
  132. package/docs/vi/intlayer_with_react_router_v7.md +2 -4
  133. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +2 -4
  134. package/docs/vi/intlayer_with_svelte_kit.md +2 -2
  135. package/docs/vi/intlayer_with_tanstack+solid.md +0 -17
  136. package/docs/vi/intlayer_with_tanstack.md +0 -8
  137. package/docs/vi/intlayer_with_vite+lit.md +0 -1
  138. package/docs/vi/intlayer_with_vite+solid.md +0 -1
  139. package/docs/vi/intlayer_with_vite+svelte.md +1 -1
  140. package/docs/zh/intlayer_with_react_router_v7.md +2 -4
  141. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +2 -4
  142. package/docs/zh/intlayer_with_svelte_kit.md +2 -2
  143. package/docs/zh/intlayer_with_tanstack+solid.md +80 -23
  144. package/docs/zh/intlayer_with_tanstack.md +96 -104
  145. package/docs/zh/intlayer_with_vite+lit.md +0 -1
  146. package/docs/zh/intlayer_with_vite+solid.md +0 -1
  147. package/docs/zh/intlayer_with_vite+svelte.md +1 -1
  148. package/package.json +8 -8
@@ -370,7 +370,7 @@ pour accéder à sa valeur réactive (par exemple, `$content.title`).
370
370
  <!-- Afficher le contenu comme contenu simple -->
371
371
  <h1>{$content.title}</h1>
372
372
  <!-- Pour rendre le contenu éditable via l'éditeur -->
373
- <h1><svelte:component this={$content.title} /></h1>
373
+ <h1>{@const Title = $content.title}<Title /></h1>
374
374
  <!-- Pour afficher le contenu en tant que chaîne -->
375
375
  <div aria-label={$content.title.value}></div>
376
376
  ```
@@ -726,7 +726,7 @@ Pour pouvoir visualiser le sélecteur de l'éditeur intlayer, vous devrez utilis
726
726
  <h1>{$content.title}</h1>
727
727
 
728
728
  <!-- Rendre le contenu comme un composant (requis par l'éditeur) -->
729
- <svelte:component this={$content.component} />
729
+ {@const Component = $content.component}<Component />
730
730
  </div>
731
731
  ```
732
732
 
@@ -914,7 +914,7 @@ Pour pouvoir visualiser le sélecteur de l'éditeur intlayer, vous devrez utilis
914
914
  <h1>{$content.title}</h1>
915
915
 
916
916
  <!-- Rendre le contenu comme un composant (requis par l'éditeur) -->
917
- <svelte:component this={$content.component} />
917
+ {@const Component = $content.component}<Component />
918
918
  </div>
919
919
  ```
920
920
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-03-25
3
- updatedAt: 2026-03-25
3
+ updatedAt: 2026-03-29
4
4
  title: i18n Tanstack Start - Comment traduire une application Tanstack Start en utilisant Solid.js en 2026
5
5
  description: Apprenez à ajouter l'internationalisation (i18n) à votre application Tanstack Start en utilisant Intlayer et Solid.js. Suivez ce guide complet pour rendre votre application multilingue avec un routage tenant compte de la localisation.
6
6
  keywords:
@@ -12,6 +12,7 @@ keywords:
12
12
  - i18n
13
13
  - TypeScript
14
14
  - Routage de localisation
15
+ - Sitemap
15
16
  slugs:
16
17
  - doc
17
18
  - environment
@@ -140,16 +141,12 @@ Ajoutez le plugin intlayer dans votre configuration :
140
141
  import { intlayer } from "vite-intlayer";
141
142
  import { defineConfig } from "vite";
142
143
  import { devtools } from "@tanstack/devtools-vite";
143
- import viteTsConfigPaths from "vite-tsconfig-paths";
144
144
  import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
145
145
  import solidPlugin from "vite-plugin-solid";
146
146
 
147
147
  export default defineConfig({
148
148
  plugins: [
149
149
  devtools(),
150
- viteTsConfigPaths({
151
- projects: ["./tsconfig.json"],
152
- }),
153
150
  tanstackStart({
154
151
  router: {
155
152
  routeFileIgnorePattern:
@@ -221,9 +218,6 @@ function RootComponent() {
221
218
  }
222
219
  ```
223
220
 
224
- > [!NOTE]
225
- > Dans Solid, `useMatches` retourne un **signal** (accesseur réactif). Utilisez `matches()` (avec parenthèses) pour accéder à la valeur actuelle de manière réactive.
226
-
227
221
  ### Étape 6 : Créer la mise en page de la langue (Optionnel)
228
222
 
229
223
  Créez une mise en page qui gère le préfixe de la langue et effectue la validation. Cette mise en page garantira que seules les langues valides sont traitées.
@@ -415,7 +409,6 @@ function RouteComponent() {
415
409
  }
416
410
  ```
417
411
 
418
- > [!NOTE]
419
412
  > Dans Solid, `useIntlayer` retourne une fonction **accesseur** (par exemple, `content()`). Vous devez appeler cette fonction pour accéder au contenu réactif.
420
413
  >
421
414
  > Pour en savoir plus sur le hook `useIntlayer`, reportez-vous à la [documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/solid-intlayer/useIntlayer.md).
@@ -460,7 +453,6 @@ export const LocaleSwitcher = () => {
460
453
  export default LocaleSwitcher;
461
454
  ```
462
455
 
463
- > [!NOTE]
464
456
  > Dans Solid, `locale` provenant de `useLocale` est un **accesseur de signal**. Utilisez `locale()` (avec parenthèses) pour lire sa valeur actuelle de manière réactive.
465
457
  >
466
458
  > Pour en savoir plus sur le hook `useLocale`, reportez-vous à la [documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/solid-intlayer/useLocale.md).
@@ -502,15 +494,11 @@ import solid from "vite-plugin-solid";
502
494
  import { nitro } from "nitro/vite";
503
495
  import { defineConfig } from "vite";
504
496
  import { intlayer, intlayerProxy } from "vite-intlayer";
505
- import viteTsConfigPaths from "vite-tsconfig-paths";
506
497
 
507
498
  export default defineConfig({
508
499
  plugins: [
509
500
  intlayerProxy(), // Le proxy doit être placé avant le serveur si vous utilisez Nitro
510
501
  nitro(),
511
- viteTsConfigPaths({
512
- projects: ["./tsconfig.json"],
513
- }),
514
502
  intlayer(),
515
503
  tanstackStart({
516
504
  router: {
@@ -551,7 +539,7 @@ export const Route = createFileRoute("/{-$locale}/")({
551
539
 
552
540
  ---
553
541
 
554
- ### Étape 14 : Récupérer la langue dans vos actions serveur (Optionnel)
542
+ ### Étape 13 : Récupérer la langue dans vos actions serveur (Optionnel)
555
543
 
556
544
  Vous voudrez peut-être accéder à la langue actuelle depuis vos actions serveur ou vos points de terminaison d'API.
557
545
  Vous pouvez le faire en utilisant l'utilitaire `getLocale` d'`intlayer`.
@@ -588,7 +576,7 @@ export const getLocaleServer = createServerFn().handler(async () => {
588
576
 
589
577
  ---
590
578
 
591
- ### Étape 15 : Gérer les pages non trouvées (Optionnel)
579
+ ### Étape 14 : Gérer les pages non trouvées (Optionnel)
592
580
 
593
581
  Lorsqu'un utilisateur visite une page inexistante, vous pouvez afficher une page 404 personnalisée et le préfixe de langue peut impacter la manière dont la page non trouvée est déclenchée.
594
582
 
@@ -662,7 +650,7 @@ export const Route = createFileRoute("/{-$locale}/$")({
662
650
  });
663
651
  ```
664
652
 
665
- ### (Optionnel) Étape 16 : Extraire le contenu de vos composants
653
+ ### (Optionnel) Étape 15 : Extraire le contenu de vos composants
666
654
 
667
655
  Si vous avez une base de code existante, transformer des milliers de fichiers peut prendre du temps.
668
656
 
@@ -803,16 +791,12 @@ Mettez à jour votre `vite.config.ts` pour inclure le plugin `intlayerCompiler`
803
791
  import { intlayer, intlayerCompiler } from "vite-intlayer";
804
792
  import { defineConfig } from "vite";
805
793
  import { devtools } from "@tanstack/devtools-vite";
806
- import viteTsConfigPaths from "vite-tsconfig-paths";
807
794
  import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
808
795
  import solidPlugin from "vite-plugin-solid";
809
796
 
810
797
  export default defineConfig({
811
798
  plugins: [
812
799
  devtools(),
813
- viteTsConfigPaths({
814
- projects: ["./tsconfig.json"],
815
- }),
816
800
  tanstackStart({
817
801
  router: {
818
802
  routeFileIgnorePattern:
@@ -847,6 +831,79 @@ bun run build # Ou bun run dev
847
831
 
848
832
  ---
849
833
 
834
+ ### Étape 16 : Générer un Sitemap (Optionnel)
835
+
836
+ Intlayer est livré avec un générateur de sitemap intégré pour vous aider à créer facilement un sitemap pour votre application. Il gère les routes localisées et ajoute les métadonnées nécessaires pour les moteurs de recherche.
837
+
838
+ > Le sitemap généré par Intlayer prend en charge l'espace de noms `xhtml:link` (Hreflang XML Extensions). Contrairement aux générateurs de sitemap par défaut qui ne répertorient que les URL brutes, Intlayer crée automatiquement les liens bidirectionnels requis entre toutes les versions linguistiques d'une page (par exemple, `/about`, `/about?lang=fr` et `/about?lang=es`). Cela garantit que les moteurs de recherche indexent et servent correctement la bonne version linguistique au bon public.
839
+
840
+ Pour l'utiliser, vous devez d'abord configurer votre fichier `vite.config.ts` pour activer le pré-rendu de vos routes localisées et désactiver la génération de sitemap par défaut de TanStack Start.
841
+
842
+ ```typescript fileName="vite.config.ts"
843
+ import { localeMap, localeFlatMap } from "intlayer";
844
+ // ... autres imports
845
+
846
+ export const pathList = ["", "/about", "/404"];
847
+
848
+ const localizedPages = localeFlatMap(({ urlPrefix }) =>
849
+ pathList.map((path) => ({
850
+ path: `${urlPrefix}${path}`,
851
+ prerender: {
852
+ enabled: true,
853
+ },
854
+ }))
855
+ );
856
+
857
+ export default defineConfig({
858
+ plugins: [
859
+ // ... autres plugins
860
+ tanstackStart({
861
+ // ... autres configurations
862
+ sitemap: {
863
+ enabled: false,
864
+ },
865
+ prerender: {
866
+ enabled: true,
867
+ crawlLinks: false,
868
+ concurrency: 10,
869
+ },
870
+ pages: localizedPages,
871
+ }),
872
+ ],
873
+ });
874
+ ```
875
+
876
+ Ensuite, créez une route `src/routes/sitemap[.]xml.ts` qui utilise la fonction `generateSitemap` :
877
+
878
+ ```typescript fileName="src/routes/sitemap[.]xml.ts"
879
+ import { createFileRoute } from "@tanstack/solid-router";
880
+ import { generateSitemap } from "intlayer";
881
+
882
+ const SITE_URL = "http://localhost:3000";
883
+
884
+ export const Route = createFileRoute("/sitemap.xml")({
885
+ server: {
886
+ handlers: {
887
+ GET: async () => {
888
+ const sitemap = generateSitemap(
889
+ [
890
+ { path: "/", changefreq: "daily", priority: 1.0 },
891
+ { path: "/about", changefreq: "monthly", priority: 0.8 },
892
+ ],
893
+ { siteUrl: SITE_URL }
894
+ );
895
+
896
+ return new Response(sitemap, {
897
+ headers: { "Content-Type": "application/xml" },
898
+ });
899
+ },
900
+ },
901
+ },
902
+ });
903
+ ```
904
+
905
+ ---
906
+
850
907
  ### Étape 17 : Configurer TypeScript (Optionnel)
851
908
 
852
909
  Intlayer utilise l'augmentation de module pour bénéficier des avantages de TypeScript et rendre votre base de code plus robuste.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-09
3
- updatedAt: 2026-03-12
3
+ updatedAt: 2026-03-29
4
4
  title: Tanstack Start i18n - Comment traduire une application Tanstack Start en 2026
5
5
  description: Apprenez à ajouter l'internationalisation (i18n) à votre application Tanstack Start en utilisant Intlayer. Suivez ce guide complet pour rendre votre application multilingue avec un routage tenant compte de la locale.
6
6
  keywords:
@@ -12,6 +12,7 @@ keywords:
12
12
  - i18n
13
13
  - TypeScript
14
14
  - Routage par locale
15
+ - Sitemap
15
16
  slugs:
16
17
  - doc
17
18
  - environment
@@ -160,14 +161,10 @@ import viteReact from "@vitejs/plugin-react";
160
161
  import { nitro } from "nitro/vite";
161
162
  import { defineConfig } from "vite";
162
163
  import { intlayer } from "vite-intlayer";
163
- import viteTsConfigPaths from "vite-tsconfig-paths";
164
164
 
165
165
  const config = defineConfig({
166
166
  plugins: [
167
167
  nitro(),
168
- viteTsConfigPaths({
169
- projects: ["./tsconfig.json"],
170
- }),
171
168
  intlayer(),
172
169
  tanstackStart({
173
170
  router: {
@@ -593,15 +590,11 @@ import viteReact from "@vitejs/plugin-react";
593
590
  import { nitro } from "nitro/vite";
594
591
  import { defineConfig } from "vite";
595
592
  import { intlayer, intlayerProxy } from "vite-intlayer";
596
- import viteTsConfigPaths from "vite-tsconfig-paths";
597
593
 
598
594
  export default defineConfig({
599
595
  plugins: [
600
596
  intlayerProxy(), // Le proxy doit être placé avant le serveur si vous utilisez Nitro
601
597
  nitro(),
602
- viteTsConfigPaths({
603
- projects: ["./tsconfig.json"],
604
- }),
605
598
  intlayer(),
606
599
  tanstackStart({
607
600
  router: {
@@ -755,25 +748,7 @@ export const Route = createFileRoute("/{-$locale}/$")({
755
748
 
756
749
  ---
757
750
 
758
- ### Étape 15 : Configurer TypeScript (Optionnel)
759
-
760
- Intlayer utilise l'augmentation de module pour bénéficier des avantages de TypeScript et rendre votre codebase plus robuste.
761
-
762
- Assurez-vous que votre configuration TypeScript inclut les types autogénérés :
763
-
764
- ```json5 fileName="tsconfig.json"
765
- {
766
- // ... vos configurations existantes
767
- include: [
768
- // ... vos includes existants
769
- ".intlayer/**/*.ts", // Inclure les types auto-générés
770
- ],
771
- }
772
- ```
773
-
774
- ---
775
-
776
- ### (Optionnel) Étape 16 : Extraire le contenu de vos composants
751
+ ### (Optionnel) Étape 15 : Extraer le contenu de vos composants
777
752
 
778
753
  Si vous avez une base de code existante, transformer des milliers de fichiers peut prendre beaucoup de temps.
779
754
 
@@ -931,6 +906,99 @@ bun run build # Or bun run dev
931
906
 
932
907
  ---
933
908
 
909
+ ### Étape 16 : Générer un Sitemap (Optionnel)
910
+
911
+ Intlayer est livré avec un générateur de sitemap intégré pour vous aider à créer facilement un sitemap pour votre application. Il gère les routes localisées et ajoute les métadonnées nécessaires pour les moteurs de recherche.
912
+
913
+ > Le sitemap généré par Intlayer prend en charge l'espace de noms `xhtml:link` (Hreflang XML Extensions). Contrairement aux générateurs de sitemap par défaut qui ne répertorient que les URL brutes, Intlayer crée automatiquement les liens bidirectionnels requis entre toutes les versions linguistiques d'une page (par exemple, `/about`, `/about?lang=fr` et `/about?lang=es`). Cela garantit que les moteurs de recherche indexent et servent correctement la bonne version linguistique au bon public.
914
+
915
+ Pour l'utiliser, vous devez d'abord configurer votre fichier `vite.config.ts` pour activer le pré-rendu de vos routes localisées et désactiver la génération de sitemap par défaut de TanStack Start.
916
+
917
+ ```typescript fileName="vite.config.ts"
918
+ import { localeFlatMap } from "intlayer";
919
+ // ... autres imports
920
+
921
+ export const pathList = ["", "/about", "/404"];
922
+
923
+ const localizedPages = localeFlatMap(({ urlPrefix }) =>
924
+ pathList.map((path) => ({
925
+ path: `${urlPrefix}${path}`,
926
+ prerender: {
927
+ enabled: true,
928
+ },
929
+ }))
930
+ );
931
+
932
+ export default defineConfig({
933
+ plugins: [
934
+ // ... autres plugins
935
+ tanstackStart({
936
+ // ... autres configurations
937
+ sitemap: {
938
+ enabled: false,
939
+ },
940
+ prerender: {
941
+ enabled: true,
942
+ crawlLinks: false,
943
+ concurrency: 10,
944
+ },
945
+ pages: localizedPages,
946
+ }),
947
+ ],
948
+ });
949
+ ```
950
+
951
+ Ensuite, créez une route `src/routes/sitemap[.]xml.ts` qui utilise la fonction `generateSitemap` :
952
+
953
+ ```typescript fileName="src/routes/sitemap[.]xml.ts"
954
+ import { createFileRoute } from "@tanstack/react-router";
955
+ import { generateSitemap } from "intlayer";
956
+
957
+ const SITE_URL = (
958
+ import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
959
+ ).replace(/\/$/, "");
960
+
961
+ export const Route = createFileRoute("/sitemap.xml")({
962
+ server: {
963
+ handlers: {
964
+ GET: async () => {
965
+ const sitemap = generateSitemap(
966
+ [
967
+ { path: "/", changefreq: "daily", priority: 1.0 },
968
+ { path: "/about", changefreq: "monthly", priority: 0.8 },
969
+ ],
970
+ { siteUrl: SITE_URL }
971
+ );
972
+
973
+ return new Response(sitemap, {
974
+ headers: { "Content-Type": "application/xml" },
975
+ });
976
+ },
977
+ },
978
+ },
979
+ });
980
+ ```
981
+
982
+ ---
983
+
984
+ ### Étape 17 : Configurer TypeScript (Optionnel)
985
+
986
+ Intlayer utilise l'augmentation de module pour bénéficier des avantages de TypeScript et rendre votre codebase plus robuste.
987
+
988
+ Assurez-vous que votre configuration TypeScript inclut les types autogénérés :
989
+
990
+ ```json5 fileName="tsconfig.json"
991
+ {
992
+ // ... vos configurations existantes
993
+ include: [
994
+ // ... vos includes existants
995
+ ".intlayer/**/*.ts", // Inclure les types auto-générés
996
+ ],
997
+ }
998
+ ```
999
+
1000
+ ---
1001
+
934
1002
  ### Configuration Git
935
1003
 
936
1004
  Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les committer dans votre dépôt Git.
@@ -409,7 +409,6 @@ export class MyElement extends LitElement {
409
409
  }
410
410
  ```
411
411
 
412
- > [!NOTE]
413
412
  > Lorsque vous avez besoin de la chaîne traduite dans un attribut HTML natif (ex: `alt`, `aria-label`, `title`), appelez `.value` sur le nœud terminal :
414
413
  >
415
414
  > ```typescript
@@ -315,7 +315,6 @@ const App: Component = () => (
315
315
  export default App;
316
316
  ```
317
317
 
318
- > [!NOTE]
319
318
  > Dans Solid, `useIntlayer` retourne une fonction **accesseur** (par exemple, `content()`). Vous devez appeler cette fonction pour accéder au contenu réactif.
320
319
 
321
320
  > Si vous souhaitez utiliser votre contenu dans un attribut `string`, tel que `alt`, `title`, `href`, `aria-label`, etc., vous devez appeler la valeur de la fonction, comme :
@@ -232,7 +232,7 @@ module.exports = appContent;
232
232
  <!-- Afficher le contenu comme contenu simple -->
233
233
  <h1>{$content.title}</h1>
234
234
  <!-- Pour afficher le contenu éditable via l'éditeur -->
235
- <h1><svelte:component this={$content.title} /></h1>
235
+ <h1>{@const Title = $content.title}<Title /></h1>
236
236
  <!-- Pour afficher le contenu en tant que chaîne de caractères -->
237
237
  <div aria-label={$content.title.value}></div>
238
238
  ```
@@ -175,10 +175,9 @@ module.exports = config;
175
175
  import { reactRouter } from "@react-router/dev/vite";
176
176
  import { defineConfig } from "vite";
177
177
  import { intlayer } from "vite-intlayer";
178
- import tsconfigPaths from "vite-tsconfig-paths";
179
178
 
180
179
  export default defineConfig({
181
- plugins: [reactRouter(), tsconfigPaths(), intlayer()],
180
+ plugins: [reactRouter(), intlayer()],
182
181
  });
183
182
  ```
184
183
 
@@ -741,13 +740,12 @@ This comprehensive guide provides everything you need to integrate Intlayer with
741
740
  import { reactRouter } from "@react-router/dev/vite";
742
741
  import { defineConfig } from "vite";
743
742
  import { intlayer, intlayerProxy } from "vite-intlayer";
744
- import tsconfigPaths from "vite-tsconfig-paths";
745
743
 
746
744
  export default defineConfig({
747
745
  plugins: [
748
746
  intlayerProxy(), // should be placed first
749
747
  reactRouter(),
750
- tsconfigPaths(),
748
+
751
749
  intlayer(),
752
750
  ],
753
751
  });
@@ -174,10 +174,9 @@ module.exports = config;
174
174
  import { reactRouter } from "@react-router/dev/vite";
175
175
  import { defineConfig } from "vite";
176
176
  import { intlayer } from "vite-intlayer";
177
- import tsconfigPaths from "vite-tsconfig-paths";
178
177
 
179
178
  export default defineConfig({
180
- plugins: [reactRouter(), tsconfigPaths(), intlayer()],
179
+ plugins: [reactRouter(), intlayer()],
181
180
  });
182
181
  ```
183
182
 
@@ -688,13 +687,12 @@ This comprehensive guide provides everything you need to integrate Intlayer with
688
687
  import { reactRouter } from "@react-router/dev/vite";
689
688
  import { defineConfig } from "vite";
690
689
  import { intlayer, intlayerProxy } from "vite-intlayer";
691
- import tsconfigPaths from "vite-tsconfig-paths";
692
690
 
693
691
  export default defineConfig({
694
692
  plugins: [
695
693
  intlayerProxy(), // should be placed first
696
694
  reactRouter(),
697
- tsconfigPaths(),
695
+
698
696
  intlayer(),
699
697
  ],
700
698
  });
@@ -370,7 +370,7 @@ export default heroContent;
370
370
  <!-- सामग्री को सरल सामग्री के रूप में रेंडर करें -->
371
371
  <h1>{$content.title}</h1>
372
372
  <!-- संपादक का उपयोग करके सामग्री को संपादन योग्य बनाने के लिए -->
373
- <h1><svelte:component this={$content.title} /></h1>
373
+ <h1>{@const Title = $content.title}<Title /></h1>
374
374
  <!-- सामग्री को स्ट्रिंग के रूप में प्रस्तुत करने के लिए -->
375
375
  <div aria-label={$content.title.value}></div>
376
376
  ```
@@ -726,7 +726,7 @@ intlayer संपादक चयनकर्ता को विज़ुअ
726
726
  <h1>{$content.title}</h1>
727
727
 
728
728
  <!-- सामग्री को एक component के रूप में रेंडर करें (संपादक के लिए आवश्यक) -->
729
- <svelte:component this={$content.component} />
729
+ {@const Component = $content.component}<Component />
730
730
  </div>
731
731
  ```
732
732
 
@@ -140,16 +140,12 @@ export default config;
140
140
  import { intlayer } from "vite-intlayer";
141
141
  import { defineConfig } from "vite";
142
142
  import { devtools } from "@tanstack/devtools-vite";
143
- import viteTsConfigPaths from "vite-tsconfig-paths";
144
143
  import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
145
144
  import solidPlugin from "vite-plugin-solid";
146
145
 
147
146
  export default defineConfig({
148
147
  plugins: [
149
148
  devtools(),
150
- viteTsConfigPaths({
151
- projects: ["./tsconfig.json"],
152
- }),
153
149
  tanstackStart({
154
150
  router: {
155
151
  routeFileIgnorePattern:
@@ -221,9 +217,6 @@ function RootComponent() {
221
217
  }
222
218
  ```
223
219
 
224
- > [!NOTE]
225
- > Solid में, `useMatches` एक **सिग्नल** (प्रतिक्रियाशील एक्सेसॉर) देता है। वर्तमान मान को प्रतिक्रियाशील रूप से एक्सेस करने के लिए `matches()` (कोष्ठक के साथ) का उपयोग करें।
226
-
227
220
  ### स्टेप 6: लोकेल लेआउट बनाएं (वैकल्पिक)
228
221
 
229
222
  एक लेआउट बनाएं जो लोकेल उपसर्ग को संभालता है और सत्यापन करता है। यह लेआउट सुनिश्चित करेगा कि केवल वैध लोकेल ही संसाधित हों।
@@ -415,7 +408,6 @@ function RouteComponent() {
415
408
  }
416
409
  ```
417
410
 
418
- > [!NOTE]
419
411
  > Solid में, `useIntlayer` एक **एक्सेसॉर** हुक (उदा: `content()`) देता है। प्रतिक्रियाशील सामग्री तक पहुँचने के लिए आपको इस फ़ंक्शन को कॉल करना होगा।
420
412
  >
421
413
  > `useIntlayer` हुक के बारे में अधिक जानने के लिए, [दस्तावेज़ीकरण](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/solid-intlayer/useIntlayer.md) देखें।
@@ -460,7 +452,6 @@ export const LocaleSwitcher = () => {
460
452
  export default LocaleSwitcher;
461
453
  ```
462
454
 
463
- > [!NOTE]
464
455
  > Solid में, `useLocale` से `locale` एक **सिग्नल एक्सेसॉर** है। इसके वर्तमान मान को प्रतिक्रियाशील रूप से पढ़ने के लिए `locale()` (कोष्ठक के साथ) का उपयोग करें।
465
456
  >
466
457
  > `useLocale` हुक के बारे में अधिक जानने के लिए, [दस्तावेज़ीकरण](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/packages/solid-intlayer/useLocale.md) देखें।
@@ -502,15 +493,11 @@ import solid from "vite-plugin-solid";
502
493
  import { nitro } from "nitro/vite";
503
494
  import { defineConfig } from "vite";
504
495
  import { intlayer, intlayerProxy } from "vite-intlayer";
505
- import viteTsConfigPaths from "vite-tsconfig-paths";
506
496
 
507
497
  export default defineConfig({
508
498
  plugins: [
509
499
  intlayerProxy(), // यदि आप Nitro का उपयोग करते हैं तो प्रॉक्सी को सर्वर से पहले रखा जाना चाहिए
510
500
  nitro(),
511
- viteTsConfigPaths({
512
- projects: ["./tsconfig.json"],
513
- }),
514
501
  intlayer(),
515
502
  tanstackStart({
516
503
  router: {
@@ -803,16 +790,12 @@ bun x intlayer extract
803
790
  import { intlayer, intlayerCompiler } from "vite-intlayer";
804
791
  import { defineConfig } from "vite";
805
792
  import { devtools } from "@tanstack/devtools-vite";
806
- import viteTsConfigPaths from "vite-tsconfig-paths";
807
793
  import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
808
794
  import solidPlugin from "vite-plugin-solid";
809
795
 
810
796
  export default defineConfig({
811
797
  plugins: [
812
798
  devtools(),
813
- viteTsConfigPaths({
814
- projects: ["./tsconfig.json"],
815
- }),
816
799
  tanstackStart({
817
800
  router: {
818
801
  routeFileIgnorePattern:
@@ -160,14 +160,10 @@ import viteReact from "@vitejs/plugin-react";
160
160
  import { nitro } from "nitro/vite";
161
161
  import { defineConfig } from "vite";
162
162
  import { intlayer } from "vite-intlayer";
163
- import viteTsConfigPaths from "vite-tsconfig-paths";
164
163
 
165
164
  const config = defineConfig({
166
165
  plugins: [
167
166
  nitro(),
168
- viteTsConfigPaths({
169
- projects: ["./tsconfig.json"],
170
- }),
171
167
  intlayer(),
172
168
  tanstackStart({
173
169
  router: {
@@ -593,15 +589,11 @@ import viteReact from "@vitejs/plugin-react";
593
589
  import { nitro } from "nitro/vite";
594
590
  import { defineConfig } from "vite";
595
591
  import { intlayer, intlayerProxy } from "vite-intlayer";
596
- import viteTsConfigPaths from "vite-tsconfig-paths";
597
592
 
598
593
  export default defineConfig({
599
594
  plugins: [
600
595
  intlayerProxy(), // यदि आप Nitro का उपयोग करते हैं तो प्रॉक्सी को सर्वर से पहले रखा जाना चाहिए
601
596
  nitro(),
602
- viteTsConfigPaths({
603
- projects: ["./tsconfig.json"],
604
- }),
605
597
  intlayer(),
606
598
  tanstackStart({
607
599
  router: {
@@ -409,7 +409,6 @@ export class MyElement extends LitElement {
409
409
  }
410
410
  ```
411
411
 
412
- > [!NOTE]
413
412
  > जब आपको नेटिव HTML एट्रिब्यूट (जैसे `alt`, `aria-label`, `title`) में अनुवादित स्ट्रिंग की आवश्यकता हो, तो लीफ नोड पर `.value` कॉल करें:
414
413
  >
415
414
  > ```typescript
@@ -314,7 +314,6 @@ const App: Component = () => (
314
314
  export default App;
315
315
  ```
316
316
 
317
- > [!NOTE]
318
317
  > Solid में, `useIntlayer` एक **accessor** फ़ंक्शन (उदाहरण: `content()`) लौटाता है। आपको रिएक्टिव सामग्री तक पहुंचने के लिए इस फ़ंक्शन को कॉल करना होगा।
319
318
 
320
319
  > यदि आप `alt`, `title`, `href`, `aria-label` आदि जैसे `string` विशेषता में अपनी सामग्री का उपयोग करना चाहते हैं, तो आपको फ़ंक्शन के मान को इस तरह कॉल करना होगा:
@@ -233,7 +233,7 @@ module.exports = appContent;
233
233
  <!-- सामग्री को सरल सामग्री के रूप में रेंडर करें -->
234
234
  <h1>{$content.title}</h1>
235
235
  <!-- संपादक का उपयोग करके सामग्री को संपादन योग्य रूप में रेंडर करने के लिए -->
236
- <h1><svelte:component this={$content.title} /></h1>
236
+ <h1>{@const Title = $content.title}<Title /></h1>
237
237
  <!-- सामग्री को स्ट्रिंग के रूप में रेंडर करने के लिए -->
238
238
  <div aria-label={$content.title.value}></div>
239
239
  ```
@@ -182,10 +182,9 @@ Tambahkan plugin intlayer ke dalam konfigurasi Anda:
182
182
  import { reactRouter } from "@react-router/dev/vite";
183
183
  import { defineConfig } from "vite";
184
184
  import { intlayer } from "vite-intlayer";
185
- import tsconfigPaths from "vite-tsconfig-paths";
186
185
 
187
186
  export default defineConfig({
188
- plugins: [reactRouter(), tsconfigPaths(), intlayer()],
187
+ plugins: [reactRouter(), intlayer()],
189
188
  });
190
189
  ```
191
190
 
@@ -745,13 +744,12 @@ Anda juga dapat menggunakan `intlayerProxy` untuk menambahkan routing sisi serve
745
744
  import { reactRouter } from "@react-router/dev/vite";
746
745
  import { defineConfig } from "vite";
747
746
  import { intlayer, intlayerProxy } from "vite-intlayer";
748
- import tsconfigPaths from "vite-tsconfig-paths";
749
747
 
750
748
  export default defineConfig({
751
749
  plugins: [
752
750
  intlayerProxy(), // should be placed first
753
751
  reactRouter(),
754
- tsconfigPaths(),
752
+
755
753
  intlayer(),
756
754
  ],
757
755
  });