@intlayer/docs 9.3.0 → 9.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.
Files changed (162) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  3. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  4. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  5. package/dist/cjs/authors2.cjs +0 -1
  6. package/dist/cjs/common.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +4 -2
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +4 -2
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +4 -2
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +4 -2
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +4 -2
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +4 -2
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/docs/ar/configuration.md +10 -10
  24. package/docs/ar/interest_of_intlayer.md +24 -22
  25. package/docs/ar/intlayer_with_express.md +1 -1
  26. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  27. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  28. package/docs/ar/intlayer_with_tanstack.md +5 -3
  29. package/docs/ar/lsp.md +114 -175
  30. package/docs/ar/readme.md +25 -25
  31. package/docs/bn/configuration.md +10 -10
  32. package/docs/bn/interest_of_intlayer.md +24 -22
  33. package/docs/cs/configuration.md +10 -10
  34. package/docs/cs/interest_of_intlayer.md +24 -22
  35. package/docs/de/configuration.md +10 -10
  36. package/docs/de/interest_of_intlayer.md +24 -22
  37. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  38. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  39. package/docs/de/intlayer_with_tanstack.md +5 -3
  40. package/docs/de/lsp.md +111 -172
  41. package/docs/de/readme.md +24 -24
  42. package/docs/en/configuration.md +10 -10
  43. package/docs/en/interest_of_intlayer.md +24 -22
  44. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  45. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  46. package/docs/en/intlayer_with_tanstack.md +5 -3
  47. package/docs/en/lsp.md +109 -170
  48. package/docs/en/readme.md +24 -24
  49. package/docs/en-GB/configuration.md +10 -10
  50. package/docs/en-GB/interest_of_intlayer.md +24 -22
  51. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  52. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  53. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  54. package/docs/en-GB/lsp.md +109 -170
  55. package/docs/en-GB/readme.md +24 -24
  56. package/docs/es/configuration.md +10 -10
  57. package/docs/es/interest_of_intlayer.md +24 -22
  58. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  59. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  60. package/docs/es/intlayer_with_tanstack.md +5 -3
  61. package/docs/es/lsp.md +114 -175
  62. package/docs/es/readme.md +24 -24
  63. package/docs/fr/configuration.md +10 -10
  64. package/docs/fr/interest_of_intlayer.md +24 -22
  65. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  66. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  67. package/docs/fr/intlayer_with_tanstack.md +5 -3
  68. package/docs/fr/lsp.md +110 -171
  69. package/docs/fr/readme.md +24 -24
  70. package/docs/hi/configuration.md +10 -10
  71. package/docs/hi/interest_of_intlayer.md +24 -22
  72. package/docs/hi/intlayer_with_express.md +1 -1
  73. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  74. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  75. package/docs/hi/intlayer_with_tanstack.md +5 -3
  76. package/docs/hi/lsp.md +113 -174
  77. package/docs/hi/readme.md +24 -24
  78. package/docs/id/configuration.md +10 -10
  79. package/docs/id/interest_of_intlayer.md +24 -22
  80. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  81. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  82. package/docs/id/intlayer_with_tanstack.md +5 -3
  83. package/docs/id/lsp.md +113 -174
  84. package/docs/id/readme.md +24 -24
  85. package/docs/it/configuration.md +10 -10
  86. package/docs/it/interest_of_intlayer.md +24 -22
  87. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  88. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  89. package/docs/it/intlayer_with_tanstack.md +5 -3
  90. package/docs/it/lsp.md +115 -176
  91. package/docs/it/readme.md +24 -24
  92. package/docs/ja/configuration.md +10 -10
  93. package/docs/ja/interest_of_intlayer.md +24 -22
  94. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  95. package/docs/ja/intlayer_with_tanstack.md +5 -3
  96. package/docs/ja/lsp.md +113 -174
  97. package/docs/ja/readme.md +24 -24
  98. package/docs/ko/configuration.md +10 -10
  99. package/docs/ko/interest_of_intlayer.md +24 -22
  100. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  101. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  102. package/docs/ko/intlayer_with_tanstack.md +5 -3
  103. package/docs/ko/lsp.md +112 -173
  104. package/docs/ko/readme.md +24 -24
  105. package/docs/nl/configuration.md +10 -10
  106. package/docs/nl/interest_of_intlayer.md +24 -22
  107. package/docs/pl/configuration.md +10 -10
  108. package/docs/pl/interest_of_intlayer.md +4 -2
  109. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  110. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  111. package/docs/pl/intlayer_with_tanstack.md +5 -3
  112. package/docs/pl/lsp.md +115 -176
  113. package/docs/pl/readme.md +24 -24
  114. package/docs/pt/configuration.md +10 -10
  115. package/docs/pt/interest_of_intlayer.md +24 -22
  116. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  117. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  118. package/docs/pt/intlayer_with_tanstack.md +5 -3
  119. package/docs/pt/lsp.md +113 -174
  120. package/docs/pt/readme.md +24 -24
  121. package/docs/ru/configuration.md +10 -10
  122. package/docs/ru/interest_of_intlayer.md +24 -22
  123. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  124. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  125. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  126. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  127. package/docs/ru/intlayer_with_tanstack.md +5 -3
  128. package/docs/ru/lsp.md +112 -173
  129. package/docs/ru/readme.md +24 -24
  130. package/docs/tr/configuration.md +10 -10
  131. package/docs/tr/interest_of_intlayer.md +24 -22
  132. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  133. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  134. package/docs/tr/intlayer_with_tanstack.md +5 -3
  135. package/docs/tr/lsp.md +113 -174
  136. package/docs/tr/readme.md +24 -24
  137. package/docs/uk/configuration.md +10 -10
  138. package/docs/uk/interest_of_intlayer.md +4 -2
  139. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  140. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  141. package/docs/uk/intlayer_with_tanstack.md +5 -3
  142. package/docs/uk/lsp.md +113 -174
  143. package/docs/uk/per_locale_file.md +1 -1
  144. package/docs/uk/readme.md +24 -24
  145. package/docs/ur/configuration.md +10 -10
  146. package/docs/ur/interest_of_intlayer.md +24 -22
  147. package/docs/vi/configuration.md +10 -10
  148. package/docs/vi/interest_of_intlayer.md +24 -22
  149. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  150. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  151. package/docs/vi/intlayer_with_tanstack.md +5 -3
  152. package/docs/vi/lsp.md +115 -176
  153. package/docs/vi/readme.md +24 -24
  154. package/docs/zh/configuration.md +10 -10
  155. package/docs/zh/interest_of_intlayer.md +24 -22
  156. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  157. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  158. package/docs/zh/intlayer_with_tanstack.md +5 -3
  159. package/docs/zh/lsp.md +113 -174
  160. package/docs/zh/readme.md +21 -21
  161. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  162. package/package.json +6 -6
