@intlayer/docs 6.0.1 → 6.0.2-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +6 -5
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +318 -1863
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +1317 -6282
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +43 -84
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +2 -5
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +318 -1863
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +1317 -6282
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +43 -84
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/blog.d.ts +1 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_CMS.md +261 -85
- package/docs/ar/releases/v6.md +273 -0
- package/docs/ar/roadmap.md +1 -3
- package/docs/ar/vs_code_extension.md +94 -63
- package/docs/de/intlayer_CMS.md +247 -65
- package/docs/de/releases/v6.md +298 -0
- package/docs/de/roadmap.md +1 -3
- package/docs/de/vs_code_extension.md +89 -58
- package/docs/en/configuration.md +9 -2
- package/docs/en/intlayer_CMS.md +205 -23
- package/docs/en/intlayer_cli.md +4 -4
- package/docs/en/intlayer_visual_editor.md +7 -6
- package/docs/en/intlayer_with_nextjs_14.md +17 -1
- package/docs/en/intlayer_with_nextjs_15.md +17 -1
- package/docs/en/releases/v6.md +268 -0
- package/docs/en/roadmap.md +1 -3
- package/docs/en/vs_code_extension.md +79 -49
- package/docs/en-GB/intlayer_CMS.md +216 -52
- package/docs/en-GB/releases/v6.md +297 -0
- package/docs/en-GB/roadmap.md +1 -3
- package/docs/en-GB/vs_code_extension.md +79 -48
- package/docs/es/intlayer_CMS.md +257 -84
- package/docs/es/releases/v6.md +274 -0
- package/docs/es/roadmap.md +1 -3
- package/docs/es/vs_code_extension.md +90 -60
- package/docs/fr/intlayer_CMS.md +250 -68
- package/docs/fr/releases/v6.md +274 -0
- package/docs/fr/roadmap.md +1 -3
- package/docs/fr/vs_code_extension.md +94 -63
- package/docs/hi/intlayer_CMS.md +253 -77
- package/docs/hi/releases/v6.md +273 -0
- package/docs/hi/roadmap.md +1 -3
- package/docs/hi/vs_code_extension.md +92 -61
- package/docs/it/intlayer_CMS.md +251 -73
- package/docs/it/releases/v6.md +273 -0
- package/docs/it/roadmap.md +1 -3
- package/docs/it/vs_code_extension.md +94 -63
- package/docs/ja/intlayer_CMS.md +282 -97
- package/docs/ja/releases/v6.md +273 -0
- package/docs/ja/roadmap.md +1 -3
- package/docs/ja/vs_code_extension.md +99 -68
- package/docs/ko/intlayer_CMS.md +267 -93
- package/docs/ko/releases/v6.md +273 -0
- package/docs/ko/roadmap.md +1 -3
- package/docs/ko/vs_code_extension.md +88 -57
- package/docs/pt/intlayer_CMS.md +261 -83
- package/docs/pt/releases/v6.md +273 -0
- package/docs/pt/roadmap.md +1 -3
- package/docs/pt/vs_code_extension.md +89 -58
- package/docs/ru/intlayer_CMS.md +240 -65
- package/docs/ru/releases/v6.md +274 -0
- package/docs/ru/roadmap.md +1 -1
- package/docs/ru/vs_code_extension.md +83 -52
- package/docs/tr/intlayer_CMS.md +278 -96
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_tanstack.md +3 -0
- package/docs/tr/releases/v6.md +273 -0
- package/docs/tr/roadmap.md +1 -1
- package/docs/tr/vs_code_extension.md +100 -71
- package/docs/zh/intlayer_CMS.md +257 -76
- package/docs/zh/releases/v6.md +273 -0
- package/docs/zh/roadmap.md +1 -3
- package/docs/zh/vs_code_extension.md +99 -68
- package/package.json +9 -8
- package/src/blog.ts +1 -1
- package/src/common.ts +2 -6
- package/src/generated/blog.entry.ts +323 -1864
- package/src/generated/docs.entry.ts +1317 -6278
- package/src/generated/frequentQuestions.entry.ts +202 -1183
- package/src/generated/legal.entry.ts +48 -85
package/docs/pt/intlayer_CMS.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
4
|
-
title: CMS
|
|
5
|
-
description:
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: Intlayer CMS | Externalize seu conteúdo no Intlayer CMS
|
|
5
|
+
description: Externalize seu conteúdo no Intlayer CMS para delegar a gestão do seu conteúdo para sua equipe.
|
|
6
6
|
keywords:
|
|
7
7
|
- CMS
|
|
8
|
-
- Editor
|
|
8
|
+
- Editor Visual
|
|
9
9
|
- Internacionalização
|
|
10
10
|
- Documentação
|
|
11
11
|
- Intlayer
|
|
@@ -19,11 +19,11 @@ slugs:
|
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
# Documentação do Sistema de Gestão de Conteúdo (CMS) Intlayer
|
|
23
23
|
|
|
24
|
-
<iframe title="Visual
|
|
24
|
+
<iframe title="Editor Visual + CMS para sua Aplicação Web: Intlayer Explicado" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
25
25
|
|
|
26
|
-
O Intlayer CMS é
|
|
26
|
+
O Intlayer CMS é uma aplicação que permite externalizar o conteúdo de um projeto Intlayer.
|
|
27
27
|
|
|
28
28
|
Para isso, o Intlayer introduz o conceito de 'dicionários distantes'.
|
|
29
29
|
|
|
@@ -33,15 +33,15 @@ Para isso, o Intlayer introduz o conceito de 'dicionários distantes'.
|
|
|
33
33
|
|
|
34
34
|
O Intlayer faz uma distinção entre dicionários 'locais' e 'distantes'.
|
|
35
35
|
|
|
36
|
-
- Um dicionário 'local' é um dicionário declarado no seu projeto Intlayer. Como o arquivo de declaração de um botão ou sua barra de navegação. Externalizar seu conteúdo não faz sentido neste caso
|
|
36
|
+
- Um dicionário 'local' é um dicionário que é declarado no seu projeto Intlayer. Como o arquivo de declaração de um botão, ou sua barra de navegação. Externalizar seu conteúdo não faz sentido neste caso porque esse conteúdo não deve mudar com frequência.
|
|
37
37
|
|
|
38
|
-
- Um dicionário 'distante' é um dicionário gerenciado através do Intlayer CMS.
|
|
38
|
+
- Um dicionário 'distante' é um dicionário que é gerenciado através do Intlayer CMS. Pode ser útil para permitir que sua equipe gerencie seu conteúdo diretamente no seu site, e também tem como objetivo usar recursos de testes A/B e otimização automática de SEO.
|
|
39
39
|
|
|
40
40
|
## Editor visual vs CMS
|
|
41
41
|
|
|
42
|
-
O [
|
|
42
|
+
O editor [Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) é uma ferramenta que permite gerenciar seu conteúdo em um editor visual para dicionários locais. Uma vez que uma alteração é feita, o conteúdo será substituído na base de código. Isso significa que a aplicação será reconstruída e a página será recarregada para exibir o novo conteúdo.
|
|
43
43
|
|
|
44
|
-
Em contraste, o Intlayer CMS é uma ferramenta que permite gerenciar seu conteúdo em um editor visual para dicionários distantes. Uma vez
|
|
44
|
+
Em contraste, o Intlayer CMS é uma ferramenta que permite gerenciar seu conteúdo em um editor visual para dicionários distantes. Uma vez que uma alteração é feita, o conteúdo **não** impactará sua base de código. E o site exibirá automaticamente o conteúdo alterado.
|
|
45
45
|
|
|
46
46
|
## Integração
|
|
47
47
|
|
|
@@ -61,7 +61,7 @@ Para integração com Vite + React, consulte o [guia de configuração](https://
|
|
|
61
61
|
|
|
62
62
|
## Configuração
|
|
63
63
|
|
|
64
|
-
No arquivo de configuração do Intlayer, você pode personalizar as configurações do CMS:
|
|
64
|
+
No seu arquivo de configuração do Intlayer, você pode personalizar as configurações do CMS:
|
|
65
65
|
|
|
66
66
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
67
67
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -72,17 +72,17 @@ const config: IntlayerConfig = {
|
|
|
72
72
|
/**
|
|
73
73
|
* Obrigatório
|
|
74
74
|
*
|
|
75
|
-
* A URL
|
|
76
|
-
* Esta é a URL
|
|
75
|
+
* A URL da aplicação.
|
|
76
|
+
* Esta é a URL alvo do editor visual.
|
|
77
77
|
*/
|
|
78
78
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* Obrigatório
|
|
82
82
|
*
|
|
83
|
-
*
|
|
83
|
+
* Client ID e client secret são necessários para ativar o editor.
|
|
84
84
|
* Eles permitem identificar o usuário que está editando o conteúdo.
|
|
85
|
-
*
|
|
85
|
+
* Podem ser obtidos criando um novo cliente no Painel do Intlayer - Projetos (https://intlayer.org/dashboard/projects).
|
|
86
86
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
87
87
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
88
88
|
*/
|
|
@@ -92,20 +92,20 @@ const config: IntlayerConfig = {
|
|
|
92
92
|
/**
|
|
93
93
|
* Opcional
|
|
94
94
|
*
|
|
95
|
-
*
|
|
95
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do CMS.
|
|
96
96
|
*
|
|
97
97
|
* A URL do Intlayer CMS.
|
|
98
|
-
* Por padrão, está
|
|
98
|
+
* Por padrão, está definida para https://intlayer.org
|
|
99
99
|
*/
|
|
100
100
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
101
101
|
|
|
102
102
|
/**
|
|
103
103
|
* Opcional
|
|
104
104
|
*
|
|
105
|
-
*
|
|
105
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do backend.
|
|
106
106
|
*
|
|
107
|
-
* A URL do
|
|
108
|
-
* Por padrão, está
|
|
107
|
+
* A URL do Intlayer CMS.
|
|
108
|
+
* Por padrão, está definida para https://back.intlayer.org
|
|
109
109
|
*/
|
|
110
110
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
111
111
|
},
|
|
@@ -122,17 +122,17 @@ const config = {
|
|
|
122
122
|
/**
|
|
123
123
|
* Obrigatório
|
|
124
124
|
*
|
|
125
|
-
* A URL
|
|
126
|
-
* Esta é a URL
|
|
125
|
+
* A URL da aplicação.
|
|
126
|
+
* Esta é a URL alvo do editor visual.
|
|
127
127
|
*/
|
|
128
128
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
131
|
* Obrigatório
|
|
132
132
|
*
|
|
133
|
-
* O ID do cliente e o segredo do cliente são necessários para
|
|
134
|
-
* Eles permitem identificar o
|
|
135
|
-
*
|
|
133
|
+
* O ID do cliente e o segredo do cliente são necessários para ativar o editor.
|
|
134
|
+
* Eles permitem identificar o utilizador que está a editar o conteúdo.
|
|
135
|
+
* Podem ser obtidos criando um novo cliente no Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects).
|
|
136
136
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
137
137
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
138
138
|
*/
|
|
@@ -142,20 +142,20 @@ const config = {
|
|
|
142
142
|
/**
|
|
143
143
|
* Opcional
|
|
144
144
|
*
|
|
145
|
-
*
|
|
145
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do CMS.
|
|
146
146
|
*
|
|
147
147
|
* A URL do Intlayer CMS.
|
|
148
|
-
* Por padrão, está
|
|
148
|
+
* Por padrão, está definida como https://intlayer.org
|
|
149
149
|
*/
|
|
150
150
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
151
151
|
|
|
152
152
|
/**
|
|
153
153
|
* Opcional
|
|
154
154
|
*
|
|
155
|
-
*
|
|
155
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do backend.
|
|
156
156
|
*
|
|
157
|
-
* A URL do
|
|
158
|
-
* Por padrão, está
|
|
157
|
+
* A URL do Intlayer CMS.
|
|
158
|
+
* Por padrão, está definida como https://back.intlayer.org
|
|
159
159
|
*/
|
|
160
160
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
161
161
|
},
|
|
@@ -172,17 +172,17 @@ const config = {
|
|
|
172
172
|
/**
|
|
173
173
|
* Obrigatório
|
|
174
174
|
*
|
|
175
|
-
* A URL
|
|
176
|
-
* Esta é a URL
|
|
175
|
+
* A URL da aplicação.
|
|
176
|
+
* Esta é a URL alvo do editor visual.
|
|
177
177
|
*/
|
|
178
178
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
181
|
* Obrigatório
|
|
182
182
|
*
|
|
183
|
-
* O ID
|
|
184
|
-
* Eles permitem identificar o
|
|
185
|
-
*
|
|
183
|
+
* O Client ID e o client secret são necessários para ativar o editor.
|
|
184
|
+
* Eles permitem identificar o utilizador que está a editar o conteúdo.
|
|
185
|
+
* Podem ser obtidos criando um novo cliente no Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects).
|
|
186
186
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
187
187
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
188
188
|
*/
|
|
@@ -192,17 +192,20 @@ const config = {
|
|
|
192
192
|
/**
|
|
193
193
|
* Opcional
|
|
194
194
|
*
|
|
195
|
-
*
|
|
195
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do CMS.
|
|
196
196
|
*
|
|
197
197
|
* A URL do Intlayer CMS.
|
|
198
|
-
* Por padrão, está
|
|
198
|
+
* Por padrão, está definida como https://intlayer.org
|
|
199
|
+
*/
|
|
200
|
+
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
201
|
+
|
|
199
202
|
/**
|
|
200
203
|
* Opcional
|
|
201
204
|
*
|
|
202
|
-
*
|
|
205
|
+
* No caso de estar a hospedar o Intlayer CMS por conta própria, pode definir a URL do backend.
|
|
203
206
|
*
|
|
204
|
-
* A URL do
|
|
205
|
-
* Por padrão, está
|
|
207
|
+
* A URL do Intlayer CMS.
|
|
208
|
+
* Por padrão, está definida como https://back.intlayer.org
|
|
206
209
|
*/
|
|
207
210
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
208
211
|
},
|
|
@@ -211,54 +214,55 @@ const config = {
|
|
|
211
214
|
module.exports = config;
|
|
212
215
|
```
|
|
213
216
|
|
|
214
|
-
> Se
|
|
217
|
+
> Se não tiver um client ID e client secret, pode obtê-los criando um novo cliente no [Intlayer Dashboard - Projects](https://intlayer.org/dashboard/projects).
|
|
215
218
|
|
|
216
219
|
> Para ver todos os parâmetros disponíveis, consulte a [documentação de configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md).
|
|
217
220
|
|
|
218
221
|
## Usando o CMS
|
|
219
222
|
|
|
220
|
-
### Enviar sua configuração
|
|
223
|
+
### Enviar a sua configuração
|
|
221
224
|
|
|
222
|
-
Para configurar o Intlayer CMS,
|
|
225
|
+
Para configurar o Intlayer CMS, pode usar os comandos do [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/pt/intlayer_cli.md).
|
|
223
226
|
|
|
224
227
|
```bash
|
|
225
228
|
npx intlayer config push
|
|
226
229
|
```
|
|
227
230
|
|
|
228
|
-
> Se
|
|
231
|
+
> Se usar variáveis de ambiente no seu ficheiro de configuração `intlayer.config.ts`, pode especificar o ambiente desejado usando o argumento `--env`:
|
|
229
232
|
|
|
230
233
|
```bash
|
|
231
234
|
npx intlayer config push --env production
|
|
232
235
|
```
|
|
233
236
|
|
|
234
|
-
Este comando
|
|
237
|
+
Este comando envia a sua configuração para o Intlayer CMS.
|
|
235
238
|
|
|
236
239
|
### Enviar um dicionário
|
|
237
240
|
|
|
238
|
-
Para transformar seus dicionários
|
|
241
|
+
Para transformar os seus dicionários de localidade num dicionário remoto, pode usar os comandos do [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/pt/intlayer_cli.md).
|
|
239
242
|
|
|
240
243
|
```bash
|
|
241
244
|
npx intlayer dictionary push -d my-first-dictionary-key
|
|
242
245
|
```
|
|
243
246
|
|
|
244
|
-
> Se
|
|
247
|
+
> Se usar variáveis de ambiente no seu ficheiro de configuração `intlayer.config.ts`, pode especificar o ambiente desejado usando o argumento `--env`:
|
|
245
248
|
|
|
246
249
|
```bash
|
|
247
250
|
npx intlayer dictionary push -d my-first-dictionary-key --env production
|
|
248
251
|
```
|
|
249
252
|
|
|
250
|
-
Este comando
|
|
253
|
+
Este comando envia os seus dicionários de conteúdo iniciais, tornando-os disponíveis para obtenção e edição assíncronas através da plataforma Intlayer.
|
|
251
254
|
|
|
252
255
|
### Editar o dicionário
|
|
253
256
|
|
|
254
|
-
|
|
257
|
+
Depois, poderá ver e gerir o seu dicionário no [Intlayer CMS](https://intlayer.org/dashboard/content).
|
|
258
|
+
|
|
259
|
+
## Sincronização ao vivo
|
|
255
260
|
|
|
256
|
-
|
|
261
|
+
A Sincronização ao Vivo permite que a sua aplicação reflita as alterações de conteúdo do CMS em tempo de execução. Não é necessário reconstruir ou reimplantar. Quando ativada, as atualizações são transmitidas para um servidor de Sincronização ao Vivo que atualiza os dicionários que a sua aplicação lê.
|
|
257
262
|
|
|
258
|
-
|
|
263
|
+
> A Sincronização ao Vivo requer uma conexão contínua com o servidor e está disponível no plano enterprise.
|
|
259
264
|
|
|
260
|
-
|
|
261
|
-
Ao ativar a configuração [`liveSync`](https://intlayer.org/doc/concept/configuration#editor-configuration), o aplicativo substituirá automaticamente o conteúdo atualizado quando ele for detectado.
|
|
265
|
+
Ative a Sincronização ao Vivo atualizando a sua configuração Intlayer:
|
|
262
266
|
|
|
263
267
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
264
268
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -266,18 +270,32 @@ import type { IntlayerConfig } from "intlayer";
|
|
|
266
270
|
const config: IntlayerConfig = {
|
|
267
271
|
// ... outras configurações
|
|
268
272
|
editor: {
|
|
269
|
-
// ... outras configurações
|
|
270
|
-
|
|
271
273
|
/**
|
|
272
|
-
*
|
|
273
|
-
* Por exemplo, quando um
|
|
274
|
+
* Ativa o recarregamento a quente das configurações de localidade quando são detetadas alterações.
|
|
275
|
+
* Por exemplo, quando um dicionário é adicionado ou atualizado, a aplicação atualiza
|
|
276
|
+
* o conteúdo exibido na página.
|
|
274
277
|
*
|
|
275
|
-
* Como o
|
|
278
|
+
* Como o recarregamento a quente requer uma conexão contínua com o servidor, está
|
|
279
|
+
* disponível apenas para clientes do plano `enterprise`.
|
|
276
280
|
*
|
|
277
281
|
* Padrão: false
|
|
278
282
|
*/
|
|
279
283
|
liveSync: true,
|
|
280
284
|
},
|
|
285
|
+
build: {
|
|
286
|
+
/**
|
|
287
|
+
* Controla como os dicionários são importados:
|
|
288
|
+
*
|
|
289
|
+
* - "live": Os dicionários são buscados dinamicamente usando a API de Sincronização ao Vivo.
|
|
290
|
+
* Substitui useIntlayer por useDictionaryDynamic.
|
|
291
|
+
*
|
|
292
|
+
* Nota: O modo live usa a API de Sincronização ao Vivo para buscar os dicionários. Se a chamada da API
|
|
293
|
+
* falhar, os dicionários são importados dinamicamente.
|
|
294
|
+
* Nota: Apenas dicionários com conteúdo remoto e sinalizadores "live" usam o modo live.
|
|
295
|
+
* Outros usam o modo dinâmico para melhor desempenho.
|
|
296
|
+
*/
|
|
297
|
+
importMode: "live",
|
|
298
|
+
},
|
|
281
299
|
};
|
|
282
300
|
|
|
283
301
|
export default config;
|
|
@@ -288,18 +306,32 @@ export default config;
|
|
|
288
306
|
const config = {
|
|
289
307
|
// ... outras configurações
|
|
290
308
|
editor: {
|
|
291
|
-
// ... outras configurações
|
|
292
|
-
|
|
293
309
|
/**
|
|
294
|
-
*
|
|
295
|
-
* Por exemplo, quando um
|
|
310
|
+
* Habilita o recarregamento a quente das configurações de localidade quando alterações são detectadas.
|
|
311
|
+
* Por exemplo, quando um dicionário é adicionado ou atualizado, a aplicação atualiza
|
|
312
|
+
* o conteúdo exibido na página.
|
|
296
313
|
*
|
|
297
|
-
* Como o
|
|
314
|
+
* Como o recarregamento a quente requer uma conexão contínua com o servidor, ele está
|
|
315
|
+
* disponível apenas para clientes do plano `enterprise`.
|
|
298
316
|
*
|
|
299
317
|
* Padrão: false
|
|
300
318
|
*/
|
|
301
319
|
liveSync: true,
|
|
302
320
|
},
|
|
321
|
+
build: {
|
|
322
|
+
/**
|
|
323
|
+
* Controla como os dicionários são importados:
|
|
324
|
+
*
|
|
325
|
+
* - "live": Os dicionários são buscados dinamicamente usando a API de Sincronização ao Vivo.
|
|
326
|
+
* Substitui useIntlayer por useDictionaryDynamic.
|
|
327
|
+
*
|
|
328
|
+
* Nota: O modo live usa a API de Sincronização ao Vivo para buscar os dicionários. Se a chamada da API
|
|
329
|
+
* falhar, os dicionários são importados dinamicamente.
|
|
330
|
+
* Nota: Apenas dicionários com conteúdo remoto e sinalizadores "live" usam o modo live.
|
|
331
|
+
* Outros usam o modo dinâmico para melhor desempenho.
|
|
332
|
+
*/
|
|
333
|
+
importMode: "live",
|
|
334
|
+
},
|
|
303
335
|
};
|
|
304
336
|
|
|
305
337
|
export default config;
|
|
@@ -310,43 +342,189 @@ export default config;
|
|
|
310
342
|
const config = {
|
|
311
343
|
// ... outras configurações
|
|
312
344
|
editor: {
|
|
313
|
-
// ... outras configurações
|
|
314
|
-
|
|
315
345
|
/**
|
|
316
|
-
*
|
|
317
|
-
* Por exemplo, quando um
|
|
346
|
+
* Habilita o recarregamento a quente das configurações de localidade quando alterações são detectadas.
|
|
347
|
+
* Por exemplo, quando um dicionário é adicionado ou atualizado, a aplicação atualiza
|
|
348
|
+
* o conteúdo exibido na página.
|
|
318
349
|
*
|
|
319
|
-
* Como o
|
|
350
|
+
* Como o recarregamento a quente requer uma conexão contínua com o servidor, ele está
|
|
351
|
+
* disponível apenas para clientes do plano `enterprise`.
|
|
320
352
|
*
|
|
321
353
|
* Padrão: false
|
|
322
354
|
*/
|
|
323
355
|
liveSync: true,
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* A porta do servidor Live Sync.
|
|
359
|
+
*
|
|
360
|
+
* Padrão: 4000
|
|
361
|
+
*/
|
|
362
|
+
liveSyncPort: 4000,
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* A URL do servidor Live Sync.
|
|
366
|
+
*
|
|
367
|
+
* Padrão: http://localhost:{liveSyncPort}
|
|
368
|
+
*/
|
|
369
|
+
liveSyncURL: "https://live.example.com",
|
|
370
|
+
},
|
|
371
|
+
build: {
|
|
372
|
+
/**
|
|
373
|
+
* Controla como os dicionários são importados:
|
|
374
|
+
*
|
|
375
|
+
* - "live": Os dicionários são buscados dinamicamente usando a API Live Sync.
|
|
376
|
+
* Substitui useIntlayer por useDictionaryDynamic.
|
|
377
|
+
*
|
|
378
|
+
* Nota: O modo live usa a API Live Sync para buscar os dicionários. Se a chamada da API
|
|
379
|
+
* falhar, os dicionários são importados dinamicamente.
|
|
380
|
+
* Nota: Apenas dicionários com conteúdo remoto e sinalizadores "live" usam o modo live.
|
|
381
|
+
* Outros usam o modo dinâmico para melhor desempenho.
|
|
382
|
+
*/
|
|
383
|
+
importMode: "live",
|
|
324
384
|
},
|
|
325
385
|
};
|
|
326
386
|
|
|
327
387
|
module.exports = config;
|
|
328
388
|
```
|
|
329
389
|
|
|
330
|
-
|
|
390
|
+
Inicie o servidor Live Sync para envolver sua aplicação:
|
|
391
|
+
|
|
392
|
+
Exemplo usando Next.js:
|
|
393
|
+
|
|
394
|
+
```json5 fileName="package.json"
|
|
395
|
+
{
|
|
396
|
+
"scripts": {
|
|
397
|
+
// ... outros scripts
|
|
398
|
+
"build": "next build",
|
|
399
|
+
"dev": "next dev",
|
|
400
|
+
"start": "npx intlayer live --process 'next start'",
|
|
401
|
+
},
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Exemplo usando Vite:
|
|
406
|
+
|
|
407
|
+
```json5 fileName="package.json"
|
|
408
|
+
{
|
|
409
|
+
"scripts": {
|
|
410
|
+
// ... outros scripts
|
|
411
|
+
"build": "vite build",
|
|
412
|
+
"dev": "vite dev",
|
|
413
|
+
"start": "npx intlayer live --process 'vite start'",
|
|
414
|
+
},
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
O servidor Live Sync envolve sua aplicação e aplica automaticamente o conteúdo atualizado assim que ele chega.
|
|
419
|
+
|
|
420
|
+
Para receber notificações de alterações do CMS, o servidor Live Sync mantém uma conexão SSE com o backend. Quando o conteúdo muda no CMS, o backend encaminha a atualização para o servidor Live Sync, que grava os novos dicionários. Sua aplicação refletirá a atualização na próxima navegação ou recarregamento do navegador — sem necessidade de reconstrução.
|
|
331
421
|
|
|
332
|
-
|
|
333
|
-
- No lado do cliente, o hot reloading permite que o aplicativo recarregue o conteúdo no navegador, sem a necessidade de recarregar a página. No entanto, este recurso está disponível apenas para componentes clientes.
|
|
334
|
-
> Como o hot reloading requer uma conexão contínua com o servidor usando um `EventListener`, ele está disponível apenas para clientes do plano `enterprise`.
|
|
422
|
+
Fluxograma (CMS/Backend -> Servidor Live Sync -> Servidor de Aplicação -> Frontend):
|
|
335
423
|
|
|
336
|
-
|
|
424
|
+

|
|
337
425
|
|
|
338
|
-
|
|
426
|
+
Como funciona:
|
|
339
427
|
|
|
340
|
-
|
|
428
|
+

|
|
341
429
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
430
|
+
### Fluxo de trabalho de desenvolvimento (local)
|
|
431
|
+
|
|
432
|
+
- Em desenvolvimento, todos os dicionários remotos são buscados quando a aplicação inicia, para que você possa testar atualizações rapidamente.
|
|
433
|
+
- Para testar o Live Sync localmente com Next.js, envolva seu servidor de desenvolvimento:
|
|
434
|
+
|
|
435
|
+
```json5 fileName="package.json"
|
|
436
|
+
{
|
|
437
|
+
"scripts": {
|
|
438
|
+
// ... outros scripts
|
|
439
|
+
"dev": "npx intlayer live --process 'next dev'",
|
|
440
|
+
// "dev": "npx intlayer live --process 'vite dev'", // Para Vite
|
|
441
|
+
},
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Habilite a otimização para que o Intlayer aplique as transformações de importação Live durante o desenvolvimento:
|
|
446
|
+
|
|
447
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
448
|
+
import type { IntlayerConfig } from "intlayer";
|
|
449
|
+
|
|
450
|
+
const config: IntlayerConfig = {
|
|
451
|
+
editor: {
|
|
452
|
+
applicationURL: "http://localhost:5173",
|
|
453
|
+
liveSyncURL: "http://localhost:4000",
|
|
454
|
+
liveSync: true,
|
|
455
|
+
},
|
|
456
|
+
build: {
|
|
457
|
+
optimize: true,
|
|
458
|
+
importMode: "live",
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
export default config;
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
466
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
467
|
+
const config = {
|
|
468
|
+
editor: {
|
|
469
|
+
applicationURL: "http://localhost:5173",
|
|
470
|
+
liveSyncURL: "http://localhost:4000",
|
|
471
|
+
liveSync: true,
|
|
472
|
+
},
|
|
473
|
+
build: {
|
|
474
|
+
optimize: true,
|
|
475
|
+
importMode: "live",
|
|
476
|
+
},
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
export default config;
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
483
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
484
|
+
const config = {
|
|
485
|
+
editor: {
|
|
486
|
+
applicationURL: "http://localhost:5173",
|
|
487
|
+
liveSyncURL: "http://localhost:4000",
|
|
488
|
+
liveSync: true,
|
|
489
|
+
},
|
|
490
|
+
build: {
|
|
491
|
+
optimize: true,
|
|
492
|
+
importMode: "live",
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
|
|
496
|
+
module.exports = config;
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
Esta configuração envolve seu servidor de desenvolvimento com o servidor Live Sync, busca dicionários remotos na inicialização e transmite atualizações do CMS via SSE. Atualize a página para ver as mudanças.
|
|
500
|
+
|
|
501
|
+
Notas e restrições:
|
|
502
|
+
|
|
503
|
+
- Adicione a origem do live sync à política de segurança do seu site (CSP). Certifique-se de que a URL do live sync esteja permitida em `connect-src` (e `frame-ancestors`, se relevante).
|
|
504
|
+
- O Live Sync não funciona com saída estática. Para Next.js, a página deve ser dinâmica para receber atualizações em tempo de execução (por exemplo, use `generateStaticParams`, `generateMetadata`, `getServerSideProps` ou `getStaticProps` adequadamente para evitar restrições de somente estático).
|
|
505
|
+
/// No CMS, cada dicionário possui uma flag `live`. Apenas dicionários com `live=true` são buscados via API de sincronização ao vivo; os demais são importados dinamicamente e permanecem inalterados em tempo de execução.
|
|
506
|
+
/// A flag `live` é avaliada para cada dicionário no momento da compilação. Se o conteúdo remoto não foi marcado como `live=true` durante a compilação, você deve recompilar para habilitar a Sincronização ao Vivo para esse dicionário.
|
|
507
|
+
/// O servidor de sincronização ao vivo deve ter permissão para escrever em `.intlayer`. Em contêineres, assegure o acesso de escrita a `/.intlayer`.
|
|
508
|
+
///
|
|
509
|
+
/// ## Depuração
|
|
510
|
+
///
|
|
511
|
+
/// Se você encontrar algum problema com o CMS, verifique o seguinte:
|
|
512
|
+
///
|
|
513
|
+
/// - A aplicação está em execução.
|
|
514
|
+
///
|
|
515
|
+
/// - A configuração do [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) está corretamente definida no seu arquivo de configuração do Intlayer.
|
|
516
|
+
/// - Campos obrigatórios:
|
|
517
|
+
- A URL da aplicação deve corresponder àquela que você definiu na configuração do editor (`applicationURL`).
|
|
518
|
+
- A URL do CMS
|
|
346
519
|
|
|
347
520
|
- Certifique-se de que a configuração do projeto foi enviada para o Intlayer CMS.
|
|
348
|
-
|
|
521
|
+
|
|
522
|
+
- O editor visual usa um iframe para exibir seu site. Certifique-se de que a Política de Segurança de Conteúdo (CSP) do seu site permita a URL do CMS como `frame-ancestors` ('https://intlayer.org' por padrão). Verifique o console do editor para qualquer erro.
|
|
349
523
|
|
|
350
524
|
## Histórico do Documento
|
|
351
525
|
|
|
352
|
-
|
|
526
|
+
| Versão | Data | Alterações |
|
|
527
|
+
| ------ | ---------- | -------------------------------------------- |
|
|
528
|
+
| 6.0.1 | 2025-09-22 | Adiciona documentação sobre live sync |
|
|
529
|
+
| 6.0.0 | 2025-09-04 | Substitui o campo `hotReload` por `liveSync` |
|
|
530
|
+
| 5.5.10 | 2025-06-29 | Histórico inicial |
|