rustploy 0.1.39

Rustploy PaaS daemon — lightweight self-hosted deployment platform
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
// locales/en.js — catálogo em inglês, por texto de origem (ver i18n.js).
// Chave = o texto como está escrito no HTML/JS; `{{n}}` = o n-ésimo `${{}}` de um template. Sem entrada, o texto aparece como foi escrito.
export default {
  "Carregar anteriores": "Load earlier",
  "— outro container: ": "— other container: ",
  "BAIXAR A INFRA": "DOWNLOAD THE INFRA",
  "Baixar infra": "Download infra",
  "Baixa um .zip com os mesmos arquivos que a sincronização grava no repositório (settings.yml, providers.yml e projects/<id>/project.yml), com os secrets cifrados. Serve de cópia fora do GitHub. Para restaurar, ponha a árvore num repositório e sincronize.": "Downloads a .zip with the same files the sync writes to the repository (settings.yml, providers.yml and projects/<id>/project.yml), with secrets encrypted. It is a copy outside GitHub. To restore, put the tree in a repository and sync.",
  "baixando…": "downloading…",
  "Infra baixada": "Infra downloaded",
  " Essa ação não pode ser desfeita.": " This action cannot be undone.",
  " NÃO EXISTE AQUI": " DOES NOT EXIST HERE",
  " Os jobs de Schedules que dependem dele também serão removidos, com histórico: {0}.": " The Schedules jobs that depend on it will also be removed, with their history: {0}.",
  " imagem(ns)": " image(s)",
  " linhas · ao vivo": " lines · live",
  " para ": " to ",
  " serviço(s) · ": " service(s) · ",
  " variável(eis)": " variable(s)",
  " · porta ": " · port ",
  " — CONFIGURAR": " — CONFIGURE",
  " — alguns recursos falharam, ver logs do daemon": " — some resources failed, see the daemon logs",
  " — você está em ": " — you are on ",
  "(job removido: {0})": "(job removed: {0})",
  "(opcional)": "(optional)",
  "(padrão da imagem)": "(image default)",
  "(pendente — autorize no navegador)": "(pending — authorize in the browser)",
  "(vazio = uma senha forte é gerada e guardada cifrada)": "(empty = a strong password is generated and stored encrypted)",
  ") — todas vão": ") — all of them go",
  "+ Novo job": "+ New job",
  "+ Novo projeto": "+ New project",
  "+ Novo serviço": "+ New service",
  "+ Novo token": "+ New token",
  ", confere a assinatura e a instala. ": ", checks the signature and installs it. ",
  "-a (limpar tudo, não só anônimos)": "-a (clean everything, not just anonymous)",
  "-a (limpar tudo, não só dangling)": "-a (clean everything, not just dangling)",
  ". Usado para clonar repositório Git privado via HTTPS; não tem efeito com URL SSH.": ". Used to clone a private Git repository over HTTPS; it has no effect with an SSH URL.",
  "0 não filtra por idade. O runtime olha a data de criação da imagem, não a do último uso: as imagens base antigas continuam elegíveis.": "0 does not filter by age. The runtime looks at the image's creation date, not the last use: old base images remain eligible.",
  "0 remove todo o cache sem uso. Com um prazo, o cache de um job ou deploy recente sobrevive e o próximo build não recomeça do zero.": "0 removes all unused cache. With a deadline, the cache of a recent job or deploy survives and the next build does not start from scratch.",
  "<URL pública do daemon indisponível>/oauth/{0}/callback": "<daemon public URL unavailable>/oauth/{0}/callback",
  "A CADA (HORAS)": "EVERY (HOURS)",
  "A app volta ao banco antigo. O que foi escrito no banco novo depois da migração se perde. Reverter?": "The app goes back to the old database. What was written to the new database after the migration is lost. Roll back?",
  "A atualização falhou: ": "The update failed: ",
  "A atualização foi revertida: ": "The update was rolled back: ",
  "A cada N horas": "Every N hours",
  "A partir de um preset": "From a preset",
  "A stack e os volumes do Docker não mudam com o nome: os dados continuam os mesmos.": "The Docker stack and volumes do not change with the name: the data stays the same.",
  "ADICIONAR À FILA": "ADD TO THE QUEUE",
  "ANDAMENTO —": "PROGRESS —",
  "AQUECIMENTO": "WARM-UP",
  "ARQUIVO DO PACOTE (.yml)": "PACKAGE FILE (.yml)",
  "ATENÇÃO": "WARNING",
  "ATIVOS": "ACTIVE",
  "ATUALIZADA": "UPDATED",
  "ATUALIZAR PELO APP": "UPDATE FROM THE APP",
  "Abortar deploy": "Abort deploy",
  "Abrir autorização no navegador": "Open authorization in the browser",
  "Abrir em janela ⧉": "Open in a window ⧉",
  "Abrir projeto ›": "Open project ›",
  "Abrir serviço ›": "Open service ›",
  "Abrir ›": "Open ›",
  "Adicionar": "Add",
  "Adicionar à fila": "Add to the queue",
  "Aguardando linhas de log…": "Waiting for log lines…",
  "Analisando…": "Analyzing…",
  "Analisar": "Analyze",
  "Aquecer": "Warm",
  "Aquecer os builds depois da limpeza": "Warm the builds after cleanup",
  "Aquecer: constrói a imagem para o próximo deploy achar o cache, sem mexer no container no ar": "Warm: builds the image so the next deploy finds the cache, without touching the running container",
  "Arraste para reordenar": "Drag to reorder",
  "Ativar limpeza automática": "Enable automatic cleanup",
  "Atualizado": "Updated",
  "Atualizando… ": "Updating… ",
  "Atualizar": "Refresh",
  "Atualizar agora interrompe o deploy que está rodando ou na fila. Atualizar mesmo assim?": "Updating now interrupts the deploy that is running or queued. Update anyway?",
  "Atualizar daemon": "Update daemon",
  "Atualizar lista": "Refresh list",
  "Atualização iniciada": "Update started",
  "Atualizações": "Updates",
  "AÇÃO": "ACTION",
  "AÇÕES": "ACTIONS",
  "Ações do job": "Job actions",
  "BUILD STAGE (opcional)": "BUILD STAGE (optional)",
  "BUSCAR": "SEARCH",
  "Baixar .yml": "Download .yml",
  "Banco antigo descartado": "Old database discarded",
  "Banco de dados gerenciado": "Managed database",
  "Basic auth (docker login) — o segredo só aparece uma vez, na criação.": "Basic auth (docker login) — the secret is shown only once, at creation.",
  "CAMINHO DO COMPOSE NO REPO": "COMPOSE PATH IN THE REPO",
  "COMO ATUALIZAR À MÃO": "HOW TO UPDATE BY HAND",
  "CONECTAR CONTA GIT": "CONNECT GIT ACCOUNT",
  "CONECTAR UM AGENTE DE IA — CLAUDE CODE": "CONNECT AN AI AGENT — CLAUDE CODE",
  "CONTA CONECTADA": "CONNECTED ACCOUNT",
  "CONTA GIT": "GIT ACCOUNT",
  "CONTAS CONECTADAS (": "CONNECTED ACCOUNTS (",
  "CRIADA": "CREATED",
  "CRIADO": "CREATED",
  "Cache de build": "Build cache",
  "Cada botão copia o registro do MCP deste servidor para o agente correspondente, já com o token. Claude Code e Gemini: cole num terminal; Codex: acrescente o bloco ao ~/.codex/config.toml. Abra uma sessão nova do agente e confira com /mcp. Contém o token: não cole em lugar público.": "Each button copies this server's MCP entry for the matching agent, already with the token. Claude Code and Gemini: paste into a terminal; Codex: add the block to ~/.codex/config.toml. Open a new agent session and check with /mcp. It contains the token: do not paste it anywhere public.",
  "Cada database tem usuário próprio, sem acesso aos demais. O projeto consumidor recebe a connection string numa env var.": "Each database has its own user, with no access to the others. The consumer project receives the connection string in an env var.",
  "Cancelar": "Cancel",
  "Certificados TLS emitidos automaticamente. Requer restart do daemon.": "TLS certificates issued automatically. Requires a daemon restart.",
  "Client ID e Client Secret são obrigatórios": "Client ID and Client Secret are required",
  "Cole/edite no formato KEY=VALUE (# comentário).": "Paste/edit in the KEY=VALUE format (# comment).",
  "Compartilhado": "Shared",
  "Compartilhar": "Share",
  "Concluir": "Done",
  "Conectando…": "Connecting…",
  "Conectar conta": "Connect account",
  "Conecte contas em Settings → Git.": "Connect accounts in Settings → Git.",
  "Constrói a imagem para o próximo deploy achar o cache, sem mexer no container no ar": "Builds the image so the next deploy finds the cache, without touching the running container",
  "Container ao vivo": "Live container",
  "Containers parados": "Stopped containers",
  "Containers, imagens, volumes e networks do host.": "Containers, images, volumes and networks of the host.",
  "Copiar": "Copy",
  "Copiar URL": "Copy URL",
  "Copiar id": "Copy id",
  "Copiar nome": "Copy name",
  "Copiar texto": "Copy text",
  "Criando…": "Creating…",
  "Criar": "Create",
  "Criar Application": "Create Application",
  "Criar Compose Stack": "Create Compose Stack",
  "Criar database": "Create database",
  "Criar job": "Create job",
  "Criar projeto": "Create project",
  "Criar serviço": "Create service",
  "Criar token": "Create token",
  "Crie antes o database de destino no servidor compartilhado (aba Databases de lá, marcando \"Não mexer em env var\"). Mesmo motor e mesmo projeto. A migração é com parada: os serviços que usam este banco ficam fora do ar durante a cópia.": "First create the destination database on the shared server (its Databases tab, ticking \"Do not touch env vars\"). Same engine and same project. The migration involves downtime: the services that use this database are offline during the copy.",
  "DATABASE DE ORIGEM (dentro deste banco)": "SOURCE DATABASE (inside this database server)",
  "DESCRIÇÃO (opcional)": "DESCRIPTION (optional)",
  "DESTINO": "DESTINATION",
  "DIA DA SEMANA": "DAY OF THE WEEK",
  "DOMÍNIO": "DOMAIN",
  "DOMÍNIO (opcional)": "DOMAIN (optional)",
  "DOMÍNIO DO REGISTRY (EXPOSIÇÃO PÚBLICA)": "REGISTRY DOMAIN (PUBLIC EXPOSURE)",
  "DONO": "OWNER",
  "DURAÇÃO": "DURATION",
  "Daemon atualizado": "Daemon updated",
  "Daemon web server, HTTPS e contas Git.": "Daemon web server, HTTPS and Git accounts.",
  "Database criado": "Database created",
  "Deixe vazio para github.com. Só preencha para GitHub Enterprise Server.": "Leave empty for github.com. Only fill in for GitHub Enterprise Server.",
  "Depois de limpar, reconstrói a imagem de cada serviço com repositório Git ou zip, um de cada vez, na fila de deploy. Sem isso, o primeiro deploy depois da limpeza paga o build inteiro.": "After cleaning, rebuilds the image of each service with a Git repository or zip, one at a time, in the deploy queue. Without it, the first deploy after the cleanup pays for the whole build.",
  "Derivada de [api] domain/port no daemon — é a base das URLs de webhook dos serviços e do callback OAuth (mesma porta da API). Para mudá-la, configure api.domain e reinicie o daemon.": "Derived from [api] domain/port in the daemon — it is the base of the services' webhook URLs and of the OAuth callback (same port as the API). To change it, set api.domain and restart the daemon.",
  "Descartar banco antigo": "Discard the old database",
  "Desligar": "Turn off",
  "Detalhes": "Details",
  "Diário": "Daily",
  "Dom": "Sun",
  "E-MAIL LET'S ENCRYPT (HTTPS AUTOMÁTICO)": "LET'S ENCRYPT EMAIL (AUTOMATIC HTTPS)",
  "EDITAR JOB": "EDIT JOB",
  "EDITAR PROJETO": "EDIT PROJECT",
  "EM USO": "IN USE",
  "ENV VAR A TROCAR": "ENV VAR TO REPLACE",
  "ESCOLHA O BANCO DE DADOS": "CHOOSE THE DATABASE",
  "ESCOLHA O BROKER": "CHOOSE THE BROKER",
  "ESCOLHA O TIPO DE SERVIÇO": "CHOOSE THE SERVICE TYPE",
  "ESCOPO": "SCOPE",
  "ESTADO": "STATE",
  "EXECUTANDO AGORA (": "RUNNING NOW (",
  "EXPORTAR": "EXPORT",
  "EXPORTAR ·": "EXPORT ·",
  "Editar projeto": "Edit project",
  "Ele reinicia (os containers dos serviços continuam rodando) e esta tela fica sem resposta por ": "It restarts (the services' containers keep running) and this screen goes unresponsive for ",
  "Em execução": "Running",
  "Enviar zip": "Upload zip",
  "Escolha o database de destino e informe o de origem": "Choose the destination database and enter the source one",
  "Escolha o tipo e configure o serviço antes de criar.": "Choose the type and configure the service before creating it.",
  "Escolher ›": "Choose ›",
  "Este serviço não tem variáveis próprias.": "This service has no variables of its own.",
  "Executando (": "Running (",
  "Executando…": "Running…",
  "Executar GC": "Run GC",
  "Executar agora": "Run now",
  "Exportar": "Export",
  "Exportar serviço": "Export service",
  "Exportar serviço (arquivo para recriá-lo em outro servidor)": "Export service (a file to recreate it on another server)",
  "Expõe o registry Docker embutido via ingress + certificado automático. Requer [registry] enabled = true na config. Vazio = só acessível em 127.0.0.1.": "Exposes the built-in Docker registry via ingress + automatic certificate. Requires [registry] enabled = true in the config. Empty = reachable only at 127.0.0.1.",
  "FALHAS 24H": "FAILURES 24H",
  "FASE": "PHASE",
  "FILA DE PRÉ-DEPLOY (": "PRE-DEPLOY QUEUE (",
  "FONTE DO COMPOSE": "COMPOSE SOURCE",
  "FREQUÊNCIA": "FREQUENCY",
  "Fazer deploy logo depois de criar": "Deploy right after creating",
  "Fechar": "Close",
  "Fechar (Esc)": "Close (Esc)",
  "Fechar janela": "Close window",
  "Fila": "Queue",
  "Fila (": "Queue (",
  "Fila pausada — deploys esperam até você retomar.": "Queue paused — deploys wait until you resume.",
  "GC concluído": "GC finished",
  "GC: {0} arquivo(s) removido(s) · {1} liberados": "GC: {0} file(s) removed · {1} freed",
  "Gera um arquivo para recriar este serviço em outro servidor": "Generates a file to recreate this service on another server",
  "Gera um arquivo para recriar este serviço em outro servidor: abra um projeto de lá, Novo serviço → Importar. Só a configuração vai; os dados (volumes, bancos) não.": "Generates a file to recreate this service on another server: open a project there, New service → Import. Only the configuration goes; the data (volumes, databases) does not.",
  "Guarde este comando agora — o segredo não é mostrado de novo.": "Save this command now — the secret is not shown again.",
  "HISTÓRICO 24H (": "HISTORY 24H (",
  "HORÁRIO": "TIME",
  "Herdadas por todos os serviços deste projeto no deploy.": "Inherited by all services of this project on deploy.",
  "Histórico 24h (": "History 24h (",
  "Há uma versão nova do daemon": "There is a new daemon version",
  "Há uma versão nova. Por enquanto a atualização é manual: rode o comando abaixo na VPS. Seus dados, o config.toml e o age.key são preservados, e os containers dos serviços continuam rodando.": "There is a new version. For now the update is manual: run the command below on the VPS. Your data, config.toml and age.key are preserved, and the services' containers keep running.",
  "Há uma versão nova: ": "There is a new version: ",
  "IMAGEM": "IMAGE",
  "IMAGENS": "IMAGES",
  "INÍCIO": "START",
  "Imagens sem uso": "Unused images",
  "Importar": "Import",
  "Incluir os valores das variáveis": "Include the variable values",
  "Informe o nome do serviço": "Enter the service name",
  "Informe o nome e o projeto consumidor": "Enter the name and the consumer project",
  "Informe o valor para criá-los, ou deixe vazio para seguir sem (o serviço fica com a referência quebrada até você criar o secret).": "Enter the value to create them, or leave it empty to go on without (the service keeps a broken reference until you create the secret).",
  "Instalando": "Installing",
  "Intervalo": "Interval",
  "Job sem serviço gatilho — só variáveis do projeto.": "Job with no trigger service — project variables only.",
  "Já existe um serviço com esse nome neste projeto — escolha outro.": "A service with that name already exists in this project — choose another.",
  "KEY=VALUE (# comentário)": "KEY=VALUE (# comment)",
  "LIMPEZA AUTOMÁTICA": "AUTOMATIC CLEANUP",
  "LOGS DO JOB": "JOB LOGS",
  "Limpar parados": "Clean stopped",
  "Limpar parados/falhos": "Clean stopped/failed",
  "Limpar sem uso": "Clean unused",
  "MANTER O CACHE USADO NAS ÚLTIMAS (HORAS)": "KEEP THE CACHE USED IN THE LAST (HOURS)",
  "MENSAGEM": "MESSAGE",
  "MIGRAR PARA BANCO COMPARTILHADO": "MIGRATE TO A SHARED DATABASE",
  "Manutenção": "Maintenance",
  "Maximizar / restaurar": "Maximize / restore",
  "Maximizar janela": "Maximize window",
  "Mensageria: Kafka, RabbitMQ, NATS": "Messaging: Kafka, RabbitMQ, NATS",
  "Meu Gitea": "My Gitea",
  "Migrar": "Migrate",
  "Migração concluída — o banco antigo foi mantido (parado) para rollback.": "Migration finished — the old database was kept (stopped) for rollback.",
  "Migração iniciada": "Migration started",
  "Mostrar": "Show",
  "Mostrar/ocultar o menu": "Show/hide the menu",
  "MÉTODO": "METHOD",
  "NA FILA (": "QUEUED (",
  "NOME": "NAME",
  "NOME DO SERVIÇO": "SERVICE NAME",
  "NOME DO SERVIÇO NOVO": "NEW SERVICE NAME",
  "NOVA": "NEW",
  "NOVA APPLICATION": "NEW APPLICATION",
  "NOVA COMPOSE STACK": "NEW COMPOSE STACK",
  "NOVO ": "NEW ",
  "NOVO DATABASE": "NEW DATABASE",
  "NOVO JOB": "NEW JOB",
  "NOVO PROJETO": "NEW PROJECT",
  "NOVO SERVIÇO": "NEW SERVICE",
  "NOVO TOKEN DE REGISTRY": "NEW REGISTRY TOKEN",
  "Na fila": "Queued",
  "Nada do projeto é sobrescrito sem você escolher.": "Nothing in the project is overwritten unless you choose to.",
  "Nenhum (autônomo)": "None (standalone)",
  "Nenhum check configurado — deploy segue direto.": "No check configured — the deploy goes straight through.",
  "Nenhum container em execução.": "No container running.",
  "Nenhum container.": "No containers.",
  "Nenhum deploy ainda.": "No deploy yet.",
  "Nenhum deploy concluído nas últimas 24h.": "No deploy finished in the last 24h.",
  "Nenhum deploy em andamento.": "No deploy in progress.",
  "Nenhum deploy na fila.": "No deploy in the queue.",
  "Nenhum deployment ainda.": "No deployment yet.",
  "Nenhum domínio configurado.": "No domain configured.",
  "Nenhum job cadastrado ainda.": "No jobs registered yet.",
  "Nenhum projeto ainda.": "No projects yet.",
  "Nenhum repositório ainda. Faça `docker push` para o registry embutido.": "No repository yet. Run `docker push` to the built-in registry.",
  "Nenhum repositório corresponde à busca.": "No repository matches the search.",
  "Nenhum secret neste projeto ainda.": "No secret in this project yet.",
  "Nenhum serviço com porta de host configurada.": "No service has a host port configured.",
  "Nenhum serviço em execução agora.": "No service running right now.",
  "Nenhum serviço neste projeto ainda.": "No service in this project yet.",
  "Nenhum template encontrado.": "No template found.",
  "Nenhum token ainda. Sem token nenhum push/pull é autenticado — crie um antes de usar o registry.": "No token yet. Without a token no push/pull is authenticated — create one before using the registry.",
  "Nenhum volume.": "No volumes.",
  "Nenhuma": "None",
  "Nenhuma conta Git conectada ainda.": "No Git account connected yet.",
  "Nenhuma imagem.": "No images.",
  "Nenhuma métrica ainda — aguardando o primeiro container em execução.": "No metrics yet — waiting for the first running container.",
  "Nenhuma network.": "No networks.",
  "Nenhuma variável.": "No variables.",
  "No GitHub: Settings → Developer settings → OAuth Apps → New OAuth App e cole a Redirect URI acima em \"Authorization callback URL\".": "On GitHub: Settings → Developer settings → OAuth Apps → New OAuth App and paste the Redirect URI above into \"Authorization callback URL\".",
  "No GitHub: Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token.": "On GitHub: Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token.",
  "Repository access: marque os repositórios que vai usar (ou \"All repositories\" para incluir os futuros).": "Repository access: select the repositories you will use (or \"All repositories\" to include future ones).",
  "Permissões obrigatórias: Metadata → Read-only e Contents → Read-only (listar branches e clonar repositórios privados).": "Required permissions: Metadata → Read-only and Contents → Read-only (list branches and clone private repositories).",
  "Recomendadas para recursos futuros: Webhooks → Read and write e Commit statuses → Read and write.": "Recommended for future features: Webhooks → Read and write and Commit statuses → Read and write.",
  "Contents → Read and write só é necessário se este token for usado na sincronização do estado de infra com o git (o push); para deploy, deixe Read-only. Não dê Administration, Secrets nem Workflows.": "Contents → Read and write is only needed if this token is used for syncing infra state to git (the push); for deploys, keep it Read-only. Do not grant Administration, Secrets or Workflows.",
  "Alternativa: token classic com escopo \"repo\" (dá acesso a todos os seus repositórios).": "Alternative: a classic token with the \"repo\" scope (grants access to all your repositories).",
  "No Gitea: Settings → Applications → Generate New Token (escopo: repo).": "On Gitea: Settings → Applications → Generate New Token (scope: repo).",
  "No Gitea: Settings → Applications → crie um OAuth2 app e cole a Redirect URI acima.": "On Gitea: Settings → Applications → create an OAuth2 app and paste the Redirect URI above.",
  "Nome de um secret do projeto (aba Secrets), puro — sem": "Name of a project secret (Secrets tab), plain — without",
  "Nome do serviço": "Service name",
  "Nome inválido: \"{0}\" — use letras, dígitos e _, sem começar por dígito": "Invalid name: \"{0}\" — use letters, digits and _, not starting with a digit",
  "Notas da release": "Release notes",
  "Não mexer em env var (vou migrar os dados antes)": "Do not touch env vars (I will migrate the data first)",
  "Não removível: tem serviços": "Cannot be removed: it has services",
  "Não trazer os domínios": "Do not bring the domains",
  "O QUE LIMPAR": "WHAT TO CLEAN",
  "O arquivo vai conter segredos em texto. Trate-o como uma senha. (Secrets do rustploy, “secret:NOME”, nunca são decifrados: só a referência vai.)": "The file will contain secrets in plain text. Treat it like a password. (rustploy Secrets, “secret:NAME”, are never decrypted: only the reference goes.)",
  "O daemon baixa a versão ": "The daemon downloads version ",
  "O daemon baixa a versão nova, confere a assinatura e a instala por um helper root do próprio pacote. O daemon reinicia (os containers dos serviços continuam rodando) e esta tela fica sem resposta por alguns segundos. Antes, o daemon guarda um snapshot do banco.": "The daemon downloads the new version, checks the signature and installs it through a root helper from the package itself. The daemon restarts (the services' containers keep running) and this screen goes unresponsive for a few seconds. Before that, the daemon keeps a database snapshot.",
  "O daemon não voltou a responder em 5 minutos; confira o servidor.": "The daemon did not respond again within 5 minutes; check the server.",
  "O hostname interno (rp_<nome>) só passa a valer no próximo deploy. ": "The internal hostname (rp_<name>) only applies on the next deploy. ",
  "O projeto não tem variáveis.": "The project has no variables.",
  "O serviço do banco antigo é removido, com os dados dele. Sem volta. Descartar?": "The old database's service is removed, along with its data. No way back. Discard?",
  "O serviço será criado no projeto aberto, sem deploy — revise e clique em Deploy depois. Só a configuração vem no arquivo; os dados (volumes, bancos) não.": "The service will be created in the open project, without a deploy — review it and click Deploy afterwards. Only the configuration comes in the file; the data (volumes, databases) does not.",
  "O serviço será parado e removido.": "The service will be stopped and removed.",
  "O token nasce no primeiro deploy deste serviço — rode um deploy para a URL aparecer.": "The token is born on this service's first deploy — run a deploy for the URL to appear.",
  "O zip deve conter um Dockerfile na raiz. Depois do envio, o deploy normal usa os arquivos descompactados pelo daemon.": "The zip must contain a Dockerfile at the root. After the upload, the normal deploy uses the files the daemon unpacked.",
  "ORIGEM": "SOURCE",
  "Obter": "Fetch",
  "Ocultar": "Hide",
  "Origem": "Source",
  "Os serviços do projeto que usam este banco serão parados durante o dump/restore e subirão de novo no banco novo. O banco antigo é mantido (parado) para rollback. Iniciar?": "The project's services that use this database will be stopped during the dump/restore and come back up on the new database. The old database is kept (stopped) for rollback. Start?",
  "Outros serviços que usam o nome antigo em variáveis de ambiente precisam ser atualizados.": "Other services that use the old name in environment variables need to be updated.",
  "PORTA": "PORT",
  "PORTA CONTAINER": "CONTAINER PORT",
  "PORTA HOST": "HOST PORT",
  "PORTAS DE HOST": "HOST PORTS",
  "PORTAS TCP DE HOST (": "HOST TCP PORTS (",
  "PROJETO": "PROJECT",
  "PROJETO / GATILHO": "PROJECT / TRIGGER",
  "PROJETO / SERVIÇO": "PROJECT / SERVICE",
  "PRÉ-DEPLOY CHECK": "PRE-DEPLOY CHECK",
  "PRÉ-DEPLOY CHECKS": "PRE-DEPLOY CHECKS",
  "PRÓXIMA EXECUÇÃO": "NEXT RUN",
  "Pacote:": "Package:",
  "Para que serve este projeto": "What this project is for",
  "Para todos os containers gerenciados": "For all managed containers",
  "Para um valor sensível, use um secret do projeto: escreva": "For a sensitive value, use a project secret: write",
  "Parar": "Stop",
  "Parar serviço": "Stop service",
  "Parar serviço? O tráfego para ele será interrompido até um novo deploy.": "Stop service? Traffic to it will be interrupted until a new deploy.",
  "Parar todos os serviços? Todos os serviços em execução serão parados agora.": "Stop all services? All running services will be stopped now.",
  "Pausar fila": "Pause queue",
  "Pipeline de deploy: em andamento e histórico recente.": "Deploy pipeline: in progress and recent history.",
  "Porta": "Port",
  "Preencha os valores obrigatórios acima para criar.": "Fill in the required values above to create.",
  "Projetos do cluster e a contagem de serviços de cada um.": "Projects of the cluster and the service count of each.",
  "Projetos e serviços rodando agora — projetos sem serviço no ar não aparecem.": "Projects and services running right now — projects with no service up do not appear.",
  "Próxima execução agendada:": "Next scheduled run:",
  "Qua": "Wed",
  "Qui": "Thu",
  "RECORRÊNCIA": "RECURRENCE",
  "REDIRECT URI (cole no app OAuth do provedor)": "REDIRECT URI (paste into the provider's OAuth app)",
  "REPOSITÓRIO": "REPOSITORY",
  "Reconstruir este job do zero (sem cache, com as imagens base rebaixadas)? Pode levar vários minutos e ocupa a fila de jobs enquanto roda.": "Rebuild this job from scratch (no cache, with the base images re-pulled)? It may take several minutes and occupies the job queue while it runs.",
  "Recriar um serviço exportado de outro servidor": "Recreate a service exported from another server",
  "Redes sem uso": "Unused networks",
  "Refaz o build do zero e rebaixa as imagens base": "Redoes the build from scratch and re-pulls the base images",
  "Regenerar": "Regenerate",
  "Regenerar o token do webhook? A URL anterior deixa de funcionar na hora.": "Regenerate the webhook token? The previous URL stops working right away.",
  "Remova os databases deste servidor antes de deixar de compartilhar": "Remove this server's databases before you stop sharing",
  "Remove do histórico {0} deployment(s) em estado Stopped ou Failed, e seus build logs. Ação irreversível.": "Removes from the history {0} deployment(s) in the Stopped or Failed state, and their build logs. Irreversible.",
  "Remover": "Remove",
  "Remover este job? Ação irreversível.": "Remove this job? Irreversible.",
  "Remover este projeto? Só funciona se não houver serviços nele.": "Remove this project? It only works if it has no services.",
  "Remover este serviço? Para o container e apaga o histórico. Ação irreversível.": "Remove this service? It stops the container and erases the history. Irreversible.",
  "Remover o database e o usuário do servidor, com todos os dados? Irreversível.": "Remove the database and the user from the server, with all the data? Irreversible.",
  "Remover o secret \"{0}\"? Serviços que o referenciam vão falhar no próximo deploy.": "Remove the secret \"{0}\"? Services that reference it will fail on the next deploy.",
  "Remover projeto": "Remove project",
  "Remover serviço": "Remove service",
  "Renomear": "Rename",
  "Restaura os binários do backup da última atualização e reinicia o daemon. O banco não é ": "Restores the binaries from the last update's backup and restarts the daemon. The database is not ",
  "Retomar fila": "Resume queue",
  "Reversão iniciada": "Rollback started",
  "Revertendo… o daemon vai reiniciar.": "Rolling back… the daemon will restart.",
  "Reverter": "Roll back",
  "Reverter para a versão anterior": "Roll back to the previous version",
  "Reverter para o deploy anterior?": "Roll back to the previous deploy?",
  "Revogar": "Revoke",
  "Roda a limpeza dos recursos marcados imediatamente, fora do horário agendado. Ação irreversível.": "Runs the cleanup of the ticked resources right away, outside the scheduled time. Irreversible.",
  "Roda esses Jobs em ORDEM antes do deploy (manual ou webhook), um de cada vez. Se o exit code de algum for diferente de 0, a fila para e o deploy não acontece — os checks seguintes não rodam. Cadastre jobs em Schedules.": "Runs these Jobs IN ORDER before the deploy (manual or webhook), one at a time. If any exit code is different from 0, the queue stops and the deploy does not happen — the following checks do not run. Register jobs in Schedules.",
  "Roda sozinha, no horário abaixo, os recursos marcados nesta tela. Desligada por padrão — nada é removido até você marcar pelo menos um recurso e ativar.": "Runs by itself, at the time below, the resources ticked on this screen. Off by default — nothing is removed until you tick at least one resource and turn it on.",
  "Run args atuais:": "Current run args:",
  "Réplicas": "Replicas",
  "SECRETS QUE ESTE PROJETO NÃO TEM": "SECRETS THIS PROJECT DOES NOT HAVE",
  "SELEÇÃO ATUAL": "CURRENT SELECTION",
  "SEM USO": "UNUSED",
  "SERVIÇO": "SERVICE",
  "SERVIÇOS NO AR": "SERVICES UP",
  "SUCESSO 24H": "SUCCESS 24H",
  "Salvando…": "Saving…",
  "Salvar": "Save",
  "Salvar compose": "Save compose",
  "Salvar secret": "Save secret",
  "Seg": "Mon",
  "Selecionar ›": "Select ›",
  "Selecione a conta conectada, o repositório e a branch a implantar.": "Select the connected account, the repository and the branch to deploy.",
  "Selecione a conta conectada, o repositório e a branch. O repo precisa já ter um docker-compose.yml no caminho informado.": "Select the connected account, the repository and the branch. The repo must already have a docker-compose.yml at the given path.",
  "Sem histórico de transições.": "No transition history.",
  "Sem valores: o arquivo leva só os nomes, e quem importar preenche os valores.": "No values: the file carries only the names, and whoever imports fills in the values.",
  "Semanal": "Weekly",
  "Serviços": "Services",
  "Sex": "Fri",
  "Sobrescrevem as do projeto/serviço gatilho por cima. Formato KEY=VALUE, uma por linha (# comentário).": "They override the project's/trigger service's on top. KEY=VALUE format, one per line (# comment).",
  "Sobrescrever a env var se o projeto já a tiver": "Overwrite the env var if the project already has it",
  "Sobrescrever {0} no projeto? Os outros serviços do projeto também passam a ver o valor novo.": "Overwrite {0} in the project? The project's other services will also see the new value.",
  "Somente em uso": "In use only",
  "Stack Docker Compose": "Docker Compose stack",
  "Sugeridas": "Suggested",
  "SÓ IMAGENS CRIADAS HÁ MAIS DE (HORAS)": "ONLY IMAGES CREATED MORE THAN (HOURS) AGO",
  "Sáb": "Sat",
  "TAMANHO": "SIZE",
  "TOKEN DE CONEXÃO": "CONNECTION TOKEN",
  "TOKENS DE ACESSO (": "ACCESS TOKENS (",
  "Tarefas one-shot (docker-compose) agendadas ou manuais, de todos os projetos.": "One-shot tasks (docker-compose), scheduled or manual, from all projects.",
  "Ter": "Tue",
  "Tipo": "Type",
  "Toda semana": "Every week",
  "Todas": "All",
  "Todo dia": "Every day",
  "Trocar pacote": "Change package",
  "URL PÚBLICA DA API": "PUBLIC API URL",
  "URL de repositório vira Git; caso contrário é imagem de registry.": "A repository URL becomes Git; otherwise it is a registry image.",
  "URL do repositório obrigatória": "repository URL required",
  "USO": "USAGE",
  "Um POST nesta URL dispara um deploy. O corpo é ignorado: o token na própria URL é a autenticação. Regenerar invalida a URL anterior.": "A POST to this URL triggers a deploy. The body is ignored: the token in the URL itself is the authentication. Regenerating invalidates the previous URL.",
  "VARIÁVEIS DE AMBIENTE (opcional)": "ENVIRONMENT VARIABLES (optional)",
  "VARIÁVEIS DO PROJETO SEM VALOR (obrigatório)": "PROJECT VARIABLES WITH NO VALUE (required)",
  "VARIÁVEIS DO PROJETO TRAZIDAS": "PROJECT VARIABLES BROUGHT ALONG",
  "VARIÁVEIS DO PROJETO “": "PROJECT VARIABLES “",
  "VARIÁVEIS DO SERVIÇO (": "SERVICE VARIABLES (",
  "VARIÁVEIS DO SERVIÇO SEM VALOR (obrigatório)": "SERVICE VARIABLES WITH NO VALUE (required)",
  "VOLUMES — CUIDADO": "VOLUMES — CAREFUL",
  "Valores sensíveis (tokens, senhas, chaves de API) cifrados com a chave do servidor. Para ver um valor use o botão 👁 (o acesso fica registrado na auditoria); para trocá-lo, salve um novo com o mesmo nome. Para usar num serviço, escreva": "Sensitive values (tokens, passwords, API keys) encrypted with the server's key. To see a value use the 👁 button (the access is logged in the audit); to change it, save a new one with the same name. To use it in a service, write",
  "Variáveis (": "Variables (",
  "Ver build log": "View build log",
  "Ver tags": "View tags",
  "Verificado em": "Checked at",
  "Verificar atualizações": "Check for updates",
  "Versão anterior restaurada": "Previous version restored",
  "Versão instalada": "Installed version",
  "Você está na versão mais recente.": "You are on the latest version.",
  "Volumes sem uso": "Unused volumes",
  "Volumes sem uso criados por fora do rustploy (não pelos seus serviços, que só usam bind mount) podem conter dado que ninguém recriaria sozinho. Confirme que sabe o que existe no host antes de ativar.": "Unused volumes created outside rustploy (not by your services, which only use bind mounts) may hold data nobody would recreate by themselves. Confirm you know what exists on the host before turning it on.",
  "WATCH PATHS (separados por vírgula)": "WATCH PATHS (comma separated)",
  "WEBHOOK DE DEPLOY": "DEPLOY WEBHOOK",
  "Web app via Git ou imagem": "Web app via Git or image",
  "ZIP (Dockerfile na raiz)": "ZIP (Dockerfile at the root)",
  "a cada {0}h": "every {0}h",
  "advanced salvo": "advanced saved",
  "ainda não rodou": "has not run yet",
  "alguns segundos. Um snapshot do banco é guardado antes.": "a few seconds. A database snapshot is kept beforehand.",
  "aquecendo…": "warming…",
  "aquecido em": "warmed",
  "aquecimento iniciado": "warm-up started",
  "arquivo gerado: {0}": "file generated: {0}",
  "ativo em {0}": "active on {0}",
  "autorize a janela aberta e depois clique em Atualizar": "authorize in the open window and then click Refresh",
  "backup-diario": "daily-backup",
  "baixado como ": "downloaded as ",
  "base64 de host:porta::token — endereço do servidor + token numa string só. É o que se cola no login da GUI e da webui, e o que um agente de IA usa em POST /api/login. O daemon também o deixa no config.toml, em [api].connection_token. Vale tanto quanto o token: não compartilhe à toa.": "base64 of host:port::token — server address + token in a single string. It is what you paste into the GUI and webui login, and what an AI agent uses in POST /api/login. The daemon also leaves it in config.toml, under [api].connection_token. It is worth as much as the token: do not share it lightly.",
  "buscar templates…": "search templates…",
  "cache de build": "build cache",
  "cancelado": "cancelled",
  "cancelamento solicitado": "cancellation requested",
  "carregando branches…": "loading branches…",
  "carregando contas…": "loading accounts…",
  "carregando repositórios…": "loading repositories…",
  "carregando…": "loading…",
  "check adicionado à fila": "check added to the queue",
  "check removido da fila": "check removed from the queue",
  "cifrado": "encrypted",
  "cole o docker-compose.yml do job": "paste the job's docker-compose.yml",
  "cole o token de conexão": "paste the connection token",
  "como valor de uma variável de ambiente.": "as the value of an environment variable.",
  "compartilhamento desligado": "sharing turned off",
  "compose YAML obrigatório": "compose YAML required",
  "compose salvo": "compose saved",
  "conectado": "connected",
  "conectando…": "connecting…",
  "conexão encerrada": "connection closed",
  "configurações salvas": "settings saved",
  "conta {0} conectada": "account {0} connected",
  "criar no projeto": "create in the project",
  "database de destino...": "destination database...",
  "degradado": "degraded",
  "deploy cancelado": "deploy cancelled",
  "deploy concluído": "deploy finished",
  "deploy em andamento": "deploy in progress",
  "deploy falhou: {0}": "deploy failed: {0}",
  "deploy iniciado": "deploy started",
  "deploy movido para o topo da fila": "deploy moved to the top of the queue",
  "deploy · {0}": "deploy · {0}",
  "deploy: {0}": "deploy: {0}",
  "deployment removido": "deployment removed",
  "desconectado": "disconnected",
  "diariamente às {0}:{1}": "daily at {0}:{1}",
  "dom": "sun",
  "dominio.com": "domain.com",
  "domínio adicionado": "domain added",
  "domínio removido": "domain removed",
  "domínio: ": "domain: ",
  "em conflito": "in conflict",
  "env var (padrão DATABASE_URL / MONGODB_URI)": "env var (default DATABASE_URL / MONGODB_URI)",
  "enviando zip…": "uploading zip…",
  "erro ao listar branches": "error listing branches",
  "erro ao listar contas conectadas": "error listing connected accounts",
  "erro ao listar repositórios": "error listing repositories",
  "erro ao parar: ": "error stopping: ",
  "erro ao remover: ": "error removing: ",
  "escolha um arquivo ou cole o texto do pacote": "choose a file or paste the package text",
  "escolher job...": "choose job...",
  "este token é de ": "this token belongs to ",
  "executando…": "running…",
  "falha ao conectar": "failed to connect",
  "falha ao parar": "failed to stop",
  "falha de rede": "network failure",
  "falha na conexão": "connection failed",
  "falhou": "failed",
  "fica no diretório do banco.": "is in the database directory.",
  "fila pausada": "queue paused",
  "fila reordenada": "queue reordered",
  "fila retomada": "queue resumed",
  "filtrar…": "filter…",
  "frio": "cold",
  "frio:": "cold:",
  "github.com/user/repo ou nginx:latest": "github.com/user/repo or nginx:latest",
  "healthcheck salvo": "healthcheck saved",
  "https://gitea.exemplo.com": "https://gitea.example.com",
  "https://github.com/usuario/repo.git": "https://github.com/user/repo.git",
  "imagem": "image",
  "imagem obrigatória": "image required",
  "imagem:": "image:",
  "incluir todas as não usadas (não só as sem tag)": "include all unused (not just untagged)",
  "incluir todos os sem uso (não só os anônimos)": "include all unused (not just anonymous)",
  "informe a Base URL do Gitea": "enter the Gitea Base URL",
  "informe o Personal Access Token": "enter the Personal Access Token",
  "iniciando deploy…": "starting deploy…",
  "isso não é um token de conexão — cole o token de conexão inteiro (base64 de host:porta::token), não só o token da API": "that is not a connection token — paste the whole connection token (base64 of host:port::token), not just the API token",
  "job ativado": "job enabled",
  "job atualizado": "job updated",
  "job criado": "job created",
  "job desativado": "job disabled",
  "job disparado": "job triggered",
  "job já está aquecido": "job is already warm",
  "job não encontrado no snapshot atual": "job not found in the current snapshot",
  "job removido": "job removed",
  "já existe igual — nada a fazer": "already identical — nothing to do",
  "limite de conexões (opcional; não vale no Mongo)": "connection limit (optional; does not apply to Mongo)",
  "limpeza concluída": "cleanup finished",
  "linha {0}: falta o '=' ({1})": "line {0}: missing the '=' ({1})",
  "linha {0}: falta o nome antes do '='": "line {0}: missing the name before the '='",
  "linha {0}: nome inválido \"{1}\"": "line {0}: invalid name \"{1}\"",
  "linha {0}: {1} repetida (já definida na linha {2})": "line {0}: {1} repeated (already defined on line {2})",
  "manter a do projeto": "keep the project's",
  "marque pelo menos um recurso": "tick at least one resource",
  "meu-banco": "my-database",
  "meu-broker": "my-broker",
  "meu-projeto": "my-project",
  "meu-servico": "my-service",
  "meu-stack": "my-stack",
  "meuservico.dominio.com": "myservice.domain.com",
  "motor:": "engine:",
  "nada para limpar": "nothing to clean",
  "nenhum": "none",
  "nenhum (autônomo)": "none (standalone)",
  "nome (a-z, 0-9, _)": "name (a-z, 0-9, _)",
  "nome do banco obrigatório": "database name required",
  "nome do database": "database name",
  "nome e main service são obrigatórios": "name and main service are required",
  "nome obrigatório": "name required",
  "nunca rodou": "never ran",
  "não": "no",
  "não foi possível copiar": "could not copy",
  "não foi possível copiar o {0}": "could not copy {0}",
  "não foi possível resolver a URL do repositório — selecione de novo": "could not resolve the repository URL — select it again",
  "não trazer": "do not bring",
  "o navegador não deixou copiar; use \"Baixar .yml\"": "the browser would not let it copy; use \"Download .yml\"",
  "origem salva": "source saved",
  "ou secret:NOME como valor. O secret é criado na aba Secrets do projeto.": "or secret:NAME as the value. The secret is created in the project's Secrets tab.",
  "pacote copiado como texto": "package copied as text",
  "padrão DATABASE_URL / MONGODB_URI": "default DATABASE_URL / MONGODB_URI",
  "parando todos…": "stopping all…",
  "pedindo a atualização…": "requesting the update…",
  "porta (opcional)": "port (optional)",
  "projeto atualizado": "project updated",
  "projeto consumidor...": "consumer project...",
  "projeto criado": "project created",
  "projeto removido": "project removed",
  "pronto para conectar": "ready to connect",
  "provider criado; inicie o OAuth manualmente": "provider created; start the OAuth manually",
  "provider removido": "provider removed",
  "qua": "wed",
  "quente": "warm",
  "qui": "thu",
  "reconstrução iniciada": "rebuild started",
  "registry.meusite.com": "registry.mysite.com",
  "reiniciando o daemon…": "restarting the daemon…",
  "removendo {0} deployment(s)…": "removing {0} deployment(s)…",
  "removido": "removed",
  "removidos: {0} · {1} liberados": "removed: {0} · {1} freed",
  "repositório {0} removido": "repository {0} removed",
  "resposta inesperada": "unexpected response",
  "resposta inesperada do daemon": "unexpected response from the daemon",
  "resposta inválida do daemon": "invalid response from the daemon",
  "revertendo…": "rolling back…",
  "revertido: se a versão nova migrou o esquema, o snapshot guardado antes da atualização ": "rolled back: if the new version migrated the schema, the snapshot kept before the update ",
  "rodando": "running",
  "rodando…": "running…",
  "rollback iniciado": "rollback started",
  "s) sem resposta do daemon": "s) no response from the daemon",
  "salvando…": "saving…",
  "salvo": "saved",
  "secret {0} removido": "secret {0} removed",
  "secret {0} salvo": "secret {0} saved",
  "seg": "mon",
  "seguir sem provider": "go on without a provider",
  "selecione a branch": "select the branch",
  "selecione a conta": "select the account",
  "selecione o repositório": "select the repository",
  "selecione repositório e branch": "select repository and branch",
  "selecione um arquivo .zip": "select a .zip file",
  "sem webhook": "no webhook",
  "semanalmente {0} às {1}:{2}": "weekly {0} at {1}:{2}",
  "senha": "password",
  "senha obrigatória": "password required",
  "servidor compartilhado": "shared server",
  "serviço": "service",
  "serviço '{0}' criado": "service '{0}' created",
  "serviço criado": "service created",
  "serviço já está aquecido": "service is already warm",
  "serviço não encontrado": "service not found",
  "serviço parado": "service stopped",
  "serviço parado e removido": "service stopped and removed",
  "serviço recarregado": "service reloaded",
  "serviço removido": "service removed",
  "serviço renomeado": "service renamed",
  "serviços": "services",
  "sex": "fri",
  "sobrescrever a do projeto": "overwrite the project's",
  "stream interrompida": "stream interrupted",
  "sáb": "sat",
  "só neste serviço": "only in this service",
  "tag {0} removida": "tag {0} removed",
  "tempo esgotado (": "timed out (",
  "ter": "tue",
  "texto colado": "pasted text",
  "timeout de query em ms (opcional; só Postgres)": "query timeout in ms (optional; Postgres only)",
  "todos os serviços parados": "all services stopped",
  "token do webhook regenerado": "webhook token regenerated",
  "token {0} revogado": "token {0} revoked",
  "usuário": "user",
  "usuário obrigatório": "user required",
  "valor": "value",
  "valor (cifrado ao salvar)": "value (encrypted on save)",
  "valor do secret": "secret value",
  "variáveis salvas": "variables saved",
  "variável removida": "variable removed",
  "variável salva": "variable saved",
  "verificando…": "checking…",
  "voce@exemplo.com": "you@example.com",
  "zip enviado": "zip uploaded",
  "{0}\n… e mais {1}": "{0}\n… and {1} more",
  "{0} aquecido": "{0} warmed",
  "{0} copiado": "{0} copied",
  "{0} deployment(s) removido(s)": "{0} deployment(s) removed",
  "{0} já existe; o valor atual será substituído. Sobrescrever?": "{0} already exists; the current value will be replaced. Overwrite?",
  "{0} removido(s), {1} falharam": "{0} removed, {1} failed",
  "{0} repositório(s)": "{0} repository(ies)",
  "{0} · {1} liberados": "{0} · {1} freed",
  "{0} — não conectado": "{0} — not connected",
  "{0}: deploy concluído": "{0}: deploy finished",
  "{0}: erro": "{0}: error",
  "· citada pelo serviço": "· cited by the service",
  "ÚLTIMA EXECUÇÃO": "LAST RUN",
  "ÚLTIMO USO": "LAST USED",
  "Última versão": "Latest version",
  "‖ Pausar": "‖ Pause",
  "” — marque as que o app precisa": "” — tick the ones the app needs",
  "… o daemon vai reiniciar.": "… the daemon will restart.",
  "…OU COLE O TEXTO": "…OR PASTE THE TEXT",
  "‹ Projetos": "‹ Projects",
  "‹ Tipo": "‹ Type",
  "‹ Voltar": "‹ Back",
  "← Voltar": "← Back",
  "↑ topo": "↑ top",
  "↻ Reconstruir (sem cache)": "↻ Rebuild (no cache)",
  "≡ Ver logs": "≡ View logs",
  "■ Cancelar execução": "■ Cancel run",
  "▶ Ativar": "▶ Enable",
  "▶ Rodar agora": "▶ Run now",
  "◐ Aquecer": "◐ Warm",
  "✎ Editar": "✎ Edit",
  "✕ Remover": "✕ Remove",
  "Abrir": "Open",
  "O serviço sumiu do estado por um commit externo (git). Pare e remova este container.": "The service disappeared from the state through an external (git) commit. Stop and remove this container.",
  "Um commit do repositório mudou este serviço. O que está rodando só acompanha no próximo deploy.": "A commit in the repository changed this service. What is running only follows on the next deploy.",
  "mudança pendente de deploy": "change pending deploy",
  "Sincronização": "Sync",
  "SINCRONIZAÇÃO COM O GIT": "GIT SYNC",
  "Versiona o estado (projetos, serviços, jobs e secrets cifrados) num repositório privado do seu provedor Git. Desligada por padrão. Só liga se não houver nenhum valor em claro.": "Versions the state (projects, services, jobs and encrypted secrets) in a private repository on your Git provider. Off by default. It only turns on if there is no plaintext value.",
  "O programa git não está instalado neste servidor.": "The git program is not installed on this server.",
  "Sem recovery_recipient no config.toml: perder o config.toml deste servidor significa perder todos os secrets, inclusive os do repositório.": "No recovery_recipient in config.toml: losing this server's config.toml means losing every secret, including the ones in the repository.",
  "MODO": "MODE",
  "Desligado": "Off",
  "Só commit (local)": "Commit only (local)",
  "Sincronizar": "Sync",
  "Faz um commit local a cada mudança. Não usa a rede.": "Makes a local commit on every change. No network.",
  "Commita, envia ao repositório e busca o que foi mudado por fora (a cada 60 s, ou em \"Sincronizar agora\").": "Commits, pushes to the repository and fetches what was changed from outside (every 60 s, or on \"Sync now\").",
  "REPOSITÓRIO (https://…)": "REPOSITORY (https://…)",
  "CONTA GIT (credencial)": "GIT ACCOUNT (credential)",
  "Conecte contas na aba Git. Endereços SSH (git@…) não são aceitos.": "Connect accounts on the Git tab. SSH addresses (git@…) are not accepted.",
  "BRANCH": "BRANCH",
  "Salvar e aplicar": "Save and apply",
  "Sincronizar agora": "Sync now",
  "SITUAÇÃO": "STATUS",
  "Último commit": "Last commit",
  "Último envio": "Last push",
  "ok": "ok",
  "Última consulta ao repositório": "Last repository check",
  "À frente / atrás do repositório": "Ahead / behind the repository",
  "HISTÓRICO DIVERGIDO — SINCRONIZAÇÃO PAUSADA": "DIVERGED HISTORY — SYNC PAUSED",
  "O servidor não decide qual lado vence: escolher um descarta o outro (com cópia de segurança numa branch). Enquanto isso, nada é enviado, buscado nem commitado; suas edições aqui continuam valendo.": "The server does not decide which side wins: choosing one discards the other (with a backup in a branch). Meanwhile nothing is pushed, fetched or committed; your edits here keep working.",
  "Usar o do repositório": "Use the repository's",
  "Usar o do servidor": "Use the server's",
  "Para juntar os dois lados, resolva por SSH (veja a página \"Sincronizar o estado com um repositório Git\" na documentação) e clique em Retomar.": "To merge both sides, resolve over SSH (see the \"Sync the state with a Git repository\" page in the documentation) and click Resume.",
  "Retomar": "Resume",
  "COMMIT DO REPOSITÓRIO RECUSADO": "REPOSITORY COMMIT REJECTED",
  "Commit": "Commit",
  "Nada foi aplicado. Corrija no repositório com um commit novo; o daemon tenta de novo sozinho.": "Nothing was applied. Fix it in the repository with a new commit; the daemon retries on its own.",
  "REMOVIDOS NO GIT": "REMOVED IN GIT",
  "Estes itens sumiram do estado por um commit do repositório. O container, os volumes e os dados NÃO foram tocados. O domínio sai do ar. Para limpar: Runtime → Containers → Parar → Remover (e Volumes, se houver dados). Se foi engano, desfaça o commit no Git: o serviço volta e reencontra o container.": "These items disappeared from the state through a repository commit. The container, volumes and data were NOT touched. The domain goes offline. To clean up: Runtime → Containers → Stop → Remove (and Volumes, if there is data). If it was a mistake, undo the commit in Git: the service comes back and finds its container again.",
  "Esquecer": "Dismiss",
  "VALORES EM CLARO (": "PLAINTEXT VALUES (",
  "A sincronização só liga, e só commita, sem nenhum destes. Mova-os para secret (na tela de variáveis de ambiente). Uma suspeita que na verdade não é segredo pode ser marcada como \"não é segredo\"; certezas não.": "Syncing only turns on, and only commits, with none of these. Move them to secrets (on the environment-variables screen). A suspicion that is not really a secret can be marked \"not a secret\"; certainties cannot.",
  "Nenhum valor em claro encontrado.": "No plaintext value found.",
  "certeza": "certainty",
  "suspeita": "suspicion",
  "Não é segredo": "Not a secret",
  "Voltar a travar": "Block again",
  "parado": "stopped",
  "sincronização configurada": "sync configured",
  "sincronizado": "synced",
  "sincronização retomada": "sync resumed",
  "divergência resolvida": "divergence resolved",
  "Usar o do repositório? O que só o servidor tem será descartado (fica salvo numa branch rustploy-backup/local-… no servidor).": "Use the repository's? What only the server has will be discarded (it is saved in a rustploy-backup/local-… branch on the server).",
  "Usar o do servidor? O que só o repositório tem será sobrescrito (fica salvo numa branch rustploy-backup/remote-… no próprio repositório).": "Use the server's? What only the repository has will be overwritten (it is saved in a rustploy-backup/remote-… branch in the repository itself).",
  "Sincronização com o git pausada: o histórico divergiu. Abra Settings → Sincronização.": "Git sync paused: the history diverged. Open Settings → Sync.",
  "Um commit do repositório foi recusado ({0}). Abra Settings → Sincronização.": "A repository commit was rejected ({0}). Open Settings → Sync.",
  "Commits suspensos: {0} valor(es) em claro. Abra Settings → Sincronização.": "Commits suspended: {0} plaintext value(s). Open Settings → Sync.",
  "removido no git ({0})": "removed in git ({0})",
  "o histórico continua divergido": "the history is still diverged",
  "Mover para secret (o valor passa a ser guardado cifrado)": "Move to a secret (the value is stored encrypted)",
  "SECRETS DO SERVIÇO (": "SERVICE SECRETS (",
  "Valores cifrados usados só por este serviço (valem antes de um secret do projeto com o mesmo nome). O valor real nunca volta para cá: salvar com um nome existente substitui, e vale no próximo deploy.": "Encrypted values used only by this service (they win over a project secret with the same name). The real value never comes back here: saving with an existing name replaces it, and it takes effect on the next deploy.",
  "Nenhum secret neste serviço ainda.": "No secret in this service yet.",
  "Preencha nome e valor do secret": "Fill in the secret name and value",
  "secret {0} salvo — vale no próximo deploy": "secret {0} saved — takes effect on the next deploy",
  "variável {0} movida para secret": "variable {0} moved to a secret",
  "Renomear (o valor não muda)": "Rename (the value stays the same)",
  "Armazenamento de objetos S3: RustFS, MinIO": "S3-compatible object storage: RustFS, MinIO",
  "ESCOLHA O STORAGE": "CHOOSE THE STORAGE",
  "USUÁRIO (ACCESS KEY)": "USER (ACCESS KEY)",
  "SENHA (SECRET KEY)": "PASSWORD (SECRET KEY)",
  "Renomear \"{0}\" para:": "Rename \"{0}\" to:",
  "renomeado: {0} → {1}": "renamed: {0} → {1}",
  "Subir para o projeto (todos os serviços do projeto herdam)": "Move to the project (all services of the project inherit it)",
  "Subir para o projeto (todos os serviços do projeto podem usar)": "Move to the project (all services of the project can use it)",
  "Voltar para variável em claro (o valor deixa de ser cifrado)": "Back to a plain variable (the value stops being encrypted)",
  "Mover para o serviço:": "Move to service:",
  "escolha o serviço de destino": "choose the target service",
  "Mover para o serviço escolhido (os outros serviços deixam de herdar)": "Move to the selected service (the other services stop inheriting it)",
  "Mover para o serviço escolhido (os outros serviços deixam de ver)": "Move to the selected service (the other services stop seeing it)",
  "Escolha antes o serviço de destino, no seletor do topo.": "Choose the target service first, in the selector at the top.",
  "O valor de \"{0}\" deixa de ser cifrado e passa a aparecer em claro na variável (e no estado versionado). Continuar?": "The value of \"{0}\" stops being encrypted and appears in plain text in the variable (and in the versioned state). Continue?",
  "secret {0} movido para variável": "secret {0} moved to a variable",
  "secret {0} movido para o serviço": "secret {0} moved to the service",
  "secret {0} movido para o projeto": "secret {0} moved to the project",
  "variável {0} movida para o serviço": "variable {0} moved to the service",
  "variável {0} movida para o projeto": "variable {0} moved to the project",
  "O secret \"{0}\" passa a valer para todos os serviços deste projeto. Continuar?": "The secret \"{0}\" now applies to every service in this project. Continue?",
  "A variável \"{0}\" passa a valer para todos os serviços deste projeto. Continuar?": "The variable \"{0}\" now applies to every service in this project. Continue?",
  "Ver o valor do secret \"{0}\"? O valor vai aparecer na tela e o acesso fica registrado na auditoria do servidor (quem, qual secret e quando; nunca o valor).": "Show the value of secret \"{0}\"? The value will appear on screen and the access is recorded in the server audit (who, which secret and when; never the value).",
  "Ver o valor (o acesso fica registrado na auditoria do servidor)": "Show the value (the access is logged in the server audit)",
  "Esconder o valor": "Hide the value",
  "Copiar o valor": "Copy the value",
  "não foi possível ler o secret": "could not read the secret",
  "Religar quando o daemon subir": "Start on daemon boot",
  "Editar o valor no lugar": "Edit the value in place",
  "nome do secret": "secret name",
  "valor de {0} salvo": "value of {0} saved",
  "Redeployar a cada push no registry embutido": "Redeploy on every push to the embedded registry",
  "Só para uma imagem do registry deste próprio servidor: cada docker push do mesmo repositório e tag redeploya este serviço sozinho (docker login, build, push). Desligado por padrão.": "Only for an image served by this server's own registry: each docker push of the same repository and tag redeploys this service by itself (docker login, build, push). Off by default.",
  "Ligado, o daemon traz este serviço de volta depois de um reinício (só se ele estava rodando). Serviço parado à mão continua parado.": "When on, the daemon brings this service back after a restart (only if it was running). Services stopped by hand stay stopped.",
  "DEPENDE DE (": "DEPENDS ON (",
  "Serviços deste projeto que precisam estar prontos antes deste subir, no boot do daemon e em \"subir projeto\". Sem ciclos: o daemon recusa.": "Services of this project that must be ready before this one starts, on daemon boot and on \"start project\". No cycles; the daemon rejects them.",
  "Nenhuma dependência.": "No dependencies.",
  "ADICIONAR UMA DEPENDÊNCIA": "ADD A DEPENDENCY",
  "escolha um serviço": "choose a service",
  "Adicionar dependência": "Add dependency",
  "(serviço removido: {0})": "(removed service: {0})",
  "dependência adicionada": "dependency added",
  "dependência removida": "dependency removed",
  "Logs de execução": "Execution logs",
  "EXECUÇÕES ANTERIORES": "PREVIOUS EXECUTIONS",
  "Selecionar todas": "Select all",
  "Limpar selecionados": "Clear selected",
  "parcial": "partial",
  "Ver logs": "View logs",
  "Excluir": "Delete",
  "sem deploy associado": "no associated deploy",
  "Falhou": "Failed",
  "Substituída": "Replaced",
  "Ativa": "Active",
  "Execução": "Execution",
  " linhas": " lines",
  "{0} execução(ões) excluída(s) · {1} liberados": "{0} execution(s) deleted · {1} freed",
  "Excluir o log desta execução ({0})? Ação irreversível.": "Delete the log of this execution ({0})? Irreversible.",
  "Excluir o log de {0} execução(ões) ({1})? Ação irreversível.": "Delete the logs of {0} execution(s) ({1})? Irreversible.",
};