pgkiln 0.82.0 → 0.83.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.
Files changed (61) hide show
  1. package/db/migrations/153_component_events.sql +21 -0
  2. package/docs/apex-feature-parity.md +3 -3
  3. package/docs/guide/03-builder.md +8 -1
  4. package/docs/guide/04-pages-and-regions.md +2 -1
  5. package/docs/guide/07-dynamic-actions.md +27 -0
  6. package/docs/guide/11-from-apex.md +2 -1
  7. package/docs/guide/12-development.md +9 -1
  8. package/package.json +1 -1
  9. package/public/app.css +2 -0
  10. package/public/app.js +85 -4
  11. package/public/builder.css +25 -2
  12. package/public/data-modeler.js +8 -5
  13. package/public/sql-monitor.js +5 -2
  14. package/src/builder/ai-builder.ts +50 -46
  15. package/src/builder/api.ts +49 -49
  16. package/src/builder/autorest.ts +92 -87
  17. package/src/builder/changelog.ts +39 -37
  18. package/src/builder/components.ts +5 -4
  19. package/src/builder/data-modeler.ts +89 -84
  20. package/src/builder/data-security.ts +39 -37
  21. package/src/builder/dataload.ts +69 -65
  22. package/src/builder/datapump.ts +108 -97
  23. package/src/builder/ddl-tools.ts +38 -34
  24. package/src/builder/document-view.ts +11 -11
  25. package/src/builder/i18n/de.ts +1627 -0
  26. package/src/builder/i18n/en.ts +1627 -0
  27. package/src/builder/i18n/es.ts +1627 -0
  28. package/src/builder/i18n/fr.ts +1627 -0
  29. package/src/builder/i18n/it.ts +1627 -0
  30. package/src/builder/i18n/ja.ts +1627 -0
  31. package/src/builder/i18n/ko.ts +1627 -0
  32. package/src/builder/i18n/nl.ts +1627 -0
  33. package/src/builder/i18n/pt.ts +1627 -0
  34. package/src/builder/i18n/zh-cn.ts +1627 -0
  35. package/src/builder/i18n/zh-tw.ts +1627 -0
  36. package/src/builder/i18n.ts +18 -0
  37. package/src/builder/object-actions.ts +18 -16
  38. package/src/builder/object-browser.ts +2 -2
  39. package/src/builder/querybuilder.ts +42 -36
  40. package/src/builder/quicksql.ts +16 -18
  41. package/src/builder/region-settings.ts +201 -199
  42. package/src/builder/report-settings.ts +64 -60
  43. package/src/builder/rest-modules.ts +145 -143
  44. package/src/builder/sampledata.ts +59 -52
  45. package/src/builder/scheduling.ts +180 -159
  46. package/src/builder/scripts.ts +71 -65
  47. package/src/builder/sql-charts.ts +36 -30
  48. package/src/builder/sql-monitor.ts +95 -89
  49. package/src/builder/sql-utilities.ts +47 -40
  50. package/src/builder/top-sql.ts +21 -17
  51. package/src/builder/unload.ts +48 -44
  52. package/src/builder/worksheet.ts +3 -3
  53. package/src/cron-schedule.ts +47 -17
  54. package/src/metadata.ts +3 -1
  55. package/src/runtime/calendar.ts +3 -2
  56. package/src/runtime/context.ts +2 -0
  57. package/src/runtime/grid.ts +1 -0
  58. package/src/runtime/maps.ts +7 -4
  59. package/src/runtime/render.ts +6 -1
  60. package/src/runtime/routes.ts +4 -0
  61. package/src/runtime/tree.ts +4 -3