package/docs/es/lsp.md CHANGED
@@ -1,12 +1,14 @@
1
1
  ---
2
2
  createdAt: 2025-06-07
3
- updatedAt: 2026-05-31
3
+ updatedAt: 2026-08-10
4
4
  title: Servidor LSP de Intlayer
5
- description: Aprenda cómo el servidor de lenguaje de Intlayer proporciona la función Ir a la definición y otras características de IDE para useIntlayer, getIntlayer y llamadas relacionadas en todos los editores compatibles.
5
+ description: Descubra cómo el servidor de lenguaje de Intlayer aporta Go-to-Definition, búsqueda de referencias, vistas previas al pasar el cursor, autocompletado de claves y diagnósticos a su IDE y a su agente de IA.
6
6
  keywords:
7
7
  - LSP
8
- - Servidor de Lenguaje
9
- - Ir a la definición
8
+ - Servidor de lenguaje
9
+ - Go to Definition
10
+ - Autocompletado
11
+ - Diagnósticos
10
12
  - IDE
11
13
  - Intlayer
12
14
  - VS Code
@@ -16,6 +18,9 @@ slugs:
16
18
  - doc
17
19
  - lsp
18
20
  history:
21
+ - version: 9.1.3
22
+ date: 2026-08-10
23
+ changes: "Se añaden búsqueda de referencias, hover, autocompletado y diagnósticos"
19
24
  - version: 8.12.0
20
25
  date: 2026-06-01
21
26
  changes: "Release LSP"
@@ -24,48 +29,47 @@ author: aymericzip
24
29
 
25
30
  # Servidor LSP de Intlayer
26
31
 
27
- El **Servidor de Lenguaje de Intlayer (LSP)** es una implementación del [Protocolo de Servidor de Lenguaje (LSP)](https://microsoft.github.io/language-server-protocol/) que mejora su IDE con inteligencia adaptada a Intlayer. Actualmente proporciona **Ir a la definición (Go to Definition)** para llamadas a claves de diccionario, lo que le permite saltar directamente desde `useIntlayer("my-key")` en su componente al archivo `.content.ts` que lo declara.
32
+ El **servidor de lenguaje de Intlayer** es una implementación del [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) que hace que su IDE y su agente de IA reconozcan Intlayer. Conecta una llamada como `useIntlayer("home")` con el archivo `.content.ts` que la declara, en ambas direcciones.
28
33
 
29
34
  ---
30
35
 
31
- ## ¿Por qué usar el LSP?
36
+ ## Funcionalidades
32
37
 
33
- Cuando utiliza Intlayer, la conexión entre una llamada como `useIntlayer("homepage")` y su declaración en `src/homepage.content.ts` es implícita. Sin herramientas, debe buscar el archivo manualmente. El LSP hace que ese enlace sea explícito:
38
+ | Funcionalidad | Atajo | Qué hace |
39
+ | -------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------ |
40
+ | **Ir a la definición** | `F12` / `Cmd+Clic` | Saltar desde una clave de diccionario o el uso de un campo a su declaración en el archivo de contenido |
41
+ | **Buscar todas las referencias** | `Mayús+F12` | Desde un archivo de contenido, listar todos los puntos de llamada que usan esa clave o campo |
42
+ | **Hover** | pasar el cursor | Previsualizar los campos de un diccionario, o el valor traducido de un campo, sin salir del archivo |
43
+ | **Autocompletado** | `"` `'` `` ` `` `.` | Sugerir las claves de diccionario declaradas dentro de un getter, y los campos de contenido tras `.` o al desestructurar |
44
+ | **Diagnósticos** | automático | Avisar cuando una clave no está declarada en ningún archivo de contenido |
34
45
 
35
- **Sensibilización de agentes de IA**
46
+ Merece la pena conocer dos comportamientos adicionales:
36
47
 
37
- Los agentes de codificación de IA (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex) dependen del servidor de lenguaje para resolver símbolos y comprender las relaciones entre archivos. Con el LSP de Intlayer en funcionamiento, los agentes pueden seguir `useIntlayer("key")` hasta su declaración, lo que les brinda un contexto preciso sobre las claves de contenido disponibles, la estructura de cada diccionario y qué archivos leer o editar.
48
+ - **Diccionarios fusionados** una clave repartida entre varios archivos de contenido devuelve un resultado por archivo, de modo que puede navegar a cada declaración.
49
+ - **Compatible con monorepos** — el servidor resuelve el `intlayer.config.*` _más cercano_ a cada archivo, de modo que varios proyectos en un mismo espacio de trabajo tienen cada uno sus propios diccionarios.
38
50
 
39
- **Ir a la definición**
51
+ ### Llamadas compatibles
40
52
 
41
- Coloque el cursor sobre cualquier cadena de clave de diccionario dentro de una llamada de obtención admitida y presione `F12` (o `Cmd/Ctrl+Clic`). El editor abre el archivo de declaración de contenido y posiciona el cursor en la línea `key:`.
53
+ La clave se lee bien desde un argumento posicional de tipo cadena, bien desde un objeto de opciones (`{ namespace }`, `{ id }`).
42
54
 
43
- **Soporte de diccionarios fusionados**
55
+ | Biblioteca | Llamadas |
56
+ | --------------------------- | -------------------------------------------------------- |
57
+ | **Intlayer** | `useIntlayer`, `getIntlayer` |
58
+ | **i18next / react-i18next** | `useTranslation`, `getFixedT`, `t`, `Trans` |
59
+ | **next-intl / use-intl** | `useTranslations`, `getTranslations`, `createTranslator` |
60
+ | **react-intl** | `formatMessage`, `FormattedMessage` |
61
+ | **Lingui** | `useLingui`, `t`, `Trans`, `_` |
62
+ | **vue-i18n** | `useI18n` |
44
63
 
45
- Una clave se puede dividir en varios archivos de contenido (Intlayer los fusiona). El servidor devuelve una ubicación (`Location`) por archivo de origen para que pueda navegar a cada declaración.
64
+ Esto funciona con todos los paquetes `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `intlayer`), y con los paquetes adaptadores de compatibilidad que le permiten conservar su sintaxis i18n actual.
46
65
 
