@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/pt/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 do Intlayer
5
- description: Saiba como o servidor de linguagem do Intlayer fornece a funcionalidade "Ir para a Definição" e outros recursos de IDE para useIntlayer, getIntlayer e chamadas relacionadas em todos os editores suportados.
5
+ description: Saiba como o servidor de linguagem do Intlayer traz Go-to-Definition, busca de referências, pré-visualizações ao passar o cursor, autocompletar de chaves e diagnósticos para o seu IDE e o seu agente de IA.
6
6
  keywords:
7
7
  - LSP
8
- - Servidor de Linguagem
9
- - Ir para a Definição
8
+ - Servidor de linguagem
9
+ - Go to Definition
10
+ - Autocompletar
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: "Adicionados busca de referências, hover, autocompletar e 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 do Intlayer
26
31
 
27
- O **Servidor de Linguagem do Intlayer (LSP)** é uma implementação do [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) que aprimora seu IDE com inteligência voltada para o Intlayer. Atualmente, ele fornece **Ir para a Definição (Go to Definition)** para chamadas de chaves de dicionário, permitindo que você salte diretamente de `useIntlayer("my-key")` no seu componente para o arquivo `.content.ts` que o declara.
32
+ O **servidor de linguagem do Intlayer** é uma implementação do [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) que torna o seu IDE e o seu agente de IA cientes do Intlayer. Ele conecta uma chamada como `useIntlayer("home")` ao arquivo `.content.ts` que a declara, nos dois sentidos.
28
33
 
29
34
  ---
30
35
 
31
- ## Por que usar o LSP?
36
+ ## Funcionalidades
32
37
 
33
- Quando você usa o Intlayer, a conexão entre uma chamada como `useIntlayer("homepage")` e sua declaração em `src/homepage.content.ts` é implícita. Sem ferramentas, você deve procurar o arquivo manualmente. O LSP torna esse link explícito:
38
+ | Funcionalidade | Atalho | O que faz |
39
+ | ---------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------- |
40
+ | **Ir para a definição** | `F12` / `Cmd+Clique` | Saltar de uma chave de dicionário ou do uso de um campo para a sua declaração no arquivo de conteúdo |
41
+ | **Localizar todas as referências** | `Shift+F12` | A partir de um arquivo de conteúdo, listar todos os pontos de chamada que usam essa chave ou campo |
42
+ | **Hover** | passar o cursor | Pré-visualizar os campos de um dicionário, ou o valor traduzido de um campo, sem sair do arquivo |
43
+ | **Autocompletar** | `"` `'` `` ` `` `.` | Sugerir as chaves de dicionário declaradas dentro de um getter, e os campos de conteúdo após `.` ou em desestruturação |
44
+ | **Diagnósticos** | automático | Avisar quando uma chave não está declarada em nenhum arquivo de conteúdo |
34
45
 
35
- **Sensibilização do agente de IA**
46
+ Vale conhecer dois comportamentos adicionais:
36
47
 
37
- Os agentes de codificação de IA (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex) dependem do servidor de linguagem para resolver símbolos e entender as relações entre arquivos. Com o LSP do Intlayer em execução, os agentes podem seguir `useIntlayer("key")` de volta à sua declaração, dando-lhes contexto preciso sobre as chaves de conteúdo disponíveis, a estrutura de cada dicionário e quais arquivos ler ou editar.
48
+ - **Dicionários mesclados** uma chave dividida entre vários arquivos de conteúdo retorna um resultado por arquivo, para que você possa navegar até cada declaração.
49
+ - **Compatível com monorepo** — o servidor resolve o `intlayer.config.*` _mais próximo_ de cada arquivo, de modo que vários projetos em um mesmo workspace tenham seus próprios dicionários.
38
50
 
39
- **Ir para a Definição**
51
+ ### Chamadas suportadas
40
52
 
41
- Coloque o cursor sobre qualquer string de chave de dicionário dentro de uma chamada getter suportada e pressione `F12` (ou `Cmd/Ctrl+Clique`). O editor abre o arquivo de declaração de conteúdo e posiciona o cursor na linha `key:`.
53
+ A chave é lida de um argumento posicional do tipo string ou de um objeto de opções (`{ namespace }`, `{ id }`).
42
54
 
43
- **Suporte a dicionários mesclados**
55
+ | Biblioteca | Chamadas |
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
- Uma chave pode ser dividida em vários arquivos de conteúdo (o Intlayer os mescla). O servidor retorna um local (`Location`) por arquivo de origem para que você possa navegar para cada declaração.
64
+ Isso funciona para todos os pacotes `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `intlayer`) e para os pacotes adaptadores de compatibilidade que permitem manter a sua sintaxe de i18n atual.
46
65
 
