@tekki-forge/runtime-admin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +5 -0
  2. package/dist/account.d.ts +1 -0
  3. package/dist/account.js +105 -0
  4. package/dist/account.js.map +1 -0
  5. package/dist/activity.d.ts +65 -0
  6. package/dist/activity.js +299 -0
  7. package/dist/activity.js.map +1 -0
  8. package/dist/admin-access.d.ts +4 -0
  9. package/dist/admin-access.js +177 -0
  10. package/dist/admin-access.js.map +1 -0
  11. package/dist/admin.d.ts +5 -0
  12. package/dist/admin.js +129 -0
  13. package/dist/admin.js.map +1 -0
  14. package/dist/auth-pages.d.ts +13 -0
  15. package/dist/auth-pages.js +207 -0
  16. package/dist/auth-pages.js.map +1 -0
  17. package/dist/brand-art.d.ts +24 -0
  18. package/dist/brand-art.js +33 -0
  19. package/dist/brand-art.js.map +1 -0
  20. package/dist/brand.d.ts +11 -0
  21. package/dist/brand.js +16 -0
  22. package/dist/brand.js.map +1 -0
  23. package/dist/charts.d.ts +23 -0
  24. package/dist/charts.js +259 -0
  25. package/dist/charts.js.map +1 -0
  26. package/dist/command-palette.d.ts +9 -0
  27. package/dist/command-palette.js +115 -0
  28. package/dist/command-palette.js.map +1 -0
  29. package/dist/context.d.ts +242 -0
  30. package/dist/context.js +107 -0
  31. package/dist/context.js.map +1 -0
  32. package/dist/dashboard.d.ts +66 -0
  33. package/dist/dashboard.js +144 -0
  34. package/dist/dashboard.js.map +1 -0
  35. package/dist/fields.d.ts +71 -0
  36. package/dist/fields.js +326 -0
  37. package/dist/fields.js.map +1 -0
  38. package/dist/i18n/catalog.d.ts +7 -0
  39. package/dist/i18n/catalog.js +23 -0
  40. package/dist/i18n/catalog.js.map +1 -0
  41. package/dist/i18n/locale.d.ts +15 -0
  42. package/dist/i18n/locale.js +69 -0
  43. package/dist/i18n/locale.js.map +1 -0
  44. package/dist/i18n/messages/de.d.ts +3 -0
  45. package/dist/i18n/messages/de.js +627 -0
  46. package/dist/i18n/messages/de.js.map +1 -0
  47. package/dist/i18n/messages/en.d.ts +3 -0
  48. package/dist/i18n/messages/en.js +627 -0
  49. package/dist/i18n/messages/en.js.map +1 -0
  50. package/dist/i18n/messages/es.d.ts +3 -0
  51. package/dist/i18n/messages/es.js +627 -0
  52. package/dist/i18n/messages/es.js.map +1 -0
  53. package/dist/i18n/messages/fr.d.ts +3 -0
  54. package/dist/i18n/messages/fr.js +627 -0
  55. package/dist/i18n/messages/fr.js.map +1 -0
  56. package/dist/i18n/messages/pt.d.ts +3 -0
  57. package/dist/i18n/messages/pt.js +627 -0
  58. package/dist/i18n/messages/pt.js.map +1 -0
  59. package/dist/i18n/validation.d.ts +3 -0
  60. package/dist/i18n/validation.js +36 -0
  61. package/dist/i18n/validation.js.map +1 -0
  62. package/dist/illustrations.d.ts +6 -0
  63. package/dist/illustrations.js +16 -0
  64. package/dist/illustrations.js.map +1 -0
  65. package/dist/import-dialog.d.ts +11 -0
  66. package/dist/import-dialog.js +152 -0
  67. package/dist/import-dialog.js.map +1 -0
  68. package/dist/index.d.ts +38 -0
  69. package/dist/index.js +39 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/inline-edit.d.ts +18 -0
  72. package/dist/inline-edit.js +115 -0
  73. package/dist/inline-edit.js.map +1 -0
  74. package/dist/landing.d.ts +79 -0
  75. package/dist/landing.js +122 -0
  76. package/dist/landing.js.map +1 -0
  77. package/dist/locale-switcher.d.ts +4 -0
  78. package/dist/locale-switcher.js +15 -0
  79. package/dist/locale-switcher.js.map +1 -0
  80. package/dist/map.d.ts +26 -0
  81. package/dist/map.js +232 -0
  82. package/dist/map.js.map +1 -0
  83. package/dist/notifications.d.ts +12 -0
  84. package/dist/notifications.js +75 -0
  85. package/dist/notifications.js.map +1 -0
  86. package/dist/record-mutation.d.ts +19 -0
  87. package/dist/record-mutation.js +39 -0
  88. package/dist/record-mutation.js.map +1 -0
  89. package/dist/resource-detail.d.ts +4 -0
  90. package/dist/resource-detail.js +96 -0
  91. package/dist/resource-detail.js.map +1 -0
  92. package/dist/resource-form.d.ts +11 -0
  93. package/dist/resource-form.js +92 -0
  94. package/dist/resource-form.js.map +1 -0
  95. package/dist/resource-list.d.ts +10 -0
  96. package/dist/resource-list.js +154 -0
  97. package/dist/resource-list.js.map +1 -0
  98. package/dist/saved-views.d.ts +16 -0
  99. package/dist/saved-views.js +64 -0
  100. package/dist/saved-views.js.map +1 -0
  101. package/dist/schema-editor-diagram.d.ts +14 -0
  102. package/dist/schema-editor-diagram.js +54 -0
  103. package/dist/schema-editor-diagram.js.map +1 -0
  104. package/dist/schema-editor.d.ts +98 -0
  105. package/dist/schema-editor.js +571 -0
  106. package/dist/schema-editor.js.map +1 -0
  107. package/dist/shell.d.ts +10 -0
  108. package/dist/shell.js +228 -0
  109. package/dist/shell.js.map +1 -0
  110. package/dist/skeleton.d.ts +25 -0
  111. package/dist/skeleton.js +34 -0
  112. package/dist/skeleton.js.map +1 -0
  113. package/dist/theme-catalog.d.ts +71 -0
  114. package/dist/theme-catalog.js +55 -0
  115. package/dist/theme-catalog.js.map +1 -0
  116. package/dist/theme-head.d.ts +8 -0
  117. package/dist/theme-head.js +11 -0
  118. package/dist/theme-head.js.map +1 -0
  119. package/dist/theme-preview.d.ts +2 -0
  120. package/dist/theme-preview.js +23 -0
  121. package/dist/theme-preview.js.map +1 -0
  122. package/dist/theme-switcher.d.ts +20 -0
  123. package/dist/theme-switcher.js +159 -0
  124. package/dist/theme-switcher.js.map +1 -0
  125. package/dist/theme.d.ts +24 -0
  126. package/dist/theme.js +30 -0
  127. package/dist/theme.js.map +1 -0
  128. package/dist/toast.d.ts +21 -0
  129. package/dist/toast.js +51 -0
  130. package/dist/toast.js.map +1 -0
  131. package/dist/ui.d.ts +86 -0
  132. package/dist/ui.js +106 -0
  133. package/dist/ui.js.map +1 -0
  134. package/dist/views.d.ts +23 -0
  135. package/dist/views.js +238 -0
  136. package/dist/views.js.map +1 -0
  137. package/package.json +58 -0
  138. package/styles.css +778 -0