47
- **Funciona en todas partes**
48
-
49
- Es compatible con todos los paquetes `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `adonis-intlayer`, `intlayer`).
50
-
51
- ### Llamadas de obtención admitidas
52
-
53
- El servidor detecta las siguientes llamadas a funciones y extrae el primer argumento de cadena literal como la clave del diccionario:
54
-
55
- | Función | Ejemplo |
56
- | ------------- | ----------------------------- |
57
- | `useIntlayer` | `useIntlayer("hero")` |
58
- | `getIntlayer` | `getIntlayer("hero", locale)` |
59
-
60
- Se ignoran los genéricos de TypeScript y los argumentos adicionales; solo importa la cadena de la clave.
61
-
62
- > `useDictionary` y `getDictionary` reciben un objeto `Dictionary` ya importado como su primer argumento en lugar de una clave de cadena, por lo que no se benefician de Ir a la definición y no son rastreados por el servidor.
66
+ > Los diccionarios se leen de la salida de compilación, así que ejecute `npx intlayer build` — o mantenga su servidor de desarrollo en marcha — para darle al servidor algo que resolver.
63
67
 
64
68
  ---
65
69
 
66
70
  ## Instalación
67
71
 
68
- El servidor LSP se distribuye como parte de `@intlayer/lsp`:
72
+ El servidor se distribuye como el binario `intlayer-lsp` dentro de `@intlayer/lsp`:
69
73
 
70
74
  ```bash packageManager="npm"
71
75
  npm install --save-dev @intlayer/lsp
@@ -83,43 +87,43 @@ pnpm add --save-dev @intlayer/lsp
83
87
  bun add --dev @intlayer/lsp
84
88
  ```
85
89
 
86
- El paquete expone el binario `intlayer-lsp`, que los editores utilizan como ejecutable del servidor.
90
+ Instálelo globalmente (`npm install -g @intlayer/lsp`) si su editor necesita `intlayer-lsp` en el `PATH` es el caso del plugin de Claude Code y de cualquier configuración de abajo que invoque el binario directamente.
87
91
 
88
92
  ---
89
93
 
90
- ## Configuración como un plugin de Claude Code
94
+ ## Configuración
91
95
 
92
- El LSP de Intlayer está disponible como un **plugin de Claude Code** alojado directamente en el repositorio de GitHub de Intlayer. Instalarlo le da a Claude Code una sensibilidad nativa de Ir a la definición para todas sus llamadas a `useIntlayer` / `getIntlayer`.
96
+ <Tabs defaultTab="vscode">
97
+ <Tab label="VS Code" value="vscode">
93
98
 
94
- ### 1. Instalar el binario del servidor de lenguaje
99
+ Instale la [extensión de VS Code de Intlayer](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension). El servidor de lenguaje va incluido desde la v8.12.0 y se inicia automáticamente — **no requiere configuración**.
95
100
 
96
- ```bash packageManager="npm"
97
- npm install -g @intlayer/lsp
98
- ```
101
+ Consulte la [documentación de la extensión de VS Code](https://intlayer.org/doc/vs-code-extension) para conocer sus demás funcionalidades.
99
102
 
100
- ```bash packageManager="yarn"
101
- yarn global add @intlayer/lsp
102
- ```
103
+ </Tab>
104
+ <Tab label="Cursor / Windsurf" value="cursor">
103
105
 
104
- ```bash packageManager="pnpm"
105
- pnpm add -g @intlayer/lsp
106
- ```
106
+ [Cursor](https://www.cursor.com/) y [Windsurf](https://windsurf.com/) son forks de VS Code y usan el mismo ecosistema de extensiones. Instale la [extensión de VS Code de Intlayer](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) una vez y el servidor se activa automáticamente — **no requiere configuración**.
107
+
108
+ </Tab>
109
+ <Tab label="Claude Code" value="claude-code">
107
110
 
108
- Esto coloca el binario `intlayer-lsp` en su PATH, que es lo que invoca la entrada `lspServers` del plugin.
111
+ Intlayer ofrece un **plugin de Claude Code** alojado en el repositorio de Intlayer. Le da a Claude Code una resolución real de símbolos para sus claves de diccionario en lugar de recurrir a `grep`.
109
112
 
110
- ### 2. Registrar el marketplace de Intlayer e instalar el plugin
113
+ Ponga el binario en su `PATH`, luego registre el marketplace e instale el plugin:
111
114
 
112
115
  ```bash
