@intlayer/docs 6.1.6-canary.0 → 6.1.6

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 (242) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +71 -80
  2. package/dist/cjs/generated/docs.entry.cjs +16 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +16 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/intlayer_with_angular.md +2 -2
  9. package/docs/ar/intlayer_with_astro.md +246 -0
  10. package/docs/ar/intlayer_with_create_react_app.md +3 -2
  11. package/docs/ar/intlayer_with_express.md +2 -2
  12. package/docs/ar/intlayer_with_nestjs.md +2 -2
  13. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  14. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  15. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  16. package/docs/ar/intlayer_with_nuxt.md +2 -2
  17. package/docs/ar/intlayer_with_react_native+expo.md +11 -20
  18. package/docs/ar/intlayer_with_react_router_v7.md +195 -241
  19. package/docs/ar/intlayer_with_tanstack.md +198 -272
  20. package/docs/ar/intlayer_with_vite+preact.md +9 -9
  21. package/docs/ar/intlayer_with_vite+react.md +7 -7
  22. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  23. package/docs/de/intlayer_with_angular.md +2 -2
  24. package/docs/de/intlayer_with_astro.md +246 -0
  25. package/docs/de/intlayer_with_create_react_app.md +2 -2
  26. package/docs/de/intlayer_with_express.md +2 -2
  27. package/docs/de/intlayer_with_nestjs.md +2 -2
  28. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  29. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  30. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  31. package/docs/de/intlayer_with_nuxt.md +2 -2
  32. package/docs/de/intlayer_with_react_native+expo.md +11 -20
  33. package/docs/de/intlayer_with_react_router_v7.md +193 -242
  34. package/docs/de/intlayer_with_tanstack.md +194 -266
  35. package/docs/de/intlayer_with_vite+preact.md +9 -9
  36. package/docs/de/intlayer_with_vite+react.md +9 -9
  37. package/docs/de/intlayer_with_vite+vue.md +11 -11
  38. package/docs/de/packages/vite-intlayer/index.md +3 -3
  39. package/docs/en/how_works_intlayer.md +1 -1
  40. package/docs/en/index.md +1 -1
  41. package/docs/en/intlayer_cli.md +1 -1
  42. package/docs/en/intlayer_with_angular.md +4 -4
  43. package/docs/en/intlayer_with_astro.md +246 -0
  44. package/docs/en/intlayer_with_create_react_app.md +4 -4
  45. package/docs/en/intlayer_with_express.md +3 -3
  46. package/docs/en/intlayer_with_lynx+react.md +1 -1
  47. package/docs/en/intlayer_with_nestjs.md +2 -2
  48. package/docs/en/intlayer_with_nextjs_14.md +13 -4
  49. package/docs/en/intlayer_with_nextjs_15.md +13 -4
  50. package/docs/en/intlayer_with_nextjs_page_router.md +5 -5
  51. package/docs/en/intlayer_with_nuxt.md +4 -4
  52. package/docs/en/intlayer_with_react_native+expo.md +46 -24
  53. package/docs/en/intlayer_with_react_router_v7.md +164 -211
  54. package/docs/en/intlayer_with_tanstack.md +166 -241
  55. package/docs/en/intlayer_with_vite+preact.md +12 -12
  56. package/docs/en/intlayer_with_vite+react.md +12 -12
  57. package/docs/en/intlayer_with_vite+solid.md +2 -2
  58. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  59. package/docs/en/intlayer_with_vite+vue.md +12 -12
  60. package/docs/en/introduction.md +1 -1
  61. package/docs/en/packages/next-intlayer/useDictionary.md +1 -1
  62. package/docs/en/packages/next-intlayer/useIntlayer.md +1 -1
  63. package/docs/en/packages/react-intlayer/useDictionary.md +1 -1
  64. package/docs/en/packages/react-intlayer/useI18n.md +1 -1
  65. package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
  66. package/docs/en/releases/v6.md +1 -0
  67. package/docs/en/roadmap.md +1 -1
  68. package/docs/en-GB/intlayer_with_angular.md +3 -3
  69. package/docs/en-GB/intlayer_with_astro.md +246 -0
  70. package/docs/en-GB/intlayer_with_create_react_app.md +5 -4
  71. package/docs/en-GB/intlayer_with_express.md +2 -2
  72. package/docs/en-GB/intlayer_with_nestjs.md +2 -2
  73. package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
  74. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  75. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  76. package/docs/en-GB/intlayer_with_nuxt.md +2 -2
  77. package/docs/en-GB/intlayer_with_react_native+expo.md +11 -20
  78. package/docs/en-GB/intlayer_with_react_router_v7.md +171 -220
  79. package/docs/en-GB/intlayer_with_tanstack.md +174 -248
  80. package/docs/en-GB/intlayer_with_vite+preact.md +9 -9
  81. package/docs/en-GB/intlayer_with_vite+react.md +9 -9
  82. package/docs/en-GB/intlayer_with_vite+vue.md +11 -11
  83. package/docs/en-GB/packages/next-intlayer/useIntlayer.md +1 -1
  84. package/docs/en-GB/packages/react-intlayer/useIntlayer.md +1 -1
  85. package/docs/es/intlayer_with_angular.md +2 -2
  86. package/docs/es/intlayer_with_astro.md +246 -0
  87. package/docs/es/intlayer_with_create_react_app.md +3 -2
  88. package/docs/es/intlayer_with_express.md +2 -2
  89. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  90. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  91. package/docs/es/intlayer_with_react_native+expo.md +11 -20
  92. package/docs/es/intlayer_with_react_router_v7.md +188 -232
  93. package/docs/es/intlayer_with_tanstack.md +203 -273
  94. package/docs/es/intlayer_with_vite+preact.md +7 -7
  95. package/docs/es/intlayer_with_vite+react.md +7 -7
  96. package/docs/es/intlayer_with_vite+vue.md +9 -9
  97. package/docs/fr/intlayer_with_angular.md +2 -2
  98. package/docs/fr/intlayer_with_astro.md +246 -0
  99. package/docs/fr/intlayer_with_create_react_app.md +3 -2
  100. package/docs/fr/intlayer_with_express.md +2 -2
  101. package/docs/fr/intlayer_with_nestjs.md +2 -2
  102. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  103. package/docs/fr/intlayer_with_react_native+expo.md +11 -20
  104. package/docs/fr/intlayer_with_react_router_v7.md +188 -248
  105. package/docs/fr/intlayer_with_tanstack.md +192 -265
  106. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  107. package/docs/fr/intlayer_with_vite+react.md +7 -7
  108. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  109. package/docs/hi/intlayer_cli.md +1 -4
  110. package/docs/hi/intlayer_with_angular.md +2 -2
  111. package/docs/hi/intlayer_with_astro.md +246 -0
  112. package/docs/hi/intlayer_with_create_react_app.md +2 -2
  113. package/docs/hi/intlayer_with_express.md +2 -2
  114. package/docs/hi/intlayer_with_nestjs.md +2 -2
  115. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  116. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  117. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/hi/intlayer_with_nuxt.md +2 -2
  119. package/docs/hi/intlayer_with_react_native+expo.md +11 -20
  120. package/docs/hi/intlayer_with_react_router_v7.md +199 -243
  121. package/docs/hi/intlayer_with_tanstack.md +210 -285
  122. package/docs/hi/intlayer_with_vite+preact.md +9 -9
  123. package/docs/hi/intlayer_with_vite+react.md +9 -9
  124. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  125. package/docs/hi/intlayer_with_vite+vue.md +11 -11
  126. package/docs/it/intlayer_with_angular.md +2 -2
  127. package/docs/it/intlayer_with_astro.md +246 -0
  128. package/docs/it/intlayer_with_create_react_app.md +3 -2
  129. package/docs/it/intlayer_with_express.md +2 -2
  130. package/docs/it/intlayer_with_nestjs.md +2 -2
  131. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  132. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  133. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  134. package/docs/it/intlayer_with_nuxt.md +2 -2
  135. package/docs/it/intlayer_with_react_native+expo.md +11 -21
  136. package/docs/it/intlayer_with_react_router_v7.md +195 -242
  137. package/docs/it/intlayer_with_tanstack.md +203 -267
  138. package/docs/it/intlayer_with_vite+preact.md +9 -9
  139. package/docs/it/intlayer_with_vite+react.md +13 -11
  140. package/docs/it/intlayer_with_vite+vue.md +11 -11
  141. package/docs/ja/intlayer_with_angular.md +2 -2
  142. package/docs/ja/intlayer_with_astro.md +246 -0
  143. package/docs/ja/intlayer_with_create_react_app.md +3 -2
  144. package/docs/ja/intlayer_with_express.md +2 -2
  145. package/docs/ja/intlayer_with_nestjs.md +2 -2
  146. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  147. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  148. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  149. package/docs/ja/intlayer_with_nuxt.md +2 -2
  150. package/docs/ja/intlayer_with_react_native+expo.md +18 -29
  151. package/docs/ja/intlayer_with_react_router_v7.md +204 -250
  152. package/docs/ja/intlayer_with_tanstack.md +218 -286
  153. package/docs/ja/intlayer_with_vite+preact.md +9 -9
  154. package/docs/ja/intlayer_with_vite+react.md +11 -11
  155. package/docs/ja/intlayer_with_vite+vue.md +11 -11
  156. package/docs/ko/intlayer_with_angular.md +2 -2
  157. package/docs/ko/intlayer_with_astro.md +246 -0
  158. package/docs/ko/intlayer_with_create_react_app.md +3 -2
  159. package/docs/ko/intlayer_with_express.md +2 -2
  160. package/docs/ko/intlayer_with_nestjs.md +2 -2
  161. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  162. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  163. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  164. package/docs/ko/intlayer_with_nuxt.md +2 -2
  165. package/docs/ko/intlayer_with_react_native+expo.md +19 -28
  166. package/docs/ko/intlayer_with_react_router_v7.md +190 -244
  167. package/docs/ko/intlayer_with_tanstack.md +200 -270
  168. package/docs/ko/intlayer_with_vite+preact.md +9 -9
  169. package/docs/ko/intlayer_with_vite+react.md +9 -9
  170. package/docs/ko/intlayer_with_vite+vue.md +11 -11
  171. package/docs/pt/intlayer_with_angular.md +2 -2
  172. package/docs/pt/intlayer_with_astro.md +246 -0
  173. package/docs/pt/intlayer_with_create_react_app.md +3 -2
  174. package/docs/pt/intlayer_with_express.md +2 -2
  175. package/docs/pt/intlayer_with_nestjs.md +2 -2
  176. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  177. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  178. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  179. package/docs/pt/intlayer_with_nuxt.md +2 -2
  180. package/docs/pt/intlayer_with_react_native+expo.md +11 -20
  181. package/docs/pt/intlayer_with_react_router_v7.md +7 -13
  182. package/docs/pt/intlayer_with_tanstack.md +183 -258
  183. package/docs/pt/intlayer_with_vite+preact.md +9 -9
  184. package/docs/pt/intlayer_with_vite+react.md +9 -9
  185. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  186. package/docs/ru/intlayer_with_angular.md +2 -2
  187. package/docs/ru/intlayer_with_astro.md +246 -0
  188. package/docs/ru/intlayer_with_create_react_app.md +3 -2
  189. package/docs/ru/intlayer_with_express.md +2 -2
  190. package/docs/ru/intlayer_with_nestjs.md +2 -2
  191. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  192. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  193. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  194. package/docs/ru/intlayer_with_nuxt.md +2 -2
  195. package/docs/ru/intlayer_with_react_native+expo.md +11 -20
  196. package/docs/ru/intlayer_with_react_router_v7.md +192 -238
  197. package/docs/ru/intlayer_with_tanstack.md +197 -269
  198. package/docs/ru/intlayer_with_vite+preact.md +9 -9
  199. package/docs/ru/intlayer_with_vite+react.md +9 -9
  200. package/docs/ru/intlayer_with_vite+vue.md +11 -11
  201. package/docs/tr/how_works_intlayer.md +1 -1
  202. package/docs/tr/index.md +1 -1
  203. package/docs/tr/intlayer_cli.md +1 -1
  204. package/docs/tr/intlayer_with_angular.md +4 -4
  205. package/docs/tr/intlayer_with_astro.md +246 -0
  206. package/docs/tr/intlayer_with_create_react_app.md +4 -4
  207. package/docs/tr/intlayer_with_express.md +3 -3
  208. package/docs/tr/intlayer_with_lynx+react.md +1 -1
  209. package/docs/tr/intlayer_with_nestjs.md +2 -2
  210. package/docs/tr/intlayer_with_nextjs_14.md +2 -2
  211. package/docs/tr/intlayer_with_nextjs_15.md +4 -4
  212. package/docs/tr/intlayer_with_nextjs_page_router.md +5 -5
  213. package/docs/tr/intlayer_with_nuxt.md +4 -4
  214. package/docs/tr/intlayer_with_react_native+expo.md +12 -21
  215. package/docs/tr/intlayer_with_react_router_v7.md +222 -267
  216. package/docs/tr/intlayer_with_tanstack.md +400 -303
  217. package/docs/tr/intlayer_with_vite+preact.md +12 -12
  218. package/docs/tr/intlayer_with_vite+react.md +12 -12
  219. package/docs/tr/intlayer_with_vite+solid.md +2 -2
  220. package/docs/tr/intlayer_with_vite+svelte.md +2 -2
  221. package/docs/tr/intlayer_with_vite+vue.md +12 -12
  222. package/docs/tr/introduction.md +1 -1
  223. package/docs/tr/packages/react-intlayer/useDictionary.md +1 -1
  224. package/docs/tr/packages/react-intlayer/useI18n.md +1 -1
  225. package/docs/tr/roadmap.md +1 -1
  226. package/docs/zh/intlayer_with_angular.md +2 -2
  227. package/docs/zh/intlayer_with_astro.md +246 -0
  228. package/docs/zh/intlayer_with_create_react_app.md +3 -2
  229. package/docs/zh/intlayer_with_express.md +2 -2
  230. package/docs/zh/intlayer_with_nestjs.md +2 -2
  231. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  232. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  233. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  234. package/docs/zh/intlayer_with_nuxt.md +2 -2
  235. package/docs/zh/intlayer_with_react_native+expo.md +19 -28
  236. package/docs/zh/intlayer_with_react_router_v7.md +200 -248
  237. package/docs/zh/intlayer_with_tanstack.md +208 -283
  238. package/docs/zh/intlayer_with_vite+preact.md +9 -9
  239. package/docs/zh/intlayer_with_vite+react.md +9 -9
  240. package/docs/zh/intlayer_with_vite+vue.md +9 -9
  241. package/package.json +11 -11
  242. package/src/generated/docs.entry.ts +16 -0