@@ -0,0 +1,627 @@
1
+ /** Built-in UI texts in Portuguese. */
2
+ export const pt = {
3
+ "locale.label": "Idioma",
4
+ "common.actions": "Ações",
5
+ "common.back": "Voltar",
6
+ "common.cancel": "Cancelar",
7
+ "common.clear": "Limpar",
8
+ "common.close": "Fechar",
9
+ "common.confirm": "Confirmar",
10
+ "common.continue": "Continuar",
11
+ "common.create": "Criar",
12
+ "common.delete": "Eliminar",
13
+ "common.done": "Concluído",
14
+ "common.doneNotice": "Concluído.",
15
+ "common.edit": "Editar",
16
+ "common.loading": "A carregar…",
17
+ "common.no": "Não",
18
+ "common.none": "Nenhum",
19
+ "common.notFound": "Não encontrado",
20
+ "common.open": "Abrir",
21
+ "common.remove": "Remover",
22
+ "common.save": "Guardar",
23
+ "common.search": "Pesquisar",
24
+ "common.searchEllipsis": "Pesquisar…",
25
+ "common.select": "Selecionar…",
26
+ "common.somethingWentWrong": "Ocorreu um erro",
27
+ "common.untitled": "Sem título",
28
+ "common.yes": "Sim",
29
+ "pagination.label": "Paginação",
30
+ "pagination.next": "Seguinte",
31
+ "pagination.previous": "Anterior",
32
+ "pagination.results_one": "{count} resultado",
33
+ "pagination.results_other": "{count} resultados",
34
+ "nav.administration": "Administração",
35
+ "nav.apiDocs": "Documentação da API",
36
+ "nav.closeMenu": "Fechar menu",
37
+ "nav.collapseRail": "Recolher a navegação",
38
+ "nav.expandRail": "Expandir a navegação",
39
+ "nav.dashboard": "Painel",
40
+ "nav.impersonating": "Está a representar {name}.",
41
+ "nav.main": "Navegação principal",
42
+ "nav.newOrganization": "+ Nova organização",
43
+ "nav.noPage": "Não existe nenhuma página em {path}.",
44
+ "nav.openMenu": "Abrir menu",
45
+ "nav.organization": "Organização",
46
+ "nav.signOut": "Terminar sessão",
47
+ "nav.stopImpersonating": "Parar",
48
+ "auth.acceptInvitation": "Aceitar convite",
49
+ "auth.alreadyRegistered": "Já tem conta?",
50
+ "auth.askForInvite": "Peça a um administrador que o convide.",
51
+ "auth.backToSignIn": "Voltar ao início de sessão",
52
+ "auth.checkEmail": "Verifique o seu e-mail",
53
+ "auth.chooseNewPassword": "Escolha uma nova palavra-passe",
54
+ "auth.code": "Código",
55
+ "auth.continueWith": "Continuar com {provider}",
56
+ "auth.createAccount": "Criar conta",
57
+ "auth.createOne": "Crie uma",
58
+ "auth.createOrganization": "Crie a sua organização",
59
+ "auth.createOrganizationSubtitle": "Tudo o que criar pertence a uma organização. De seguida, poderá convidar colegas.",
60
+ "auth.createYourAccount": "Crie a sua conta",
61
+ "auth.email": "E-mail",
62
+ "auth.enterBackupCode": "Introduza um dos seus códigos de recuperação.",
63
+ "auth.enterTotpCode": "Introduza o código de 6 dígitos da sua aplicação de autenticação.",
64
+ "auth.forgotPassword": "Esqueceu-se da palavra-passe?",
65
+ "auth.invitedSubtitle": "Inicie sessão ou crie uma conta com o endereço de e-mail convidado para aceitar.",
66
+ "auth.invitedTitle": "Recebeu um convite",
67
+ "auth.joinOrganization": "Juntar-se à organização",
68
+ "auth.noAccount": "Não tem conta?",
69
+ "auth.or": "ou",
70
+ "auth.organizationName": "Nome da organização",
71
+ "auth.organizationNamePlaceholder": "Empresa Exemplo, Lda.",
72
+ "auth.password": "Palavra-passe",
73
+ "auth.passwordHint": "Pelo menos 8 caracteres.",
74
+ "auth.registrationClosed": "O registo está fechado",
75
+ "auth.resetLinkInvalid": "Esta ligação de reposição é inválida ou expirou.",
76
+ "auth.resetSent": "Se existir uma conta para {email}, será enviada uma ligação de reposição.",
77
+ "auth.resetSubtitle": "Enviaremos uma ligação de reposição por e-mail.",
78
+ "auth.resetTitle": "Repor a palavra-passe",
79
+ "auth.sendResetLink": "Enviar ligação",
80
+ "auth.signIn": "Iniciar sessão",
81
+ "auth.signInTo": "Iniciar sessão em {app}",
82
+ "auth.signInWithPasskey": "Iniciar sessão com uma chave de acesso",
83
+ "auth.trustDevice": "Confiar neste dispositivo durante 30 dias",
84
+ "auth.updatePassword": "Atualizar palavra-passe",
85
+ "auth.useAuthenticatorCode": "Utilizar o código da aplicação de autenticação",
86
+ "auth.useBackupCode": "Utilizar um código de recuperação",
87
+ "auth.verificationSent": "Enviámos uma ligação de verificação para {email}. Siga-a para concluir a criação da sua conta.",
88
+ "account.addPasskey": "Adicionar uma chave de acesso",
89
+ "account.backupCodes": "Códigos de recuperação — guarde-os num local seguro",
90
+ "account.changePassword": "Alterar palavra-passe",
91
+ "account.confirmWithPassword": "Confirme com a sua palavra-passe",
92
+ "account.currentPassword": "Palavra-passe atual",
93
+ "account.disable2fa": "Desativar",
94
+ "account.enable2fa": "Ativar 2FA",
95
+ "account.name": "Nome",
96
+ "account.newPassword": "Nova palavra-passe",
97
+ "account.openInAuthenticator": "Abrir na aplicação de autenticação",
98
+ "account.passkey": "Chave de acesso",
99
+ "account.passkeyAdded": "adicionada em {date}",
100
+ "account.passkeyAddedNotice": "Chave de acesso adicionada.",
101
+ "account.passkeys": "Chaves de acesso",
102
+ "account.passkeysDescription": "Inicie sessão com a impressão digital, o rosto ou o PIN do dispositivo.",
103
+ "account.password": "Palavra-passe",
104
+ "account.passwordChanged": "Palavra-passe alterada. As outras sessões foram terminadas.",
105
+ "account.profile": "Perfil",
106
+ "account.profileUpdated": "Perfil atualizado.",
107
+ "account.revoke": "Revogar",
108
+ "account.secretKey": "Chave secreta",
109
+ "account.sessions": "Sessões ativas",
110
+ "account.thisDevice": "este dispositivo",
111
+ "account.title": "Conta",
112
+ "account.twoFactor": "Autenticação de dois fatores",
113
+ "account.twoFactorDisabled": "Proteja a sua conta com uma aplicação de autenticação.",
114
+ "account.twoFactorEnabled": "Ativada. Será pedido um código ao iniciar sessão.",
115
+ "account.twoFactorSetup": "Adicione esta conta à sua aplicação de autenticação e, em seguida, introduza o código apresentado.",
116
+ "account.unknownDevice": "Dispositivo desconhecido",
117
+ "account.verificationCode": "Código de verificação",
118
+ "account.verify": "Verificar",
119
+ "admin.role": "Função",
120
+ "admin.roleFor": "Função de {name}",
121
+ "admin.users.active": "Ativo",
122
+ "admin.users.ban": "Bloquear",
123
+ "admin.users.banMessage": "A sessão será terminada e não será possível voltar a iniciar sessão.",
124
+ "admin.users.banTitle": "Bloquear {name}?",
125
+ "admin.users.banned": "Bloqueado",
126
+ "admin.users.create": "Criar utilizador",
127
+ "admin.users.created": "{name} foi criado.",
128
+ "admin.users.deleteMessage": "Esta ação elimina permanentemente a conta e as respetivas sessões.",
129
+ "admin.users.deleteTitle": "Eliminar {name}?",
130
+ "admin.users.description": "Todas as pessoas com conta. Funções globais, bloqueios e sessões.",
131
+ "admin.users.empty": "Nenhum utilizador encontrado",
132
+ "admin.users.impersonate": "Representar",
133
+ "admin.users.joined": "Registo",
134
+ "admin.users.roleChanged": "{name} tem agora a função {role}.",
135
+ "admin.users.search": "Pesquisar utilizadores",
136
+ "admin.users.searchPlaceholder": "Pesquisar por nome ou e-mail…",
137
+ "admin.users.signOut": "Terminar sessões",
138
+ "admin.users.signedOut": "Todas as sessões de {name} foram terminadas.",
139
+ "admin.users.status": "Estado",
140
+ "admin.users.tempPassword": "Palavra-passe temporária",
141
+ "admin.users.tempPasswordHint": "Pelo menos 8 caracteres. Peça ao utilizador que a altere depois de iniciar sessão.",
142
+ "admin.users.title": "Utilizadores",
143
+ "admin.users.unban": "Desbloquear",
144
+ "admin.users.unbanned": "{name} foi desbloqueado.",
145
+ "admin.users.unverified": "Não verificado",
146
+ "admin.users.user": "Utilizador",
147
+ "admin.members.description": "Pessoas em {org}.",
148
+ "admin.members.emailPlaceholder": "colega@empresa.com",
149
+ "admin.members.invitationCancelled": "Convite cancelado.",
150
+ "admin.members.inviteByEmail": "Convidar por e-mail",
151
+ "admin.members.invited": "Convite enviado para {email}.",
152
+ "admin.members.invitedAs": "Convidado como {role} · expira em {date}",
153
+ "admin.members.removed": "{name} foi removido.",
154
+ "admin.members.roleUpdated": "Função atualizada.",
155
+ "admin.members.sendInvite": "Enviar convite",
156
+ "admin.members.title": "Membros",
157
+ "admin.audit.action": "Ação",
158
+ "admin.audit.allResources": "Todos os recursos",
159
+ "admin.audit.changes": "Alterações",
160
+ "admin.audit.description": "Cada criação, alteração, eliminação e ação nos recursos auditados.",
161
+ "admin.audit.empty": "Ainda não há atividade",
162
+ "admin.audit.emptyHint": "Ative features: { audit: true } numa entidade para registar o respetivo histórico.",
163
+ "admin.audit.entity": "Entidade",
164
+ "admin.audit.record": "Registo",
165
+ "admin.audit.system": "Sistema",
166
+ "admin.audit.title": "Registo de auditoria",
167
+ "admin.audit.when": "Data",
168
+ "admin.audit.who": "Utilizador",
169
+ "dashboard.description": "Eis o conteúdo de {app}.",
170
+ "dashboard.emptyDescription": "Ainda não tem acesso a nenhum dado do painel.",
171
+ "dashboard.emptyTitle": "Nada para mostrar",
172
+ "dashboard.nothingYet": "Ainda não há nada aqui.",
173
+ "dashboard.other": "Outros",
174
+ "dashboard.viewAll": "Ver tudo",
175
+ "dashboard.welcome": "Bem-vindo",
176
+ "dashboard.welcomeName": "Bem-vindo, {name}",
177
+ "charts.bar": "Gráfico de barras",
178
+ "charts.donutSummary": "Gráfico de anel, total {total}. {slices}.",
179
+ "charts.label": "Etiqueta",
180
+ "charts.line": "Gráfico de linhas",
181
+ "charts.noData": "Ainda sem dados",
182
+ "charts.other": "Outros",
183
+ "charts.share": "Percentagem",
184
+ "charts.summary_one": "{kind} com {count} item. Máximo {highest}; mínimo {lowest}.",
185
+ "charts.summary_other": "{kind} com {count} itens. Máximo {highest}; mínimo {lowest}.",
186
+ "charts.summaryEmpty": "{kind}, sem dados",
187
+ "charts.total": "Total",
188
+ "charts.value": "Valor",
189
+ "list.add": "Adicionar",
190
+ "list.column.createdAt": "Criado",
191
+ "list.column.updatedAt": "Atualizado",
192
+ "list.bulkDeleteSoft": "Poderão ser restaurados mais tarde a partir do filtro Eliminados.",
193
+ "list.bulkDeleteTitle_one": "Eliminar {count} {item}?",
194
+ "list.bulkDeleteTitle_other": "Eliminar {count} {items}?",
195
+ "list.createFirst": "Criar o primeiro",
196
+ "list.deleteSelected": "Eliminar {count}",
197
+ "list.deletedRecords": "Registos eliminados",
198
+ "list.editField": "Editar {field}",
199
+ "list.emptyYet": "Ainda não há {items}",
200
+ "list.export": "Exportar",
201
+ "list.filterAll": "{filter}: todos",
202
+ "list.filterSearch": "Pesquisar {filter}…",
203
+ "list.import": "Importar",
204
+ "list.new": "Novo: {item}",
205
+ "list.noMatch": "Nenhum resultado em {items}",
206
+ "list.noResource": "Não existe nenhum recurso em {path}.",
207
+ "list.searchPlaceholder": "Pesquisar {items}…",
208
+ "list.selectAll": "Selecionar tudo",
209
+ "list.selectRow": "Selecionar linha",
210
+ "list.trashed.active": "Ativos",
211
+ "list.trashed.all": "Todos",
212
+ "list.trashed.deleted": "Eliminados",
213
+ "list.view": "Vista",
214
+ "list.views.board": "Quadro",
215
+ "list.views.calendar": "Calendário",
216
+ "list.views.map": "Mapa",
217
+ "list.views.table": "Tabela",
218
+ "detail.actionCompleted": "{action}: concluído.",
219
+ "detail.created": "Criado",
220
+ "detail.createdUpdated": "{created} · atualizado em {updated}",
221
+ "detail.deleteHard": "Esta ação não pode ser anulada.",
222
+ "detail.deleteSoft": "Poderá restaurá-lo mais tarde.",
223
+ "detail.deleteTitle": "Eliminar este registo ({item})?",
224
+ "detail.deleted": "Este registo foi eliminado.",
225
+ "detail.history": "Histórico",
226
+ "detail.restore": "Restaurar",
227
+ "detail.restored": "Restaurado.",
228
+ "detail.transitionConfirm": "Mover este registo ({item}) para «{state}»?",
229
+ "detail.transitioned": "{transition} — agora {state}.",
230
+ "form.createItem": "Criar: {item}",
231
+ "form.editTitle": "Editar: {item}",
232
+ "form.fixErrors": "Corrija os campos assinalados.",
233
+ "form.invalidValue": "Valor inválido",
234
+ "form.saveChanges": "Guardar alterações",
235
+ "fields.colorPicker": "Seletor de cor de {label}",
236
+ "fields.noMatches": "Sem resultados",
237
+ "fields.removeItem": "Remover {item}",
238
+ "fields.file.anyType": "Qualquer tipo",
239
+ "fields.file.dropFile": "Largue um ficheiro aqui ou clique para escolher",
240
+ "fields.file.dropImage": "Largue uma imagem aqui ou clique para escolher",
241
+ "fields.file.limits": "{types} · até {size}",
242
+ "fields.file.replace": "Substituir",
243
+ "fields.file.tooLarge": "Demasiado grande — o limite é {size}.",
244
+ "fields.file.uploadFailedNetwork": "Falha no envio — verifique a sua ligação.",
245
+ "fields.file.uploadFailedStatus": "Falha no envio ({status})",
246
+ "fields.file.uploading": "A enviar… {percent}%",
247
+ "fields.file.wrongType": "Tipo de ficheiro não aceite ({types}).",
248
+ "fields.location.latitude": "Latitude",
249
+ "fields.location.locating": "A localizar…",
250
+ "fields.location.longitude": "Longitude",
251
+ "fields.location.useMine": "Utilizar a minha localização",
252
+ "views.truncated": "A mostrar os primeiros {shown} de {total} — utilize a pesquisa ou os filtros para restringir.",
253
+ "views.board.card": "o cartão",
254
+ "views.board.label": "{items} por {field}",
255
+ "views.board.moveCard": "Mover {card} para",
256
+ "views.board.moveFailed": "Não foi possível mover o cartão",
257
+ "views.board.moveTo": "Mover para…",
258
+ "views.board.setField": "Definir {field}…",
259
+ "views.calendar.label": "{items} em {month}",
260
+ "views.calendar.more": "+{count} mais",
261
+ "views.calendar.newOn": "Novo: {item} em {date}",
262
+ "views.calendar.nextMonth": "Mês seguinte",
263
+ "views.calendar.previousMonth": "Mês anterior",
264
+ "views.calendar.rescheduleFailed": "Não foi possível reagendar",
265
+ "views.calendar.showLess": "Mostrar menos",
266
+ "views.calendar.today": "Hoje",
267
+ "views.map.cluster": "{count} {items} — aproximar",
268
+ "views.map.emptyHere": "Não há {items} com localização nesta zona.",
269
+ "views.map.emptyYet": "Ainda não há {items} com localização.",
270
+ "views.map.label": "Mapa de {items}. Setas para deslocar, mais e menos para ampliar ou reduzir.",
271
+ "views.map.showAll": "Mostrar tudo",
272
+ "views.map.zoomIn": "Aproximar",
273
+ "views.map.zoomOut": "Afastar",
274
+ "import.alwaysCreate": "Criar sempre novos registos",
275
+ "import.check_one": "Verificar {count} linha",
276
+ "import.check_other": "Verificar {count} linhas",
277
+ "import.chooseFile": "Escolha um ficheiro CSV ou largue-o aqui",
278
+ "import.column": "Coluna",
279
+ "import.columnFor": "Coluna para {field}",
280
+ "import.dateDmy": "3 de abril (dia/mês/ano)",
281
+ "import.dateMdy": "4 de março (mês/dia/ano)",
282
+ "import.dateOrder": "Datas como 03/04/2026 significam",
283
+ "import.dateYmd": "ISO (2026-04-03)",
284
+ "import.doneSummary": "Importação concluída: {created} novos e {updated} atualizados ({items}).",
285
+ "import.doneWithFailures_one": "Importação concluída: {created} novos e {updated} atualizados ({items}); {count} linha falhou.",
286
+ "import.doneWithFailures_other": "Importação concluída: {created} novos e {updated} atualizados ({items}); {count} linhas falharam.",
287
+ "import.dontImport": "— Não importar —",
288
+ "import.downloadProblems": "Transferir as linhas com problemas",
289
+ "import.errorsColumn": "Erros",
290
+ "import.existing": "Registos existentes",
291
+ "import.failedAfter_one": "{message} (após {count} linha)",
292
+ "import.failedAfter_other": "{message} (após {count} linhas)",
293
+ "import.field": "Campo",
294
+ "import.fileHint": "Primeira linha = nomes das colunas. Separado por vírgulas, ponto e vírgula ou tabulações. Até {size} MB.",
295
+ "import.fileTooLarge": "O ficheiro tem mais de {size} MB — divida-o primeiro.",
296
+ "import.firstValue": "Primeiro valor",
297
+ "import.importRows_one": "Importar {count} linha",
298
+ "import.importRows_other": "Importar {count} linhas",
299
+ "import.importRowsSkip_one": "Importar {count} linha, ignorar {skip}",
300
+ "import.importRowsSkip_other": "Importar {count} linhas, ignorar {skip}",
301
+ "import.line": "Linha {line}:",
302
+ "import.missingColumns": "Escolha uma coluna para: {fields}.",
303
+ "import.more": "…e mais {count} (transfira o relatório).",
304
+ "import.new": "Novos",
305
+ "import.noRows": "Este ficheiro não tem linhas de dados.",
306
+ "import.parseErrors_one": "Não foi possível ler corretamente {count} linha (p. ex., linha {line}: {message}).",
307
+ "import.parseErrors_other": "Não foi possível ler corretamente {count} linhas (p. ex., linha {line}: {message}).",
308
+ "import.problems": "Problemas",
309
+ "import.progress": "{done} / {total} linhas",
310
+ "import.relationsHint": "As relações são associadas pelo nome (ou id); vários valores numa célula são separados por «;».",
311
+ "import.rowsFound_one": "{count} linha. Associe cada campo a uma coluna.",
312
+ "import.rowsFound_other": "{count} linhas. Associe cada campo a uma coluna.",
313
+ "import.rowsFoundTruncated_one": "{count} linha (truncado). Associe cada campo a uma coluna.",
314
+ "import.rowsFoundTruncated_other": "{count} linhas (truncado). Associe cada campo a uma coluna.",
315
+ "import.skipped_one": "{count} linha vazia será ignorada.",
316
+ "import.skipped_other": "{count} linhas vazias serão ignoradas.",
317
+ "import.title": "Importar {items}",
318
+ "import.updateById": "Atualizar quando o ID corresponder",
319
+ "import.updateWhen": "Atualizar quando {field} corresponder",
320
+ "import.updates": "Atualizações",
321
+ "savedViews.deleteView": "Eliminar a vista {name}",
322
+ "savedViews.empty": "Ainda não há vistas guardadas.",
323
+ "savedViews.filterFirst": "Primeiro filtre, pesquise ou ordene a lista",
324
+ "savedViews.namePlaceholder": "p. ex., Os meus negócios em aberto",
325
+ "savedViews.resetFilters": "Repor filtros",
326
+ "savedViews.saveCurrent": "Guardar a vista atual…",
327
+ "savedViews.saveTitle": "Guardar vista",
328
+ "savedViews.shareWithOrg": "Partilhar com toda a organização",
329
+ "savedViews.shared": "Partilhada com a equipa",
330
+ "savedViews.views": "Vistas",
331
+ "palette.create": "Criar",
332
+ "palette.goTo": "Ir para",
333
+ "palette.label": "Paleta de comandos",
334
+ "palette.noMatches": "Nenhum resultado para «{query}».",
335
+ "palette.placeholder": "Pesquisar em {app} ou ir para…",
336
+ "palette.searching": "A pesquisar…",
337
+ "notifications.caughtUp": "Está tudo em dia",
338
+ "notifications.emptyDescription": "As notificações sobre os registos que segue aparecem aqui.",
339
+ "notifications.emptyTitle": "Nada aqui",
340
+ "notifications.hoursAgo": "há {count} h",
341
+ "notifications.justNow": "agora mesmo",
342
+ "notifications.labelUnread": "Notificações ({count} por ler)",
343
+ "notifications.markAllRead": "Marcar tudo como lido",
344
+ "notifications.markRead": "Marcar como lida",
345
+ "notifications.minutesAgo": "há {count} min",
346
+ "notifications.seeAll": "Ver todas",
347
+ "notifications.title": "Notificações",
348
+ "notifications.unreadOnly": "Apenas por ler",
349
+ "validation.required": "Obrigatório",
350
+ "validation.number": "Tem de ser um número",
351
+ "validation.integer": "Tem de ser um número inteiro",
352
+ "validation.decimal": "Tem de ser um número decimal",
353
+ "validation.decimalPlaces": "No máximo {max} casas decimais",
354
+ "validation.between": "Tem de estar entre {min} e {max}",
355
+ "validation.min": "Tem de ser pelo menos {min}",
356
+ "validation.max": "Tem de ser no máximo {max}",
357
+ "validation.date": "Tem de ser uma data (AAAA-MM-DD)",
358
+ "validation.datetime": "Tem de ser uma data e hora",
359
+ "validation.oneOf": "Tem de ser um dos seguintes valores: {values}",
360
+ "validation.selectOne": "Selecione pelo menos uma opção",
361
+ "validation.minLength": "Pelo menos {min} caracteres",
362
+ "validation.maxLength": "No máximo {max} caracteres",
363
+ "validation.pattern": "Formato inválido",
364
+ "validation.email": "Tem de ser um e-mail válido",
365
+ "validation.url": "Tem de ser um URL válido",
366
+ "validation.color": "Tem de ser uma cor hexadecimal, como #3b82f6",
367
+ "validation.latitude": "A latitude tem de estar entre -90 e 90",
368
+ "validation.longitude": "A longitude tem de estar entre -180 e 180",
369
+ "validation.taken": "Já está em uso",
370
+ "nav.accountMenu": "Menu da conta",
371
+ "nav.skipToContent": "Saltar para o conteúdo",
372
+ "toast.region": "Mensagens de estado",
373
+ "toast.saved": "Alterações guardadas",
374
+ "toast.created": "{item} criado",
375
+ "toast.deleted": "{item} eliminado",
376
+ "toast.failed": "Não foi possível concluir",
377
+ "toast.bulkDeleted_one": "{count} registo eliminado",
378
+ "toast.bulkDeleted_other": "{count} registos eliminados",
379
+ "toast.imported_one": "{count} linha importada",
380
+ "toast.imported_other": "{count} linhas importadas",
381
+ // Schema editor (/admin/schema, development only)
382
+ "schema.nav": "Esquema",
383
+ "schema.title": "Editor de esquema",
384
+ "schema.description": "Altere entidades e campos visualmente. Nada é escrito antes de rever e aplicar as alterações.",
385
+ "schema.tab.editor": "Editor",
386
+ "schema.tab.diagram": "Diagrama",
387
+ "schema.unavailable.title": "Editor de esquema indisponível",
388
+ "schema.unavailable.body": "O editor de esquema está disponível enquanto `forge dev` estiver em execução. Em produção, edite forge.config.ts e faça a implementação.",
389
+ "schema.forbidden": "Apenas administradores podem editar o esquema.",
390
+ "schema.loadError": "Não foi possível carregar o esquema: {message}",
391
+ "schema.reload": "Recarregar",
392
+ "schema.invalidConfig": "O forge.config.ts não compila neste momento. Corrija primeiro estes problemas no ficheiro:",
393
+ "schema.review": "Rever alterações",
394
+ "schema.entities": "Entidades",
395
+ "schema.fieldCount_one": "{count} campo",
396
+ "schema.fieldCount_other": "{count} campos",
397
+ "schema.newEntity": "Nova entidade",
398
+ "schema.newEntityName": "Nome da entidade",
399
+ "schema.newEntityHint": "No singular, a começar por maiúscula, p. ex. Invoice",
400
+ "schema.noEntity": "Selecione uma entidade ou crie uma nova.",
401
+ "schema.pending": "Alterações pendentes",
402
+ "schema.pendingEmpty": "Ainda não há alterações.",
403
+ "schema.discard": "Descartar tudo",
404
+ "schema.fixProblems": "Corrija primeiro:",
405
+ "schema.readOnlyEntity": "Definida fora do bloco entities (por exemplo, por um plugin) — só de leitura aqui.",
406
+ "schema.removeEntity": "Remover entidade",
407
+ "schema.restoreEntity": "Restaurar",
408
+ "schema.renameEntity.action": "Renomear",
409
+ "schema.renameEntity.label": "Novo nome da entidade",
410
+ "schema.renameEntity.hint": "As referências em forge.config.ts passam a usar o novo nome. A tabela, o URL e os dados guardados mantêm-se.",
411
+ "schema.renameEntity.save": "Guardar o nome",
412
+ "schema.renameEntity.cancel": "Cancelar a mudança de nome",
413
+ "schema.renameEntity.was": "antes {name}",
414
+ "schema.entityRemoved": "Esta entidade será removida com todos os seus dados.",
415
+ "schema.fields": "Campos",
416
+ "schema.addField": "Adicionar campo",
417
+ "schema.field.name": "Nome",
418
+ "schema.field.type": "Tipo",
419
+ "schema.field.target": "Destino",
420
+ "schema.field.required": "Obrigatório",
421
+ "schema.field.unique": "Único",
422
+ "schema.field.searchable": "Pesquisável",
423
+ "schema.field.many": "Múltiplo (muitos-para-muitos)",
424
+ "schema.field.owner": "Dono do registo",
425
+ "schema.field.values": "Valores",
426
+ "schema.field.valuesHint": "Separados por vírgulas, p. ex. draft, active, archived",
427
+ "schema.field.currency": "Moeda",
428
+ "schema.field.accept": "Tipos aceites",
429
+ "schema.field.acceptHint": "p. ex. image/*, .pdf",
430
+ "schema.field.maxSize": "Tamanho máximo",
431
+ "schema.field.expression": "Expressão",
432
+ "schema.field.computedType": "Tipo do resultado",
433
+ "schema.field.default": "Valor predefinido",
434
+ "schema.field.details": "Mais opções",
435
+ "schema.field.moveUp": "Mover para cima",
436
+ "schema.field.moveDown": "Mover para baixo",
437
+ "schema.field.drag": "Arraste para reordenar",
438
+ "schema.field.remove": "Remover campo",
439
+ "schema.field.new": "Novo",
440
+ "schema.options": "Opções da entidade",
441
+ "schema.option.label": "Rótulo",
442
+ "schema.option.pluralLabel": "Rótulo no plural",
443
+ "schema.option.icon": "Ícone",
444
+ "schema.option.display": "Campo de apresentação",
445
+ "schema.option.nav": "Mostrar na navegação",
446
+ "schema.option.default": "Predefinido",
447
+ "schema.feature.audit": "Registo de auditoria",
448
+ "schema.feature.softDelete": "Eliminação reversível",
449
+ "schema.error.name": "Use letras e dígitos, a começar por uma letra.",
450
+ "schema.error.duplicate": "Este nome já está a ser usado.",
451
+ "schema.error.entityName": "Use PascalCase: uma maiúscula seguida de letras e dígitos, por ex. Invoice.",
452
+ "schema.error.reserved": "Este nome está reservado pelo Forge.",
453
+ "schema.error.noFields": "Uma entidade precisa de pelo menos um campo.",
454
+ "schema.error.enumValues": "Os valores têm de começar por uma letra e usar apenas letras, dígitos ou _.",
455
+ "schema.error.target": "Escolha a entidade relacionada.",
456
+ "schema.error.expression": "Introduza uma expressão.",
457
+ "schema.reviewTitle": "Rever alterações",
458
+ "schema.previewing": "A verificar o novo esquema…",
459
+ "schema.diff": "Alterações ao forge.config.ts",
460
+ "schema.noDiff": "Sem alterações de texto.",
461
+ "schema.issues": "O novo esquema tem problemas — corrija-os antes de aplicar:",
462
+ "schema.warnings": "Estas alterações afetam dados existentes:",
463
+ "schema.acknowledge": "Compreendo",
464
+ "schema.apply": "Aplicar",
465
+ "schema.appliedTitle": "Esquema atualizado",
466
+ "schema.applied": "O forge.config.ts foi atualizado. A aplicação é regenerada automaticamente com `forge dev`.",
467
+ "schema.conflict": "O forge.config.ts mudou desde que foi carregado. Recarregue e refaça as alterações.",
468
+ "schema.migration.title": "Criar migração",
469
+ "schema.migration.hint": "As alterações que afetam a base de dados precisam de uma migração.",
470
+ "schema.migration.name": "Nome da migração",
471
+ "schema.migration.run": "Criar migração",
472
+ "schema.migration.running": "A executar forge db migrate…",
473
+ "schema.migration.done": "Migração concluída.",
474
+ "schema.migration.failed": "A migração falhou (código de saída {code}).",
475
+ "schema.op.addEntity": "Adicionar a entidade {entity}",
476
+ "schema.op.removeEntity": "Remover a entidade {entity}",
477
+ "schema.op.renameEntity": "Renomear a entidade {from} para {to}",
478
+ "schema.op.addField": "Adicionar {entity}.{field}",
479
+ "schema.op.updateField": "Alterar {entity}.{field}",
480
+ "schema.op.removeField": "Remover {entity}.{field}",
481
+ "schema.op.moveField": "Mover {entity}.{field} para a posição {position}",
482
+ "schema.op.setEntityOption": "Definir {option} de {entity}",
483
+ "schema.warning.entityRemoved": "Remover {entity} apaga a tabela e todos os registos.",
484
+ "schema.warning.entityRenamed": "{detail} passa a chamar-se {entity}. A tabela ({table}), o URL (/{path}) e os dados guardados mantêm-se, por isso a migração não altera nada. Os nomes que a API deriva da entidade acompanham a mudança: tipos de eventos de webhook ({entity}.created…) e coleções dos seus registos nas entidades relacionadas. Para mover também a tabela ou o URL, edite table e path de {entity} em forge.config.ts.",
485
+ "schema.warning.fieldRemoved": "Remover ou renomear {entity}.{field} apaga os seus dados.",
486
+ "schema.warning.typeChange": "{entity}.{field} muda de tipo ({detail}); podem perder-se valores existentes.",
487
+ "schema.warning.requiredNoDefault": "{entity}.{field} é obrigatório sem valor predefinido; a migração falha se já existirem linhas.",
488
+ "schema.warning.uniqueAdded": "{entity}.{field} passa a ser único; a migração falha se houver duplicados.",
489
+ "schema.warning.optionsDropped": "{entity}.{field} é reescrito; estas opções são removidas: {detail}.",
490
+ "schema.diagram.empty": "Não há entidades para desenhar.",
491
+ "schema.diagram.builtin": "integrada",
492
+ "schema.type.string": "Texto",
493
+ "schema.type.text": "Texto longo",
494
+ "schema.type.richtext": "Texto formatado",
495
+ "schema.type.integer": "Inteiro",
496
+ "schema.type.decimal": "Decimal",
497
+ "schema.type.money": "Montante",
498
+ "schema.type.percentage": "Percentagem",
499
+ "schema.type.boolean": "Sim/não",
500
+ "schema.type.date": "Data",
501
+ "schema.type.datetime": "Data e hora",
502
+ "schema.type.enum": "Lista de opções",
503
+ "schema.type.email": "E-mail",
504
+ "schema.type.url": "URL",
505
+ "schema.type.phone": "Telefone",
506
+ "schema.type.color": "Cor",
507
+ "schema.type.json": "JSON",
508
+ "schema.type.location": "Localização",
509
+ "schema.type.file": "Ficheiro",
510
+ "schema.type.image": "Imagem",
511
+ "schema.type.computed": "Calculado",
512
+ "schema.type.relation": "Relação",
513
+ "admin.teams.title": "Equipas",
514
+ "admin.teams.adminsOnly": "Só os administradores podem gerir equipas.",
515
+ "admin.teams.description": "Agrupe membros da organização; os registos atribuídos a uma equipa são partilhados com os seus membros.",
516
+ "admin.teams.create": "Nova equipa",
517
+ "admin.teams.edit": "Editar equipa",
518
+ "admin.teams.empty": "Ainda não há equipas",
519
+ "admin.teams.emptyHint": "Crie uma equipa, adicione membros e atribua-lhe registos.",
520
+ "admin.teams.memberCount_one": "{count} membro",
521
+ "admin.teams.memberCount_other": "{count} membros",
522
+ "admin.teams.members": "Membros",
523
+ "admin.teams.saved": "Equipa {name} guardada.",
524
+ "admin.teams.deleteTitle": "Eliminar {name}?",
525
+ "admin.teams.deleteMessage": "Os seus registos mantêm-se mas deixam de pertencer a uma equipa. Os membros perdem o acesso concedido por ela.",
526
+ "admin.teams.deleted": "Equipa {name} eliminada.",
527
+ "admin.teams.name": "Nome",
528
+ "admin.teams.teamDescription": "Descrição",
529
+ "admin.teams.membersOf": "Membros de {name}",
530
+ "admin.teams.pickUser": "Adicionar um membro da organização…",
531
+ "admin.teams.addMember": "Adicionar",
532
+ "admin.teams.noMembers": "Ainda não há membros",
533
+ "admin.teams.addedOn": "adicionado a {date}",
534
+ "admin.apiKeys.title": "Chaves de API",
535
+ "admin.apiKeys.adminsOnly": "Só os administradores podem gerir chaves de API.",
536
+ "admin.apiKeys.description": "Chaves para scripts e integrações: envie Authorization: Bearer fk_… para {prefix}. Uma chave age com o seu papel, limitada aos seus âmbitos.",
537
+ "admin.apiKeys.create": "Criar chave de API",
538
+ "admin.apiKeys.empty": "Sem chaves de API",
539
+ "admin.apiKeys.emptyHint": "Crie uma chave para chamar a API a partir de outro sistema.",
540
+ "admin.apiKeys.name": "Nome",
541
+ "admin.apiKeys.nameHint": "Onde a chave é usada, p. ex. «Sincronização contabilística».",
542
+ "admin.apiKeys.scopes": "Âmbitos",
543
+ "admin.apiKeys.lastUsed": "Última utilização",
544
+ "admin.apiKeys.expires": "Expira",
545
+ "admin.apiKeys.expiresHint": "Opcional. A chave deixa de funcionar depois deste dia.",
546
+ "admin.apiKeys.roleHint": "Permissões da chave (nunca mais do que as suas).",
547
+ "admin.apiKeys.status": "Estado",
548
+ "admin.apiKeys.status.active": "Ativa",
549
+ "admin.apiKeys.status.revoked": "Revogada",
550
+ "admin.apiKeys.status.expired": "Expirada",
551
+ "admin.apiKeys.createdBy": "por {name} a {date}",
552
+ "admin.apiKeys.never": "Nunca",
553
+ "admin.apiKeys.revoke": "Revogar",
554
+ "admin.apiKeys.revokeTitle": "Revogar {name}?",
555
+ "admin.apiKeys.revokeMessage": "Os pedidos com esta chave serão recusados de imediato. Não é possível anular.",
556
+ "admin.apiKeys.revoked": "{name} revogada.",
557
+ "admin.apiKeys.createdTitle": "A sua nova chave de API",
558
+ "admin.apiKeys.shownOnce": "Copie a chave agora: só é mostrada uma vez e não pode ser recuperada.",
559
+ "admin.apiKeys.key": "Chave de API",
560
+ "admin.apiKeys.copy": "Copiar",
561
+ "admin.apiKeys.resource": "Recurso",
562
+ "admin.apiKeys.read": "Leitura",
563
+ "admin.apiKeys.write": "Escrita",
564
+ "admin.apiKeys.allResources": "Todos os recursos",
565
+ "admin.audit.apiKey": "Chave de API «{name}»",
566
+ "activity.title": "Atividade",
567
+ "activity.loadEarlier": "Mostrar atividade anterior",
568
+ "activity.empty": "Ainda não há atividade",
569
+ "activity.emptyHint": "Comentários e menções sobre este registro aparecem aqui.",
570
+ "activity.created": "{actor} criou este registro",
571
+ "activity.updated": "{actor} fez alterações",
572
+ "activity.deleted": "{actor} excluiu este registro",
573
+ "activity.restored": "{actor} restaurou este registro",
574
+ "activity.transition": "{actor} executou “{transition}”",
575
+ "activity.transitionTo": "{actor} executou “{transition}”: {from} → {to}",
576
+ "activity.action": "{actor} executou {action}",
577
+ "activity.changed": "{field}: {from} → {to}",
578
+ "activity.set": "{field} definido como {to}",
579
+ "activity.cleared": "{field} limpo (era {from})",
580
+ "activity.changedHidden": "{field} alterado",
581
+ "activity.someone": "Alguém",
582
+ "activity.unknownRecord": "indisponível",
583
+ "activity.edited": "editado",
584
+ "activity.commentLabel": "Adicionar um comentário",
585
+ "activity.placeholder": "Escreva um comentário… Digite @ para mencionar alguém",
586
+ "activity.send": "Comentar",
587
+ "activity.sendHint": "Ctrl/⌘ + Enter para enviar",
588
+ "activity.editComment": "Editar comentário",
589
+ "activity.deleteComment": "Excluir comentário",
590
+ "activity.deleteTitle": "Excluir este comentário?",
591
+ "activity.commentPosted": "Comentário publicado",
592
+ "activity.commentUpdated": "Comentário atualizado",
593
+ "activity.commentDeleted": "Comentário excluído",
594
+ "activity.mentionSuggestions": "Pessoas para mencionar",
595
+ "activity.noMatches": "Ninguém encontrado",
596
+ "dashboard.trend.vs.week": "face à semana anterior",
597
+ "dashboard.trend.vs.month": "face ao mês anterior",
598
+ "dashboard.trend.vs.quarter": "face ao trimestre anterior",
599
+ "dashboard.trend.vs.year": "face ao ano anterior",
600
+ "dashboard.trend.up": "Subida de {change}",
601
+ "dashboard.trend.down": "Descida de {change}",
602
+ "dashboard.trend.flat": "Sem alteração",
603
+ "dashboard.trend.better": "uma melhoria",
604
+ "dashboard.trend.worse": "um retrocesso",
605
+ "dashboard.trend.values": "{current} neste período, {previous} no anterior.",
606
+ "dashboard.trend.noData": "Dados insuficientes para comparar",
607
+ "landingPage.skipToContent": "Saltar para o conteúdo",
608
+ "landingPage.navigation": "Navegação principal",
609
+ "landingPage.footerNavigation": "Rodapé",
610
+ "landingPage.signIn": "Iniciar sessão",
611
+ "landingPage.getStarted": "Começar",
612
+ "landingPage.createAccount": "Criar uma conta",
613
+ "landingPage.subheadline": "O {app} mantém o seu trabalho organizado, partilhado e atualizado.",
614
+ "landingPage.entityFeature": "Crie, encontre e organize os seus {items} num só lugar.",
615
+ "landingPage.featuresTitle": "O que pode fazer com o {app}",
616
+ "landingPage.featuresSubtitle": "Início de sessão seguro, permissões, pesquisa e um painel em tempo real, prontos desde o primeiro dia.",
617
+ "landingPage.ctaTitle": "Pronto para começar?",
618
+ "landingPage.ctaText": "Crie a sua conta {app} em menos de um minuto.",
619
+ "landingPage.ctaSignIn": "Inicie sessão para continuar no {app}.",
620
+ "landingPage.builtin.dashboard.title": "Painel em tempo real",
621
+ "landingPage.builtin.dashboard.description": "Os números-chave e as suas tendências, calculados dentro das permissões de cada pessoa.",
622
+ "landingPage.builtin.access.title": "Funções e permissões",
623
+ "landingPage.builtin.access.description": "Decida quem vê e altera o quê, até ao nível de cada campo.",
624
+ "landingPage.builtin.security.title": "Início de sessão seguro",
625
+ "landingPage.builtin.security.description": "Contas, sessões, redefinição de palavras-passe e organizações, sem que tenha de se preocupar com nada.",
626
+ };
627
+ //# sourceMappingURL=pt.js.map