47
- **Funciona em qualquer lugar**
48
-
49
- Suporta todos os pacotes `*-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
- ### Chamadas getter suportadas
52
-
53
- O servidor detecta as seguintes chamadas de função e extrai o primeiro argumento literal de string como a chave do dicionário:
54
-
55
- | Função | Exemplo |
56
- | ------------- | ----------------------------- |
57
- | `useIntlayer` | `useIntlayer("hero")` |
58
- | `getIntlayer` | `getIntlayer("hero", locale)` |
59
-
60
- Os genéricos do TypeScript e os argumentos extras são ignorados — apenas a string da chave importa.
61
-
62
- > `useDictionary` e `getDictionary` recebem um objeto `Dictionary` já importado como seu primeiro argumento em vez de uma chave de string, portanto, eles não se beneficiam do recurso Ir para a Definição e não são rastreados pelo servidor.
66
+ > Os dicionários são lidos da saída de build, então execute `npx intlayer build` — ou mantenha o seu servidor de desenvolvimento rodando — para dar ao servidor algo para resolver.
63
67
 
64
68
  ---
65
69
 
66
70
  ## Instalação
67
71
 
68
- O servidor LSP é distribuído como parte do `@intlayer/lsp`:
72
+ O servidor é distribuído como o binário `intlayer-lsp` em `@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
- O pacote expõe o binário `intlayer-lsp`, que os editores usam como executável do servidor.
90
+ Instale-o globalmente (`npm install -g @intlayer/lsp`) se o seu editor precisar do `intlayer-lsp` no `PATH` é o caso do plugin do Claude Code e de qualquer configuração abaixo que chame o binário diretamente.
87
91
 
88
92
  ---
89
93
 
90
- ## Configuração como um plugin do Claude Code
94
+ ## Configuração
91
95
 
92
- O LSP do Intlayer está disponível como um **plugin do Claude Code** hospedado diretamente no repositório GitHub do Intlayer. A instalação dele dá ao Claude Code sensibilidade nativa ao recurso Ir para a Definição para todas as suas chamadas `useIntlayer` / `getIntlayer`.
96
+ <Tabs defaultTab="vscode">
97
+ <Tab label="VS Code" value="vscode">
93
98
 
94
- ### 1. Instalar o binário do servidor de linguagem
99
+ Instale a [extensão do Intlayer para VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension). O servidor de linguagem vem incluído desde a v8.12.0 e inicia automaticamente — **nenhuma configuração necessária**.
95
100
 