@@ -15,10 +15,8 @@ keywords:
15
15
  slugs:
16
16
  - doc
17
17
  - environment
18
- - vite-and-react
19
18
  - tanstack-start
20
- applicationTemplate: https://github.com/AydinTheFirst/tanstack-start-intlayer
21
- author: AydinTheFirst
19
+ applicationTemplate: https://github.com/aymericzip/intlayer-tanstack-start-template
22
20
  ---
23
21
 
24
22
  # Começando a Internacionalizar (i18n) com Intlayer e Tanstack Start
@@ -27,15 +25,15 @@ Este guia demonstra como integrar o **Intlayer** para uma internacionalização
27
25
 
28
26
  ## O que é o Intlayer?
29
27
 
30
- **Intlayer** é uma biblioteca inovadora e open-source de internacionalização (i18n) projetada para simplificar o suporte multilíngue em aplicações web modernas.
28
+ **Intlayer** é uma biblioteca inovadora e de código aberto para internacionalização (i18n) projetada para simplificar o suporte multilíngue em aplicações web modernas.
31
29
 
32
30
  Com o Intlayer, você pode:
33
31
 
34
32
  - **Gerenciar traduções facilmente** usando dicionários declarativos no nível do componente.
35
33
  - **Localizar dinamicamente metadados**, rotas e conteúdo.