116
+ npm install -g @intlayer/lsp
117
+
113
118
  claude plugin marketplace add intlayer@github:aymericzip/intlayer
114
119
  claude plugin install intlayer-lsp@intlayer
115
- claude plugin enable intlayer-lsp@intlayer
116
120
  ```
117
121
 
118
- Claude Code agregará `"intlayer-lsp@intlayer": true` a sus `enabledPlugins` y encenderá automáticamente el servidor de lenguaje en los tipos de archivos compatibles (`.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.svelte`).
122
+ `install` también habilita el plugin. **Reinicie Claude Code** los servidores de lenguaje se cargan al arrancar, así que el plugin no tiene efecto hasta entonces.
119
123
 
120
- ### 3. Habilitar la herramienta LSP (si aún no está activa)
124
+ Claude Code inicia entonces el servidor en archivos `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro` y `.svelte`, y usa `goToDefinition`, `findReferences` y `hover` al navegar por su código.
121
125
 
122
- Algunas versiones de Claude Code requieren que se establezca la bandera de función LSP. Agregue lo siguiente a su archivo `~/.claude/settings.json` si Ir a la definición no funciona después de la instalación:
126
+ Si Go-to-Definition sigue sin hacer nada, puede que su versión de Claude Code limite la herramienta LSP tras una bandera:
123
127
 
124
128
  ```json fileName="~/.claude/settings.json"
125
129
  {
@@ -129,61 +133,10 @@ Algunas versiones de Claude Code requieren que se establezca la bandera de funci
129
133
  }
130
134
  ```
131
135
 
132
- Reinicie Claude Code; ahora usará `goToDefinition`, `findReferences` y otras operaciones de LSP al navegar por su código de Intlayer en lugar de recurrir a `grep`.
133
-
134
- ---
135
-
136
- ## Configuración en VS Code (a través de la extensión — recomendado)
137
-
138
- Si tiene instalada la **extensión Intlayer de VS Code**, el servidor de lenguaje se inicia automáticamente. No se requiere configuración adicional. El LSP está integrado directamente en la extensión de VSCode desde la versión 8.12.0.
139
-
140
- > Consulte la [documentación de la extensión de VS Code](https://intlayer.org/doc/vs-code-extension) para conocer la instalación y otras características.
141
-
142
- ---
143
-
144
- ## Configuración manual en VS Code
145
-
146
- Si no está utilizando la extensión de Intlayer, puede conectar el servidor de lenguaje manualmente utilizando una extensión de cliente LSP genérica como [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter) o escribiendo su propia extensión pequeña. El enfoque recomendado es utilizar la extensión de Intlayer.
147
-
148
- Como referencia, el servidor se inicia a través del binario `intlayer-lsp` sobre stdio:
149
-
150
- ```json fileName=".vscode/settings.json"
151
- {
152
- "intlayer.languageServer.command": "npx",
153
- "intlayer.languageServer.args": ["@intlayer/lsp"]
154
- }
155
- ```
156
-
157
- La extensión de Intlayer lee estas configuraciones para iniciar el servidor. Si depende únicamente de la extensión, no se necesitan configuraciones manuales.
158
-
159
- ---
160
-
161
- ## Configuración en Cursor
162
-
163
- [Cursor](https://www.cursor.com/) es una bifurcación de VS Code con características de IA integradas. Utiliza el mismo ecosistema de extensiones, por lo que la **extensión Intlayer de VS Code** funciona sin ninguna configuración adicional; instálela una vez y Cursor la detectará automáticamente.
164
-
165
- Si prefiere una configuración manual, Cursor también lee `.vscode/settings.json` desde la raíz del espacio de trabajo, por lo que el fragmento de VS Code anterior se aplica directamente.
166
-
167
- ---
168
-
169
- ## Configuración en Windsurf
170
-
171
- [Windsurf](https://windsurf.com/) (de Codeium) es otro editor basado en VS Code. Instale la extensión de Intlayer desde el mercado de VS Code y el servidor de lenguaje se activará automáticamente, exactamente como lo hace en VS Code y Cursor.
172
-
173
- Para la configuración manual, cree `.vscode/settings.json` en la raíz del proyecto:
174
-
175
- ```json fileName=".vscode/settings.json"
176
- {
177
- "intlayer.languageServer.command": "npx",
178
- "intlayer.languageServer.args": ["@intlayer/lsp"]
179
- }
180
- ```
181
-
182
- ---
183
-
184
- ## Configuración en Zed
136
+ </Tab>
137
+ <Tab label="Zed" value="zed">
185
138
 
186
- [Zed](https://zed.dev/) tiene soporte LSP nativo a través de sus configuraciones de idioma. Agregue una entrada en su configuración de usuario de Zed (`~/.config/zed/settings.json`):
139
+ Zed tiene soporte LSP nativo. Añada el servidor a sus ajustes de usuario:
187
140
 
188
141
  ```json fileName="~/.config/zed/settings.json"
189
142
  {
@@ -196,47 +149,21 @@ Para la configuración manual, cree `.vscode/settings.json` en la raíz del proy
196
149
  }
197
150
  },
198
151
  "languages": {
199
- "TypeScript": {
200
- "language_servers": ["intlayer-lsp", "..."]
201
- },
202
- "TSX": {
203
- "language_servers": ["intlayer-lsp", "..."]
204
- },
205
- "JavaScript": {
206
- "language_servers": ["intlayer-lsp", "..."]
207
- },
208
- "Vue.js": {
209
- "language_servers": ["intlayer-lsp", "..."]
210
- },
211
- "Svelte": {
212
- "language_servers": ["intlayer-lsp", "..."]
213
- }
152
+ "TypeScript": { "language_servers": ["intlayer-lsp", "..."] },
153
+ "TSX": { "language_servers": ["intlayer-lsp", "..."] },
154
+ "JavaScript": { "language_servers": ["intlayer-lsp", "..."] },
155
+ "Vue.js": { "language_servers": ["intlayer-lsp", "..."] },
156
+ "Svelte": { "language_servers": ["intlayer-lsp", "..."] }
214
157
  }
