@object-ui/i18n 6.2.3 → 7.1.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.
@@ -1,1297 +1,2024 @@
1
- /**
2
- * Português (pt) - Portuguese language pack for Object UI
3
- */
4
1
  const pt = {
5
- common: {
6
- addToFavorites: 'Adicionar aos favoritos',
7
- removeFromFavorites: 'Remover dos favoritos',
8
- loading: 'Carregando...',
9
- save: 'Salvar',
10
- cancel: 'Cancelar',
11
- delete: 'Excluir',
12
- edit: 'Editar',
13
- create: 'Criar',
14
- search: 'Pesquisar',
15
- filter: 'Filtrar',
16
- reset: 'Redefinir',
17
- confirm: 'Confirmar',
18
- close: 'Fechar',
19
- back: 'Voltar',
20
- next: 'Próximo',
21
- previous: 'Anterior',
22
- submit: 'Enviar',
23
- refresh: 'Atualizar',
24
- export: 'Exportar',
25
- import: 'Importar',
2
+ lookup: {
3
+ recentlyUsed: 'Usados recentemente',
4
+ allResults: 'Todos os resultados',
5
+ createNew: 'Criar novo',
6
+ createNamed: 'Criar “{{name}}”',
7
+ showingResults: 'Mostrando {{shown}} de {{total}} resultados',
8
+ showAllResults: 'Ver todos os resultados ({{count}})',
9
+ selectedBadge: 'Selecionado',
10
+ browseAll: 'Procurar todos os registros',
11
+ remove: 'Remover {{label}}',
12
+ selectFirst: 'Selecione primeiro {{fields}}',
13
+ selectRecord: 'Selecionar registro',
14
+ recordCount: '{{count}} registros',
15
+ recordCountOne: '1 registro',
16
+ pageOf: 'Página {{current}} de {{total}}',
17
+ filters: 'Filtros',
18
+ clear: 'Limpar',
26
19
  yes: 'Sim',
27
- no: 'Não',
28
- ok: 'OK',
29
- actions: 'Ações',
30
- more: 'Mais',
31
- selectAll: 'Selecionar tudo',
32
- clearAll: 'Limpar tudo',
33
- noData: 'Sem dados',
34
- noResults: 'Nenhum resultado encontrado',
35
- required: 'Obrigatório',
36
- optional: 'Opcional',
37
- selectOption: 'Selecionar uma opção',
38
- select: 'Selecionar...',
39
- openChat: 'Abrir chat',
40
- closeChat: 'Fechar chat',
41
- toggleSidebar: 'Alternar barra lateral',
20
+ filterPlaceholder: 'Filtrar {{label}}',
21
+ prevPage: 'Página anterior',
22
+ nextPage: 'Próxima página',
23
+ jumpToPage: 'Ir para a página',
24
+ retry: 'Tentar novamente',
25
+ loading: 'Carregando…',
26
+ noOptions: 'Nenhuma opção encontrada',
27
+ noRecords: 'Nenhum registro encontrado',
28
+ },
29
+ common: {
30
+ addToFavorites: "Adicionar aos favoritos",
31
+ removeFromFavorites: "Remover dos favoritos",
32
+ loading: "Carregando...",
33
+ save: "Salvar",
34
+ cancel: "Cancelar",
35
+ delete: "Excluir",
36
+ edit: "Editar",
37
+ create: "Criar",
38
+ search: "Pesquisar",
39
+ filter: "Filtrar",
40
+ reset: "Redefinir",
41
+ confirm: "Confirmar",
42
+ close: "Fechar",
43
+ back: "Voltar",
44
+ next: "Próximo",
45
+ previous: "Anterior",
46
+ submit: "Enviar",
47
+ refresh: "Atualizar",
48
+ export: "Exportar",
49
+ import: "Importar",
50
+ yes: "Sim",
51
+ no: "Não",
52
+ ok: "OK",
53
+ actions: "Ações",
54
+ more: "Mais",
55
+ selectAll: "Selecionar tudo",
56
+ clearAll: "Limpar tudo",
57
+ noData: "Sem dados",
58
+ noResults: "Nenhum resultado encontrado",
59
+ required: "Obrigatório",
60
+ optional: "Opcional",
61
+ selectOption: "Selecionar uma opção",
62
+ select: "Selecionar...",
63
+ openChat: "Abrir chat",
64
+ closeChat: "Fechar chat",
65
+ toggleSidebar: "Alternar barra lateral",
66
+ package: "Pacote",
67
+ },
68
+ actions: {
69
+ resultDialog: {
70
+ defaultTitle: 'Save this value now',
71
+ acknowledge: 'I have saved this',
72
+ },
42
73
  },
43
74
  validation: {
44
- required: '{{field}} é obrigatório',
45
- minLength: '{{field}} deve ter pelo menos {{min}} caracteres',
46
- maxLength: '{{field}} deve ter no máximo {{max}} caracteres',
47
- min: '{{field}} deve ser pelo menos {{min}}',
48
- max: '{{field}} deve ser no máximo {{max}}',
49
- email: 'Por favor, insira um endereço de e-mail válido',
50
- url: 'Por favor, insira uma URL válida',
51
- pattern: 'O formato de {{field}} é inválido',
52
- unique: '{{field}} deve ser único',
53
- type: '{{field}} deve ser um {{type}} válido',
75
+ required: "{{field}} é obrigatório",
76
+ minLength: "{{field}} deve ter pelo menos {{min}} caracteres",
77
+ maxLength: "{{field}} deve ter no máximo {{max}} caracteres",
78
+ min: "{{field}} deve ser pelo menos {{min}}",
79
+ max: "{{field}} deve ser no máximo {{max}}",
80
+ email: "Por favor, insira um endereço de e-mail válido",
81
+ url: "Por favor, insira uma URL válida",
82
+ pattern: "O formato de {{field}} é inválido",
83
+ unique: "{{field}} deve ser único",
84
+ type: "{{field}} deve ser um {{type}} válido",
54
85
  },
55
86
  form: {
56
- addItem: 'Adicionar item',
57
- removeItem: 'Remover item',
58
- fieldRequired: 'Este campo é obrigatório',
59
- invalidFormat: 'Formato inválido',
60
- saveSuccess: 'Salvo com sucesso',
61
- saveError: 'Falha ao salvar',
62
- unsavedChanges: 'Você tem alterações não salvas. Tem certeza de que deseja sair?',
63
- stepOf: 'Etapa {{current}} de {{total}}',
64
- createTitle: 'Criar {{object}}',
65
- editTitle: 'Editar {{object}}',
66
- createDescription: 'Adicionar um novo {{object}} ao seu banco de dados.',
67
- editDescription: 'Atualizar detalhes de {{object}}',
68
- saveRecord: 'Salvar registro',
87
+ addItem: "Adicionar item",
88
+ removeItem: "Remover item",
89
+ fieldRequired: "Este campo é obrigatório",
90
+ invalidFormat: "Formato inválido",
91
+ saveSuccess: "Salvo com sucesso",
92
+ saveError: "Falha ao salvar",
93
+ unsavedChanges: "Você tem alterações não salvas. Tem certeza de que deseja sair?",
94
+ stepOf: "Etapa {{current}} de {{total}}",
95
+ createTitle: "Criar {{object}}",
96
+ editTitle: "Editar {{object}}",
97
+ createDescription: "Adicionar um novo {{object}} ao seu banco de dados.",
98
+ editDescription: "Atualizar detalhes de {{object}}",
99
+ saveRecord: "Salvar registro",
100
+ create: "Criar",
101
+ update: "Atualizar",
102
+ createSuccess: "{{object}} criado",
103
+ updateSuccess: "{{object}} atualizado",
104
+ deleteSuccess: "{{object}} excluído",
69
105
  },
70
106
  fields: {
71
107
  richText: {
72
- format: 'Format: {{format}}',
73
- basicEditorHint: 'Rich text editor (basic)',
74
- placeholder: 'Enter text...',
108
+ format: "Formato: {{format}}",
109
+ basicEditorHint: "Editor de texto rico (básico)",
110
+ placeholder: "Digite algo...",
75
111
  },
76
112
  },
77
113
  table: {
78
- rowsPerPage: 'Linhas por página',
79
- showing: 'Mostrando {{from}} a {{to}} de {{total}}',
80
- noRows: 'Nenhuma linha para exibir',
81
- sortAsc: 'Ordenar crescente',
82
- sortDesc: 'Ordenar decrescente',
83
- filterColumn: 'Filtrar {{column}}',
84
- columns: 'Colunas',
85
- exportCSV: 'Exportar CSV',
86
- exportExcel: 'Exportar Excel',
87
- selectRow: 'Selecionar linha',
88
- selectAllRows: 'Selecionar todas as linhas',
89
- expandRow: 'Expandir linha',
90
- collapseRow: 'Recolher linha',
91
- hideColumn: 'Ocultar coluna',
92
- freezeColumn: 'Fixar coluna',
93
- unfreezeColumn: 'Soltar coluna',
94
- pageInfo: 'Página {{current}} de {{total}}',
95
- totalRecords: '{{count}} no total',
114
+ rowsPerPage: "Linhas por página",
115
+ showing: "Mostrando {{from}} a {{to}} de {{total}}",
116
+ noRows: "Nenhuma linha para exibir",
117
+ sortAsc: "Ordenar crescente",
118
+ sortDesc: "Ordenar decrescente",
119
+ filterColumn: "Filtrar {{column}}",
120
+ columns: "Colunas",
121
+ exportCSV: "Exportar CSV",
122
+ exportExcel: "Exportar Excel",
123
+ selectRow: "Selecionar linha",
124
+ selectAllRows: "Selecionar todas as linhas",
125
+ expandRow: "Expandir linha",
126
+ collapseRow: "Recolher linha",
127
+ hideColumn: "Ocultar coluna",
128
+ freezeColumn: "Fixar coluna",
129
+ unfreezeColumn: "Soltar coluna",
130
+ pageInfo: "Página {{current}} de {{total}}",
131
+ totalRecords: "{{count}} no total",
132
+ noResults: "Sem resultados",
133
+ noResultsHint: "Tente ajustar seus filtros ou termos de pesquisa.",
134
+ cancelAll: "Cancelar tudo",
135
+ saveAll: "Salvar tudo ({{count}})",
136
+ addRecord: "Adicionar registro",
137
+ open: "Abrir",
138
+ search: "Pesquisar...",
139
+ modified: "{{count}} linha(s) modificada(s)",
140
+ selected: "{{count}} selecionado(s)",
141
+ edit: "Editar",
142
+ delete: "Excluir",
96
143
  },
97
144
  grid: {
98
- actions: 'Ações',
99
- edit: 'Editar',
100
- delete: 'Excluir',
101
- export: 'Exportar',
102
- exportAs: 'Exportar como {{format}}',
103
- loading: 'Carregando grade...',
104
- errorLoading: 'Erro ao carregar grade',
105
- pullToRefresh: 'Puxe para atualizar',
106
- refreshing: 'Atualizando…',
107
- openRecord: 'Abrir registro',
108
- rowHeight: 'Altura da linha: {{mode}}',
145
+ actions: "Ações",
146
+ edit: "Editar",
147
+ delete: "Excluir",
148
+ export: "Exportar",
149
+ exportAs: "Exportar como {{format}}",
150
+ loading: "Carregando grade...",
151
+ errorLoading: "Erro ao carregar grade",
152
+ pullToRefresh: "Puxe para atualizar",
153
+ refreshing: "Atualizando…",
154
+ openRecord: "Abrir registro",
155
+ rowHeight: "Altura da linha: {{mode}}",
156
+ openMenu: "Abrir menu",
157
+ empty: "Vazio",
158
+ yes: "Sim",
159
+ no: "Não",
160
+ systemFields: "Sistema",
161
+ toolbar: {
162
+ densityMode: "Densidade",
163
+ densityCompact: "Compacto",
164
+ densityComfortable: "Normal",
165
+ densitySpacious: "Espaçoso",
166
+ densityCycleHint: "{{label}} (clique para alterar)",
167
+ densityCycleShortHint: "Clique para alterar",
168
+ },
169
+ import: {
170
+ title: "Importar {{object}}",
171
+ stepUpload: "Enviar",
172
+ stepMapping: "Mapeamento",
173
+ stepPreview: "Pré-visualização",
174
+ uploadDescription: "Envie um arquivo CSV para começar.",
175
+ mappingDescription: "Mapeie colunas CSV para campos do objeto.",
176
+ previewDescription: "Revise os dados antes de importar.",
177
+ dragDrop: "Arraste o arquivo CSV aqui ou clique para procurar",
178
+ browseFiles: "Procurar arquivos",
179
+ onlyCsv: "Apenas arquivos CSV são suportados.",
180
+ fileNeedsHeader: "O arquivo deve ter uma linha de cabeçalho e pelo menos uma linha de dados.",
181
+ mappingTemplate: "Modelo de mapeamento:",
182
+ chooseTemplate: "Escolher modelo…",
183
+ noSavedTemplates: "Sem modelos salvos",
184
+ noneOption: "— Nenhum —",
185
+ saveCurrent: "Salvar atual",
186
+ templateName: "Nome do modelo",
187
+ save: "Salvar",
188
+ deleteTemplate: "Excluir modelo",
189
+ csvColumn: "Coluna CSV",
190
+ mapsTo: "Mapeia para",
191
+ status: "Status",
192
+ skipColumn: "Pular coluna",
193
+ skip: "— Pular —",
194
+ mapped: "Mapeado",
195
+ skipped: "Pulado",
196
+ rowsWithErrors: "{{count}} linha(s) com erros",
197
+ rowsCorrected: "{{count}} linha(s) corrigida(s)",
198
+ clickToFix: "— clique em uma célula destacada para editar em linha.",
199
+ showingRows: "Mostrando {{shown}} de {{total}} linhas",
200
+ importing: "Importando… {{progress}}%",
201
+ importComplete: "Importação concluída",
202
+ imported: "{{count}} importado(s)",
203
+ skippedCount: "{{count}} pulado(s)",
204
+ moreErrors: "…e {{count}} erro(s) a mais",
205
+ cancel: "Cancelar",
206
+ back: "Voltar",
207
+ next: "Próximo",
208
+ close: "Fechar",
209
+ importNRows: "Importar {{count}} linhas",
210
+ importingProgress: "Importando…",
211
+ requiredMark: "*",
212
+ required: "Obrigatório",
213
+ invalidType: "{{type}} inválido",
214
+ },
109
215
  },
110
216
  calendar: {
111
- today: 'Hoje',
112
- month: 'Mês',
113
- week: 'Semana',
114
- day: 'Dia',
115
- agenda: 'Agenda',
116
- allDay: 'Dia inteiro',
117
- noEvents: 'Sem eventos',
118
- newEvent: 'Novo evento',
119
- moreEvents: '+{{count}} mais',
217
+ today: "Hoje",
218
+ month: "Mês",
219
+ week: "Semana",
220
+ day: "Dia",
221
+ agenda: "Agenda",
222
+ allDay: "Dia inteiro",
223
+ noEvents: "Sem eventos",
224
+ newEvent: "Novo evento",
225
+ moreEvents: "+{{count}} mais",
120
226
  },
121
227
  list: {
122
- recordCount: '{{count}} registros',
123
- recordCountOne: '{{count}} registro',
124
- addRecord: 'Adicionar registro',
125
- tabs: 'Abas',
126
- allRecords: 'Todos os registros',
127
- search: 'Pesquisar',
128
- filter: 'Filtrar',
129
- filterRecords: 'Filtrar registros',
130
- sort: 'Ordenar',
131
- sortRecords: 'Ordenar registros',
132
- group: 'Agrupar',
133
- groupBy: 'Agrupar por',
134
- export: 'Exportar',
135
- exportAs: 'Exportar como {{format}}',
136
- color: 'Cor',
137
- rowColor: 'Cor da linha',
138
- colorByField: 'Colorir por campo',
139
- clear: 'Limpar',
140
- none: 'Nenhum',
141
- hideFields: 'Ocultar campos',
142
- noItems: 'Nenhum item encontrado',
143
- noItemsMessage: 'Não há registros para exibir. Tente ajustar os filtros ou adicionar novos dados.',
228
+ loading: 'Loading records...',
229
+ recordCount: "{{count}} registros",
230
+ recordCountOne: "{{count}} registro",
231
+ addRecord: "Adicionar registro",
232
+ tabs: "Abas",
233
+ allRecords: "Todos os registros",
234
+ search: "Pesquisar",
235
+ filter: "Filtrar",
236
+ filterRecords: "Filtrar registros",
237
+ sort: "Ordenar",
238
+ sortRecords: "Ordenar registros",
239
+ group: "Agrupar",
240
+ groupBy: "Agrupar por",
241
+ export: "Exportar",
242
+ exportAs: "Exportar como {{format}}",
243
+ color: "Cor",
244
+ rowColor: "Cor da linha",
245
+ colorByField: "Colorir por campo",
246
+ clear: "Limpar",
247
+ none: "Nenhum",
248
+ hideFields: "Ocultar campos",
249
+ noItems: "Nenhum item encontrado",
250
+ noItemsMessage: "Não há registros para exibir. Tente ajustar os filtros ou adicionar novos dados.",
251
+ showAll: "Mostrar tudo",
252
+ pullToRefresh: "Puxar para atualizar",
253
+ refreshing: "Atualizando…",
254
+ share: "Compartilhar",
255
+ print: "Imprimir",
256
+ hideFieldsTitle: "Ocultar campos",
257
+ dataLimitReached: "Os primeiros {{limit}} registros estão sendo exibidos. Pode haver mais dados disponíveis.",
258
+ viewSettings: "Configurações de exibição",
259
+ viewSettingsHint: "Agrupamento, cor, densidade e campos visíveis.",
260
+ addGroup: "Adicionar campo de grupo",
261
+ collapsedByDefault: "Recolhido por padrão",
262
+ removeGroup: "Remover",
144
263
  },
145
264
  kanban: {
146
- addCard: 'Adicionar cartão',
147
- addColumn: 'Adicionar coluna',
148
- moveCard: 'Mover cartão',
149
- deleteCard: 'Excluir cartão',
150
- deleteColumn: 'Excluir coluna',
265
+ addCard: "Adicionar cartão",
266
+ addColumn: "Adicionar coluna",
267
+ moveCard: "Mover cartão",
268
+ deleteCard: "Excluir cartão",
269
+ deleteColumn: "Excluir coluna",
270
+ noCards: "Sem cartões",
271
+ cardTitlePlaceholder: "Digite o título do cartão...",
151
272
  },
152
273
  timeline: {
153
274
  bucket: {
154
- overdue: 'Atrasado',
155
- today: 'Hoje',
156
- tomorrow: 'Amanhã',
157
- thisWeek: 'Esta semana',
158
- nextWeek: 'Próxima semana',
159
- later: 'Mais tarde',
160
- noDate: 'Sem data',
161
- unassigned: 'Não atribuído',
275
+ overdue: "Atrasado",
276
+ today: "Hoje",
277
+ tomorrow: "Amanhã",
278
+ thisWeek: "Esta semana",
279
+ nextWeek: "Próxima semana",
280
+ later: "Mais tarde",
281
+ noDate: "Sem data",
282
+ unassigned: "Não atribuído",
162
283
  },
163
284
  },
164
285
  gantt: {
165
286
  column: {
166
- taskName: 'Task Name',
167
- start: 'Start',
168
- end: 'End',
287
+ taskName: "Nome da tarefa",
288
+ start: "Início",
289
+ end: "Fim",
169
290
  },
170
291
  toolbar: {
171
- prevPeriod: 'Previous period',
172
- nextPeriod: 'Next period',
173
- zoomIn: 'Zoom in',
174
- zoomOut: 'Zoom out',
175
- jumpToToday: 'Jump to today',
176
- today: 'Today',
177
- showTaskList: 'Show task list',
178
- hideTaskList: 'Hide task list',
292
+ prevPeriod: "Período anterior",
293
+ nextPeriod: "Próximo período",
294
+ zoomIn: "Ampliar",
295
+ zoomOut: "Reduzir",
296
+ jumpToToday: "Ir para hoje",
297
+ today: "Hoje",
298
+ showTaskList: "Mostrar lista de tarefas",
299
+ hideTaskList: "Ocultar lista de tarefas",
179
300
  },
180
301
  },
181
302
  view: {
182
- rename: 'Renomear',
183
- duplicateView: 'Duplicar visualização',
184
- shareView: 'Compartilhar visualização',
185
- setAsDefault: 'Definir como padrão',
186
- pinView: 'Fixar visualização',
187
- unpinView: 'Desfixar visualização',
188
- changeViewType: 'Alterar tipo de visualização',
189
- deleteView: 'Excluir visualização',
190
- addView: 'Adicionar visualização',
191
- unsavedChanges: 'Alterações não salvas',
192
- saveAsView: 'Salvar como visualização',
193
- moreViews: 'mais {{count}}',
194
- activeFilters: 'Filtros ativos',
195
- activeSort: 'Ordenação ativa',
303
+ editViewConfig: "Editar configuração da vista",
304
+ rename: "Renomear",
305
+ duplicateView: "Duplicar visualização",
306
+ shareView: "Compartilhar visualização",
307
+ setAsDefault: "Definir como padrão",
308
+ pinView: "Fixar visualização",
309
+ unpinView: "Desfixar visualização",
310
+ changeViewType: "Alterar tipo de visualização",
311
+ deleteView: "Excluir visualização",
312
+ addView: "Adicionar visualização",
313
+ unsavedChanges: "Alterações não salvas",
314
+ saveAsView: "Salvar como visualização",
315
+ moreViews: "mais {{count}}",
316
+ activeFilters: "Filtros ativos",
317
+ activeSort: "Ordenação ativa",
318
+ manageViews: "Gerenciar exibições",
319
+ manageAllViews: "Gerenciar todas as exibições…",
320
+ manageViewsDescription: "Reordenar, renomear, fixar ou excluir todas as exibições deste objeto.",
321
+ searchViews: "Pesquisar exibições",
322
+ addNewView: "Adicionar nova exibição",
323
+ done: "Concluído",
324
+ noViewsFound: "Nenhuma exibição corresponde à sua pesquisa.",
325
+ dragToReorder: "Arrastar para reordenar",
326
+ defaultView: "Exibição padrão",
327
+ defaultBadge: "padrão",
328
+ tabActionsFor: "Ações de exibição para {{name}}",
329
+ readonlyAriaLabel: "Exibição somente leitura",
330
+ readonlyTooltip: "Exibição do sistema — duplique para personalizar.",
331
+ },
332
+ designer: {
333
+ undo: 'Undo',
334
+ redo: 'Redo',
196
335
  },
197
336
  detail: {
198
- back: 'Voltar',
199
- edit: 'Editar',
200
- editInline: 'Editar',
201
- save: 'Salvar',
202
- saveChanges: 'Salvar alterações',
203
- editFieldsInline: 'Editar campos',
204
- share: 'Compartilhar',
205
- duplicate: 'Duplicar',
206
- export: 'Exportar',
207
- viewHistory: 'Ver histórico',
208
- delete: 'Excluir',
209
- moreActions: 'Mais ações',
210
- addToFavorites: 'Adicionar aos favoritos',
211
- removeFromFavorites: 'Remover dos favoritos',
212
- previousRecord: 'Registro anterior',
213
- nextRecord: 'Próximo registro',
214
- recordOf: '{{current}} de {{total}}',
215
- recordNotFound: 'Registro não encontrado',
216
- recordNotFoundDescription: 'O registro que você está procurando não existe ou pode ter sido excluído.',
217
- goBack: 'Voltar',
218
- details: 'Detalhes',
219
- related: 'Relacionados',
220
- relatedRecords: '{{count}} registros',
221
- relatedRecordOne: '{{count}} registro',
222
- noRelatedRecords: 'Nenhum registro relacionado encontrado',
223
- loading: 'Carregando...',
224
- copyToClipboard: 'Copiar para área de transferência',
225
- copied: 'Copiado!',
226
- deleteConfirmation: 'Tem certeza de que deseja excluir este registro?',
227
- editRecord: 'Editar registro',
228
- viewAll: 'Ver tudo',
229
- new: 'Novo',
230
- emptyValue: '—',
231
- comments: 'Comentários',
232
- searchComments: 'Pesquisar comentários…',
233
- addCommentPlaceholder: 'Adicionar comentário… (Ctrl+Enter para enviar)',
234
- noMatchingComments: 'Nenhum comentário correspondente',
235
- noCommentsYet: 'Nenhum comentário ainda',
236
- pinned: 'Fixado',
237
- pin: 'Fixar',
238
- unpin: 'Desfixar',
239
- justNow: 'agora mesmo',
240
- minutesAgo: 'há {{count}} min',
241
- hoursAgo: 'há {{count}} h',
242
- daysAgo: 'há {{count}} d',
243
- dropFilesToUpload: 'Arraste arquivos aqui ou clique para enviar',
244
- attachmentCount: '{{count}} anexo',
245
- attachmentCountPlural: '{{count}} anexos',
246
- removeAttachment: 'Remover anexo',
247
- unifiedDiff: 'Visualização unificada',
248
- sideBySideDiff: 'Visualização lado a lado',
249
- noChanges: 'Sem alterações',
250
- previousVersion: 'Anterior',
251
- currentVersion: 'Atual',
252
- discussion: 'Discussão',
253
- showDiscussion: 'Mostrar discussão ({{count}})',
254
- hideDiscussion: 'Ocultar discussão',
255
- bold: 'Negrito (Ctrl+B)',
256
- italic: 'Itálico (Ctrl+I)',
257
- listFormat: 'Lista',
258
- inlineCode: 'Código inline',
259
- mentionSomeone: 'Mencionar alguém',
260
- preview: 'Pré-visualização',
261
- submitComment: 'Enviar (Ctrl+Enter)',
262
- sendComment: 'Enviar',
263
- writeComment: 'Escreva um comentário…',
264
- subscribedTooltip: 'Inscrito — clique para cancelar inscrição',
265
- unsubscribedTooltip: 'Inscrever-se para notificações',
266
- firstRecord: 'Primeiro registro (Home)',
267
- previousRecordKey: 'Registro anterior (←)',
268
- nextRecordKey: 'Próximo registro (→)',
269
- lastRecord: 'Último registro (End)',
270
- noRecords: 'Sem registros',
271
- searchWhileNavigating: 'Pesquisar durante a navegação',
272
- searchRecords: 'Pesquisar registros…',
273
- allActivity: 'Toda atividade',
274
- commentsOnly: 'Apenas comentários',
275
- fieldChangesFilter: 'Alterações de campo',
276
- tasksOnly: 'Apenas tarefas',
277
- leaveCommentPlaceholder: 'Deixar um comentário… (Ctrl+Enter para enviar)',
278
- noActivity: 'Nenhuma atividade registrada',
279
- loadMore: 'Carregar mais',
280
- edited: '(editado)',
281
- via: 'via {{source}}',
282
- replyCount: '{{count}} resposta',
283
- replyCountPlural: '{{count}} respostas',
284
- replyPlaceholder: 'Responder…',
285
- filterActivity: 'Filtrar atividade',
286
- openDiscussion: 'Abrir painel de discussão',
287
- closeDiscussion: 'Fechar painel de discussão',
288
- subscribeAriaLabel: 'Inscrever-se para notificações',
289
- unsubscribeAriaLabel: 'Cancelar inscrição de notificações',
290
- clearSearch: 'Limpar pesquisa',
337
+ back: "Voltar",
338
+ edit: "Editar",
339
+ editInline: "Editar",
340
+ save: "Salvar",
341
+ saveChanges: "Salvar alterações",
342
+ editFieldsInline: "Editar campos",
343
+ share: "Compartilhar",
344
+ duplicate: "Duplicar",
345
+ export: "Exportar",
346
+ viewHistory: "Ver histórico",
347
+ delete: "Excluir",
348
+ moreActions: "Mais ações",
349
+ addToFavorites: "Adicionar aos favoritos",
350
+ removeFromFavorites: "Remover dos favoritos",
351
+ previousRecord: "Registro anterior",
352
+ nextRecord: "Próximo registro",
353
+ recordOf: "{{current}} de {{total}}",
354
+ recordNotFound: "Registro não encontrado",
355
+ recordNotFoundDescription: "O registro que você está procurando não existe ou pode ter sido excluído.",
356
+ goBack: "Voltar",
357
+ details: "Detalhes",
358
+ related: "Relacionados",
359
+ relatedRecords: "{{count}} registros",
360
+ relatedRecordOne: "{{count}} registro",
361
+ noRelatedRecords: "Nenhum registro relacionado encontrado",
362
+ loading: "Carregando...",
363
+ copyToClipboard: "Copiar para área de transferência",
364
+ copied: "Copiado!",
365
+ deleteConfirmation: "Tem certeza de que deseja excluir este registro?",
366
+ editRecord: "Editar registro",
367
+ viewAll: "Ver tudo",
368
+ new: "Novo",
369
+ emptyValue: "—",
370
+ comments: "Comentários",
371
+ searchComments: "Pesquisar comentários…",
372
+ addCommentPlaceholder: "Adicionar comentário… (Ctrl+Enter para enviar)",
373
+ noMatchingComments: "Nenhum comentário correspondente",
374
+ noCommentsYet: "Nenhum comentário ainda",
375
+ pinned: "Fixado",
376
+ pin: "Fixar",
377
+ unpin: "Desfixar",
378
+ justNow: "agora mesmo",
379
+ minutesAgo: "há {{count}} min",
380
+ hoursAgo: "há {{count}} h",
381
+ daysAgo: "há {{count}} d",
382
+ dropFilesToUpload: "Arraste arquivos aqui ou clique para enviar",
383
+ attachmentCount: "{{count}} anexo",
384
+ attachmentCountPlural: "{{count}} anexos",
385
+ removeAttachment: "Remover anexo",
386
+ unifiedDiff: "Visualização unificada",
387
+ sideBySideDiff: "Visualização lado a lado",
388
+ noChanges: "Sem alterações",
389
+ previousVersion: "Anterior",
390
+ currentVersion: "Atual",
391
+ discussion: "Discussão",
392
+ showDiscussion: "Mostrar discussão ({{count}})",
393
+ hideDiscussion: "Ocultar discussão",
394
+ bold: "Negrito (Ctrl+B)",
395
+ italic: "Itálico (Ctrl+I)",
396
+ listFormat: "Lista",
397
+ inlineCode: "Código inline",
398
+ mentionSomeone: "Mencionar alguém",
399
+ preview: "Pré-visualização",
400
+ submitComment: "Enviar (Ctrl+Enter)",
401
+ sendComment: "Enviar",
402
+ writeComment: "Escreva um comentário…",
403
+ subscribedTooltip: "Inscrito — clique para cancelar inscrição",
404
+ unsubscribedTooltip: "Inscrever-se para notificações",
405
+ firstRecord: "Primeiro registro (Home)",
406
+ previousRecordKey: "Registro anterior (←)",
407
+ nextRecordKey: "Próximo registro (→)",
408
+ lastRecord: "Último registro (End)",
409
+ noRecords: "Sem registros",
410
+ searchWhileNavigating: "Pesquisar durante a navegação",
411
+ searchRecords: "Pesquisar registros…",
412
+ allActivity: "Toda atividade",
413
+ commentsOnly: "Apenas comentários",
414
+ fieldChangesFilter: "Alterações de campo",
415
+ tasksOnly: "Apenas tarefas",
416
+ leaveCommentPlaceholder: "Deixar um comentário… (Ctrl+Enter para enviar)",
417
+ noActivity: "Nenhuma atividade registrada",
418
+ loadMore: "Carregar mais",
419
+ edited: "(editado)",
420
+ via: "via {{source}}",
421
+ replyCount: "{{count}} resposta",
422
+ replyCountPlural: "{{count}} respostas",
423
+ replyPlaceholder: "Responder…",
424
+ filterActivity: "Filtrar atividade",
425
+ openDiscussion: "Abrir painel de discussão",
426
+ closeDiscussion: "Fechar painel de discussão",
427
+ subscribeAriaLabel: "Inscrever-se para notificações",
428
+ unsubscribeAriaLabel: "Cancelar inscrição de notificações",
429
+ clearSearch: "Limpar pesquisa",
430
+ saving: "Salvando…",
431
+ lockedByApproval: "Bloqueado para aprovação",
432
+ lockedTooltip: "Este registro tem uma solicitação de aprovação pendente; a edição está bloqueada",
433
+ cancelApproval: "Cancelar aprovação",
434
+ cancelApprovalInFlight: "Cancelando…",
435
+ cancelApprovalTooltip: "Cancelar a solicitação de aprovação pendente para desbloquear o registro",
436
+ cancelApprovalFailed: "Falha ao cancelar aprovação",
437
+ cancelApprovalUnavailable: "O cancelamento de aprovações não é suportado por esta fonte de dados",
438
+ linkCopied: "Link copiado para a área de transferência",
439
+ linkCopyFailed: "Falha ao copiar o link",
440
+ cancel: "Cancelar",
441
+ cancelEdit: "Descartar alterações",
442
+ sectionMoreDetails: "Mais detalhes",
443
+ concurrentUpdateTitle: "Este registro foi modificado por outra pessoa",
444
+ concurrentUpdateDescription: "Outro usuário salvou uma versão mais recente de {{field}} durante sua edição. Escolha como resolver o conflito.",
445
+ concurrentUpdateYourEdit: "Sua edição",
446
+ concurrentUpdateCurrentValue: "Valor atual",
447
+ concurrentUpdateUpdatedBy: "Atualizado por {{name}}",
448
+ concurrentUpdateUpdatedAt: "Atualizado em {{when}}",
449
+ concurrentUpdateReload: "Carregar versão atual",
450
+ concurrentUpdateOverwrite: "Sobrescrever mesmo assim",
451
+ concurrentUpdateCancel: "Cancelar",
452
+ openInNewTab: "Abrir em nova aba",
453
+ activity: "Atividade",
454
+ history: "Histórico",
455
+ editRow: "Editar",
456
+ deleteRow: "Excluir",
457
+ deleteRowConfirmation: "Excluir este registro?",
458
+ deleteRowTitle: "Excluir registro",
459
+ actions: "Ações",
460
+ previousPage: "Anterior",
461
+ nextPage: "Próximo",
462
+ pageOf: "Página {{current}} de {{total}}",
463
+ sortBy: "Ordenar por",
464
+ filterPlaceholder: "Filtrar...",
465
+ highlightFields: "Campos principais",
466
+ createdBy: "Criado por",
467
+ updatedBy: "Atualizado por",
468
+ showEmptyRelated_one: "+ {{count}} vazio",
469
+ showEmptyRelated_other: "+ {{count}} vazios",
470
+ copyEmail: "Copiar e-mail",
471
+ copyPhone: "Copiar telefone",
472
+ copyRecordId: "Copiar ID do registro",
473
+ showEmptyFields: "Mostrar {{count}} campos vazios",
474
+ hideEmptyFields: "Ocultar campos vazios",
475
+ noValue: "Sem valor",
291
476
  },
292
477
  chart: {
293
- noData: 'Nenhum dado de gráfico disponível',
294
- loading: 'Carregando gráfico...',
478
+ noData: "Nenhum dado de gráfico disponível",
479
+ loading: "Carregando gráfico...",
295
480
  },
296
481
  map: {
297
- searchLocations: 'Pesquisar locais…',
298
- locationDetails: 'Detalhes do local',
299
- markersCount: '{{count}} marcadores',
300
- invalidCoordinates: '{{count}} registro com coordenadas ausentes ou inválidas excluído do mapa.',
301
- invalidCoordinatesPlural: '{{count}} registros com coordenadas ausentes ou inválidas excluídos do mapa.',
482
+ searchLocations: "Pesquisar locais…",
483
+ locationDetails: "Detalhes do local",
484
+ markersCount: "{{count}} marcadores",
485
+ invalidCoordinates: "{{count}} registro com coordenadas ausentes ou inválidas excluído do mapa.",
486
+ invalidCoordinatesPlural: "{{count}} registros com coordenadas ausentes ou inválidas excluídos do mapa.",
302
487
  },
303
488
  workflow: {
304
- draft: 'Rascunho',
305
- active: 'Ativo',
306
- paused: 'Pausado',
307
- completed: 'Concluído',
308
- cancelled: 'Cancelado',
309
- save: 'Salvar',
310
- publish: 'Publicar',
311
- addNode: 'Adicionar nó',
312
- workflowFlow: 'Fluxo de trabalho',
313
- properties: 'Propriedades',
314
- connections: 'Conexões',
315
- quickConnect: 'Conexão rápida',
316
- fromPlaceholder: 'De...',
317
- toPlaceholder: 'Para...',
318
- connect: 'Conectar',
319
- label: 'Rótulo',
320
- type: 'Tipo',
321
- description: 'Descrição',
322
- assignee: 'Responsável',
323
- assigneeType: 'Tipo de responsável',
324
- user: 'Usuário',
325
- role: 'Função',
326
- group: 'Grupo',
327
- expression: 'Expressão',
328
- timeoutMinutes: 'Tempo limite (minutos)',
329
- selectNodeToEdit: 'Selecione um nó para editar suas propriedades',
330
- workflowTitle: 'Título do fluxo de trabalho',
331
- newWorkflow: 'Novo fluxo de trabalho',
332
- outConnections: '{{count}} saída(s)',
333
- start: 'Início',
334
- end: 'Fim',
335
- task: 'Tarefa',
336
- userTask: 'Tarefa de usuário',
337
- serviceTask: 'Tarefa de serviço',
338
- scriptTask: 'Tarefa de script',
339
- approval: 'Aprovação',
340
- condition: 'Condição',
341
- parallelGateway: 'Gateway paralelo',
342
- joinGateway: 'Gateway de junção',
343
- boundaryEvent: 'Evento de limite',
344
- delay: 'Atraso',
345
- notification: 'Notificação',
346
- webhook: 'Webhook',
347
- allowConcurrency: 'Permitir (execução simultânea)',
348
- forbidConcurrency: 'Proibir (pular novos)',
349
- replaceConcurrency: 'Substituir (cancelar existentes)',
350
- queueConcurrency: 'Fila (executar após atual)',
351
- conditionEvent: 'Condição',
352
- manualEvent: 'Manual',
353
- webhookEvent: 'Webhook',
354
- timerEvent: 'Temporizador',
355
- signalEvent: 'Sinal',
356
- versionHistory: 'Histórico de versões',
357
- importBpmn: 'Importar BPMN',
358
- exportBpmn: 'Exportar BPMN',
359
- undo: 'Desfazer',
360
- redo: 'Refazer',
361
- resetZoom: 'Redefinir zoom',
489
+ draft: "Rascunho",
490
+ active: "Ativo",
491
+ paused: "Pausado",
492
+ completed: "Concluído",
493
+ cancelled: "Cancelado",
494
+ save: "Salvar",
495
+ publish: "Publicar",
496
+ addNode: "Adicionar nó",
497
+ workflowFlow: "Fluxo de trabalho",
498
+ properties: "Propriedades",
499
+ connections: "Conexões",
500
+ quickConnect: "Conexão rápida",
501
+ fromPlaceholder: "De...",
502
+ toPlaceholder: "Para...",
503
+ connect: "Conectar",
504
+ label: "Rótulo",
505
+ type: "Tipo",
506
+ description: "Descrição",
507
+ assignee: "Responsável",
508
+ assigneeType: "Tipo de responsável",
509
+ user: "Usuário",
510
+ role: "Função",
511
+ group: "Grupo",
512
+ expression: "Expressão",
513
+ timeoutMinutes: "Tempo limite (minutos)",
514
+ selectNodeToEdit: "Selecione um nó para editar suas propriedades",
515
+ workflowTitle: "Título do fluxo de trabalho",
516
+ newWorkflow: "Novo fluxo de trabalho",
517
+ outConnections: "{{count}} saída(s)",
518
+ start: "Início",
519
+ end: "Fim",
520
+ task: "Tarefa",
521
+ userTask: "Tarefa de usuário",
522
+ serviceTask: "Tarefa de serviço",
523
+ scriptTask: "Tarefa de script",
524
+ approval: "Aprovação",
525
+ condition: "Condição",
526
+ parallelGateway: "Gateway paralelo",
527
+ joinGateway: "Gateway de junção",
528
+ boundaryEvent: "Evento de limite",
529
+ delay: "Atraso",
530
+ notification: "Notificação",
531
+ webhook: "Webhook",
532
+ allowConcurrency: "Permitir (execução simultânea)",
533
+ forbidConcurrency: "Proibir (pular novos)",
534
+ replaceConcurrency: "Substituir (cancelar existentes)",
535
+ queueConcurrency: "Fila (executar após atual)",
536
+ conditionEvent: "Condição",
537
+ manualEvent: "Manual",
538
+ webhookEvent: "Webhook",
539
+ timerEvent: "Temporizador",
540
+ signalEvent: "Sinal",
541
+ versionHistory: "Histórico de versões",
542
+ importBpmn: "Importar BPMN",
543
+ exportBpmn: "Exportar BPMN",
544
+ undo: "Desfazer",
545
+ redo: "Refazer",
546
+ resetZoom: "Redefinir zoom",
362
547
  },
363
548
  dashboard: {
364
- addWidget: 'Adicionar widget',
365
- removeWidget: 'Remover widget',
366
- editLayout: 'Editar layout',
367
- saveLayout: 'Salvar layout',
368
- resetLayout: 'Redefinir layout',
549
+ addWidget: "Adicionar widget",
550
+ removeWidget: "Remover widget",
551
+ editLayout: "Editar layout",
552
+ saveLayout: "Salvar layout",
553
+ resetLayout: "Redefinir layout",
554
+ total: "Total",
555
+ noDataAvailable: "Sem dados disponíveis",
556
+ noDataSourceFor: "Sem fonte de dados para",
557
+ trend: {
558
+ vsLastQuarter: "vs. trimestre anterior",
559
+ vsLastMonth: "vs. mês anterior",
560
+ vsLastWeek: "vs. semana anterior",
561
+ vsLastYear: "vs. ano anterior",
562
+ vsYesterday: "vs. ontem",
563
+ vsPreviousPeriod: "vs. período anterior",
564
+ },
369
565
  },
370
566
  configPanel: {
371
- save: 'Salvar',
372
- discard: 'Descartar',
373
- close: 'Fechar',
374
- layout: 'Layout',
375
- columns: 'Colunas',
376
- gap: 'Espaçamento',
377
- rowHeight: 'Altura da linha',
378
- data: 'Dados',
379
- refreshInterval: 'Intervalo de atualização',
380
- appearance: 'Aparência',
381
- title: 'Título',
382
- showDescription: 'Mostrar descrição',
383
- theme: 'Tema',
384
- configuration: 'Configuração',
385
- general: 'Geral',
386
- advanced: 'Avançado',
567
+ save: "Salvar",
568
+ discard: "Descartar",
569
+ close: "Fechar",
570
+ layout: "Layout",
571
+ columns: "Colunas",
572
+ gap: "Espaçamento",
573
+ rowHeight: "Altura da linha",
574
+ data: "Dados",
575
+ refreshInterval: "Intervalo de atualização",
576
+ appearance: "Aparência",
577
+ title: "Título",
578
+ showDescription: "Mostrar descrição",
579
+ theme: "Tema",
580
+ configuration: "Configuração",
581
+ general: "Geral",
582
+ advanced: "Avançado",
387
583
  },
388
584
  appDesigner: {
389
- createApp: 'Create Application',
390
- editApp: 'Edit Application',
391
- basicInfo: 'Basic Info',
392
- objects: 'Objects',
393
- navigation: 'Navigation',
394
- branding: 'Branding',
395
- appName: 'App Name',
396
- appTitle: 'Title',
397
- appDescription: 'Description',
398
- appIcon: 'Icon',
399
- template: 'Template',
400
- layout: 'Layout',
401
- layoutSidebar: 'Sidebar',
402
- layoutHeader: 'Header',
403
- layoutEmpty: 'Empty',
404
- selectObjects: 'Select Objects',
405
- searchObjects: 'Search objects…',
406
- selectAll: 'Select All',
407
- deselectAll: 'Deselect All',
408
- navBuilder: 'Navigation Builder',
409
- addGroup: 'Add Group',
410
- addUrl: 'Add URL',
411
- addSeparator: 'Add Separator',
412
- noNavItems: 'No navigation items yet.',
413
- logoUrl: 'Logo URL',
414
- primaryColor: 'Primary Color',
415
- faviconUrl: 'Favicon URL',
416
- preview: 'Preview',
417
- complete: 'Complete',
418
- snakeCaseHint: 'Must be snake_case (e.g. my_app)',
419
- modeEdit: 'Edit',
420
- modePreview: 'Preview',
421
- modeCode: 'Code',
422
- addWidget: 'Add Widget',
423
- widgetProperties: 'Widget Properties',
424
- dataSource: 'Data Source',
425
- valueField: 'Value Field',
426
- aggregate: 'Aggregate',
427
- colorVariant: 'Color Variant',
428
- addComponent: 'Add Component',
429
- componentProperties: 'Component Properties',
430
- viewType: 'View Type',
431
- fields: 'Fields',
432
- toolbar: 'Toolbar',
433
- showSearch: 'Show Search',
434
- showFilters: 'Show Filters',
435
- showSort: 'Show Sort',
436
- appearance: 'Appearance',
437
- rowHeight: 'Row Height',
438
- stripedRows: 'Striped Rows',
439
- bordered: 'Bordered',
440
- livePreview: 'Live Preview',
441
- stepBasicDesc: 'Nome, título e layout',
442
- stepObjectsDesc: 'Selecionar objetos de negócio',
443
- stepNavigationDesc: 'Construir árvore de navegação',
444
- stepBrandingDesc: 'Logo, cores e favicon',
445
- noObjectsFound: 'Nenhum objeto encontrado.',
446
- noNavItemsHint: 'Sem itens de navegação. Selecione objetos na etapa anterior ou adicione manualmente.',
447
- separator: 'Separador',
448
- separatorLabel: '— Separador —',
449
- newGroup: 'Novo grupo',
450
- newLink: 'Novo link',
451
- saveDraft: 'Salvar rascunho',
452
- cancelConfirmTitle: 'Descartar alterações?',
453
- cancelConfirmMessage: 'Você tem alterações não salvas. Tem certeza de que deseja cancelar?',
454
- confirmDiscard: 'Descartar',
455
- keepEditing: 'Continuar editando',
456
- navNoItems: 'Sem itens de navegação. Clique nos botões acima para adicionar itens.',
457
- navNoPreviewItems: 'Sem itens',
458
- navLivePreview: 'Pré-visualização ao vivo',
459
- navCollapseGroup: 'Recolher grupo',
460
- navExpandGroup: 'Expandir grupo',
461
- navAddChild: 'Adicionar filho',
462
- navMoveUp: 'Mover para cima',
463
- navMoveDown: 'Mover para baixo',
464
- navRemove: 'Remover',
465
- navObjectPage: 'Página de objeto',
466
- navDashboard: 'Painel',
467
- navPage: 'Página',
468
- navReport: 'Relatório',
469
- navGroup: 'Grupo',
470
- navUrl: 'URL',
471
- navSeparator: 'Separador',
472
- navTypeObject: 'Objeto',
473
- navTypeDashboard: 'Painel',
474
- navTypePage: 'Página',
475
- navTypeReport: 'Relatório',
476
- navTypeUrl: 'URL',
477
- navTypeGroup: 'Grupo',
478
- navTypeSeparator: 'Separador',
479
- navTypeAction: 'Ação',
480
- navEditIcon: 'Editar ícone',
481
- navToggleVisible: 'Alternar visibilidade',
482
- navHidden: 'Oculto',
483
- navExportSchema: 'Exportar JSON',
484
- navImportSchema: 'Importar JSON',
485
- navExportSuccess: 'Estrutura de navegação exportada',
486
- navImportSuccess: 'Estrutura de navegação importada',
487
- navImportError: 'JSON de navegação inválido',
488
- navIconPlaceholder: 'Nome do ícone (ex: Users)',
489
- dashboardEditor: 'Editor de painel',
490
- noWidgets: 'Sem widgets. Clique em um botão acima para adicionar.',
491
- widgetLayoutSize: 'Tamanho do layout',
492
- widgetWidth: 'Largura',
493
- widgetHeight: 'Altura',
494
- dashboardPreview: 'Pré-visualização do painel',
495
- noWidgetsPreview: 'Sem widgets para pré-visualizar',
496
- pageCanvasEditor: 'Editor de tela de página',
497
- emptyPage: 'Página vazia. Clique em um botão acima para adicionar um componente.',
498
- pagePreview: 'Pré-visualização da página',
499
- noComponentsPreview: 'Sem componentes para pré-visualizar',
500
- modePage: 'Página',
501
- modeDashboard: 'Painel',
502
- undo: 'Desfazer',
503
- redo: 'Refazer',
504
- brandingEditor: 'Editor de marca',
505
- brandingExport: 'Exportar JSON',
506
- brandingImport: 'Importar JSON',
507
- brandingPreview: 'Pré-visualização',
508
- brandingSampleButton: 'Botão de exemplo',
509
- brandingSampleText: 'É assim que o tema da sua marca vai ficar.',
510
- colorPalette: 'Paleta de cores',
511
- fontFamily: 'Fonte',
512
- fontDefault: 'Padrão (Sistema)',
513
- modeLight: 'Claro',
514
- modeDark: 'Escuro',
515
- mobilePreview: 'Pré-visualização móvel',
585
+ createApp: "Criar aplicativo",
586
+ editApp: "Editar aplicativo",
587
+ basicInfo: "Informações básicas",
588
+ objects: "Objetos",
589
+ navigation: "Navegação",
590
+ branding: "Marca",
591
+ appName: "Nome do app",
592
+ appTitle: "Título",
593
+ appDescription: "Descrição",
594
+ appIcon: "Ícone",
595
+ template: "Modelo",
596
+ layout: "Layout",
597
+ layoutSidebar: "Barra lateral",
598
+ layoutHeader: "Cabeçalho",
599
+ layoutEmpty: "Vazio",
600
+ selectObjects: "Selecionar objetos",
601
+ searchObjects: "Pesquisar objetos…",
602
+ selectAll: "Selecionar todos",
603
+ deselectAll: "Desmarcar todos",
604
+ navBuilder: "Construtor de navegação",
605
+ addGroup: "Adicionar grupo",
606
+ addUrl: "Adicionar URL",
607
+ addSeparator: "Adicionar separador",
608
+ noNavItems: "Nenhum item de navegação ainda.",
609
+ logoUrl: "Logo URL",
610
+ primaryColor: "Cor primária",
611
+ faviconUrl: "Favicon URL",
612
+ preview: "Pré-visualização",
613
+ complete: "Concluir",
614
+ snakeCaseHint: "Must be snake_case (e.g. my_app)",
615
+ modeEdit: "Editar",
616
+ modePreview: "Pré-visualizar",
617
+ modeCode: "Código",
618
+ addWidget: "Adicionar widget",
619
+ widgetProperties: "Propriedades do widget",
620
+ dataSource: "Fonte de dados",
621
+ valueField: "Campo de valor",
622
+ aggregate: "Agregar",
623
+ colorVariant: "Variante de cor",
624
+ addComponent: "Adicionar componente",
625
+ componentProperties: "Propriedades do componente",
626
+ viewType: "Tipo de exibição",
627
+ fields: "Campos",
628
+ toolbar: "Barra de ferramentas",
629
+ showSearch: "Mostrar pesquisa",
630
+ showFilters: "Mostrar filtros",
631
+ showSort: "Mostrar ordenação",
632
+ appearance: "Aparência",
633
+ rowHeight: "Altura da linha",
634
+ stripedRows: "Linhas alternadas",
635
+ bordered: "Com borda",
636
+ livePreview: "Pré-visualização em tempo real",
637
+ stepBasicDesc: "Nome, título e layout",
638
+ stepObjectsDesc: "Selecionar objetos de negócio",
639
+ stepNavigationDesc: "Construir árvore de navegação",
640
+ stepBrandingDesc: "Logo, cores e favicon",
641
+ noObjectsFound: "Nenhum objeto encontrado.",
642
+ noNavItemsHint: "Sem itens de navegação. Selecione objetos na etapa anterior ou adicione manualmente.",
643
+ separator: "Separador",
644
+ separatorLabel: "— Separador —",
645
+ newGroup: "Novo grupo",
646
+ newLink: "Novo link",
647
+ saveDraft: "Salvar rascunho",
648
+ cancelConfirmTitle: "Descartar alterações?",
649
+ cancelConfirmMessage: "Você tem alterações não salvas. Tem certeza de que deseja cancelar?",
650
+ confirmDiscard: "Descartar",
651
+ keepEditing: "Continuar editando",
652
+ navNoItems: "Sem itens de navegação. Clique nos botões acima para adicionar itens.",
653
+ navNoPreviewItems: "Sem itens",
654
+ navLivePreview: "Pré-visualização ao vivo",
655
+ navCollapseGroup: "Recolher grupo",
656
+ navExpandGroup: "Expandir grupo",
657
+ navAddChild: "Adicionar filho",
658
+ navMoveUp: "Mover para cima",
659
+ navMoveDown: "Mover para baixo",
660
+ navRemove: "Remover",
661
+ navObjectPage: "Página de objeto",
662
+ navDashboard: "Painel",
663
+ navPage: "Página",
664
+ navReport: "Relatório",
665
+ navGroup: "Grupo",
666
+ navUrl: "URL",
667
+ navSeparator: "Separador",
668
+ navTypeObject: "Objeto",
669
+ navTypeDashboard: "Painel",
670
+ navTypePage: "Página",
671
+ navTypeReport: "Relatório",
672
+ navTypeUrl: "URL",
673
+ navTypeGroup: "Grupo",
674
+ navTypeSeparator: "Separador",
675
+ navTypeAction: "Ação",
676
+ navEditIcon: "Editar ícone",
677
+ navToggleVisible: "Alternar visibilidade",
678
+ navHidden: "Oculto",
679
+ navExportSchema: "Exportar JSON",
680
+ navImportSchema: "Importar JSON",
681
+ navExportSuccess: "Esquema de navegação exportado",
682
+ navImportSuccess: "Esquema de navegação importado",
683
+ navImportError: "JSON de navegação inválido",
684
+ navIconPlaceholder: "Nome do ícone (ex. Users)",
685
+ dashboardEditor: "Editor de painel",
686
+ noWidgets: "Sem widgets. Clique em um botão acima para adicionar um.",
687
+ widgetLayoutSize: "Tamanho do layout",
688
+ widgetWidth: "Largura",
689
+ widgetHeight: "Altura",
690
+ dashboardPreview: "Pré-visualização do painel",
691
+ noWidgetsPreview: "Sem widgets para pré-visualizar",
692
+ pageCanvasEditor: "Editor de tela de página",
693
+ emptyPage: "Página vazia. Clique em um botão acima para adicionar um componente.",
694
+ pagePreview: "Pré-visualização da página",
695
+ noComponentsPreview: "Sem componentes para pré-visualizar",
696
+ modePage: "Página",
697
+ modeDashboard: "Painel",
698
+ undo: "Desfazer",
699
+ redo: "Refazer",
700
+ brandingEditor: "Editor de marca",
701
+ brandingExport: "Exportar JSON",
702
+ brandingImport: "Importar JSON",
703
+ brandingPreview: "Pré-visualização",
704
+ brandingSampleButton: "Botão de exemplo",
705
+ brandingSampleText: "É assim que seu tema de marca ficará.",
706
+ colorPalette: "Paleta de cores",
707
+ fontFamily: "Família de fontes",
708
+ fontDefault: "Padrão (sistema)",
709
+ modeLight: "Claro",
710
+ modeDark: "Escuro",
711
+ mobilePreview: "Pré-visualização mobile",
516
712
  objectManager: {
517
- title: 'Gerenciador de Objetos',
518
- addObject: 'Novo Objeto',
519
- searchPlaceholder: 'Pesquisar objetos…',
520
- noObjects: 'Nenhum objeto encontrado.',
521
- objectName: 'Nome API',
522
- objectLabel: 'Rótulo',
523
- pluralLabel: 'Rótulo plural',
524
- icon: 'Ícone',
525
- selectIcon: 'Selecionar ícone…',
526
- group: 'Grupo',
527
- noGroup: 'Sem grupo',
528
- sortOrder: 'Ordem',
529
- enabled: 'Habilitado',
530
- relationships: 'Relacionamentos',
531
- systemBadge: 'Sistema',
532
- fieldCount: '{{count}} campos',
533
- ungrouped: 'Sem grupo',
534
- deleteConfirmTitle: 'Excluir objeto?',
535
- deleteConfirmMessage: 'O objeto e todos os seus campos serão excluídos permanentemente. Esta ação não pode ser desfeita.',
713
+ title: "Gerenciador de objetos",
714
+ addObject: "Novo objeto",
715
+ searchPlaceholder: "Pesquisar objetos…",
716
+ noObjects: "Nenhum objeto encontrado.",
717
+ objectName: "Nome da API",
718
+ objectLabel: "Rótulo",
719
+ pluralLabel: "Rótulo plural",
720
+ icon: "Ícone",
721
+ selectIcon: "Selecionar ícone…",
722
+ group: "Grupo",
723
+ noGroup: "Sem grupo",
724
+ sortOrder: "Ordem de classificação",
725
+ enabled: "Habilitado",
726
+ relationships: "Relacionamentos",
727
+ systemBadge: "Sistema",
728
+ fieldCount: "{{count}} campos",
729
+ ungrouped: "Sem grupo",
730
+ deleteConfirmTitle: "Excluir objeto?",
731
+ deleteConfirmMessage: "Isso excluirá permanentemente o objeto e todos os seus campos. Esta ação não pode ser desfeita.",
536
732
  },
537
733
  fieldDesigner: {
538
- title: 'Designer de Campos',
539
- addField: 'Novo Campo',
540
- searchPlaceholder: 'Pesquisar campos…',
541
- allTypes: 'Todos os tipos',
542
- noFields: 'Nenhum campo encontrado.',
543
- fieldName: 'Nome API',
544
- fieldLabel: 'Rótulo',
545
- fieldType: 'Tipo',
546
- fieldGroup: 'Grupo',
547
- description: 'Descrição',
548
- required: 'Obrigatório',
549
- unique: 'Único',
550
- readOnly: 'Somente leitura',
551
- hidden: 'Oculto',
552
- indexed: 'Indexado',
553
- externalId: 'ID Externo',
554
- trackHistory: 'Rastrear histórico',
555
- defaultValue: 'Valor padrão',
556
- placeholder: 'Texto de exemplo',
557
- referenceTo: 'Referência para',
558
- formula: 'Fórmula',
559
- options: 'Opções',
560
- addOption: 'Adicionar opção',
561
- validationRules: 'Regras de validação',
562
- addRule: 'Adicionar regra',
563
- systemBadge: 'Sistema',
564
- ungrouped: 'Geral',
565
- deleteConfirmTitle: 'Excluir campo?',
566
- deleteConfirmMessage: 'O campo será excluído permanentemente. Os dados existentes neste campo serão perdidos.',
734
+ title: "Designer de campos",
735
+ addField: "Novo campo",
736
+ searchPlaceholder: "Pesquisar campos…",
737
+ allTypes: "Todos os tipos",
738
+ noFields: "Nenhum campo encontrado.",
739
+ fieldName: "Nome da API",
740
+ fieldLabel: "Rótulo",
741
+ fieldType: "Tipo",
742
+ fieldGroup: "Grupo",
743
+ description: "Descrição",
744
+ required: "Obrigatório",
745
+ unique: "Único",
746
+ readOnly: "Somente leitura",
747
+ hidden: "Oculto",
748
+ indexed: "Indexado",
749
+ externalId: "ID externo",
750
+ trackHistory: "Rastrear histórico",
751
+ defaultValue: "Valor padrão",
752
+ placeholder: "Espaço reservado",
753
+ referenceTo: "Referência a",
754
+ formula: "Fórmula",
755
+ options: "Opções",
756
+ addOption: "Adicionar opção",
757
+ validationRules: "Regras de validação",
758
+ addRule: "Adicionar regra",
759
+ systemBadge: "Sistema",
760
+ ungrouped: "Geral",
761
+ deleteConfirmTitle: "Excluir campo?",
762
+ deleteConfirmMessage: "O campo será excluído permanentemente. Os dados existentes neste campo serão perdidos.",
763
+ basicSection: "Básico",
764
+ typeSpecificSection: "Configurações de tipo",
765
+ advancedSection: "Avançado",
766
+ typeCategory: {
767
+ text: "Texto",
768
+ number: "Número",
769
+ date: "Data e hora",
770
+ choice: "Escolha",
771
+ relation: "Relação",
772
+ advanced: "Avançado",
773
+ },
567
774
  },
568
775
  },
569
776
  console: {
570
- title: 'Console ObjectStack',
571
- initializing: 'Inicializando aplicação...',
777
+ title: "Console ObjectStack",
778
+ initializing: "Inicializando aplicação...",
572
779
  breadcrumb: {
573
- dashboards: 'Painéis',
574
- pages: 'Páginas',
575
- reports: 'Relatórios',
576
- system: 'Sistema',
780
+ dashboards: "Painéis",
781
+ pages: "Páginas",
782
+ reports: "Relatórios",
783
+ system: "Sistema",
577
784
  },
578
785
  loadingSteps: {
579
- connecting: 'Conectando à fonte de dados',
580
- loadingConfig: 'Carregando configuração',
581
- preparingWorkspace: 'Preparando espaço de trabalho',
786
+ connecting: "Conectando à fonte de dados",
787
+ loadingConfig: "Carregando configuração",
788
+ preparingWorkspace: "Preparando espaço de trabalho",
582
789
  },
583
790
  error: {
584
- connectionFailed: 'Não é possível conectar ao servidor',
585
- serverUnreachable: 'O servidor {{url}} está inacessível.',
586
- checkServer: 'Verifique sua conexão de rede ou se o backend está em execução.',
587
- timeout: 'Tempo limite de conexão esgotado após 10 segundos.',
791
+ connectionFailed: "Não é possível conectar ao servidor",
792
+ serverUnreachable: "O servidor {{url}} está inacessível.",
793
+ checkServer: "Verifique sua conexão de rede ou se o backend está em execução.",
794
+ timeout: "Tempo limite de conexão esgotado após 10 segundos.",
588
795
  },
589
796
  actions: {
590
- retry: 'Tentar novamente',
591
- retrying: 'Tentando novamente…',
797
+ retry: "Tentar novamente",
798
+ retrying: "Tentando novamente…",
592
799
  },
593
800
  shortcuts: {
594
- title: 'Atalhos de teclado',
595
- description: 'Referência rápida de todos os atalhos de teclado disponíveis.',
596
- groups: { general: 'Geral', navigation: 'Navegação', dataViews: 'Visualizações de dados', preferences: 'Preferências' },
597
- openCommandPalette: 'Abrir paleta de comandos',
598
- showShortcuts: 'Mostrar atalhos de teclado',
599
- closeDialog: 'Fechar diálogo / painel',
600
- toggleSidebar: 'Alternar barra lateral',
601
- focusSearch: 'Focar na pesquisa',
602
- createRecord: 'Criar novo registro',
603
- refreshData: 'Atualizar dados',
604
- editRecord: 'Editar registro selecionado',
605
- toggleDarkMode: 'Alternar modo escuro',
801
+ title: "Atalhos de teclado",
802
+ description: "Referência rápida de todos os atalhos de teclado disponíveis.",
803
+ groups: {
804
+ general: "Geral",
805
+ navigation: "Navegação",
806
+ dataViews: "Visualizações de dados",
807
+ preferences: "Preferências",
808
+ },
809
+ openCommandPalette: "Abrir paleta de comandos",
810
+ showShortcuts: "Mostrar atalhos de teclado",
811
+ closeDialog: "Fechar diálogo / painel",
812
+ toggleSidebar: "Alternar barra lateral",
813
+ focusSearch: "Focar na pesquisa",
814
+ createRecord: "Criar novo registro",
815
+ refreshData: "Atualizar dados",
816
+ editRecord: "Editar registro selecionado",
817
+ toggleDarkMode: "Alternar modo escuro",
606
818
  },
607
819
  commandPalette: {
608
- placeholder: 'Digite um comando ou pesquise...',
609
- noResults: 'Nenhum resultado encontrado.',
610
- objects: 'Objetos',
611
- dashboards: 'Painéis',
612
- pages: 'Páginas',
613
- reports: 'Relatórios',
614
- switchApp: 'Trocar aplicativo',
615
- current: 'Atual',
616
- preferences: 'Preferências',
617
- lightTheme: 'Tema claro',
618
- darkTheme: 'Tema escuro',
619
- systemTheme: 'Tema do sistema',
620
- actions: 'Ações',
621
- openFullSearch: 'Abrir página de pesquisa completa',
622
- createApp: 'Criar novo aplicativo',
820
+ placeholder: "Digite um comando ou pesquise...",
821
+ noResults: "Nenhum resultado encontrado.",
822
+ objects: "Objetos",
823
+ dashboards: "Painéis",
824
+ pages: "Páginas",
825
+ reports: "Relatórios",
826
+ switchApp: "Trocar aplicativo",
827
+ current: "Atual",
828
+ preferences: "Preferências",
829
+ lightTheme: "Tema claro",
830
+ darkTheme: "Tema escuro",
831
+ systemTheme: "Tema do sistema",
832
+ actions: "Ações",
833
+ openFullSearch: "Abrir página de pesquisa completa",
834
+ createApp: "Criar novo aplicativo",
835
+ searching: "Pesquisando…",
836
+ records: "Registros",
837
+ recentRecords: "Vistos recentemente",
623
838
  },
624
839
  errors: {
625
- somethingWentWrong: 'Algo deu errado',
626
- unexpectedError: 'Ocorreu um erro inesperado ao renderizar esta visualização.',
627
- tryAgain: 'Tentar novamente',
628
- goHome: 'Ir para início',
629
- errorDetails: 'Detalhes do erro (somente desenvolvimento)',
840
+ somethingWentWrong: "Algo deu errado",
841
+ unexpectedError: "Ocorreu um erro inesperado ao renderizar esta visualização.",
842
+ tryAgain: "Tentar novamente",
843
+ goHome: "Ir para início",
844
+ errorDetails: "Detalhes do erro (somente desenvolvimento)",
630
845
  },
631
846
  theme: {
632
- toggle: 'Alternar tema',
633
- light: 'Claro',
634
- dark: 'Escuro',
635
- system: 'Sistema',
847
+ toggle: "Alternar tema",
848
+ light: "Claro",
849
+ dark: "Escuro",
850
+ system: "Sistema",
636
851
  },
637
852
  objectView: {
638
- objectNotFound: 'Objeto não encontrado',
639
- objectNotFoundDescription: 'O objeto "{{objectName}}" não existe na configuração atual.',
640
- objectNotFoundHint: 'Verifique as configurações de navegação do seu aplicativo ou selecione um objeto diferente na barra lateral.',
641
- allRecords: 'Todos os registros',
642
- exitDesignMode: 'Sair do modo de design',
643
- enterDesignMode: 'Entrar no modo de design',
644
- metadataInspector: 'Inspetor de metadados',
645
- editView: 'Editar visualização',
646
- addView: 'Adicionar visualização',
647
- designTools: 'Ferramentas de design',
648
- new: 'Novo',
649
- configureView: 'Configurar visualização',
650
- closePanel: 'Fechar painel',
651
- page: 'Página',
652
- pageConfigHint: 'Barra de ferramentas, navegação e configurações do shell de visualização',
653
- listConfigHint: 'Renderização de dados, colunas e aparência para este tipo de lista',
654
- general: 'Geral',
655
- generalHint: 'Título, descrição e tipo da visualização',
656
- toolbar: 'Barra de ferramentas',
657
- toolbarHint: 'Pesquisa, filtro, ordenação, agrupamento e alternância de densidade',
658
- toolbarEnabledCount: '{{count}} de {{total}} habilitados',
659
- navigationSection: 'Navegação',
660
- navigationHint: 'Comportamento ao clicar na linha e configurações da visualização detalhada',
661
- records: 'Registros',
662
- recordsHint: 'Modo de seleção, adicionar registro e edição em linha',
663
- exportPrint: 'Exportar e imprimir',
664
- exportPrintHint: 'Formatos de exportação, impressão e exibição da contagem de registros',
665
- showAllFields: 'Mostrar tudo',
666
- hideAllFields: 'Ocultar tudo',
667
- searchFields: 'Pesquisar campos...',
668
- title: 'Título',
669
- description: 'Descrição',
670
- data: 'Dados',
671
- source: 'Fonte',
672
- columns: 'Colunas',
673
- filterBy: 'Filtrar por',
674
- sortBy: 'Ordenar por',
675
- appearance: 'Aparência',
676
- showDescription: 'Mostrar descrição',
677
- viewType: 'Tipo de visualização',
678
- userFilters: 'Filtros do usuário',
679
- enableSearch: 'Habilitar pesquisa',
680
- enableFilter: 'Habilitar filtro',
681
- enableSort: 'Habilitar ordenação',
682
- enableHideFields: 'Ativar ocultar campos',
683
- enableGroup: 'Ativar agrupamento',
684
- enableColor: 'Ativar cor',
685
- enableDensity: 'Ativar densidade',
686
- userActions: 'Ações do usuário',
687
- addRecordViaForm: 'Adicionar registros via formulário',
688
- advanced: 'Avançado',
689
- allowExport: 'Permitir exportação',
690
- recordCount: '{{count}} registros',
691
- noDescription: 'Sem descrição',
692
- none: 'Nenhum',
693
- columnsConfigured: '{{count}} colunas',
694
- save: 'Salvar',
695
- discard: 'Descartar',
696
- createView: 'Criar visualização',
697
- newView: 'Nova visualização',
698
- typeOptions: 'Opções de tipo',
699
- groupByField: 'Campo de agrupamento',
700
- startDateField: 'Campo de data de início',
701
- titleField: 'Campo de título',
702
- latitudeField: 'Campo de latitude',
703
- longitudeField: 'Campo de longitude',
704
- imageField: 'Campo de imagem',
705
- dateField: 'Campo de data',
706
- selectField: 'Selecionar campo...',
707
- gridOptionsHint: 'A visualização de grade usa as colunas configuradas acima.',
708
- groupBy: 'Agrupar por',
709
- prefixField: 'Campo de prefixo',
710
- fields: 'Campos',
711
- fieldsVisible: '{{count}} visíveis',
712
- sortsCount: '{{count}} ordenações',
713
- filtersCount: '{{count}} filtros',
714
- endDateField: 'Campo de data de término',
715
- color: 'Cor',
716
- fieldTextColor: 'Cor do texto do campo',
717
- rowHeight: 'Altura da linha',
718
- wrapHeaders: 'Quebrar cabeçalhos',
719
- showFieldDescriptions: 'Mostrar descrições dos campos',
720
- collapseAllByDefault: 'Recolher tudo por padrão',
721
- striped: 'Linhas listradas',
722
- bordered: 'Células com borda',
723
- inlineEdit: 'Editar registros em linha',
724
- addDeleteRecordsInline: 'Adicionar/excluir registros em linha',
725
- clickIntoRecordDetails: 'Clique para detalhes do registro',
726
- navigationMode: 'Modo de navegação',
727
- navigationWidth: 'Largura de navegação',
728
- navigationWidthHint: 'Disponível para os modos de navegação gaveta, modal e dividido',
729
- openNewTab: 'Abrir em nova aba',
730
- openNewTabHint: 'Disponível para os modos de navegação página e nova janela',
853
+ systemViewReadonly: 'System view defined in code - duplicate to customize.',
854
+ expandToPage: 'Open as full page',
855
+ objectNotFound: "Objeto não encontrado",
856
+ objectNotFoundDescription: "O objeto \"{{objectName}}\" não existe na configuração atual.",
857
+ objectNotFoundHint: "Verifique as configurações de navegação do seu aplicativo ou selecione um objeto diferente na barra lateral.",
858
+ allRecords: "Todos os registros",
859
+ exitDesignMode: "Sair do modo de design",
860
+ enterDesignMode: "Entrar no modo de design",
861
+ metadataInspector: "Inspetor de metadados",
862
+ editView: "Editar visualização",
863
+ addView: "Adicionar visualização",
864
+ designTools: "Ferramentas de design",
865
+ new: "Novo",
866
+ configureView: "Configurar visualização",
867
+ closePanel: "Fechar painel",
868
+ page: "Página",
869
+ pageConfigHint: "Barra de ferramentas, navegação e configurações do shell de visualização",
870
+ listConfigHint: "Renderização de dados, colunas e aparência para este tipo de lista",
871
+ general: "Geral",
872
+ generalHint: "Título, descrição e tipo da visualização",
873
+ toolbar: "Barra de ferramentas",
874
+ toolbarHint: "Pesquisa, filtro, ordenação, agrupamento e alternância de densidade",
875
+ toolbarEnabledCount: "{{count}} de {{total}} habilitados",
876
+ navigationSection: "Navegação",
877
+ navigationHint: "Comportamento ao clicar na linha e configurações da visualização detalhada",
878
+ records: "Registros",
879
+ recordsHint: "Modo de seleção, adicionar registro e edição em linha",
880
+ exportPrint: "Exportar e imprimir",
881
+ exportPrintHint: "Formatos de exportação, impressão e exibição da contagem de registros",
882
+ showAllFields: "Mostrar tudo",
883
+ hideAllFields: "Ocultar tudo",
884
+ searchFields: "Pesquisar campos...",
885
+ title: "Título",
886
+ description: "Descrição",
887
+ data: "Dados",
888
+ source: "Fonte",
889
+ columns: "Colunas",
890
+ filterBy: "Filtrar por",
891
+ sortBy: "Ordenar por",
892
+ appearance: "Aparência",
893
+ showDescription: "Mostrar descrição",
894
+ viewType: "Tipo de visualização",
895
+ userFilters: "Filtros do usuário",
896
+ enableSearch: "Habilitar pesquisa",
897
+ enableFilter: "Habilitar filtro",
898
+ enableSort: "Habilitar ordenação",
899
+ enableHideFields: "Ativar ocultar campos",
900
+ enableGroup: "Ativar agrupamento",
901
+ enableColor: "Ativar cor",
902
+ enableDensity: "Ativar densidade",
903
+ userActions: "Ações do usuário",
904
+ addRecordViaForm: "Adicionar registros via formulário",
905
+ advanced: "Avançado",
906
+ allowExport: "Permitir exportação",
907
+ recordCount: "{{count}} registros",
908
+ noDescription: "Sem descrição",
909
+ none: "Nenhum",
910
+ columnsConfigured: "{{count}} colunas",
911
+ save: "Salvar",
912
+ discard: "Descartar",
913
+ createView: "Criar visualização",
914
+ newView: "Nova visualização",
915
+ typeOptions: "Opções de tipo",
916
+ groupByField: "Campo de agrupamento",
917
+ startDateField: "Campo de data de início",
918
+ titleField: "Campo de título",
919
+ latitudeField: "Campo de latitude",
920
+ longitudeField: "Campo de longitude",
921
+ imageField: "Campo de imagem",
922
+ dateField: "Campo de data",
923
+ selectField: "Selecionar campo...",
924
+ gridOptionsHint: "A visualização de grade usa as colunas configuradas acima.",
925
+ groupBy: "Agrupar por",
926
+ prefixField: "Campo de prefixo",
927
+ fields: "Campos",
928
+ fieldsVisible: "{{count}} visíveis",
929
+ sortsCount: "{{count}} ordenações",
930
+ filtersCount: "{{count}} filtros",
931
+ endDateField: "Campo de data de término",
932
+ color: "Cor",
933
+ fieldTextColor: "Cor do texto do campo",
934
+ rowHeight: "Altura da linha",
935
+ wrapHeaders: "Quebrar cabeçalhos",
936
+ showFieldDescriptions: "Mostrar descrições dos campos",
937
+ collapseAllByDefault: "Recolher tudo por padrão",
938
+ striped: "Linhas listradas",
939
+ bordered: "Células com borda",
940
+ inlineEdit: "Editar registros em linha",
941
+ addDeleteRecordsInline: "Adicionar/excluir registros em linha",
942
+ clickIntoRecordDetails: "Clique para detalhes do registro",
943
+ navigationMode: "Modo de navegação",
944
+ navigationWidth: "Largura de navegação",
945
+ navigationWidthHint: "Disponível para os modos de navegação gaveta, modal e dividido",
946
+ openNewTab: "Abrir em nova aba",
947
+ openNewTabHint: "Disponível para os modos de navegação página e nova janela",
948
+ import: "Importar",
949
+ importTitle: "Importar do CSV",
950
+ importedToast: "{{count}} linha(s) importada(s).",
951
+ importedWithSkipped: "{{ok}} linha(s) importada(s); {{skipped}} pulada(s).",
952
+ showAdvancedSettings: "Mostrar configurações avançadas",
953
+ showFewerSettings: "Mostrar menos configurações",
954
+ createViewDesc: "Escolha um tipo de exibição e dê um nome a ela. Todas as configurações podem ser alteradas depois.",
955
+ cancel: "Cancelar",
956
+ create: "Criar",
957
+ delete: "Excluir",
958
+ deleteViewTitle: "Excluir exibição",
959
+ deleteViewConfirm: "Excluir a exibição \"{{name}}\"? Isso não pode ser desfeito.",
960
+ bulkDeleteConfirm: "Excluir {{count}} registros selecionados? Isso não pode ser desfeito.",
961
+ duplicateViewName: "Já existe uma exibição com esse nome.",
962
+ viewTypeGrid: "Grade",
963
+ viewTypeGridDesc: "Tabela de registros no estilo planilha.",
964
+ viewTypeKanban: "Kanban",
965
+ viewTypeKanbanDesc: "Cartões agrupados em colunas por um campo de seleção única.",
966
+ viewTypeCalendar: "Calendário",
967
+ viewTypeCalendarDesc: "Registros colocados por data em um calendário mensal.",
968
+ viewTypeGallery: "Galeria",
969
+ viewTypeGalleryDesc: "Cartões de imagem grandes de um campo de anexo.",
970
+ viewTypeTimeline: "Linha do tempo",
971
+ viewTypeTimelineDesc: "Registros ao longo de um eixo de tempo horizontal.",
972
+ viewTypeGantt: "Gantt",
973
+ viewTypeGanttDesc: "Barras de projeto com início/fim e dependências.",
974
+ viewTypeMap: "Mapa",
975
+ viewTypeMapDesc: "Marcadores geográficos de campos de latitude/longitude.",
976
+ viewTypeChart: "Gráfico",
977
+ viewTypeChartDesc: "Gráficos de barras/linhas/pizza agregados.",
978
+ groupByFieldHelp: "O quadro Kanban agrupa registros em colunas pelos valores do campo.",
979
+ startDateFieldHelp: "O calendário coloca os registros na célula correspondente a esta data.",
980
+ ganttStartDateFieldHelp: "A borda esquerda de cada barra Gantt usa esta data.",
981
+ ganttEndDateFieldHelp: "A borda direita de cada barra Gantt usa esta data.",
982
+ timelineDateFieldHelp: "Os registros são posicionados na linha do tempo com base nesta data.",
983
+ latitudeFieldHelp: "Campo contendo a latitude (apenas campos geográficos).",
984
+ longitudeFieldHelp: "Campo contendo a longitude (apenas campos geográficos).",
985
+ imageFieldHelp: "A capa da galeria vem deste campo de imagem ou anexo.",
986
+ selectOption: "Selecionar...",
987
+ noEligibleFieldForType: "Nenhum campo elegível desse tipo. Adicione um ao objeto primeiro.",
988
+ viewTypeUnavailable: "Este objeto não tem um campo que sirva como \"{{field}}\".",
989
+ viewTypeUnavailableShort: "Não suportado por este objeto.",
990
+ chartType: "Tipo de gráfico",
991
+ chartTypeHelp: "Determina como os dados são renderizados.",
992
+ chartTypeBar: "Gráfico de barras",
993
+ chartTypeLine: "Gráfico de linhas",
994
+ chartTypePie: "Gráfico de pizza",
995
+ chartTypeArea: "Gráfico de área",
996
+ chartTypeScatter: "Gráfico de dispersão",
997
+ xAxisField: "Campo do eixo X",
998
+ xAxisFieldHelp: "A dimensão categórica ou temporal.",
999
+ yAxisField: "Campo do eixo Y",
1000
+ yAxisFieldHelp: "O campo numérico para agregar.",
1001
+ selectionMode: "Modo de seleção",
1002
+ selectionNone: "Nenhum",
1003
+ selectionSingle: "Individual",
1004
+ selectionMultiple: "Múltiplo",
1005
+ pageSize: "Tamanho da página",
1006
+ pageSizeOptions: "Opções de tamanho de página",
1007
+ exportFormats: "Formatos de exportação",
1008
+ exportMaxRecords: "Máximo de registros",
1009
+ exportIncludeHeaders: "Incluir cabeçalhos",
1010
+ exportFileNamePrefix: "Prefixo do nome do arquivo",
1011
+ searchableFields: "Campos pesquisáveis",
1012
+ filterableFields: "Campos filtráveis",
1013
+ resizableColumns: "Colunas redimensionáveis",
1014
+ densityCompact: "Compacto",
1015
+ densityComfortable: "Normal",
1016
+ densitySpacious: "Espaçoso",
1017
+ densityMode: "Modo de densidade",
1018
+ hiddenFields: "Campos ocultos",
1019
+ rowActions: "Ações de linha",
1020
+ bulkActions: "Ações em massa",
1021
+ sharing: "Compartilhamento",
1022
+ sharingEnabled: "Compartilhamento ativado",
1023
+ sharingVisibility: "Visibilidade",
1024
+ addRecordEnabled: "Adição de registro ativada",
1025
+ addRecordPosition: "Posição",
1026
+ addRecordMode: "Modo",
1027
+ addRecordFormView: "Exibição de formulário",
1028
+ conditionalFormatting: "Formatação condicional",
1029
+ addRule: "Adicionar regra",
1030
+ quickFilters: "Filtros rápidos",
1031
+ addQuickFilter: "Adicionar filtro rápido",
1032
+ ufElements: "Elementos",
1033
+ ufDropdown: "Lista suspensa",
1034
+ ufTabs: "Abas",
1035
+ ufToggle: "Alternar",
1036
+ ufAddField: "+ Adicionar campo de filtro...",
1037
+ ufNoFields: "Sem campos disponíveis",
1038
+ ufAddTab: "+ Adicionar aba",
1039
+ ufTabLabel: "Rótulo",
1040
+ ufShowAllRecords: "Mostrar aba \"Todos os registros\"",
1041
+ ufAllowAddTab: "Permitir adicionar abas",
1042
+ showRecordCount: "Mostrar contagem de registros",
1043
+ allowPrinting: "Permitir impressão",
1044
+ virtualScroll: "Rolagem virtual",
1045
+ emptyStateTitle: "Título do estado vazio",
1046
+ emptyStateMessage: "Mensagem do estado vazio",
1047
+ emptyStateIcon: "Ícone do estado vazio",
1048
+ ariaLabel: "Rótulo ARIA",
1049
+ ariaDescribedBy: "Descrito por ARIA",
1050
+ ariaLive: "ARIA ao vivo",
1051
+ accessibility: "Acessibilidade",
1052
+ viewTabs: "Abas de exibição",
731
1053
  },
732
1054
  localeSwitcher: {
733
- label: 'Idioma',
1055
+ label: "Idioma",
1056
+ },
1057
+ search: "Pesquisar…",
1058
+ nav: {
1059
+ pinItem: "Fixar {{name}}",
1060
+ unpinItem: "Desafixar {{name}}",
1061
+ dragToReorder: "Arrastar para reordenar",
1062
+ favorites: "Favoritos",
734
1063
  },
735
1064
  },
736
1065
  auth: {
737
1066
  login: {
738
- title: 'Entre na sua conta',
739
- description: 'Digite seu e-mail e senha para continuar',
740
- emailLabel: 'E-mail',
741
- emailPlaceholder: 'name@example.com',
742
- passwordLabel: 'Senha',
743
- passwordPlaceholder: 'Digite sua senha',
744
- forgotPasswordText: 'Esqueceu a senha?',
745
- submitButton: 'Entrar',
746
- submittingButton: 'Entrando...',
747
- noAccountText: 'Não tem uma conta?',
748
- signUpText: 'Cadastre-se',
1067
+ title: "Entre na sua conta",
1068
+ description: "Digite seu e-mail e senha para continuar",
1069
+ emailLabel: "E-mail",
1070
+ emailPlaceholder: "name@example.com",
1071
+ passwordLabel: "Senha",
1072
+ passwordPlaceholder: "Digite sua senha",
1073
+ forgotPasswordText: "Esqueceu a senha?",
1074
+ submitButton: "Entrar",
1075
+ submittingButton: "Entrando...",
1076
+ noAccountText: "Não tem uma conta?",
1077
+ signUpText: "Cadastre-se",
1078
+ errors: {
1079
+ invalidCredentials: "E-mail ou senha inválidos. Por favor, tente novamente.",
1080
+ emailNotVerified: "Por favor, verifique seu e-mail antes de fazer login.",
1081
+ },
749
1082
  },
750
1083
  register: {
751
- title: 'Criar uma conta',
752
- description: 'Digite suas informações para começar',
753
- nameLabel: 'Nome',
754
- namePlaceholder: 'João Silva',
755
- emailLabel: 'E-mail',
756
- emailPlaceholder: 'name@example.com',
757
- passwordLabel: 'Senha',
758
- passwordPlaceholder: 'Criar uma senha (mín. 8 caracteres)',
759
- confirmPasswordLabel: 'Confirmar senha',
760
- confirmPasswordPlaceholder: 'Confirme sua senha',
761
- passwordMismatchError: 'As senhas não coincidem',
762
- passwordTooShortError: 'A senha deve ter pelo menos 8 caracteres',
763
- submitButton: 'Criar conta',
764
- submittingButton: 'Criando conta...',
765
- hasAccountText: 'Já tem uma conta?',
766
- signInText: 'Entrar',
1084
+ title: "Criar uma conta",
1085
+ description: "Digite suas informações para começar",
1086
+ nameLabel: "Nome",
1087
+ namePlaceholder: "João Silva",
1088
+ emailLabel: "E-mail",
1089
+ emailPlaceholder: "name@example.com",
1090
+ passwordLabel: "Senha",
1091
+ passwordPlaceholder: "Criar uma senha (mín. 8 caracteres)",
1092
+ confirmPasswordLabel: "Confirmar senha",
1093
+ confirmPasswordPlaceholder: "Confirme sua senha",
1094
+ passwordMismatchError: "As senhas não coincidem",
1095
+ passwordTooShortError: "A senha deve ter pelo menos 8 caracteres",
1096
+ submitButton: "Criar conta",
1097
+ submittingButton: "Criando conta...",
1098
+ hasAccountText: "Já tem uma conta?",
1099
+ signInText: "Entrar",
1100
+ errors: {
1101
+ userExists: "Já existe uma conta com esse e-mail. Tente fazer login.",
1102
+ },
1103
+ verifyInbox: {
1104
+ title: "Verifique sua caixa de entrada",
1105
+ description: "Enviamos um link de verificação para {{email}}. Clique no link para ativar sua conta.",
1106
+ resend: "Reenviar e-mail de verificação",
1107
+ resending: "Enviando…",
1108
+ resent: "E-mail de verificação enviado.",
1109
+ backToSignIn: "Voltar ao login",
1110
+ },
767
1111
  },
768
1112
  forgotPassword: {
769
- title: 'Redefinir sua senha',
770
- description: 'Digite seu endereço de e-mail e enviaremos um link para redefinir sua senha',
771
- emailLabel: 'E-mail',
772
- emailPlaceholder: 'name@example.com',
773
- submitButton: 'Enviar link de redefinição',
774
- submittingButton: 'Enviando...',
775
- successTitle: 'Verifique seu e-mail',
776
- successDescription: 'Enviamos um link para redefinição de senha para {{email}}. Por favor verifique sua caixa de entrada.',
777
- backToSignInText: 'Voltar para o login',
778
- rememberPasswordText: 'Lembra da sua senha?',
779
- signInText: 'Entrar',
1113
+ title: "Redefinir sua senha",
1114
+ description: "Digite seu endereço de e-mail e enviaremos um link para redefinir sua senha",
1115
+ emailLabel: "E-mail",
1116
+ emailPlaceholder: "name@example.com",
1117
+ submitButton: "Enviar link de redefinição",
1118
+ submittingButton: "Enviando...",
1119
+ successTitle: "Verifique seu e-mail",
1120
+ successDescription: "Enviamos um link para redefinição de senha para {{email}}. Por favor verifique sua caixa de entrada.",
1121
+ backToSignInText: "Voltar para o login",
1122
+ rememberPasswordText: "Lembra da sua senha?",
1123
+ signInText: "Entrar",
1124
+ },
1125
+ resetPassword: {
1126
+ title: "Definir nova senha",
1127
+ description: "Escolha uma senha que você não usou antes.",
1128
+ newPassword: "Nova senha",
1129
+ confirmPassword: "Confirmar senha",
1130
+ submit: "Atualizar senha",
1131
+ submitting: "Atualizando…",
1132
+ success: "Senha atualizada",
1133
+ failed: "Falha na redefinição",
1134
+ invalidToken: "Este link de redefinição é inválido ou expirou.",
1135
+ missingToken: "O link de redefinição está ausente ou expirou",
1136
+ passwordsMismatch: "As senhas não coincidem",
1137
+ requestNewLink: "Solicitar novo link",
1138
+ },
1139
+ verifyEmail: {
1140
+ title: "Verificar endereço de e-mail",
1141
+ description: "Enviamos um link de verificação para seu endereço de e-mail. Clique no link para verificar sua conta.",
1142
+ sentTo: "Enviado para:",
1143
+ verifyingTitle: "Verificando…",
1144
+ verifyingDescription: "Estamos verificando seu e-mail. Por favor, aguarde.",
1145
+ successTitle: "E-mail verificado",
1146
+ successDescription: "Seu e-mail foi verificado. Você pode fazer login agora.",
1147
+ errorTitle: "Falha na verificação",
1148
+ errorDescription: "A verificação falhou. Por favor, solicite um novo link.",
1149
+ missingToken: "Falta um token no link de verificação.",
1150
+ emailMissing: "Endereço de e-mail ausente",
1151
+ resendButton: "Reenviar e-mail de verificação",
1152
+ resending: "Enviando…",
1153
+ resent: "E-mail enviado! Verifique sua caixa de entrada",
1154
+ resentSuccess: "E-mail de verificação enviado!",
1155
+ resentDescription: "Por favor, verifique sua caixa de entrada e clique no link de verificação.",
1156
+ resendFailed: "Não é possível reenviar o e-mail de verificação",
1157
+ signInLink: "Ir para o login",
1158
+ backToSignIn: "Voltar ao login",
1159
+ backToLogin: "Voltar ao login",
1160
+ checkSpam: "Não recebeu o e-mail? Verifique sua pasta de spam ou entre em contato com o suporte.",
1161
+ or: "Ou",
1162
+ },
1163
+ setup: {
1164
+ welcomeTitle: "Bem-vindo ao ObjectStack",
1165
+ description: "Crie a primeira conta de proprietário para concluir a configuração.",
1166
+ yourName: "Seu nome",
1167
+ orgName: "Nome da organização",
1168
+ orgNamePlaceholder: "Empresa Exemplo Ltda.",
1169
+ emailLabel: "E-mail",
1170
+ emailPlaceholder: "nome@exemplo.com.br",
1171
+ passwordLabel: "Senha",
1172
+ passwordHint: "Pelo menos 8 caracteres",
1173
+ submit: "Criar conta de proprietário",
1174
+ submitting: "Configurando…",
1175
+ failed: "Falha na configuração",
1176
+ },
1177
+ device: {
1178
+ title: "Autorizar novo dispositivo",
1179
+ subtitle: "Aprove este dispositivo para fazer login como {{email}}.",
1180
+ userCodeLabel: "Código do dispositivo",
1181
+ requesterLabel: "Solicitação de conexão de",
1182
+ approveWarning: "Aprove somente se você mesmo iniciou esta conexão há instantes. Depois de aprovada, este runtime poderá acessar os pacotes privados da sua organização.",
1183
+ loggedInAs: "Conectado como {{email}}",
1184
+ approve: "Aprovar dispositivo",
1185
+ approving: "Aprovando…",
1186
+ approvedTitle: "Dispositivo autorizado",
1187
+ approvedDescription: "Você pode voltar ao dispositivo — ele deve fazer login em breve.",
1188
+ approveSuccess: "Dispositivo autorizado",
1189
+ approveSuccessDescription: "Você pode fechar esta janela.",
1190
+ approveFailed: "Falha na aprovação",
1191
+ deny: "Negar solicitação",
1192
+ denying: "Negando…",
1193
+ deniedTitle: "Acesso negado",
1194
+ deniedDescription: "O acesso não será concedido ao dispositivo.",
1195
+ denyFailed: "Não foi possível negar a solicitação",
1196
+ invalidTitle: "Link de dispositivo inválido",
1197
+ invalidDescription: "Nenhum código de dispositivo foi fornecido na URL.",
1198
+ loading: "Carregando…",
1199
+ cancel: "Cancelar",
1200
+ },
1201
+ shell: {
1202
+ tenantHostHint: "Você está fazendo login neste espaço de trabalho",
780
1203
  },
781
1204
  },
782
1205
  errors: {
783
- networkError: 'Erro de rede. Por favor, verifique sua conexão.',
784
- serverError: 'Erro no servidor. Por favor, tente novamente mais tarde.',
785
- notFound: 'Recurso não encontrado.',
786
- unauthorized: 'Você não tem permissão para realizar esta ação.',
787
- forbidden: 'Acesso negado.',
788
- timeout: 'Tempo limite excedido. Por favor, tente novamente.',
789
- unknown: 'Ocorreu um erro inesperado.',
1206
+ networkError: "Erro de rede. Por favor, verifique sua conexão.",
1207
+ serverError: "Erro no servidor. Por favor, tente novamente mais tarde.",
1208
+ notFound: "Recurso não encontrado.",
1209
+ unauthorized: "Você não tem permissão para realizar esta ação.",
1210
+ forbidden: "Acesso negado.",
1211
+ timeout: "Tempo limite excedido. Por favor, tente novamente.",
1212
+ unknown: "Ocorreu um erro inesperado.",
790
1213
  },
791
1214
  workspace: {
792
- label: 'Espaços de trabalho',
793
- default: 'Meu espaço de trabalho',
794
- switch: 'Trocar de espaço de trabalho',
795
- create: 'Criar espaço de trabalho',
796
- createTitle: 'Criar um espaço de trabalho',
797
- createDescription: 'Um espaço de trabalho é um espaço compartilhado para colaboração da equipe.',
798
- createButton: 'Criar espaço de trabalho',
799
- nameLabel: 'Nome do espaço de trabalho',
800
- namePlaceholder: 'p.ex., Acme Inc',
801
- slugLabel: 'Slug de URL',
802
- slugHint: 'Usado em URLs. Apenas letras minúsculas, números e hifens.',
803
- invite: 'Convidar membro',
804
- members: 'Membros',
805
- settings: 'Configurações do espaço de trabalho',
1215
+ label: "Espaços de trabalho",
1216
+ default: "Meu espaço de trabalho",
1217
+ switch: "Trocar de espaço de trabalho",
1218
+ create: "Criar espaço de trabalho",
1219
+ createTitle: "Criar um espaço de trabalho",
1220
+ createDescription: "Um espaço de trabalho é um espaço compartilhado para colaboração da equipe.",
1221
+ createButton: "Criar espaço de trabalho",
1222
+ nameLabel: "Nome do espaço de trabalho",
1223
+ namePlaceholder: "p.ex., Acme Inc",
1224
+ slugLabel: "Slug de URL",
1225
+ slugHint: "Usado em URLs. Apenas letras minúsculas, números e hifens.",
1226
+ invite: "Convidar membro",
1227
+ members: "Membros",
1228
+ settings: "Configurações do espaço de trabalho",
1229
+ },
1230
+ help: {
1231
+ appDocs: 'Documentação deste app',
1232
+ allDocs: 'Toda a documentação',
1233
+ onlineDocs: 'Documentação online',
806
1234
  },
807
1235
  sidebar: {
808
- settings: 'Configurações',
809
- help: 'Ajuda',
810
- helpTooltip: 'Ajuda e documentação',
811
- activityFeed: 'Feed de atividades',
1236
+ settings: "Configurações",
1237
+ help: "Ajuda",
1238
+ helpTooltip: "Ajuda e documentação",
1239
+ activityFeed: "Feed de atividades",
1240
+ notifications: "Notificações",
1241
+ approvals: "Aprovações",
1242
+ inbox: "Caixa de entrada",
1243
+ inboxAriaLabel: "Abrir caixa de entrada",
1244
+ area: "Área",
1245
+ scope: "Escopo",
1246
+ recent: "Recente",
1247
+ favorites: "Favoritos",
1248
+ starred: "Favoritos",
1249
+ removeFromFavorites: "Remover {{name}} dos favoritos",
1250
+ },
1251
+ topbar: {
1252
+ aiAssistant: "Assistente de IA",
812
1253
  },
813
1254
  home: {
814
- title: 'Início',
815
- subtitle: 'Painel do seu espaço de trabalho',
816
- nav: 'Início',
817
- allApps: 'Todas as aplicações',
818
- loading: 'Carregando espaço de trabalho...',
819
- recent: 'Recentes',
820
- starred: 'Favoritos',
821
- welcome: 'Bem-vindo ao ObjectUI',
822
- welcomeDescription: 'Comece criando sua primeira aplicação ou configurando as preferências do sistema.',
823
- createFirstApp: 'Crie sua primeira app',
824
- systemSettings: 'Configurações do sistema',
825
- browseMarketplace: 'Explorar marketplace de apps',
1255
+ title: "Início",
1256
+ subtitle: "Painel do seu espaço de trabalho",
1257
+ nav: "Início",
1258
+ allApps: "Todas as aplicações",
1259
+ loading: "Carregando espaço de trabalho...",
1260
+ recent: "Recentes",
1261
+ starred: "Favoritos",
1262
+ welcome: "Bem-vindo ao ObjectUI",
1263
+ welcomeDescription: "Comece criando sua primeira aplicação ou configurando as preferências do sistema.",
1264
+ createFirstApp: "Crie sua primeira app",
1265
+ systemSettings: "Configurações do sistema",
1266
+ browseMarketplace: "Explorar marketplace de apps",
826
1267
  quickActions: {
827
- title: 'Ações rápidas',
828
- createApp: 'Criar app',
829
- createAppDesc: 'Comece com uma nova aplicação',
830
- manageObjects: 'Gerenciar objetos',
831
- manageObjectsDesc: 'Configure modelos de dados',
832
- systemSettings: 'Configurações do sistema',
833
- systemSettingsDesc: 'Configure seu espaço de trabalho',
1268
+ title: "Ações rápidas",
1269
+ createApp: "Criar app",
1270
+ createAppDesc: "Comece com uma nova aplicação",
1271
+ manageObjects: "Gerenciar objetos",
1272
+ manageObjectsDesc: "Configure modelos de dados",
1273
+ systemSettings: "Configurações do sistema",
1274
+ systemSettingsDesc: "Configure seu espaço de trabalho",
834
1275
  },
835
1276
  appCard: {
836
- noDescription: 'Sem descrição',
837
- default: 'Padrão',
1277
+ noDescription: "Sem descrição",
1278
+ default: "Padrão",
1279
+ },
1280
+ greetingMorning: "Bom dia",
1281
+ greetingAfternoon: "Boa tarde",
1282
+ greetingEvening: "Boa noite",
1283
+ greetingNight: "Turno da noite",
1284
+ heroTagline: "Continue de onde parou ou descubra algo novo.",
1285
+ open: "Abrir",
1286
+ stats: {
1287
+ apps: "Aplicativos",
1288
+ starred: "Favoritos",
1289
+ recent: "Recentes",
1290
+ },
1291
+ recentApps: {
1292
+ title: "Abertos recentemente",
1293
+ itemType: {
1294
+ object: "Objeto",
1295
+ dashboard: "Painel",
1296
+ page: "Página",
1297
+ record: "Registro",
1298
+ },
1299
+ },
1300
+ starredApps: {
1301
+ title: "Favoritos",
1302
+ },
1303
+ gettingStarted: {
1304
+ title: "Personalizar início",
1305
+ description: "Marque um aplicativo como favorito para fixá-lo aqui e acessá-lo com um clique. Tudo que você abrir aparecerá automaticamente em \"Abertos recentemente\".",
1306
+ cta: "Explorar todos os aplicativos",
838
1307
  },
839
1308
  },
840
1309
  layout: {
841
1310
  appSwitcher: {
842
- home: 'Home',
843
- addApp: 'Add App',
844
- editApp: 'Edit App',
845
- manageAllApps: 'Manage All Apps',
846
- systemConsole: 'System Console',
847
- noAppsConfigured: 'No apps configured',
1311
+ home: "Início",
1312
+ addApp: "Adicionar aplicativo",
1313
+ editApp: "Editar aplicativo",
1314
+ manageAllApps: "Gerenciar todos os aplicativos",
1315
+ systemConsole: "Console do sistema",
1316
+ noAppsConfigured: "Nenhum aplicativo configurado",
848
1317
  },
849
1318
  activityFeed: {
850
- title: 'Recent Activity',
851
- filter: 'Filter',
852
- empty: 'No recent activity',
853
- ariaLabel: 'Activity feed',
854
- typeCreate: 'Create',
855
- typeUpdate: 'Update',
856
- typeDelete: 'Delete',
857
- typeComment: 'Comment',
858
- relativeJustNow: 'just now',
859
- relativeSecondsAgo: '{{count}}s ago',
860
- relativeMinutesAgo: '{{count}}m ago',
861
- relativeHoursAgo: '{{count}}h ago',
862
- relativeDaysAgo: '{{count}}d ago',
1319
+ title: "Atividade recente",
1320
+ filter: "Filtrar",
1321
+ empty: "Sem atividade recente",
1322
+ ariaLabel: "Feed de atividade",
1323
+ typeCreate: "Criar",
1324
+ typeUpdate: "Atualizar",
1325
+ typeDelete: "Excluir",
1326
+ typeComment: "Comentário",
1327
+ relativeJustNow: "agora mesmo",
1328
+ relativeSecondsAgo: "há {{count}}s",
1329
+ relativeMinutesAgo: "há {{count}}m",
1330
+ relativeHoursAgo: "há {{count}}h",
1331
+ relativeDaysAgo: "há {{count}}d",
1332
+ viewAll: "Ver toda a atividade",
863
1333
  },
864
1334
  metadata: {
865
- label: 'Metadata',
866
- toggleTitle: 'Toggle Metadata Inspector',
867
- panelTitle: 'Metadata Inspector',
868
- jsonBadge: 'JSON',
869
- copyJson: 'Copy JSON',
1335
+ label: "Metadados",
1336
+ toggleTitle: "Alternar inspetor de metadados",
1337
+ panelTitle: "Inspetor de metadados",
1338
+ jsonBadge: "JSON",
1339
+ copyJson: "Copiar JSON",
870
1340
  },
871
1341
  },
872
1342
  search: {
873
- title: 'Search',
874
- back: 'Back',
875
- placeholder: 'Search objects, dashboards, pages, reports...',
876
- inputAriaLabel: 'Search objects, dashboards, pages, reports',
877
- resultsCount: '{{count}} result for "{{query}}"',
878
- resultsCountPlural: '{{count}} results for "{{query}}"',
879
- itemsAvailable: '{{count}} items available',
880
- noResults: 'No results found',
881
- noResultsHint: 'Try adjusting your search terms',
882
- typeObjects: 'Objects',
883
- typeDashboards: 'Dashboards',
884
- typePages: 'Pages',
885
- typeReports: 'Reports',
886
- badgeObject: 'object',
887
- badgeDashboard: 'dashboard',
888
- badgePage: 'page',
889
- badgeReport: 'report',
1343
+ title: "Pesquisar",
1344
+ back: "Voltar",
1345
+ placeholder: "Pesquisar objetos, painéis, páginas, relatórios...",
1346
+ inputAriaLabel: "Pesquisar objetos, painéis, páginas, relatórios",
1347
+ resultsCount: "{{count}} resultado para \"{{query}}\"",
1348
+ resultsCountPlural: "{{count}} resultados para \"{{query}}\"",
1349
+ itemsAvailable: "{{count}} itens disponíveis",
1350
+ noResults: "Nenhum resultado encontrado",
1351
+ noResultsHint: "Tente ajustar seus termos de pesquisa",
1352
+ typeObjects: "Objetos",
1353
+ typeDashboards: "Painéis",
1354
+ typePages: "Páginas",
1355
+ typeReports: "Relatórios",
1356
+ badgeObject: "Objeto",
1357
+ badgeDashboard: "Painel",
1358
+ badgePage: "Página",
1359
+ badgeReport: "Relatório",
890
1360
  },
891
1361
  empty: {
892
- objectNotFound: 'Object Not Found',
893
- objectNotFoundDescription: 'Object "{{name}}" definition missing. Check your configuration or navigate back to select a valid object.',
894
- pageNotFound: 'Page Not Found',
895
- pageNotFoundDescription: 'The page "{{name}}" could not be found. It may have been removed or renamed.',
896
- dashboardNotFound: 'Dashboard Not Found',
897
- dashboardNotFoundDescription: 'The dashboard "{{name}}" could not be found. It may have been removed or renamed.',
898
- reportNotFound: 'Report Not Found',
899
- reportNotFoundDescription: 'The report "{{name}}" could not be found. It may have been removed or renamed.',
900
- noAppsConfigured: 'No Apps Configured',
901
- noAppsConfiguredDescription: 'No applications have been registered. Create your first app or visit System Settings to configure your environment.',
902
- createFirstApp: 'Create Your First App',
903
- systemSettings: 'System Settings',
904
- back: 'Back',
1362
+ objectNotFound: "Objeto não encontrado",
1363
+ objectNotFoundDescription: "A definição do objeto \"{{name}}\" está ausente. Verifique sua configuração ou navegue de volta.",
1364
+ pageNotFound: "Página não encontrada",
1365
+ pageNotFoundDescription: "A página \"{{name}}\" não foi encontrada. Ela pode ter sido removida ou renomeada.",
1366
+ dashboardNotFound: "Painel não encontrado",
1367
+ dashboardNotFoundDescription: "O painel \"{{name}}\" não foi encontrado. Ele pode ter sido removido ou renomeado.",
1368
+ reportNotFound: "Relatório não encontrado",
1369
+ reportNotFoundDescription: "O relatório \"{{name}}\" não foi encontrado. Ele pode ter sido removido ou renomeado.",
1370
+ noAppsConfigured: "Nenhum aplicativo configurado",
1371
+ noAppsConfiguredDescription: "Nenhum aplicativo está registrado. Crie seu primeiro aplicativo ou visite as configurações do sistema.",
1372
+ createFirstApp: "Criar primeiro aplicativo",
1373
+ systemSettings: "Configurações do sistema",
1374
+ back: "Voltar",
1375
+ recordNotFound: "Registro não encontrado",
1376
+ recordNotFoundDescription: "O registro que você está procurando não existe ou pode ter sido excluído.",
905
1377
  },
906
1378
  renderer: {
907
- noPageSchema: 'No page schema provided',
908
- noFormSchema: 'No form schema provided',
909
- noDashboardSchema: 'No dashboard schema provided',
910
- pageRendering: 'Page rendering: {{name}}',
911
- dashboardRendering: 'Dashboard rendering: {{name}}',
912
- formRenderingMode: 'Form rendering in {{mode}} mode',
913
- formRenderingFor: 'for record {{id}}',
914
- createRecord: 'Create Record',
915
- editRecord: 'Edit Record',
916
- page: 'Page',
917
- dashboard: 'Dashboard',
918
- save: 'Save',
919
- cancel: 'Cancel',
1379
+ noPageSchema: "Nenhum esquema de página fornecido",
1380
+ noFormSchema: "Nenhum esquema de formulário fornecido",
1381
+ noDashboardSchema: "Nenhum esquema de painel fornecido",
1382
+ pageRendering: "Renderizando página: {{name}}",
1383
+ dashboardRendering: "Renderizando painel: {{name}}",
1384
+ formRenderingMode: "Formulário renderizado no modo {{mode}}",
1385
+ formRenderingFor: "para registro {{id}}",
1386
+ createRecord: "Criar registro",
1387
+ editRecord: "Editar registro",
1388
+ page: "Página",
1389
+ dashboard: "Painel",
1390
+ save: "Salvar",
1391
+ cancel: "Cancelar",
920
1392
  },
921
1393
  actionDialog: {
922
- title: 'Action Parameters',
923
- description: 'Please provide the required information to continue.',
924
- selectPlaceholder: 'Select {{label}}',
925
- requiredError: '{{label}} is required',
926
- cancel: 'Cancel',
927
- confirm: 'Confirm',
928
- defaultActionTitle: 'Action',
929
- ok: 'OK',
1394
+ title: "Parâmetros de ação",
1395
+ description: "Insira as informações necessárias para continuar.",
1396
+ selectPlaceholder: "Selecionar {{label}}",
1397
+ requiredError: "{{label}} é obrigatório",
1398
+ cancel: "Cancelar",
1399
+ confirm: "Confirmar",
1400
+ defaultActionTitle: "Ação",
1401
+ ok: "OK",
1402
+ lookupPlaceholder: "Colar ID do registro (UUID) para {{label}}",
1403
+ lookupHelpText: "Insira o ID do registro do objeto referenciado. Um seletor será adicionado em breve.",
1404
+ },
1405
+ actionConfirm: {
1406
+ title: "Confirmar ação",
1407
+ confirm: "Continuar",
1408
+ cancel: "Cancelar",
930
1409
  },
931
1410
  rowAction: {
932
- openMenu: 'Open menu',
933
- edit: 'Edit',
934
- delete: 'Delete',
1411
+ openMenu: "Abrir menu",
1412
+ edit: "Editar",
1413
+ delete: "Excluir",
935
1414
  },
936
1415
  navigationSync: {
937
- addedPage: 'Navigation updated: added page "{{name}}"',
938
- addedDashboard: 'Navigation updated: added dashboard "{{name}}"',
939
- removedPage: 'Navigation updated: removed page "{{name}}"',
940
- removedDashboard: 'Navigation updated: removed dashboard "{{name}}"',
941
- renamedPage: 'Navigation updated: renamed page "{{oldName}}" → "{{newName}}"',
942
- renamedDashboard: 'Navigation updated: renamed dashboard "{{oldName}}" → "{{newName}}"',
943
- undoLabel: 'Undo',
944
- undone: 'Navigation change undone',
945
- undoFailed: 'Failed to undo navigation change',
946
- updateFailed: 'Failed to update navigation',
1416
+ addedPage: "Navegação atualizada: página \"{{name}}\" adicionada",
1417
+ addedDashboard: "Navegação atualizada: painel \"{{name}}\" adicionado",
1418
+ removedPage: "Navegação atualizada: página \"{{name}}\" removida",
1419
+ removedDashboard: "Navegação atualizada: painel \"{{name}}\" removido",
1420
+ renamedPage: "Navegação atualizada: página \"{{oldName}}\" renomeada para \"{{newName}}\"",
1421
+ renamedDashboard: "Navegação atualizada: painel \"{{oldName}}\" renomeado para \"{{newName}}\"",
1422
+ undoLabel: "Desfazer",
1423
+ undone: "Alteração de navegação desfeita",
1424
+ undoFailed: "Não foi possível desfazer a alteração de navegação",
1425
+ updateFailed: "Não foi possível atualizar a navegação",
947
1426
  },
948
1427
  objectActions: {
949
- deleteSuccess: '{{label}} deleted successfully',
950
- deleteFailed: 'Failed to delete {{label}}',
951
- noRecordId: 'No record ID provided',
952
- deleteConfirm: 'Are you sure you want to delete this record?',
1428
+ deleteSuccess: "{{label}} excluído com sucesso",
1429
+ deleteFailed: "Não foi possível excluir {{label}}",
1430
+ noRecordId: "Nenhum ID de registro fornecido",
1431
+ deleteConfirm: "Excluir este registro?",
1432
+ bulkDeleteSuccess: "{{count}} registros de {{label}} excluídos",
1433
+ bulkDeletePartial: "{{succeeded}} excluídos, {{failed}} com falha",
953
1434
  },
954
1435
  objectViewActions: {
955
- renameFailed: 'Failed to rename view',
956
- deleteFailed: 'Failed to delete view',
1436
+ renameFailed: "Não foi possível renomear a exibição",
1437
+ deleteFailed: "Não foi possível excluir a exibição",
957
1438
  },
958
1439
  dashboardActions: {
959
- pdfPreparing: 'Preparing PDF export…',
960
- exportFailed: 'Export failed: {{message}}',
961
- forecastSoon: 'Forecast view coming soon',
1440
+ pdfPreparing: "Preparando exportação PDF…",
1441
+ exportFailed: "Falha na exportação: {{message}}",
1442
+ forecastSoon: "A exibição de previsão está chegando em breve",
962
1443
  },
963
1444
  recordDetail: {
964
- viewersTooltip: 'Users viewing this record',
1445
+ viewersTooltip: "Usuários visualizando este registro agora",
965
1446
  },
966
1447
  cellRender: {
967
- empty: 'Empty',
968
- yes: 'Yes',
969
- no: 'No',
970
- systemFields: 'System',
1448
+ empty: "Vazio",
1449
+ yes: "Sim",
1450
+ no: "Não",
1451
+ systemFields: "Sistema",
971
1452
  },
972
1453
  user: {
973
- profile: 'Profile',
974
- settings: 'Settings',
975
- logout: 'Log out',
1454
+ profile: "Perfil",
1455
+ settings: "Configurações",
1456
+ logout: "Sair",
1457
+ preferences: "Preferências",
1458
+ theme: "Tema",
1459
+ language: "Idioma",
976
1460
  },
977
1461
  report: {
978
- rowTotal: 'Row Total',
979
- columnTotal: 'Column Total',
980
- grandTotal: 'Grand Total',
981
- totals: 'Totals',
982
- rowsLabel: 'Row',
983
- columnsLabel: 'Column',
984
- allLabel: '(All)',
985
- emptyLabel: '(Empty)',
986
- loading: 'Loading…',
987
- failedToLoad: 'Failed to load matrix: {{message}}',
988
- needsAcross: 'Matrix report requires at least one `groupingsAcross` field.',
1462
+ total: "Total",
1463
+ rowTotal: "Total da linha",
1464
+ columnTotal: "Total da coluna",
1465
+ grandTotal: "Total geral",
1466
+ totals: "Totais",
1467
+ rowsLabel: "Linha",
1468
+ columnsLabel: "Coluna",
1469
+ allLabel: "(Tudo)",
1470
+ emptyLabel: "(Vazio)",
1471
+ loading: "Carregando…",
1472
+ failedToLoad: "Falha ao carregar a matriz: {{message}}",
1473
+ needsAcross: "O relatório de matriz requer pelo menos um campo `groupingsAcross`.",
989
1474
  aggregate: {
990
- count: 'Count',
991
- countDistinct: 'Distinct Count',
992
- sum: 'Sum',
993
- avg: 'Average',
994
- min: 'Min',
995
- max: 'Max',
996
- first: 'First',
1475
+ count: "Contar",
1476
+ countDistinct: "Contar distintos",
1477
+ sum: "Soma",
1478
+ avg: "Média",
1479
+ min: "Mínimo",
1480
+ max: "Máximo",
1481
+ first: "Primeiro",
997
1482
  },
998
1483
  editor: {
999
- breadcrumb: 'Configuração',
1000
- basic: 'Geral',
1001
- title: 'Título',
1002
- titlePlaceholder: 'ex.: Pipeline por trimestre',
1003
- description: 'Descrição',
1004
- descriptionPlaceholder: 'O que este relatório mostra?',
1005
- type: 'Tipo de relatório',
1006
- typeTabular: 'Tabular — lista plana',
1007
- typeSummary: 'Resumo — agrupado com totais',
1008
- typeMatrix: 'Matriz — pivô linhas × colunas',
1009
- typeJoined: 'Combinado — vários blocos',
1010
- typeHelp: 'Escolha o layout que corresponde ao que deseja ver.',
1011
- data: 'Dados',
1012
- objectName: 'Fonte de dados',
1013
- objectNamePlaceholder: 'ex.: opportunity',
1014
- objectNameHelp: 'Qual objeto este relatório deve consultar?',
1015
- limit: 'Limite de linhas',
1016
- limitPlaceholder: 'ex.: 100',
1017
- columns: 'Colunas',
1018
- columnsHint: 'Escolha quais campos aparecem como colunas. Adicione uma agregação (Soma, Contagem…) em relatórios de Resumo ou Matriz.',
1019
- filters: 'Filtros',
1020
- filtersHint: 'Restrinja as linhas incluídas neste relatório.',
1021
- filtersComplex: 'Este relatório usa um filtro avançado que não pode ser editado aqui. Ao salvar será mantido inalterado.',
1022
- groupBy: 'Agrupar por',
1023
- groupByHint: 'Agrupe os dados e calcule subtotais.',
1024
- rows: 'Linhas',
1025
- rowsHint: 'Agrupe linhas por estes campos.',
1026
- columnsAxis: 'Colunas',
1027
- columnsAxisHint: 'Pivote estes campos no topo.',
1028
- values: 'Valores',
1029
- valuesHint: 'Números exibidos em cada célula. Escolha um ou mais campos e adicione uma agregação (Soma, Contagem…).',
1030
- grouping: 'Agrupamento',
1031
- addGrouping: 'Adicionar agrupamento',
1032
- dateGranularity: 'Granularidade de data',
1033
- dateGranularityNone: '(usar valor bruto)',
1034
- day: 'Dia',
1035
- week: 'Semana',
1036
- month: 'Mês',
1037
- quarter: 'Trimestre',
1038
- year: 'Ano',
1039
- sortAsc: 'Crescente',
1040
- sortDesc: 'Decrescente',
1041
- chart: 'Gráfico',
1042
- chartHint: 'Visualização opcional ao lado da tabela.',
1043
- chartType: 'Tipo de gráfico',
1044
- chartTitle: 'Título do gráfico',
1045
- chartTitlePlaceholder: 'Padrão: título do relatório',
1046
- chartXAxis: 'Eixo X (categoria)',
1047
- chartYAxis: 'Eixo Y (valor)',
1048
- chartShowLegend: 'Mostrar legenda',
1049
- chartShowDataLabels: 'Mostrar rótulos de dados',
1050
- chartNone: '(sem gráfico)',
1051
- chartBar: 'Barras',
1052
- chartLine: 'Linhas',
1053
- chartArea: 'Áreas',
1054
- chartPie: 'Pizza',
1055
- chartDonut: 'Rosca',
1056
- chartFunnel: 'Funil',
1057
- validationNeedsObject: 'Escolha uma fonte de dados antes de adicionar colunas.',
1058
- validationMatrixNeedsRowsCols: 'Relatórios de matriz precisam de pelo menos uma Linha e uma Coluna.',
1059
- validationSummaryNeedsRows: 'Relatórios de resumo precisam de pelo menos um campo de agrupamento.',
1060
- blocks: 'Blocos',
1061
- blocksHint: 'Cada bloco é sua própria tabela ou gráfico. Filtros de bloco são combinados (E) com o filtro do relatório.',
1062
- addBlock: 'Adicionar bloco',
1063
- removeBlock: 'Remover bloco',
1064
- blockName: 'Nome do bloco',
1065
- blockNamePlaceholder: 'nome_unico_do_bloco',
1066
- blockLabel: 'Rótulo de exibição',
1067
- blockLabelPlaceholder: 'Exibido acima do bloco',
1068
- blockDescription: 'Descrição',
1069
- blockDescriptionPlaceholder: 'Contexto opcional para este bloco',
1070
- validationJoinedNeedsBlocks: 'Relatórios combinados precisam de pelo menos um bloco.',
1071
- validationBlockNameRequired: 'Cada bloco precisa de um nome não vazio.',
1072
- validationBlockNameDuplicate: 'Os nomes dos blocos devem ser únicos no relatório.',
1073
- validationBlockNeedsColumns: 'Cada bloco precisa de pelo menos uma coluna.',
1074
- noneOption: '(nenhum)',
1075
- addCondition: 'Adicionar condição',
1076
- combineLogic: 'Combinar com',
1077
- opContains: 'contém',
1078
- opIsEmpty: 'está vazio',
1079
- opIsNotEmpty: 'não está vazio',
1080
- formatAuto: 'Automático',
1081
- formatCurrency: 'Moeda',
1082
- formatPercent: 'Porcentagem',
1083
- formatInteger: 'Inteiro',
1084
- formatDate: 'Data',
1085
- formatDatetime: 'Data e hora',
1086
- columnLabelPlaceholder: 'Substituir rótulo',
1087
- aggregateColumn: 'Agregação',
1088
- formatColumn: 'Formato',
1089
- addColumns: 'Adicionar colunas',
1090
- searchFields: 'Pesquisar campos…',
1091
- noMatchingFields: 'Nenhum campo corresponde à sua pesquisa.',
1092
- noFieldsAvailable: 'Nenhum campo disponível.',
1484
+ breadcrumb: "Configuração",
1485
+ basic: "Geral",
1486
+ title: "Título",
1487
+ titlePlaceholder: "ex.: Pipeline por trimestre",
1488
+ description: "Descrição",
1489
+ descriptionPlaceholder: "O que este relatório mostra?",
1490
+ type: "Tipo de relatório",
1491
+ typeTabular: "Tabular — lista plana",
1492
+ typeSummary: "Resumo — agrupado com totais",
1493
+ typeMatrix: "Matriz — pivô linhas × colunas",
1494
+ typeJoined: "Combinado — vários blocos",
1495
+ typeHelp: "Escolha o layout que corresponde ao que deseja ver.",
1496
+ data: "Dados",
1497
+ objectName: "Fonte de dados",
1498
+ objectNamePlaceholder: "ex.: opportunity",
1499
+ objectNameHelp: "Qual objeto este relatório deve consultar?",
1500
+ limit: "Limite de linhas",
1501
+ limitPlaceholder: "ex.: 100",
1502
+ columns: "Colunas",
1503
+ columnsHint: "Escolha quais campos aparecem como colunas. Adicione uma agregação (Soma, Contagem…) em relatórios de Resumo ou Matriz.",
1504
+ filters: "Filtros",
1505
+ filtersHint: "Restrinja as linhas incluídas neste relatório.",
1506
+ filtersComplex: "Este relatório usa um filtro avançado que não pode ser editado aqui. Ao salvar será mantido inalterado.",
1507
+ groupBy: "Agrupar por",
1508
+ groupByHint: "Agrupe os dados e calcule subtotais.",
1509
+ rows: "Linhas",
1510
+ rowsHint: "Agrupe linhas por estes campos.",
1511
+ columnsAxis: "Colunas",
1512
+ columnsAxisHint: "Pivote estes campos no topo.",
1513
+ values: "Valores",
1514
+ valuesHint: "Números exibidos em cada célula. Escolha um ou mais campos e adicione uma agregação (Soma, Contagem…).",
1515
+ grouping: "Agrupamento",
1516
+ addGrouping: "Adicionar agrupamento",
1517
+ dateGranularity: "Granularidade de data",
1518
+ dateGranularityNone: "(usar valor bruto)",
1519
+ day: "Dia",
1520
+ week: "Semana",
1521
+ month: "Mês",
1522
+ quarter: "Trimestre",
1523
+ year: "Ano",
1524
+ sortAsc: "Crescente",
1525
+ sortDesc: "Decrescente",
1526
+ chart: "Gráfico",
1527
+ chartHint: "Visualização opcional ao lado da tabela.",
1528
+ chartType: "Tipo de gráfico",
1529
+ chartTitle: "Título do gráfico",
1530
+ chartTitlePlaceholder: "Padrão: título do relatório",
1531
+ chartXAxis: "Eixo X (categoria)",
1532
+ chartYAxis: "Eixo Y (valor)",
1533
+ chartShowLegend: "Mostrar legenda",
1534
+ chartShowDataLabels: "Mostrar rótulos de dados",
1535
+ chartNone: "(sem gráfico)",
1536
+ chartBar: "Barras",
1537
+ chartLine: "Linhas",
1538
+ chartArea: "Áreas",
1539
+ chartPie: "Pizza",
1540
+ chartDonut: "Rosca",
1541
+ chartFunnel: "Funil",
1542
+ validationNeedsObject: "Escolha uma fonte de dados antes de adicionar colunas.",
1543
+ validationMatrixNeedsRowsCols: "Relatórios de matriz precisam de pelo menos uma Linha e uma Coluna.",
1544
+ validationSummaryNeedsRows: "Relatórios de resumo precisam de pelo menos um campo de agrupamento.",
1545
+ blocks: "Blocos",
1546
+ blocksHint: "Cada bloco é sua própria tabela ou gráfico. Filtros de bloco são combinados (E) com o filtro do relatório.",
1547
+ addBlock: "Adicionar bloco",
1548
+ removeBlock: "Remover bloco",
1549
+ blockName: "Nome do bloco",
1550
+ blockNamePlaceholder: "nome_unico_do_bloco",
1551
+ blockLabel: "Rótulo de exibição",
1552
+ blockLabelPlaceholder: "Exibido acima do bloco",
1553
+ blockDescription: "Descrição",
1554
+ blockDescriptionPlaceholder: "Contexto opcional para este bloco",
1555
+ validationJoinedNeedsBlocks: "Relatórios combinados precisam de pelo menos um bloco.",
1556
+ validationBlockNameRequired: "Cada bloco precisa de um nome não vazio.",
1557
+ validationBlockNameDuplicate: "Os nomes dos blocos devem ser únicos no relatório.",
1558
+ validationBlockNeedsColumns: "Cada bloco precisa de pelo menos uma coluna.",
1559
+ noneOption: "(nenhum)",
1560
+ addCondition: "Adicionar condição",
1561
+ combineLogic: "Combinar com",
1562
+ opContains: "contém",
1563
+ opIsEmpty: "está vazio",
1564
+ opIsNotEmpty: "não está vazio",
1565
+ formatAuto: "Automático",
1566
+ formatCurrency: "Moeda",
1567
+ formatPercent: "Porcentagem",
1568
+ formatInteger: "Inteiro",
1569
+ formatDate: "Data",
1570
+ formatDatetime: "Data e hora",
1571
+ columnLabelPlaceholder: "Substituir rótulo",
1572
+ aggregateColumn: "Agregação",
1573
+ formatColumn: "Formato",
1574
+ addColumns: "Adicionar colunas",
1575
+ searchFields: "Pesquisar campos…",
1576
+ noMatchingFields: "Nenhum campo corresponde à sua pesquisa.",
1577
+ noFieldsAvailable: "Nenhum campo disponível.",
1578
+ columnsCount: "{n} coluna(s) selecionada(s)",
1579
+ columnsEmpty: "Nenhuma coluna selecionada ainda.",
1580
+ fieldPickerTitle: "Selecionar campos",
1581
+ fieldPickerDescription: "Escolha um ou mais campos para adicionar. Use o campo de pesquisa para filtrar a lista.",
1582
+ fieldPickerChangeTitle: "Alterar campo",
1583
+ fieldPickerAddGroupingTitle: "Adicionar agrupamento",
1584
+ fieldPickerEmpty: "(Selecionar campo)",
1585
+ fieldPickerSelected: "{n} selecionado(s)",
1586
+ fieldPickerClear: "Limpar seleção",
1587
+ fieldPickerAdd: "Adicionar",
1588
+ fieldPickerAddN: "Adicionar {n}",
1093
1589
  },
1094
1590
  },
1095
1591
  organizations: {
1096
- mine: 'Minhas organizações',
1097
- title: 'Organizações',
1098
- heading: 'Suas organizações',
1099
- subtitle: 'Selecione uma organização para continuar ou crie uma nova.',
1100
- searchPlaceholder: 'Pesquisar uma organização',
1101
- new: 'Nova organização',
1102
- current: 'Organização atual',
1103
- manage: 'Gerenciar',
1104
- emptyTitle: 'Nenhuma organização ainda',
1105
- emptyDescription: 'Crie sua primeira organização para começar.',
1106
- noMatches: 'Nenhuma organização corresponde à sua pesquisa.',
1592
+ mine: "Minhas organizações",
1593
+ title: "Organizações",
1594
+ heading: "Suas organizações",
1595
+ subtitle: "Selecione uma organização para continuar ou crie uma nova.",
1596
+ searchPlaceholder: "Pesquisar uma organização",
1597
+ new: "Nova organização",
1598
+ current: "Organização atual",
1599
+ manage: "Gerenciar",
1600
+ emptyTitle: "Nenhuma organização ainda",
1601
+ emptyDescription: "Crie sua primeira organização para começar.",
1602
+ noMatches: "Nenhuma organização corresponde à sua pesquisa.",
1107
1603
  },
1108
1604
  notifications: {
1109
- empty: 'Sem notificações',
1110
- markAllRead: 'Marcar tudo como lido',
1111
- viewAll: 'Ver todas as notificações',
1112
- approvalsPending: '{{count}} aprovações pendentes',
1113
- viewApprovals: 'Ver aprovações',
1114
- noPendingApprovals: 'Sem aprovações pendentes',
1115
- openApprovalsInbox: 'Abrir caixa de aprovações',
1605
+ empty: "Sem notificações",
1606
+ markAllRead: "Marcar tudo como lido",
1607
+ viewAll: "Ver todas as notificações",
1608
+ approvalsPending: "{{count}} aprovações pendentes",
1609
+ viewApprovals: "Ver aprovações",
1610
+ noPendingApprovals: "Sem aprovações pendentes",
1611
+ openApprovalsInbox: "Abrir caixa de aprovações",
1612
+ emptyUnread: "Tudo lido",
1613
+ filterUnread: "Não lidos",
1614
+ filterAll: "Todos",
1116
1615
  },
1117
1616
  publicForm: {
1118
- submit: 'Submit',
1119
- submitting: 'Submitting…',
1120
- submitAnother: 'Submit another response',
1121
- poweredBy: 'Powered by ObjectStack',
1122
- secureNotice: 'Your information is transmitted securely and only used to respond to your request.',
1123
- thankYouTitle: 'Thank you!',
1124
- thankYouMessage: 'Your submission has been received successfully.',
1125
- redirecting: 'Redirecting in {{seconds}} seconds…',
1126
- unavailableTitle: 'Form unavailable',
1127
- unavailableDescription: 'No public form is available at this URL. Make sure the underlying view has anonymous sharing enabled and matches this slug.',
1128
- tryDemo: 'Try the demo',
1129
- retry: 'Retry',
1130
- loading: 'Loading form…',
1131
- requiredHint: '* Required field',
1132
- consentLabelDefault: 'I agree to the privacy policy and consent to my data being processed for this request.',
1133
- consentLink: 'Privacy policy',
1134
- consentRequired: 'Please accept the privacy policy to continue.',
1135
- rateLimited: 'Please take a moment to review your answers before submitting.',
1136
- redirectBlocked: 'Submission accepted, but the redirect URL was blocked for security.',
1617
+ submit: "Enviar",
1618
+ submitting: "Enviando…",
1619
+ submitAnother: "Enviar outra resposta",
1620
+ poweredBy: "Desenvolvido por ObjectStack",
1621
+ secureNotice: "Suas informações são transmitidas com segurança e usadas apenas para processar sua solicitação.",
1622
+ thankYouTitle: "Obrigado!",
1623
+ thankYouMessage: "Seu envio foi recebido com sucesso.",
1624
+ redirecting: "Redirecionando em {{seconds}} segundo(s)…",
1625
+ unavailableTitle: "Formulário indisponível",
1626
+ unavailableDescription: "Nenhum formulário público está disponível nesta URL. Certifique-se de que a exibição subjacente tenha o compartilhamento anônimo ativado.",
1627
+ tryDemo: "Experimentar demo",
1628
+ retry: "Tentar novamente",
1629
+ loading: "Carregando formulário…",
1630
+ requiredHint: "* Campo obrigatório",
1631
+ consentLabelDefault: "Aceito a política de privacidade e consinto com o processamento dos meus dados para esta solicitação.",
1632
+ consentLink: "Política de privacidade",
1633
+ consentRequired: "Por favor, aceite a política de privacidade para continuar.",
1634
+ rateLimited: "Reserve um momento para revisar suas respostas antes de enviar.",
1635
+ redirectBlocked: "Envio aceito, mas a URL de redirecionamento foi bloqueada por segurança.",
1137
1636
  demo: {
1138
- contactTitle: 'Contact us',
1139
- contactDescription: 'Tell us about your project and a sales representative will get back to you within one business day.',
1140
- supportTitle: 'Submit a support request',
1141
- supportDescription: 'Tell us what is going wrong — our team responds within one business day.',
1142
- thankYouSalesTitle: 'Thanks — we received your message!',
1143
- thankYouSalesMessage: 'A sales representative will be in touch within one business day.',
1144
- thankYouSupportTitle: 'Got it — your request is in the queue.',
1145
- thankYouSupportMessage: 'A support engineer will follow up shortly. Save this page if you have more screenshots to add.',
1637
+ contactTitle: "Entrar em contato",
1638
+ contactDescription: "Conte-nos sobre seu projeto e um representante de vendas entrará em contato em um dia útil.",
1639
+ supportTitle: "Enviar solicitação de suporte",
1640
+ supportDescription: "Descreva-nos o problema — nossa equipe responderá em um dia útil.",
1641
+ thankYouSalesTitle: "Obrigado — recebemos sua mensagem!",
1642
+ thankYouSalesMessage: "Um representante de vendas entrará em contato em um dia útil.",
1643
+ thankYouSupportTitle: "Pronto — sua solicitação está na fila.",
1644
+ thankYouSupportMessage: "Um engenheiro de suporte fará o acompanhamento em breve. Salve esta página se tiver capturas de tela adicionais.",
1146
1645
  field: {
1147
- firstName: 'First name',
1148
- lastName: 'Last name',
1149
- email: 'Work email',
1150
- phone: 'Phone',
1151
- jobTitle: 'Job title',
1152
- company: 'Company',
1153
- website: 'Website',
1154
- industry: 'Industry',
1155
- companySize: 'Company size',
1156
- howCanWeHelp: 'How can we help?',
1157
- subject: 'Subject',
1158
- description: 'Description',
1159
- issueType: 'Issue type',
1160
- priority: 'Priority',
1646
+ firstName: "Nome",
1647
+ lastName: "Sobrenome",
1648
+ email: "E-mail corporativo",
1649
+ phone: "Telefone",
1650
+ jobTitle: "Cargo",
1651
+ company: "Empresa",
1652
+ website: "Site",
1653
+ industry: "Setor",
1654
+ companySize: "Tamanho da empresa",
1655
+ howCanWeHelp: "Como podemos ajudar?",
1656
+ subject: "Assunto",
1657
+ description: "Descrição",
1658
+ issueType: "Tipo de problema",
1659
+ priority: "Prioridade",
1161
1660
  },
1162
1661
  industry: {
1163
- technology: 'Technology',
1164
- software: 'Software / SaaS',
1165
- finance: 'Finance',
1166
- healthcare: 'Healthcare',
1167
- retail: 'Retail',
1168
- other: 'Other',
1662
+ technology: "Tecnologia",
1663
+ software: "Software / SaaS",
1664
+ finance: "Finanças",
1665
+ healthcare: "Saúde",
1666
+ retail: "Varejo",
1667
+ other: "Outro",
1169
1668
  },
1170
1669
  issueType: {
1171
- question: 'Question',
1172
- problem: 'Problem',
1173
- bug: 'Bug',
1174
- feature_request: 'Feature request',
1670
+ question: "Pergunta",
1671
+ problem: "Problema",
1672
+ bug: "Bug",
1673
+ feature_request: "Solicitação de recurso",
1175
1674
  },
1176
1675
  priority: {
1177
- low: 'Low',
1178
- medium: 'Medium',
1179
- high: 'High',
1180
- critical: 'Critical',
1676
+ low: "Baixa",
1677
+ medium: "Média",
1678
+ high: "Alta",
1679
+ critical: "Crítica",
1181
1680
  },
1182
1681
  },
1183
1682
  },
1184
1683
  marketplace: {
1185
- title: 'App Marketplace',
1186
- subtitle: 'Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.',
1187
- searchPlaceholder: 'Search apps by name or manifest ID…',
1188
- searchAria: 'Search marketplace apps',
1189
- installed: 'Installed',
1190
- installedCount: 'Installed ({{count}})',
1191
- refresh: 'Refresh',
1192
- all: 'All',
1193
- noApprovedYet: 'No apps have been approved for the marketplace yet.',
1194
- noMatchFilters: 'No apps match your filters.',
1195
- noDescription: 'No description provided.',
1196
- back: 'Back to marketplace',
1197
- installedTitle: 'Installed Apps',
1198
- installedSubtitle: 'Marketplace packages currently installed into this runtime\'s kernel. Cached manifests live in <code>.objectstack/installed-packages/</code> and survive restarts.',
1199
- installedEmpty: 'No marketplace apps installed in this runtime yet.',
1200
- browseLink: 'Browse the marketplace →',
1201
- installedAdditiveNote: '<strong>Note:</strong> The kernel API is additive only — uninstall removes the on-disk manifest so the package won\'t load on next boot, but the running kernel keeps the app registered until you restart the runtime.',
1202
- installedAt: 'Installed {{when}}',
1203
- installedBy: 'by {{user}}',
1204
- installedPackageId: 'package',
1205
- cachedAs: 'Cached as <code>{{path}}</code>',
1206
- versionBadge: 'v{{version}}',
1207
- installedBadge: 'Installed v{{version}}',
1684
+ title: "Marketplace de aplicativos",
1685
+ subtitle: "Explore aplicativos aprovados publicados no catálogo ObjectStack. Clique em um aplicativo para ver os detalhes e instalá-lo em um de seus ambientes.",
1686
+ searchPlaceholder: "Pesquisar aplicativos por nome ou ID de manifesto…",
1687
+ searchAria: "Pesquisar aplicativos do marketplace",
1688
+ installed: "Instalado",
1689
+ installedCount: "Instalados ({{count}})",
1690
+ refresh: "Atualizar",
1691
+ all: "Todos",
1692
+ noApprovedYet: "Nenhum aplicativo aprovado para o marketplace ainda.",
1693
+ noMatchFilters: "Nenhum aplicativo corresponde aos seus filtros.",
1694
+ noDescription: "Sem descrição disponível.",
1695
+ back: "Voltar ao marketplace",
1696
+ installedTitle: "Aplicativos instalados",
1697
+ installedSubtitle: "Pacotes do marketplace atualmente instalados no kernel deste runtime.",
1698
+ installedEmpty: "Nenhum aplicativo do marketplace instalado neste runtime ainda.",
1699
+ browseLink: "Explorar marketplace →",
1700
+ installedAdditiveNote: "<strong>Nota:</strong> A API do kernel é apenas aditiva — desinstalar remove o manifesto do disco para que o pacote não seja carregado na próxima inicialização, mas o kernel em execução mantém o aplicativo registrado até reiniciar.",
1701
+ installedAt: "Instalado {{when}}",
1702
+ installedBy: "por {{user}}",
1703
+ installedPackageId: "Pacote",
1704
+ cachedAs: "Armazenado em cache como <code>{{path}}</code>",
1705
+ versionBadge: "v{{version}}",
1706
+ installedBadge: "Instalado v{{version}}",
1208
1707
  load: {
1209
- failed: 'Failed to load marketplace',
1210
- failedHint: 'By default this runtime points at the public ObjectStack cloud. Check the runtime is online, or override <code>OS_CLOUD_URL</code> to point at a self-hosted control plane.',
1211
- packageFailed: 'Failed to load package',
1212
- notFound: 'Not found.',
1708
+ failed: "Não foi possível carregar o marketplace",
1709
+ failedHint: "Por padrão, este runtime aponta para o cloud público ObjectStack. Certifique-se de que o runtime está online.",
1710
+ packageFailed: "Não foi possível carregar o pacote",
1711
+ notFound: "Não encontrado.",
1213
1712
  },
1214
1713
  detail: {
1215
- homepage: 'Homepage',
1216
- installedV: 'Installed · v{{version}}',
1217
- about: 'About',
1218
- noReadme: 'No readme provided.',
1219
- versions: 'Versions',
1220
- noApprovedVersions: 'No approved versions.',
1221
- prerelease: 'pre',
1222
- moreOptions: 'More install options',
1223
- uninstallFromRuntime: 'Uninstall from this runtime',
1714
+ homepage: "Página inicial",
1715
+ installedV: "Instalado · v{{version}}",
1716
+ about: "Sobre",
1717
+ noReadme: "Sem readme disponível.",
1718
+ versions: "Versões",
1719
+ noApprovedVersions: "Sem versões aprovadas.",
1720
+ prerelease: "Pré-lançamento",
1721
+ moreOptions: "Mais opções de instalação",
1722
+ uninstallFromRuntime: "Desinstalar deste runtime",
1723
+ addSampleData: 'Adicionar dados de exemplo',
1724
+ reseedAgain: 'Recarregar dados de exemplo',
1725
+ purgeSampleData: 'Remover dados de exemplo',
1726
+ purgeConfirm: 'Excluir todos os registros de exemplo criados por este pacote? Os registros adicionados pelo usuário NÃO serão afetados.',
1727
+ purgeSuccess: '{{count}} registro(s) de exemplo removido(s).',
1728
+ purgeNoData: 'Nenhum registro de exemplo encontrado para remover.',
1729
+ reseedQueued: 'Os dados de exemplo serão recarregados no próximo acesso ao ambiente.',
1730
+ reseedLocalSuccess: 'Dados de exemplo recarregados: {{inserted}} inseridos, {{updated}} atualizados.',
1731
+ reseedPartialErrors: '({{count}} registro(s) não puderam ser gravados)',
1732
+ updateAvailable: 'Atualização disponível',
1224
1733
  },
1225
1734
  action: {
1226
- install: 'Install',
1227
- reinstall: 'Reinstall',
1228
- working: 'Working…',
1229
- installToCloud: 'Install to cloud…',
1230
- installing: 'Installing…',
1231
- uninstall: 'Uninstall',
1232
- uninstalling: 'Uninstalling…',
1233
- details: 'Details',
1234
- close: 'Close',
1235
- dismiss: 'Dismiss',
1236
- openOnCloud: 'Open on cloud',
1237
- backHome: 'Back to home',
1735
+ install: "Instalar",
1736
+ reinstall: "Reinstalar",
1737
+ working: "Processando…",
1738
+ installToCloud: "Instalar na nuvem…",
1739
+ installing: "Instalando…",
1740
+ uninstall: "Desinstalar",
1741
+ uninstalling: "Desinstalando…",
1742
+ details: "Detalhes",
1743
+ close: "Fechar",
1744
+ dismiss: "Fechar",
1745
+ openOnCloud: "Abrir na nuvem",
1746
+ backHome: "Voltar ao início",
1238
1747
  },
1239
1748
  install: {
1240
- dialogTitle: 'Install {{name}}',
1241
- dialogDescCurrent: 'Install into this environment ({{host}}).',
1242
- dialogDescPicker: 'Choose an environment to install this app into. You need to be signed into ObjectStack Cloud.',
1243
- environment: 'Environment',
1244
- environmentPlaceholder: 'Pick an environment',
1245
- includeSampleData: 'Include sample data',
1246
- noEnvs: 'No environments found in your active organization.',
1247
- noPermission: 'You do not have permission to install apps in any environment. Only organization owners and admins can install — ask your workspace admin.',
1248
- signInFirst: 'You need to sign into ObjectStack Cloud first. Click "Open on cloud" below.',
1249
- success: 'Installed successfully. Open the environment to see the new app.',
1250
- localSuccess: 'Installed v{{version}} to this runtime. "{{name}}" should now appear in the app switcher.',
1251
- localManifestConflict: '{{message}}\nTip: a local app already owns this manifest_id. Remove it from objectstack.config.ts first.',
1252
- localUnauthorized: 'Sign in to this runtime first, then try again.',
1253
- localMarketplaceUnavailable: 'This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.',
1749
+ dialogTitle: "Instalar {{name}}",
1750
+ dialogDescCurrent: "Instalar neste ambiente ({{host}}).",
1751
+ dialogDescPicker: "Escolha um ambiente para instalar este aplicativo. Você deve estar conectado ao ObjectStack Cloud.",
1752
+ environment: "Ambiente",
1753
+ environmentPlaceholder: "Selecionar ambiente",
1754
+ includeSampleData: "Incluir dados de amostra",
1755
+ noEnvs: "Nenhum ambiente encontrado em sua organização ativa.",
1756
+ noPermission: "Você não tem permissão para instalar aplicativos em um ambiente. Somente proprietários e administradores da organização podem instalar.",
1757
+ signInFirst: "Você deve primeiro fazer login no ObjectStack Cloud.",
1758
+ success: "Instalado com sucesso. Abra o ambiente para ver o novo aplicativo.",
1759
+ localSuccess: "v{{version}} instalado neste runtime. \"{{name}}\" deve aparecer no seletor de aplicativos agora.",
1760
+ localManifestConflict: "{{message}}\nNota: Um aplicativo local já possui este manifest_id. Remova-o primeiro de objectstack.config.ts.",
1761
+ localUnauthorized: "Faça login neste runtime primeiro.",
1762
+ localMarketplaceUnavailable: "Este runtime não tem OS_CLOUD_URL configurado.",
1254
1763
  },
1255
1764
  uninstall: {
1256
- confirm: 'Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.',
1257
- successInList: 'Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.',
1258
- successInDetail: 'Removed cached manifest for {{manifestId}}. Restart the runtime to fully unload the app from the running kernel.',
1765
+ confirm: "Desinstalar {{manifestId}} v{{version}} deste runtime?\n\nO manifesto em cache será removido.",
1766
+ successInList: "{{manifestId}} removido. Reinicie o runtime para descarregá-lo completamente.",
1767
+ successInDetail: "Manifesto em cache para {{manifestId}} removido.",
1259
1768
  },
1260
1769
  accessDenied: {
1261
- title: 'App Marketplace is admin-only',
1262
- description: 'You don\'t have permission to install apps in this environment. Ask an owner or admin of this organization for access.',
1770
+ title: "Marketplace somente para administradores",
1771
+ description: "Você não tem permissão para instalar aplicativos neste ambiente.",
1263
1772
  },
1264
1773
  category: {
1265
- crm: 'CRM',
1266
- erp: 'ERP',
1267
- hr: 'Human Resources',
1268
- finance: 'Finance',
1269
- project: 'Project Management',
1270
- collaboration: 'Collaboration',
1271
- analytics: 'Analytics',
1272
- integration: 'Integration',
1273
- automation: 'Automation',
1274
- ai: 'AI',
1275
- security: 'Security',
1276
- 'developer-tools': 'Developer Tools',
1277
- 'ui-theme': 'UI Theme',
1278
- storage: 'Storage',
1279
- other: 'Other',
1774
+ crm: "CRM",
1775
+ erp: "ERP",
1776
+ hr: "RH",
1777
+ finance: "Finanças",
1778
+ project: "Gestão de projetos",
1779
+ collaboration: "Colaboração",
1780
+ analytics: "Análise",
1781
+ integration: "Integração",
1782
+ automation: "Automação",
1783
+ ai: "IA",
1784
+ security: "Segurança",
1785
+ "developer-tools": "Ferramentas de desenvolvedor",
1786
+ "ui-theme": "Tema de UI",
1787
+ storage: "Armazenamento",
1788
+ other: "Outro",
1280
1789
  },
1281
1790
  pricing: {
1282
- free: 'Free',
1283
- freemium: 'Freemium',
1284
- paid: 'Paid',
1285
- subscription: 'Subscription',
1286
- 'usage-based': 'Usage-based',
1287
- 'contact-sales': 'Contact Sales',
1791
+ free: "Grátis",
1792
+ freemium: "Freemium",
1793
+ paid: "Pago",
1794
+ subscription: "Assinatura",
1795
+ "usage-based": "Por uso",
1796
+ "contact-sales": "Contatar vendas",
1288
1797
  },
1289
1798
  relativeTime: {
1290
- today: 'today',
1291
- daysAgo: '{{count}}d ago',
1292
- monthsAgo: '{{count}}mo ago',
1293
- yearsAgo: '{{count}}y ago',
1799
+ today: "hoje",
1800
+ daysAgo: "há {{count}}d",
1801
+ monthsAgo: "há {{count}} meses",
1802
+ yearsAgo: "há {{count}} anos",
1803
+ },
1804
+ },
1805
+ approvalsInbox: {
1806
+ loadMore: 'Carregar mais',
1807
+ loadingMore: 'Carregando…',
1808
+ loadedOf: '{{loaded}} de {{total}} carregadas',
1809
+ actEscalate: 'SLA escalonado',
1810
+ systemSlaActor: 'Sistema (SLA)',
1811
+ reassignBtn: 'Reatribuir',
1812
+ reassignTitle: 'Passar esta aprovação para outra pessoa?',
1813
+ reassignBody: 'Sua vaga de aprovador passa para a pessoa escolhida — ela é notificada e pode agir imediatamente.',
1814
+ reassignTo: 'Novo aprovador',
1815
+ reassignToPlaceholder: 'Escolha um usuário ou digite um e-mail / role:<nome>',
1816
+ reassignSuccess: 'Reatribuída a {{to}}',
1817
+ requestInfoBtn: 'Pedir informações',
1818
+ requestInfoTitle: 'Pedir mais informações ao solicitante?',
1819
+ requestInfoBody: 'A solicitação continua pendente; o solicitante é notificado e pode responder no tópico.',
1820
+ requestInfoPlaceholder: 'O que você precisa do solicitante?',
1821
+ requestInfoSent: 'Devolvida ao solicitante para complemento',
1822
+ remindBtn: 'Lembrar',
1823
+ remindSuccess: 'Lembrete enviado a {{count}} aprovador(es)',
1824
+ remindThrottled: 'Um lembrete já foi enviado há pouco — tente mais tarde.',
1825
+ replyPlaceholder: 'Responder nesta solicitação…',
1826
+ slaRemaining: 'SLA: faltam {{dur}}',
1827
+ slaOverdue: 'SLA vencido há {{dur}}',
1828
+ actReassign: 'Reatribuída',
1829
+ actRemind: 'Lembrete',
1830
+ actRequestInfo: 'Pediu mais informações',
1831
+ actComment: 'Comentou',
1832
+ stepProgress: 'Etapas de aprovação',
1833
+ prevRequest: 'Anterior',
1834
+ nextRequest: 'Próxima',
1835
+ positionOf: '{{index}} de {{total}}',
1836
+ quickPhrase1: 'Aprovada — atende aos requisitos.',
1837
+ quickPhrase2: 'Aprovada com condições — acompanhe a execução.',
1838
+ quickPhrase3: 'Adicione material de apoio e reenvie.',
1839
+ title: 'Central de aprovações',
1840
+ subtitle: 'Revise e processe as solicitações de aprovação.',
1841
+ refresh: 'Atualizar',
1842
+ tabMyPending: 'Pendentes para mim',
1843
+ tabSubmitted: 'Enviadas por mim',
1844
+ tabAll: 'Todas',
1845
+ searchPlaceholder: 'Pesquisar registro, processo, solicitante…',
1846
+ clearSearch: 'Limpar pesquisa',
1847
+ statusFilter: 'Status',
1848
+ allStatuses: 'Todos os status',
1849
+ processFilter: 'Processo',
1850
+ allProcesses: 'Todos os processos',
1851
+ objectFilter: 'Objeto',
1852
+ allObjects: 'Todos os objetos',
1853
+ filterCount: '{{shown}} de {{total}}',
1854
+ selected: 'selecionadas',
1855
+ actionableCount: '({{count}} acionáveis)',
1856
+ selectAll: 'Selecionar tudo',
1857
+ selectRow: 'Selecionar solicitação',
1858
+ colRequest: 'Solicitação',
1859
+ colRecord: 'Registro',
1860
+ colRequester: 'Solicitante',
1861
+ colStatus: 'Status',
1862
+ colWaiting: 'Enviada',
1863
+ colActions: 'Ações',
1864
+ statusPending: 'Pendente',
1865
+ statusApproved: 'Aprovada',
1866
+ statusRejected: 'Rejeitada',
1867
+ statusRecalled: 'Retirada',
1868
+ statusReturned: 'Devolvido para revisão',
1869
+ sendBackBtn: 'Devolver',
1870
+ sendBackTitle: 'Devolver esta solicitação para revisão?',
1871
+ sendBackBody: 'Esta rodada termina e o registro é desbloqueado para o solicitante corrigir os dados. Ao reenviar, uma nova rodada de aprovação é aberta para todos os aprovadores.',
1872
+ sendBackPlaceholder: 'O que precisa ser corrigido antes da aprovação?',
1873
+ sendBackSuccess: 'Devolvida para revisão — o solicitante já pode editar e reenviar',
1874
+ sendBackAutoRejected: 'Limite de revisões atingido — a solicitação foi rejeitada automaticamente',
1875
+ actRevise: 'Devolvido para revisão',
1876
+ actResubmit: 'Reenviado',
1877
+ roundChip: 'Rodada {{n}}',
1878
+ returnedHint: 'Um aprovador devolveu esta solicitação para você. O registro está desbloqueado — corrija os dados e reenvie para iniciar uma nova rodada de aprovação.',
1879
+ resubmitBtn: 'Reenviar',
1880
+ resubmitting: 'Reenviando…',
1881
+ resubmitSuccess: 'Reenviada — uma nova rodada de aprovação foi aberta',
1882
+ resubmitPlaceholder: 'O que você alterou?',
1883
+ editRecordBtn: 'Editar registro',
1884
+ abandonTitle: 'Abandonar esta revisão?',
1885
+ abandonBody: 'A solicitação é retirada em vez de reenviada. A aprovação termina aqui.',
1886
+ emptyTitle: 'Sem solicitações',
1887
+ emptyPending: 'Tudo em dia — nada aguarda sua aprovação.',
1888
+ emptyOther: 'Nada por aqui ainda.',
1889
+ emptyViewAll: 'Ver todas as solicitações',
1890
+ noMatches: 'Nenhum resultado com os filtros atuais.',
1891
+ keyboardHint: 'Teclado: j/k mover · Enter abrir · x selecionar · a aprovar · r rejeitar',
1892
+ drawerTitle: 'Solicitação de aprovação',
1893
+ submittedAgo: 'Enviada {{when}}',
1894
+ completedAt: 'Concluída {{when}}',
1895
+ waitingOn: 'Aguardando',
1896
+ history: 'Atividade',
1897
+ noActions: 'Nenhuma ação ainda.',
1898
+ actSubmit: 'Enviada',
1899
+ actApprove: 'Aprovada',
1900
+ actReject: 'Rejeitada',
1901
+ actRecall: 'Retirada',
1902
+ rawData: 'Dados brutos (JSON)',
1903
+ copy: 'Copiar',
1904
+ copied: 'Copiado',
1905
+ copyFailed: 'Falha ao copiar',
1906
+ overrideActor: 'Agir como outra identidade (admin)',
1907
+ actor: 'Ator',
1908
+ auto: 'Auto',
1909
+ overrideHint: 'ex.: role:sales_manager. Deixe em branco para usar a identidade detectada.',
1910
+ comment: 'Comentário (opcional)',
1911
+ approve: 'Aprovar',
1912
+ approving: 'Aprovando…',
1913
+ reject: 'Rejeitar',
1914
+ rejecting: 'Rejeitando…',
1915
+ recall: 'Retirar',
1916
+ recalling: 'Retirando…',
1917
+ cancel: 'Cancelar',
1918
+ clear: 'Limpar',
1919
+ approveN: 'Aprovar {{count}}',
1920
+ rejectN: 'Rejeitar {{count}}',
1921
+ bulkApproveTitle: 'Aprovar {{count}} solicitações?',
1922
+ bulkApproveBody: 'Cada solicitação é aprovada com sua identidade e o fluxo segue pelo ramo de aprovação.',
1923
+ bulkRejectTitle: 'Rejeitar {{count}} solicitações?',
1924
+ bulkRejectBody: 'As solicitações selecionadas serão rejeitadas e os solicitantes notificados.',
1925
+ bulkApproved: '{{count}} solicitações aprovadas',
1926
+ bulkRejected: '{{count}} solicitações rejeitadas',
1927
+ bulkPartial: '{{ok}} com sucesso, {{fail}} falharam: {{which}}',
1928
+ rejectOneTitle: 'Rejeitar "{{title}}"?',
1929
+ rejectOneBody: 'A solicitação será rejeitada e o solicitante notificado.',
1930
+ rejectTitle: 'Rejeitar esta solicitação?',
1931
+ rejectBody: 'A solicitação será marcada como rejeitada e o solicitante notificado.',
1932
+ recallTitle: 'Retirar esta solicitação?',
1933
+ recallBody: 'Após retirar, os aprovadores não poderão mais agir e o registro será desbloqueado.',
1934
+ inlineApproved: '"{{title}}" aprovada',
1935
+ inlineRejected: '"{{title}}" rejeitada',
1936
+ approvedFinal: 'Aprovada',
1937
+ approvedWaiting: 'Aprovada — aguardando os demais aprovadores',
1938
+ rejectedToast: 'Rejeitada',
1939
+ recalledToast: 'Solicitação retirada',
1940
+ whyDisabled: 'Apenas os aprovadores designados podem agir. Aguardando: {{who}}.',
1941
+ whyDisabledSubmitter: 'Você enviou esta solicitação e pode retirá-la — mas apenas os aprovadores designados podem aprovar ou rejeitar.',
1942
+ noActor: 'Não foi possível determinar a identidade',
1943
+ actionFailed: 'A ação falhou',
1944
+ loadFailed: 'Falha ao carregar a solicitação',
1945
+ recallUnavailable: 'Retirada não está disponível nesta implantação.',
1946
+ requestGone: 'Esta solicitação não existe mais. Atualize a lista.',
1947
+ notAllowed: 'Você não tem permissão para esta ação.',
1948
+ alreadyDecided: 'Esta solicitação já foi decidida. Atualize a lista.',
1949
+ justNow: 'agora mesmo',
1950
+ minutesAgo: 'há {{count}} min',
1951
+ hoursAgo: 'há {{count}} h',
1952
+ daysAgo: 'há {{count}} dias',
1953
+ },
1954
+ preview: {
1955
+ empty: {
1956
+ loadFailedTitle: 'Falha ao carregar a pré-visualização do rascunho',
1957
+ loadFailedDescription: 'Não foi possível ler a camada de rascunho. Tente novamente ou verifique sua conexão.',
1958
+ notReadyTitle: '"{{app}}" ainda não está no rascunho',
1959
+ notReadyDescription: 'A compilação pode ainda estar em andamento, ou falhou antes de este app ser preparado. Verifique o estado na conversa — este painel é atualizado quando os rascunhos chegam.',
1960
+ nothingTitle: 'Nada para pré-visualizar ainda',
1961
+ retry: 'Tentar novamente',
1962
+ },
1963
+ draftBar: {
1964
+ message: 'Pré-visualização de rascunho — você está vendo alterações não publicadas. Nada entra no ar até você publicar.',
1965
+ publish: 'Publicar',
1966
+ publishing: 'Publicando…',
1967
+ exit: 'Sair da pré-visualização',
1968
+ changes: 'Alterações',
1969
+ },
1970
+ changes: {
1971
+ title: 'Alterações pendentes',
1972
+ description: 'O que a publicação vai mudar. Itens novos são adicionados; atualizações sobrescrevem a versão publicada.',
1973
+ loading: 'Carregando alterações pendentes…',
1974
+ loadFailed: 'Não foi possível carregar as alterações pendentes:',
1975
+ empty: 'Nada pendente — todos os rascunhos foram publicados.',
1976
+ kindNew: 'Novo',
1977
+ kindUpdate: 'Atualização',
1294
1978
  },
1295
1979
  },
1980
+ filterBuilder: {
1981
+ where: "Onde",
1982
+ and: "E",
1983
+ or: "OU",
1984
+ clearAll: "Limpar tudo",
1985
+ selectField: "Selecionar campo",
1986
+ operator: "Operador",
1987
+ selectValue: "Selecionar valor",
1988
+ value: "Valor",
1989
+ addFilter: "Adicionar filtro",
1990
+ removeCondition: "Remover condição",
1991
+ trueLabel: "Verdadeiro",
1992
+ falseLabel: "Falso",
1993
+ noResults: "Sem resultados",
1994
+ searchField: "Pesquisar {{label}}…",
1995
+ enterId: "Inserir ID de {{label}}",
1996
+ operators: {
1997
+ equals: "Igual a",
1998
+ notEquals: "Diferente de",
1999
+ contains: "Contém",
2000
+ notContains: "Não contém",
2001
+ isEmpty: "Está vazio",
2002
+ isNotEmpty: "Não está vazio",
2003
+ greaterThan: "Maior que",
2004
+ lessThan: "Menor que",
2005
+ greaterOrEqual: "Maior ou igual",
2006
+ lessOrEqual: "Menor ou igual",
2007
+ before: "Antes de",
2008
+ after: "Depois de",
2009
+ between: "Entre",
2010
+ in: "Em",
2011
+ notIn: "Não em",
2012
+ },
2013
+ },
2014
+ sortBuilder: {
2015
+ sortBy: "Ordenar por",
2016
+ thenBy: "Depois por",
2017
+ selectField: "Selecionar campo",
2018
+ ascending: "A → Z",
2019
+ descending: "Z → A",
2020
+ addSort: "Adicionar ordenação",
2021
+ removeSort: "Remover ordenação",
2022
+ },
1296
2023
  };
1297
2024
  export default pt;