@intlayer/docs 8.2.4 → 8.3.0-canary.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 (135) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/cjs/blog.cjs.map +1 -1
  3. package/dist/cjs/common.cjs +1 -1
  4. package/dist/cjs/common.cjs.map +1 -1
  5. package/dist/cjs/doc.cjs.map +1 -1
  6. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +1 -1
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +1 -1
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +1 -1
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +1 -1
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/cjs/legal.cjs.map +1 -1
  16. package/dist/esm/blog.mjs.map +1 -1
  17. package/dist/esm/common.mjs +1 -1
  18. package/dist/esm/common.mjs.map +1 -1
  19. package/dist/esm/doc.mjs.map +1 -1
  20. package/dist/esm/frequentQuestions.mjs.map +1 -1
  21. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  22. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  23. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  24. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  25. package/dist/esm/legal.mjs.map +1 -1
  26. package/dist/types/blog.d.ts +1 -1
  27. package/dist/types/common.d.ts +1 -1
  28. package/dist/types/common.d.ts.map +1 -1
  29. package/dist/types/doc.d.ts +1 -1
  30. package/dist/types/frequentQuestions.d.ts +1 -1
  31. package/dist/types/generated/blog.entry.d.ts +1 -1
  32. package/dist/types/generated/docs.entry.d.ts +1 -1
  33. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
  34. package/dist/types/generated/legal.entry.d.ts +1 -1
  35. package/dist/types/legal.d.ts +1 -1
  36. package/docs/ar/compiler.md +73 -8
  37. package/docs/ar/configuration.md +74 -27
  38. package/docs/ar/intlayer_with_nextjs_compiler.md +13 -5
  39. package/docs/ar/intlayer_with_tanstack.md +22 -1
  40. package/docs/ar/intlayer_with_vite+react_compiler.md +13 -5
  41. package/docs/de/compiler.md +74 -9
  42. package/docs/de/configuration.md +61 -22
  43. package/docs/de/intlayer_with_nextjs_compiler.md +12 -4
  44. package/docs/de/intlayer_with_tanstack.md +22 -1
  45. package/docs/de/intlayer_with_vite+react_compiler.md +12 -4
  46. package/docs/en/compiler.md +79 -1
  47. package/docs/en/configuration.md +50 -9
  48. package/docs/en/intlayer_with_nextjs_compiler.md +9 -1
  49. package/docs/en/intlayer_with_tanstack.md +23 -2
  50. package/docs/en/intlayer_with_vite+react_compiler.md +9 -1
  51. package/docs/en-GB/compiler.md +72 -6
  52. package/docs/en-GB/configuration.md +50 -10
  53. package/docs/en-GB/intlayer_with_nextjs_compiler.md +22 -3
  54. package/docs/en-GB/intlayer_with_tanstack.md +22 -1
  55. package/docs/en-GB/intlayer_with_vite+react_compiler.md +22 -3
  56. package/docs/es/compiler.md +71 -6
  57. package/docs/es/configuration.md +65 -26
  58. package/docs/es/intlayer_with_nextjs_compiler.md +9 -1
  59. package/docs/es/intlayer_with_tanstack.md +22 -1
  60. package/docs/es/intlayer_with_vite+react_compiler.md +9 -1
  61. package/docs/fr/compiler.md +69 -4
  62. package/docs/fr/configuration.md +62 -23
  63. package/docs/fr/intlayer_with_nextjs_compiler.md +9 -1
  64. package/docs/fr/intlayer_with_tanstack.md +22 -1
  65. package/docs/fr/intlayer_with_vite+react_compiler.md +9 -1
  66. package/docs/hi/compiler.md +74 -9
  67. package/docs/hi/configuration.md +70 -23
  68. package/docs/hi/intlayer_with_nextjs_compiler.md +15 -7
  69. package/docs/hi/intlayer_with_tanstack.md +22 -1
  70. package/docs/hi/intlayer_with_vite+react_compiler.md +15 -7
  71. package/docs/id/compiler.md +73 -8
  72. package/docs/id/configuration.md +67 -20
  73. package/docs/id/intlayer_with_nextjs_compiler.md +13 -5
  74. package/docs/id/intlayer_with_tanstack.md +22 -1
  75. package/docs/id/intlayer_with_vite+react_compiler.md +13 -5
  76. package/docs/it/compiler.md +73 -8
  77. package/docs/it/configuration.md +66 -27
  78. package/docs/it/intlayer_with_nextjs_compiler.md +12 -4
  79. package/docs/it/intlayer_with_tanstack.md +22 -1
  80. package/docs/it/intlayer_with_vite+react_compiler.md +12 -4
  81. package/docs/ja/compiler.md +75 -10
  82. package/docs/ja/configuration.md +70 -23
  83. package/docs/ja/intlayer_with_nextjs_compiler.md +13 -5
  84. package/docs/ja/intlayer_with_tanstack.md +22 -1
  85. package/docs/ja/intlayer_with_vite+react_compiler.md +13 -5
  86. package/docs/ko/compiler.md +75 -10
  87. package/docs/ko/configuration.md +70 -23
  88. package/docs/ko/intlayer_with_nextjs_compiler.md +22 -3
  89. package/docs/ko/intlayer_with_tanstack.md +22 -1
  90. package/docs/ko/intlayer_with_vite+react_compiler.md +22 -3
  91. package/docs/pl/compiler.md +73 -8
  92. package/docs/pl/configuration.md +71 -29
  93. package/docs/pl/intlayer_with_nextjs_compiler.md +13 -5
  94. package/docs/pl/intlayer_with_tanstack.md +22 -1
  95. package/docs/pl/intlayer_with_vite+react_compiler.md +13 -5
  96. package/docs/pt/compiler.md +74 -9
  97. package/docs/pt/configuration.md +62 -23
  98. package/docs/pt/intlayer_with_nextjs_compiler.md +12 -4
  99. package/docs/pt/intlayer_with_tanstack.md +22 -1
  100. package/docs/pt/intlayer_with_vite+react_compiler.md +12 -4
  101. package/docs/ru/compiler.md +74 -9
  102. package/docs/ru/configuration.md +61 -22
  103. package/docs/ru/intlayer_with_nextjs_compiler.md +11 -3
  104. package/docs/ru/intlayer_with_tanstack.md +22 -1
  105. package/docs/ru/intlayer_with_vite+react_compiler.md +11 -3
  106. package/docs/tr/compiler.md +73 -8
  107. package/docs/tr/configuration.md +77 -42
  108. package/docs/tr/intlayer_with_nextjs_compiler.md +11 -3
  109. package/docs/tr/intlayer_with_tanstack.md +22 -1
  110. package/docs/tr/intlayer_with_vite+react_compiler.md +11 -3
  111. package/docs/uk/compiler.md +74 -9
  112. package/docs/uk/configuration.md +207 -165
  113. package/docs/uk/intlayer_with_nextjs_compiler.md +13 -5
  114. package/docs/uk/intlayer_with_tanstack.md +22 -1
  115. package/docs/uk/intlayer_with_vite+react_compiler.md +13 -5
  116. package/docs/vi/compiler.md +75 -10
  117. package/docs/vi/configuration.md +97 -21
  118. package/docs/vi/intlayer_with_nextjs_compiler.md +14 -6
  119. package/docs/vi/intlayer_with_tanstack.md +22 -1
  120. package/docs/vi/intlayer_with_vite+react_compiler.md +14 -6
  121. package/docs/zh/compiler.md +75 -10
  122. package/docs/zh/configuration.md +77 -42
  123. package/docs/zh/intlayer_with_nextjs_compiler.md +13 -5
  124. package/docs/zh/intlayer_with_tanstack.md +22 -1
  125. package/docs/zh/intlayer_with_vite+react_compiler.md +13 -5
  126. package/package.json +17 -17
  127. package/src/blog.ts +1 -1
  128. package/src/common.ts +2 -1
  129. package/src/doc.ts +1 -1
  130. package/src/frequentQuestions.ts +1 -1
  131. package/src/generated/blog.entry.ts +1 -1
  132. package/src/generated/docs.entry.ts +1 -1
  133. package/src/generated/frequentQuestions.entry.ts +1 -1
  134. package/src/generated/legal.entry.ts +1 -1
  135. package/src/legal.ts +1 -1