215
158
  }
216
159
  ```
217
160
 
218
- El marcador de posición `"..."` le dice a Zed que mantenga sus servidores de lenguaje predeterminados junto con el de Intlayer.
219
-
220
- ---
221
-
222
- ## Configuración para CLIs de agentes de IA (Claude Code, Codex, etc.)
223
-
224
- **Claude Code** tiene soporte de primer nivel para plugins de LSP; siga la [configuración del plugin de Claude Code](#configuración-como-un-plugin-de-claude-code) anterior para obtener la experiencia completa de Ir a la definición directamente en sus sesiones de terminal.
161
+ El marcador `"..."` mantiene los servidores de lenguaje por defecto de Zed junto al de Intlayer.
225
162
 
226
- **OpenAI Codex** y otras herramientas basadas en terminal aún no actúan como clientes LSP; leen y escriben archivos directamente en lugar de mantener una sesión de servidor de lenguaje persistente. Para esas herramientas, el valor de tener el LSP ejecutándose surge de manera indirecta: cuando el servidor está activo en un editor complementario (VS Code, Cursor, Windsurf, ...), el índice en vivo del editor está disponible para cualquier agente de IA que pueda consultarlo a través del contexto proporcionado por el editor (por ejemplo, Cursor Composer, Windsurf Cascade, GitHub Copilot Chat).
163
+ </Tab>
164
+ <Tab label="Neovim" value="neovim">
227
165
 
228
- Si está trabajando puramente en una terminal sin un editor abierto, puede iniciar el servidor de lenguaje en segundo plano para que esté listo para cualquier editor que se conecte más tarde al mismo espacio de trabajo:
229
-
230
- ```bash
231
- # Mantener el servidor activo en segundo plano
232
- npx @intlayer/lsp &
233
- ```
234
-
235
- ---
236
-
237
- ## Configuración manual en Neovim
238
-
239
- Usando [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), registre una configuración de servidor personalizada:
166
+ Con [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), registre una configuración de servidor personalizada:
240
167
 
241
168
  ```lua fileName="~/.config/nvim/init.lua"
242
169
  local lspconfig = require('lspconfig')
@@ -245,7 +172,7 @@ local configs = require('lspconfig.configs')
245
172
  if not configs.intlayer_lsp then