@@ -2422,4 +2422,1631 @@ export const pt: BuilderMessages = {
2422
2422
  'gallery.item.autocomplete': 'Campo de texto com preenchimento automático',
2423
2423
  'gallery.item.percent_graph': 'Gráfico de percentagem',
2424
2424
  'gallery.item.display_map': 'Mostrar mapa',
2425
+ // ------------------------------------------------------------ SQL Monitor, Top SQL (sprint 162, CD-8)
2426
+ 'sm.views': 'Visualizações do monitor SQL',
2427
+ 'sm.sessions': 'Sessões',
2428
+ 'sm.active': 'Ativas',
2429
+ 'sm.idle_tx': 'Inativas numa transação',
2430
+ 'sm.blocked': 'Bloqueadas',
2431
+ 'sm.longest': 'Execução mais longa (s)',
2432
+ 'sm.cancel': 'Cancelar',
2433
+ 'sm.terminate': 'Terminar',
2434
+ 'sm.cancel_confirm': 'Cancelar a instrução que a sessão {pid} está a executar?',
2435
+ 'sm.terminate_confirm': 'Terminar a sessão {pid}? A transação aberta é revertida e o cliente é desligado.',
2436
+ 'sm.cancel_label': 'Cancelar a instrução da sessão {pid}',
2437
+ 'sm.terminate_label': 'Terminar a sessão {pid}',
2438
+ 'sm.sessions_intro': 'As sessões de cliente desta base de dados (pg_stat_activity), sem as inativas, primeiro as ativas.',
2439
+ 'sm.sessions_intro_all': 'As sessões de cliente desta base de dados (pg_stat_activity), primeiro as ativas.',
2440
+ 'sm.hide_idle': 'Ocultar sessões inativas',
2441
+ 'sm.show_idle': 'Mostrar sessões inativas',
2442
+ 'sm.query_text_note': 'O texto de uma consulta só é mostrado para funções cujas estatísticas o proprietário pode ler ({role}).',
2443
+ 'sm.col.user': 'Utilizador',
2444
+ 'sm.col.application': 'Aplicação',
2445
+ 'sm.col.state': 'Estado',
2446
+ 'sm.col.wait': 'Espera',
2447
+ 'sm.col.running': 'Em execução (s)',
2448
+ 'sm.col.blocked_by': 'Bloqueada por',
2449
+ 'sm.col.query': 'Consulta',
2450
+ 'sm.col.actions': 'Ações',
2451
+ 'sm.statement_link': 'Estatísticas e plano desta instrução',
2452
+ 'sm.no_other': 'Nenhuma outra sessão.',
2453
+ 'sm.no_busy': 'Nenhuma sessão ocupada.',
2454
+ 'sm.waits': 'Eventos de espera',
2455
+ 'sm.waits_intro': 'O que as sessões ativas do servidor esperam agora ({cpu} quando não esperam).',
2456
+ 'sm.cpu_running': 'CPU: em execução',
2457
+ 'sm.col.type': 'Tipo',
2458
+ 'sm.col.event': 'Evento',
2459
+ 'sm.no_other_active': 'Nenhuma outra sessão ativa.',
2460
+ 'sm.in_progress': 'Em curso',
2461
+ 'sm.col.command': 'Comando',
2462
+ 'sm.col.object': 'Objeto',
2463
+ 'sm.col.phase': 'Fase',
2464
+ 'sm.col.done': 'Feito',
2465
+ 'sm.updated': 'Atualizado {time} UTC',
2466
+ 'sm.refresh': 'Atualizar',
2467
+ 'sm.refresh_every': 'Atualizar a cada',
2468
+ 'sm.seconds': '{n} segundos',
2469
+ 'sm.pause': 'Pausa',
2470
+ 'sm.not_client': 'A sessão {pid} (já) não é uma sessão de cliente desta base de dados.',
2471
+ 'sm.cancelled': 'Pedido à sessão {pid} que cancele a sua instrução.',
2472
+ 'sm.terminated': 'Sessão {pid} terminada.',
2473
+ 'sm.not_signalled': 'Não foi possível sinalizar a sessão {pid}.',
2474
+ 'sm.col.role': 'Função',
2475
+ 'sm.col.calls': 'Chamadas',
2476
+ 'sm.col.total_ms': 'Total ms',
2477
+ 'sm.col.mean_ms': 'Média ms',
2478
+ 'sm.col.rows': 'Linhas',
2479
+ 'sm.col.hit': 'Blocos em cache',
2480
+ 'sm.col.read': 'Blocos lidos',
2481
+ 'sm.col.statement': 'Instrução',
2482
+ 'sm.sort_by': 'Ordenar por {column}',
2483
+ 'sm.contains': 'A instrução contém',
2484
+ 'sm.no_match': 'Nenhuma instrução corresponde.',
2485
+ 'sm.none_yet': 'Ainda não há instruções registadas.',
2486
+ 'sm.since': 'Estatísticas desde {time}.',
2487
+ 'sm.at_most': 'São mostradas no máximo 100 instruções; literais e binds aparecem como {p1}, {p2}….',
2488
+ 'sm.reset_confirm': 'Limpar as estatísticas de instruções de todo o servidor?',
2489
+ 'sm.reset': 'Repor estatísticas',
2490
+ 'sm.reset_done': 'Estatísticas de instruções repostas.',
2491
+ 'sm.top_intro': 'As instruções desta base de dados de {ext}, todas as funções. Clique numa instrução para ver o seu plano.',
2492
+ 'sm.statement': 'Instrução',
2493
+ 'sm.temp_blocks_written': 'Blocos temporários escritos',
2494
+ 'sm.text': 'Texto',
2495
+ 'sm.sql_text': 'Texto SQL',
2496
+ 'sm.open_worksheet': 'Abrir na folha de trabalho',
2497
+ 'sm.back_top': 'Voltar a Top SQL',
2498
+ 'sm.by_role': 'Por função',
2499
+ 'sm.nested': 'aninhada',
2500
+ 'sm.col.stddev_ms': 'Desv. padrão ms',
2501
+ 'sm.col.min_ms': 'Mín. ms',
2502
+ 'sm.col.max_ms': 'Máx. ms',
2503
+ 'sm.col.hit_short': 'Em cache',
2504
+ 'sm.col.read_short': 'Lidos',
2505
+ 'sm.col.temp_read': 'Temp. lidos',
2506
+ 'sm.col.temp_written': 'Temp. escritos',
2507
+ 'sm.explain_plan': 'Plano de execução',
2508
+ 'sm.explain_intro': 'EXPLAIN sem executar a instrução. Os nomes não qualificados são procurados primeiro no esquema que escolher.',
2509
+ 'sm.explain_intro_params': 'EXPLAIN sem executar a instrução: os seus parâmetros ($1, …) recebem um plano genérico. Os nomes não qualificados são procurados primeiro no esquema que escolher.',
2510
+ 'sm.schema': 'Esquema',
2511
+ 'sm.search_path': '(o caminho de pesquisa)',
2512
+ 'sm.explain': 'Explicar',
2513
+ 'sm.err.one': 'Só é possível explicar uma instrução SQL.',
2514
+ 'sm.err.kind': 'Só as instruções SELECT, INSERT, UPDATE, DELETE, MERGE e VALUES têm um plano.',
2515
+ 'sm.err.generic': 'A instrução tem parâmetros ($1, …): o PostgreSQL 16 ou posterior pode explicá-la com um plano genérico. Abra-a na folha de trabalho e preencha valores.',
2516
+ 'sm.err.params': 'A instrução tem demasiados parâmetros para ser explicada.',
2517
+ 'topsql.not_installed': 'A extensão {ext} não está instalada nesta base de dados. Para a ativar: defina {setting} (postgresql.conf, ou {alter}), reinicie o PostgreSQL e depois, como superutilizador: {create}',
2518
+ 'topsql.not_loaded': 'O servidor ainda não carrega {ext}. Defina {setting} (o {compose} de desenvolvimento fá-lo) e reinicie o PostgreSQL.',
2519
+ 'topsql.read_error': 'Não foi possível ler as estatísticas: {message}',
2520
+ 'topsql.sort_by': 'Ordenar por {total} {mean} {calls} {rows}',
2521
+ 'topsql.sort.total': 'tempo total',
2522
+ 'topsql.sort.mean': 'tempo por chamada',
2523
+ 'topsql.sort.calls': 'chamadas',
2524
+ 'topsql.sort.rows': 'linhas',
2525
+ 'topsql.share': 'Proporção',
2526
+ 'topsql.reset_confirm': 'Limpar as estatísticas da função {role}?',
2527
+ 'topsql.reset': 'Repor as estatísticas',
2528
+ 'topsql.none_yet': 'Ainda não há instruções registadas para {role}. Use a aplicação e depois volte.',
2529
+ 'topsql.no_role': 'Esta aplicação é executada com a função proprietária, por isso as suas instruções não se distinguem. Atribua-lhe uma função de base de dados nas Definições.',
2530
+ 'topsql.owner': '(proprietário)',
2531
+ 'topsql.intro': 'Instruções executadas com a função {role} desde a última reposição das estatísticas, de {ext}. Literais e binds aparecem como {p1}, {p2}…; aplicações que partilham uma função partilham esta lista.',
2532
+ 'topsql.back_activity': 'Voltar a Atividade',
2533
+ 'topsql.activity': 'Atividade',
2534
+ 'topsql.no_db_role': 'A aplicação não tem função de base de dados.',
2535
+ 'topsql.reset_done': 'Estatísticas repostas.',
2536
+ // ------------------------------------------------------------ SQL Monitor and Data Modeler in the browser (sprint 162)
2537
+ 'js.sm.resume': 'Retomar',
2538
+ 'js.sm.pause': 'Pausa',
2539
+ 'js.sm.stopped': 'Atualização parada: não foi possível contactar o monitor (sessão terminada?). Recarregue a página.',
2540
+ 'js.dm.unsaved': 'Alterações não guardadas',
2541
+ 'js.dm.saving': 'A guardar…',
2542
+ 'js.dm.saved': 'Guardado',
2543
+ 'js.dm.not_saved': 'Não guardado ({error}): tente novamente',
2544
+ 'js.dm.no_png': 'Não foi possível criar o PNG: exporte SVG em alternativa',
2545
+ // ------------------------------------------------------------ Quick SQL, SQL Scripts (sprint 162, CD-8)
2546
+ 'qs.syntax': 'Sintaxe',
2547
+ 'qs.syntax.tables': 'Um nome de tabela numa linha própria, com as colunas indentadas por baixo. Uma tabela indentada sob outra é uma tabela filha: recebe `<parent>_id`, que referencia a tabela pai.',
2548
+ 'qs.syntax.types': 'Tipos de coluna a partir do nome (`*_id` bigint, `*_at` timestamptz, `*_date`/`*_on` date, `is_*` boolean, `price`/`amount` numeric, caso contrário text) ou escritos a seguir: `vc200`, `num`, `num(10,2)`, `int`, `date`, `ts`, `tstz`, `clob`, `blob`, `json`, `bool`, `uuid`.',
2549
+ 'qs.syntax.directives': 'Diretivas de coluna: `/nn`, `/pk`, `/unique`, `/idx`, `/fk table`, `/check a, b`, `/between 1 and 10`, `/default value`, `/lower`, `/upper`; `[a comment]`. Diretiva de tabela: `/auditcols`.',
2550
+ 'qs.syntax.settings': 'Definições: `# pk: identity | seq | guid | none`, `# schema: name`, `# prefix: xx`, `# drop: true`, `# auditcols: true` ou `# settings = { pk: "guid", schema: "app" }`.',
2551
+ 'qs.syntax.views': '`view name table1 table2`: uma vista que junta as tabelas pelas suas chaves estrangeiras. `--` inicia um comentário.',
2552
+ 'qs.generate': 'Gerar SQL',
2553
+ 'qs.line': 'Linha {line}: {message}',
2554
+ 'qs.generated': 'SQL gerado',
2555
+ 'qs.save_or_run': 'Guardar ou executar',
2556
+ 'qs.script_name': 'Nome do script',
2557
+ 'qs.save_script': 'Guardar como script',
2558
+ 'qs.run': 'Executar',
2559
+ 'qs.too_large': 'O Quick SQL tem mais de 1 MB.',
2560
+ 'qs.script_too_large': 'O script gerado é demasiado grande.',
2561
+ 'qs.saved': 'Guardado como script “{name}”.',
2562
+ 'scr.error': 'Erro',
2563
+ 'scr.skipped': 'Ignorada',
2564
+ 'scr.not_run': 'Não executada',
2565
+ 'scr.summary': '{n} instrução(ões): {ok} com êxito, {failed} falhadas.',
2566
+ 'scr.summary_rest': '{n} instrução(ões): {ok} com êxito, {failed} falhadas, {rest} não executadas ou ignoradas.',
2567
+ 'scr.rolled_back_note': 'A transação foi revertida: nada foi alterado.',
2568
+ 'scr.no_statements': 'O script não tem instruções.',
2569
+ 'scr.line': 'linha {line}',
2570
+ 'scr.done': 'concluído',
2571
+ 'scr.rows': '{n} linha(s)',
2572
+ 'scr.first_rows': 'Primeiras {shown} de {n} linha(s).',
2573
+ 'scr.when_fails': 'Quando uma instrução falha',
2574
+ 'scr.stop': 'Parar o script',
2575
+ 'scr.continue': 'Continuar com a instrução seguinte',
2576
+ 'scr.one_tx': 'Executar numa transação (com “Parar”, uma falha reverte o script inteiro)',
2577
+ 'scr.col.started': 'Início',
2578
+ 'scr.col.script': 'Script',
2579
+ 'scr.col.by': 'Por',
2580
+ 'scr.col.statements': 'Instruções',
2581
+ 'scr.col.failed': 'Falhadas',
2582
+ 'scr.col.result': 'Resultado',
2583
+ 'scr.rolled_back': 'Revertido',
2584
+ 'scr.errors': 'Erros',
2585
+ 'scr.no_runs': 'Ainda não há execuções.',
2586
+ 'scr.col.updated': 'Atualizado',
2587
+ 'scr.col.size': 'Tamanho',
2588
+ 'scr.col.last_run': 'Última execução',
2589
+ 'scr.col.open': 'Abrir',
2590
+ 'scr.by': 'por {user}',
2591
+ 'scr.never': 'nunca',
2592
+ 'scr.worksheet': 'Folha de trabalho',
2593
+ 'scr.download': 'Transferir',
2594
+ 'scr.none_yet': 'Ainda não há scripts. Crie um, carregue um ficheiro .sql ou gere um com o Quick SQL.',
2595
+ 'scr.create': 'Criar script',
2596
+ 'scr.scripts': 'Scripts',
2597
+ 'scr.upload_title': 'Carregar um script',
2598
+ 'scr.file': 'Ficheiro .sql (UTF-8, até {mb} MB)',
2599
+ 'scr.upload': 'Carregar',
2600
+ 'scr.recent_runs': 'Execuções recentes',
2601
+ 'scr.name': 'Nome',
2602
+ 'scr.description': 'Descrição',
2603
+ 'scr.content_help': 'As instruções terminam com ponto e vírgula (fora de cadeias, comentários e corpos $$). Os comandos psql (\\set, \\i …) são ignorados.',
2604
+ 'scr.statements': '{n} instrução(ões).',
2605
+ 'scr.save': 'Guardar',
2606
+ 'scr.save_run': 'Guardar e executar',
2607
+ 'scr.delete_confirm': 'Eliminar este script e o seu histórico de execuções?',
2608
+ 'scr.delete': 'Eliminar',
2609
+ 'scr.new': 'Novo script',
2610
+ 'scr.script_title': 'Script: {name}',
2611
+ 'scr.runs': 'Execuções',
2612
+ 'scr.err.name': 'Dê um nome ao script (no máximo 200 caracteres).',
2613
+ 'scr.err.size': 'O script tem mais de {mb} MB.',
2614
+ 'scr.err.exists': 'Já existe um script chamado “{name}”.',
2615
+ 'scr.saved': 'Script “{name}” guardado.',
2616
+ 'scr.deleted': 'Script “{name}” eliminado.',
2617
+ 'scr.err.choose': 'Escolha um ficheiro .sql.',
2618
+ 'scr.err.file_size': 'O ficheiro tem mais de {mb} MB.',
2619
+ 'scr.err.utf8': 'O ficheiro não é texto UTF-8.',
2620
+ 'scr.err.text': 'O ficheiro não é um ficheiro de texto.',
2621
+ 'scr.uploaded': 'Script “{name}” carregado.',
2622
+ 'scr.opt.stop': 'parar em caso de erro',
2623
+ 'scr.opt.continue': 'continuar em caso de erro',
2624
+ 'scr.opt.one_tx': 'uma transação',
2625
+ 'scr.results_title': 'Resultados do script',
2626
+ 'scr.results': 'Resultados',
2627
+ 'scr.results_of': 'Resultados: {name}',
2628
+ 'scr.run_by': 'Executado por {user} às {time} em {ms} ms ({options}).',
2629
+ 'scr.edit': 'Editar o script',
2630
+ // ------------------------------------------------------------ Generate DDL, Schema Comparison, Change Log (sprint 162, CD-8)
2631
+ 'ddl.type.types': 'Tipos e domínios',
2632
+ 'ddl.type.sequences': 'Sequências',
2633
+ 'ddl.type.tables': 'Tabelas (restrições, índices)',
2634
+ 'ddl.type.views': 'Vistas e vistas materializadas',
2635
+ 'ddl.type.functions': 'Funções e procedimentos',
2636
+ 'ddl.type.triggers': 'Gatilhos',
2637
+ 'ddl.type.policies': 'Segurança ao nível da linha e políticas',
2638
+ 'ddl.choose_schema': '- escolha um esquema -',
2639
+ 'ddl.of': 'DDL de {schema}',
2640
+ 'ddl.objects_review': '{n} objeto(s). Reveja o script antes de o executar (SQL Workshop → Scripts SQL).',
2641
+ 'ddl.download': 'Transferir {file}',
2642
+ 'ddl.intro': 'O DDL dos objetos de um esquema, a partir do catálogo, numa ordem que executa: tipos, sequências, tabelas, funções, vistas, restrições, índices, gatilhos, segurança ao nível da linha, comentários e privilégios (APEX: Gerar DDL). Os objetos de extensões são omitidos.',
2643
+ 'ddl.objects': 'Objetos',
2644
+ 'ddl.comments': 'Comentários',
2645
+ 'ddl.grants': 'Privilégios',
2646
+ 'ddl.generate': 'Gerar',
2647
+ 'cmp.only_source': 'Só na origem',
2648
+ 'cmp.only_target': 'Só no destino',
2649
+ 'cmp.different': 'Diferentes',
2650
+ 'cmp.n_only_source': '{n} só na origem',
2651
+ 'cmp.n_only_target': '{n} só no destino',
2652
+ 'cmp.n_different': '{n} diferentes',
2653
+ 'cmp.apply_confirm': 'Executar o script de alterações em {target} numa transação?',
2654
+ 'cmp.apply': 'Aplicar e registar',
2655
+ 'cmp.apply_note': 'Executa o script em {target} (os drops comentados ficam de fora) e regista-o no {log}.',
2656
+ 'cmp.change_log': 'registo de alterações',
2657
+ 'cmp.two_different': 'Escolha dois esquemas diferentes.',
2658
+ 'cmp.summary': 'Resumo',
2659
+ 'cmp.differences': '{n} diferença(s): {parts}; {same} objeto(s) iguais.',
2660
+ 'cmp.same': 'Os esquemas são iguais ({n} objetos).',
2661
+ 'cmp.both': '{source} e {target}',
2662
+ 'cmp.script_title': 'Script de alterações: tornar {target} igual a {source}',
2663
+ 'cmp.script_intro': 'Cria o que só {source} tem, altera o que difere e lista o que só {target} tem como drops comentados; as colunas que mudam de identidade ou geração, e os tipos, domínios e sequências que diferem, ficam para revisão. Nada é executado até escolher Aplicar e registar.',
2664
+ 'cmp.change_script': 'Script de alterações',
2665
+ 'cmp.intro': 'Compara os objetos de dois esquemas desta base de dados pelo seu DDL (APEX: Comparação de esquemas), p. ex. uma cópia de desenvolvimento com o esquema de origem, e escreve um script que torna o destino igual à origem. A ordem das colunas de uma tabela não é comparada.',
2666
+ 'cmp.source': 'Origem',
2667
+ 'cmp.target': 'Destino (a tornar igual à origem)',
2668
+ 'cmp.compare': 'Comparar',
2669
+ 'cmp.nothing': '{target} já é igual a {source}: nada a aplicar.',
2670
+ 'cmp.failed': 'Nada foi alterado: o script correu numa transação, que foi revertida. {error}',
2671
+ 'cmp.applied': '{target} é agora igual a {source}: {n} instrução(ões), registadas no registo de alterações.',
2672
+ 'cl.from.table': 'Propriedades da tabela',
2673
+ 'cl.schemas': 'Esquemas',
2674
+ 'cl.col.change_set': 'Conjunto de alterações',
2675
+ 'cl.col.author': 'Autor',
2676
+ 'cl.col.recorded': 'Registado',
2677
+ 'cl.col.from': 'De',
2678
+ 'cl.col.latest_export': 'Última exportação da aplicação',
2679
+ 'cl.col.migration_file': 'Ficheiro de migração',
2680
+ 'cl.rename': 'Mudar o nome',
2681
+ 'cl.delete_confirm': 'Eliminar o conjunto de alterações {n} do registo? A base de dados não é alterada e o seu número não volta a ser atribuído.',
2682
+ 'cl.in_it': 'incluído',
2683
+ 'cl.after_it': 'posterior',
2684
+ 'cl.written': 'escrito {time}',
2685
+ 'cl.not_yet': 'ainda não',
2686
+ 'cl.none_yet': 'Ainda não há conjuntos de alterações. O DDL que executar na folha de trabalho SQL ou aplicar nas Propriedades da tabela ou a partir da Comparação de esquemas é registado aqui.',
2687
+ 'cl.compare_with': 'Comparar com a última exportação de',
2688
+ 'cl.show': 'Mostrar',
2689
+ 'cl.export_note': '✓ incluído: registado antes da última exportação da aplicação, pelo que uma implementação dessa exportação espera a alteração. {after}: ainda por enviar com a próxima exportação.',
2690
+ 'cl.no_exports': 'Ainda nenhuma aplicação deste espaço de trabalho foi exportada a partir do construtor (Aplicação › Exportar): os conjuntos de alterações não podem ser comparados com uma exportação.',
2691
+ 'cl.format': 'Formato',
2692
+ 'cl.format.flyway': 'Flyway: ficheiros V0001__name.sql (um zip para vários)',
2693
+ 'cl.format.liquibase': 'Liquibase: changelog SQL formatado',
2694
+ 'cl.format.sql': 'Script SQL simples',
2695
+ 'cl.change_sets': 'Conjuntos de alterações',
2696
+ 'cl.which.pending': 'Ainda não escritos num ficheiro ({n})',
2697
+ 'cl.which.all': 'Todos de {schema} ({n})',
2698
+ 'cl.which.after': 'Após a última exportação de {app} ({n})',
2699
+ 'cl.download': 'Transferir migração',
2700
+ 'cl.intro': 'O registo de alterações (Liquibase, Flyway): o DDL executado a partir da folha de trabalho SQL, das Propriedades da tabela e da Comparação de esquemas é guardado como conjuntos de alterações por esquema, com quem o executou e quando. Transfira-os como migração para outra base de dados: ficheiros versionados Flyway, um changelog SQL formatado Liquibase ou um script simples. Só são guardadas as instruções com êxito; as alterações de dados (INSERT, UPDATE, DELETE) não.',
2701
+ 'cl.change_sets_of': 'Conjuntos de alterações de {schema}',
2702
+ 'cl.nothing_to_write': 'Não há conjuntos de alterações a escrever: todos estão num ficheiro anterior. Escolha “Todos”.',
2703
+ 'cl.bad_name': 'Um nome tem letras minúsculas, dígitos e _ (no máximo 60), a começar por uma letra ou dígito.',
2704
+ 'cl.renamed': 'O conjunto de alterações {n} é agora {file}.',
2705
+ 'cl.deleted': 'Conjunto de alterações {n} removido do registo; a base de dados não foi alterada.',
2706
+ // ------------------------------------------------------------ Charts, Unload Data (sprint 162, CD-8)
2707
+ 'ch.kind.bar': 'Barras',
2708
+ 'ch.kind.column': 'Colunas',
2709
+ 'ch.kind.stacked': 'Barras empilhadas',
2710
+ 'ch.kind.line': 'Linhas',
2711
+ 'ch.kind.area': 'Área',
2712
+ 'ch.kind.donut': 'Anel',
2713
+ 'ch.kind.pie': 'Circular',
2714
+ 'ch.kind.scatter': 'Dispersão',
2715
+ 'ch.type': 'Tipo',
2716
+ 'ch.labels': 'Rótulos',
2717
+ 'ch.values': 'Valores',
2718
+ 'ch.no_number': 'A consulta não tem coluna numérica para desenhar.',
2719
+ 'ch.row_one': '1 linha.',
2720
+ 'ch.rows': '{n} linhas.',
2721
+ 'ch.rows_first': '{n} linhas (as primeiras {n}).',
2722
+ 'ch.intro': 'Consultas desenhadas como gráficos. Crie um a partir de uma consulta na {worksheet} (separador Gráfico, Ctrl+F11) e guarde-o.',
2723
+ 'ch.all': 'Todos os gráficos',
2724
+ 'ch.chart': 'Gráfico',
2725
+ 'ch.on_dashboard_col': 'No painel',
2726
+ 'ch.changed': 'Alterado',
2727
+ 'ch.yes': 'Sim',
2728
+ 'ch.no': 'Não',
2729
+ 'ch.none_yet': 'Ainda não há gráficos.',
2730
+ 'ch.on_dashboard': 'No painel de gráficos',
2731
+ 'ch.query': 'A consulta',
2732
+ 'ch.open_worksheet': 'Abrir na folha de trabalho',
2733
+ 'ch.delete_confirm': 'Eliminar o gráfico {name}?',
2734
+ 'ch.deleted': 'Gráfico {name} eliminado.',
2735
+ 'ch.err.name': 'Um gráfico precisa de um nome (no máximo 120 caracteres).',
2736
+ 'ch.err.exists': 'Já existe um gráfico chamado “{name}”.',
2737
+ 'ch.saved': 'Gráfico {name} guardado.',
2738
+ 'ch.err.select': 'Só é possível guardar um gráfico de um único SELECT.',
2739
+ 'ch.err.name_new': 'Dê um nome ao gráfico para o guardar (no máximo 120 caracteres).',
2740
+ 'ch.saved_new': 'Gráfico {name} guardado: está no painel de gráficos.',
2741
+ 'ul.fmt.xlsx': 'Excel (.xlsx)',
2742
+ 'ul.fmt.sql': 'Inserts SQL',
2743
+ 'ul.separator': 'Separador',
2744
+ 'ul.sep.comma': 'Vírgula ,',
2745
+ 'ul.sep.semicolon': 'Ponto e vírgula ;',
2746
+ 'ul.sep.tab': 'Tabulação',
2747
+ 'ul.sep.pipe': 'Barra vertical |',
2748
+ 'ul.enclosed': 'Delimitado por',
2749
+ 'ul.enc.double': 'Aspas duplas "',
2750
+ 'ul.enc.single': 'Aspa simples \'',
2751
+ 'ul.enclosed_help': 'Só são delimitados os valores que contêm o separador, o delimitador ou uma quebra de linha.',
2752
+ 'ul.header': 'Primeira linha: nomes das colunas',
2753
+ 'ul.bom': 'Marca de ordem de bytes UTF-8 (para Excel)',
2754
+ 'ul.root': 'Elemento raiz',
2755
+ 'ul.row': 'Elemento de linha',
2756
+ 'ul.row_help': 'Um elemento filho por coluna; os valores vazios (null) são omitidos.',
2757
+ 'ul.from': 'Descarregar de',
2758
+ 'ul.table_or_view': 'Tabela ou vista',
2759
+ 'ul.intro': 'Transfira as linhas de uma tabela, vista ou consulta como CSV, JSON, Excel ou XML (até {n} linhas).',
2760
+ 'ul.intro2': 'É executado com a ligação proprietária do construtor (para os programadores de um espaço de trabalho isolado, com o seu início de sessão de programador) numa transação só de leitura. Para carregar um ficheiro numa tabela, use {load}.',
2761
+ 'ul.unload_query': 'Descarregar uma consulta',
2762
+ 'ul.one_select': 'Uma instrução SELECT (ou WITH … SELECT).',
2763
+ 'ul.choose_table': '- escolha uma tabela ou vista -',
2764
+ 'ul.view': '(vista)',
2765
+ 'ul.choose': 'Escolher',
2766
+ 'ul.unload_table': 'Descarregar uma tabela ou vista',
2767
+ 'ul.unload_of': 'Descarregar {name}',
2768
+ 'ul.columns': 'Colunas',
2769
+ 'ul.where': 'Where',
2770
+ 'ul.eg': 'p. ex. {x}',
2771
+ 'ul.where_help': 'Opcional: uma condição, sem a palavra WHERE.',
2772
+ 'ul.order': 'Order by',
2773
+ 'ul.order_help': 'Opcional: colunas, sem as palavras ORDER BY.',
2774
+ 'ul.err.table': 'Escolha uma tabela ou vista.',
2775
+ 'ul.err.column': 'Escolha pelo menos uma coluna.',
2776
+ 'ul.err.failed': 'A consulta falhou: {error}',
2777
+ // ------------------------------------------------------------ Sample Data (sprint 162, CD-8)
2778
+ 'sd.help': 'Geradores e as suas opções',
2779
+ 'sd.intro': 'Gere linhas realistas para as tabelas de um esquema: nomes, endereços de e-mail, datas e números num intervalo, valores de uma lista, chaves estrangeiras que escolhem linhas pai existentes. Pré-visualize-as, insira-as numa transação (pais primeiro) ou transfira-as como SQL ou CSV. É executado com a ligação proprietária do construtor (para os programadores de um espaço de trabalho isolado, com o seu início de sessão de programador), tal como a {worksheet}.',
2780
+ 'sd.none_saved': 'Ainda não há geradores guardados: gere linhas abaixo e depois guarde a definição para a voltar a executar.',
2781
+ 'sd.table_one': '1 tabela',
2782
+ 'sd.tables_n': '{n} tabelas',
2783
+ 'sd.tables_of': 'Tabelas de {schema}',
2784
+ 'sd.about_rows': '~{n} linhas',
2785
+ 'sd.propose': 'Propor geradores',
2786
+ 'sd.own_schema': 'Escolha um esquema seu: não meta, information_schema nem pg_*.',
2787
+ 'sd.new': 'Novo gerador',
2788
+ 'sd.saved_title': 'Geradores guardados',
2789
+ 'sd.generator': 'Gerador',
2790
+ 'sd.col_generator': '{column}: gerador',
2791
+ 'sd.col_options': '{column}: opções',
2792
+ 'sd.options': 'opções',
2793
+ 'sd.col_nulls': '{column}: % nulos',
2794
+ 'sd.pct_null': '% nulo',
2795
+ 'sd.missing': 'Já não encontradas, omitidas: {tables}.',
2796
+ 'sd.seed': 'Semente',
2797
+ 'sd.seed_help': 'A mesma semente dá as mesmas linhas (para as mesmas tabelas e linhas pai). Vazia: uma nova semente em cada execução; uma pré-visualização preenche-a, pelo que Inserir adiciona as linhas que viu.',
2798
+ 'sd.change_tables': 'alterar tabelas',
2799
+ 'sd.preview': 'Pré-visualizar',
2800
+ 'sd.insert': 'Inserir linhas',
2801
+ 'sd.download_sql': 'Transferir SQL',
2802
+ 'sd.download_csv': 'Transferir CSV',
2803
+ 'sd.save_def': 'Guardar a definição',
2804
+ 'sd.save_new': 'Guardar como novo gerador',
2805
+ 'sd.delete_confirm': 'Eliminar esta definição de gerador? As linhas já inseridas mantêm-se.',
2806
+ 'sd.delete': 'Eliminar gerador',
2807
+ 'sd.inserted': 'Inserido',
2808
+ 'sd.inserted_counts': '{counts} inseridas (semente {seed}).',
2809
+ 'sd.rolled_back': 'Revertido: nada foi guardado.',
2810
+ 'sd.seed_is': 'semente {seed}',
2811
+ 'sd.first_of': 'primeiras {shown} de {n}',
2812
+ 'sd.no_rows': 'Sem linhas.',
2813
+ 'sd.err.name': 'Dê um nome ao gerador para o guardar.',
2814
+ 'sd.err.length': 'O nome tem no máximo 100 caracteres e a descrição 1000.',
2815
+ 'sd.err.table': 'Escolha pelo menos uma tabela.',
2816
+ 'sd.saved': 'Gerador {name} guardado.',
2817
+ 'sd.err.action': 'Ação desconhecida.',
2818
+ 'sd.nothing_inserted': 'Nada foi inserido: a transação foi revertida.',
2819
+ 'sd.deleted': 'Gerador {name} eliminado.',
2820
+ // ------------------------------------------------------------ Sample Data generators (run-time keys sd.gen.*, sd.opt.*)
2821
+ 'sd.gen.skip': 'Ignorar (predefinição / identidade)',
2822
+ 'sd.gen.first_name': 'Nome próprio',
2823
+ 'sd.gen.last_name': 'Apelido',
2824
+ 'sd.gen.full_name': 'Nome completo',
2825
+ 'sd.gen.email': 'Endereço de e-mail',
2826
+ 'sd.gen.username': 'Nome de utilizador',
2827
+ 'sd.gen.phone': 'Número de telefone',
2828
+ 'sd.gen.company': 'Nome da empresa',
2829
+ 'sd.gen.job_title': 'Cargo',
2830
+ 'sd.gen.address': 'Morada',
2831
+ 'sd.gen.postal_code': 'Código postal',
2832
+ 'sd.gen.city': 'Cidade',
2833
+ 'sd.gen.country': 'País',
2834
+ 'sd.gen.word': 'Palavra',
2835
+ 'sd.gen.words': 'Palavras (título)',
2836
+ 'sd.gen.sentence': 'Frase',
2837
+ 'sd.gen.code': 'Código (padrão)',
2838
+ 'sd.gen.url': 'Endereço web',
2839
+ 'sd.gen.uuid': 'UUID',
2840
+ 'sd.gen.integer': 'Número inteiro (intervalo)',
2841
+ 'sd.gen.decimal': 'Número decimal (intervalo)',
2842
+ 'sd.gen.date': 'Data (intervalo)',
2843
+ 'sd.gen.timestamp': 'Carimbo de data/hora (intervalo)',
2844
+ 'sd.gen.time': 'Hora do dia (intervalo)',
2845
+ 'sd.gen.boolean': 'Booleano (% verdadeiro)',
2846
+ 'sd.gen.list': 'Valor de uma lista',
2847
+ 'sd.gen.sequence': 'Sequência (início, passo)',
2848
+ 'sd.gen.foreign_key': 'Chave estrangeira (linha pai existente)',
2849
+ 'sd.gen.fixed': 'Valor fixo',
2850
+ 'sd.opt.skip': 'não inserido: o valor predefinido da coluna, identidade ou null',
2851
+ 'sd.opt.first_name': 'sem opções',
2852
+ 'sd.opt.last_name': 'sem opções',
2853
+ 'sd.opt.full_name': 'sem opções',
2854
+ 'sd.opt.email': 'sem opções',
2855
+ 'sd.opt.username': 'sem opções',
2856
+ 'sd.opt.phone': 'sem opções',
2857
+ 'sd.opt.company': 'sem opções',
2858
+ 'sd.opt.job_title': 'sem opções',
2859
+ 'sd.opt.address': 'sem opções',
2860
+ 'sd.opt.postal_code': 'sem opções',
2861
+ 'sd.opt.city': 'sem opções',
2862
+ 'sd.opt.country': 'sem opções',
2863
+ 'sd.opt.word': 'sem opções',
2864
+ 'sd.opt.words': 'número de palavras, p. ex. 1..3',
2865
+ 'sd.opt.sentence': 'número de palavras, p. ex. 4..12',
2866
+ 'sd.opt.code': 'padrão: A letra, a letra minúscula, 9 dígito, outros caracteres tal como escritos, p. ex. AAA-9999',
2867
+ 'sd.opt.url': 'sem opções',
2868
+ 'sd.opt.uuid': 'sem opções',
2869
+ 'sd.opt.integer': 'mín..máx, p. ex. 1..1000; ou outra coluna mais um intervalo, p. ex. quantity + 0..10',
2870
+ 'sd.opt.decimal': 'mín..máx; as casas decimais da coluna ou dos números, p. ex. 0.00..999.99; ou coluna + mín..máx',
2871
+ 'sd.opt.date': 'de..até, p. ex. 2021-01-01..2026-12-31; ou outra coluna mais dias, p. ex. start_date + 0..14',
2872
+ 'sd.opt.timestamp': 'de..até (datas), p. ex. 2021-01-01..2026-12-31; ou coluna + mín..máx dias, p. ex. created_at + 0..2',
2873
+ 'sd.opt.time': 'de..até, p. ex. 08:00..18:00',
2874
+ 'sd.opt.boolean': 'percentagem verdadeiro, p. ex. 50',
2875
+ 'sd.opt.list': 'valores separados por vírgulas, p. ex. NEW, OPEN, CLOSED',
2876
+ 'sd.opt.sequence': 'início ou início, passo, p. ex. 1000, 10',
2877
+ 'sd.opt.foreign_key': 'uma linha pai existente aleatória; os pais gerados na mesma execução são inseridos primeiro',
2878
+ 'sd.opt.fixed': 'o valor',
2879
+ // ------------------------------------------------------------ Query Builder (sprint 162, CD-8)
2880
+ 'qb.tables': 'Tabelas e vistas',
2881
+ 'qb.tables_of': 'Tabelas e vistas de {schema}',
2882
+ 'qb.view': 'vista',
2883
+ 'qb.no_tables': 'Este esquema não tem tabelas nem vistas.',
2884
+ 'qb.apply': 'Aplicar',
2885
+ 'qb.columns_help': 'Nenhuma marcada: todas as colunas. Uma função (count, sum, …) agrupa as linhas pelas outras colunas escolhidas. Arraste uma tabela pela pega (ou foque a pega e use as setas); arraste o ponto junto a uma coluna para uma coluna de outra tabela para as juntar.',
2886
+ 'qb.distinct': 'Linhas distintas',
2887
+ 'qb.move': 'Mover {table} (setas)',
2888
+ 'qb.drag_move': 'Arraste para mover',
2889
+ 'qb.function_for': 'Função para {column}',
2890
+ 'qb.join_label': 'Juntar {column} a uma coluna de outra tabela',
2891
+ 'qb.join_title': 'Arraste para uma coluna de outra tabela para as juntar',
2892
+ 'qb.joins': 'Junções',
2893
+ 'qb.joins_help': 'A partir das chaves estrangeiras entre as tabelas escolhidas, ou das colunas que juntou.',
2894
+ 'qb.cross_join': 'Nenhuma chave estrangeira liga {table} às outras tabelas: é feito um produto cartesiano. Junte duas colunas na tela ou em Junções.',
2895
+ 'qb.on': 'em',
2896
+ 'qb.and': 'e',
2897
+ 'qb.cross': 'produto cartesiano',
2898
+ 'qb.join_type': 'Tipo de junção para {table}',
2899
+ 'qb.inner': 'junção interna',
2900
+ 'qb.left': 'junção à esquerda (manter linhas sem correspondência)',
2901
+ 'qb.join_two': 'Juntar duas colunas',
2902
+ 'qb.join_a': 'Junção: coluna',
2903
+ 'qb.join_b': 'Junção: coluna de outra tabela',
2904
+ 'qb.conditions': 'Condições',
2905
+ 'qb.rows_match': 'As linhas devem cumprir',
2906
+ 'qb.all': 'todas as condições',
2907
+ 'qb.any': 'qualquer condição',
2908
+ 'qb.cond_column': 'Condição {n}: coluna',
2909
+ 'qb.cond_operator': 'Condição {n}: operador',
2910
+ 'qb.cond_value': 'Condição {n}: valor',
2911
+ 'qb.add_condition': 'Aplicar / adicionar uma condição',
2912
+ 'qb.sort_limit': 'Ordenar e limitar',
2913
+ 'qb.sort_column': 'Ordenação {n}: coluna',
2914
+ 'qb.sort_dir': 'Ordenação {n}: sentido',
2915
+ 'qb.asc': 'ascendente',
2916
+ 'qb.desc': 'descendente',
2917
+ 'qb.limit': 'No máximo (linhas)',
2918
+ 'qb.run': 'Executar na folha de trabalho SQL',
2919
+ 'qb.fn.count': 'contagem',
2920
+ 'qb.fn.count_distinct': 'contagem distinta',
2921
+ 'qb.fn.sum': 'soma',
2922
+ 'qb.fn.avg': 'média',
2923
+ 'qb.fn.min': 'mínimo',
2924
+ 'qb.fn.max': 'máximo',
2925
+ 'qb.op.eq': 'igual a',
2926
+ 'qb.op.ne': 'diferente de',
2927
+ 'qb.op.lt': 'menor que',
2928
+ 'qb.op.le': 'no máximo',
2929
+ 'qb.op.gt': 'maior que',
2930
+ 'qb.op.ge': 'no mínimo',
2931
+ 'qb.op.like': 'como (% _)',
2932
+ 'qb.op.ilike': 'como, sem distinguir maiúsculas',
2933
+ 'qb.op.in': 'em (a, b, c)',
2934
+ 'qb.op.is_null': 'está vazio',
2935
+ 'qb.op.is_not_null': 'não está vazio',
2936
+ // ------------------------------------------------------------ Object actions menu (sprint 162, CD-8)
2937
+ 'oa.actions_for': 'Ações para {name}',
2938
+ 'oa.open': 'Abrir',
2939
+ 'oa.edit': 'Editar…',
2940
+ 'oa.template': 'Usar como modelo',
2941
+ 'oa.security': 'Segurança…',
2942
+ 'oa.load': 'Carregar dados',
2943
+ 'oa.fulltext': 'Adicionar pesquisa de texto integral…',
2944
+ 'oa.vector': 'Adicionar coluna vetorial…',
2945
+ 'oa.document': 'Vista de documento…',
2946
+ 'oa.index': 'Adicionar índice',
2947
+ 'oa.trigger': 'Adicionar gatilho',
2948
+ 'oa.policy': 'Adicionar política',
2949
+ 'oa.rest': 'REST › Ativar / Desativar',
2950
+ 'oa.ddl': 'DDL rápido para a folha de trabalho',
2951
+ 'oa.ddl_file': 'DDL rápido como ficheiro',
2952
+ 'oa.drop': 'Eliminar…',
2953
+ 'oa.flash.ddl': 'O DDL de {name}.',
2954
+ 'oa.flash.drop': 'Reveja a instrução DROP e execute-a: ainda nada foi eliminado.',
2955
+ 'oa.flash.fill': 'Complete a instrução e execute-a: ainda nada foi alterado.',
2956
+ // ------------------------------------------------------------ Data Modeler (sprint 162, CD-8)
2957
+ 'dm.diagrams': 'Diagramas',
2958
+ 'dm.delete_confirm': 'Eliminar o diagrama {name}? As tabelas ficam como estão.',
2959
+ 'dm.delete_confirm_short': 'Eliminar o diagrama {name}?',
2960
+ 'dm.none_yet': 'Ainda não há diagramas neste espaço de trabalho.',
2961
+ 'dm.name_placeholder': 'tabelas principais',
2962
+ 'dm.objects_placeholder': 'orders, customers ou *',
2963
+ 'dm.objects_help': 'Nomes separados por vírgulas ou espaços; `*` para todos, `ord*` para os que começam por ord. Pode adicionar mais depois.',
2964
+ 'dm.create': 'Criar diagrama',
2965
+ 'dm.intro': 'Diagramas relacionais das tabelas e vistas de um esquema: as suas colunas, chaves e as chaves estrangeiras entre elas. A partir de um diagrama: o seu DDL e um dicionário de dados.',
2966
+ 'dm.schema_gone': 'O esquema {schema} já não existe, ou este espaço de trabalho não o pode usar.',
2967
+ 'dm.delete_diagram': 'Eliminar diagrama',
2968
+ 'dm.diagram': 'Diagrama',
2969
+ 'dm.undo': 'Anular',
2970
+ 'dm.redo': 'Refazer',
2971
+ 'dm.zoom_out': 'Reduzir',
2972
+ 'dm.zoom_in': 'Ampliar',
2973
+ 'dm.fit': 'Ajustar',
2974
+ 'dm.auto': 'Esquema automático',
2975
+ 'dm.minimap': 'Minimapa',
2976
+ 'dm.export_svg': 'Exportar SVG',
2977
+ 'dm.print': 'Imprimir',
2978
+ 'dm.dictionary': 'Dicionário de dados',
2979
+ 'dm.add_objects': 'Adicionar objetos',
2980
+ 'dm.objects_in': 'Objetos neste diagrama',
2981
+ 'dm.kind': 'Tipo',
2982
+ 'dm.references': 'Referências',
2983
+ 'dm.remove_label': 'Remover {name} do diagrama',
2984
+ 'dm.remove': 'Remover',
2985
+ 'dm.no_objects': 'Ainda não há objetos: adicione alguns abaixo.',
2986
+ 'dm.search_label': 'Pesquisar as tabelas e vistas de {schema}',
2987
+ 'dm.search_placeholder': 'Parte de um nome, emp* ou * para todos',
2988
+ 'dm.found': '{n} encontrados',
2989
+ 'dm.found_first': '500 encontrados (os primeiros 500)',
2990
+ 'dm.add_to': 'Adicionar ao diagrama',
2991
+ 'dm.nothing_matches': 'Nada mais corresponde a {q}.',
2992
+ 'dm.settings': 'Mudar o nome ou eliminar o diagrama',
2993
+ 'dm.head': 'Esquema {schema} · {n} objetos · atualizado {time} por {user}',
2994
+ 'dm.missing': 'Já não estão em {schema}: {names}. Ao guardar o diagrama são omitidos.',
2995
+ 'dm.canvas_label': 'Diagrama {name}: arraste uma caixa para a mover, ou foque-a e use as setas',
2996
+ 'dm.legend': 'P chave primária · F chave estrangeira · U única · {star} não nulo · uma linha vai da tabela que referencia (pé de galinha: muitos) para a referenciada (barra: um); tracejada quando a chave estrangeira pode estar vazia.',
2997
+ 'dm.legend_opens_table': 'O nome de uma caixa abre as Propriedades da tabela.',
2998
+ 'dm.legend_opens_object': 'O nome de uma caixa abre o objeto.',
2999
+ 'dm.add_title': 'Adicionar objetos ao diagrama',
3000
+ 'dm.con.p': 'Chave primária',
3001
+ 'dm.con.u': 'Única',
3002
+ 'dm.con.f': 'Chave estrangeira',
3003
+ 'dm.con.c': 'Verificação',
3004
+ 'dm.dict_title': 'Dicionário de dados: {name}',
3005
+ 'dm.dict_head': 'Esquema {schema} · {n} objetos · gerado {time} UTC',
3006
+ 'dm.columns_of': 'Colunas de {name}',
3007
+ 'dm.col.column': 'Coluna',
3008
+ 'dm.col.null': 'Nulo',
3009
+ 'dm.col.default': 'Predefinição',
3010
+ 'dm.col.key': 'Chave',
3011
+ 'dm.col.comment': 'Comentário',
3012
+ 'dm.constraints': 'Restrições',
3013
+ 'dm.constraints_of': 'Restrições de {name}',
3014
+ 'dm.definition': 'Definição',
3015
+ 'dm.referenced_by': 'Referenciada por',
3016
+ 'dm.err.name': 'Um diagrama precisa de um nome.',
3017
+ 'dm.created_n': 'Diagrama {name} criado com {n} objetos.',
3018
+ 'dm.created_empty': 'Diagrama {name} criado: adicione-lhe objetos.',
3019
+ 'dm.err.exists': 'Já existe um diagrama {name} neste espaço de trabalho.',
3020
+ 'dm.removed': '{name} removido do diagrama (a tabela fica como está).',
3021
+ 'dm.err.nothing': 'Nada a adicionar: escolha tabelas ou vistas do esquema que não estejam no diagrama.',
3022
+ 'dm.added': 'Adicionado(s) {n} objeto(s): {names}.',
3023
+ 'dm.laid_out': 'As caixas foram redistribuídas.',
3024
+ 'dm.saved': 'Diagrama guardado.',
3025
+ 'dm.renamed': 'Diagrama renomeado para {name}.',
3026
+ 'dm.deleted': 'Diagrama {name} eliminado.',
3027
+ 'dm.ddl_intro': 'As instruções CREATE dos {n} objetos do diagrama no esquema {schema}: tabelas, as suas chaves, índices, gatilhos, segurança ao nível da linha, políticas, comentários e privilégios, e vistas. Reveja antes de executar.',
3028
+ 'dm.back': 'Voltar ao diagrama',
3029
+ 'dm.open_worksheet': 'Abrir na folha de trabalho SQL',
3030
+ 'dm.download_html': 'Transferir HTML',
3031
+ 'dm.print_pdf': 'Imprimir ou guardar como PDF',
3032
+ // ------------------------------------------------------------ Data Modeler (singular)
3033
+ 'dm.added_one': 'Adicionado 1 objeto: {names}.',
3034
+ // ------------------------------------------------------------ Change Log (note)
3035
+ 'cl.after_it_title': 'Posterior',
3036
+ // ------------------------------------------------------------ SQL Workshop Utilities, Object Reports, About Database (sprint 162, CD-8)
3037
+ 'su.title': 'Utilitários do SQL Workshop',
3038
+ 'su.failed': 'O relatório falhou.',
3039
+ 'su.nothing': 'Nada encontrado.',
3040
+ 'su.over': 'Sobre os esquemas que {role} pode usar.',
3041
+ 'su.col.owner': 'Proprietário',
3042
+ 'su.tables': 'Tabelas',
3043
+ 'su.setting': 'Parâmetro',
3044
+ 'su.value': 'Valor',
3045
+ 'su.extension': 'Extensão',
3046
+ 'su.version': 'Versão',
3047
+ 'su.database': 'Base de dados',
3048
+ 'su.running_since': 'Em execução desde',
3049
+ 'su.runs_as': 'O SQL Workshop é executado como {user} (sessão iniciada como {login}).',
3050
+ 'su.settings': 'Parâmetros',
3051
+ 'su.extensions': 'Extensões',
3052
+ 'su.no_schemas': 'Sem esquemas.',
3053
+ 'su.r.no_primary_key': 'Tabelas sem chave primária',
3054
+ 'su.r.no_primary_key.about': 'Formulários, grelhas interativas e a escrita REST precisam de uma chave para voltar a encontrar uma linha.',
3055
+ 'su.r.unindexed_foreign_keys': 'Chaves estrangeiras sem índice',
3056
+ 'su.r.unindexed_foreign_keys.about': 'Eliminar ou atualizar uma linha pai percorre a tabela filha, e as junções a partir do pai são mais lentas. Um índice nas colunas da chave estrangeira (por esta ordem) evita-o.',
3057
+ 'su.r.rls_without_policies': 'Segurança ao nível da linha sem políticas',
3058
+ 'su.r.rls_without_policies.about': 'A segurança ao nível da linha está ativa mas a tabela não tem política: todas as funções exceto o proprietário (e as que ignoram RLS) não veem linhas nem podem alterar nenhuma.',
3059
+ 'su.r.no_row_level_security': 'Tabelas sem segurança ao nível da linha',
3060
+ 'su.r.no_row_level_security.about': 'Todas as funções com privilégios nestas tabelas veem e alteram todas as linhas. Adequado para tabelas de consulta; ative a segurança ao nível da linha onde as linhas pertencem a utilizadores ou inquilinos.',
3061
+ 'su.r.public_grants': 'Privilégios concedidos a PUBLIC',
3062
+ 'su.r.public_grants.about': 'Todas as funções da base de dados, incluindo as criadas depois, têm estes privilégios.',
3063
+ 'su.r.unused_indexes': 'Índices não usados',
3064
+ 'su.r.unused_indexes.about': 'Índices não usados por nenhuma consulta desde a última reposição das estatísticas (exceto chaves primárias e únicas). Abrandam as escritas e ocupam espaço; verifique cada servidor (as réplicas contam à parte) antes de eliminar um.',
3065
+ 'su.r.largest_tables': 'Maiores tabelas',
3066
+ 'su.r.largest_tables.about': 'As 100 maiores tabelas com os seus índices e dados TOAST.',
3067
+ 'su.r.no_comments': 'Tabelas sem comentário',
3068
+ 'su.r.no_comments.about': 'Os comentários (COMMENT ON) documentam um modelo de dados; o App Builder e a sua IA leem-nos. SQL Workshop → IA → Descrever tabelas redige-os.',
3069
+ 'su.col.rows': 'Linhas (estimativa)',
3070
+ 'su.col.constraint': 'Chave estrangeira',
3071
+ 'su.col.columns': 'Colunas',
3072
+ 'su.col.parent': 'Referência',
3073
+ 'su.col.suggestion': 'Índice',
3074
+ 'su.col.forced': 'Forçada para o proprietário',
3075
+ 'su.col.grants': 'Concedido a',
3076
+ 'su.col.kind': 'Tipo',
3077
+ 'su.col.privileges': 'Privilégios',
3078
+ 'su.col.index': 'Índice',
3079
+ 'su.col.size': 'Tamanho',
3080
+ 'su.col.table_size': 'Tabela',
3081
+ 'su.col.index_size': 'Índices',
3082
+ 'su.col.total': 'Total',
3083
+ 'su.col.commented': 'Com comentário',
3084
+ // ------------------------------------------------------------ SQL Workshop AI (sprint 162, CD-8)
3085
+ 'swai.service': 'Serviço de IA: {name} ({provider}, {model}). São-lhe enviados os nomes, tipos e descrições de tabelas e colunas, e o que escrever.',
3086
+ 'swai.no_service': 'O App Builder ainda não tem serviço de IA: peça a um administrador que escolha um aqui.',
3087
+ 'swai.service_label': 'Serviço de IA do App Builder (administradores)',
3088
+ 'swai.none': '- nenhum: sem IA no App Builder -',
3089
+ 'swai.service_help': 'São-lhe enviados os nomes, tipos e descrições de tabelas e colunas (nunca linhas) e o que os programadores escrevem. As chamadas são registadas sem aplicação.',
3090
+ 'swai.describe_link': 'Descrever tabelas para a IA',
3091
+ 'swai.describe_why': '(melhores respostas: diga o que significam tabelas e colunas)',
3092
+ 'swai.question_title': 'SQL a partir de uma pergunta',
3093
+ 'swai.question_intro': 'A resposta é mostrada, nunca executada: verifique-a e execute-a na folha de trabalho SQL, se quiser.',
3094
+ 'swai.question': 'Pergunta',
3095
+ 'swai.question_placeholder': 'p. ex. funcionários por departamento com o salário médio',
3096
+ 'swai.thinking': 'A pensar…',
3097
+ 'swai.write_sql': 'Escrever o SQL',
3098
+ 'swai.explain_title': 'Explicar uma consulta ou um erro',
3099
+ 'swai.schema_optional': 'Esquema (opcional)',
3100
+ 'swai.none_short': '- nenhum -',
3101
+ 'swai.error_optional': 'Mensagem de erro (opcional)',
3102
+ 'swai.back': 'IA do SQL Workshop',
3103
+ 'swai.describe_intro': 'Diga o que significam tabelas e colunas: as descrições acompanham a lista de tabelas quando o App Builder pede SQL ou páginas a um modelo. Sem descrição, é usado o comentário da base de dados.',
3104
+ 'swai.choose': '- escolha -',
3105
+ 'swai.show_tables': 'Mostrar tabelas',
3106
+ 'swai.described': 'descrita',
3107
+ 'swai.drafted': 'Redigido pela IA a partir dos nomes e tipos: verifique e altere as descrições e depois guarde.',
3108
+ 'swai.the_kind': 'Descrição ({kind})',
3109
+ 'swai.key': 'chave',
3110
+ 'swai.description_of': 'Descrição de {name}',
3111
+ 'swai.as_comments': 'Guardá-las também como comentários da base de dados (COMMENT ON)',
3112
+ 'swai.save_descriptions': 'Guardar as descrições',
3113
+ 'swai.draft': 'Redigir com IA',
3114
+ 'swai.describe_crumb': 'Descrever tabelas',
3115
+ 'swai.proposed': 'SQL proposto',
3116
+ 'swai.not_run': 'SQL (não executado)',
3117
+ 'swai.explanation': 'Explicação',
3118
+ 'swai.err.question': 'Escreva uma pergunta.',
3119
+ 'swai.err.schema': 'Escolha um esquema.',
3120
+ 'swai.err.paste': 'Cole uma consulta, uma mensagem de erro ou ambas.',
3121
+ 'swai.err.no_such': 'Não existe o serviço de IA {name}.',
3122
+ 'swai.uses': 'O App Builder usa o serviço de IA {name}.',
3123
+ 'swai.uses_none': 'O App Builder não usa nenhum serviço de IA.',
3124
+ 'swai.saved': 'Descrições de {name} guardadas.',
3125
+ 'swai.saved_comments': 'Descrições de {name} guardadas, também como comentários da base de dados.',
3126
+ 'swai.not_saved': 'Não guardado: {error}',
3127
+ // ------------------------------------------------------------ Schema Export / Import (sprint 162, CD-8)
3128
+ 'dp.content.all': 'Definições e dados',
3129
+ 'dp.content.definitions': 'Só definições',
3130
+ 'dp.content.data': 'Só dados',
3131
+ 'dp.admins_only': 'Só os administradores exportam e importam esquemas: uma exportação contém todas as linhas de um esquema e uma importação executa o seu SQL com a função proprietária do pgkiln.',
3132
+ 'dp.status.uploaded': 'carregado',
3133
+ 'dp.status.running': 'em execução',
3134
+ 'dp.status.succeeded': 'concluído',
3135
+ 'dp.status.failed': 'falhado',
3136
+ 'dp.status.cancelled': 'cancelado',
3137
+ 'dp.what.export': 'Exportação de {schema}',
3138
+ 'dp.plain_sql': '(SQL simples)',
3139
+ 'dp.what.upload': 'Carregamento de {file}',
3140
+ 'dp.what.import': 'Importação de {schema} para {target}',
3141
+ 'dp.tools': '{version} e pg_restore para um servidor PostgreSQL {server}. Os ficheiros são mantidos {n} dias na pasta de dumps.',
3142
+ 'dp.tools_one': '{version} e pg_restore para um servidor PostgreSQL {server}. Os ficheiros são mantidos {n} dia na pasta de dumps.',
3143
+ 'dp.need_tools': 'A exportação e a importação precisam de pg_dump e pg_restore.',
3144
+ 'dp.found': 'Encontrados: {list}.',
3145
+ 'dp.col.job': 'Tarefa',
3146
+ 'dp.col.what': 'O quê',
3147
+ 'dp.col.seconds': 'Segundos',
3148
+ 'dp.intro': 'Um esquema para um ficheiro com pg_dump e um ficheiro para um esquema com pg_restore (Data Pump), como tarefas em segundo plano.',
3149
+ 'dp.export_schema': 'Exportar um esquema',
3150
+ 'dp.import': 'Importar',
3151
+ 'dp.jobs': 'Tarefas',
3152
+ 'dp.removed': 'removido',
3153
+ 'dp.no_jobs': 'Ainda não há exportações nem importações.',
3154
+ 'dp.export_of': 'Exportar {schema}',
3155
+ 'dp.fmt.custom': 'Personalizado (comprimido; importa-se aqui com pg_restore)',
3156
+ 'dp.fmt.plain': 'SQL simples (para psql; não se importa aqui)',
3157
+ 'dp.content': 'Conteúdo',
3158
+ 'dp.tables': 'Tabelas, vistas e sequências',
3159
+ 'dp.mode.all': 'Todo o esquema',
3160
+ 'dp.mode.only': 'Só os assinalados',
3161
+ 'dp.mode.except': 'Todos exceto os assinalados',
3162
+ 'dp.no_tables': 'O esquema não tem tabelas, vistas nem sequências.',
3163
+ 'dp.some_tables_note': 'Só algumas tabelas: o ficheiro não tem CREATE SCHEMA, e as funções, tipos e os outros objetos do esquema ficam de fora.',
3164
+ 'dp.start_export': 'Iniciar a exportação',
3165
+ 'dp.export': 'Exportação',
3166
+ 'dp.col.file': 'Ficheiro',
3167
+ 'dp.col.made': 'Criado',
3168
+ 'dp.upload_title': 'Carregar um dump',
3169
+ 'dp.upload_label': 'Um arquivo custom ou tar de um esquema (pg_dump -Fc ou -Ft), até {mb} MB',
3170
+ 'dp.upload_note': 'A página seguinte mostra o conteúdo do arquivo antes de qualquer execução. Um dump é código: as suas funções e gatilhos correm com a função proprietária do pgkiln, por isso importe só dumps de confiança.',
3171
+ 'dp.or_export': 'Ou uma exportação deste servidor',
3172
+ 'dp.import_dots': 'Importar…',
3173
+ 'dp.no_exports': 'Não é mantida nenhuma exportação em formato custom.',
3174
+ 'dp.no_create_schema': '(algumas tabelas: sem CREATE SCHEMA)',
3175
+ 'dp.none': 'nenhum',
3176
+ 'dp.data_of': '(dados de {n})',
3177
+ 'dp.object_type': 'Tipo de objeto',
3178
+ 'dp.entries': 'Entradas',
3179
+ 'dp.import_into': 'Importar para',
3180
+ 'dp.target_help': 'É criado um esquema novo; num existente, os objetos do dump são adicionados (ou substituídos, abaixo). Um nome diferente de {schema} renomeia o esquema do dump na mesma transação.',
3181
+ 'dp.clean': 'Eliminar primeiro os objetos do dump no esquema',
3182
+ 'dp.one_tx_note': 'Tudo corre numa transação: um erro reverte tudo. Os objetos pertencem à função proprietária do pgkiln. Os nomes dentro de corpos PL/pgSQL são texto: após uma mudança de nome continuam a dizer {schema}.',
3183
+ 'dp.start_import': 'Iniciar a importação',
3184
+ 'dp.holds': 'O que {file} contém',
3185
+ 'dp.job': 'Tarefa #{id}',
3186
+ 'dp.opt.format': 'formato {format}',
3187
+ 'dp.opt.only': 'só {list}',
3188
+ 'dp.opt.without': 'sem {list}',
3189
+ 'dp.opt.cleaned': 'objetos existentes eliminados primeiro',
3190
+ 'dp.created': 'Criado',
3191
+ 'dp.finished': 'Terminado',
3192
+ 'dp.options': 'Opções',
3193
+ 'dp.job_lower': 'tarefa #{id}',
3194
+ 'dp.kept_until': 'mantido até {time}',
3195
+ 'dp.delete_with_file': 'Eliminar com o ficheiro',
3196
+ 'dp.job_kind': 'Tarefa #{id}: {kind}',
3197
+ 'dp.kind.export': 'exportação',
3198
+ 'dp.kind.import': 'importação',
3199
+ 'dp.log': 'Registo',
3200
+ 'dp.nothing_logged': 'Nada registado.',
3201
+ 'dp.nothing_logged_yet': 'Ainda nada registado.',
3202
+ 'dp.err.check_tables': 'Assinale as tabelas a exportar.',
3203
+ 'dp.err.not_importable': 'Este ficheiro (já) não pode ser importado.',
3204
+ 'dp.err.schema_name': 'O esquema: letras, dígitos, _ e $, até 63, sem começar por um dígito.',
3205
+ 'dp.err.choose_file': 'Escolha um ficheiro.',
3206
+ 'dp.err.too_large': 'O ficheiro tem mais de {mb} MB (PGKILN_DUMP_MAX_MB).',
3207
+ 'dp.err.empty': 'O ficheiro está vazio.',
3208
+ 'dp.cancelling': 'A cancelar a tarefa.',
3209
+ 'dp.not_running': 'A tarefa (já) não está a correr neste servidor.',
3210
+ 'dp.deleted': 'Tarefa #{id} eliminada.',
3211
+ // ------------------------------------------------------------ Scheduling (sprint 162, CD-8)
3212
+ 'cr.job_n': 'Tarefa {id}',
3213
+ 'cr.job_n_lower': 'tarefa {id}',
3214
+ 'cr.admins_only': 'Só os administradores agendam tarefas da base de dados: o pg_cron executa-as no servidor, com qualquer função.',
3215
+ 'cr.next_runs': 'Próximas execuções ({tz}):',
3216
+ 'cr.no_times': 'Sem horas agendadas: corre quando o servidor da base de dados arranca.',
3217
+ 'cr.inactive': 'inativo',
3218
+ 'cr.at_start': 'no arranque do servidor',
3219
+ 'cr.unreadable': 'ilegível',
3220
+ 'cr.never_ran': 'nunca executada',
3221
+ 'cr.step1': 'Instale o pacote pg_cron no servidor da base de dados (por exemplo {apt}, ou a opção pg_cron do seu fornecedor de cloud).',
3222
+ 'cr.step2': 'Em {conf} (ou {alter}): {preload} e {db}; opcionalmente {tz} (GMT se não definido). Reinicie o PostgreSQL.',
3223
+ 'cr.step3': 'Como superutilizador, nesta base de dados: {create}',
3224
+ 'cr.why.not_available': 'O pg_cron não está instalado neste servidor da base de dados.',
3225
+ 'cr.why.not_loaded': 'O pg_cron está instalado no servidor mas não carregado: não está em {preload}.',
3226
+ 'cr.why.other_database': 'O pg_cron corre na base de dados {other} ({setting}), não em {db}. Defina {set} e reinicie, ou agende a partir dessa base de dados (as tarefas podem continuar a correr aqui com {fn}).',
3227
+ 'cr.why.not_created': 'O pg_cron está carregado, mas a extensão ainda não foi criada nesta base de dados.',
3228
+ 'cr.why.no_access': 'O pg_cron está instalado, mas a ligação proprietária do pgkiln não consegue ler as tarefas: {message}. Conceda-lhe acesso (como superutilizador: {grant}) ou ligue o pgkiln com a função proprietária das tarefas.',
3229
+ 'cr.why.old': 'Este pg_cron ({version}) é demasiado antigo: o pgkiln precisa da versão 1.4 ou posterior ({fn1}, {fn2}). {update}',
3230
+ 'cr.to_schedule': 'Para agendar SQL com o pg_cron:',
3231
+ 'cr.own_scheduler': 'O agendador próprio do pgkiln funciona sem ele: as {automations} de uma aplicação executam SQL num horário como a aplicação, e as cadeias de execução em segundo plano correm como {jobs}. Estão listadas abaixo.',
3232
+ 'cr.automations_path': 'Componentes partilhados › Automatizações',
3233
+ 'cr.process_jobs_lower': 'tarefas de processo',
3234
+ 'cr.col.automation': 'Automatização',
3235
+ 'cr.col.schedule': 'Agendamento',
3236
+ 'cr.col.next_run': 'Próxima execução',
3237
+ 'cr.col.last_run': 'Última execução',
3238
+ 'cr.col.started_by': 'Iniciado por',
3239
+ 'cr.col.queued': 'Em fila',
3240
+ 'cr.col.ended': 'Terminado',
3241
+ 'cr.automations': 'Automatizações',
3242
+ 'cr.automations_intro': 'Agendadas pelo próprio pgkiln, por aplicação (Componentes partilhados › Automatizações), no fuso horário de cada automatização.',
3243
+ 'cr.disabled': 'desativada',
3244
+ 'cr.soon': 'em breve',
3245
+ 'cr.no_automations': 'Sem automatizações.',
3246
+ 'cr.process_jobs': 'Tarefas de processo',
3247
+ 'cr.process_jobs_intro': 'As últimas cadeias de execução que as páginas iniciaram em segundo plano.',
3248
+ 'cr.no_process_jobs': 'Sem tarefas de processo.',
3249
+ 'cr.col.run_as': 'Executar como',
3250
+ 'cr.create': 'Criar tarefa',
3251
+ 'cr.history': 'Histórico de execuções',
3252
+ 'cr.jobs': 'Tarefas',
3253
+ 'cr.failed_last': 'Falharam na última execução',
3254
+ 'cr.pg_cron_jobs': 'Tarefas do pg_cron',
3255
+ 'cr.list_intro': 'O pg_cron {version} executa estas tarefas no servidor da base de dados; as horas estão no seu fuso horário {tz} ({setting}).',
3256
+ 'cr.own_only': 'A ligação proprietária do pgkiln ({user}) só vê as suas próprias tarefas: o pg_cron mostra a cada função as suas.',
3257
+ 'cr.search': 'Pesquisar tarefas',
3258
+ 'cr.failures': '{n} falhas nas últimas 10 execuções',
3259
+ 'cr.no_match': 'Nenhuma tarefa corresponde.',
3260
+ 'cr.none_yet': 'Ainda não há tarefas. {create}.',
3261
+ 'cr.create_one': 'Crie uma',
3262
+ 'cr.own_work': 'Trabalho agendado do próprio pgkiln (automatizações, tarefas de processo)',
3263
+ 'cr.job': 'Tarefa',
3264
+ 'cr.name_placeholder': 'vacuum noturno',
3265
+ 'cr.name_help': 'Único por função com que é executada.',
3266
+ 'cr.database_help': 'O pg_cron liga-se a ela para executar o comando.',
3267
+ 'cr.run_as_help': 'A função com que o comando é executado. Só um superutilizador agenda tarefas para outra função.',
3268
+ 'cr.active_help': 'Uma tarefa inativa mantém o agendamento e não é executada.',
3269
+ 'cr.command': 'Comando',
3270
+ 'cr.command_help': 'SQL executado fora de um bloco de transação, como o pg_cron o executa: `vacuum analyze` funciona; várias instruções fazem commit cada uma por si.',
3271
+ 'cr.schedule_help': 'Cinco campos, `minute hour day-of-month month day-of-week`; `n seconds` (1 a 59); ou `@hourly`, `@daily`, `@weekly`, `@monthly`, `@yearly`, `@reboot`.',
3272
+ 'cr.presets': 'Agendamentos comuns',
3273
+ 'cr.choose': 'Escolher…',
3274
+ 'cr.use': 'Usar',
3275
+ 'cr.builder': 'Construtor de agendamento',
3276
+ 'cr.use_fields': 'Usar estes campos',
3277
+ 'cr.review': 'Rever SQL',
3278
+ 'cr.review_intro': 'Estas instruções correm numa transação na ligação proprietária do pgkiln quando as aplicar: todas ou nenhuma.',
3279
+ 'cr.nothing': 'Nada a alterar.',
3280
+ 'cr.failed_box': '{nothing}: as instruções correram numa transação, que foi revertida.',
3281
+ 'cr.nothing_changed': 'Nada foi alterado',
3282
+ 'cr.edit_title': 'Editar {name}',
3283
+ 'cr.edit': 'Editar',
3284
+ 'cr.create_crumb': 'Criar',
3285
+ 'cr.err.clash': '{user} já tem uma tarefa chamada {name}.',
3286
+ 'cr.change_title': 'Alterar {name}',
3287
+ 'cr.create_title': 'Criar a tarefa {name}',
3288
+ 'cr.back_form': 'Voltar ao formulário',
3289
+ 'cr.review_crumb': 'Rever',
3290
+ 'cr.err.changed_form': 'As instruções mudaram desde que as reviu (a tarefa ou o formulário mudou): reveja-as novamente.',
3291
+ 'cr.changed': 'Tarefa {name} alterada.',
3292
+ 'cr.created': 'Tarefa {name} criada.',
3293
+ 'cr.col.run': 'Execução',
3294
+ 'cr.col.duration': 'Duração',
3295
+ 'cr.col.message': 'Mensagem',
3296
+ 'cr.no_runs': 'Sem execuções.',
3297
+ 'cr.run_confirm': 'Executar {name} agora, como {user} em {db}?',
3298
+ 'cr.run_now': 'Executar agora',
3299
+ 'cr.disable': 'Desativar',
3300
+ 'cr.enable': 'Ativar',
3301
+ 'cr.unschedule_dots': 'Desagendar…',
3302
+ 'cr.job_id': 'Id da tarefa',
3303
+ 'cr.recent_runs': 'Execuções recentes',
3304
+ 'cr.all_runs': 'Todas as execuções desta tarefa',
3305
+ 'cr.purge_its': 'Purgar o histórico',
3306
+ 'cr.enable_failed': 'A ativação falhou: {error}',
3307
+ 'cr.disable_failed': 'A desativação falhou: {error}',
3308
+ 'cr.enabled': '{name} ativada: {sql}',
3309
+ 'cr.disabled_flash': '{name} desativada: {sql}',
3310
+ 'cr.err.changed': 'As instruções mudaram desde que as reviu: reveja-as novamente.',
3311
+ 'cr.unscheduled': '{name} desagendada. O histórico de execuções mantém-se até o purgar.',
3312
+ 'cr.unschedule_title': 'Desagendar {name}',
3313
+ 'cr.unschedule_note': 'O pg_cron esquece a tarefa; as execuções ficam no histórico até serem purgadas.',
3314
+ 'cr.unschedule': 'Desagendar',
3315
+ 'cr.ran': '{what} em {secs}, como {user} em {db}: {message}',
3316
+ 'cr.ran_ok': 'Executada',
3317
+ 'cr.ran_failed': 'Falhou',
3318
+ 'cr.run_now_note': 'Executar agora executa o comando a partir do pgkiln, não do pg_cron: não aparece no histórico do pg_cron; o registo de atividade do pgkiln tem-no.',
3319
+ 'cr.purge_dots': 'Purgar…',
3320
+ 'cr.runs': 'Execuções',
3321
+ 'cr.history_intro': '{table} do pg_cron, as mais recentes primeiro (200 no máximo); horas em {tz}. O pg_cron mantém cada execução até ser purgada.',
3322
+ 'cr.all_jobs': 'Todas as tarefas',
3323
+ 'cr.any_status': 'Qualquer estado',
3324
+ 'cr.search_messages_label': 'Pesquisar mensagens e comandos',
3325
+ 'cr.search_messages': 'Pesquisar mensagens',
3326
+ 'cr.filter': 'Filtrar',
3327
+ 'cr.older_7': 'com mais de 7 dias',
3328
+ 'cr.older_30': 'com mais de 30 dias',
3329
+ 'cr.older_90': 'com mais de 90 dias',
3330
+ 'cr.purge_all': 'todas',
3331
+ 'cr.purged': 'Histórico de execuções purgado.',
3332
+ 'cr.purge_title': 'Purgar o histórico de execuções',
3333
+ 'cr.which_runs': 'Que execuções',
3334
+ 'cr.runs_of': 'Execuções de {name}',
3335
+ 'cr.would_delete_one': 'Seria eliminada 1 execução.',
3336
+ 'cr.would_delete': 'Seriam eliminadas {n} execuções.',
3337
+ 'cr.purge': 'Purgar',
3338
+ // ------------------------------------------------------------ Scheduling: fields, statuses, presets, schedules in words (cron.*)
3339
+ 'cr.f.minute': 'Minuto',
3340
+ 'cr.f.minute_help': '0-59',
3341
+ 'cr.f.hour': 'Hora',
3342
+ 'cr.f.hour_help': '0-23',
3343
+ 'cr.f.day': 'Dia do mês',
3344
+ 'cr.f.day_help': '1-31, $ = último',
3345
+ 'cr.f.month': 'Mês',
3346
+ 'cr.f.month_help': '1-12 ou jan-dec',
3347
+ 'cr.f.weekday': 'Dia da semana',
3348
+ 'cr.f.weekday_help': '0-6 (0 = domingo) ou sun-sat',
3349
+ 'cr.status.starting': 'a iniciar',
3350
+ 'cr.status.running': 'em execução',
3351
+ 'cr.status.sending': 'a enviar',
3352
+ 'cr.status.connecting': 'a ligar',
3353
+ 'cr.status.succeeded': 'concluída',
3354
+ 'cr.status.failed': 'falhada',
3355
+ 'cr.preset.p1': 'A cada minuto',
3356
+ 'cr.preset.p2': 'A cada 30 segundos',
3357
+ 'cr.preset.p3': 'A cada 5 minutos',
3358
+ 'cr.preset.p4': 'A cada 15 minutos',
3359
+ 'cr.preset.p5': 'A cada hora',
3360
+ 'cr.preset.p6': 'Todos os dias às 02:00',
3361
+ 'cr.preset.p7': 'Todos os dias à meia-noite',
3362
+ 'cr.preset.p8': 'Dias úteis às 07:00',
3363
+ 'cr.preset.p9': 'Todos os domingos às 03:00',
3364
+ 'cr.preset.p10': 'Primeiro dia do mês às 01:00',
3365
+ 'cr.preset.p11': 'Último dia do mês às 23:00',
3366
+ 'cr.preset.p12': 'Todos os anos a 1 de janeiro',
3367
+ 'cron.reboot': 'Quando o servidor da base de dados arranca',
3368
+ 'cron.every_second': 'A cada segundo',
3369
+ 'cron.every_seconds': 'A cada {n} segundos',
3370
+ 'cron.every_minute': 'A cada minuto',
3371
+ 'cron.every_minutes': 'A cada {n} minutos',
3372
+ 'cron.every_hour': 'A cada hora',
3373
+ 'cron.minute_of_hour': 'No minuto {m} de cada hora',
3374
+ 'cron.minutes_of_hour': 'Nos minutos {list} de cada hora',
3375
+ 'cron.at': 'Às {times}',
3376
+ 'cron.at_minute': 'No minuto {m}',
3377
+ 'cron.at_minutes': 'Nos minutos {list}',
3378
+ 'cron.of_every_hours': '{mins} a cada {n} horas',
3379
+ 'cron.past_hours': '{mins} das horas {list}',
3380
+ 'cron.day_and_last': 'no dia {list} e no último dia do mês',
3381
+ 'cron.last_day': 'no último dia do mês',
3382
+ 'cron.day_of_month': 'no dia {list} do mês',
3383
+ 'cron.weekdays': 'nos dias úteis',
3384
+ 'cron.on_days': 'à {list}',
3385
+ 'cron.a_days': 'uma {list}',
3386
+ 'cron.either': '{dom} ou {dow}',
3387
+ 'cron.if': '{dom} se for {dow}',
3388
+ 'cron.every_day': 'todos os dias',
3389
+ 'cron.in_months': 'em {list}',
3390
+ 'cron.range': '{from} a {to}',
3391
+ // ------------------------------------------------------------ Region and report settings (CD-8)
3392
+ 'rs.set_items': 'Definir itens',
3393
+ 'rs.text_when_there_are_no': 'Texto quando não há linhas',
3394
+ 'rs.fill_colour_lines_polygons': 'Cor de preenchimento (linhas / polígonos)',
3395
+ 'rs.line_colour': 'Cor da linha',
3396
+ 'rs.line_width': 'Espessura da linha',
3397
+ 'rs.opacity_0_1': 'Opacidade (0–1)',
3398
+ 'rs.rows_per_page': 'Linhas por página',
3399
+ 'rs.aggregates_in_the_footer': 'Agregados no rodapé',
3400
+ 'rs.frozen_columns': 'Colunas fixas',
3401
+ 'rs.public_reports_by': 'Relatórios públicos por',
3402
+ 'rs.as_a_master_column_of': 'Como mestre: coluna da linha selecionada',
3403
+ 'rs.goes_into_item': '… vai para o item',
3404
+ 'rs.as_a_detail_follows_item': 'Como detalhe: segue o item',
3405
+ 'rs.and_new_rows_get_it': '… e as novas linhas recebem-no na coluna',
3406
+ 'rs.load': 'Carregamento',
3407
+ 'rs.name_legend': 'Nome (legenda)',
3408
+ 'rs.show_places_as': 'Mostrar locais como',
3409
+ 'rs.query': 'Consulta',
3410
+ 'rs.each_place_links_to_page': 'Cada local liga à página',
3411
+ 'rs.report_region': 'Região de relatório',
3412
+ 'rs.filter_by': 'Filtrar por',
3413
+ 'rs.suggestions_per_facet_0_10': 'Sugestões por faceta (0–10)',
3414
+ 'rs.placeholder_of_the_search_field': 'Marcador do campo de pesquisa',
3415
+ 'rs.shown_first': 'Mostrado primeiro',
3416
+ 'rs.week_and_day_views_from': 'Vistas de semana e dia a partir da hora',
3417
+ 'rs.until_hour': 'Até à hora',
3418
+ 'rs.sql_that_moves_an_event': 'SQL que move um evento',
3419
+ 'rs.key_column': 'Coluna-chave',
3420
+ 'rs.who_may_drag': 'Quem pode arrastar',
3421
+ 'rs.show_as': 'Mostrar como',
3422
+ 'rs.carousel_next_region_every_seconds': 'Carrossel: região seguinte a cada (segundos)',
3423
+ 'rs.chart_type': 'Tipo de gráfico',
3424
+ 'rs.sql_that_moves_a_task': 'SQL que move uma tarefa',
3425
+ 'rs.steps': 'Passos',
3426
+ 'rs.style': 'Estilo',
3427
+ 'rs.list': 'Lista',
3428
+ 'rs.template': 'Modelo',
3429
+ 'rs.layer_name_legend': 'Nome da camada (legenda)',
3430
+ 'rs.height': 'Altura',
3431
+ 'rs.zoom_for_a_single_place': 'Zoom para um único local (1–19)',
3432
+ 'rs.levels_open_at_first': 'Níveis abertos inicialmente',
3433
+ 'rs.show': 'Mostrar',
3434
+ 'rs.behaviour': 'Comportamento',
3435
+ 'rs.totals_and_columns': 'Totais e colunas',
3436
+ 'rs.views': 'Vistas',
3437
+ 'rs.row_actions': 'Ações de linha',
3438
+ 'rs.master_detail': 'Mestre-detalhe',
3439
+ 'rs.columns': 'Colunas',
3440
+ 'rs.filter_a_report': 'Filtrar um relatório',
3441
+ 'rs.filters': 'Filtros',
3442
+ 'rs.facets': 'Facetas',
3443
+ 'rs.drag_and_drop': 'Arrastar e largar',
3444
+ 'rs.appearance': 'Aparência',
3445
+ 'rs.regions': 'Regiões',
3446
+ 'rs.gauge': 'Indicador',
3447
+ 'rs.gantt_drag_and_drop': 'Gantt: arrastar e largar',
3448
+ 'rs.workflows': 'Fluxos de trabalho',
3449
+ 'rs.tasks': 'Tarefas',
3450
+ 'rs.saving_needs_a_process_of': 'Guardar requer um processo do tipo "grid_dml" para esta região; sem ele a grelha é só de leitura.',
3451
+ 'rs.column_sum_avg_count_min': 'coluna=sum, avg, count, min ou max; separe as colunas com ";". Calculado sobre todas as linhas da pesquisa, não só a página. Os utilizadores podem adicionar os seus (Ações → Agregado).',
3452
+ 'rs.stay_in_view_while_the': 'Ficam visíveis enquanto a grelha desliza na horizontal. Os utilizadores podem alterá-lo, mover, redimensionar e ocultar colunas; "layout" no JSON define a ordem e as larguras predefinidas.',
3453
+ 'rs.views_users_may_switch_to': 'Vistas para as quais os utilizadores podem mudar além da grelha. A vista de linha única edita uma linha de cada vez (também a partir do menu de ações de linha); agrupar e gráfico configuram-se em Ações.',
3454
+ 'rs.a_master_grid_s_selected': 'A linha selecionada de uma grelha mestre coloca o seu valor num item de página; as grelhas de detalhe e os relatórios usam-no na sua consulta (:P1_ID) e são atualizados sem recarregar a página. Outros tipos de região seguem com {"master": {"item": "P1_ID"}}.',
3455
+ 'rs.edit_as_picks_a_shared': '"Editar como" escolhe uma lista de valores partilhada (Componentes partilhados → Listas de valores) para uma lista de seleção.',
3456
+ 'rs.the_visible_area_and_vector': 'A área visível e os mosaicos vetoriais precisam de `lat`/`lng` (ou de uma geometria PostGIS) e voltam a carregar quando o mapa se move. Os mosaicos vetoriais desenham pontos, linhas e áreas, sem agrupamento nem lista.',
3457
+ 'rs.the_same_columns_as_the': 'As mesmas colunas que a consulta do mapa. Esvazie a consulta para remover a camada.',
3458
+ 'rs.the_condition_runs_on_the': 'A condição corre no servidor: com o PostGIS instalado numa coluna geometry/geography, caso contrário na latitude e longitude.',
3459
+ 'rs.users_switch_between_the_ticked': 'Os utilizadores alternam entre as vistas assinaladas. As horas fora do intervalo são acrescentadas quando um evento precisa delas.',
3460
+ 'rs.runs_as_the_application_s': 'É executado com a função de base de dados da aplicação (aplica-se a segurança ao nível da linha) com `:EVENT_ID` (o valor da coluna-chave), `:NEW_START` e `:NEW_END` (a mesma duração de antes). Vazio: os eventos não podem ser arrastados.',
3461
+ 'rs.only_events_the_user_sees': 'Só podem ser movidos os eventos que o utilizador vê neste calendário; sem rato, a ligação de edição altera as datas.',
3462
+ 'rs.not_while_the_pointer_or': 'Não enquanto o ponteiro ou o foco estiverem no carrossel, nem para utilizadores que preferem movimento reduzido. Um carrossel não tem "Mostrar tudo".',
3463
+ 'rs.a_chosen_region_gets_display': 'Uma região escolhida recebe `"display_selector": true` nas suas definições (um separador com o seu nome) ou o nome do separador: regiões com o mesmo nome de separador partilham um separador (p. ex. filtros inteligentes e o seu relatório). Sem JavaScript todas as regiões são mostradas, com ligações para cada uma.',
3464
+ 'rs.gauge_charts_only_a_warning': 'Só gráficos de indicador. Um limiar de aviso acima do crítico significa que os valores baixos são maus (p. ex. aviso 50, crítico 20).',
3465
+ 'rs.drill_down_column_takes_the': 'Detalhe: `#column#` usa o valor da linha do ponto e `#series#` o nome da sua série. As colunas a que só a ligação se refere não são desenhadas.',
3466
+ 'rs.gantt_charts_with_a_task': 'Gráficos de Gantt com uma coluna `task_id`. É executado com a função de base de dados da aplicação (aplica-se a segurança ao nível da linha) com `:TASK_ID`, `:NEW_START` e `:NEW_END` (`YYYY-MM-DD`, ou `YYYY-MM-DDTHH:MM` à hora; um marco recebe o mesmo início e fim). Vazio: as tarefas não podem ser arrastadas.',
3467
+ 'rs.only_tasks_the_user_sees': 'Só podem ser movidas as tarefas que o utilizador vê neste gráfico; depois o gráfico é redesenhado a partir da sua consulta.',
3468
+ 'rs.column': 'Coluna',
3469
+ 'rs.heading': 'Cabeçalho',
3470
+ 'rs.shown': 'Visível',
3471
+ 'rs.read_only': 'Só de leitura',
3472
+ 'rs.required': 'Obrigatório',
3473
+ 'rs.edit_as': 'Editar como',
3474
+ 'rs.facet': 'Faceta',
3475
+ 'rs.label': 'Rótulo',
3476
+ 'rs.type': 'Tipo',
3477
+ 'rs.values_shown': 'Valores mostrados',
3478
+ 'rs.exclude': 'Excluir',
3479
+ 'rs.ranges': 'Intervalos',
3480
+ 'rs.from_to': 'De/até',
3481
+ 'rs.chart': 'Gráfico',
3482
+ 'rs.order': 'Ordem',
3483
+ 'rs.region': 'Região',
3484
+ 'rs.in_a_tab': 'Num separador',
3485
+ 'rs.tab_name': 'Nome do separador',
3486
+ 'rs.no_columns_yet': 'Ainda não há colunas.',
3487
+ 'rs.the_report_has_no_columns': 'O relatório não tem colunas.',
3488
+ 'rs.there_are_no_other_regions': 'Não há outras regiões nesta página.',
3489
+ 'rs.shows_a_list_from_shared': 'Mostra uma lista de Componentes partilhados → Listas. As entradas que o utilizador não pode abrir são omitidas.',
3490
+ 'rs.these_fields_write_the_region': 'Estes campos escrevem o JSON das definições da região acima (as outras chaves mantêm-se).',
3491
+ 'rs.users_may_add_rows': 'Os utilizadores podem adicionar linhas',
3492
+ 'rs.users_may_change_rows': 'Os utilizadores podem alterar linhas',
3493
+ 'rs.users_may_delete_rows': 'Os utilizadores podem eliminar linhas',
3494
+ 'rs.actions_menu_columns_aggregates_saved': 'Menu Ações (colunas, agregados, relatórios guardados)',
3495
+ 'rs.users_may_save_grid_reports': 'Os utilizadores podem guardar relatórios de grelha',
3496
+ 'rs.row_actions_menu': 'Menu de ações de linha',
3497
+ 'rs.duplicate': 'Duplicar',
3498
+ 'rs.delete': 'Eliminar',
3499
+ 'rs.read_the_search_as_a': 'Ler a pesquisa como uma frase ("empregados com salário entre 1000 e 3000") e oferecê-la como filtros',
3500
+ 'rs.a_search_field_searches_all': 'Um campo de pesquisa (pesquisa em todas as colunas do relatório)',
3501
+ 'rs.show_all_choice_shows_every': 'Opção "Mostrar tudo" (mostra todas as regiões)',
3502
+ 'rs.remember_the_choice_during_the': 'Lembrar a escolha durante a sessão',
3503
+ 'rs.group_markers_that_are_close': 'Agrupar marcadores próximos (agrupamento)',
3504
+ 'rs.include_completed_and_terminated_workflows': 'Incluir fluxos de trabalho concluídos e terminados',
3505
+ 'rs.include_completed_and_cancelled_tasks': 'Incluir tarefas concluídas e canceladas',
3506
+ 'rs.no_link': '- sem ligação -',
3507
+ 'rs.text_field': '- campo de texto -',
3508
+ 'rs.nobody': '- ninguém -',
3509
+ 'rs.not_a_master': '- não é mestre -',
3510
+ 'rs.all_rows_with_the_page': 'Todas as linhas com a página',
3511
+ 'rs.rows_in_the_visible_area': 'Linhas na área visível',
3512
+ 'rs.vector_tiles_large_data_sets': 'Mosaicos vetoriais (grandes conjuntos de dados)',
3513
+ 'rs.markers': 'Marcadores',
3514
+ 'rs.heat_map': 'Mapa de calor',
3515
+ 'rs.lines': 'Linhas',
3516
+ 'rs.polygons': 'Polígonos',
3517
+ 'rs.extruded_polygons_shaded_by_height': 'Polígonos extrudidos (sombreados pela altura)',
3518
+ 'rs.none': '- nenhum -',
3519
+ 'rs.the_visible_area': 'A área visível',
3520
+ 'rs.distance_from_the_centre': 'Distância ao centro',
3521
+ 'rs.none_2': 'Nenhum',
3522
+ 'rs.bar': 'Barras',
3523
+ 'rs.pie': 'Circular',
3524
+ 'rs.choose': '- escolha -',
3525
+ 'rs.everyone_who_sees_the_calendar': 'Todos os que veem o calendário',
3526
+ 'rs.signed_in_users': 'Utilizadores com sessão iniciada',
3527
+ 'rs.tabs': 'Separadores',
3528
+ 'rs.select_list': 'Lista de seleção',
3529
+ 'rs.carousel_one_at_a_time': 'Carrossel (uma de cada vez, Anterior e Seguinte)',
3530
+ 'rs.everyone_who_sees_the_chart': 'Todos os que veem o gráfico',
3531
+ 'rs.days_or_hours_when_a': 'Dias, ou horas quando uma tarefa tem hora',
3532
+ 'rs.days': 'Dias',
3533
+ 'rs.hours': 'Horas',
3534
+ 'rs.cards': 'Cartões',
3535
+ 'rs.kpi_tiles_metric': 'Mosaicos KPI (métrica)',
3536
+ 'rs.links_nested': 'Ligações (aninhadas)',
3537
+ 'rs.badge_list': 'Lista de distintivos',
3538
+ 'rs.cards_menu': 'Cartões (menu)',
3539
+ 'rs.wizard_progress_numbered_steps': 'Progresso do assistente (passos numerados)',
3540
+ 'rs.small': 'Pequeno',
3541
+ 'rs.medium': 'Médio',
3542
+ 'rs.large': 'Grande',
3543
+ 'rs.workflows_i_started': 'Fluxos de trabalho que iniciei',
3544
+ 'rs.workflows_i_administer': 'Fluxos de trabalho que administro',
3545
+ 'rs.my_tasks_to_act_on': 'As minhas tarefas: por tratar, por reclamar ou atribuídas a mim',
3546
+ 'rs.tasks_i_requested': 'Tarefas que pedi',
3547
+ 'rs.tasks_i_administer': 'Tarefas que administro',
3548
+ 'rs.aria_list_of_values_of': 'Lista de valores de {name}',
3549
+ 'rs.aria_heading_of': 'Cabeçalho de {name}',
3550
+ 'rs.aria_show': 'Mostrar {name}',
3551
+ 'rs.aria_facet_on': 'Faceta sobre {name}',
3552
+ 'rs.aria_label_of': 'Rótulo de {name}',
3553
+ 'rs.aria_type_of_the_facet_on': 'Tipo da faceta sobre {name}',
3554
+ 'rs.aria_values_shown_for': 'Valores mostrados para {name}',
3555
+ 'rs.aria_users_may_exclude_values_of': 'Os utilizadores podem excluir valores de {name}',
3556
+ 'rs.aria_ranges_of': 'Intervalos de {name}',
3557
+ 'rs.aria_users_may_type_a_range': 'Os utilizadores podem escrever um intervalo para {name}',
3558
+ 'rs.aria_chart_of_the_facet_on': 'Gráfico da faceta sobre {name}',
3559
+ 'rs.aria_order_of': 'Ordem de {name}',
3560
+ 'rs.aria_show_in_the_display_selector': 'Mostrar {name} no seletor de apresentação',
3561
+ 'rs.aria_tab_name_of': 'Nome do separador de {name}',
3562
+ 'rs.no_data_found': 'Nenhum dado encontrado',
3563
+ 'rs.search_or_filter': 'Pesquisar ou filtrar…',
3564
+ 'rs.link': 'Ligação',
3565
+ 'rs.link_help': 'ITEM=#column#, separados por vírgulas; #column# é substituído pelo valor da linha.',
3566
+ 'rs.links_to_page': '{what} liga à página',
3567
+ 'rs.w.edit': 'Editar',
3568
+ 'rs.row_actions_edit': 'Ações de linha: editar',
3569
+ 'rs.w.event': 'Cada evento',
3570
+ 'rs.edit_link': 'Ligação de edição',
3571
+ 'rs.w.slot': 'Um espaço vazio de dia ou hora',
3572
+ 'rs.create_on_click': 'Criar ao clicar',
3573
+ 'rs.create_help': 'ITEM=#start#, #end# ou #date#: o espaço clicado (YYYY-MM-DD, ou YYYY-MM-DD HH:MI para um espaço de hora).',
3574
+ 'rs.w.point': 'Cada ponto de dados',
3575
+ 'rs.w.card': 'Cada cartão',
3576
+ 'rs.w.place': 'Cada local',
3577
+ 'rs.w.node': 'Cada nó',
3578
+ 'rs.layer_n': 'Camada {n}: {name}',
3579
+ 'rs.add_layer': 'Adicionar uma camada',
3580
+ 'rs.group_markers': 'Agrupar marcadores próximos',
3581
+ 'rs.off_at_first': 'Desligada inicialmente',
3582
+ 'rs.map_report_help': 'Os utilizadores podem mostrar só as linhas na área visível do mapa ("Mostrar esta área na lista") ou perto do seu centro. O relatório precisa de colunas lat e lng (ou location), ou de uma coluna PostGIS geometry/geography.',
3583
+ 'rs.map_report_none': 'Adicione uma região de relatório a esta página para a filtrar pela área do mapa.',
3584
+ 'rs.report_smart_help': 'O relatório desta página que os filtros inteligentes filtram. Guarde para listar as suas colunas.',
3585
+ 'rs.report_facets_help': 'O relatório desta página que as facetas filtram. Guarde para listar as suas colunas.',
3586
+ 'rs.report_first': 'Adicione primeiro uma região de relatório a esta página.',
3587
+ 'rs.untitled': '(sem título)',
3588
+ 'rs.gauge.min': 'Mínimo',
3589
+ 'rs.gauge.max': 'Máximo',
3590
+ 'rs.gauge.warning': 'Aviso a partir de',
3591
+ 'rs.gauge.critical': 'Crítico a partir de',
3592
+ 'rs.t.settings': 'Definições',
3593
+ 'rs.t.grid': 'Definições da grelha',
3594
+ 'rs.t.chart': 'Definições do gráfico',
3595
+ 'rs.t.cards': 'Definições dos cartões',
3596
+ 'rs.t.calendar': 'Definições do calendário',
3597
+ 'rs.t.facets': 'Definições da pesquisa por facetas',
3598
+ 'rs.t.smart': 'Definições dos filtros inteligentes',
3599
+ 'rs.t.selector': 'Definições do seletor de apresentação',
3600
+ 'rs.t.list': 'Definições da lista',
3601
+ 'rs.t.map': 'Definições do mapa',
3602
+ 'rs.t.tree': 'Definições da árvore',
3603
+ 'rs.t.workflows': 'Definições da consola de fluxos de trabalho',
3604
+ 'rs.t.tasks': 'Definições da lista de tarefas',
3605
+ 'rs.saved': 'Definições guardadas.',
3606
+ 'rs.chart.bar': 'Barras (horizontais)',
3607
+ 'rs.chart.column': 'Colunas',
3608
+ 'rs.chart.stacked': 'Colunas empilhadas',
3609
+ 'rs.chart.line': 'Linhas',
3610
+ 'rs.chart.area': 'Área',
3611
+ 'rs.chart.combo': 'Colunas e linha (primeira série como colunas)',
3612
+ 'rs.chart.scatter': 'Dispersão (a primeira coluna é x)',
3613
+ 'rs.chart.donut': 'Anel',
3614
+ 'rs.chart.pie': 'Circular',
3615
+ 'rs.chart.bubble': 'Bolhas (colunas label, x, y e size)',
3616
+ 'rs.chart.gauge': 'Indicador (um mostrador por linha)',
3617
+ 'rs.chart.funnel': 'Funil (etapas pela ordem da consulta)',
3618
+ 'rs.chart.radar': 'Radar (um eixo por linha)',
3619
+ 'rs.chart.gantt': 'Gantt (colunas task, start e end)',
3620
+ 'rs.chart.treemap': 'Mapa de árvore (label e value; node_id, parent_id para uma hierarquia)',
3621
+ 'rs.chart.sunburst': 'Sunburst (label e value; node_id, parent_id para uma hierarquia)',
3622
+ 'rs.chart.timeline': 'Cronologia (label, start, end; uma coluna series para faixas)',
3623
+ 'rs.chart.pyramid': 'Pirâmide (uma série; duas séries costas com costas)',
3624
+ 'rs.chart.polar': 'Área polar (um setor por linha)',
3625
+ 'rs.chart.range': 'Intervalo (colunas low e high: colunas flutuantes)',
3626
+ 'rs.chart.boxplot': 'Diagrama de caixa (um valor por linha, ou min, Q1, median, Q3 e max)',
3627
+ 'rs.chart.stock': 'Bolsa (colunas open, high, low e close: velas)',
3628
+ 'rs.gridview.row': 'Vista de linha única',
3629
+ 'rs.gridview.group': 'Agrupar por',
3630
+ 'rs.gridview.chart': 'Gráfico',
3631
+ 'rs.facet.checkbox': 'Caixas de verificação',
3632
+ 'rs.facet.range': 'Intervalos',
3633
+ 'rs.facet.star': 'Classificação por estrelas',
3634
+ 'rs.view.month': 'Mês',
3635
+ 'rs.view.week': 'Semana',
3636
+ 'rs.view.day': 'Dia',
3637
+ 'rs.view.list': 'Lista',
3638
+ 'rpt.rows_per_page': 'Linhas por página',
3639
+ 'rpt.on_phones': 'Em telemóveis',
3640
+ 'rpt.text_when_there_are_no': 'Texto quando não há linhas',
3641
+ 'rpt.who_may_save_public_reports': 'Quem pode guardar relatórios públicos',
3642
+ 'rpt.pagination': 'Paginação',
3643
+ 'rpt.keyset_columns': 'Colunas de keyset',
3644
+ 'rpt.maximum_row_count': 'Número máximo de linhas',
3645
+ 'rpt.cache': 'Cache',
3646
+ 'rpt.cache_for_seconds': 'Cache durante (segundos)',
3647
+ 'rpt.columns_read_from_a_json': 'Colunas lidas de uma coluna json ou jsonb',
3648
+ 'rpt.link_column': 'Coluna de ligação',
3649
+ 'rpt.to_page': 'Para a página',
3650
+ 'rpt.set_items': 'Definir itens',
3651
+ 'rpt.value_column': 'Coluna de valor',
3652
+ 'rpt.into_item': 'No item',
3653
+ 'rpt.report_layout': 'Esquema do relatório',
3654
+ 'rpt.behaviour': 'Comportamento',
3655
+ 'rpt.large_tables': 'Tabelas grandes',
3656
+ 'rpt.json_path_columns': 'Colunas de caminho JSON',
3657
+ 'rpt.columns': 'Colunas',
3658
+ 'rpt.link': 'Ligação',
3659
+ 'rpt.row_selection': 'Seleção de linhas',
3660
+ 'rpt.pdf': 'PDF',
3661
+ 'rpt.row_ranges_skip_counting_the': 'Os intervalos de linhas não contam as linhas: use-os para tabelas grandes.',
3662
+ 'rpt.with_row_ranges_columns_that': 'Com intervalos de linhas: colunas que tornam uma linha única (separadas por vírgulas, indexadas). Seguinte e Anterior continuam então após a última linha em vez de saltar linhas (páginas profundas rápidas).',
3663
+ 'rpt.the_report_and_its_downloads': 'O relatório (e as suas transferências) lê no máximo este número de linhas.',
3664
+ 'rpt.a_submit_of_the_page': 'Uma submissão da página esvazia a sua cache.',
3665
+ 'rpt.format_masks_numbers_like_999g999g990d00': 'Máscaras de formato: números como 999G999G990D00, FML999G990D00 (moeda), 990D0% ou 0000 (G e D são os separadores do idioma); datas como DD-MON-YYYY. Vazio: os formatos da aplicação. As transferências Excel e CSV mantêm os valores em bruto.',
3666
+ 'rpt.item_column_comma_separated_column': 'ITEM=#column#, separados por vírgulas; #column# é substituído pelo valor da linha.',
3667
+ 'rpt.a_checkbox_per_row_on': 'Uma caixa por linha; ao submeter, os valores das linhas assinaladas chegam ao item, separados por dois pontos (p. ex. 7839:7902). Normalmente um item oculto. Trate os valores como entrada do utilizador no seu processo.',
3668
+ 'rpt.layouts_are_under_shared_components': 'Os esquemas estão em Componentes partilhados → Esquemas de relatório.',
3669
+ 'rpt.column': 'Coluna',
3670
+ 'rpt.heading': 'Cabeçalho',
3671
+ 'rpt.format_mask': 'Máscara de formato',
3672
+ 'rpt.display': 'Apresentação',
3673
+ 'rpt.shown': 'Visível',
3674
+ 'rpt.in_pdf': 'No PDF',
3675
+ 'rpt.pdf_width_mm': 'Largura no PDF (mm)',
3676
+ 'rpt.these_fields_write_the_region': 'Estes campos escrevem o JSON das definições da região acima (as outras chaves mantêm-se).',
3677
+ 'rpt.no_columns_yet': 'Ainda não há colunas.',
3678
+ 'rpt.search_box': 'Caixa de pesquisa',
3679
+ 'rpt.actions_menu_filters_break_aggregates': 'Menu Ações (filtros, quebras, agregados, transferências…)',
3680
+ 'rpt.sortable': 'Ordenável',
3681
+ 'rpt.users_may_save_reports': 'Os utilizadores podem guardar relatórios',
3682
+ 'rpt.load_after_the_page_shows': 'Carregar depois de a página aparecer (carregamento diferido)',
3683
+ 'rpt.normal': 'Normal',
3684
+ 'rpt.cards_reflow': 'Cartões (reflow)',
3685
+ 'rpt.scrolling_table': 'Tabela deslizante',
3686
+ 'rpt.nobody': '- ninguém -',
3687
+ 'rpt.rows_x_y_of_z': 'Linhas X–Y de Z (conta o total)',
3688
+ 'rpt.row_ranges_x_y_no': 'Intervalos de linhas X–Y (sem total)',
3689
+ 'rpt.no_cache': '- sem cache -',
3690
+ 'rpt.per_user': 'Por utilizador',
3691
+ 'rpt.per_session': 'Por sessão',
3692
+ 'rpt.for_all_users_with_the': 'Para todos os utilizadores (com as mesmas funções)',
3693
+ 'rpt.no_link': '- sem ligação -',
3694
+ 'rpt.choose': '- escolha -',
3695
+ 'rpt.no_row_selection': '- sem seleção de linhas -',
3696
+ 'rpt.aria_heading_of': 'Cabeçalho de {name}',
3697
+ 'rpt.aria_format_mask_of': 'Máscara de formato de {name}',
3698
+ 'rpt.aria_display_of': 'Apresentação de {name}',
3699
+ 'rpt.aria_show': 'Mostrar {name}',
3700
+ 'rpt.aria_print': 'Imprimir {name}',
3701
+ 'rpt.aria_pdf_width_of': 'Largura no PDF de {name}',
3702
+ 'rpt.no_data_found': 'Nenhum dado encontrado',
3703
+ 'rpt.saved_without': 'Definições do relatório guardadas, sem estas máscaras de formato: {masks}.',
3704
+ 'rpt.saved': 'Definições do relatório guardadas.',
3705
+ // ------------------------------------------------------------ Region settings help (CD-8)
3706
+ 'rs.not_in_query': 'não está na consulta',
3707
+ 'rpt.report_settings': 'Definições do relatório',
3708
+ 'rpt.save_report_settings': 'Guardar definições do relatório',
3709
+ 'rs.no_position_alert': 'O relatório não tem colunas `lat`/`lng` nem `location`, por isso a área do mapa não o pode filtrar.',
3710
+ 'rs.facets_help': 'As caixas de verificação listam os valores mais frequentes (Excluir permite antes filtrá-los). Intervalos e De/até precisam de uma coluna numérica ou de data: os intervalos são `from..to = label` separados por `;`, com uma ponta aberta deixada vazia (`..1000`, `2020-01-01..`); um intervalo inclui o início, não o fim. Uma classificação por estrelas oferece «4 estrelas ou mais» e assim por diante (até 5; `"max"` no JSON altera isso).',
3711
+ 'rs.facets_help_chart': 'Gráfico: um gráfico de barras ou circular das contagens sob a faceta (recolhido); uma barra ou fatia filtra pelo seu valor.',
3712
+ 'rs.calendar_help': 'A consulta devolve `start_date`, `title` e opcionalmente `end_date` (datas para eventos de dia inteiro, timestamps para eventos com hora).',
3713
+ 'rs.chart_help': 'A primeira coluna é a etiqueta; cada coluna numérica seguinte é uma série (até 8). Um gráfico de Gantt lê `label, start, end` (datas ou timestamps; um fim vazio é um marco) e colunas opcionais chamadas `progress` (0 a 100), `task_id` e `depends_on` (os ids de que uma tarefa está à espera, p. ex. `3,4`).',
3714
+ 'rs.map_help': 'Cada linha é um marcador em `lat`, `lng` (ou `location` como "lat,lng"), com `title` e `body` no seu popup; uma coluna `geojson` desenha linhas e áreas (com o PostGIS instalado, também serve uma coluna `geometry` ou `geography` em WGS 84). Um mapa de calor pondera cada local por uma coluna `weight`.',
3715
+ 'rs.tree_help': 'A consulta devolve `id`, `parent_id` e `label` (e opcionalmente `icon`); as linhas cujo pai não está no resultado são as raízes.',
3716
+ 'rs.workflow_help': 'Os fluxos de trabalho vêm das definições de fluxo (Componentes Compartilhados); o SQL da aplicação inicia-os com `meta.start_workflow(…)`.',
3717
+ 'rs.task_help': 'As tarefas vêm das definições de tarefa (Componentes Compartilhados); o SQL da aplicação cria-as com `meta.create_task(…)`.',
3718
+ // ------------------------------------------------------------ SQL Workshop › RESTful Services › Modules (CD-8)
3719
+ 'rm.type.collection': 'Consulta de coleção: linhas, paginadas',
3720
+ 'rm.type.item': 'Linha única: um objeto, 404 sem linha',
3721
+ 'rm.type.sql': 'SQL: a primeira linha da última instrução',
3722
+ 'rm.type.plpgsql': 'Bloco PL/pgSQL: meta.rest_reply(body, status)',
3723
+ 'rm.type.media': 'Recurso de mídia: content_type e content',
3724
+ 'rm.modules': 'Módulos',
3725
+ 'rm.module': 'Módulo',
3726
+ 'rm.autorest_tab': 'AutoREST (tabelas e views)',
3727
+ 'rm.run_only_suffix': 'Volte a defini-la como Executar e construir para alterá-la.',
3728
+ 'rm.locked_suffix': 'As alterações são recusadas até que seja desbloqueada.',
3729
+ 'rm.or': 'ou',
3730
+ 'rm.public': 'público',
3731
+ 'rm.token': 'token',
3732
+ 'rm.module_role': 'função do módulo {roles}',
3733
+ 'rm.role': 'função {roles}',
3734
+ 'rm.tree_aria': 'Modelos e manipuladores',
3735
+ 'rm.disabled_suffix': 'desativado',
3736
+ 'rm.base_path': 'Caminho base',
3737
+ 'rm.application': 'Aplicação',
3738
+ 'rm.templates': 'Modelos',
3739
+ 'rm.template': 'Modelo',
3740
+ 'rm.handlers': 'Manipuladores',
3741
+ 'rm.privilege': 'Privilégio',
3742
+ 'rm.off': 'desligado',
3743
+ 'rm.any_token': 'qualquer token',
3744
+ 'rm.none_yet': 'Ainda não há módulos REST. Crie um abaixo: um caminho base, depois modelos e manipuladores.',
3745
+ 'rm.app_help': 'A sua função de banco de dados executa os manipuladores; os seus tokens e funções decidem quem pode chamá-los.',
3746
+ 'rm.base_path_rule': 'letras minúsculas, dígitos, _ e - (no máximo 40)',
3747
+ 'rm.eg': 'p. ex. {example}',
3748
+ 'rm.eg_sales_api': 'p. ex. API de vendas',
3749
+ 'rm.title': 'Título',
3750
+ 'rm.privilege_roles': 'Privilégio: funções',
3751
+ 'rm.any_caller': 'qualquer chamador com um token',
3752
+ 'rm.roles_help_app': 'Separadas por vírgulas: cada manipulador precisa de uma destas funções da aplicação.',
3753
+ 'rm.roles_help': 'Separadas por vírgulas: cada manipulador precisa de uma destas funções.',
3754
+ 'rm.description': 'Descrição',
3755
+ 'rm.create_module': 'Criar módulo',
3756
+ 'rm.create_a_module': 'Criar um módulo',
3757
+ 'rm.list_title': 'Serviços RESTful: módulos',
3758
+ 'rm.enabled': 'Ativado',
3759
+ 'rm.status': 'Status',
3760
+ 'rm.disabled_404': 'Desativado (404)',
3761
+ 'rm.save': 'Salvar',
3762
+ 'rm.saved': 'Salvo.',
3763
+ 'rm.no_templates': 'Ainda não há modelos.',
3764
+ 'rm.uri_template': 'Modelo de URI',
3765
+ 'rm.add_template': 'Adicionar modelo',
3766
+ 'rm.checks': 'Verificações',
3767
+ 'rm.delete_module': 'Excluir módulo',
3768
+ 'rm.module_title': 'Módulo REST {name}',
3769
+ 'rm.method': 'Método',
3770
+ 'rm.source_type': 'Tipo de origem',
3771
+ 'rm.access': 'Acesso',
3772
+ 'rm.no_handlers': 'Ainda não há manipuladores: a URI responde 404.',
3773
+ 'rm.add_handler': 'Adicionar manipulador',
3774
+ 'rm.url': 'URL:',
3775
+ 'rm.uri_rename_help': 'Renomeá-lo também move os seus manipuladores.',
3776
+ 'rm.delete_template': 'Excluir modelo',
3777
+ 'rm.source': 'Origem',
3778
+ 'rm.none_here': 'nenhum aqui',
3779
+ 'rm.who': 'Quem pode chamá-lo',
3780
+ 'rm.auth_token': 'Um token bearer da aplicação',
3781
+ 'rm.auth_public': 'Público: sem token',
3782
+ 'rm.roles': 'Funções',
3783
+ 'rm.no_further_role': 'nenhuma função adicional',
3784
+ 'rm.roles_help_handler': 'Separadas por vírgulas: o chamador também precisa de uma delas.',
3785
+ 'rm.page_size': 'Tamanho da página',
3786
+ 'rm.page_size_help': 'Consultas de coleção: linhas sem ?limit=.',
3787
+ 'rm.status_ph': '201 para POST, senão 200',
3788
+ 'rm.status_help': 'Manipuladores SQL e PL/pgSQL.',
3789
+ 'rm.params': 'Parâmetros (documentação)',
3790
+ 'rm.create_handler': 'Criar manipulador',
3791
+ 'rm.delete_handler': 'Excluir manipulador',
3792
+ 'rm.new_handler_for': 'Novo manipulador para {uri}',
3793
+ 'rm.new_handler': 'Novo manipulador',
3794
+ 'rm.response': 'Resposta',
3795
+ 'rm.no_token': 'sem token',
3796
+ 'rm.no_token_option': 'Sem token',
3797
+ 'rm.try_it': 'Experimentar',
3798
+ 'rm.as': 'Como',
3799
+ 'rm.query_string': 'String de consulta',
3800
+ 'rm.json_body': 'Corpo JSON',
3801
+ 'rm.send': 'Enviar {method}',
3802
+ 'rm.content': 'conteúdo',
3803
+ 'rm.characters': '({n} caracteres)',
3804
+ 'rm.bytes_of': '({n} bytes de {type})',
3805
+ 'rm.openapi_doc': 'O documento OpenAPI 3 do módulo (sem o SQL):',
3806
+ 'rm.openapi_help': 'Importe-o no Swagger UI, Postman ou num gerador de clientes. Os parâmetros documentados dos manipuladores tornam-se os seus parâmetros de consulta e corpos de requisição.',
3807
+ 'rm.delete_module_confirm': 'Excluir o módulo {name} com todos os seus modelos e manipuladores?',
3808
+ 'rm.delete_template_confirm': 'Excluir o modelo {uri} e os seus {n} manipulador(es)?',
3809
+ 'rm.delete_handler_confirm': 'Excluir o manipulador {method} {uri}?',
3810
+ 'rm.auth_token_role': 'Um token bearer da aplicação com a função do módulo {roles}',
3811
+ 'rm.auth_public_help': '(executa como `nobody`)',
3812
+ 'rm.auth_public_403': '(executa como `nobody`; as funções do módulo continuam a aplicar-se, por isso responde 403)',
3813
+ 'rm.uri_help': 'Segmentos e `:parameters` (vinculados como `:ID`)',
3814
+ 'rm.chk.runs_as': 'Os manipuladores executam como `{role}` com `meta.app_user()` como chamador',
3815
+ 'rm.chk.role_problem': 'A função de banco de dados da aplicação: {problem} Os seus manipuladores respondem 403.',
3816
+ 'rm.chk.no_role': 'A aplicação não tem função de banco de dados: os manipuladores executam com a função de runtime do pgkiln. Dê-lhe uma função própria (Aplicação › Configurações) para que as permissões e a segurança em nível de linha sejam dela.',
3817
+ 'rm.chk.disabled': 'Desativado: cada manipulador responde 404',
3818
+ 'rm.chk.privilege': 'Privilégio: os chamadores precisam da função {roles}',
3819
+ 'rm.chk.no_privilege': 'Sem funções de privilégio: qualquer token válido da aplicação (os manipuladores podem adicionar funções)',
3820
+ 'rm.response_as': '{request} como {as}',
3821
+ 'rm.try_intro': 'Envia a requisição ao endpoint real: um PUT, POST ou DELETE altera dados. {as} uma conta emite um token de curta duração para ela, como faz App › REST API; sem conta, vê o que um chamador sem token recebe.',
3822
+ 'rm.intro': 'Módulos dos serviços RESTful: um módulo é um caminho base de uma aplicação, os seus modelos são URIs com `:parameters` e cada modelo tem manipuladores por método com a sua origem: uma consulta de coleção, uma linha única, SQL, um bloco PL/pgSQL ou um recurso de mídia. Os manipuladores executam com a função de banco de dados da aplicação e o chamador como `meta.app_user()`, por isso aplicam-se as suas permissões e a segurança em nível de linha; os parâmetros são vinculados, nunca colados no SQL. Cada módulo tem um documento OpenAPI. Os módulos pertencem à sua aplicação: acompanham a sua exportação (também em Componentes Compartilhados › Serviços RESTful).',
3823
+ 'rm.source_help': 'Binds, em maiúsculas: parâmetros de caminho ({params}), parâmetros de consulta e campos do corpo JSON; `:BODY` é o corpo inteiro; `:APP_USER` é o chamador. Os valores são vinculados, nunca colados no SQL. PL/pgSQL: um bloco (`declare … begin … end`, ou instruções) que responde com `perform meta.rest_reply(jsonb_build_object(…), 201)`. Mídia: uma consulta que devolve `content_type`, `content` e opcionalmente `filename`.',
3824
+ 'rm.params_help': 'Um por linha: `name query|body [{types}] [required] [description]`. Vão para o documento OpenAPI e o formulário Experimentar; se faltar um obrigatório, a resposta é 400.',
3825
+ 'rm.e.params_line': 'Parâmetros, linha {n}: escreva "name query" ou "name body" e, opcionalmente, um tipo ({types}), "required" e uma descrição.',
3826
+ 'rm.e.choose_app': 'Escolha uma aplicação deste workspace.',
3827
+ 'rm.e.base_path': 'O caminho base começa com uma letra minúscula: letras, dígitos, _ e - (no máximo 40).',
3828
+ 'rm.e.title': 'O título tem de 1 a 200 caracteres.',
3829
+ 'rm.created': 'Módulo {name} criado em {path}. Adicione agora um modelo.',
3830
+ 'rm.e.exists': '{app} já tem um módulo {name}.',
3831
+ 'rm.deleted': 'Módulo {name} excluído: as suas URLs respondem 404.',
3832
+ 'rm.e.template_exists': 'O modelo {uri} já existe.',
3833
+ 'rm.e.template_gone': 'O modelo já não existe.',
3834
+ 'rm.template_deleted': 'Modelo {uri} e os seus manipuladores excluídos.',
3835
+ 'rm.e.handler_gone': 'O manipulador já não existe.',
3836
+ 'rm.handler_deleted': 'Manipulador {method} {uri} excluído.',
3837
+ 'rm.e.choose_account': 'Escolha uma conta com acesso à aplicação.',
3838
+ 'rm.e.bad_json': 'O corpo não é JSON válido.',
3839
+ 'rm.e.module_gone': 'O módulo já não existe.',
3840
+ 'rm.e.auth': 'Escolha quem pode chamá-lo: um token da aplicação, ou público.',
3841
+ 'rm.e.role_length': 'Os nomes de função têm no máximo 100 caracteres.',
3842
+ 'rm.e.page_size': 'O tamanho da página é de 1 a 500.',
3843
+ 'rm.e.status': 'O status é de 200 a 299.',
3844
+ // ------------------------------------------------------------ SQL Workshop › RESTful Services › AutoREST (CD-8)
3845
+ 'ar.kind.table': 'tabela',
3846
+ 'ar.kind.view': 'view',
3847
+ 'ar.kind.mview': 'view materializada',
3848
+ 'ar.kind.foreign': 'tabela externa',
3849
+ 'ar.m.get': 'linhas e uma linha',
3850
+ 'ar.m.post': 'inserir uma linha',
3851
+ 'ar.m.put': 'alterar uma linha',
3852
+ 'ar.m.delete': 'excluir uma linha',
3853
+ 'ar.methods': 'Métodos',
3854
+ 'ar.auth_token_help': '(o token de uma conta ou um cliente OAuth, App › REST API)',
3855
+ 'ar.auth_public': 'Público: qualquer pessoa, sem token',
3856
+ 'ar.auth_public_help': '(executa como `nobody`; as permissões e a segurança em nível de linha continuam a aplicar-se)',
3857
+ 'ar.object': 'Objeto',
3858
+ 'ar.none_yet': 'Ainda não há tabelas nem views publicadas. Ative uma abaixo, ou com {menu} no menu ⋯ de um objeto.',
3859
+ 'ar.menu_enable': 'REST › Ativar',
3860
+ 'ar.table_or_view': 'Tabela ou view',
3861
+ 'ar.choose': '- escolher -',
3862
+ 'ar.runs_as': 'executa como {role}',
3863
+ 'ar.app_help': 'A sua função de banco de dados executa as instruções; os seus tokens e funções decidem quem pode chamá-lo.',
3864
+ 'ar.url_name': 'Nome na URL',
3865
+ 'ar.object_name_ph': 'o nome do objeto',
3866
+ 'ar.url_name_rule': 'letras minúsculas, dígitos, _ e -',
3867
+ 'ar.any_caller': 'qualquer chamador',
3868
+ 'ar.roles_help': 'Separadas por vírgulas: o chamador precisa de uma destas funções da aplicação.',
3869
+ 'ar.page_size_help': 'Linhas por página sem ?limit= (no máximo {max}).',
3870
+ 'ar.enable': 'Ativar',
3871
+ 'ar.no_usable_app': 'Nenhuma aplicação deste workspace tem uma função de banco de dados para executar.',
3872
+ 'ar.intro': 'Serviços RESTful: publique uma tabela ou view como endpoints REST (AutoREST). As linhas chegam paginadas em JSON, com filtros; uma chave primária permite GET, PUT e DELETE de uma linha. As requisições executam com a função de banco de dados da aplicação que publica e o chamador como `meta.app_user()`, por isso aplicam-se as suas permissões e a segurança em nível de linha.',
3873
+ 'ar.intro_module': 'Para endpoints à medida com o seu próprio SQL ou PL/pgSQL, crie um {module}.',
3874
+ 'ar.module_link': 'módulo',
3875
+ 'ar.published': 'Objetos publicados',
3876
+ 'ar.enable_a': 'Ativar uma tabela ou view',
3877
+ 'ar.gone': 'O objeto já não existe: os seus endpoints respondem 404.',
3878
+ 'ar.chk.runs_as': 'Executa como `{role}`: não é o proprietário, nem superusuário, nem ignora a segurança em nível de linha',
3879
+ 'ar.chk.may': '`{role}` pode {priv}',
3880
+ 'ar.chk.may_not': '`{role}` não pode {priv}',
3881
+ 'ar.chk.rls_on_1': 'A segurança em nível de linha está ativa (1 política)',
3882
+ 'ar.chk.rls_on': 'A segurança em nível de linha está ativa ({n} políticas)',
3883
+ 'ar.chk.rls_off': 'A segurança em nível de linha está desativada: os chamadores veem todas as linhas que a função pode selecionar',
3884
+ 'ar.chk.invoker': 'A view é security_invoker: a segurança em nível de linha das tabelas aplica-se ao chamador',
3885
+ 'ar.chk.definer': 'A view executa com os direitos do seu proprietário, por isso a segurança em nível de linha das tabelas subjacentes não se aplica:',
3886
+ 'ar.chk.key': 'Chave primária {columns}: linhas individuais em',
3887
+ 'ar.chk.no_key': 'Sem chave primária: só a coleção (GET e POST)',
3888
+ 'ar.chk.hidden_columns': 'As colunas que a função não pode selecionar são omitidas: {columns}',
3889
+ 'ar.ep.rows': 'Linhas, paginadas: ?limit= (1–{max}, padrão {size}) &offset= ; ?<column>=<value> ; ?q=<text> ; ?order=<column>.desc',
3890
+ 'ar.ep.post': 'Um objeto JSON de valores de coluna: a nova linha (201)',
3891
+ 'ar.ep.one': 'Uma linha (404 quando não há)',
3892
+ 'ar.ep.put': 'Alterar as colunas que o objeto JSON indica',
3893
+ 'ar.ep.delete': 'Excluir a linha (204)',
3894
+ 'ar.enabled_l': 'ativado',
3895
+ 'ar.disabled_alert': 'Desativado: os endpoints respondem 404.',
3896
+ 'ar.endpoints': 'Endpoints',
3897
+ 'ar.does': 'Faz',
3898
+ 'ar.openapi_note': '(os objetos públicos; envie um token para todos)',
3899
+ 'ar.public_no_token': 'Público: não é preciso token.',
3900
+ 'ar.get_token': 'Obtenha {token} em {link}: emita um token para uma conta ou use o token de acesso de um cliente OAuth.',
3901
+ 'ar.caller_needs': 'O chamador precisa da função {roles}.',
3902
+ 'ar.status_codes': 'Sem um token válido os endpoints respondem 401; sem a função ou uma permissão, 403.',
3903
+ 'ar.settings': 'Configurações',
3904
+ 'ar.published_by': 'Publicado por {app} (executa como {role}) em {path}.',
3905
+ 'ar.remove': 'Desativar REST (remover)',
3906
+ 'ar.remove_help': 'Os endpoints respondem 404 de imediato; a tabela em si não é alterada.',
3907
+ 'ar.e.no_role': 'A aplicação não tem função de banco de dados. O AutoREST executa com a função da aplicação: defina uma nas suas configurações.',
3908
+ 'ar.e.role_problem': 'A função de banco de dados da aplicação: {problem}',
3909
+ 'ar.e.owner': '"{role}" é proprietário de {object} (ou membro do seu proprietário): as permissões e a segurança em nível de linha não se aplicariam. Publique-o através de uma aplicação cuja função não seja proprietária.',
3910
+ 'ar.e.method': 'Escolha pelo menos um método.',
3911
+ 'ar.e.page_size': 'O tamanho da página é de 1 a {max}.',
3912
+ 'ar.e.mview': 'Uma view materializada só responde a GET.',
3913
+ 'ar.e.no_key': 'PUT e DELETE precisam de uma chave primária; este objeto não tem.',
3914
+ 'ar.e.choose_object': 'Escolha uma tabela ou view de um esquema que o SQL Workshop pode usar.',
3915
+ 'ar.e.url_name': 'O nome na URL começa com uma letra minúscula: letras, dígitos, _ e - (no máximo 63).',
3916
+ 'ar.published_at': '{object} está publicado em {path}.',
3917
+ 'ar.e.alias_taken': '{app} já publica algo como {alias}: escolha outro nome na URL.',
3918
+ 'ar.e.already': '{app} já publica {object}.',
3919
+ 'ar.unpublished': '{object} já não está publicado.',
3920
+ // ------------------------------------------------------------ SQL Workshop › Load Data (CD-8)
3921
+ 'dl.row': 'Linha',
3922
+ 'dl.error': 'Erro',
3923
+ 'dl.first_errors': 'São mostrados os primeiros {n} erros.',
3924
+ 'dl.failed': 'Não foi possível carregar {n} linha(s), por isso nada foi carregado. Corrija o arquivo ou marque «Ignorar linhas com erros».',
3925
+ 'dl.inserted': '{n} linha(s) inserida(s)',
3926
+ 'dl.updated': '{n} atualizada(s)',
3927
+ 'dl.skipped': '{n} ignorada(s)',
3928
+ 'dl.from_file': 'Carregar dados de um arquivo',
3929
+ 'dl.intro': 'CSV ou TSV (UTF-8 ou Windows-1252; o delimitador é detetado), Excel .xlsx (a primeira folha), JSON (um array de objetos ou JSON Lines) ou XML (linhas de um elemento repetido), até {mb} MB. Depois escolhe uma tabela nova ou existente. O carregamento usa a conexão de proprietário do builder.',
3930
+ 'dl.intro_unload': 'Para descarregar uma tabela ou consulta como arquivo, use {link}.',
3931
+ 'dl.file': 'Arquivo',
3932
+ 'dl.headers': 'A primeira linha contém os nomes das colunas',
3933
+ 'dl.row_tag': 'Elemento de linha XML',
3934
+ 'dl.row_tag_ph': 'p. ex. employee (vazio: detetado)',
3935
+ 'dl.row_tag_help': 'Só XML. DTDs e declarações de entidades não são aceites.',
3936
+ 'dl.no_definition': '- nenhuma: escolher a tabela a seguir -',
3937
+ 'dl.definition_help': 'Componentes Compartilhados de uma aplicação: tabela, mapeamento de colunas e transformações.',
3938
+ 'dl.next': 'Seguinte',
3939
+ 'dl.e.no_file': 'Escolha um arquivo.',
3940
+ 'dl.e.too_large': 'O arquivo tem mais de {mb} MB.',
3941
+ 'dl.info': '{rows} linha(s), {columns} coluna(s)',
3942
+ 'dl.xml_rows': 'linhas XML {path}',
3943
+ 'dl.delimiter': 'delimitador {d}',
3944
+ 'dl.tab': 'tabulação',
3945
+ 'dl.first_shown': '(mostradas as primeiras {n})',
3946
+ 'dl.another_file': 'Escolher outro arquivo',
3947
+ 'dl.def_into': 'Definição {def}: em {table}, modo {mode}',
3948
+ 'dl.def_skipping': 'ignorando linhas com erros',
3949
+ 'dl.def_by_name': 'As colunas do arquivo são associadas às colunas da tabela pelo nome.',
3950
+ 'dl.after_mapping': 'Após o mapeamento e as transformações:',
3951
+ 'dl.after_mapping_first': 'Após o mapeamento e as transformações (primeiras {n} linhas):',
3952
+ 'dl.load_into': 'Carregar em {table}',
3953
+ 'dl.preview': 'Pré-visualização',
3954
+ 'dl.load_with': 'Carregar com {name}',
3955
+ 'dl.skip_errors': 'Ignorar linhas com erros (caso contrário nada é carregado quando uma linha falha)',
3956
+ 'dl.table_name': 'Nome da tabela',
3957
+ 'dl.table_name_help': 'schema.table; a tabela recebe uma chave primária identity `id`.',
3958
+ 'dl.file_column': 'Coluna do arquivo',
3959
+ 'dl.column_name': 'Nome da coluna (vazio = ignorar)',
3960
+ 'dl.type': 'Tipo',
3961
+ 'dl.aria_name': 'Nome da coluna para {column}',
3962
+ 'dl.aria_type': 'Tipo de {column}',
3963
+ 'dl.create_and_load': 'Criar tabela e carregar',
3964
+ 'dl.table_column': 'Coluna da tabela',
3965
+ 'dl.aria_map': 'Coluna da tabela para {column}',
3966
+ 'dl.skip': '- ignorar -',
3967
+ 'dl.key': 'chave',
3968
+ 'dl.mode': 'Modo',
3969
+ 'dl.mode_append': 'Acrescentar: inserir todas as linhas',
3970
+ 'dl.mode_merge': 'Mesclar: atualizar as linhas com a mesma chave primária, inserir as outras',
3971
+ 'dl.mode_replace': 'Substituir: excluir primeiro todas as linhas',
3972
+ 'dl.save_mapping': 'Salvar este mapeamento como definição de carregamento de dados',
3973
+ 'dl.save_mapping_help': 'Para o processo data_load de uma aplicação e para voltar a carregar arquivos como este.',
3974
+ 'dl.name': 'Nome',
3975
+ 'dl.save_definition': 'Salvar como definição',
3976
+ 'dl.table': 'Tabela',
3977
+ 'dl.choose_table': '- escolher uma tabela -',
3978
+ 'dl.map_columns': 'Mapear colunas',
3979
+ 'dl.into_new': 'Carregar numa tabela nova',
3980
+ 'dl.into_existing': 'Carregar numa tabela existente',
3981
+ 'dl.def_saved': 'Definição de carregamento de dados {name} salva.',
3982
+ 'dl.def_not_saved': 'Não foi possível salvar a definição: {reason}',
3983
+ 'dl.def_exists': 'a aplicação já tem uma definição chamada {name}.',
3984
+ 'dl.e.def_gone': 'A definição de carregamento de dados já não existe.',
3985
+ 'dl.e.no_columns': 'Dê nome a pelo menos uma coluna.',
3986
+ 'dl.view': 'Ver {table}',
3987
+ 'dl.load_another': 'Carregar outro arquivo',
3988
+ // ------------------------------------------------------------ SQL Workshop › Object Browser › Security and Document view (CD-8)
3989
+ 'ds.roles_and_columns': 'Funções de banco de dados e colunas',
3990
+ 'ds.db_role': 'Função de banco de dados',
3991
+ 'ds.masked_in': 'Mascarada em {view}',
3992
+ 'ds.masked': 'mascarada',
3993
+ 'ds.runs': 'executa {apps}',
3994
+ 'ds.read': 'ler',
3995
+ 'ds.update': 'atualizar',
3996
+ 'ds.no_grants': 'Nenhuma função de banco de dados tem privilégios nesta tabela, e nenhuma aplicação do workspace executa com uma função de banco de dados.',
3997
+ 'ds.excluded': 'Fora da matriz, porque os privilégios de coluna não os podem restringir:',
3998
+ 'ds.masks_per_column': 'Máscaras por coluna',
3999
+ 'ds.column': 'Coluna',
4000
+ 'ds.mask': 'Máscara',
4001
+ 'ds.role_sees': '{role} vê-o',
4002
+ 'ds.others_see': 'Todos os outros veem-no',
4003
+ 'ds.aria_mask': 'Máscara de {column}',
4004
+ 'ds.not_masked': 'Sem máscara',
4005
+ 'ds.mask.null': 'vazio (null)',
4006
+ 'ds.mask.stars': '***',
4007
+ 'ds.mask.partial': '*** + últimos 4',
4008
+ 'ds.aria_role_sees': '{role} vê {column}',
4009
+ 'ds.aria_others_see': 'Todos os outros veem {column}',
4010
+ 'ds.rows': 'Linhas',
4011
+ 'ds.rls_is': 'A segurança em nível de linha está {state}',
4012
+ 'ds.rls_on_owner': 'ativa, também para o proprietário',
4013
+ 'ds.rls_on': 'ativa',
4014
+ 'ds.rls_off': 'desativada',
4015
+ 'ds.rls_off_detail': 'cada função que pode ler a tabela lê todas as linhas',
4016
+ 'ds.rls_how': '{props} ativa-a; {policy} escreve uma na folha de trabalho.',
4017
+ 'ds.table_properties': 'Propriedades da tabela',
4018
+ 'ds.add_policy': 'Adicionar política',
4019
+ 'ds.policy': 'Política',
4020
+ 'ds.command': 'Comando',
4021
+ 'ds.roles': 'Funções',
4022
+ 'ds.restrictive': 'restritiva',
4023
+ 'ds.no_policies': 'Sem políticas.',
4024
+ 'ds.no_policies_rls': 'Sem políticas: com a segurança em nível de linha ativa, as funções abaixo não leem nenhuma linha.',
4025
+ 'ds.columns': 'Colunas',
4026
+ 'ds.columns_help': 'O que cada função de banco de dados pode ler e atualizar, por coluna. O PostgreSQL recusa uma coluna que uma função não pode ler, seja quem for que envie a consulta: páginas, manipuladores REST, AutoREST, ferramentas de IA, MCP ou psql.',
4027
+ 'ds.values': 'Valores',
4028
+ 'ds.values_help': 'As colunas mascaradas mostram o valor só às funções da aplicação que marcar (`meta.has_role()` do usuário com sessão iniciada); os outros veem a máscara. As máscaras ficam numa view ao lado da tabela, que as funções acima leem em vez da tabela.',
4029
+ 'ds.masking_view': 'View de mascaramento',
4030
+ 'ds.view_name': 'Nome da view',
4031
+ 'ds.app_roles': 'Funções da aplicação',
4032
+ 'ds.app_roles_help': 'Separadas por vírgulas. As funções alteradas recebem a sua coluna na tabela abaixo após Pré-visualizar SQL.',
4033
+ 'ds.no_changes': 'Sem alterações: a segurança da tabela é a que o formulário mostra.',
4034
+ 'ds.preview_sql': 'Pré-visualizar SQL',
4035
+ 'ds.changed_1': 'Segurança de {table} alterada: 1 instrução.',
4036
+ 'ds.changed': 'Segurança de {table} alterada: {n} instruções.',
4037
+ 'ds.rolled_back': 'Nada foi alterado: as instruções executaram numa transação, que foi revertida.',
4038
+ 'ds.failed_statement': 'Instrução falhada',
4039
+ 'ds.title': 'Segurança de {table}',
4040
+ 'ds.security': 'Segurança',
4041
+ 'docv.no_key': '{table} não tem chave primária: uma view de documentos encontra as linhas por ela.',
4042
+ 'docv.doc_is_key': 'A coluna do documento não pode ter o nome de uma coluna-chave ({name}).',
4043
+ 'docv.made': 'A view de documentos {view} foi criada.',
4044
+ 'docv.children': 'Tabelas filhas no documento',
4045
+ 'docv.list': 'Lista no documento',
4046
+ 'docv.fk': 'Chave estrangeira',
4047
+ 'docv.no_children': 'Nenhuma outra tabela referencia {table}: o documento é só a linha.',
4048
+ 'docv.children_help': 'Cada linha filha é um objeto na sua lista, sem as colunas de chave estrangeira. Escrever um documento atualiza os filhos que lista pela chave, insere os que não têm chave e exclui os que omite; um documento sem a lista não mexe nos filhos.',
4049
+ 'docv.view': 'View',
4050
+ 'docv.doc_column': 'Coluna do documento',
4051
+ 'docv.intro': 'Uma view de documentos mostra cada linha de {table} com as suas linhas filhas como um único documento JSON, como uma JSON Relational Duality View da Oracle. Relatórios, REST (AutoREST sobre a view) e MCP leem documentos inteiros; um update da coluna do documento escreve a linha e os seus filhos numa instrução. Aplicam-se a segurança em nível de linha e as permissões da tabela (a view é security_invoker e recebe as permissões da tabela).',
2425
4052
  };