96
- ```bash packageManager="npm"
97
- npm install -g @intlayer/lsp
98
- ```
101
+ Consulte a [documentação da extensão do VS Code](https://intlayer.org/doc/vs-code-extension) para conhecer os demais recursos.
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/) e [Windsurf](https://windsurf.com/) são forks do VS Code e usam o mesmo ecossistema de extensões. Instale a [extensão do Intlayer para VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) uma vez e o servidor é ativado automaticamente — **nenhuma configuração necessária**.
107
+
108
+ </Tab>
109
+ <Tab label="Claude Code" value="claude-code">
107
110
 
108
- Isso coloca o binário `intlayer-lsp` no seu PATH, que é o que a entrada `lspServers` do plugin invoca.
111
+ O Intlayer fornece um **plugin para o Claude Code** hospedado no repositório do Intlayer. Ele ao Claude Code resolução real de símbolos para as suas chaves de dicionário, em vez de recorrer ao `grep`.
109
112
 
110
- ### 2. Registrar o marketplace do Intlayer e instalar o plugin
113
+ Coloque o binário no seu `PATH`, depois registre o marketplace e instale o 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
- O Claude Code adicionará `"intlayer-lsp@intlayer": true` aos seus `enabledPlugins` e iniciará automaticamente o servidor de linguagem nos tipos de arquivos suportados (`.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.svelte`).
122
+ O `install` também habilita o plugin. **Reinicie o Claude Code** os servidores de linguagem são carregados na inicialização, então o plugin tem efeito depois disso.
119
123
 
120
- ### 3. Habilitar a ferramenta LSP (se não estiver ativa)
124
+ O Claude Code então inicia o servidor em arquivos `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro` e `.svelte`, e usa `goToDefinition`, `findReferences` e `hover` ao navegar pelo seu código.
121
125
 
122
- Algumas versões do Claude Code exigem que o sinalizador de recurso LSP seja definido. Adicione o seguinte ao seu `~/.claude/settings.json` se o recurso Ir para a Definição não estiver funcionando após a instalação:
126
+ Se o Go-to-Definition ainda não fizer nada, a sua versão do Claude Code pode condicionar a ferramenta LSP a uma flag:
123
127
 
124
128
  ```json fileName="~/.claude/settings.json"
125
129
  {
@@ -129,61 +133,10 @@ Algumas versões do Claude Code exigem que o sinalizador de recurso LSP seja def
129
133
  }
130
134
  ```
131
135
 
132
- Reinicie o Claude Code — ele agora usará `goToDefinition`, `findReferences` e outras operações LSP ao navegar pela sua base de código do Intlayer em vez de recorrer ao `grep`.
133
-
134
- ---
135
-
136
- ## Configuração no VS Code (via extensão — recomendado)
137
-
138
- Se você tiver a **extensão do VS Code do Intlayer** instalada, o servidor de linguagem inicia automaticamente. Nenhuma configuração adicional é necessária. O LSP está diretamente integrado na extensão do VSCode desde a versão 8.12.0.
139
-
140
- > Consulte a [documentação da extensão do VS Code](https://intlayer.org/doc/vs-code-extension) para obter detalhes sobre instalação e outros recursos.
141
-
142
- ---
143
-
144
- ## Configuração manual no VS Code
145
-
146
- Se você não estiver usando a extensão do Intlayer, poderá conectar o servidor de linguagem manualmente usando uma extensão de cliente LSP genérica, como a [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter) ou escrevendo sua própria pequena extensão. A abordagem recomendada é usar a extensão do Intlayer.
147
-
148
- Para referência, o servidor inicia através do binário `intlayer-lsp` via stdio:
149
-
150
- ```json fileName=".vscode/settings.json"
151
- {
152
- "intlayer.languageServer.command": "npx",
153
- "intlayer.languageServer.args": ["@intlayer/lsp"]
154
- }
155
- ```
156
-
157
- A extensão do Intlayer lê essas configurações para iniciar o servidor. Se você depender apenas da extensão, nenhuma configuração manual será necessária.
158
-
159
- ---
160
-
161
- ## Configuração no Cursor
162
-
163
- O [Cursor](https://www.cursor.com/) é um fork do VS Code com recursos de IA integrados. Ele usa o mesmo ecossistema de extensões, portanto, a **extensão do VS Code do Intlayer** funciona sem qualquer configuração extra — instale-a uma vez e o Cursor a detectará automaticamente.
164
-
165
- Se preferir uma configuração manual, o Cursor também lê `.vscode/settings.json` da raiz do workspace, aplicando diretamente o snippet do VS Code acima.
166
-
167
- ---
168
-
169
- ## Configuração no Windsurf
170
-
171
- O [Windsurf](https://windsurf.com/) (da Codeium) é outro editor baseado no VS Code. Instale a extensão do Intlayer a partir do VS Code Marketplace e o servidor de linguagem será ativado automaticamente, exatamente como no VS Code e no Cursor.
172
-
173
- Para configuração manual, crie `.vscode/settings.json` na raiz do projeto:
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
- ## Configuração no Zed
136
+ </Tab>
137
+ <Tab label="Zed" value="zed">
185
138
 
186
- O [Zed](https://zed.dev/) possui suporte nativo a LSP através de suas configurações de idioma. Adicione uma entrada em suas configurações de usuário do Zed (`~/.config/zed/settings.json`):
139
+ O Zed tem suporte nativo a LSP. Adicione o servidor às suas configurações de usuário:
187
140
 
188
141
  ```json fileName="~/.config/zed/settings.json"
189
142
  {
@@ -196,47 +149,21 @@ O [Zed](https://zed.dev/) possui suporte nativo a LSP através de suas configura
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
- O marcador de posição `"..."` instrui o Zed a manter seus servidores de linguagem padrão ao lado do servidor do Intlayer.
219
-
220
- ---
221
-
222
- ## Configuração para CLIs de agentes de IA (Claude Code, Codex, etc.)
223
-
224
- O **Claude Code** possui suporte de primeira classe para plugins LSP — siga a [configuração de plugin do Claude Code](#configuração-como-um-plugin-do-claude-code) acima para obter a experiência completa de Ir para a Definição diretamente em suas sessões de terminal.
161
+ O marcador `"..."` mantém os servidores de linguagem padrão do Zed junto com o do Intlayer.
225
162
 
226
- O **OpenAI Codex** e outras ferramentas baseadas em terminal ainda não funcionam como clientes LSP — elas leem e escrevem arquivos diretamente, em vez de manter uma sessão de servidor de linguagem persistente. Para essas ferramentas, o valor de ter o LSP em execução surge indiretamente: quando o servidor está ativo em um editor complementar (VS Code, Cursor, Windsurf, ...), o índice em tempo real do editor está disponível para qualquer agente de IA que possa consultá-lo por meio do contexto fornecido pelo editor (por exemplo, Cursor Composer, Windsurf Cascade, GitHub Copilot Chat).
163
+ </Tab>
164
+ <Tab label="Neovim" value="neovim">
227
165
 
228
- Se você estiver trabalhando apenas em um terminal sem um editor aberto, poderá iniciar o servidor de linguagem em segundo plano para que ele esteja pronto para qualquer editor que se conectar posteriormente ao mesmo workspace:
229
-
230
- ```bash
231
- # Manter o servidor ativo em segundo plano
232
- npx @intlayer/lsp &
233
- ```
234
-
235
- ---
236
-
237
- ## Configuração manual no Neovim
238
-
239
- Usando [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), registre uma configuração de servidor personalizada:
166
+ Usando o [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), registre uma configuração 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
- -- Iniciar o servidor com npx para evitar uma instalação global
175
+ -- Iniciar o servidor com npx para dispensar uma instalação 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
- Depois de reiniciar o Neovim, pressionar `gd` sobre uma chave do Intlayer invocará a funcionalidade Ir para a Definição.
271
-
272
- ---
273
-
274
- ## Configuração manual em outros editores
275
-
276
- Qualquer editor que suporte o Language Server Protocol pode usar o `@intlayer/lsp`. O servidor fornece:
197
+ Após reiniciar o Neovim, `gd` sobre uma chave de dicionário executa Ir para a definição e `gr` executa Localizar referências.
277
198
 
278
- - **Transporte** – Node.js IPC / stdio (padrão)
279
- - **Executável** – `npx @intlayer/lsp` (ou o binário `intlayer-lsp` instalado localmente)
280
- - **Capacidades** – `definitionProvider: true`, `textDocumentSync: Incremental`
281
-
282
- Consulte a documentação de LSP do seu editor para obter o formato exato de configuração (por exemplo, `languageserver.json` para o [coc.nvim](https://github.com/neoclide/coc.nvim) ou as configurações de cliente LSP no [Helix](https://helix-editor.com)).
283
-
284
- ### Exemplo: 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 a documentação de LSP do seu editor para obter o formato exato de con
307
223
  }
308
224
  ```
309
225
 
310
- ### Exemplo: 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="Outros editores" value="other">
245
+
246
+ Qualquer editor compatível com LSP pode executar o `@intlayer/lsp`. Aponte-o para:
247
+
248
+ - **Executável** — `npx @intlayer/lsp`, ou o binário `intlayer-lsp`
249
+ - **Transporte** — stdio (padrão)
250
+ - **Capacidades** — `definitionProvider`, `referencesProvider`, `hoverProvider`, `completionProvider` (caracteres de disparo `"` `'` `` ` `` `.`), diagnósticos push, `textDocumentSync: Incremental`
251
+ - **Padrões de raiz** — `intlayer.config.ts`, `intlayer.config.js`, `package.json`
252
+
253
+ Consulte a documentação de LSP do seu editor para o formato exato de configuração.
254
+
255
+ </Tab>
256
+ </Tabs>
257
+
326
258
  ---
327
259
 
328
- ## Como funciona
260
+ ## Nota sobre agentes de IA em terminal
329
261
 
330
- Quando o servidor é iniciado, ele resolve a configuração do Intlayer a partir da raiz do workspace usando `getConfiguration()`. Isso fornece a ele os caminhos `build` e `system` necessários para encontrar os dicionários compilados.
262
+ O **Claude Code** atua como um cliente LSP de verdade veja a aba acima.
331
263
 
332
- A cada solicitação de **Ir para a Definição**:
264
+ O **OpenAI Codex** e a maioria das outras ferramentas de terminal não são clientes LSP: elas leem e escrevem arquivos diretamente. Rodar o servidor sozinho não as ajuda; o valor vem de tê-lo ativo em um editor complementar cujo índice o agente possa consultar (Cursor Composer, Windsurf Cascade, Copilot Chat).
333
265
 
334
- 1. O servidor lê o texto completo do documento aberto.
335
- 2. Ele verifica chamadas getter (`useIntlayer`, `getIntlayer`, etc.) usando uma expressão regular.
336
- 3. Ele verifica se a posição do cursor cai dentro de uma dessas chamadas.
337
- 4. Se cair, ele extrai a chave do dicionário (grupo de captura 3 da regex) e chama `getUnmergedDictionaries()` para localizar cada arquivo de conteúdo que declara essa chave.
338
- 5. Ele lê cada arquivo correspondente e encontra a linha exata que contém `key: "<key>"` para posicionar o cursor precisamente.
339
- 6. Ele retorna uma matriz de objetos `Location` — um por arquivo de origem.
266
+ ---
340
267
 
341
- A configuração é resolvida de forma tardia (lazy) e armazenada em cache por sessão; ela é redefinida a cada solicitação de `initialize` (por exemplo, quando você abre uma nova pasta de workspace).
268
+ ## Como funciona
269
+
270
+ Para cada arquivo, o servidor localiza o `intlayer.config.*` mais próximo e carrega a configuração desse projeto para encontrar os dicionários compilados. Configuração, dicionários e a lista de arquivos-fonte são armazenados em cache com TTLs curtos e invalidados sempre que um arquivo de conteúdo monitorado muda.
271
+
272
+ A cada requisição, o servidor analisa o documento (via [oxc](https://oxc.rs/)) e inspeciona a posição do cursor:
273
+
274
+ 1. **Sobre uma string de chave** (`useIntlayer("home")`) → retorna todos os arquivos de conteúdo que declaram essa chave, posicionados na sua linha `key:`.
275
+ 2. **Sobre o uso de um campo** (`content.title`, uma propriedade desestruturada, `t('path.to.field')`, `<Trans>`, …) → resolve a variável de volta até o seu dicionário e retorna o campo correspondente dentro dos arquivos de conteúdo.
276
+ 3. **A partir de um arquivo de conteúdo** → executa a busca inversa, varrendo os fontes do projeto em busca dos pontos de chamada dessa chave ou campo.
342
277
 
343
278
  ---
344
279
 
345
280
  ## Solução de problemas
346
281
 
347
- | Sintoma | Causa provável | Solução |
348
- | ----------------------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------- |
349
- | Ir para a Definição não faz nada | O servidor não está sendo executado | Verifique se o `@intlayer/lsp` está instalado e se o editor o está iniciando |
350
- | Raiz incorreta do workspace detectada | Múltiplas pastas de workspace | Certifique-se de que a pasta contendo o `intlayer.config.ts` é a primeira pasta do workspace |
351
- | Definições não encontradas para uma chave | Configuração não resolvida | Verifique se o `intlayer.config.ts` (ou `.js`) existe na raiz do workspace |
352
- | O servidor trava na inicialização | Versão do Node.js muito antiga | Requer Node.js 14.18 |
282
+ | Sintoma | Causa provável | Solução |
283
+ | ---------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------- |
284
+ | Nada acontece | Servidor não está rodando | Verifique se `@intlayer/lsp` está instalado e se o seu editor o inicia |
285
+ | Funciona no editor, mas não no Claude Code | Plugin instalado no meio da sessão | Reinicie o Claude Code os servidores de linguagem carregam na inicialização |
286
+ | Nenhuma definição encontrada para uma chave | Dicionários não compilados | Execute `npx intlayer build`, ou inicie o seu servidor de desenvolvimento |
287
+ | Todas as chaves reportadas como não declaradas | Configuração não resolvida | Verifique se existe um `intlayer.config.ts` (ou `.js`) na raiz do projeto |
288
+ | Projeto errado usado em um monorepo | Falta configuração por pacote | Adicione um `intlayer.config.*` a cada pacote que declara conteúdo próprio |
289
+ | O servidor quebra ao iniciar | Versão do Node.js muito antiga | Requer Node.js ≥ 14.18 |
290
+
291
+ No VS Code, o servidor registra em **Exibir → Saída → "Intlayer LSP"** — útil para confirmar qual configuração foi resolvida e quantos dicionários foram encontrados.
package/docs/pt/readme.md CHANGED
@@ -46,27 +46,27 @@ Com **ficheiros de conteúdo por localidade**, **autocompletar em TypeScript**,
46
46
 
47
47
  ## Principais benefícios do Intlayer:
48
48
 
49
- | Funcionalidade | Descrição |
50
- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
51
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Suporte multi-framework**<br><br>O Intlayer é compatível com todos os principais frameworks e bibliotecas, incluindo Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e muito mais. |
52
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **Gestão de conteúdo baseada em JavaScript**<br><br>Aproveite a flexibilidade do JavaScript para definir e gerir o seu conteúdo de forma eficiente. <br><br> - [Declaração de conteúdo](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"> | **Ficheiro de declaração de conteúdo por localidade**<br><br>Acelere o seu desenvolvimento declarando o seu conteúdo uma única vez, antes da geração automática.<br><br> - [Ficheiro de declaração de conteúdo por localidade](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>O compilador Intlayer extrai automaticamente o conteúdo dos componentes e gera os ficheiros de dicionário.<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"> | **Ambiente tipado seguro**<br><br>Utilize o TypeScript para garantir que as suas definições de conteúdo e código estão livres de erros, beneficiando também da autocompletação no IDE.<br><br> - [Configuração do 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"> | **Configuração simplificada**<br><br>Comece rapidamente com uma configuração mínima. Ajuste facilmente definições para internacionalização, roteamento, IA, build e gestão de conteúdo. <br><br> - [Explore a integração com 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"> | **Recuperação de conteúdo simplificada**<br><br>Não é necessário chamar a sua função `t` para cada elemento de conteúdo. Recupere todo o seu conteúdo diretamente utilizando um único hook.<br><br> - [Integração com 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"> | **Implementação consistente de componentes de servidor**<br><br>Perfeitamente adequado para componentes de servidor Next.js, utilize a mesma implementação tanto para componentes de cliente como de servidor, sem necessidade de passar a sua função `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>Mantenha a sua base de código organizada: 1 componente = 1 dicionário na mesma pasta. Traduções próximas dos seus respectivos componentes melhoram a manutenção e a clareza. <br><br> - [Como o Intlayer funciona](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"> | **Roteamento aprimorado**<br><br>Suporte completo ao roteamento de aplicações, adaptando-se perfeitamente a estruturas complexas de aplicações, para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explore a integração com 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"> | **Suporte a Markdown**<br><br>Importe e interprete ficheiros locais e Markdown remoto para conteúdo multilíngue, como políticas de privacidade, documentação, etc. Interprete e torne os metadados do Markdown acessíveis no seu código.<br><br> - [Ficheiros de conteúdo](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 e CMS gratuitos**<br><br>Um editor visual e um CMS gratuitos estão disponíveis para redatores de conteúdo, eliminando a necessidade de uma plataforma de localização. Mantenha o seu conteúdo sincronizado utilizando Git, ou externalize-o total ou parcialmente com o 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"> | **Conteúdo tree-shakable**<br><br>Conteúdo tree-shakable, reduzindo o tamanho do bundle final. Carrega o conteúdo por componente, excluindo qualquer conteúdo não utilizado do seu pacote. Suporta carregamento preguiçoso para melhorar a eficiência do carregamento da aplicação. <br><br> - [Otimização da build da app](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"> | **Renderização estática**<br><br>Não bloqueia a renderização estática. <br><br> - [Integração com 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"> | **Tradução baseada em IA**<br><br>Transforme o seu site em 231 idiomas com apenas um clique utilizando as avançadas ferramentas de tradução baseadas em IA da Intlayer, utilizando o seu próprio provedor de IA / chave API. <br><br> - [Integração CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI do Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Preenchimento 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"> | **Integração do servidor MCP**<br><br>Fornece um servidor MCP (Model Context Protocol) para automação de IDE, permitindo uma gestão de conteúdo e fluxos de trabalho i18n contínuos diretamente dentro do seu ambiente de desenvolvimento. <br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/mcp_server.md) |
67
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Extensão VSCode**<br><br>O Intlayer fornece uma extensão para VSCode para ajudar você a gerir o seu conteúdo e traduções, construir os seus dicionários, traduzir o seu conteúdo e muito mais. <br><br> - [Extensão 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"> | **Interoperabilidade**<br><br>Permite interoperabilidade com react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer e react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer e next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer e next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer e 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"> | **Desempenho e Benchmark**<br><br>Utiliza tree-shaking avançado e carregamento dinâmico para aumentar o desempenho e manter a solução o mais leve possível. <br><br> - [Desempenho e Benchmark](https://intlayer.org/doc/benchmark) |
49
+ | Funcionalidade | Descrição |
50
+ | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Suporte multi-framework**<br><br>O Intlayer é compatível com todos os principais frameworks e bibliotecas, incluindo Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e muito mais. |
52
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **Gestão de conteúdo baseada em JavaScript**<br><br>Aproveite a flexibilidade do JavaScript para definir e gerir o seu conteúdo de forma eficiente. <br><br> - [Declaração de conteúdo](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"> | **Ficheiro de declaração de conteúdo por localidade**<br><br>Acelere o seu desenvolvimento declarando o seu conteúdo uma única vez, antes da geração automática.<br><br> - [Ficheiro de declaração de conteúdo por localidade](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>O compilador Intlayer extrai automaticamente o conteúdo dos componentes e gera os ficheiros de dicionário.<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"> | **Ambiente tipado seguro**<br><br>Utilize o TypeScript para garantir que as suas definições de conteúdo e código estão livres de erros, beneficiando também da autocompletação no IDE.<br><br> - [Configuração do 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"> | **Configuração simplificada**<br><br>Comece rapidamente com uma configuração mínima. Ajuste facilmente definições para internacionalização, roteamento, IA, build e gestão de conteúdo. <br><br> - [Explore a integração com 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"> | **Recuperação de conteúdo simplificada**<br><br>Não é necessário chamar a sua função `t` para cada elemento de conteúdo. Recupere todo o seu conteúdo diretamente utilizando um único hook.<br><br> - [Integração com 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"> | **Implementação consistente de componentes de servidor**<br><br>Perfeitamente adequado para componentes de servidor Next.js, utilize a mesma implementação tanto para componentes de cliente como de servidor, sem necessidade de passar a sua função `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>Mantenha a sua base de código organizada: 1 componente = 1 dicionário na mesma pasta. Traduções próximas dos seus respectivos componentes melhoram a manutenção e a clareza. <br><br> - [Como o Intlayer funciona](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"> | **Roteamento aprimorado**<br><br>Suporte completo ao roteamento de aplicações, adaptando-se perfeitamente a estruturas complexas de aplicações, para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explore a integração com 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"> | **Suporte a Markdown**<br><br>Importe e interprete ficheiros locais e Markdown remoto para conteúdo multilíngue, como políticas de privacidade, documentação, etc. Interprete e torne os metadados do Markdown acessíveis no seu código.<br><br> - [Ficheiros de conteúdo](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 e CMS gratuitos**<br><br>Um editor visual e um CMS gratuitos estão disponíveis para redatores de conteúdo, eliminando a necessidade de uma plataforma de localização. Mantenha o seu conteúdo sincronizado utilizando Git, ou externalize-o total ou parcialmente com o 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"> | **Conteúdo tree-shakable**<br><br>Conteúdo tree-shakable, reduzindo o tamanho do bundle final. Carrega o conteúdo por componente, excluindo qualquer conteúdo não utilizado do seu pacote. Suporta carregamento preguiçoso para melhorar a eficiência do carregamento da aplicação. <br><br> - [Otimização da build da app](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"> | **Renderização estática**<br><br>Não bloqueia a renderização estática. <br><br> - [Integração com 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"> | **Tradução baseada em IA**<br><br>Transforme o seu site em 231 idiomas com apenas um clique utilizando as avançadas ferramentas de tradução baseadas em IA da Intlayer, utilizando o seu próprio provedor de IA / chave API. <br><br> - [Integração CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI do Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Preenchimento 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"> | **Integração do servidor MCP**<br><br>Fornece um servidor MCP (Model Context Protocol) para automação de IDE, permitindo uma gestão de conteúdo e fluxos de trabalho i18n contínuos diretamente dentro do seu ambiente de desenvolvimento. <br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/mcp_server.md) |
67
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **Extensão VSCode**<br><br>O Intlayer fornece uma extensão para VSCode para ajudar você a gerir o seu conteúdo e traduções, construir os seus dicionários, traduzir o seu conteúdo e muito mais. <br><br> - [Extensão 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"> | **Interoperabilidade**<br><br>Permite interoperabilidade com react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer e react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer e next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer e next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer e vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Adaptadores de compatibilidade do 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"> | **Desempenho e Benchmark**<br><br>Utiliza tree-shaking avançado e carregamento dinâmico para aumentar o desempenho e manter a solução o mais leve possível. <br><br> - [Desempenho e Benchmark](https://intlayer.org/doc/benchmark) |
70
70
 
71
71
  ---
72
72
 
@@ -173,7 +173,7 @@ Explore a nossa documentação completa para começar com o Intlayer e aprender
173
173
  <li><a href="https://intlayer.org/doc/concept/cms" rel=''>CMS Intlayer</a></li>
174
174
  <li><a href="https://intlayer.org/doc/concept/content" rel=''>Dicionário</a>
175
175
  <ul>
176
- <li><a href="https://intlayer.org/doc/concept/content/per-locale-file" rel=''>Ficheiro de declaração de conteúdo por localidade</a></li>
176
+ <li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Ficheiro de declaração de conteúdo por localidade</a></li>
177
177
  <li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Tradução</a></li>
178
178
  <li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Enumeração</a></li>
179
179
  <li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Condição</a></li>
@@ -194,7 +194,7 @@ Explore a nossa documentação completa para começar com o Intlayer e aprender
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 utilizando o compilador</a></li>
199
199
  </ul>
200
200
  </li>
@@ -223,7 +223,7 @@ Explore a nossa documentação completa para começar com o Intlayer e aprender
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>