@intlayer/docs 8.3.0-canary.4 → 8.3.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.
- package/docs/ar/compiler.md +84 -49
- package/docs/ar/configuration.md +80 -37
- package/docs/ar/intlayer_with_nextjs_16.md +174 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ar/intlayer_with_react_router_v7.md +224 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ar/intlayer_with_svelte_kit.md +175 -2
- package/docs/ar/intlayer_with_tanstack.md +176 -1
- package/docs/ar/intlayer_with_vite+preact.md +174 -1
- package/docs/ar/intlayer_with_vite+react.md +174 -1
- package/docs/ar/intlayer_with_vite+solid.md +174 -1
- package/docs/ar/intlayer_with_vite+svelte.md +174 -1
- package/docs/ar/intlayer_with_vite+vue.md +174 -1
- package/docs/de/compiler.md +83 -48
- package/docs/de/configuration.md +434 -212
- package/docs/de/intlayer_with_nextjs_16.md +176 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
- package/docs/de/intlayer_with_react_router_v7.md +225 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
- package/docs/de/intlayer_with_svelte_kit.md +158 -2
- package/docs/de/intlayer_with_tanstack.md +159 -1
- package/docs/de/intlayer_with_vite+preact.md +157 -1
- package/docs/de/intlayer_with_vite+react.md +157 -1
- package/docs/de/intlayer_with_vite+solid.md +159 -3
- package/docs/de/intlayer_with_vite+svelte.md +157 -1
- package/docs/de/intlayer_with_vite+vue.md +157 -1
- package/docs/en/compiler.md +60 -33
- package/docs/en/configuration.md +80 -57
- package/docs/en/intlayer_with_nextjs_16.md +176 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
- package/docs/en/intlayer_with_react_router_v7.md +159 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
- package/docs/en/intlayer_with_svelte_kit.md +159 -0
- package/docs/en/intlayer_with_tanstack.md +160 -1
- package/docs/en/intlayer_with_vite+preact.md +159 -0
- package/docs/en/intlayer_with_vite+react.md +159 -0
- package/docs/en/intlayer_with_vite+solid.md +148 -27
- package/docs/en/intlayer_with_vite+svelte.md +159 -0
- package/docs/en/intlayer_with_vite+vue.md +142 -41
- package/docs/en-GB/compiler.md +66 -34
- package/docs/en-GB/configuration.md +78 -36
- package/docs/es/compiler.md +83 -48
- package/docs/es/configuration.md +429 -206
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +176 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +227 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
- package/docs/es/intlayer_with_svelte_kit.md +158 -2
- package/docs/es/intlayer_with_tanstack.md +160 -2
- package/docs/es/intlayer_with_vite+preact.md +162 -6
- package/docs/es/intlayer_with_vite+react.md +160 -4
- package/docs/es/intlayer_with_vite+solid.md +163 -7
- package/docs/es/intlayer_with_vite+svelte.md +157 -1
- package/docs/es/intlayer_with_vite+vue.md +165 -9
- package/docs/fr/compiler.md +81 -46
- package/docs/fr/configuration.md +355 -134
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +183 -7
- package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
- package/docs/fr/intlayer_with_react_router_v7.md +229 -3
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
- package/docs/fr/intlayer_with_svelte_kit.md +158 -2
- package/docs/fr/intlayer_with_tanstack.md +159 -1
- package/docs/fr/intlayer_with_vite+preact.md +164 -8
- package/docs/fr/intlayer_with_vite+react.md +162 -6
- package/docs/fr/intlayer_with_vite+solid.md +163 -7
- package/docs/fr/intlayer_with_vite+svelte.md +157 -1
- package/docs/fr/intlayer_with_vite+vue.md +164 -8
- package/docs/hi/compiler.md +81 -46
- package/docs/hi/configuration.md +87 -44
- package/docs/hi/intlayer_with_nextjs_16.md +174 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/hi/intlayer_with_react_router_v7.md +224 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/hi/intlayer_with_svelte_kit.md +158 -2
- package/docs/hi/intlayer_with_tanstack.md +159 -1
- package/docs/hi/intlayer_with_vite+preact.md +157 -1
- package/docs/hi/intlayer_with_vite+react.md +157 -1
- package/docs/hi/intlayer_with_vite+solid.md +157 -1
- package/docs/hi/intlayer_with_vite+svelte.md +157 -1
- package/docs/hi/intlayer_with_vite+vue.md +157 -1
- package/docs/id/compiler.md +84 -51
- package/docs/id/configuration.md +83 -45
- package/docs/id/intlayer_with_nextjs_16.md +174 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/id/intlayer_with_react_router_v7.md +224 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/id/intlayer_with_svelte_kit.md +158 -2
- package/docs/id/intlayer_with_tanstack.md +159 -1
- package/docs/id/intlayer_with_vite+preact.md +157 -1
- package/docs/id/intlayer_with_vite+react.md +157 -1
- package/docs/id/intlayer_with_vite+solid.md +157 -1
- package/docs/id/intlayer_with_vite+svelte.md +157 -1
- package/docs/id/intlayer_with_vite+vue.md +157 -1
- package/docs/it/compiler.md +81 -46
- package/docs/it/configuration.md +426 -204
- package/docs/it/intlayer_with_nextjs_16.md +174 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/it/intlayer_with_react_router_v7.md +225 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/it/intlayer_with_svelte_kit.md +158 -2
- package/docs/it/intlayer_with_tanstack.md +159 -1
- package/docs/it/intlayer_with_vite+preact.md +157 -1
- package/docs/it/intlayer_with_vite+react.md +157 -1
- package/docs/it/intlayer_with_vite+solid.md +159 -3
- package/docs/it/intlayer_with_vite+svelte.md +157 -1
- package/docs/it/intlayer_with_vite+vue.md +157 -1
- package/docs/ja/compiler.md +94 -58
- package/docs/ja/configuration.md +88 -45
- package/docs/ja/intlayer_with_nextjs_16.md +174 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ja/intlayer_with_react_router_v7.md +184 -394
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ja/intlayer_with_svelte_kit.md +119 -595
- package/docs/ja/intlayer_with_tanstack.md +131 -642
- package/docs/ja/intlayer_with_vite+preact.md +111 -1231
- package/docs/ja/intlayer_with_vite+react.md +129 -1304
- package/docs/ja/intlayer_with_vite+solid.md +159 -3
- package/docs/ja/intlayer_with_vite+svelte.md +157 -1
- package/docs/ja/intlayer_with_vite+vue.md +157 -1
- package/docs/ko/compiler.md +88 -52
- package/docs/ko/configuration.md +87 -44
- package/docs/ko/intlayer_with_nextjs_16.md +174 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ko/intlayer_with_react_router_v7.md +225 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ko/intlayer_with_svelte_kit.md +158 -2
- package/docs/ko/intlayer_with_tanstack.md +159 -1
- package/docs/ko/intlayer_with_vite+preact.md +157 -1
- package/docs/ko/intlayer_with_vite+react.md +157 -1
- package/docs/ko/intlayer_with_vite+solid.md +159 -3
- package/docs/ko/intlayer_with_vite+svelte.md +157 -1
- package/docs/ko/intlayer_with_vite+vue.md +157 -1
- package/docs/pl/compiler.md +84 -51
- package/docs/pl/configuration.md +83 -37
- package/docs/pl/intlayer_with_nextjs_16.md +174 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pl/intlayer_with_react_router_v7.md +224 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pl/intlayer_with_svelte_kit.md +158 -2
- package/docs/pl/intlayer_with_tanstack.md +159 -1
- package/docs/pl/intlayer_with_vite+preact.md +157 -1
- package/docs/pl/intlayer_with_vite+react.md +157 -1
- package/docs/pl/intlayer_with_vite+solid.md +157 -1
- package/docs/pl/intlayer_with_vite+svelte.md +157 -1
- package/docs/pl/intlayer_with_vite+vue.md +157 -1
- package/docs/pt/compiler.md +81 -46
- package/docs/pt/configuration.md +404 -194
- package/docs/pt/intlayer_with_nextjs_16.md +174 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pt/intlayer_with_react_router_v7.md +224 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pt/intlayer_with_svelte_kit.md +158 -2
- package/docs/pt/intlayer_with_tanstack.md +159 -1
- package/docs/pt/intlayer_with_vite+preact.md +157 -1
- package/docs/pt/intlayer_with_vite+react.md +157 -1
- package/docs/pt/intlayer_with_vite+solid.md +157 -1
- package/docs/pt/intlayer_with_vite+svelte.md +157 -1
- package/docs/pt/intlayer_with_vite+vue.md +157 -1
- package/docs/ru/compiler.md +90 -57
- package/docs/ru/configuration.md +76 -46
- package/docs/ru/intlayer_with_nextjs_16.md +174 -1
- package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ru/intlayer_with_react_router_v7.md +224 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ru/intlayer_with_svelte_kit.md +158 -2
- package/docs/ru/intlayer_with_tanstack.md +159 -1
- package/docs/ru/intlayer_with_vite+preact.md +157 -1
- package/docs/ru/intlayer_with_vite+react.md +157 -1
- package/docs/ru/intlayer_with_vite+solid.md +157 -1
- package/docs/ru/intlayer_with_vite+svelte.md +157 -1
- package/docs/ru/intlayer_with_vite+vue.md +157 -1
- package/docs/tr/compiler.md +85 -52
- package/docs/tr/configuration.md +83 -40
- package/docs/tr/intlayer_with_nextjs_16.md +174 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/tr/intlayer_with_react_router_v7.md +224 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/tr/intlayer_with_svelte_kit.md +158 -2
- package/docs/tr/intlayer_with_tanstack.md +159 -1
- package/docs/tr/intlayer_with_vite+preact.md +157 -1
- package/docs/tr/intlayer_with_vite+react.md +157 -1
- package/docs/tr/intlayer_with_vite+solid.md +157 -1
- package/docs/tr/intlayer_with_vite+svelte.md +157 -1
- package/docs/tr/intlayer_with_vite+vue.md +157 -1
- package/docs/uk/compiler.md +96 -61
- package/docs/uk/configuration.md +83 -37
- package/docs/uk/intlayer_with_nextjs_16.md +174 -1
- package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/uk/intlayer_with_react_router_v7.md +224 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/uk/intlayer_with_svelte_kit.md +157 -1
- package/docs/uk/intlayer_with_tanstack.md +159 -1
- package/docs/uk/intlayer_with_vite+preact.md +157 -1
- package/docs/uk/intlayer_with_vite+react.md +157 -1
- package/docs/uk/intlayer_with_vite+solid.md +157 -1
- package/docs/uk/intlayer_with_vite+svelte.md +157 -1
- package/docs/uk/intlayer_with_vite+vue.md +157 -1
- package/docs/vi/compiler.md +85 -50
- package/docs/vi/configuration.md +85 -39
- package/docs/vi/intlayer_with_nextjs_16.md +174 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/vi/intlayer_with_react_router_v7.md +224 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/vi/intlayer_with_svelte_kit.md +158 -2
- package/docs/vi/intlayer_with_tanstack.md +159 -1
- package/docs/vi/intlayer_with_vite+preact.md +157 -1
- package/docs/vi/intlayer_with_vite+react.md +157 -1
- package/docs/vi/intlayer_with_vite+solid.md +157 -1
- package/docs/vi/intlayer_with_vite+svelte.md +157 -1
- package/docs/vi/intlayer_with_vite+vue.md +157 -1
- package/docs/zh/compiler.md +84 -49
- package/docs/zh/configuration.md +80 -37
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +174 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/zh/intlayer_with_react_router_v7.md +227 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
- package/docs/zh/intlayer_with_svelte_kit.md +158 -2
- package/docs/zh/intlayer_with_tanstack.md +159 -1
- package/docs/zh/intlayer_with_vite+preact.md +159 -3
- package/docs/zh/intlayer_with_vite+react.md +157 -1
- package/docs/zh/intlayer_with_vite+solid.md +161 -5
- package/docs/zh/intlayer_with_vite+svelte.md +157 -1
- package/docs/zh/intlayer_with_vite+vue.md +158 -2
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Tanstack Start i18n - Cómo traducir una aplicación Tanstack Start en 2026
|
|
5
5
|
description: Aprende a añadir la internacionalización (i18n) a tu aplicación Tanstack Start utilizando Intlayer. Sigue esta guía completa para hacer que tu aplicación sea multilingüe con enrutamiento consciente de la configuración regional.
|
|
6
6
|
keywords:
|
|
@@ -67,7 +67,7 @@ Con Intlayer, puedes:
|
|
|
67
67
|
## Guía paso a paso para configurar Intlayer en una aplicación Tanstack Start
|
|
68
68
|
|
|
69
69
|
<Tabs defaultTab="video">
|
|
70
|
-
<Tab label="
|
|
70
|
+
<Tab label="Vídeo" value="video">
|
|
71
71
|
|
|
72
72
|
<iframe title="¿La mejor solución i18n para Tanstack Start? Descubre Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
73
73
|
|
|
@@ -773,6 +773,164 @@ Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerado
|
|
|
773
773
|
|
|
774
774
|
---
|
|
775
775
|
|
|
776
|
+
### (Opcional) Paso 16 : Extraer el contenido de tus componentes
|
|
777
|
+
|
|
778
|
+
Si tienes una base de código existente, transformar miles de archivos puede llevar mucho tiempo.
|
|
779
|
+
|
|
780
|
+
Para facilitar este proceso, Intlayer propone un [compilador](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/extract.md) para transformar tus componentes y extraer el contenido.
|
|
781
|
+
|
|
782
|
+
Para configurarlo, puedes agregar una sección `compiler` en tu archivo `intlayer.config.ts` :
|
|
783
|
+
|
|
784
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
785
|
+
import { type IntlayerConfig } from "intlayer";
|
|
786
|
+
|
|
787
|
+
const config: IntlayerConfig = {
|
|
788
|
+
// ... Resto de tu configuración
|
|
789
|
+
compiler: {
|
|
790
|
+
/**
|
|
791
|
+
* Indica si el compilador debe estar habilitado.
|
|
792
|
+
*/
|
|
793
|
+
enabled: true,
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Define la ruta de los archivos de salida
|
|
797
|
+
*/
|
|
798
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
802
|
+
*/
|
|
803
|
+
saveComponents: false,
|
|
804
|
+
|
|
805
|
+
/**
|
|
806
|
+
* Prefijo de clave de diccionario
|
|
807
|
+
*/
|
|
808
|
+
dictionaryKeyPrefix: "",
|
|
809
|
+
},
|
|
810
|
+
};
|
|
811
|
+
|
|
812
|
+
export default config;
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
816
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
817
|
+
const config = {
|
|
818
|
+
// ... Resto de tu configuración
|
|
819
|
+
compiler: {
|
|
820
|
+
/**
|
|
821
|
+
* Indica si el compilador debe estar habilitado.
|
|
822
|
+
*/
|
|
823
|
+
enabled: true,
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Define la ruta de los archivos de salida
|
|
827
|
+
*/
|
|
828
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
832
|
+
*/
|
|
833
|
+
saveComponents: false,
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* Prefijo de clave de diccionario
|
|
837
|
+
*/
|
|
838
|
+
dictionaryKeyPrefix: "",
|
|
839
|
+
},
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
export default config;
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
846
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
847
|
+
const config = {
|
|
848
|
+
// ... Resto de tu configuración
|
|
849
|
+
compiler: {
|
|
850
|
+
/**
|
|
851
|
+
* Indica si el compilador debe estar habilitado.
|
|
852
|
+
*/
|
|
853
|
+
enabled: true,
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Define la ruta de los archivos de salida
|
|
857
|
+
*/
|
|
858
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
862
|
+
*/
|
|
863
|
+
saveComponents: false,
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* Prefijo de clave de diccionario
|
|
867
|
+
*/
|
|
868
|
+
dictionaryKeyPrefix: "",
|
|
869
|
+
},
|
|
870
|
+
};
|
|
871
|
+
|
|
872
|
+
module.exports = config;
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
<Tabs>
|
|
876
|
+
<Tab value='Comando de extracción'>
|
|
877
|
+
|
|
878
|
+
Ejecuta el extractor para transformar tus componentes y extraer el contenido
|
|
879
|
+
|
|
880
|
+
```bash packageManager="npm"
|
|
881
|
+
npx intlayer extract
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
```bash packageManager="pnpm"
|
|
885
|
+
pnpm intlayer extract
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
```bash packageManager="yarn"
|
|
889
|
+
yarn intlayer extract
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
```bash packageManager="bun"
|
|
893
|
+
bunx intlayer extract
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
</Tab>
|
|
897
|
+
<Tab value='Compilador Babel'>
|
|
898
|
+
|
|
899
|
+
Actualiza tu archivo `vite.config.ts` para incluir el plugin `intlayerCompiler` :
|
|
900
|
+
|
|
901
|
+
```ts fileName="vite.config.ts"
|
|
902
|
+
import { defineConfig } from "vite";
|
|
903
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
904
|
+
|
|
905
|
+
export default defineConfig({
|
|
906
|
+
plugins: [
|
|
907
|
+
intlayer(),
|
|
908
|
+
intlayerCompiler(), // Agrega el plugin del compilador
|
|
909
|
+
],
|
|
910
|
+
});
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
```bash packageManager="npm"
|
|
914
|
+
npm run build # O npm run dev
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
```bash packageManager="pnpm"
|
|
918
|
+
pnpm run build # O pnpm run dev
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
```bash packageManager="yarn"
|
|
922
|
+
yarn build # O yarn dev
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
```bash packageManager="bun"
|
|
926
|
+
bun run build # Or bun run dev
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
</Tab>
|
|
930
|
+
</Tabs>
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
776
934
|
### Configuración de Git
|
|
777
935
|
|
|
778
936
|
Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar confirmarlos en tu repositorio de Git.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + Preact i18n - Cómo traducir una aplicación Preact en 2026
|
|
5
5
|
description: Descubre cómo hacer tu sitio web con Vite y Preact multilingüe. Sigue la documentación para internacionalizar (i18n) y traducirlo.
|
|
6
6
|
keywords:
|
|
@@ -24,12 +24,12 @@ history:
|
|
|
24
24
|
changes: Historial inicial
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
# Traduce tu Vite
|
|
27
|
+
# Traduce tu Vite y Preact con Intlayer | Internacionalización (i18n)
|
|
28
28
|
|
|
29
29
|
<Tabs defaultTab="video">
|
|
30
|
-
<Tab label="
|
|
30
|
+
<Tab label="Vídeo" value="video">
|
|
31
31
|
|
|
32
|
-
<iframe title="The best i18n solution for Vite
|
|
32
|
+
<iframe title="The best i18n solution for Vite y Preact? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
33
33
|
|
|
34
34
|
</Tab>
|
|
35
35
|
<Tab label="Code" value="code">
|
|
@@ -37,7 +37,7 @@ history:
|
|
|
37
37
|
<iframe
|
|
38
38
|
src="https://stackblitz.com/github/aymericzip/intlayer-vite-preact-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
39
39
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
40
|
-
title="Demo CodeSandbox -
|
|
40
|
+
title="Demo CodeSandbox - Cómo internacionalizar tu aplicación usando Intlayer"
|
|
41
41
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
42
42
|
loading="lazy"
|
|
43
43
|
/>
|
|
@@ -308,7 +308,7 @@ const appContent = {
|
|
|
308
308
|
}),
|
|
309
309
|
|
|
310
310
|
readTheDocs: t({
|
|
311
|
-
en: "Click on the Vite
|
|
311
|
+
en: "Click on the Vite y Preact logos to learn more",
|
|
312
312
|
fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
|
|
313
313
|
es: "Haz clic en los logotipos de Vite y Preact para obtener más información",
|
|
314
314
|
}),
|
|
@@ -1301,6 +1301,162 @@ return (
|
|
|
1301
1301
|
);
|
|
1302
1302
|
```
|
|
1303
1303
|
|
|
1304
|
+
### (Opcional) Paso 12 : Extraer el contenido de tus componentes
|
|
1305
|
+
|
|
1306
|
+
Si tienes una base de código existente, transformar miles de archivos puede llevar mucho tiempo.
|
|
1307
|
+
|
|
1308
|
+
Para facilitar este proceso, Intlayer propone un [compilador](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/extract.md) para transformar tus componentes y extraer el contenido.
|
|
1309
|
+
|
|
1310
|
+
Para configurarlo, puedes agregar una sección `compiler` en tu archivo `intlayer.config.ts` :
|
|
1311
|
+
|
|
1312
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1313
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1314
|
+
|
|
1315
|
+
const config: IntlayerConfig = {
|
|
1316
|
+
// ... Resto de tu configuración
|
|
1317
|
+
compiler: {
|
|
1318
|
+
/**
|
|
1319
|
+
* Indica si el compilador debe estar habilitado.
|
|
1320
|
+
*/
|
|
1321
|
+
enabled: true,
|
|
1322
|
+
|
|
1323
|
+
/**
|
|
1324
|
+
* Define la ruta de los archivos de salida
|
|
1325
|
+
*/
|
|
1326
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1327
|
+
|
|
1328
|
+
/**
|
|
1329
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1330
|
+
*/
|
|
1331
|
+
saveComponents: false,
|
|
1332
|
+
|
|
1333
|
+
/**
|
|
1334
|
+
* Prefijo de clave de diccionario
|
|
1335
|
+
*/
|
|
1336
|
+
dictionaryKeyPrefix: "",
|
|
1337
|
+
},
|
|
1338
|
+
};
|
|
1339
|
+
|
|
1340
|
+
export default config;
|
|
1341
|
+
```
|
|
1342
|
+
|
|
1343
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1344
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1345
|
+
const config = {
|
|
1346
|
+
// ... Resto de tu configuración
|
|
1347
|
+
compiler: {
|
|
1348
|
+
/**
|
|
1349
|
+
* Indica si el compilador debe estar habilitado.
|
|
1350
|
+
*/
|
|
1351
|
+
enabled: true,
|
|
1352
|
+
|
|
1353
|
+
/**
|
|
1354
|
+
* Define la ruta de los archivos de salida
|
|
1355
|
+
*/
|
|
1356
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1357
|
+
|
|
1358
|
+
/**
|
|
1359
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1360
|
+
*/
|
|
1361
|
+
saveComponents: false,
|
|
1362
|
+
|
|
1363
|
+
/**
|
|
1364
|
+
* Prefijo de clave de diccionario
|
|
1365
|
+
*/
|
|
1366
|
+
dictionaryKeyPrefix: "",
|
|
1367
|
+
},
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
export default config;
|
|
1371
|
+
```
|
|
1372
|
+
|
|
1373
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1374
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1375
|
+
const config = {
|
|
1376
|
+
// ... Resto de tu configuración
|
|
1377
|
+
compiler: {
|
|
1378
|
+
/**
|
|
1379
|
+
* Indica si el compilador debe estar habilitado.
|
|
1380
|
+
*/
|
|
1381
|
+
enabled: true,
|
|
1382
|
+
|
|
1383
|
+
/**
|
|
1384
|
+
* Define la ruta de los archivos de salida
|
|
1385
|
+
*/
|
|
1386
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1387
|
+
|
|
1388
|
+
/**
|
|
1389
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1390
|
+
*/
|
|
1391
|
+
saveComponents: false,
|
|
1392
|
+
|
|
1393
|
+
/**
|
|
1394
|
+
* Prefijo de clave de diccionario
|
|
1395
|
+
*/
|
|
1396
|
+
dictionaryKeyPrefix: "",
|
|
1397
|
+
},
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
module.exports = config;
|
|
1401
|
+
```
|
|
1402
|
+
|
|
1403
|
+
<Tabs>
|
|
1404
|
+
<Tab value='Comando de extracción'>
|
|
1405
|
+
|
|
1406
|
+
Ejecuta el extractor para transformar tus componentes y extraer el contenido
|
|
1407
|
+
|
|
1408
|
+
```bash packageManager="npm"
|
|
1409
|
+
npx intlayer extract
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
```bash packageManager="pnpm"
|
|
1413
|
+
pnpm intlayer extract
|
|
1414
|
+
```
|
|
1415
|
+
|
|
1416
|
+
```bash packageManager="yarn"
|
|
1417
|
+
yarn intlayer extract
|
|
1418
|
+
```
|
|
1419
|
+
|
|
1420
|
+
```bash packageManager="bun"
|
|
1421
|
+
bunx intlayer extract
|
|
1422
|
+
```
|
|
1423
|
+
|
|
1424
|
+
</Tab>
|
|
1425
|
+
<Tab value='Compilador Babel'>
|
|
1426
|
+
|
|
1427
|
+
Actualiza tu archivo `vite.config.ts` para incluir el plugin `intlayerCompiler` :
|
|
1428
|
+
|
|
1429
|
+
```ts fileName="vite.config.ts"
|
|
1430
|
+
import { defineConfig } from "vite";
|
|
1431
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1432
|
+
|
|
1433
|
+
export default defineConfig({
|
|
1434
|
+
plugins: [
|
|
1435
|
+
intlayer(),
|
|
1436
|
+
intlayerCompiler(), // Agrega el plugin del compilador
|
|
1437
|
+
],
|
|
1438
|
+
});
|
|
1439
|
+
```
|
|
1440
|
+
|
|
1441
|
+
```bash packageManager="npm"
|
|
1442
|
+
npm run build # O npm run dev
|
|
1443
|
+
```
|
|
1444
|
+
|
|
1445
|
+
```bash packageManager="pnpm"
|
|
1446
|
+
pnpm run build # O pnpm run dev
|
|
1447
|
+
```
|
|
1448
|
+
|
|
1449
|
+
```bash packageManager="yarn"
|
|
1450
|
+
yarn build # O yarn dev
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
```bash packageManager="bun"
|
|
1454
|
+
bun run build # Or bun run dev
|
|
1455
|
+
```
|
|
1456
|
+
|
|
1457
|
+
</Tab>
|
|
1458
|
+
</Tabs>
|
|
1459
|
+
|
|
1304
1460
|
### Configurar TypeScript
|
|
1305
1461
|
|
|
1306
1462
|
Intlayer utiliza la ampliación de módulos para aprovechar las ventajas de TypeScript y fortalecer su base de código.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-03-07
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + React i18n - Cómo traducir una aplicación React en 2026
|
|
5
5
|
description: Aprende cómo agregar internacionalización (i18n) a tu aplicación Vite y React usando Intlayer. Sigue esta guía para hacer tu aplicación multilingüe.
|
|
6
6
|
keywords:
|
|
@@ -48,7 +48,7 @@ Con Intlayer, puedes:
|
|
|
48
48
|
## Guía paso a paso para configurar Intlayer en una aplicación Vite y React
|
|
49
49
|
|
|
50
50
|
<Tabs defaultTab="video">
|
|
51
|
-
<Tab label="
|
|
51
|
+
<Tab label="Vídeo" value="video">
|
|
52
52
|
|
|
53
53
|
<iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
54
54
|
|
|
@@ -58,7 +58,7 @@ Con Intlayer, puedes:
|
|
|
58
58
|
<iframe
|
|
59
59
|
src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
60
60
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
61
|
-
title="Demo CodeSandbox -
|
|
61
|
+
title="Demo CodeSandbox - Cómo internacionalizar tu aplicación usando Intlayer"
|
|
62
62
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
63
63
|
loading="lazy"
|
|
64
64
|
/>
|
|
@@ -1357,6 +1357,162 @@ Link.displayName = "Link";
|
|
|
1357
1357
|
|
|
1358
1358
|
Al integrar este componente `Link` en toda su aplicación, mantiene una experiencia de usuario coherente y consciente del idioma, además de beneficiarse de una mejor SEO y usabilidad.
|
|
1359
1359
|
|
|
1360
|
+
### (Opcional) Paso 11 : Extraer el contenido de tus componentes
|
|
1361
|
+
|
|
1362
|
+
Si tienes una base de código existente, transformar miles de archivos puede llevar mucho tiempo.
|
|
1363
|
+
|
|
1364
|
+
Para facilitar este proceso, Intlayer propone un [compilador](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/cli/extract.md) para transformar tus componentes y extraer el contenido.
|
|
1365
|
+
|
|
1366
|
+
Para configurarlo, puedes agregar una sección `compiler` en tu archivo `intlayer.config.ts` :
|
|
1367
|
+
|
|
1368
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1369
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1370
|
+
|
|
1371
|
+
const config: IntlayerConfig = {
|
|
1372
|
+
// ... Resto de tu configuración
|
|
1373
|
+
compiler: {
|
|
1374
|
+
/**
|
|
1375
|
+
* Indica si el compilador debe estar habilitado.
|
|
1376
|
+
*/
|
|
1377
|
+
enabled: true,
|
|
1378
|
+
|
|
1379
|
+
/**
|
|
1380
|
+
* Define la ruta de los archivos de salida
|
|
1381
|
+
*/
|
|
1382
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1383
|
+
|
|
1384
|
+
/**
|
|
1385
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1386
|
+
*/
|
|
1387
|
+
saveComponents: false,
|
|
1388
|
+
|
|
1389
|
+
/**
|
|
1390
|
+
* Prefijo de clave de diccionario
|
|
1391
|
+
*/
|
|
1392
|
+
dictionaryKeyPrefix: "",
|
|
1393
|
+
},
|
|
1394
|
+
};
|
|
1395
|
+
|
|
1396
|
+
export default config;
|
|
1397
|
+
```
|
|
1398
|
+
|
|
1399
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1400
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1401
|
+
const config = {
|
|
1402
|
+
// ... Resto de tu configuración
|
|
1403
|
+
compiler: {
|
|
1404
|
+
/**
|
|
1405
|
+
* Indica si el compilador debe estar habilitado.
|
|
1406
|
+
*/
|
|
1407
|
+
enabled: true,
|
|
1408
|
+
|
|
1409
|
+
/**
|
|
1410
|
+
* Define la ruta de los archivos de salida
|
|
1411
|
+
*/
|
|
1412
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1413
|
+
|
|
1414
|
+
/**
|
|
1415
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1416
|
+
*/
|
|
1417
|
+
saveComponents: false,
|
|
1418
|
+
|
|
1419
|
+
/**
|
|
1420
|
+
* Prefijo de clave de diccionario
|
|
1421
|
+
*/
|
|
1422
|
+
dictionaryKeyPrefix: "",
|
|
1423
|
+
},
|
|
1424
|
+
};
|
|
1425
|
+
|
|
1426
|
+
export default config;
|
|
1427
|
+
```
|
|
1428
|
+
|
|
1429
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1430
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1431
|
+
const config = {
|
|
1432
|
+
// ... Resto de tu configuración
|
|
1433
|
+
compiler: {
|
|
1434
|
+
/**
|
|
1435
|
+
* Indica si el compilador debe estar habilitado.
|
|
1436
|
+
*/
|
|
1437
|
+
enabled: true,
|
|
1438
|
+
|
|
1439
|
+
/**
|
|
1440
|
+
* Define la ruta de los archivos de salida
|
|
1441
|
+
*/
|
|
1442
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1443
|
+
|
|
1444
|
+
/**
|
|
1445
|
+
* Indica si los componentes deben guardarse después de ser transformados. De esa manera, el compilador se puede ejecutar solo una vez para transformar la aplicación y luego se puede eliminar.
|
|
1446
|
+
*/
|
|
1447
|
+
saveComponents: false,
|
|
1448
|
+
|
|
1449
|
+
/**
|
|
1450
|
+
* Prefijo de clave de diccionario
|
|
1451
|
+
*/
|
|
1452
|
+
dictionaryKeyPrefix: "",
|
|
1453
|
+
},
|
|
1454
|
+
};
|
|
1455
|
+
|
|
1456
|
+
module.exports = config;
|
|
1457
|
+
```
|
|
1458
|
+
|
|
1459
|
+
<Tabs>
|
|
1460
|
+
<Tab value='Comando de extracción'>
|
|
1461
|
+
|
|
1462
|
+
Ejecuta el extractor para transformar tus componentes y extraer el contenido
|
|
1463
|
+
|
|
1464
|
+
```bash packageManager="npm"
|
|
1465
|
+
npx intlayer extract
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
```bash packageManager="pnpm"
|
|
1469
|
+
pnpm intlayer extract
|
|
1470
|
+
```
|
|
1471
|
+
|
|
1472
|
+
```bash packageManager="yarn"
|
|
1473
|
+
yarn intlayer extract
|
|
1474
|
+
```
|
|
1475
|
+
|
|
1476
|
+
```bash packageManager="bun"
|
|
1477
|
+
bunx intlayer extract
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
</Tab>
|
|
1481
|
+
<Tab value='Compilador Babel'>
|
|
1482
|
+
|
|
1483
|
+
Actualiza tu archivo `vite.config.ts` para incluir el plugin `intlayerCompiler` :
|
|
1484
|
+
|
|
1485
|
+
```ts fileName="vite.config.ts"
|
|
1486
|
+
import { defineConfig } from "vite";
|
|
1487
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1488
|
+
|
|
1489
|
+
export default defineConfig({
|
|
1490
|
+
plugins: [
|
|
1491
|
+
intlayer(),
|
|
1492
|
+
intlayerCompiler(), // Agrega el plugin del compilador
|
|
1493
|
+
],
|
|
1494
|
+
});
|
|
1495
|
+
```
|
|
1496
|
+
|
|
1497
|
+
```bash packageManager="npm"
|
|
1498
|
+
npm run build # O npm run dev
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
```bash packageManager="pnpm"
|
|
1502
|
+
pnpm run build # O pnpm run dev
|
|
1503
|
+
```
|
|
1504
|
+
|
|
1505
|
+
```bash packageManager="yarn"
|
|
1506
|
+
yarn build # O yarn dev
|
|
1507
|
+
```
|
|
1508
|
+
|
|
1509
|
+
```bash packageManager="bun"
|
|
1510
|
+
bun run build # Or bun run dev
|
|
1511
|
+
```
|
|
1512
|
+
|
|
1513
|
+
</Tab>
|
|
1514
|
+
</Tabs>
|
|
1515
|
+
|
|
1360
1516
|
### Configurar TypeScript
|
|
1361
1517
|
|
|
1362
1518
|
Intlayer utiliza la ampliación de módulos para aprovechar las ventajas de TypeScript y fortalecer su base de código.
|
|
@@ -1384,7 +1540,7 @@ Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evita
|
|
|
1384
1540
|
Para hacerlo, puedes agregar las siguientes instrucciones a tu archivo `.gitignore`:
|
|
1385
1541
|
|
|
1386
1542
|
```plaintext fileName=".gitignore"
|
|
1387
|
-
#
|
|
1543
|
+
# Ignorar los archivos generados por Intlayer
|
|
1388
1544
|
.intlayer
|
|
1389
1545
|
```
|
|
1390
1546
|
|