@@ -437,12 +437,33 @@ export const Route = createFileRoute("/{-$locale}/")({
437
437
  component: RouteComponent,
438
438
  head: ({ params }) => {
439
439
  const { locale } = params;
440
+ const path = "/"; // The path for this route
441
+
440
442
  const metaContent = getIntlayer("app", locale);
441
443
 
442
444
  return {
445
+ links: [
446
+ // Canonical link: Points to the current localized page
447
+ { rel: "canonical", href: getLocalizedUrl(path, locale) },
448
+
449
+ // Hreflang: Tell Google about all localized versions
450
+ ...localeMap(({ locale: mapLocale }) => ({
451
+ rel: "alternate",
452
+ hrefLang: mapLocale,
453
+ href: getLocalizedUrl(path, mapLocale),
454
+ })),
455
+
456
+ // x-default: For users in unmatched languages
457
+ // Define the default fallback locale (usually your primary language)
458
+ {
459
+ rel: "alternate",
460
+ hrefLang: "x-default",
461
+ href: getLocalizedUrl(path, defaultLocale),
462
+ },
463
+ ],
443
464
  meta: [
444
465
  { title: metaContent.title },
445
- { content: metaContent.meta.description, name: "description" },
466
+ { name: "description", content: metaContent.meta.description },
446
467
  ],
447
468
  };
448
469
  },
@@ -19,6 +19,9 @@ slugs:
19
19
  applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
20
20
  youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
21
21
  history:
22
+ - version: 8.2.0
23
+ date: 2026-03-09
24
+ changes: Update compiler options, add FilePathPattern support
22
25
  - version: 8.1.6
23
26
  date: 2026-02-23
24
27
  changes: Pierwsze wydanie
@@ -125,23 +128,28 @@ const config: IntlayerConfig = {
125
128
  },
126
129
  compiler: {
127
130
  /**
128
- * Określa, czy kompilator powinien być włączony.
131
+ * Wskazuje, czy kompilator powinien być włączony.
129
132
  */
130
133
  enabled: true,
131
134
 
132
135
  /**
133
136
  * Katalog wyjściowy dla zoptymalizowanych słowników.
134
137
  */
135
- outputDir: "compiler",
138
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
139
+
140
+ /**
141
+ * Wstaw tylko zawartość do wygenerowanego pliku, bez klucza.
142
+ */
143
+ noMetadata: false,
136
144
 
137
145
  /**
138
146
  * Prefiks klucza słownika
139
147
  */
140
- dictionaryKeyPrefix: "", // Usuń prefiks bazowy
148
+ dictionaryKeyPrefix: "", // Remove base prefix
141
149
 
142
150
  /**
143
- * Określa, czy komponenty powinny zostać zapisane po transformacji.
144
- * W ten sposób kompilator można uruchomić tylko raz, aby przekształcić aplikację, a następnie można go usunąć.
151
+ * Wskazuje, czy komponenty powinny być zapisywane po transformacji.
152
+ * W ten sposób kompilator można uruchomić tylko raz, aby przetransformować aplikację, a następnie go usunąć.
145
153
  */
146
154
  saveComponents: false,
147
155
  },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-09
3
- updatedAt: 2026-02-25
3
+ updatedAt: 2026-03-10
4
4
  title: Intlayer Compiler | Extração Automática de Conteúdo para i18n
5
5
  description: Automatize seu processo de internacionalização com o Intlayer Compiler. Extraia conteúdo diretamente dos seus componentes para uma i18n mais rápida e eficiente em Vite, Next.js e mais.
6
6
  keywords:
@@ -20,6 +20,9 @@ slugs:
20
20
  - doc
21
21
  - compiler
22
22
  history:
23
+ - version: 8.2.0
24
+ date: 2026-03-10
25
+ changes: Update compiler options, add FilePathPattern support
23
26
  - version: 8.1.7
24
27
  date: 2026-02-25
25
28
  changes: Atualizar opções do compilador
@@ -157,13 +160,12 @@ import { type IntlayerConfig, Locales } from "intlayer";
157
160
  const config: IntlayerConfig = {
158
161
  compiler: {
159
162
  /**
160
- * Indica se o compilador deve ser ativado.
161
- * Defina como 'build-only' para pular o compilador durante o desenvolvimento e acelerar os tempos de inicialização.
163
+ * Defina como 'build-only' para ignorar o compilador durante o desenvolvimento e acelerar os tempos de inicialização.
162
164
  */
163
165
  enabled: true,
164
166
 
165
167
  /**
166
- * Padrão para percorrer o código a ser otimizado.
168
+ * Pattern to traverse the code to optimize.
167
169
  */
168
170
  transformPattern: [
169
171
  "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
@@ -171,23 +173,28 @@ const config: IntlayerConfig = {
171
173
  ],
172
174
 
173
175
  /**
174
- * Padrão para excluir da otimização.
176
+ * Pattern to exclude from the optimization.
175
177
  */
176
178
  excludePattern: ["**/node_modules/**"],
177
179
 
178
180
  /**
179
- * Diretório de saída para os dicionários otimizados.
181
+ * Diretório de saída para os dicionários optimizados.
180
182
  */
181
- outputDir: "i18n",
183
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
184
+
185
+ /**
186
+ * Inserir apenas o conteúdo no arquivo gerado, sem chave.
187
+ */
188
+ noMetadata: false,
182
189
 
183
190
  /**
184
191
  * Prefixo da chave do dicionário
185
192
  */
186
- dictionaryKeyPrefix: "", // Remover prefixo base
193
+ dictionaryKeyPrefix: "", // Remove base prefix
187
194
 
188
195
  /**
189
196
  * Indica se os componentes devem ser salvos após serem transformados.
190
- * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o app e depois pode ser removido.
197
+ * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o app e depois removido.
191
198
  */
192
199
  saveComponents: false,
193
200
  },
@@ -209,3 +216,61 @@ npx intlayer fill # Preencher traduções ausentes
209
216
  ```
210
217
 
211
218
  > Para mais detalhes, consulte a [documentação da CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/cli/ci.md)
219
+
220
+ ### Referência de configuração do compilador
221
+
222
+ As seguintes propriedades podem ser configuradas no bloco `compiler` do seu arquivo `intlayer.config.ts`:
223
+
224
+ - **enabled**:
225
+ - _Tipo_: `boolean | 'build-only'`
226
+ - _Padrão_: `true`
227
+ - _Descrição_: Indica se o compilador deve ser habilitado.
228
+ - **dictionaryKeyPrefix**:
229
+ - _Tipo_: `string`
230
+ - _Padrão_: `'comp-'`
231
+ - _Descrição_: Prefixo para as chaves de dicionário extraídas.
232
+ - **transformPattern**:
233
+ - _Tipo_: `string | string[]`
234
+ - _Padrão_: `['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']`
235
+ - _Descrição_: Padrões para percorrer o código a ser otimizado.
236
+ - **excludePattern**:
237
+ - _Tipo_: `string | string[]`
238
+ - _Padrão_: `['**/node_modules/**']`
239
+ - _Descrição_: Padrões para excluir da otimização.
240
+ - **outputDir** (Deprecated):
241
+ - _Tipo_: `string`
242
+ - _Padrão_: `'compiler'`
243
+ - _Descrição_: O diretório onde os dicionários extraídos serão armazenados.
244
+
245
+ - **output**:
246
+ - _Tipo_: `FilePathPattern`
247
+ - _Padrão_: `({ key }) => 'compiler/${key}.content.json'`
248
+ - _Descrição_: Define o caminho dos arquivos de saída. Substitui `outputDir`. Manipula variáveis dinâmicas como `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`. Pode ser definido como uma string usando o formato `'my/{{var}}/path'` ou como uma função.
249
+ - _Nota_: `./**/*` Os caminhos são resolvidos relativamente ao componente. `/**/*` os caminhos são resolvidos relativamente ao `baseDir` do Intlayer.
250
+ - _Exemplo_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
251
+
252
+ - **noMetadata**:
253
+ - _Tipo_: `boolean`
254
+ - _Padrão_: `false`
255
+ - _Descrição_: Indica se os metadados devem ser salvos no arquivo. Se verdadeiro, o compilador não salvará os metadados dos dicionários (chave, wrapper de conteúdo).
256
+ - _Nota_: Útil se usado com o plugin `loadJSON`.
257
+ - _Exemplo_: Se `true`:
258
+ ```json
259
+ {
260
+ "key": "value"
261
+ }
262
+ ```
263
+ Se `false`:
264
+ ```json
265
+ {
266
+ "key": "value",
267
+ "content": {
268
+ "key": "value"
269
+ }
270
+ }
271
+ ```
272
+
273
+ - **saveComponents**:
274
+ - _Tipo_: `boolean`
275
+ - _Padrão_: `false`
276
+ - _Descrição_: Indica se os componentes devem ser salvos após serem transformados.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-02-25
3
+ updatedAt: 2026-03-11
4
4
  title: Configuração
5
5
  description: Aprenda como configurar o Intlayer para sua aplicação. Entenda as várias configurações e opções disponíveis para personalizar o Intlayer conforme suas necessidades.
6
6
  keywords:
@@ -14,18 +14,24 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.3.0
18
+ data: 2026-03-11
19
+ changes: Mover 'baseDir' da configuração de 'content' para a configuração de 'system'
20
+ - version: 8.2.0
21
+ date: 2026-03-10
22
+ changes: Atualizar opções do compilador, adicionar suporte para 'output' e 'noMetadata'
17
23
  - version: 8.1.7
18
24
  date: 2026-02-25
19
25
  changes: Atualizar opções do compilador
20
26
  - version: 8.0.6
21
27
  date: 2026-02-12
22
- changes: Add support for Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face, and Together.ai providers
28
+ changes: Adicionar suporte para os provedores Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face e Together.ai
23
29
  - version: 8.0.4
24
30
  date: 2026-02-06
25
31
  changes: Adicionar `dataSerialization` à configuração de IA
26
32
  - version: 8.0.0
27
33
  date: 2026-01-22
28
- changes: Move `importMode` build configuration to `dictionary` configuration.
34
+ changes: Mover a configuração de build importMode para a configuração do dicionário.
29
35
  - version: 8.0.0
30
36
  date: 2026-01-18
31
37
  changes: Separar a configuração do sistema da configuração do conteúdo. Mover os caminhos internos para a propriedade `system`. Adicionar `codeDir` para separar os arquivos de conteúdo da transformação do código.
@@ -419,7 +425,7 @@ const config: IntlayerConfig = {
419
425
  */
420
426
  compiler: {
421
427
  /**
422
- * Indicates if the compiler should be enabled.
428
+ * Indica se o compilador deve ser habilitado.
423
429
  */
424
430
  enabled: true,
425
431
 
@@ -437,18 +443,23 @@ const config: IntlayerConfig = {
437
443
  excludePattern: ["**/node_modules/**"],
438
444
 
439
445
  /**
440
- * Output directory for the optimized dictionaries.
446
+ * Diretório de saída para os dicionários optimizados.
441
447
  */
442
- outputDir: "compiler",
448
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
443
449
 
444
450
  /**
445
- * Dictionary key prefix
451
+ * Inserir apenas o conteúdo no arquivo gerado, sem chave.
452
+ */
453
+ noMetadata: false,
454
+
455
+ /**
456
+ * Prefixo da chave do dicionário
446
457
  */
447
458
  dictionaryKeyPrefix: "", // Remove base prefix
448
459
 
449
460
  /**
450
- * Indicates if the components should be saved after being transformed.
451
- * That way, the compiler can be run only once to transform the app, and then it can be removed.
461
+ * Indica se os componentes devem ser salvos após serem transformados.
462
+ * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o app e depois removido.
452
463
  */
453
464
  saveComponents: false,
454
465
  },
@@ -704,7 +715,7 @@ Configurações relacionadas ao manuseio de conteúdo dentro da aplicação, inc
704
715
  #### Propriedades
705
716
 
706
717
  - **autoFill**:
707
- - _Tipo_: `boolean | string | { [key in Locales]?: string }`
718
+ - _Tipo_: `boolean | string | FilePathPattern | { [key in Locales]?: string }`
708
719
  - _Padrão_: `undefined`
709
720
  - _Descrição_: Indica como o conteúdo deve ser preenchido automaticamente usando IA. Pode ser declarado globalmente no arquivo `intlayer.config.ts`.
710
721
  - _Exemplo_: true
@@ -722,18 +733,11 @@ Configurações relacionadas ao manuseio de conteúdo dentro da aplicação, inc
722
733
 
723
734
  - **fileExtensions**:
724
735
  - _Tipo_: `string[]`
725
- - _Default_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
736
+ - _Padrão_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
726
737
  - _Descrição_: Extensões de arquivo a serem procuradas ao construir dicionários.
727
738
  - _Exemplo_: `['.data.ts', '.data.js', '.data.json']`
728
739
  - _Nota_: Personalizar extensões de arquivo pode ajudar a evitar conflitos.
729
740
 
730
- - **baseDir**:
731
- - _Tipo_: `string`
732
- - _Padrão_: `process.cwd()`
733
- - _Descrição_: O diretório base para o projeto.
734
- - _Exemplo_: `'/path/to/project'`
735
- - _Nota_: Isso é usado para resolver todos os diretórios relacionados ao Intlayer.
736
-
737
741
  - **contentDir**:
738
742
  - _Tipo_: `string[]`
739
743
  - _Padrão_: `['.']`
@@ -772,6 +776,13 @@ Configurações relacionadas aos caminhos internos e resultados de saída do Int
772
776
 
773
777
  #### Propriedades
774
778
 
779
+ - **baseDir**:
780
+ - _Tipo_: `string`
781
+ - _Padrão_: `process.cwd()`
782
+ - _Descrição_: O diretório base para o projeto.
783
+ - _Exemplo_: `'/path/to/project'`
784
+ - _Nota_: Isso é usado para resolver todos os diretórios relacionados ao Intlayer.
785
+
775
786
  - **dictionariesDir**:
776
787
  - _Tipo_: `string`
777
788
  - _Padrão_: `'.intlayer/dictionary'`
@@ -962,10 +973,10 @@ As opções de build se aplicam aos plugins `@intlayer/babel` e `@intlayer/swc`.
962
973
  - _Nota_: Pode ser usado para desabilitar a build de dicionários, por exemplo quando a execução em um ambiente Node.js deve ser evitada.
963
974
 
964
975
  - **checkTypes**:
965
- - _Type_: `boolean`
966
- - _Default_: `false`
967
- - _Description_: Indica se a compilação deve verificar os tipos do TypeScript e registrar erros.
968
- - _Note_: Isso pode atrasar a compilação.
976
+ - _Tipo_: `boolean`
977
+ - _Padrão_: `false`
978
+ - _Descrição_: Indica se a compilação deve verificar os tipos do TypeScript e registrar erros.
979
+ - _Nota_: Isso pode atrasar a compilação.
969
980
 
970
981
  - **optimize**:
971
982
  - _Tipo_: `boolean`
@@ -978,7 +989,7 @@ As opções de build se aplicam aos plugins `@intlayer/babel` e `@intlayer/swc`.
978
989
  - _Nota_: Certifique-se de que todas as chaves sejam declaradas estaticamente nas chamadas de `useIntlayer`. Exemplo: `useIntlayer('navbar')`.
979
990
 
980
991
  - **importMode**:
981
- - _Note_: **Deprecated**: Use `dictionary.importMode` instead.
992
+ - _Nota_: **Deprecated**: Use `dictionary.importMode` instead.
982
993
  - _Tipo_: `'static' | 'dynamic' | 'fetch'`
983
994
  - _Padrão_: `'static'`
984
995
  - _Descrição_: Controla como os dicionários são importados.
@@ -1057,3 +1068,31 @@ Configurações que controlan o compilador Intlayer, que extrai dicionários dir
1057
1068
  - _Tipo_: `string`
1058
1069
  - _Padrão_: `'compiler'`
1059
1070
  - _Descrição_: O diretório onde os dicionários extraídos serão armazenados, relativo ao caminho base do seu projeto.
1071
+
1072
+ - **output**:
1073
+ - _Tipo_: `FilePathPattern`
1074
+ - _Padrão_: `({ key }) => 'compiler/${key}.content.json'`
1075
+ - _Descrição_: Define o caminho dos arquivos de saída. Substitui `outputDir`. Manipula variáveis dinâmicas como `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`. Pode ser definido como uma string usando o formato `'my/{{var}}/path'` ou como uma função.
1076
+ - _Nota_: `./**/*` Os caminhos são resolvidos relativamente ao componente. `/**/*` os caminhos são resolvidos relativamente ao `baseDir` do Intlayer.
1077
+ - _Exemplo_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
1078
+
1079
+ - **noMetadata**:
1080
+ - _Tipo_: `boolean`
1081
+ - _Padrão_: `false`
1082
+ - _Descrição_: Indica se os metadados devem ser salvos no arquivo. Se verdadeiro, o compilador não salvará os metadados dos dicionários (chave, wrapper de conteúdo).
1083
+ - _Nota_: Útil se usado com o plugin `loadJSON`.
1084
+ - _Exemplo_: Se `true`:
1085
+ ```json
1086
+ {
1087
+ "key": "value"
1088
+ }
1089
+ ```
1090
+ Se `false`:
1091
+ ```json
1092
+ {
1093
+ "key": "value",
1094
+ "content": {
1095
+ "key": "value"
1096
+ }
1097
+ }
1098
+ ```
@@ -20,6 +20,9 @@ slugs:
20
20
  applicationTemplate: https://github.com/aymericzip/intlayer-next-no-lolale-path-template
21
21
  youtubeVideo: https://www.youtube.com/watch?v=e_PPG7PTqGU
22
22
  history:
23
+ - version: 8.2.0
24
+ date: 2026-03-09
25
+ changes: Update compiler options, add FilePathPattern support
23
26
  - version: 8.1.6
24
27
  date: 2026-02-23
25
28
  changes: Lançamento inicial
@@ -133,18 +136,23 @@ const config: IntlayerConfig = {
133
136
  enabled: true,
134
137
 
135
138
  /**
136
- * Diretório de saída para os dicionários otimizados.
139
+ * Diretório de saída para os dicionários optimizados.
137
140
  */
138
- outputDir: "compiler",
141
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
142
+
143
+ /**
144
+ * Inserir apenas o conteúdo no arquivo gerado, sem chave.
145
+ */
146
+ noMetadata: false,
139
147
 
140
148
  /**
141
149
  * Prefixo da chave do dicionário
142
150
  */
143
- dictionaryKeyPrefix: "", // Remover prefixo base
151
+ dictionaryKeyPrefix: "", // Remove base prefix
144
152
 
145
153
  /**
146
154
  * Indica se os componentes devem ser salvos após serem transformados.
147
- * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o aplicativo e depois pode ser removido.
155
+ * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o app e depois removido.
148
156
  */
149
157
  saveComponents: false,
150
158
  },
@@ -438,12 +438,33 @@ export const Route = createFileRoute("/{-$locale}/")({
438
438
  component: RouteComponent,
439
439
  head: ({ params }) => {
440
440
  const { locale } = params;
441
+ const path = "/"; // The path for this route
442
+
441
443
  const metaContent = getIntlayer("app", locale);
442
444
 
443
445
  return {
446
+ links: [
447
+ // Canonical link: Points to the current localized page
448
+ { rel: "canonical", href: getLocalizedUrl(path, locale) },
449
+
450
+ // Hreflang: Tell Google about all localized versions
451
+ ...localeMap(({ locale: mapLocale }) => ({
452
+ rel: "alternate",
453
+ hrefLang: mapLocale,
454
+ href: getLocalizedUrl(path, mapLocale),
455
+ })),
456
+
457
+ // x-default: For users in unmatched languages
458
+ // Define the default fallback locale (usually your primary language)
459
+ {
460
+ rel: "alternate",
461
+ hrefLang: "x-default",
462
+ href: getLocalizedUrl(path, defaultLocale),
463
+ },
464
+ ],
444
465
  meta: [
445
466
  { title: metaContent.title },
446
- { content: metaContent.meta.description, name: "description" },
467
+ { name: "description", content: metaContent.meta.description },
447
468
  ],
448
469
  };
449
470
  },
@@ -19,6 +19,9 @@ slugs:
19
19
  applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
20
20
  youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
21
21
  history:
22
+ - version: 8.2.0
23
+ date: 2026-03-09
24
+ changes: Update compiler options, add FilePathPattern support
22
25
  - version: 8.1.6
23
26
  date: 2026-02-23
24
27
  changes: Lançamento inicial
@@ -135,18 +138,23 @@ const config: IntlayerConfig = {
135
138
  enabled: true,
136
139
 
137
140
  /**
138
- * Diretório de saída para os dicionários otimizados.
141
+ * Diretório de saída para os dicionários optimizados.
139
142
  */
140
- outputDir: "compiler",
143
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
144
+
145
+ /**
146
+ * Inserir apenas o conteúdo no arquivo gerado, sem chave.
147
+ */
148
+ noMetadata: false,
141
149
 
142
150
  /**
143
151
  * Prefixo da chave do dicionário
144
152
  */
145
- dictionaryKeyPrefix: "", // Remover prefixo base
153
+ dictionaryKeyPrefix: "", // Remove base prefix
146
154
 
147
155
  /**
148
156
  * Indica se os componentes devem ser salvos após serem transformados.
149
- * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o aplicativo e depois pode ser removido.
157
+ * Dessa forma, o compilador pode ser executado apenas uma vez para transformar o app e depois removido.
150
158
  */
151
159
  saveComponents: false,
152
160
  },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-09
3
- updatedAt: 2026-02-25
3
+ updatedAt: 2026-03-10
4
4
  title: Intlayer Compiler | Автоматизированное извлечение контента для i18n
5
5
  description: Автоматизируйте процесс интернационализации с помощью Intlayer Compiler. Извлекайте контент напрямую из ваших компонентов для более быстрого и эффективного i18n в Vite, Next.js и других.
6
6
  keywords:
@@ -20,6 +20,9 @@ slugs:
20
20
  - doc
21
21
  - compiler
22
22
  history:
23
+ - version: 8.2.0
24
+ date: 2026-03-10
25
+ changes: Update compiler options, add FilePathPattern support
23
26
  - version: 8.1.7
24
27
  date: 2026-02-25
25
28
  changes: Обновление опций компилятора
@@ -157,13 +160,12 @@ import { type IntlayerConfig, Locales } from "intlayer";
157
160
  const config: IntlayerConfig = {
158
161
  compiler: {
159
162
  /**
160
- * Указывает, должен ли быть включен компилятор.
161
- * Установите значение 'build-only', чтобы пропустить компилятор во время разработки и ускорить время запуска.
163
+ * Установите значение 'build-only', чтобы пропустить компилятор во время разработки и ускорить запуск.
162
164
  */
163
165
  enabled: true,
164
166
 
165
167
  /**
166
- * Шаблон для обхода кода для оптимизации.
168
+ * Pattern to traverse the code to optimize.
167
169
  */
168
170
  transformPattern: [
169
171
  "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
@@ -171,23 +173,28 @@ const config: IntlayerConfig = {
171
173
  ],
172
174
 
173
175
  /**
174
- * Шаблон для исключения из оптимизации.
176
+ * Pattern to exclude from the optimization.
175
177
  */
176
178
  excludePattern: ["**/node_modules/**"],
177
179
 
178
180
  /**
179
181
  * Выходной каталог для оптимизированных словарей.
180
182
  */
181
- outputDir: "i18n",
183
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
184
+
185
+ /**
186
+ * Вставьте только содержимое в сгенерированный файл, без ключа.
187
+ */
188
+ noMetadata: false,
182
189
 
183
190
  /**
184
191
  * Префикс ключа словаря
185
192
  */
186
- dictionaryKeyPrefix: "", // Удалить базовый префикс
193
+ dictionaryKeyPrefix: "", // Remove base prefix
187
194
 
188
195
  /**
189
- * Указывает, должны ли компоненты сохраняться после преобразования.
190
- * Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем его можно удалить.
196
+ * Указывает, должны ли компоненты сохраняться после трансформации.
197
+ * Таким образом, компилятор можно запустить только один раз для трансформации приложения, а затем удалить.
191
198
  */
192
199
  saveComponents: false,
193
200
  },
@@ -209,3 +216,61 @@ npx intlayer fill # Заполнить недостающие перев
209
216
  ```
210
217
 
211
218
  > Для получения более подробной информации обратитесь к [документации CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/ci.md)
219
+
220
+ ### Справочник по конфигурации компилятора
221
+
222
+ Следующие свойства могут быть настроены в блоке `compiler` вашего файла `intlayer.config.ts`:
223
+
224
+ - **enabled**:
225
+ - _Тип_: `boolean | 'build-only'`
226
+ - _По умолчанию_: `true`
227
+ - _Описание_: Указывает, должен ли компилятор быть включен.
228
+ - **dictionaryKeyPrefix**:
229
+ - _Тип_: `string`
230
+ - _По умолчанию_: `'comp-'`
231
+ - _Описание_: Префикс для извлеченных ключей словаря.
232
+ - **transformPattern**:
233
+ - _Тип_: `string | string[]`
234
+ - _По умолчанию_: `['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']`
235
+ - _Описание_: Шаблоны для обхода кода для оптимизации.
236
+ - **excludePattern**:
237
+ - _Тип_: `string | string[]`
238
+ - _По умолчанию_: `['**/node_modules/**']`
239
+ - _Описание_: Шаблоны для исключения из оптимизации.
240
+ - **outputDir** (Deprecated):
241
+ - _Тип_: `string`
242
+ - _По умолчанию_: `'compiler'`
243
+ - _Описание_: Каталог, в котором будут храниться извлеченные словари.
244
+
245
+ - **output**:
246
+ - _Тип_: `FilePathPattern`
247
+ - _По умолчанию_: `({ key }) => 'compiler/${key}.content.json'`
248
+ - _Описание_: Определяет путь к выходным файлам. Заменяет `outputDir`. Поддерживает динамические переменные, такие как `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`. Может быть задано как строка в формате `'my/{{var}}/path'` или как функция.
249
+ - _Примечание_: `./**/*` Пути разрешаются относительно компонента. `/**/*` пути разрешаются относительно `baseDir` Intlayer.
250
+ - _Пример_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
251
+
252
+ - **noMetadata**:
253
+ - _Тип_: `boolean`
254
+ - _По умолчанию_: `false`
255
+ - _Описание_: Указывает, должны ли метаданные сохраняться в файле. Если true, компилятор не будет сохранять метаданные словарей (ключ, оболочка содержимого).
256
+ - _Примечание_: Полезно при использовании с плагином `loadJSON`.
257
+ - _Пример_: Если `true`:
258
+ ```json
259
+ {
260
+ "key": "value"
261
+ }
262
+ ```
263
+ Если `false`:
264
+ ```json
265
+ {
266
+ "key": "value",
267
+ "content": {
268
+ "key": "value"
269
+ }
270
+ }
271
+ ```
272
+
273
+ - **saveComponents**:
274
+ - _Тип_: `boolean`
275
+ - _По умолчанию_: `false`
276
+ - _Описание_: Указывает, должны ли компоненты сохраняться после трансформации.