36
34
  - **Garantir suporte a TypeScript** com tipos gerados automaticamente, melhorando o autocompletar e a detecção de erros.
37
- - **Beneficiar-se de recursos avançados**, como detecção e troca dinâmica de locale.
38
- - **Habilitar roteamento sensível ao locale** com o sistema de roteamento baseado em arquivos do Tanstack Start.
35
+ - **Aproveitar recursos avançados**, como detecção e troca dinâmica de locale.
36
+ - **Ativar roteamento sensível ao locale** com o sistema de roteamento baseado em arquivos do Tanstack Start.
39
37
 
40
38
  ---
41
39
 
@@ -43,7 +41,7 @@ Com o Intlayer, você pode:
43
41
 
44
42
  ### Passo 1: Criar o Projeto
45
43
 
46
- Comece criando um novo projeto TanStack Start seguindo o guia [Start new project](https://tanstack.com/start/latest/docs/framework/react/quick-start) no site do TanStack Start.
44
+ Comece criando um novo projeto TanStack Start seguindo o guia [Iniciar novo projeto](https://tanstack.com/start/latest/docs/framework/react/quick-start) no site do TanStack Start.
47
45
 
48
46
  ### Passo 2: Instalar os Pacotes do Intlayer
49
47
 
@@ -69,13 +67,13 @@ pnpm add vite-intlayer --save-dev
69
67
  O pacote que integra o Intlayer com aplicações React. Ele fornece provedores de contexto e hooks para internacionalização em React.
70
68
 
71
69
  - **vite-intlayer**
72
- Inclui o plugin Vite para integrar o Intlayer com o [empacotador Vite](https://vite.dev/guide/why.html#why-bundle-for-production), além de middleware para detectar o locale preferido do usuário, gerenciar cookies e lidar com redirecionamento de URL.
70
+ Inclui o plugin Vite para integrar o Intlayer com o [empacotador Vite](https://vite.dev/guide/why.html#why-bundle-for-production), assim como middleware para detectar o locale preferido do usuário, gerenciar cookies e lidar com redirecionamento de URLs.
73
71
 
74
72
  ### Passo 3: Configuração do seu projeto
75
73
 
76
74
  Crie um arquivo de configuração para configurar os idiomas da sua aplicação:
77
75
 
78
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
76
+ ```typescript fileName="intlayer.config.ts"
79
77
  import type { IntlayerConfig } from "intlayer";
80
78
 
81
79
  import { Locales } from "intlayer";
@@ -83,90 +81,40 @@ import { Locales } from "intlayer";
83
81
  const config: IntlayerConfig = {
84
82
  internationalization: {
85
83
  defaultLocale: Locales.ENGLISH,
86
- locales: [
87
- Locales.ENGLISH,
88
- Locales.FRENCH,
89
- Locales.SPANISH,
90
- // Seus outros idiomas
91
- ],
84
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
92
85
  },
93
86
  };
94
87
 
95
88
  export default config;
96
89
  ```
97
90
 
98
- ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
99
- import { Locales } from "intlayer";
100
-
101
- /** @type {import('intlayer').IntlayerConfig} */
102
- const config = {
103
- internationalization: {
104
- defaultLocale: Locales.ENGLISH,
105
- locales: [
106
- Locales.ENGLISH,
107
- Locales.FRENCH,
108
- Locales.SPANISH,
109
- // Seus outros idiomas
110
- ],
111
- },
112
- };
113
-
114
- export default config;
115
- ```
116
-
117
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
118
- const { Locales } = require("intlayer");
119
-
120
- /** @type {import('intlayer').IntlayerConfig} */
121
- const config = {
122
- internationalization: {
123
- defaultLocale: Locales.ENGLISH,
124
- locales: [
125
- Locales.ENGLISH,
126
- Locales.FRENCH,
127
- Locales.SPANISH,
128
- // Seus outros idiomas
129
- ],
130
- },
131
- };
132
-
133
- module.exports = config;
134
- ```
135
-
136
91
  > Através deste arquivo de configuração, você pode configurar URLs localizadas, redirecionamento de middleware, nomes de cookies, a localização e extensão das suas declarações de conteúdo, desabilitar logs do Intlayer no console, e muito mais. Para uma lista completa dos parâmetros disponíveis, consulte a [documentação de configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md).
137
92
 
138
93
  ### Passo 4: Integre o Intlayer na sua Configuração do Vite
139
94
 
140
95
  Adicione o plugin intlayer na sua configuração:
141
96
 
142
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
97
+ ```typescript fileName="vite.config.ts"
143
98
  import { reactRouter } from "@react-router/dev/vite";
144
99
  import { defineConfig } from "vite";
145
- import { intlayerMiddlewarePlugin, intlayer } from "vite-intlayer";
100
+ import { intlayer } from "vite-intlayer";
146
101
  import tsconfigPaths from "vite-tsconfig-paths";
147
102
 
148
103
  export default defineConfig({
149
- plugins: [
150
- reactRouter(),
151
- tsconfigPaths(),
152
- intlayer(),
153
- intlayerMiddlewarePlugin(),
154
- ],
104
+ plugins: [reactRouter(), tsconfigPaths(), intlayer()],
155
105
  });
156
106
  ```
157
107
 
158
- > O plugin `intlayer()` do Vite é usado para integrar o Intlayer com o Vite. Ele garante a construção dos arquivos de declaração de conteúdo e os monitora no modo de desenvolvimento. Define as variáveis de ambiente do Intlayer dentro da aplicação Vite. Além disso, fornece aliases para otimizar o desempenho.
108
+ > O plugin `intlayer()` para Vite é usado para integrar o Intlayer com o Vite. Ele garante a construção dos arquivos de declaração de conteúdo e os monitora no modo de desenvolvimento. Define as variáveis de ambiente do Intlayer dentro da aplicação Vite. Além disso, fornece aliases para otimizar o desempenho.
159
109
 
160
110
  ### Passo 5: Crie Componentes de Layout
161
111
 
162
- Configure seu layout raiz e layouts específicos por localidade:
112
+ Configure seu layout raiz e layouts específicos para cada localidade:
163
113
 
164
114
  #### Layout Raiz
165
115
 
166
- ```tsx fileName="src/routes/{-$locale}/route.tsx" codeFormat="typescript"
167
- // src/routes/{-$locale}/route.tsx
116
+ ```tsx fileName="src/routes/{-$locale}/route.tsx"
168
117
  import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
169
- import { configuration } from "intlayer";
170
118
  import { IntlayerProvider, useLocale } from "react-intlayer";
171
119
 
172
120
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -176,10 +124,11 @@ export const Route = createFileRoute("/{-$locale}")({
176
124
  });
177
125
 
178
126
  function LayoutComponent() {
127
+ const { defaultLocale } = useLocale();
179
128
  const { locale } = Route.useParams();
180
129
 
181
130
  return (
182
- <IntlayerProvider locale={locale}>
131
+ <IntlayerProvider locale={defaultLocale}>
183
132
  <Outlet />
184
133
  </IntlayerProvider>
185
134
  );
@@ -190,7 +139,7 @@ function LayoutComponent() {
190
139
 
191
140
  Crie e gerencie suas declarações de conteúdo para armazenar traduções:
192
141
 
193
- ```tsx fileName="src/contents/page.content.ts" contentDeclarationFormat="typescript"
142
+ ```tsx fileName="src/contents/page.content.ts"
194
143
  import type { Dictionary } from "intlayer";
195
144
 
196
145
  import { t } from "intlayer";
@@ -199,30 +148,31 @@ const appContent = {
199
148
  content: {
200
149
  links: {
201
150
  about: t({
151
+ pt: "Sobre",
202
152
  en: "About",
203
153
  es: "Acerca de",
204
154
  fr: "À propos",
205
155
  }),
206
156
  home: t({
157
+ pt: "Início",
207
158
  en: "Home",
208
159
  es: "Inicio",
209
160
  fr: "Accueil",
210
- pt: "Início",
211
161
  }),
212
162
  },
213
163
  meta: {
214
164
  description: t({
165
+ pt: "Este é um exemplo de uso do Intlayer com TanStack Router",
215
166
  en: "This is an example of using Intlayer with TanStack Router",
216
167
  es: "Este es un ejemplo de uso de Intlayer con TanStack Router",
217
168
  fr: "Ceci est un exemple d'utilisation d'Intlayer avec TanStack Router",
218
- pt: "Este é um exemplo de uso do Intlayer com TanStack Router",
219
169
  }),
220
170
  },
221
171
  title: t({
172
+ pt: "Bem-vindo ao Intlayer + TanStack Router",
222
173
  en: "Welcome to Intlayer + TanStack Router",
223
174
  es: "Bienvenido a Intlayer + TanStack Router",
224
175
  fr: "Bienvenue à Intlayer + TanStack Router",
225
- pt: "Bem-vindo ao Intlayer + TanStack Router",
226
176
  }),
227
177
  },
228
178
  key: "app",
@@ -235,63 +185,103 @@ export default appContent;
235
185
 
236
186
  > Para mais detalhes, consulte a [documentação de declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/get_started.md).
237
187
 
238
- ### Passo 7: Criar Componentes e Hooks Sensíveis ao Locale
188
+ ### Passo 7: Crie Componentes e Hooks Sensíveis ao Locale
239
189
 
240
190
  Crie um componente `LocalizedLink` para navegação sensível ao locale:
241
191
 
242
- ```tsx fileName="src/components/localized-link.tsx" codeFormat="typescript"
243
- // src/components/localized-link.tsx
244
- // eslint-disable-next-line no-restricted-imports
245
- import { Link, type LinkProps } from "@tanstack/react-router";
246
- import { getLocalizedUrl } from "intlayer";
192
+ ```tsx fileName="src/components/localized-link.tsx"
193
+ import type { FC } from "react";
194
+
195
+ import { Link, type LinkComponentProps } from "@tanstack/react-router";
247
196
  import { useLocale } from "react-intlayer";
248
197
 
198
+ export const LOCALE_ROUTE = "{-$locale}" as const;
199
+
200
+ // Utilitário principal
201
+ export type RemoveLocaleParam<T> = T extends string
202
+ ? RemoveLocaleFromString<T>
203
+ : T;
204
+
205
+ export type To = RemoveLocaleParam<LinkComponentProps["to"]>;
206
+
207
+ type CollapseDoubleSlashes<S extends string> =
208
+ S extends `${infer H}//${infer T}` ? CollapseDoubleSlashes<`${H}/${T}`> : S;
209
+
249
210
  type LocalizedLinkProps = {
250
- to: string;
251
- } & Omit<LinkProps, "to">;
211
+ to?: To;
212
+ } & Omit<LinkComponentProps, "to">;
252
213
 
253
- export function LocalizedLink(props: LocalizedLinkProps) {
254
- const { locale } = useLocale();
214
+ // Auxiliares
215
+ type RemoveAll<
216
+ S extends string,
217
+ Sub extends string,
218
+ > = S extends `${infer H}${Sub}${infer T}` ? RemoveAll<`${H}${T}`, Sub> : S;
255
219
 
256
- const isExternal = (to: string) => {
257
- return /^(https?:)?\/\//.test(to);
258
- };
220
+ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
221
+ RemoveAll<S, typeof LOCALE_ROUTE>
222
+ >;
259
223
 
260
- const to = isExternal(props.to)
261
- ? props.to
262
- : getLocalizedUrl(props.to, locale);
224
+ export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
225
+ const { locale } = useLocale();
263
226
 
264
- return <Link {...props} to={to as LinkProps["to"]} />;
265
- }
227
+ return (
228
+ <Link
229
+ {...props}
230
+ params={{
231
+ locale,
232
+ ...(typeof props?.params === "object" ? props?.params : {}),
233
+ }}
234
+ to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
235
+ />
236
+ );
237
+ };
266
238
  ```
267
239
 
268
- Crie um hook `useLocalizedNavigate` para navegação programática:
240
+ Este componente tem dois objetivos:
269
241
 
270
- ```tsx fileName="src/hooks/useLocalizedNavigate.tsx" codeFormat="typescript"
271
- // src/hooks/useLocalizedNavigate.tsx
272
- // eslint-disable-next-line no-restricted-imports
273
- import { NavigateOptions, useNavigate } from "@tanstack/react-router";
274
- import { getLocalizedUrl } from "intlayer";
275
- import { useLocale } from "react-intlayer";
242
+ - Remover o prefixo `{-$locale}` desnecessário da URL.
243
+ - Injetar o parâmetro de locale na URL para garantir que o usuário seja redirecionado diretamente para a rota localizada.
276
244
 
277
- type LocalizedNavigateOptions = {
278
- to: string;
279
- } & Omit<NavigateOptions, "to">;
245
+ Então, podemos criar um hook `useLocalizedNavigate` para navegação programática:
246
+
247
+ ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
248
+ import { useLocale } from "react-intlayer";
249
+ import { useNavigate } from "@tanstack/react-router";
250
+ import { LOCALE_ROUTE } from "@/components/localized-link";
251
+ import type { FileRouteTypes } from "@/routeTree.gen";
280
252
 
281
253
  export const useLocalizedNavigate = () => {
282
254
  const navigate = useNavigate();
255
+
283
256
  const { locale } = useLocale();
284
257
 
285
- const isExternal = (to: string) => {
286
- return /^(https?:)?\/\//.test(to);
287
- };
258
+ type StripLocalePrefix<T extends string> = T extends
259
+ | `/${typeof LOCALE_ROUTE}`
260
+ | `/${typeof LOCALE_ROUTE}/`
261
+ ? "/"
262
+ : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
263
+ ? `/${Rest}`
264
+ : never;
265
+
266
+ type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
267
+
268
+ interface LocalizedNavigate {
269
+ (to: LocalizedTo): ReturnType<typeof navigate>;
270
+ (
271
+ opts: { to: LocalizedTo } & Record<string, unknown>
272
+ ): ReturnType<typeof navigate>;
273
+ }
274
+
275
+ const localizedNavigate: LocalizedNavigate = (args: any) => {
276
+ if (typeof args === "string") {
277
+ return navigate({ to: `/${LOCALE_ROUTE}${args}`, params: { locale } });
278
+ }
279
+
280
+ const { to, ...rest } = args;
288
281
 
289
- const localizedNavigate = (options: LocalizedNavigateOptions) => {
290
- const to = isExternal(options.to)
291
- ? options.to
292
- : getLocalizedUrl(options.to, locale);
282
+ const localedTo = `/${LOCALE_ROUTE}${to}` as any;
293
283
 
294
- navigate({ ...options, to: to as NavigateOptions["to"] });
284
+ return navigate({ to: localedTo, params: { locale, ...rest } as any });
295
285
  };
296
286
 
297
287
  return localizedNavigate;
@@ -302,23 +292,9 @@ export const useLocalizedNavigate = () => {
302
292
 
303
293
  Acesse seus dicionários de conteúdo em toda a sua aplicação:
304
294
 
305
- #### Página de Redirecionamento Raiz
306
-
307
- ```tsx fileName="src/routes/page.tsx" codeFormat="typescript"
308
- // src/routes/page.tsx
309
- import { useLocale } from "react-intlayer";
310
- import { Navigate } from "react-router";
311
-
312
- export default function Page() {
313
- const { locale } = useLocale();
314
-
315
- return <Navigate replace to={locale} />;
316
- }
317
- ```
318
-
319
295
  #### Página Inicial Localizada
320
296
 
321
- ```tsx fileName="src/routes/{-$locale}/index.tsx" codeFormat="typescript"
297
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
322
298
  import { createFileRoute } from "@tanstack/react-router";
323
299
  import { getIntlayer } from "intlayer";
324
300
  import { useIntlayer } from "react-intlayer";
@@ -347,16 +323,15 @@ function RouteComponent() {
347
323
  const navigate = useLocalizedNavigate();
348
324
 
349
325
  return (
350
- <div className="grid place-items-center h-screen">
351
- <div className="flex flex-col gap-4 items-center text-center">
326
+ <div>
327
+ <div>
352
328
  {content.title}
353
329
  <LocaleSwitcher />
354
- <div className="flex gap-4">
355
- <a href="/">Índice</a>
330
+ <div>
356
331
  <LocalizedLink to="/">{content.links.home}</LocalizedLink>
357
332
  <LocalizedLink to="/about">{content.links.about}</LocalizedLink>
358
333
  </div>
359
- <div className="flex gap-4">
334
+ <div>
360
335
  <button onClick={() => navigate({ to: "/" })}>
361
336
  {content.links.home}
362
337
  </button>
@@ -376,48 +351,56 @@ function RouteComponent() {
376
351
 
377
352
  Crie um componente para permitir que os usuários mudem de idioma:
378
353
 
379
- ```tsx fileName="src/components/locale-switcher.tsx" codeFormat="typescript"
354
+ ```tsx fileName="src/components/locale-switcher.tsx"
355
+ import type { FC } from "react";
356
+
380
357
  import { useLocation } from "@tanstack/react-router";
381
- import {
382
- getHTMLTextDir,
383
- getLocaleName,
384
- getLocalizedUrl,
385
- Locales,
386
- } from "intlayer";
387
- import { useIntlayer, useLocale } from "react-intlayer";
388
-
389
- export default function LocaleSwitcher() {
390
- const { pathname, searchStr } = useLocation();
391
- const content = useIntlayer("locale-switcher");
392
-
393
- const { availableLocales, locale, setLocale } = useLocale({
394
- onLocaleChange: (newLocale) => {
395
- const pathWithLocale = getLocalizedUrl(pathname + searchStr, newLocale);
396
- location.replace(pathWithLocale);
397
- },
398
- });
358
+ import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
359
+ import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
360
+
361
+ import { LocalizedLink, To } from "./localized-link";
362
+
363
+ export const LocaleSwitcher: FC = () => {
364
+ const { localeSwitcherLabel } = useIntlayer("locale-switcher");
365
+ const { pathname } = useLocation();
366
+
367
+ const { availableLocales, locale } = useLocale();
368
+
369
+ const pathWithoutLocale = getPathWithoutLocale(pathname);
399
370
 
400
371
  return (
401
- <select
402
- aria-label={content.label.toString()}
403
- onChange={(e) => setLocale(e.target.value)}
404
- value={locale}
405
- >
406
- {availableLocales.map((localeItem) => (
407
- <option
408
- dir={getHTMLTextDir(localeItem)}
409
- key={localeItem}
410
- lang={localeItem}
411
- value={localeItem}
412
- >
413
- {/* Exemplo: Français (Francês) */}
414
- {getLocaleName(localeItem, locale)} (
415
- {getLocaleName(localeItem, Locales.ENGLISH)})
416
- </option>
372
+ <ol>
373
+ {availableLocales.map((localeEl) => (
374
+ <li key={localeEl}>
375
+ <LocalizedLink
376
+ aria-current={localeEl === locale ? "page" : undefined}
377
+ aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
378
+ onClick={() => setLocaleCookie(localeEl)}
379
+ params={{ locale: localeEl }}
380
+ to={pathWithoutLocale as To}
381
+ >
382
+ <span>
383
+ {/* Local - ex. FR */}
384
+ {localeItem}
385
+ </span>
386
+ <span>
387
+ {/* Idioma na sua própria Localização - ex. Français */}
388
+ {getLocaleName(localeItem, locale)}
389
+ </span>
390
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
391
+ {/* Idioma na Localização atual - ex. Francés com a localização atual definida para Locales.SPANISH */}
392
+ {getLocaleName(localeItem)}
393
+ </span>
394
+ <span dir="ltr" lang={Locales.ENGLISH}>
395
+ {/* Idioma em Inglês - ex. French */}
396
+ {getLocaleName(localeItem, Locales.ENGLISH)}
397
+ </span>
398
+ </LocalizedLink>
399
+ </li>
417
400
  ))}
418
- </select>
401
+ </ol>
419
402
  );
420
- }
403
+ };
421
404
  ```
422
405
 
423
406
  > Para saber mais sobre o hook `useLocale`, consulte a [documentação](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/react-intlayer/useLocale.md).
@@ -426,7 +409,7 @@ export default function LocaleSwitcher() {
426
409
 
427
410
  Crie um hook para gerenciar os atributos lang e dir do HTML:
428
411
 
429
- ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
412
+ ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx"
430
413
  // src/hooks/useI18nHTMLAttributes.tsx
431
414
  import { getHTMLTextDir } from "intlayer";
432
415
  import { useEffect } from "react";
@@ -444,9 +427,8 @@ export const useI18nHTMLAttributes = () => {
444
427
 
445
428
  Então use-o no seu componente raiz:
446
429
 
447
- ```tsx fileName="src/routes/{-$locale}/index.tsx" codeFormat="typescript"
430
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
448
431
  import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
449
- import { configuration } from "intlayer";
450
432
  import { IntlayerProvider, useLocale } from "react-intlayer";
451
433
 
452
434
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // importar o hook
@@ -456,69 +438,70 @@ export const Route = createFileRoute("/{-$locale}")({
456
438
  });
457
439
 
458
440
  function LayoutComponent() {
459
- useI18nHTMLAttributes(); // adicione esta linha
441
+ useI18nHTMLAttributes(); // adicionar esta linha
460
442
 
443
+ const { defaultLocale } = useLocale();
461
444
  const { locale } = Route.useParams();
462
445
 
463
446
  return (
464
- <IntlayerProvider locale={locale}>
447
+ <IntlayerProvider locale={locale ?? defaultLocale}>
465
448
  <Outlet />
466
449
  </IntlayerProvider>
467
450
  );
468
451
  }
469
452
  ```
470
453
 
471
- ### Passo 11: Construir e Executar Sua Aplicação
454
+ ---
472
455
 
473
- Construa os dicionários de conteúdo e execute sua aplicação:
456
+ ### Passo 11: Adicionar middleware (Opcional)
474
457
 
475
- ```bash packageManager="npm"
476
- # Construir os dicionários do Intlayer
477
- npm run intlayer:build
458
+ Você também pode usar o `intlayerMiddleware` para adicionar roteamento do lado do servidor à sua aplicação. Este plugin detectará automaticamente o idioma atual com base na URL e definirá o cookie de idioma apropriado. Se nenhum idioma for especificado, o plugin determinará o idioma mais adequado com base nas preferências de idioma do navegador do usuário. Se nenhum idioma for detectado, ele redirecionará para o idioma padrão.
478
459
 
479
- # Iniciar o servidor de desenvolvimento
480
- npm run dev
481
- ```
460
+ > Observe que, para usar o `intlayerMiddleware` em produção, você precisa mover o pacote `vite-intlayer` de `devDependencies` para `dependencies`.
482
461
 
483
- ```bash packageManager="pnpm"
484
- # Construir os dicionários do Intlayer
485
- pnpm intlayer:build
462
+ ```typescript {3,7} fileName="vite.config.ts"
463
+ import { reactRouter } from "@react-router/dev/vite";
464
+ import tailwindcss from "@tailwindcss/vite";
465
+ import { defineConfig } from "vite";
466
+ import { intlayer, intlayerMiddleware } from "vite-intlayer";
467
+ import tsconfigPaths from "vite-tsconfig-paths";
486
468
 
487
- # Iniciar o servidor de desenvolvimento
488
- pnpm dev
469
+ export default defineConfig({
470
+ plugins: [
471
+ tailwindcss(),
472
+ reactRouter(),
473
+ tsconfigPaths(),
474
+ intlayer(),
475
+ intlayerMiddleware(),
476
+ ],
477
+ });
489
478
  ```
490
479
 
491
- ```bash packageManager="yarn"
492
- # Construir os dicionários do Intlayer
493
- yarn intlayer:build
494
-
495
- # Iniciar o servidor de desenvolvimento
496
- yarn dev
497
- ```
480
+ ---
498
481
 
499
482
  ### Passo 12: Configurar o TypeScript (Opcional)
500
483
 
501
- Intlayer usa a ampliação de módulos para obter os benefícios do TypeScript e tornar sua base de código mais robusta.
484
+ O Intlayer utiliza a ampliação de módulos para aproveitar os benefícios do TypeScript e fortalecer sua base de código.
502
485
 
503
486
  Certifique-se de que sua configuração do TypeScript inclua os tipos gerados automaticamente:
504
487
 
505
488
  ```json5 fileName="tsconfig.json"
506
489
  {
507
- compilerOptions: {
508
- // ... suas configurações existentes do TypeScript
509
- },
490
+ // ... suas configurações existentes
510
491
  include: [
511
492
  // ... seus includes existentes
512
- ".intlayer/**/*.ts", // Inclua os tipos gerados automaticamente
493
+ ".intlayer/**/*.ts", // Incluir os tipos gerados automaticamente
513
494
  ],
514
495
  }
515
496
  ```
516
497
 
498
+ ---
499
+
517
500
  ### Configuração do Git
518
501
 
519
- É recomendado ignorar os arquivos gerados pelo Intlayer. Isso permite que você evite comitar esses arquivos no seu repositório Git.
502
+ É recomendado ignorar os arquivos gerados pelo Intlayer. Isso permite evitar que eles sejam comitados no seu repositório Git.
520
503
 
521
- Para isso, você pode adicionar as seguintes instruções no seu arquivo `.gitignore`:
504
+ Para isso, você pode adicionar as seguintes instruções ao seu arquivo `.gitignore`:
522
505
 
523
506
  ```plaintext fileName=".gitignore"
524
507
  # Ignorar os arquivos gerados pelo Intlayer
@@ -527,67 +510,9 @@ Para isso, você pode adicionar as seguintes instruções no seu arquivo `.gitig
527
510
 
528
511
  ---
529
512
 
530
- ### Passo 13: Criar Redirecionamento (Opcional)
531
-
532
- ```typescript fileName="src/routes/{-$locale}/rotue.tsx" codeFormat="typescript"
533
- function LayoutComponent() {
534
- useI18nHTMLAttributes();
535
-
536
- const { locale } = Route.useParams();
537
- const { locale: selectedLocale } = useLocale();
538
- const { defaultLocale } = configuration.internationalization;
539
- const { prefixDefault } = configuration.middleware;
540
-
541
- // Redireciona para o locale padrão se nenhum locale estiver presente na URL quando prefixDefault for verdadeiro
542
- if (selectedLocale === defaultLocale && !locale && prefixDefault) {
543
- return <Navigate replace to={defaultLocale} />;
544
- }
545
-
546
- // Redireciona para o locale selecionado se o locale na URL não corresponder ao locale selecionado
547
- if (selectedLocale !== defaultLocale && !locale) {
548
- return <Navigate replace to={selectedLocale} />;
549
- }
550
-
551
- return (
552
- <IntlayerProvider locale={locale}>
553
- <Outlet />
554
- </IntlayerProvider>
555
- );
556
- }
557
- ```
558
-
559
- ## Implantação em Produção
560
-
561
- Ao implantar sua aplicação:
562
-
563
- 1. **Compile sua aplicação:**
564
-
565
- ```bash
566
- npm run build
567
- ```
568
-
569
- 2. **Compile os dicionários do Intlayer:**
570
-
571
- ```bash
572
- npm run intlayer:build
573
- ```
574
-
575
- 3. **Mova `vite-intlayer` para as dependências** se estiver usando middleware em produção:
576
- ```bash
577
- npm install vite-intlayer --save
578
- ```
579
-
580
- Sua aplicação agora suportará:
581
-
582
- - **Estrutura de URL**: `/en`, `/en/about`, `/tr`, `/tr/about`
583
- - **Detecção automática de localidade** baseada nas preferências do navegador
584
- - **Roteamento consciente da localidade** com Tanstack Start
585
- - **Suporte a TypeScript** com tipos gerados automaticamente
586
- - **Renderização no servidor** com tratamento adequado da localidade
587
-
588
513
  ## Extensão VS Code
589
514
 
590
- Para melhorar sua experiência de desenvolvimento com o Intlayer, você pode instalar a extensão oficial **Intlayer VS Code Extension**.
515
+ Para melhorar sua experiência de desenvolvimento com o Intlayer, você pode instalar a **Extensão oficial Intlayer para VS Code**.
591
516
 
592
517
  [Instalar no VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
593
518
 
@@ -598,13 +523,13 @@ Esta extensão oferece:
598
523
  - **Visualizações inline** do conteúdo traduzido.
599
524
  - **Ações rápidas** para criar e atualizar traduções facilmente.
600
525
 
601
- Para mais detalhes sobre como usar a extensão, consulte a [documentação da extensão Intlayer para VS Code](https://intlayer.org/doc/vs-code-extension).
526
+ Para mais detalhes sobre como usar a extensão, consulte a [documentação da Extensão Intlayer para VS Code](https://intlayer.org/doc/vs-code-extension).
602
527
 
603
528
  ---
604
529
 
605
530
  ## Ir Além
606
531
 
607
- Para ir mais longe, você pode implementar o [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) ou externalizar seu conteúdo usando o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).
532
+ Para ir além, você pode implementar o [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) ou externalizar seu conteúdo usando o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).
608
533
 
609
534
  ---
610
535
 
@@ -613,7 +538,7 @@ Para ir mais longe, você pode implementar o [editor visual](https://github.com/
613
538
  - [Documentação do Intlayer](https://intlayer.org)
614
539
  - [Documentação do Tanstack Start](https://reactrouter.com/)
615
540
  - [Hook useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/react-intlayer/useIntlayer.md)
616
- - [Hook useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/react-intlayer/useLocale.md)
541
+ - [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/react-intlayer/useLocale.md)
617
542
  - [Declaração de Conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/get_started.md)
618
543
  - [Configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md)
619
544