246
173
  configs.intlayer_lsp = {
247
174
  default_config = {
248
- -- Inicie el servidor con npx para que no necesite una instalación global
175
+ -- Iniciar el servidor con npx para no necesitar una instalación global
249
176
  cmd = { 'npx', '--yes', '@intlayer/lsp' },
250
177
  filetypes = {
251
178
  'typescript',
@@ -267,21 +194,10 @@ end
267
194
  lspconfig.intlayer_lsp.setup({})
268
195
  ```
269
196
 
270
- Después de reiniciar Neovim, presionar `gd` sobre una clave de Intlayer invocará Ir a la definición.
271
-
272
- ---
273
-
274
- ## Configuración manual en otros editores
275
-
276
- Cualquier editor que admita el Protocolo de Servidor de Lenguaje puede usar `@intlayer/lsp`. El servidor:
197
+ Tras reiniciar Neovim, `gd` sobre una clave de diccionario ejecuta Ir a la definición y `gr` ejecuta Buscar referencias.
277
198
 
278
- - **Transporte** – Node.js IPC / stdio (estándar)
279
- - **Ejecutable** – `npx @intlayer/lsp` (o el binario `intlayer-lsp` instalado localement)
280
- - **Capacidades** – `definitionProvider: true`, `textDocumentSync: Incremental`
281
-
282
- Consulte la documentación de LSP de su editor para conocer el formato de configuración exacto (por ejemplo, `languageserver.json` para [coc.nvim](https://github.com/neoclide/coc.nvim), o la configuración del cliente LSP en [Helix](https://helix-editor.com)).
283
-
284
- ### Ejemplo: coc.nvim
199
+ </Tab>
200
+ <Tab label="coc.nvim" value="coc">
285
201
 
286
202
  ```json fileName="~/.config/nvim/coc-settings.json"
287
203
  {
@@ -307,9 +223,14 @@ Consulte la documentación de LSP de su editor para conocer el formato de config
307
223
  }
308
224
  ```
309
225
 
310
- ### Ejemplo: Helix
226
+ </Tab>
227
+ <Tab label="Helix" value="helix">
311
228
 
312
229
  ```toml fileName="~/.config/helix/languages.toml"
230
+ [language-server.intlayer-lsp]
231
+ command = "npx"
232
+ args = ["@intlayer/lsp"]
233
+
313
234
  [[language]]
314
235
  name = "typescript"
315
236
  language-servers = ["intlayer-lsp", "typescript-language-server"]
@@ -317,36 +238,54 @@ language-servers = ["intlayer-lsp", "typescript-language-server"]
317
238
  [[language]]
318
239
  name = "tsx"
319
240
  language-servers = ["intlayer-lsp", "typescript-language-server"]
320
-
321
- [language-server.intlayer-lsp]
322
- command = "npx"
323
- args = ["@intlayer/lsp"]
324
241
  ```
325
242
 
243
+ </Tab>
244
+ <Tab label="Otros editores" value="other">
245
+
246
+ Cualquier editor compatible con LSP puede ejecutar `@intlayer/lsp`. Apúntelo a:
247
+
248
+ - **Ejecutable** — `npx @intlayer/lsp`, o el binario `intlayer-lsp`
249
+ - **Transporte** — stdio (estándar)
250
+ - **Capacidades** — `definitionProvider`, `referencesProvider`, `hoverProvider`, `completionProvider` (caracteres desencadenantes `"` `'` `` ` `` `.`), diagnósticos push, `textDocumentSync: Incremental`
251
+ - **Patrones de raíz** — `intlayer.config.ts`, `intlayer.config.js`, `package.json`
252
+
253
+ Consulte la documentación LSP de su editor para el formato de configuración exacto.
254
+
255
+ </Tab>
256
+ </Tabs>
257
+
326
258
  ---
327
259
 
328
- ## Cómo funciona
260
+ ## Nota sobre los agentes de IA en terminal
329
261
 
330
- Cuando se inicia el servidor, este resuelve la configuración de Intlayer desde la raíz del espacio de trabajo utilizando `getConfiguration()`. Esto le proporciona las rutas `build` y `system` necesarias para encontrar los diccionarios compilados.
262
+ **Claude Code** actúa como un cliente LSP real vea la pestaña anterior.
331
263
 
332
- En cada solicitud de **Ir a la definición**:
264
+ **OpenAI Codex** y la mayoría de las demás herramientas de terminal no son clientes LSP: leen y escriben archivos directamente. Ejecutar el servidor por sí solo no les ayuda; el valor viene de tenerlo activo en un editor acompañante cuyo índice el agente pueda consultar (Cursor Composer, Windsurf Cascade, Copilot Chat).
333
265
 
334
- 1. El servidor lee el texto completo del documento abierto.
335
- 2. Escanea llamadas de obtención (`useIntlayer`, `getIntlayer`, etc.) utilizando una expresión regular.
336
- 3. Comprueba si la posición del cursor cae dentro de una de esas llamadas.
337
- 4. Si es así, extrae la clave del diccionario (grupo de captura 3 de la expresión regular) y llama a `getUnmergedDictionaries()` para ubicar cada archivo de contenido que declara esa clave.
338
- 5. Lee cada archivo correspondiente y busca la línea exacta que contiene `key: "<key>"` para posicionar el cursor con precisión.
339
- 6. Devuelve una matriz de objetos `Location` — uno por archivo de origen.
266
+ ---
340
267
 
341
- La configuración se resuelve de manera diferida y se almacena en caché por sesión; se restablece en cada solicitud de `initialize` (por ejemplo, cuando abre una nueva carpeta de espacio de trabajo).
268
+ ## Cómo funciona
269
+
270
+ Para cada archivo, el servidor localiza el `intlayer.config.*` más cercano y carga la configuración de ese proyecto para encontrar los diccionarios compilados. La configuración, los diccionarios y la lista de archivos fuente se cachean con TTL cortos, y se invalidan cuando cambia un archivo de contenido vigilado.
271
+
272
+ En cada petición, el servidor analiza el documento (mediante [oxc](https://oxc.rs/)) e inspecciona la posición del cursor:
273
+
274
+ 1. **Sobre una cadena de clave** (`useIntlayer("home")`) → devuelve todos los archivos de contenido que declaran esa clave, situados en su línea `key:`.
275
+ 2. **Sobre el uso de un campo** (`content.title`, una propiedad desestructurada, `t('path.to.field')`, `<Trans>`, …) → resuelve la variable hasta su diccionario y devuelve el campo correspondiente dentro de los archivos de contenido.
276
+ 3. **Desde un archivo de contenido** → ejecuta la búsqueda inversa, recorriendo las fuentes del proyecto en busca de los puntos de llamada de esa clave o campo.
342
277
 
343
278
  ---
344
279
 
345
- ## Resolución de problemas
280
+ ## Solución de problemas
281
+
282
+ | Síntoma | Causa probable | Solución |
283
+ | -------------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------- |
284
+ | No ocurre absolutamente nada | El servidor no está en ejecución | Compruebe que `@intlayer/lsp` está instalado y que su editor lo lanza |
285
+ | Funciona en el editor, no en Claude Code | Plugin instalado a mitad de sesión | Reinicie Claude Code — los servidores de lenguaje se cargan al arrancar |
286
+ | No se encuentran definiciones para una clave | Diccionarios sin compilar | Ejecute `npx intlayer build`, o inicie su servidor de desarrollo |
287
+ | Todas las claves marcadas como no declaradas | Configuración no resuelta | Verifique que existe un `intlayer.config.ts` (o `.js`) en la raíz de su proyecto |
288
+ | Se usa el proyecto equivocado en un monorepo | Falta configuración por paquete | Añada un `intlayer.config.*` a cada paquete que declare su propio contenido |
289
+ | El servidor falla al arrancar | Versión de Node.js demasiado antigua | Requiere Node.js ≥ 14.18 |
346
290
 
347
- | Síntoma | Causa probable | Solución |
348
- | -------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
349
- | Ir a la definición no hace nada | El servidor no se está ejecutando | Compruebe que `@intlayer/lsp` esté instalado y que el editor lo esté iniciando |
350
- | Raíz de espacio de trabajo incorrecta | Múltiples carpetas de espacio de trabajo | Asegúrese de que la carpeta que contiene `intlayer.config.ts` sea la primera carpeta de espacio de trabajo |
351
- | No se encuentran definiciones para una clave | Configuración no resuelta | Verifique que `intlayer.config.ts` (o `.js`) exista en la raíz del espacio de trabajo |
352
- | El servidor se bloquea al iniciar | Versión de Node.js demasiado antigua | Requiere Node.js ≥ 14.18 |
291
+ En VS Code, el servidor registra en **Ver → Salida → «Intlayer LSP»** — útil para confirmar qué configuración se resolvió y cuántos diccionarios se encontraron.
package/docs/es/readme.md CHANGED
@@ -46,27 +46,27 @@ Con **archivos de contenido por localidad**, **autocompletado de TypeScript**, *
46
46
 
47
47
  ## Beneficios clave de Intlayer:
48
48
 
49
- | Característica | Descripción |
50
- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Soporte Multi-Frameworks**<br><br>Intlayer es compatible con todos los principales marcos y bibliotecas, incluidos Next.js, React, Vite, Vue.js, Nuxt, Preact, Express y más. |
52
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **Gestión de contenido impulsada por JavaScript**<br><br>Aproveche la flexibilidad de JavaScript para definir y gestionar su contenido de manera eficiente. <br><br> - [Declaración de contenido](https://intlayer.org/doc/concept/content) |
53
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **Archivo de declaración de contenido por localidad**<br><br>Acelere su desarrollo declarando su contenido una vez, antes de la generación automática.<br><br> - [Archivo de declaración de contenido por localidad](https://intlayer.org/doc/concept/per-locale-file) |
54
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compilador**<br><br>El compilador Intlayer extrae automáticamente el contenido de los componentes y genera los archivos de diccionario.<br><br> - [Compilador](https://intlayer.org/doc/compiler) |
55
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **Entorno seguro para tipos**<br><br>Aproveche TypeScript para garantizar que sus definiciones de contenido y código estén libres de errores, mientras se beneficia del autocompletado del IDE.<br><br> - [Configuración de TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **Configuración simplificada**<br><br>Póngase en marcha rápidamente con una configuración mínima. Ajuste configuraciones para internacionalización, enrutamiento, IA, compilación y manejo de contenido con facilidad. <br><br> - [Explorar la integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
57
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **Recuperación de contenido simplificada**<br><br>No es necesario llamar a su función `t` para cada elemento de contenido. Recupere todo su contenido directamente utilizando un solo hook.<br><br> - [Integración con React](https://intlayer.org/doc/environment/create-react-app) |
58
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **Implementación consistente de componentes de servidor**<br><br>Perfectamente adecuado para componentes de servidor de Next.js, use la misma implementación tanto para componentes de cliente como de servidor, sin necesidad de pasar su función `t` por cada componente de servidor. <br><br> - [Componentes de servidor](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
59
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **Base de código organizada**<br><br>Mantenga su base de código más organizada: 1 componente = 1 diccionario en la misma carpeta. Traducciones cerca de sus respectivos componentes, mejoran la mantenibilidad y claridad. <br><br> - [Cómo funciona Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
60
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **Enrutamiento mejorado**<br><br>Soporte completo de enrutamiento de aplicaciones, adaptándose perfectamente a estructuras complejas de aplicaciones para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explorar la integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
61
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Soporte para Markdown**<br><br>Importe e interprete archivos locales y Markdown remoto para contenido multilingüe como las políticas de privacidad, documentación, etc. Interprete y haga accesibles los metadatos de Markdown en su código.<br><br> - [Archivos de contenido](https://intlayer.org/doc/concept/content/file) |
62
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **Editor visual y CMS gratuitos**<br><br>Un editor visual y un CMS gratuitos están disponibles para los redactores de contenido, eliminando la necesidad de una plataforma de localización. Mantenga su contenido sincronizado usando Git, o externalícelo total o parcialmente con el CMS.<br><br> - [Editor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **Contenido tree-shakable**<br><br>Contenido tree-shakable, que reduce el tamaño del bundle final. Carga el contenido por componente, excluyendo cualquier contenido no utilizado de su paquete. Admite la carga diferida (lazy loading) para mejorar la eficiencia de carga de la aplicación. <br><br> - [Optimización de la compilación de la aplicación](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
64
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **Renderizado estático**<br><br>No bloquea el renderizado estático. <br><br> - [Integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
65
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **Traducción impulsada por IA**<br><br>Transforme su sitio web a 231 idiomas con un solo clic utilizando las avanzadas herramientas de traducción impulsadas por IA de Intlayer con su propio proveedor de IA / clave API. <br><br> - [Integración CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI de Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Llenado automático](https://intlayer.org/doc/concept/auto-fill) |
66
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **Integración del servidor MCP**<br><br>Proporciona un servidor MCP (Protocolo de Contexto de Modelo) para la automatización del IDE, permitiendo una gestión de contenido fluida y flujos de trabajo de i18n directamente dentro de su entorno de desarrollo. <br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/mcp_server.md) |
67
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Extensión de VSCode**<br><br>Intlayer proporciona una extensión para VSCode para ayudarle a gestionar su contenido y traducciones, construir sus diccionarios, traducir su contenido y más. <br><br> - [Extensión de VSCode](https://intlayer.org/doc/vs-code-extension) |
68
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **Interoperabilidad**<br><br>Permitir la interoperabilidad con react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer y react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer y next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer y next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer y vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) |
69
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **Rendimiento y Benchmark**<br><br>Utiliza tree-shaking avanzado y carga dinámica para mejorar el rendimiento y mantener la solución lo más ligera posible. <br><br> - [Rendimiento y Benchmark](https://intlayer.org/doc/benchmark) |
49
+ | Característica | Descripción |
50
+ | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Soporte Multi-Frameworks**<br><br>Intlayer es compatible con todos los principales marcos y bibliotecas, incluidos Next.js, React, Vite, Vue.js, Nuxt, Preact, Express y más. |
52
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **Gestión de contenido impulsada por JavaScript**<br><br>Aproveche la flexibilidad de JavaScript para definir y gestionar su contenido de manera eficiente. <br><br> - [Declaración de contenido](https://intlayer.org/doc/concept/content) |
53
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **Archivo de declaración de contenido por localidad**<br><br>Acelere su desarrollo declarando su contenido una vez, antes de la generación automática.<br><br> - [Archivo de declaración de contenido por localidad](https://intlayer.org/doc/concept/per-locale-file) |
54
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compilador**<br><br>El compilador Intlayer extrae automáticamente el contenido de los componentes y genera los archivos de diccionario.<br><br> - [Compilador](https://intlayer.org/doc/compiler) |
55
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **Entorno seguro para tipos**<br><br>Aproveche TypeScript para garantizar que sus definiciones de contenido y código estén libres de errores, mientras se beneficia del autocompletado del IDE.<br><br> - [Configuración de TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **Configuración simplificada**<br><br>Póngase en marcha rápidamente con una configuración mínima. Ajuste configuraciones para internacionalización, enrutamiento, IA, compilación y manejo de contenido con facilidad. <br><br> - [Explorar la integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
57
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **Recuperación de contenido simplificada**<br><br>No es necesario llamar a su función `t` para cada elemento de contenido. Recupere todo su contenido directamente utilizando un solo hook.<br><br> - [Integración con React](https://intlayer.org/doc/environment/create-react-app) |
58
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **Implementación consistente de componentes de servidor**<br><br>Perfectamente adecuado para componentes de servidor de Next.js, use la misma implementación tanto para componentes de cliente como de servidor, sin necesidad de pasar su función `t` por cada componente de servidor. <br><br> - [Componentes de servidor](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
59
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **Base de código organizada**<br><br>Mantenga su base de código más organizada: 1 componente = 1 diccionario en la misma carpeta. Traducciones cerca de sus respectivos componentes, mejoran la mantenibilidad y claridad. <br><br> - [Cómo funciona Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
60
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **Enrutamiento mejorado**<br><br>Soporte completo de enrutamiento de aplicaciones, adaptándose perfectamente a estructuras complejas de aplicaciones para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explorar la integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
61
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Soporte para Markdown**<br><br>Importe e interprete archivos locales y Markdown remoto para contenido multilingüe como las políticas de privacidad, documentación, etc. Interprete y haga accesibles los metadatos de Markdown en su código.<br><br> - [Archivos de contenido](https://intlayer.org/doc/concept/content/file) |
62
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **Editor visual y CMS gratuitos**<br><br>Un editor visual y un CMS gratuitos están disponibles para los redactores de contenido, eliminando la necesidad de una plataforma de localización. Mantenga su contenido sincronizado usando Git, o externalícelo total o parcialmente con el CMS.<br><br> - [Editor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **Contenido tree-shakable**<br><br>Contenido tree-shakable, que reduce el tamaño del bundle final. Carga el contenido por componente, excluyendo cualquier contenido no utilizado de su paquete. Admite la carga diferida (lazy loading) para mejorar la eficiencia de carga de la aplicación. <br><br> - [Optimización de la compilación de la aplicación](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
64
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **Renderizado estático**<br><br>No bloquea el renderizado estático. <br><br> - [Integración con Next.js](https://intlayer.org/doc/environment/nextjs) |
65
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **Traducción impulsada por IA**<br><br>Transforme su sitio web a 231 idiomas con un solo clic utilizando las avanzadas herramientas de traducción impulsadas por IA de Intlayer con su propio proveedor de IA / clave API. <br><br> - [Integración CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI de Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Llenado automático](https://intlayer.org/doc/concept/auto-fill) |
66
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **Integración del servidor MCP**<br><br>Proporciona un servidor MCP (Protocolo de Contexto de Modelo) para la automatización del IDE, permitiendo una gestión de contenido fluida y flujos de trabajo de i18n directamente dentro de su entorno de desarrollo. <br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/mcp_server.md) |
67
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Extensión de VSCode**<br><br>Intlayer proporciona una extensión para VSCode para ayudarle a gestionar su contenido y traducciones, construir sus diccionarios, traducir su contenido y más. <br><br> - [Extensión de VSCode](https://intlayer.org/doc/vs-code-extension) |
68
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **Interoperabilidad**<br><br>Permitir la interoperabilidad con react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer y react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer y next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer y next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer y vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Adaptadores de compatibilidad de Intlayer](https://intlayer.org/doc/compatibility) |
69
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **Rendimiento y Benchmark**<br><br>Utiliza tree-shaking avanzado y carga dinámica para mejorar el rendimiento y mantener la solución lo más ligera posible. <br><br> - [Rendimiento y Benchmark](https://intlayer.org/doc/benchmark) |
70
70
 
71
71
  ---
72
72
 
@@ -173,7 +173,7 @@ Explore nuestra documentación completa para comenzar con Intlayer y aprender c
173
173
  <li><a href="https://intlayer.org/doc/concept/cms" rel=''>CMS de Intlayer</a></li>
174
174
  <li><a href="https://intlayer.org/doc/concept/content" rel=''>Diccionario</a>
175
175
  <ul>
176
- <li><a href="https://intlayer.org/doc/concept/content/per-locale-file" rel=''>Archivo de declaración de contenido por localidad</a></li>
176
+ <li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Archivo de declaración de contenido por localidad</a></li>
177
177
  <li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Traducción</a></li>
178
178
  <li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Enumeración</a></li>
179
179
  <li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Condición</a></li>
@@ -194,7 +194,7 @@ Explore nuestra documentación completa para comenzar con Intlayer y aprender c
194
194
  <ul>
195
195
  <li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
196
196
  <li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
197
- <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-Page-Router" rel=''>Next.js Page Router</a></li>
197
+ <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
198
198
  <li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>Next.js usando el Compilador</a></li>
199
199
  </ul>
200
200
  </li>
@@ -223,7 +223,7 @@ Explore nuestra documentación completa para comenzar con Intlayer y aprender c
223
223
  <li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
224
224
  <li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
225
225
  <li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
226
- <li><a href="https://intlayer.org/doc/environment/vite-and-nuxt" rel=''>Vite + Nuxt</a></li>
226
+ <li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
227
227
  <li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
228
228
  <li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
229
229
  <li>