forked from tashfeenahmed/freellmapi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpt-PT.json
More file actions
844 lines (844 loc) · 42.8 KB
/
Copy pathpt-PT.json
File metadata and controls
844 lines (844 loc) · 42.8 KB
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
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
{
"nav": {
"models": "Modelos",
"playground": "Parque infantil",
"keys": "Chaves",
"analytics": "Análise",
"premium": "Premium",
"upgrade": "Atualização",
"settings": "Definições",
"signOut": "Desligar",
"openMenu": "Abrir menu de navegação",
"switchLight": "Mudança para tema de luz",
"switchDark": "Mudança para tema sombrio",
"switchToChinese": "Mudança para o chinês",
"switchToEnglish": "Mudança para inglês",
"modelsMenu": "Navegar pelos tipos de modelos",
"agents": "Agentes"
},
"auth": {
"createYourAccount": "Crie a sua conta",
"signIn": "Iniciar sessão",
"email": "Email",
"password": "Palavra-passe",
"emailPlaceholder": "you@example.com",
"passwordPlaceholderSetup": "pelo menos 8 personagens",
"passwordPlaceholderLogin": "A tua palavra-passe",
"setupDescription": "Defina o email e a palavra-passe que vão proteger este dashboard.",
"loginDescription": "Inicie sessão para gerir as suas chaves, roteamento e análises.",
"createAccount": "Criar conta",
"creating": "Criar...",
"signingIn": "A iniciar sessão...",
"loading": "A carregar...",
"newPasswordAutoComplete": "nova palavra-passe",
"currentPasswordAutoComplete": "palavra-passe atual",
"serverUnreachableBefore": "Não consigo contactar o servidor. Certifica-te de que o backend está a funcionar (",
"serverUnreachableAfter": ").",
"setupCode": "Código de configuração",
"setupCodePlaceholder": "Código dos registos do servidor",
"setupCodeHint": "Configurar a partir de outro dispositivo exige que o código de uso único seja impresso nos registos do servidor no arranque.",
"changePassword": "Alterar palavra-passe",
"changeEmail": "Alterar e-mail",
"forgotPassword": "Esqueceu-se da palavra-passe?",
"currentPassword": "Palavra-passe atual",
"newPassword": "Nova palavra-passe",
"newEmail": "Novo e-mail",
"resetCode": "Código de reposição",
"resetCodePlaceholder": "código dos registos do servidor",
"resetCodeHint": "Consulte os registos do servidor para obter o código.",
"forgotPasswordDescription": "Clique abaixo para gerar um código de reposição. O código aparecerá nos registos do servidor — introduza-o aqui para definir uma nova palavra-passe.",
"requestResetCode": "Enviar código",
"requestingResetCode": "A enviar…",
"resetPassword": "Repor palavra-passe",
"resettingPassword": "A repor…",
"changingPassword": "A alterar…",
"changingEmail": "A alterar…",
"backToLogin": "Voltar ao início de sessão",
"passwordChanged": "Palavra-passe alterada com sucesso.",
"emailChanged": "E-mail alterado com sucesso.",
"passwordReset": "Palavra-passe reposta. Inicie sessão."
},
"common": {
"save": "Guardar",
"saving": "A salvar...",
"cancel": "Cancelar",
"discard": "Descartar",
"delete": "Eliminar",
"confirm": "Confirmar",
"copy": "Cópia",
"copied": "Copiado",
"copyFailed": "Não foi possível copiar — selecione o texto e copie manualmente",
"show": "Programa",
"hide": "Esconde-te",
"apply": "Candidata-te",
"applied": "Aplicado",
"applying": "A candidatar-se...",
"active": "Ativo",
"inactive": "Inativo",
"never": "nunca",
"loading": "A carregar...",
"error": "Erro",
"noData": "Ainda sem dados",
"unsavedChanges": "Alterações não guardadas",
"saveChanges": "Alterações de gravação",
"remove": "Remover",
"unknownError": "Erro desconhecido",
"model": "Modelo",
"provider": "Fornecedor",
"success": "Sucesso",
"failures": "Falhas",
"dismiss": "Arquivamento",
"status": "Estado"
},
"settings": {
"title": "Definições",
"language": "Língua",
"theme": "Tema",
"themeSystem": "Sistema",
"themeLight": "Claro",
"themeDark": "Escuro",
"searchLanguage": "Procurar idiomas…",
"noLanguages": "Nenhuma língua encontrada",
"sections": "Secções das definições",
"sectionGeneral": "Geral",
"sectionCompression": "Compressão",
"sectionAdvanced": "Avançado",
"sectionPreview": "Pré-visualização",
"generalDescription": "Idioma e aspeto deste painel.",
"advancedDescription": "Limiares e interruptores de segurança do pipeline de compressão.",
"compressionTitle": "Compressão de prompts",
"compressionDescription": "Reduza o tamanho dos pedidos antes do encaminhamento, preservando código, erros, caminhos, números e definições de ferramentas.",
"compressionHelp": "Reescreve cada pedido antes de ser enviado a um fornecedor, para que use menos tokens. Código, erros, caminhos de ficheiros e números são protegidos, e qualquer reescrita que os danifique é descartada.",
"compressionMode": "Modo",
"compressionModeHelp": "Desativada envia os pedidos sem alterações. Sem perdas remove apenas o texto duplicado e desperdiçado. Padrão também encurta a saída das ferramentas. Agressiva condensa ainda os turnos anteriores.",
"compressionOff": "Desativada",
"compressionLossless": "Sem perdas",
"compressionStandard": "Padrão",
"compressionAggressive": "Agressiva",
"compressionLossy": "Com perdas",
"compressionEngines": "Motores",
"compressionEnginesHelp": "Cada motor é um passo de reescrita. O modo decide que motores são executados; desativar um aqui mantém-no fora de todos os modos.",
"engineDedup": "Blocos repetidos",
"engineDedupHelp": "Substitui um bloco de texto que já apareceu antes na conversa por uma referência curta ao mesmo.",
"engineLite": "Limpeza de espaços em branco",
"engineLiteHelp": "Remove espaços no fim das linhas, junta linhas em branco repetidas e elimina mensagens de sistema duplicadas.",
"engineReadLifecycle": "Leituras de ficheiros substituídas",
"engineReadLifecycleHelp": "Substitui uma leitura anterior de um ficheiro por uma nota assim que o mesmo ficheiro é lido ou editado novamente.",
"engineToolfilter": "Filtro de saída das ferramentas",
"engineToolfilterHelp": "Encurta a saída de comandos e ferramentas, como builds, testes e instalações. As linhas de erro e de stack trace são sempre preservadas.",
"engineJsoncompact": "Tabelas JSON",
"engineJsoncompactHelp": "Recodifica arrays JSON longos que partilham os mesmos campos como uma tabela compacta. É reversível, por isso nada se perde.",
"engineRelevance": "Filtro de relevância",
"engineRelevanceHelp": "Descarta as frases menos relacionadas com a mensagem mais recente quando uma mensagem excede o seu limite de tamanho.",
"engineAging": "Turnos anteriores",
"engineAgingHelp": "Condensa os turnos anteriores aos mais recentes num resumo curto que preserva caminhos, erros e decisões.",
"engineHardBudget": "Limite de tokens",
"engineHardBudgetHelp": "Remove as linhas menos valiosas até que o pedido caiba no objetivo de tokens.",
"compressionAutoTrigger": "Ativar automaticamente acima dos tokens estimados",
"compressionAutoTriggerHelp": "Os pedidos estimados acima deste número de tokens mudam automaticamente para Agressiva. Deixe vazio para desativar.",
"compressionPrefixFreeze": "Congelar prefixos de prompt recorrentes",
"compressionPrefixFreezeHelp": "Deixa um prompt do sistema intacto depois de o mesmo texto ter sido visto três vezes, para que a cache de prompts do lado do fornecedor continue a funcionar.",
"compressionTrustProjectFilters": "Confiar nos ficheiros de filtro do projeto",
"compressionTrustProjectFiltersHelp": "Carrega também filtros de saída de ferramentas a partir do diretório de trabalho. Desativado por predefinição, porque um repositório poderia usá-lo para esconder a saída do modelo.",
"compressionStats": "Tamanho poupado",
"compressionEstimatedTokensSaved": "Tokens estimados poupados",
"compressionPreview": "Pré-visualização em direto",
"compressionPreviewDescription": "Envie um corpo de pedido pelo pipeline para ver o que um fornecedor receberia.",
"compressionPreviewPlaceholder": "Cole o JSON do pedido ou texto simples",
"compressionRunPreview": "Executar pré-visualização",
"updatesTitle": "Atualizações",
"checkForUpdates": "Verifique atualizações",
"lastChecked": "Última verificação: {when}",
"currentVersion": "Compilação atual:",
"updateAvailable": "Atualização disponível",
"changelog": "O que mudou",
"upToDate": "Atualizado",
"buildAhead": "Esta compilação está à frente do ramo main oficial.",
"buildDiverged": "Esta compilação divergiu do ramo main oficial.",
"buildUnknown": "Esta compilação personalizada não pode ser comparada com o ramo main oficial.",
"notGitInstall": "Esta instalação não inclui informações do commit.",
"checkFailed": "Não foi possível procurar atualizações.",
"contactsGithub": "As verificações são manuais e contactam o GitHub.",
"openReleases": "Abrir lançamentos no GitHub",
"restartAfterUpdate": "Reinicie o FreeLLMAPI após a conclusão da compilação."
},
"models": {
"title": "Modelos",
"chatModelsTab": "Modelos de chat",
"fusionTab": "Fusão",
"embeddingsTab": "Embeddings",
"imageTab": "Imagem",
"audioTab": "Áudio",
"imageDesc": "Modelos de geração de texto para imagem.",
"audioDesc": "Modelos de texto para fala e de voz para texto.",
"mediaHint": "Gerar via",
"mediaEmpty": "Ainda não há modelos. Eles sincronizam a partir do catálogo.",
"ttsHeading": "Texto para fala",
"sttHeading": "Voz para texto",
"sttHint": "Transcrever via",
"sttEmpty": "Ainda não há modelos de voz para texto. Eles sincronizam a partir do catálogo.",
"newBadge": "Novo",
"monthlyTokenBudget": "Orçamento mensal de tokens",
"remaining": "remanescente",
"used": "Usado",
"of": "de",
"showAllModels": "Mostrar todos os modelos {count}",
"showLess": "Mostrar menos",
"vision": "Visão",
"visionTitle": "Aceita entrada de imagem",
"tools": "Ferramentas",
"toolsTitle": "Emite chamadas estruturadas de ferramentas, tornando-se elegível para pedidos de suporte de ferramenta",
"retired": "Descontinuado",
"penalty": "−{value} penalização",
"obs": "{count} obs",
"tokPerMonth": "{count} tok/mo",
"rpmLimit": "{count} rpm",
"rpdLimit": "{count} RPD",
"noKey": "sem chave",
"dragToReorder": "Arrasto para reordenação",
"dragToReorderGroup": "Arrasto para reordenar o modelo",
"providerCount": "{count} Prestadores",
"servedBy": "Servido por {providers}",
"viewProviders": "Ver fornecedores",
"backToModels": "Voltar aos modelos",
"providersHeading": "Prestadores que servem este modelo",
"codeSnippetHeading": "Usa este modelo",
"modelNotFound": "Este modelo não está disponível, ou não tem fornecedores configurados.",
"providerIdsHeading": "Ids de modelos de fornecedor",
"providerIdsHint": "Envie o ID unificado do modelo para failover em todos os fornecedores, ou um id específico do fornecedor para fixar um fornecedor.",
"copyModelName": "Copiar nome do modelo",
"settingsHeading": "Configurações do fornecedor",
"settingsHint": "As edições locais nos modelos de catálogo são mantidas entre as sincronizações do catálogo. Os modelos de catálogo apagados ficam eliminados até os adicionares novamente através da configuração.",
"catalogModel": "Catálogo",
"customModel": "Personalizado",
"localOverride": "Sobreposição local",
"displayName": "Nome de exibição",
"sizeLabel": "Escalão de capacidade",
"sizeLabelHint": "Frontier/Large/Medium/Small determinam o eixo da inteligência. Os modelos sem nível reconhecido recebem 0.",
"sizeLabelNone": "Nenhum (não pontuado)",
"contextWindow": "Contexto",
"inFallback": "Em cadeia",
"saveModelSettings": "Guardar definições do modelo",
"aggregateBudget": "{count}/mês",
"aggregateBudgetTitle": "Total de tokens gratuitos por mês em todos os fornecedores deste modelo",
"rateRpm": "{count} RPM",
"rateRpd": "{count} RPD",
"rateTitle": "Taxa limitada — sem orçamento mensal fixo para tokens",
"splitOut": "Não mescle esta cópia",
"splitOutHint": "Dê à cópia deste fornecedor a sua própria entrada separada em vez de a fundir no modelo unificado. Pode mesclá-lo na própria página da cópia.",
"splitUndo": "Mesclar de volta",
"splitUndoHint": "Esta cópia é mantida separada do seu modelo unificado. Mescle-o novamente para fazer failover em todos os seus fornecedores novamente.",
"splitBadge": "mantido separado",
"noData": "sem dados",
"noDataTitle": "Nenhuma solicitação registada ainda — a fiabilidade e a velocidade não são medidas para este fornecedor.",
"bestOfN": "o melhor de {count}",
"perProviderScores": "Pontuações por fornecedor: {list}",
"columnModel": "Modelo",
"columnOn": "Em",
"noModelsBefore": "Não há modelos disponíveis. Adicionar API teclas no",
"keysPageLink": "Página de Chaves",
"noModelsAfter": "Primeiro.",
"hiddenNoKeys": "Escondido (sem chaves): {platforms}",
"searchPlaceholder": "Pesquise modelos ou fornecedores...",
"clearSearch": "Pesquisa limpa",
"ctxAny": "Qualquer contexto",
"ctxBadge": "{size} CTX",
"ctxTitle": "Janela de contexto",
"copyModelId": "Copiar o ID do modelo",
"showingCount": "{shown} dos modelos {total}",
"clearFilters": "Filtros transparentes",
"noMatches": "Nenhum modelo corresponde aos teus filtros.",
"noModelsTitle": "Sem modelos configurados",
"intelligenceRank": "Inteligência",
"speedRank": "Velocidade",
"rankHint": "Classificação no catálogo — 1 é a melhor.",
"limitRpm": "RPM",
"limitRpd": "RPD",
"limitTpm": "TPM",
"limitTpd": "TPD",
"limitHint": "Deixe em branco para não ter limite.",
"usageThisMonth": "Utilização mensal",
"usageEmpty": "Ainda não há pedidos este mês.",
"usageRequestsMonth": "{count} ped. este mês"
},
"strategies": {
"explore": "Explorar modelos sem medições",
"exploreHint": "Dá aos modelos sem dados de fiabilidade/velocidade 10% de probabilidade de serem experimentados para que acumulem amostras.",
"title": "Estratégia de encaminhamento",
"description": "Escolha uma estratégia de roteamento. No modo Manual arrasta-se para definir a ordem; As outras estratégias encaminham-se pelo resultado em tempo real através da fiabilidade, velocidade e inteligência.",
"weightsSummary": "fiabilidade {reliability}% · velocidade {speed}% · inteligência {intelligence}%",
"guardrails": "Guarda-corpos",
"guardrailsTooltip": "Guarda-vidas sempre ativas: margem de cabeça de quota livre × penalização por limite de taxa em tempo real. Abaixo de 1.0 significa que o modelo está a ser travado.",
"scoreTooltip": "Pontuação final de roteamento = média ponderada dos três eixos, multiplicada pelos corrimãos de proteção. Primeiro rotas mais altas.",
"modeManualHint": "Modo manual: os pedidos seguem a ordem abaixo, de cima a baixo. Arrastar para reordenar.",
"modeScoreHint": "Atualização de pontuações a partir do tráfego em direto. A ordem abaixo mostra como os pedidos são encaminhados neste momento.",
"manual": "Manual",
"manualBlurb": "Faz a rota exatamente pela ordem que definiste abaixo. Arrasta as alças para reordenar. Sem golos; a cadeia é seguida de cima a baixo.",
"balanced": "Equilibrado",
"balancedBlurb": "A fiabilidade lidera (50%), com velocidade e inteligência ponderadas igualmente (25% cada). Um padrão sensato e geral.",
"smartest": "O mais inteligente",
"smartestBlurb": "Prefiro o modelo mais capaz que ainda funcione. Inteligência 55%, fiabilidade 35%, velocidade 10%.",
"fastest": "O mais rápido",
"fastestBlurb": "Prefiro o modelo mais rápido que ainda funcione. Velocidade 55%, fiabilidade 35%, inteligência 10%.",
"reliable": "Mais fiável",
"reliableBlurb": "Maximize a taxa de sucesso acima de tudo. Fiabilidade 70%, velocidade e inteligência 15% cada.",
"custom": "Costume",
"customBlurb": "Define o teu próprio equilíbrio entre fiabilidade, velocidade e inteligência com sliders. O mesmo motor dos presets, só os pesos.",
"adjust": "Ajustar",
"customWeights": "Pesos personalizados",
"customWeightsHelp": "Os sliders são independentes; As ações equilibram-se automaticamente para 100%.",
"weightReliability": "Fiabilidade",
"weightSpeed": "Velocidade",
"weightIntelligence": "Inteligência",
"weightRequired": "Pelo menos um peso deve estar acima de zero.",
"scoreColumn": "Banda sonora"
},
"penaltyInspector": {
"title": "Pressão do router",
"subtitle": "Penalizações, tempos de recarga e falhas dos últimos {minutes} minutos",
"rowCount": "{count} ativo",
"offChain": "fora da cadeia",
"penaltyValue": "Penálti {value}",
"factor": "pontuação x{factor}",
"noCooldown": "Sem tempo de recarga",
"cooldownChip": "{key} - {time}",
"errorsHeading": "{count} erros recentes",
"noRecentErrors": "Sem erros recentes",
"noKey": "sem chave",
"reasons": {
"penalty": "penalizado",
"cooldown": "Tempo de recarga",
"recent_errors": "falhar"
}
},
"keys": {
"pageTitle": "Chaves",
"pageDescription": "Credenciais do fornecedor e a chave unificada de API com que as suas aplicações se ligam.",
"tabProviders": "Fornecedores",
"checklistSummary": "{configured} de {total} fornecedores configurados",
"checklistKeyless": "não requer chave",
"tabQuotaSignals": "Sinais de quota",
"tabApiKey": "Chave API unificada",
"tabAnthropic": "Anthropic",
"unifiedKey": "A sua chave unificada API",
"regenerate": "Regenerar",
"showKey": "Programa",
"hideKey": "Esconde-te",
"copyKey": "Cópia",
"copyFullKey": "Copiar chave completa",
"copiedKey": "Copiado",
"baseUrl": "Base URL",
"endpointChat": "Chat",
"endpointResponses": "Respostas",
"endpointEmbeddings": "Embeddings",
"endpointEmbeddingsHint": "model: \"auto\" ou uma família do separador Embeddings",
"endpointMessages": "Mensagens",
"endpointMessagesHint": "Compatível com Anthropic (Claude)",
"anthropicTitle": "Modelos Claude (Anthropic)",
"anthropicDesc": "Aponta um cliente SDK Claude ou Anthropic para este servidor. Anthropic clientes enviam Claude nomes de modelos — mapeem cada um para Auto (o router escolhe um modelo livre) ou pinhem um modelo específico.",
"anthropicBaseUrl": "Base URL",
"anthropicAuth": "Cabeçalho de autenticação",
"anthropicAuto": "Auto — o router escolhe o melhor modelo",
"anthropicSave": "Guardar mapeamento",
"anthropicSaved": "Salvo",
"anthropicNote": "Anthropic clientes mantêm os seus nomes Claude modelos incorporados; O mapeamento acima decide como cada um entra na sua piscina.",
"familyDefault": "Padrão",
"familyOpus": "Opus",
"familySonnet": "Soneto",
"familyHaiku": "Haiku",
"selectPlatform": "Selecione um fornecedor",
"addKey": "Adicionar a tecla",
"keyAdded": "Chave adicionada",
"endpointKeysShareModels": "As chaves do mesmo endpoint partilham os seus modelos.",
"export": "Exportação",
"exportAll": "Todas as tonalidades",
"exportHealthy": "Apenas saudável",
"exportKeys": "Chaves de exportação API",
"exportFormat": "Formato",
"exportHealthyOnly": "Apenas chaves saudáveis",
"exportHealthyOnlyDesc": "Excluir chaves que estejam atualmente a falhar nas verificações de saúde",
"exportWillExport": "Exporto",
"exportKey": "Chave",
"exportKeys plural": "Chaves",
"exporting": "Exportar...",
"exportDownload": "Descarregar",
"exportSuccess": "Chaves {count} exportadas",
"adding": "Acrescentando...",
"selectProvider": "Escolha um fornecedor...",
"accountId": "ID da Conta",
"label": "Editora",
"noKeyNeeded": "(sem necessidade de chave)",
"outboundProxy": "Proxy de saída",
"outboundProxyDescription": "Encaminha os pedidos de LLM de saída através de um proxy. Suporta SOCKS5, HTTP e HTTPS.",
"proxyUrl": "Proxy URL",
"saveProxy": "Guardar",
"savingProxy": "A salvar...",
"proxyLoadFailed": "Não consegui carregar as definições do proxy.",
"addCustom": "Adicione um modelo personalizado compatível com OpenAI",
"addCustomDescription": "Apontar chat, embedding, imagem ou modelos de áudio em qualquer endpoint compatível com OpenAI. A chave API é opcional para servidores locais.",
"customType": "Tipo",
"customTypeChat": "Chat",
"customTypeEmbedding": "Embedding",
"customTypeImage": "Imagem",
"customTypeAudio": "Áudio",
"customBaseUrl": "Base URL",
"customModels": "Modelos",
"customModel": "Modelo",
"customDisplayName": "Nome de exibição",
"customDisplayNamePerModel": "por modelo",
"customDisplayNameOptional": "opcional",
"customFamily": "Família",
"customFamilyPlaceholder": "Define o ID do modelo",
"customApiKey": "API chave",
"customCapabilities": "Capacidades",
"addModel": "Adicionar modelo",
"modelAdded": "Modelo adicionado",
"addModels": "Adicionar {count} modelos",
"addEmbeddingModel": "Adicionar embedding",
"addImageModel": "Adicionar modelo de imagem",
"addAudioModel": "Adicionar modelo de áudio",
"addingCustom": "Acrescentando...",
"discoverModels": "Obter modelos",
"probeNow": "Testar o endpoint",
"probeSuccess": "{model} testado em {latency} ms",
"probeFailed": "O teste falhou: {reason}",
"discoverTitle": "Modelos neste endpoint",
"discoverHint": "Escolha os modelos a registar. Os já adicionados ficam bloqueados.",
"discoverEmpty": "Este endpoint não devolveu nenhum modelo.",
"discoverAlreadyAdded": "Adicionado",
"discoverSelectAll": "Selecionar tudo",
"modelsAdded": "{count} modelos adicionados",
"getApiKey": "Arranja API chave",
"deleteKeyConfirm": "Apagar esta chave? Isto não pode ser desfeito.",
"checkAll": "Verificar tudo",
"checking": "A verificar...",
"editLabel": "Etiqueta de edição",
"saveLabel": "Etiqueta de guardar",
"unifiedKeyDescBefore": "Usa isto como OpenAI",
"unifiedKeyDescAfter": "; Autentica pedidos a este proxy.",
"serverUnreachableBefore": "Não consigo contactar o servidor",
"serverUnreachableAfter": ". Certifica-te de que o backend está a funcionar. O NPM run dev inicia ambos, e os registos do servidor imprimem-se sob o prefixo do servidor.",
"paneProviderKey": "Chave do fornecedor",
"paneImportFile": "Ficheiro de importação",
"paneCustomEndpoint": "Endpoint personalizado",
"platform": "Plataforma",
"apiToken": "API token",
"noKeyNeededPlaceholder": "Não é preciso API chave",
"bearerTokenPlaceholder": "Ficha de portador",
"pasteKeyPlaceholder": "colar a chave aqui",
"pasteSeveral": "Colar várias",
"keylessHint": "Não é necessária API chave: o nível gratuito deste fornecedor é anónimo (limite de taxa por IP).",
"enable": "Permitir",
"noProviderKeys": "Ainda não há chaves do fornecedor. Adicione um acima para começar a rotear.",
"filterPlaceholder": "Fornecedores de filtros ou chaves",
"filterAll": "Todos",
"filterHealthy": "Saudável",
"filterIssues": "Questões",
"filterDisabled": "Deficiente",
"noFilterMatch": "Nenhum fornecedor corresponde aos seus filtros.",
"providerCountSummary": "{providers} fornecedores · {keys} chaves",
"summaryHealthy": "{count} saudável",
"summaryIssueOne": "{count} questão",
"summaryIssueOther": "{count} questões",
"providerActions": "Ações do fornecedor",
"routeViaProxy": "Rota via procuração",
"checkNow": "Confirme agora",
"proxyEnvHintBefore": "Também configurável através do",
"proxyEnvHintAfter": "variável de ambiente (tem precedência). Deixe em branco para desativar. Exemplos:",
"importKeys": "Chaves de provedor de importação",
"importKeysDescription": "Carregar .env, JSON, JSONC, CSV, Markdown ou ficheiros de texto.",
"importFiles": "Ficheiros",
"importFileCount": "{count} selecionado",
"previewFiles": "Pré-visualização",
"previewing": "A antecipar...",
"selected": "Selecionado",
"provider": "Fornecedor",
"keyName": "Nome-chave",
"keyValue": "Valor-chave",
"chooseProvider": "Escolher fornecedor",
"noPreviewKeys": "Não foram encontradas chaves nesses ficheiros.",
"skippedItems": "Ignorado:",
"moreItems": "+{count} mais",
"importSelected": "Importação {count}",
"importing": "Importar...",
"noImportSelection": "Selecione pelo menos uma fila com um fornecedor.",
"duplicate": "Duplicado",
"duplicatesFound": "{count} duplicado(s) detetado — já existem e serão saltados.",
"importResult": "{imported} importados; Falhou {failed}.",
"importModelCount": "+{count} modelos",
"importResultWithModels": "{imported} importados; {models} modelos registados; Falhou {failed}.",
"confirmRemove": "Confirmar?",
"quotaSignalsTitle": "Sinais de quota",
"quotaSignalsEmptyTitle": "Ainda não há observações de quotas",
"quotaSignalsEmptyDesc": "Isto preenche depois de os fornecedores devolverem cabeçalhos de limite de taxa, erros de quota ou sinais de validação.",
"quotaKeyRef": "#{id} chave",
"quotaPoolRef": "piscina {pool}",
"quotaLimit": "Limite",
"quotaRemaining": "Remanescentes",
"quotaReset": "Reiniciar",
"quotaObserved": "Observado",
"tabAgents": "Agentes",
"familyGeminiPro": "Gemini Pro",
"familyGeminiFlash": "Gemini Flash",
"familyGeminiFlashLite": "Gemini Flash-Lite",
"geminiTitle": "Mapeamento de modelos Gemini",
"geminiDesc": "Mapeie os nomes Gemini Pro, Flash e Flash-Lite para Auto ou para um modelo específico do catálogo.",
"compatibilityTitle": "Compatibilidade de agentes",
"compatibilityDesc": "Controle as superfícies de compatibilidade opcionais e a descoberta de modelos do Claude Code.",
"ollamaMode": "Emulação do Ollama",
"ollamaModeHint": "O loopback aberto nunca aceita tráfego LAN não autenticado.",
"ollamaOff": "Desligado",
"ollamaLoopback": "Aberto no loopback",
"ollamaKeyRequired": "Chave de API obrigatória",
"claudeAliases": "Aliases de descoberta do Claude Code",
"claudeAliasesHint": "Exponha aliases claude/<model> para que o seletor de modelos do gateway possa listar o catálogo.",
"urlTokensTitle": "Tokens de URL revogáveis",
"urlTokensDesc": "Apenas para clientes sem cabeçalhos. Os tokens de URL podem ser expostos no histórico e nos registos, por isso revogue-os quando já não forem necessários.",
"urlTokenLabel": "Etiqueta do token",
"createUrlToken": "Criar token",
"urlTokenOnce": "Copie este token agora. Não voltará a ser mostrado.",
"revoked": "Revogado",
"revoke": "Revogar",
"modelScope": "Âmbito de modelos",
"modelScopeDesc": "Limite esta chave a IDs de modelo específicos. O router ignora esta chave para qualquer outro modelo.",
"modelScopeAdd": "Adicione um ID de modelo e prima Enter",
"modelScopeEmpty": "Sem âmbito definido — esta chave serve todos os modelos do fornecedor.",
"modelScopeClear": "Limpar âmbito",
"modelScopeBadgeOne": "restrita · 1 modelo",
"modelScopeBadgeOther": "restrita · {count} modelos",
"cpTitle": "Perfis de cliente",
"cpDesc": "Chaves de API por cliente, cada uma com um prompt de sistema que o servidor aplica sempre.",
"cpEmpty": "Ainda não existem perfis de cliente.",
"cpNameLabel": "Nome",
"cpNamePlaceholder": "p. ex., Bot de apoio",
"cpPromptLabel": "Prompt de sistema (opcional)",
"cpPromptPlaceholder": "Instruções que o servidor antepõe a cada pedido feito com esta chave.",
"cpCreate": "Criar perfil",
"cpRotate": "Rodar chave",
"cpKeyOnce": "Copie esta chave agora — não voltará a ser mostrada.",
"cpEnabledAria": "Perfil ativado"
},
"status": {
"healthy": "Saudável",
"rateLimited": "Taxa limitada",
"invalid": "inválido",
"error": "erro",
"unchecked": "sem controlo"
},
"analytics": {
"title": "Análise",
"description": "Volume de pedidos, latência, uso de tokens e falhas.",
"range24h": "24h",
"range7d": "7d",
"range30d": "30d",
"range90d": "90d",
"requests": "Pedidos",
"successRate": "Taxa de sucesso",
"inputTokens": "Tokens de entrada",
"outputTokens": "Tokens de saída",
"avgLatency": "Latência média",
"p95Latency": "Latência P95",
"avgTtft": "Média TTFT",
"estSavings": "Est. poupanças",
"requestsByProvider": "Pedidos por prestador",
"avgLatencyByProvider": "Latência média por fornecedor",
"ttftByProvider": "Tempo para o primeiro token por fornecedor",
"ttftEmpty": "Ainda não há tempo para o primeiro token registado.",
"requestsOverTime": "Pedidos ao longo do tempo",
"tokensOverTime": "Tokens ao longo do tempo",
"byModel": "Por modelo",
"byPlatform": "Por plataforma",
"errors": "Erros",
"errorDistribution": "Distribuição de erro",
"pinnedRequests": "Pedidos fixados",
"pinnedHonored": "Homenageado",
"fallbackAttempts": "Tentativas de recuo",
"savingsHint": "Na verdade, guardaste ${actual} nos últimos {range}. É isso que os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número mostrado projeta o seu ritmo dos últimos {span} de dados para 30 dias completos.",
"savingsHintExact": "Na verdade, guardaste ${actual} nos últimos {range}. É isso que os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número mostrado é o seu total real de 30 dias.",
"requestsHintPinned": "{pinned} destes pedidos fixava um modelo específico pelo nome. {honored} eram servidos pelo modelo com pinos; {failed} mudou para outro. Os restantes foram encaminhados automaticamente.",
"requestsHintAuto": "Todos os pedidos neste período eram encaminhados automaticamente; nenhum cliente fixava um modelo específico pelo nome.",
"requestsHintTypes": "{chat} pedido de chat e {embedding} de embedding.",
"rangeLabel24h": "24 horas",
"rangeLabel7d": "7 dias",
"rangeLabel30d": "30 dias",
"rangeLabel90d": "90 dias",
"spanDays": "{count} dias",
"spanHours": "{count} horas",
"latencyMs": "Latência (ms)",
"latency": "Latência",
"pinned": "Fixado",
"inTokens": "Em fichas",
"outTokens": "Fichas de saída",
"saved": "Salvo",
"message": "Mensagem",
"time": "Tempo",
"perModelBreakdown": "Distribuição por modelo",
"usageByKey": "Utilização por tonalidade",
"keyColumn": "Chave",
"keyLabelFallback": "Chave #{id}",
"errorsByProvider": "Erros por fornecedor",
"recentErrors": "Erros recentes",
"noErrors": "Sem erros",
"recentCalls": "Chamadas recentes",
"clientIp": "IP do Cliente",
"clientAgent": "Aplicação cliente",
"requestedModelHint": "Solicitado {model}, servido por recuo",
"attempts": "Tentativas",
"filterAll": "Todos",
"filterCanceled": "Canceladas",
"providerBreakdown": "Distribuição por fornecedor",
"tokensPerSec": "Tok/s",
"allProviders": "Todos os prestadores",
"requestDetailTitle": "Pedido #{id}",
"failoverLadder": "Escada de failover",
"failoverLadderHint": "Cada salto que este pedido percorria a cadeia de recurso, por ordem.",
"noAttemptTrace": "Não foi registada qualquer tentativa de rastreio para este pedido.",
"keyOrdinal": "#{n} chave",
"attemptTimingHint": "Início deslocado a partir do início do pedido · Duração da tentativa",
"requestedModel": "Modelo solicitado",
"ttft": "TTFT",
"requestsByAgent": "Pedidos por agente"
},
"playground": {
"title": "Parque infantil",
"description": "Envia um chat completo através do router e vê qual o fornecedor que o atende.",
"autoModel": "Auto (cadeia de recurso)",
"fusionModel": "Fusão (síntese multi-modelo)",
"selectModel": "Modelo selecionado",
"searchModels": "Procurar modelos...",
"noModelsFound": "Nenhum modelo encontrado",
"send": "Enviar",
"sending": "A enviar...",
"clear": "Limpo",
"inputPlaceholder": "Escreve uma mensagem... (⏎ para enviar, ⇧⏎ para a nova linha)",
"emptyTitle": "Envie uma mensagem para começar.",
"emptyDescription": "Usando {model}. Muda de modelo no seletor acima.",
"noModels": "Ainda não há modelos. Adicione uma chave API na página de Chaves para preencher esta lista.",
"copyReply": "Copiar resposta",
"fallback": "Recuo",
"fallbacks": "Recuos",
"fusionPanel": "Painel",
"fusionJudge": "Juiz",
"fusionTrace": "{count} Respostas do modelo",
"fusionFailed": "Sem resposta",
"fusionJudgeSynth": "Sintetizei a resposta final",
"errorPrefix": "Erro:",
"systemPromptLabel": "Prompt do sistema",
"systemPromptPlaceholder": "Opcional. Enviado como mensagem do sistema antes do teu chat.",
"errorTitle": "Pedido falhado",
"attach": "Anexar ficheiros",
"attachTooMany": "Pode anexar até {count} ficheiros por mensagem.",
"attachTooLarge": "{name} é demasiado grande. O limite é {max}.",
"attachUnsupported": "{name} não é suportado. Anexe imagens (PNG, JPEG, WebP, GIF) ou ficheiros de texto (TXT, MD, CSV, JSON, LOG).",
"attachFailed": "Não foi possível ler {name}.",
"noVisionBadge": "Sem imagens",
"visionWarning": "{model} não aceita imagens. Escolha um modelo de visão ou Auto."
},
"embeddings": {
"title": "Modelos",
"description": "Os embeddings falham apenas dentro de uma família: o mesmo modelo servido por outro fornecedor. Vetores de diferentes modelos são incompatíveis, por isso o router nunca troca os modelos contigo.",
"defaultBadge": "Padrão · Auto",
"makeDefault": "Fazer defeito",
"moveUp": "Avançar",
"moveDown": "Desce",
"usageToday": "{count} requisito hoje",
"usageMonth": "{count} tok este mês",
"autoDescription": "model: \"auto\" em POST /v1/embeddings rotas para a família padrão. Nomear uma família (ou um ID de modelo de fornecedor) fixa essa família; Os fornecedores dentro dela são testados por ordem.",
"unsavedChanges": "Alterações não guardadas",
"saveChanges": "Alterações de gravação",
"savingChanges": "A salvar...",
"tokMax": "{tokens} tok max",
"emptyTitle": "Ainda não há modelos de embedding",
"emptyDesc": "As famílias de embedding aparecem aqui assim que adiciona uma chave de fornecedor que suporta embeddings.",
"dragToReorder": "Arrastar para o fornecedor de reencomenda"
},
"fusion": {
"title": "Fusão",
"description": "Um painel de modelos responde em paralelo, depois um juiz sintetiza uma resposta mais forte. Usa-o chamando o API com modelo de \"fusão\".",
"panelSource": "Fonte do painel",
"panelSourceHelp": "De onde vêm os modelos de painéis quando um pedido não especifica o seu próprio.",
"mode": {
"auto": "Auto (Cadeia de Reserva)",
"autoHelp": "Escolha um conjunto diversificado de modelos da sua Cadeia de Reserva, classificados pela sua estratégia de roteamento ativo.",
"explicit": "Painel explícito",
"explicitHelp": "Use sempre os modelos específicos que escolher abaixo."
},
"panelModels": "Modelos de painéis",
"selectedCount": "{count} de {max} selecionados",
"noModels": "Ainda não há modelos ligados. Adicione uma chave API e depois ative os modelos na Cadeia de Reserva.",
"panelSize": "Tamanho do painel",
"panelSizeHelp": "Quantos modelos diferentes escolher automaticamente (1–{max}).",
"judge": "Modelo de juíz",
"judgeHelp": "O modelo que sintetiza as respostas do painel numa só. O Auto usa o teu modelo mais bem classificado disponível.",
"judgeAuto": "Auto (melhor classificado disponível)",
"strategy": "Estratégia",
"strategySynthesize": "Sintetiza — mistura o painel numa só resposta",
"strategyBestOf": "O melhor de — devolve a resposta mais forte (sem decisão de juiz)",
"strategySynthesizeShort": "Síntese",
"strategyBestOfShort": "Melhores",
"exposePanel": "Expor detalhes do painel",
"exposePanelHelp": "Anexe os metadados da resposta de cada modelo e do juiz sob um campo x_fusion na resposta.",
"howToUse": "Como usar",
"howToUseHelp": "Envia um pedido de chat normal com o modelo \"fusion\". Estas definições são as predefinidas; Qualquer pedido pode sobrepê-los com um campo de \"fusão\".",
"unsavedChanges": "Alterações não guardadas",
"save": "Guardar"
},
"premium": {
"title": "Premium",
"description": "O catálogo de modelos ativos, em todos os dispositivos.",
"loading": "A carregar...",
"checkForUpdates": "Verifique atualizações",
"syncing": "A sincronizar...",
"catalogFeed": "Feed do catálogo",
"liveFeed": "Transmissão em direto",
"monthlySnapshot": "Resumo mensal",
"lastChecked": "Última verificação: {when}",
"liveDescription": "Novos modelos gratuitos, alterações de quotas e correções de quirks chegam aqui em poucas horas após serem enviados. A aplicação verifica automaticamente duas vezes por dia; Nada para fazer.",
"snapshotDescription": "Nível gratuito: o catálogo atualiza-se a partir de um snapshot mensal, verificado automaticamente duas vezes por dia. O Premium muda isto para o feed em direto, atualizado a cada 2-3 dias.",
"lastSyncProblem": "Último problema de sincronização: {error}",
"license": "Licença",
"planAnnual": "Anual Premium",
"planLifetime": "Vida Útil Premium",
"expired": "Expirado",
"inactive": "Inativo",
"lifetimeNote": "Carta vitalícia: nunca expira.",
"renewsOn": "Renova no {date}.",
"willNotRenew": "Não vai renovar. Premium até {date}, depois esta instalação volta ao catálogo mensal gratuito.",
"keyInactive": "Esta chave já não está ativa. A aplicação continua a trabalhar no catálogo mensal gratuito.",
"manageSubscription": "Gerir subscrição",
"openingPortal": "A abrir...",
"removeKey": "Remover a chave deste dispositivo",
"manageHint": "Gerir subscrição abre o portal de faturação da Stripe: cancele, atualize o seu cartão ou descarregue faturas. Remover a chave apenas desativa este dispositivo; A sua compra está intacta.",
"licenseKey": "Chave de licença",
"licenseKeyPlaceholder": "fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"activate": "Ativar",
"activating": "Ativar...",
"keyHint": "A sua chave está no email de compra e na página pós-checkout. Perdeste a cabeça?",
"recoverKey": "Recupere-o no site",
"upsellTitle": "Vai ao vivo por 19 dólares por ano",
"upsellDescription": "Novos modelos gratuitos no momento em que existem, em vez de 30 dias depois. Uma chave, cada dispositivo. Cancele a qualquer momento; O router fica livre para sempre.",
"goPremium": "Go Premium",
"bundled": "agrupados",
"planGeneric": "Premium"
},
"languages": {
"en": "English",
"zh-CN": "中文 (简体)",
"es": "Español",
"fr": "Français",
"pt-BR": "Português (Brasil)",
"it": "Italiano",
"hi": "हिन्दी",
"ar": "العربية",
"bn": "বাংলা",
"ru": "Русский",
"ur": "اردو",
"id": "Bahasa Indonesia",
"de": "Deutsch",
"ja": "日本語",
"sw": "Kiswahili",
"mr": "मराठी",
"te": "తెలుగు",
"tr": "Türkçe",
"ta": "தமிழ்",
"vi": "Tiếng Việt",
"ko": "한국어",
"fa": "فارسی",
"th": "ไทย",
"gu": "ગુજરાતી",
"pl": "Polski",
"uk": "Українська",
"kn": "ಕನ್ನಡ",
"ml": "മലയാളം",
"or": "ଓଡ଼ିଆ",
"my": "မြန်မာဘာသာ",
"pa": "ਪੰਜਾਬੀ",
"ro": "Română",
"nl": "Nederlands",
"ms": "Bahasa Melayu",
"tl": "Filipino",
"ha": "Hausa",
"yo": "Yorùbá",
"ig": "Igbo",
"am": "አማርኛ",
"uz": "Oʻzbekcha",
"az": "Azərbaycanca",
"si": "සිංහල",
"ne": "नेपाली",
"km": "ខ្មែរ",
"el": "Ελληνικά",
"cs": "Čeština",
"hu": "Magyar",
"sv": "Svenska",
"he": "עברית",
"da": "Dansk",
"fi": "Suomi",
"no": "Norsk",
"sk": "Slovenčina",
"bg": "Български",
"hr": "Hrvatski",
"sr": "Српски",
"lt": "Lietuvių",
"zh-TW": "中文 (繁體)",
"pt-PT": "Português (Portugal)",
"ka": "ქართული"
},
"errors": {
"boundaryTitle": "Algo correu mal",
"boundaryDescription": "O painel apresentou um erro inesperado. Os seus dados estão seguros. Tenta novamente ou volta à página dos modelos.",
"tryAgain": "Tenta outra vez",
"goHome": "Voltar aos modelos"
},
"notFound": {
"title": "Página não encontrada",
"description": "Esta página não existe ou pode ter mudado."
},
"setup": {
"title": "Como começar",
"subtitle": "Três passos para encaminhar o seu primeiro pedido.",
"progress": "{done} de {total}",
"step1Title": "Adicionar uma chave de fornecedor",
"step1Desc": "Ligue pelo menos uma conta de fornecedor. Chaves grátis funcionam.",
"step1Cta": "Adicionar teclas",
"step2Title": "Enviar um pedido de teste",
"step2Desc": "Escolhe qualquer modelo no Playground e diz olá.",
"step2Cta": "Parque Infantil Aberto",
"step3Title": "Ligue a sua aplicação",
"step3Desc": "Use a sua chave API unificada com qualquer cliente compatível com OpenAI.",
"copyKey": "Copiar API chave",
"copyUrl": "Copiar URL base",
"copiedKey": "API tecla copiada para a prancheta",
"copiedUrl": "Base URL copiada para a prancheta"
},
"palette": {
"title": "Paleta de comandos",
"placeholder": "Páginas de pesquisa, modelos, ações...",
"empty": "Sem resultados",
"groupPages": "Páginas",
"groupActions": "Ações",
"groupModels": "Modelos",
"toggleTheme": "Alternar modo escuro"
},
"validation": {
"required": "Obrigatório",
"url": "Introduza uma URL válida começando por http:// ou https://",
"email": "Insira um endereço de email válido",
"passwordMin": "Pelo menos {min} personagens"
},
"agents": {
"title": "Agentes de programação",
"description": "Ligue ferramentas de programação a um único gateway de modelos gratuitos com configuração gerada e segura para cópias de segurança.",
"apiKey": "Chave de API",
"quickstartTitle": "Início rápido",
"quickstart": "Caminho mais rápido: configure o Claude Code a partir do catálogo em direto.",
"currentKey": "Chave unificada atual:",
"seenRecently": "Visto recentemente",
"setupLabel": "Configuração automática",
"setupHint": "Escreve por si o ficheiro de configuração desta ferramenta, apontado para esta gateway.",
"setupGuideHint": "Mostra os passos de configuração desta ferramenta; não é escrito nenhum ficheiro.",
"manualLabel": "Ligação manual",
"manualHint": "URL base e chave para introduzir nas definições da própria ferramenta.",
"endpoint": "Endpoint",
"documentation": "Documentação"
}
}