@moraya/core 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +215 -41
  2. package/dist/ai/drivers/claude.d.ts +6 -0
  3. package/dist/ai/drivers/claude.js +229 -0
  4. package/dist/ai/drivers/claude.js.map +1 -0
  5. package/dist/ai/drivers/gemini.d.ts +6 -0
  6. package/dist/ai/drivers/gemini.js +212 -0
  7. package/dist/ai/drivers/gemini.js.map +1 -0
  8. package/dist/ai/drivers/index.d.ts +14 -0
  9. package/dist/ai/drivers/index.js +617 -0
  10. package/dist/ai/drivers/index.js.map +1 -0
  11. package/dist/ai/drivers/ollama.d.ts +8 -0
  12. package/dist/ai/drivers/ollama.js +158 -0
  13. package/dist/ai/drivers/ollama.js.map +1 -0
  14. package/dist/ai/drivers/openai.d.ts +7 -0
  15. package/dist/ai/drivers/openai.js +225 -0
  16. package/dist/ai/drivers/openai.js.map +1 -0
  17. package/dist/ai/drivers/tool-bridge.d.ts +37 -0
  18. package/dist/ai/drivers/tool-bridge.js +138 -0
  19. package/dist/ai/drivers/tool-bridge.js.map +1 -0
  20. package/dist/ai/drivers/types.d.ts +2 -0
  21. package/dist/ai/drivers/types.js +1 -0
  22. package/dist/ai/drivers/types.js.map +1 -0
  23. package/dist/ai/drivers/util.d.ts +13 -0
  24. package/dist/ai/drivers/util.js +40 -0
  25. package/dist/ai/drivers/util.js.map +1 -0
  26. package/dist/ai/image.d.ts +37 -0
  27. package/dist/ai/image.js +36 -0
  28. package/dist/ai/image.js.map +1 -0
  29. package/dist/ai/index.d.ts +37 -0
  30. package/dist/ai/index.js +826 -0
  31. package/dist/ai/index.js.map +1 -0
  32. package/dist/ai/types.d.ts +92 -0
  33. package/dist/ai/types.js +1 -0
  34. package/dist/ai/types.js.map +1 -0
  35. package/dist/ai/voice.d.ts +42 -0
  36. package/dist/ai/voice.js +34 -0
  37. package/dist/ai/voice.js.map +1 -0
  38. package/dist/chat-markdown/index.d.ts +82 -0
  39. package/dist/chat-markdown/index.js +165 -0
  40. package/dist/chat-markdown/index.js.map +1 -0
  41. package/dist/i18n/locales/ar.json +806 -732
  42. package/dist/i18n/locales/de.json +912 -838
  43. package/dist/i18n/locales/en.json +34 -5
  44. package/dist/i18n/locales/es.json +952 -876
  45. package/dist/i18n/locales/fr.json +1784 -1708
  46. package/dist/i18n/locales/hi.json +1808 -1734
  47. package/dist/i18n/locales/ja.json +839 -765
  48. package/dist/i18n/locales/ko.json +1783 -1709
  49. package/dist/i18n/locales/pt.json +894 -820
  50. package/dist/i18n/locales/ru.json +812 -738
  51. package/dist/i18n/locales/zh-CN.json +34 -5
  52. package/dist/i18n/locales/zh-Hant.json +1039 -965
  53. package/dist/types-CwM77g7u.d.ts +88 -0
  54. package/package.json +26 -2
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "admin": {
3
- "__mt": true,
4
- "title": "Team Admin",
5
- "tab_members": "Members",
6
- "tab_kbs": "Knowledge Bases",
3
+ "title": "Administrador da equipe",
4
+ "tab_members": "Membros",
5
+ "tab_kbs": "Bases de Conhecimento",
7
6
  "tab_usage": "Usage",
8
- "members": "Members",
9
- "knowledge_bases": "Knowledge Bases",
10
- "invite_member": "Invite Member",
11
- "remove_member": "Remove",
12
- "create_kb": "Create KB",
7
+ "members": "Membros",
8
+ "knowledge_bases": "Bases de Conhecimento",
9
+ "invite_member": "Convidar membro",
10
+ "remove_member": "Remover",
11
+ "create_kb": "Criar base de conhecimento",
13
12
  "no_members": "No members yet.",
14
- "no_kbs": "No knowledge bases yet.",
13
+ "no_kbs": "Ainda não bases de conhecimento.",
15
14
  "col_name": "Name",
16
15
  "col_email": "Email",
17
16
  "col_role": "Role",
@@ -26,7 +25,6 @@
26
25
  "this_month": "this month"
27
26
  },
28
27
  "agent": {
29
- "__mt": true,
30
28
  "title": "AI Agent",
31
29
  "subtitle": "Let AI handle multi-step tasks across your knowledge base",
32
30
  "query_placeholder": "Describe a task for the agent to complete...",
@@ -39,22 +37,22 @@
39
37
  "upgrade_required": "AI Agent is available on Personal and above plans.",
40
38
  "mode": {
41
39
  "react": "ReAct (Adaptive)",
42
- "plan_execute": "Plan & Execute"
40
+ "plan_execute": "Planejar e executar"
43
41
  },
44
42
  "history": {
45
- "title": "Agent History",
46
- "search_placeholder": "Search tasks...",
47
- "no_results": "No tasks match your search.",
48
- "empty": "No agent tasks yet. Start your first task!",
49
- "steps": "steps"
43
+ "title": "Histórico do agente",
44
+ "search_placeholder": "Pesquisar tarefas...",
45
+ "no_results": "Nenhuma tarefa corresponde à sua pesquisa.",
46
+ "empty": "Nenhuma tarefa de agente ainda. Comece sua primeira tarefa!",
47
+ "steps": "passos"
50
48
  },
51
49
  "market": {
52
- "title": "Agent Templates",
53
- "subtitle": "Browse ready-to-use agent templates",
54
- "search_placeholder": "Search templates...",
55
- "no_results": "No templates match your search.",
50
+ "title": "Modelos de agente",
51
+ "subtitle": "Procure modelos de agentes prontos para uso",
52
+ "search_placeholder": "Pesquisar modelos...",
53
+ "no_results": "Nenhum modelo corresponde à sua pesquisa.",
56
54
  "all_tags": "All",
57
- "use": "Use Template"
55
+ "use": "Usar modelo"
58
56
  }
59
57
  },
60
58
  "ai": {
@@ -101,7 +99,8 @@
101
99
  "testing": "Testando...",
102
100
  "connected": "Conectado!",
103
101
  "failed": "Falhou",
104
- "test_failed": "Falha no teste de conexão"
102
+ "test_failed": "Falha no teste de conexão",
103
+ "endpoint_id_placeholder": "Enter inference endpoint ID"
105
104
  },
106
105
  "providers": {
107
106
  "claude": "Anthropic Claude",
@@ -191,13 +190,63 @@
191
190
  },
192
191
  "sections": {
193
192
  "image_ai": "IA de imagens",
194
- "image_aihint": "Configurações do modelo de geração de imagens com IA."
193
+ "image_aihint": "Configurações do modelo de geração de imagens com IA.",
194
+ "session_ai": "Session AI",
195
+ "session_aihint": "Text chat model configurations.",
196
+ "realtime_voice_ai": "End-to-End Voice AI",
197
+ "realtime_voice_aihint": "Realtime voice conversation configurations (multiple providers)."
195
198
  },
196
199
  "generating": "Gerando…",
197
- "not_configured": "Provedor de IA não configurado"
200
+ "not_configured": "Provedor de IA não configurado",
201
+ "model_short": {
202
+ "none": "Nenhum modelo configurado",
203
+ "chat": "Chat",
204
+ "realtime": "Voz RT",
205
+ "image": "Imagem",
206
+ "speech": "Voz"
207
+ },
208
+ "voice": {
209
+ "record": "Gravar voz",
210
+ "cancel": "Cancelar entrada de voz",
211
+ "commit": "Use transcript"
212
+ },
213
+ "realtime": {
214
+ "chat_model_group": "Chat Models",
215
+ "realtime_model_group": "Modelos ponta a ponta",
216
+ "image_model_group": "Image Generation",
217
+ "speech_model_group": "Voice Transcription",
218
+ "add_model": "+ Add Voice Model",
219
+ "no_models": "No end-to-end voice models configured",
220
+ "no_models_hint": "Add a realtime voice model to enable wave-button voice chat.",
221
+ "missing_config": "No available end-to-end voice model. Configure one in Settings -> Chat.",
222
+ "start_voice": "Start voice conversation",
223
+ "stop_voice": "Stop voice conversation",
224
+ "live": "Live",
225
+ "providers": {
226
+ "gemini-live": "Gemini Live",
227
+ "openai-realtime": "OpenAI Realtime",
228
+ "doubao-realtime": "Doubao Realtime",
229
+ "qwen-realtime": "Qwen Realtime",
230
+ "stepfun-realtime": "StepFun Realtime",
231
+ "tongyi-bailing": "Tongyi Bailing",
232
+ "amazon-nova-sonic": "Amazon Nova Sonic"
233
+ },
234
+ "config": {
235
+ "access_key_id": "Access Key ID",
236
+ "secret_access_key": "Chave de acesso secreta",
237
+ "session_token": "Token de sessão",
238
+ "doubao_app_id": "ID do aplicativo (X-Api-App-ID)",
239
+ "doubao_access_key": "Token de acesso (X-Api-Access-Key)",
240
+ "doubao_secret_key": "Chave do aplicativo (X-Api-App-Key)",
241
+ "voice": "Voz",
242
+ "region": "Region",
243
+ "optional": "Optional",
244
+ "secret_placeholder": "Enter secret key",
245
+ "missing_credential": "Please provide API key or required credentials first."
246
+ }
247
+ }
198
248
  },
199
249
  "ai_budget": {
200
- "__mt": true,
201
250
  "title": "AI Budget",
202
251
  "description": "Set monthly and per-call spending limits for AI requests routed through Moraya.",
203
252
  "monthly_spend": "Monthly Spend",
@@ -217,23 +266,21 @@
217
266
  "info3": "Monthly counters reset on the 1st of each month automatically."
218
267
  },
219
268
  "ai_history": {
220
- "__mt": true,
221
269
  "title": "AI Call History",
222
270
  "total_calls": "Total Calls",
223
- "month_cost": "This Month",
224
- "success_rate": "Success Rate",
225
- "tab_list": "Calls",
226
- "tab_provider": "By Provider",
227
- "tab_daily": "By Day",
271
+ "month_cost": "Este mês",
272
+ "success_rate": "Taxa de sucesso",
273
+ "tab_list": "Chamadas",
274
+ "tab_provider": "Por provedor",
275
+ "tab_daily": "Por dia",
228
276
  "no_records": "No call records yet.",
229
277
  "failed": "Failed",
230
- "provider": "Provider",
231
- "calls": "Calls",
278
+ "provider": "Provedor",
279
+ "calls": "Chamadas",
232
280
  "cost": "Cost",
233
281
  "share": "Share"
234
282
  },
235
283
  "app": {
236
- "__mt": true,
237
284
  "name": "Moraya Web",
238
285
  "tagline": "Your AI, your data, your cloud."
239
286
  },
@@ -279,7 +326,6 @@
279
326
  "loading": "Loading audit log…"
280
327
  },
281
328
  "auth": {
282
- "__mt": true,
283
329
  "login": "Sign in with Picora",
284
330
  "logout": "Sign out",
285
331
  "logging_in": "Signing in...",
@@ -292,7 +338,6 @@
292
338
  "local_only_notice": "You are working locally. Notes are stored on this device only."
293
339
  },
294
340
  "billing": {
295
- "__mt": true,
296
341
  "title": "Billing",
297
342
  "current_plan": "Current Plan",
298
343
  "upgrade_title": "Upgrade Your Plan",
@@ -305,49 +350,50 @@
305
350
  "plan_team": "Team",
306
351
  "plan_enterprise": "Enterprise",
307
352
  "plan_connect": "Connect (Free)",
308
- "monthly": "Monthly",
353
+ "monthly": "Mensal",
309
354
  "yearly": "Yearly",
310
- "yearly_savings": "Save 2 months",
355
+ "yearly_savings": "Economize 2 meses",
311
356
  "per_seat": "/seat",
312
- "pay_with_stripe": "Pay with Card (Stripe)",
357
+ "pay_with_stripe": "Pague com cartão (faixa)",
313
358
  "pay_with_alipay": "Pay with Alipay",
314
359
  "seats_label": "Number of seats",
315
360
  "seats_hint": "Minimum 1 seat",
316
- "effective_immediate": "Effective immediately",
317
- "effective_period_end": "At the end of the billing period",
318
- "cancel_confirm": "I understand my subscription will end",
319
- "downgrade_confirm": "I understand I may lose access to some features",
320
- "confirm_cancel": "Cancel Subscription",
321
- "confirm_downgrade": "Confirm Downgrade",
322
- "refund_title": "Request Refund",
323
- "refund_14day": "As a first-time subscriber within 14 days, you qualify for an automatic refund.",
324
- "refund_request": "Request Refund",
325
- "refund_pending": "Refund request submitted. Our team will review it.",
326
- "back_to_billing": "Back to Billing",
327
- "loading": "Loading...",
328
- "error": "Something went wrong. Please try again.",
329
- "checkout_redirect": "Redirecting to checkout...",
330
- "alipay_scan": "Scan with Alipay app to complete payment",
361
+ "effective_immediate": "Em vigor imediatamente",
362
+ "effective_period_end": "No final do período de faturamento",
363
+ "cancel_confirm": "Entendo que minha assinatura terminará",
364
+ "downgrade_confirm": "Entendo que posso perder o acesso a alguns recursos",
365
+ "confirm_cancel": "Cancelar assinatura",
366
+ "confirm_downgrade": "Confirmar downgrade",
367
+ "refund_title": "Solicitar reembolso",
368
+ "refund_14day": "Como assinante pela primeira vez em 14 dias, você se qualifica para um reembolso automático.",
369
+ "refund_request": "Solicitar reembolso",
370
+ "refund_pending": "Solicitação de reembolso enviada. Nossa equipe irá analisá-lo.",
371
+ "back_to_billing": "Voltar ao faturamento",
372
+ "loading": "Carregando...",
373
+ "error": "Algo deu errado. Por favor, tente novamente.",
374
+ "checkout_redirect": "Redirecionando para finalização da compra...",
375
+ "alipay_scan": "Digitalize com o aplicativo Alipay para concluir o pagamento",
331
376
  "devices_title": "Manage Devices",
332
377
  "devices_subtitle": "Devices signed into your account.",
333
378
  "device_current": "This device",
334
- "device_revoke": "Sign out",
335
- "device_revoke_confirm": "Sign out this device?",
379
+ "device_revoke": "sair",
380
+ "device_revoke_confirm": "Desconectar este dispositivo?",
336
381
  "device_last_active": "Last active",
337
- "devices_limit_reached": "You've reached the device limit for your plan.",
382
+ "devices_limit_reached": "Você atingiu o limite de dispositivos do seu plano.",
338
383
  "usage_ai_calls": "AI Calls",
339
384
  "usage_kbs": "Knowledge Bases",
340
- "usage_devices": "Devices",
341
- "usage_of": "{used} of {limit}",
342
- "upgrade_prompt_ai": "You've used {used}/{limit} AI calls this month.",
343
- "upgrade_prompt_kb": "You've reached your KB limit ({limit}).",
344
- "upgrade_now": "Upgrade Now",
385
+ "usage_devices": "Dispositivos",
386
+ "usage_of": "{used} de {limit}",
387
+ "upgrade_prompt_ai": "Você usou chamadas de IA {used}/{limit} este mês.",
388
+ "upgrade_prompt_kb": "Você atingiu seu limite de KB ({limit}).",
389
+ "upgrade_now": "Atualize agora",
345
390
  "plan_features_personal": "Unlimited KBs, 2000 AI calls/month, BYO API key, E2E encryption, BYOC storage",
346
391
  "plan_features_team": "Everything in Personal, team collaboration, 5000 AI calls/month, Cloud KMS",
347
392
  "currency_usd": "USD ($)",
348
393
  "currency_cny": "CNY (¥)",
349
394
  "currency_eur": "EUR (€)",
350
- "change_currency": "Change currency"
395
+ "change_currency": "Change currency",
396
+ "upgrade": "Upgrade"
351
397
  },
352
398
  "cloud_picker": {
353
399
  "title_image": "Inserir imagem da nuvem",
@@ -396,16 +442,15 @@
396
442
  "no_results": "Nenhum resultado encontrado"
397
443
  },
398
444
  "commands": {
399
- "__mt": true,
400
- "palette_title": "Command Palette",
401
- "placeholder": "Search commands...",
402
- "no_results": "No commands found",
403
- "type_to_search": "Type to search commands",
404
- "go_home": "Go to Home",
445
+ "palette_title": "Paleta de Comandos",
446
+ "placeholder": "Comandos de pesquisa...",
447
+ "no_results": "Nenhum comando encontrado",
448
+ "type_to_search": "Digite para pesquisar comandos",
449
+ "go_home": " para casa",
405
450
  "open_settings": "Open Settings",
406
- "open_workflows": "Open Workflows",
407
- "toggle_sidebar": "Toggle Sidebar",
408
- "sidebar_kb": "Sidebar: Knowledge Bases",
451
+ "open_workflows": "Fluxos de trabalho abertos",
452
+ "toggle_sidebar": "Alternar barra lateral",
453
+ "sidebar_kb": "Barra lateral: Bases de conhecimento",
409
454
  "sidebar_explorer": "Sidebar: Files",
410
455
  "sidebar_outline": "Sidebar: Outline"
411
456
  },
@@ -433,34 +478,33 @@
433
478
  "new": "Novo"
434
479
  },
435
480
  "compose": {
436
- "__mt": true,
437
- "title": "Compose article",
481
+ "title": "Compor artigo",
438
482
  "start_over": "Start over",
439
- "stepper_label": "Compose stages",
483
+ "stepper_label": "Compor etapas",
440
484
  "step": {
441
- "topic": "Topic",
442
- "article": "Article",
443
- "cover": "Cover",
444
- "review": "Review"
485
+ "topic": "Tópico",
486
+ "article": "Artigo",
487
+ "cover": "Cobrir",
488
+ "review": "Análise"
445
489
  },
446
490
  "topic": {
447
- "title": "What's the article about?",
448
- "hint": "Describe the topic, audience, key points the more specific, the better.",
449
- "placeholder": "e.g. A deep dive on why Rust's async model handles backpressure better than Go's…",
450
- "next": "Next: write article →"
491
+ "title": "Sobre o que é o artigo?",
492
+ "hint": "Descreva o tema, o público, os pontos-chave quanto mais específico, melhor.",
493
+ "placeholder": "por exemplo Um mergulho profundo sobre por que o modelo assíncrono do Rust lida com a contrapressão melhor do que o do Go…",
494
+ "next": "Próximo: escrever artigo →"
451
495
  },
452
496
  "tone": {
453
- "title": "Tone",
454
- "general": "General",
497
+ "title": "Tom",
498
+ "general": "Em geral",
455
499
  "marketing": "Marketing",
456
- "technical": "Technical",
457
- "story": "Story"
500
+ "technical": "Técnico",
501
+ "story": "História"
458
502
  },
459
503
  "length": {
460
- "title": "Length",
461
- "short": "Short",
462
- "medium": "Medium",
463
- "long": "Long"
504
+ "title": "Comprimento",
505
+ "short": "Curto",
506
+ "medium": "Médio",
507
+ "long": "Longo"
464
508
  },
465
509
  "article": {
466
510
  "title": "Write the article",
@@ -507,18 +551,17 @@
507
551
  "title": "Drafts",
508
552
  "new": "New draft",
509
553
  "new_sub": "Archive current and start fresh",
510
- "active": "Active",
511
- "untitled": "Untitled draft",
512
- "delete": "Delete draft"
554
+ "active": "Ativo",
555
+ "untitled": "Rascunho sem título",
556
+ "delete": "Excluir rascunho"
513
557
  }
514
558
  },
515
559
  "conflict": {
516
- "__mt": true,
517
- "title": "Conflict Detected",
518
- "description": "This note was edited on another device.",
519
- "keep_server": "Keep server version",
520
- "keep_local": "Keep my version",
521
- "merge": "Merge manually"
560
+ "title": "Conflito detectado",
561
+ "description": "Esta nota foi editada em outro dispositivo.",
562
+ "keep_server": "Manter a versão do servidor",
563
+ "keep_local": "Mantenha minha versão",
564
+ "merge": "Mesclar manualmente"
522
565
  },
523
566
  "context_menu": {
524
567
  "cut": "Recortar",
@@ -569,124 +612,122 @@
569
612
  "new_note": "New note"
570
613
  },
571
614
  "enterprise": {
572
- "__mt": true,
573
615
  "hsm": {
574
- "title": "Hardware Security Module (HSM)",
575
- "subtitle": "Connect your HSM provider for FIPS 140-2 Level 3+ key operations",
576
- "upgrade_required": "HSM integration requires the Enterprise plan.",
616
+ "title": "Módulo de segurança de hardware (HSM)",
617
+ "subtitle": "Conecte seu provedor de HSM para operações de chave FIPS 140-2 Nível 3+",
618
+ "upgrade_required": "A integração do HSM requer o plano Enterprise.",
577
619
  "providers": {
578
620
  "aws": "AWS CloudHSM",
579
621
  "aliyun": "Aliyun HSM",
580
- "pkcs11": "PKCS#11 (Generic)"
622
+ "pkcs11": "PKCS#11 (genérico)"
581
623
  },
582
624
  "aws": {
583
- "cluster_id": "Cluster ID",
584
- "region": "AWS Region"
625
+ "cluster_id": "ID do cluster",
626
+ "region": "Região AWS"
585
627
  },
586
628
  "aliyun": {
587
- "instance_id": "Instance ID",
588
- "region": "Region"
629
+ "instance_id": "ID da instância",
630
+ "region": "Região"
589
631
  },
590
632
  "pkcs11": {
591
633
  "lib_path": "Library Path (.so / .dll / .dylib)",
592
- "slot": "Slot ID",
593
- "supported_mechanisms": "Supported Mechanisms"
634
+ "slot": "ID do slot",
635
+ "supported_mechanisms": "Mecanismos Suportados"
594
636
  }
595
637
  },
596
638
  "orgs": {
597
- "title": "Multi-Organization Management",
598
- "subtitle": "Manage seat allocation and cross-org knowledge sharing",
599
- "upgrade_required": "Multi-org management requires the Enterprise plan.",
600
- "seat_allocation": "Seat Allocation",
601
- "total_seats": "Total Seats",
602
- "allocated": "Allocated",
603
- "unallocated": "Unallocated",
604
- "org_list": "Organizations",
639
+ "title": "Gestão Multiorganizacional",
640
+ "subtitle": "Gerencie a alocação de licenças e o compartilhamento de conhecimento entre organizações",
641
+ "upgrade_required": "O gerenciamento multiorganizacional requer o plano Enterprise.",
642
+ "seat_allocation": "Alocação de assentos",
643
+ "total_seats": "Total de assentos",
644
+ "allocated": "Alocado",
645
+ "unallocated": "Não alocado",
646
+ "org_list": "Organizações",
605
647
  "members": "Members",
606
- "cross_org_sharing": "Cross-Org Sharing",
607
- "shares_to": "shares KBs to",
648
+ "cross_org_sharing": "Compartilhamento entre organizações",
649
+ "shares_to": "compartilha KBs para",
608
650
  "kb_ids_placeholder": "kb-1, kb-2, ...",
609
651
  "request_share": "Request Share"
610
652
  },
611
653
  "compliance": {
612
654
  "title": "Compliance & Archiving",
613
- "subtitle": "GDPR, HIPAA, SOC2, ISO 27001 compliance exports and WORM archiving",
614
- "upgrade_required": "Compliance archiving requires the Enterprise plan.",
655
+ "subtitle": "Exportações em conformidade com GDPR, HIPAA, SOC2, ISO 27001 e arquivamento WORM",
656
+ "upgrade_required": "O arquivamento de conformidade requer o plano Enterprise.",
615
657
  "tabs": {
616
- "retention": "Retention",
658
+ "retention": "Retenção",
617
659
  "worm": "WORM",
618
- "export": "Export"
660
+ "export": "Exportar"
619
661
  },
620
662
  "retention": {
621
- "title": "7-Year Retention",
622
- "hint": "Records are retained for 7 years and cannot be deleted during this period.",
623
- "days_left": "days left",
624
- "years": "years"
663
+ "title": "Retenção de 7 anos",
664
+ "hint": "Os registros são retidos por 7 anos e não podem ser excluídos durante esse período.",
665
+ "days_left": "dias restantes",
666
+ "years": "anos"
625
667
  },
626
668
  "worm": {
627
- "title": "WORM Records",
628
- "description": "Write-Once-Read-Many records are immutable once created.",
629
- "immutable_label": "Immutable",
630
- "immutable_desc": "Records cannot be modified or deleted after creation.",
631
- "retention_years": "Retention Period"
669
+ "title": "Registros WORM",
670
+ "description": "Os registros Write-Once-Read-Many são imutáveis ​​depois de criados.",
671
+ "immutable_label": "Imutável",
672
+ "immutable_desc": "Os registros não podem ser modificados ou excluídos após a criação.",
673
+ "retention_years": "Período de retenção"
632
674
  },
633
675
  "export": {
634
- "title": "Compliance Export",
635
- "standard": "Standard",
636
- "format": "Format",
637
- "generate": "Generate Export",
638
- "applicable_events": "Applicable audit events"
676
+ "title": "Exportação de conformidade",
677
+ "standard": "Padrão",
678
+ "format": "Formatar",
679
+ "generate": "Gerar exportação",
680
+ "applicable_events": "Eventos de auditoria aplicáveis"
639
681
  }
640
682
  },
641
683
  "custom_domain": {
642
- "title": "Custom Domain",
643
- "subtitle": "Use your own domain name for the Moraya workspace.",
644
- "upgrade_required": "Custom domain requires the Enterprise plan.",
645
- "hostname": "Your Domain",
646
- "cname_target": "CNAME Target",
647
- "dns_record": "DNS Record to Add",
648
- "dns_hint": "Add this CNAME record to your DNS provider and wait for propagation (up to 48h).",
649
- "save": "Save & Verify",
650
- "verifying_hint": "Verification in progress. DNS propagation may take up to 48 hours."
684
+ "title": "Domínio Personalizado",
685
+ "subtitle": "Use seu próprio nome de domínio para o espaço de trabalho Moraya.",
686
+ "upgrade_required": "O domínio personalizado requer o plano Enterprise.",
687
+ "hostname": "Seu domínio",
688
+ "cname_target": "Alvo CNAME",
689
+ "dns_record": "Registro DNS para adicionar",
690
+ "dns_hint": "Adicione este registro CNAME ao seu provedor DNS e aguarde a propagação (até 48h).",
691
+ "save": "Salvar e verificar",
692
+ "verifying_hint": "Verificação em andamento. A propagação do DNS pode levar até 48 horas."
651
693
  },
652
694
  "custom_ai": {
653
- "title": "Custom AI Endpoint",
654
- "subtitle": "Connect your own OpenAI-compatible LLM endpoint.",
655
- "upgrade_required": "Custom AI endpoints require the Enterprise plan.",
656
- "add_provider": "Add Provider",
657
- "provider_name": "Provider Name",
658
- "base_url": "Base URL",
659
- "api_key_ref": "API Key Reference (Keychain ID)",
660
- "models_csv": "Models (comma-separated)",
661
- "add": "Add Provider",
662
- "saved_providers": "Saved Providers",
695
+ "title": "Endpoint de IA personalizado",
696
+ "subtitle": "Conecte seu próprio endpoint LLM compatível com OpenAI.",
697
+ "upgrade_required": "Os endpoints de IA personalizados exigem o plano Enterprise.",
698
+ "add_provider": "Adicionar provedor",
699
+ "provider_name": "Nome do provedor",
700
+ "base_url": "URL base",
701
+ "api_key_ref": "Referência de chave de API (ID das chaves)",
702
+ "models_csv": "Modelos (separados por vírgula)",
703
+ "add": "Adicionar provedor",
704
+ "saved_providers": "Provedores salvos",
663
705
  "context_window": "Context window",
664
- "models": "models",
665
- "openai_compatible": "OpenAI-compatible",
666
- "custom_format": "Custom format"
706
+ "models": "modelos",
707
+ "openai_compatible": "Compatível com OpenAI",
708
+ "custom_format": "Formato personalizado"
667
709
  },
668
710
  "data_residency": {
669
- "title": "Data Residency",
670
- "subtitle": "Control where your organization's data is stored and processed.",
671
- "upgrade_required": "Data residency control requires the Enterprise plan.",
672
- "primary_region": "Primary Region",
673
- "allowed_regions": "Allowed Regions",
674
- "restrict_cross_region": "Restrict cross-region data transfers",
675
- "filter_by_compliance": "Filter by Compliance Standard",
676
- "all": "All",
677
- "requirements": "Legal Requirements",
678
- "save_policy": "Save Policy",
679
- "policy_saved": "Policy saved"
711
+ "title": "Residência de dados",
712
+ "subtitle": "Controle onde os dados da sua organização são armazenados e processados.",
713
+ "upgrade_required": "O controle de residência de dados requer o plano Enterprise.",
714
+ "primary_region": "Região Primária",
715
+ "allowed_regions": "Regiões permitidas",
716
+ "restrict_cross_region": "Restringir transferências de dados entre regiões",
717
+ "filter_by_compliance": "Filtrar por Padrão de Conformidade",
718
+ "all": "Todos",
719
+ "requirements": "Requisitos Legais",
720
+ "save_policy": "Salvar política",
721
+ "policy_saved": "Política salva"
680
722
  }
681
723
  },
682
724
  "entitlement": {
683
- "__mt": true,
684
- "connect": "Connect",
685
- "personal": "Personal",
686
- "team": "Team",
687
- "enterprise": "Enterprise",
688
- "current_plan": "Current plan",
689
- "upgrade": "Upgrade"
725
+ "connect": "Conectar",
726
+ "personal": "Pessoal",
727
+ "team": "Equipe",
728
+ "enterprise": "Empresa",
729
+ "current_plan": "Plano atual",
730
+ "upgrade": "Atualizar"
690
731
  },
691
732
  "errors": {
692
733
  "ai_not_configured": "A IA não está configurada.",
@@ -727,21 +768,20 @@
727
768
  }
728
769
  },
729
770
  "explorer": {
730
- "__mt": true,
731
- "title": "Files",
732
- "filter_placeholder": "Filter notes...",
733
- "empty": "No notes yet",
734
- "no_results": "No matching notes",
735
- "new_note": "New note",
736
- "new_folder": "New folder",
737
- "rename": "Rename",
771
+ "title": "Arquivos",
772
+ "filter_placeholder": "Filtrar notas...",
773
+ "empty": "Ainda não há notas",
774
+ "no_results": "Nenhuma nota correspondente",
775
+ "new_note": "Nova nota",
776
+ "new_folder": "Nova pasta",
777
+ "rename": "Renomear",
738
778
  "delete": "Delete",
739
- "favorite": "Add to favorites",
740
- "unfavorite": "Remove from favorites",
741
- "context_menu": "File options",
742
- "tags": "Tags",
743
- "no_tags": "No tags found",
744
- "untagged": "Untagged"
779
+ "favorite": "Adicionar aos favoritos",
780
+ "unfavorite": "Remover dos favoritos",
781
+ "context_menu": "Opções de arquivo",
782
+ "tags": "Etiquetas",
783
+ "no_tags": "Nenhuma tag encontrada",
784
+ "untagged": "Sem etiqueta"
745
785
  },
746
786
  "export": {
747
787
  "export_as": "Exportar como {format}",
@@ -775,38 +815,37 @@
775
815
  }
776
816
  },
777
817
  "fulltext_search": {
778
- "__mt": true,
779
- "title": "Hybrid Search",
780
- "placeholder": "Search notes, memories, workflows...",
781
- "clear": "Clear",
782
- "filters": "Filters",
783
- "filter_time": "Time",
784
- "filter_source": "Source",
785
- "filter_tags": "Tags",
786
- "time_all": "All time",
787
- "time_today": "Today",
788
- "time_7d": "Last 7 days",
789
- "time_30d": "Last 30 days",
790
- "time_90d": "Last 90 days",
791
- "source_all": "All sources",
792
- "source_note": "Notes",
793
- "source_memory": "Memory",
794
- "source_workflow": "Workflows",
795
- "cross_kb_hint": "Upgrade for cross-KB search",
796
- "tab_results": "Results",
797
- "tab_history": "History",
798
- "tab_saved": "Saved",
799
- "save_search": "Save search",
800
- "save_name_prompt": "Name this saved search",
801
- "searching": "Searching...",
802
- "no_results": "No results found",
803
- "start_typing": "Type to search",
804
- "history_empty": "No search history",
805
- "saved_empty": "No saved searches",
806
- "clear_history": "Clear history",
807
- "hint_navigate": "Navigate",
808
- "hint_open": "Open",
809
- "hint_close": "Close"
818
+ "title": "Pesquisa Híbrida",
819
+ "placeholder": "Pesquise notas, memórias, fluxos de trabalho...",
820
+ "clear": "Claro",
821
+ "filters": "Filtros",
822
+ "filter_time": "Tempo",
823
+ "filter_source": "Fonte",
824
+ "filter_tags": "Etiquetas",
825
+ "time_all": "Todo o tempo",
826
+ "time_today": "Hoje",
827
+ "time_7d": "Últimos 7 dias",
828
+ "time_30d": "Últimos 30 dias",
829
+ "time_90d": "Últimos 90 dias",
830
+ "source_all": "Todas as fontes",
831
+ "source_note": "Notas",
832
+ "source_memory": "Memória",
833
+ "source_workflow": "Fluxos de trabalho",
834
+ "cross_kb_hint": "Atualização para pesquisa entre KB",
835
+ "tab_results": "Resultados",
836
+ "tab_history": "História",
837
+ "tab_saved": "Salvo",
838
+ "save_search": "Salvar pesquisa",
839
+ "save_name_prompt": "Nomeie esta pesquisa salva",
840
+ "searching": "Procurando...",
841
+ "no_results": "Nenhum resultado encontrado",
842
+ "start_typing": "Digite para pesquisar",
843
+ "history_empty": "Sem histórico de pesquisa",
844
+ "saved_empty": "Nenhuma pesquisa salva",
845
+ "clear_history": "Limpar histórico",
846
+ "hint_navigate": "Navegar",
847
+ "hint_open": "Abrir",
848
+ "hint_close": "Fechar"
810
849
  },
811
850
  "git": {
812
851
  "bind_title": "Vincular repositório Git",
@@ -891,15 +930,14 @@
891
930
  "merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first."
892
931
  },
893
932
  "image_ctx": {
894
- "__mt": true,
895
- "copy_url": "Copy URL",
896
- "replace": "Replace Image",
897
- "edit_alt": "Edit Alt Text",
898
- "resize": "Resize",
899
- "delete": "Delete Image",
900
- "alt_label": "Alt Text",
901
- "alt_placeholder": "Describe the image...",
902
- "alt_hint": "Improves accessibility and SEO",
933
+ "copy_url": "Copiar URL",
934
+ "replace": "Substituir imagem",
935
+ "edit_alt": "Editar texto alternativo",
936
+ "resize": "Redimensionar",
937
+ "delete": "Excluir imagem",
938
+ "alt_label": "Texto alternativo",
939
+ "alt_placeholder": "Descreva a imagem...",
940
+ "alt_hint": "Melhora a acessibilidade e SEO",
903
941
  "save_alt": "Save"
904
942
  },
905
943
  "image_dialog": {
@@ -1492,65 +1530,63 @@
1492
1530
  }
1493
1531
  },
1494
1532
  "media": {
1495
- "__mt": true,
1496
- "upload_title": "Media Uploads",
1497
- "uploading": "Uploading",
1533
+ "upload_title": "Carregamentos de mídia",
1534
+ "uploading": "Enviando",
1498
1535
  "upload_done": "Uploaded",
1499
- "upload_error": "Upload failed",
1500
- "compressed_from": "Compressed",
1536
+ "upload_error": "Falha no upload",
1537
+ "compressed_from": "Comprimido",
1501
1538
  "compress_auto": "Auto-compress images > 1MB",
1502
- "size_limit_exceeded": "File exceeds size limit for your plan",
1503
- "mime_not_allowed": "File type not supported",
1504
- "quota_warn": "This note has over 10MB of media",
1505
- "quota_hard": "Media quota exceeded (100MB per note)",
1506
- "quota_title": "Media Usage",
1507
- "paste_title": "Paste Media"
1539
+ "size_limit_exceeded": "O arquivo excede o limite de tamanho do seu plano",
1540
+ "mime_not_allowed": "Tipo de arquivo não suportado",
1541
+ "quota_warn": "Esta nota tem mais de 10 MB de mídia",
1542
+ "quota_hard": "Cota de mídia excedida (100 MB por nota)",
1543
+ "quota_title": "Uso de mídia",
1544
+ "paste_title": "Colar mídia"
1508
1545
  },
1509
1546
  "memory": {
1510
- "__mt": true,
1511
- "title": "Long-Term Memory",
1512
- "upgrade_required": "Long-term memory requires Personal plan or above.",
1513
- "health_title": "Memory Health",
1514
- "settings_title": "Memory Settings",
1547
+ "title": "Memória de longo prazo",
1548
+ "upgrade_required": "A memória de longo prazo requer plano pessoal ou superior.",
1549
+ "health_title": "Saúde da memória",
1550
+ "settings_title": "Configurações de memória",
1515
1551
  "half_life_label": "Memory half-life",
1516
1552
  "half_life_never": "Never (no decay)",
1517
- "days": "days",
1518
- "export_import": "Export / Import",
1519
- "memories_title": "Memories",
1520
- "search_placeholder": "Search memories...",
1553
+ "days": "dias",
1554
+ "export_import": "Exportar/Importar",
1555
+ "memories_title": "Memórias",
1556
+ "search_placeholder": "Pesquisar memórias...",
1521
1557
  "filter_all": "All types",
1522
- "kind_preference": "Preference",
1523
- "kind_project": "Project",
1524
- "kind_fact": "Fact",
1558
+ "kind_preference": "Preferência",
1559
+ "kind_project": "Projeto",
1560
+ "kind_fact": "Fato",
1525
1561
  "no_memories": "No memories yet. Use /memorize in chat to add one.",
1526
- "edit": "Edit",
1527
- "delete": "Delete",
1528
- "enable": "Enable",
1529
- "disable": "Disable",
1530
- "save": "Save",
1531
- "cancel": "Cancel",
1532
- "weight": "Weight",
1533
- "danger_zone": "Danger Zone",
1534
- "reset_all": "Reset all memories",
1535
- "reset_confirm_instruction": "Type RESET to confirm deleting all memories. This cannot be undone.",
1536
- "confirm_reset": "Delete all memories",
1537
- "export_title": "Export Memories",
1538
- "export_hint": "Download all your memories as a JSON file for backup or migration.",
1539
- "export_btn": "Export memories",
1540
- "export_invalid_format": "Invalid memory export format.",
1541
- "import_title": "Import Memories",
1542
- "import_hint": "Import memories from a previously exported JSON file.",
1543
- "choose_file": "Choose file (.json)",
1544
- "import_placeholder": "Or paste JSON here...",
1545
- "import_btn": "Import",
1546
- "import_success": "Memories imported successfully.",
1547
- "memorize_ack": "Memory saved.",
1548
- "forget_ack": "Memory forgotten.",
1549
- "forget_not_found": "No matching memories found.",
1550
- "private_mode_on": "Private mode onthis conversation will not be extracted.",
1551
- "extract_queued": "{n} memory/memories pending your review.",
1552
- "conflict_detected": "Conflict detected with existing memory.",
1553
- "upgrade_memory": "Upgrade to Personal to unlock long-term memory."
1562
+ "edit": "Editar",
1563
+ "delete": "Excluir",
1564
+ "enable": "Habilitar",
1565
+ "disable": "Desativar",
1566
+ "save": "Salvar",
1567
+ "cancel": "Cancelar",
1568
+ "weight": "Peso",
1569
+ "danger_zone": "Zona de perigo",
1570
+ "reset_all": "Redefinir todas as memórias",
1571
+ "reset_confirm_instruction": "Digite RESET para confirmar a exclusão de todas as memórias. Isto não pode ser desfeito.",
1572
+ "confirm_reset": "Exclua todas as memórias",
1573
+ "export_title": "Exportar memórias",
1574
+ "export_hint": "Baixe todas as suas memórias como um arquivo JSON para backup ou migração.",
1575
+ "export_btn": "Exportar memórias",
1576
+ "export_invalid_format": "Formato de exportação de memória inválido.",
1577
+ "import_title": "Importar memórias",
1578
+ "import_hint": "Importe memórias de um arquivo JSON exportado anteriormente.",
1579
+ "choose_file": "Escolha o arquivo (.json)",
1580
+ "import_placeholder": "Ou cole JSON aqui...",
1581
+ "import_btn": "Importar",
1582
+ "import_success": "Memórias importadas com sucesso.",
1583
+ "memorize_ack": "Memória salva.",
1584
+ "forget_ack": "Memória esquecida.",
1585
+ "forget_not_found": "Nenhuma memória correspondente encontrada.",
1586
+ "private_mode_on": "Modo privado ativadoesta conversa não será extraída.",
1587
+ "extract_queued": "{n} memória/memórias pendentes de revisão.",
1588
+ "conflict_detected": "Conflito detectado com memória existente.",
1589
+ "upgrade_memory": "Atualize para Pessoal para desbloquear a memória de longo prazo."
1554
1590
  },
1555
1591
  "menu": {
1556
1592
  "file": "Arquivo",
@@ -1623,362 +1659,371 @@
1623
1659
  "empty": "Diagrama vazio"
1624
1660
  },
1625
1661
  "mfa": {
1626
- "__mt": true,
1627
- "title": "Multi-Factor Authentication",
1628
- "description": "Configure MFA requirements for team members.",
1629
- "policy": "MFA Policy",
1630
- "allowed_types": "Allowed MFA Methods",
1631
- "grace_period": "Grace Period",
1632
- "grace_period_hint": "Hours new members have to enroll in MFA after joining.",
1633
- "hours": "hours",
1634
- "required_banner": "MFA is required. All members must enroll before accessing team resources.",
1635
- "save": "Save MFA Settings",
1636
- "saved_success": "MFA settings saved."
1662
+ "title": "Autenticação multifator",
1663
+ "description": "Configure os requisitos de MFA para membros da equipe.",
1664
+ "policy": "Política de AMF",
1665
+ "allowed_types": "Métodos MFA permitidos",
1666
+ "grace_period": "Período de carência",
1667
+ "grace_period_hint": "Horas que os novos membros devem se inscrever no MFA após ingressar.",
1668
+ "hours": "horas",
1669
+ "required_banner": "AMF é necessária. Todos os membros devem se inscrever antes de acessar os recursos da equipe.",
1670
+ "save": "Salvar configurações de MFA",
1671
+ "saved_success": "Configurações de MFA salvas."
1637
1672
  },
1638
1673
  "migration": {
1639
- "__mt": true,
1640
1674
  "title": "KB Migration",
1641
- "subtitle": "Move your knowledge base to a different storage provider",
1642
- "new_migration": "New Migration",
1643
- "wizard_title": "New Migration Wizard",
1644
- "kb_id": "KB ID",
1675
+ "subtitle": "Mova sua base de conhecimento para um provedor de armazenamento diferente",
1676
+ "new_migration": "Nova Migração",
1677
+ "wizard_title": "Novo assistente de migração",
1678
+ "kb_id": "ID da base de conhecimento",
1645
1679
  "kb_name": "KB Name",
1646
- "provider": "Provider",
1647
- "bucket": "Bucket",
1648
- "prefix": "Prefix",
1649
- "source": "Source",
1650
- "target": "Target",
1651
- "encryption_mode": "Encryption Mode",
1652
- "dry_run_label": "Dry run (simulate only, no files copied)",
1653
- "dry_run_badge": "Dry Run",
1654
- "dry_run_start": "Start Dry Run",
1655
- "start_migration": "Start Migration",
1656
- "cancel": "Cancel",
1657
- "files": "files",
1658
- "errors": "Errors",
1659
- "started": "Started",
1660
- "rollback_deadline": "Rollback deadline",
1661
- "rollback": "Rollback",
1662
- "download_log": "Download Log",
1663
- "history_title": "Migration History",
1664
- "history_empty": "No migrations yet",
1665
- "loading": "Loading...",
1666
- "confirm_delete": "Delete this migration session?"
1680
+ "provider": "Provedor",
1681
+ "bucket": "Balde",
1682
+ "prefix": "Prefixo",
1683
+ "source": "Fonte",
1684
+ "target": "Alvo",
1685
+ "encryption_mode": "Modo de criptografia",
1686
+ "dry_run_label": "Teste (somente simulação, nenhum arquivo copiado)",
1687
+ "dry_run_badge": "Teste a seco",
1688
+ "dry_run_start": "Iniciar simulação",
1689
+ "start_migration": "Iniciar migração",
1690
+ "cancel": "Cancelar",
1691
+ "files": "arquivos",
1692
+ "errors": "Erros",
1693
+ "started": "Iniciado",
1694
+ "rollback_deadline": "Prazo de reversão",
1695
+ "rollback": "Reverter",
1696
+ "download_log": "Baixar registro",
1697
+ "history_title": "Histórico de Migração",
1698
+ "history_empty": "Ainda não há migrações",
1699
+ "loading": "Carregando...",
1700
+ "confirm_delete": "Excluir esta sessão de migração?"
1667
1701
  },
1668
1702
  "mobile": {
1669
- "__mt": true,
1670
1703
  "tab": {
1671
- "nav_label": "Primary navigation",
1672
- "edit": "Edit",
1673
- "ai": "AI",
1674
- "files": "Knowledge Base",
1675
- "settings": "Settings"
1704
+ "nav_label": "Navegação primária",
1705
+ "edit": "Editar",
1706
+ "ai": "IA",
1707
+ "files": "Base de conhecimento",
1708
+ "settings": "Configurações"
1676
1709
  },
1677
1710
  "appbar": {
1678
- "menu": "Open sidebar",
1679
- "more": "More actions",
1680
- "toggle_ai_pane": "Toggle AI pane",
1681
- "untitled": "Untitled"
1711
+ "menu": "Abrir barra lateral",
1712
+ "more": "Mais ações",
1713
+ "toggle_ai_pane": "Alternar painel AI",
1714
+ "untitled": "Sem título"
1682
1715
  },
1683
1716
  "overflow": {
1684
- "mode_label": "Mode",
1717
+ "mode_label": "Modo",
1685
1718
  "mode_visual": "Visual",
1686
- "mode_source": "Source",
1687
- "search": "Find & Replace",
1688
- "outline": "Outline",
1689
- "export": "Export",
1690
- "share": "Share"
1719
+ "mode_source": "Fonte",
1720
+ "search": "Localizar e substituir",
1721
+ "outline": "Contorno",
1722
+ "export": "Exportar",
1723
+ "share": "Compartilhar"
1691
1724
  },
1692
1725
  "format": {
1693
- "bold": "Bold",
1694
- "italic": "Italic",
1695
- "heading": "Heading",
1696
- "list": "List",
1697
- "code": "Code",
1726
+ "bold": "Audacioso",
1727
+ "italic": "itálico",
1728
+ "heading": "Cabeçalho",
1729
+ "list": "Lista",
1730
+ "code": "Código",
1698
1731
  "link": "Link",
1699
- "link_prompt": "Enter URL",
1700
- "image": "Image"
1732
+ "link_prompt": "Insira o URL",
1733
+ "image": "Imagem"
1701
1734
  },
1702
1735
  "ai": {
1703
- "title": "AI",
1704
- "placeholder": "Ask anything or describe what you want to write…",
1705
- "send": "Send",
1706
- "voice": "Voice",
1707
- "model": "Model",
1708
- "empty_state": "Your AI conversations will appear here.",
1709
- "thinking": "Thinking…",
1710
- "clear": "Clear conversation",
1711
- "clear_confirm": "Clear all messages?",
1712
- "stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
1713
- "not_configured_title": "AI is not configured yet",
1714
- "not_configured_text": "Add an API key or pick a local model in Settings AI to start chatting.",
1715
- "not_configured": "AI is not configured. Open Settings to set up an AI model?",
1716
- "configure_now": "Set up",
1717
- "stop": "Stop",
1718
- "error_prefix": "Error",
1719
- "pick_model": "Switch AI model",
1720
- "no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
1721
- "conversations": "Conversations",
1722
- "new_chat": "New chat",
1723
- "no_conversations": "No conversations yet. Tap “New chat” to start.",
1724
- "no_matches": "No conversations match your search.",
1725
- "search_placeholder": "Search conversations…",
1726
- "attach_image": "Attach image",
1727
- "remove_attachment": "Remove attachment",
1728
- "attached_image": "Attached image",
1729
- "compressing": "Compressing…",
1730
- "copy": "Copy",
1731
- "sync_syncing": "Syncing with Picora…",
1732
- "sync_idle": "Synced with Picora",
1733
- "sync_offline": "Offline (will retry)",
1734
- "sync_error": "Sync error — check connection",
1735
- "sync_disabled": "Sync disabled",
1736
- "mention_title": "Mention a note",
1736
+ "title": "IA",
1737
+ "placeholder": "Pergunte qualquer coisa ou descreva o que você deseja escrever…",
1738
+ "send": "Enviar",
1739
+ "voice": "Voz",
1740
+ "model": "Modelo",
1741
+ "empty_state": "Suas conversas de IA aparecerão aqui.",
1742
+ "thinking": "Pensamento…",
1743
+ "clear": "Limpar conversa",
1744
+ "clear_confirm": "Limpar todas as mensagens?",
1745
+ "cleared": "Conversa apagada",
1746
+ "clear_undone": "Mensagens restauradas",
1747
+ "stub_response": "Oi! Sou uma resposta de espaço reservado. O verdadeiro provedor de IA será conectado na v0.68.",
1748
+ "not_configured_title": "A IA ainda não está configurada",
1749
+ "not_configured_text": "Adicione uma chave de API ou escolha um modelo local em Configurações → IA para começar a conversar.",
1750
+ "not_configured": "A IA não está configurada. Abrir Configurações para configurar um modelo de IA?",
1751
+ "configure_now": "Configurar",
1752
+ "stop": "Parar",
1753
+ "error_prefix": "Erro",
1754
+ "pick_model": "Mudar modelo de IA",
1755
+ "no_providers": "Nenhum provedor de IA configurado ainda. Toque em “Configurar” para adicionar um.",
1756
+ "conversations": "Conversas",
1757
+ "new_chat": "Novo bate-papo",
1758
+ "no_conversations": "Nenhuma conversa ainda. Toque em “Novo bate-papo” para começar.",
1759
+ "no_matches": "Nenhuma conversa corresponde à sua pesquisa.",
1760
+ "search_placeholder": "Pesquisar conversas…",
1761
+ "attach_image": "Anexar imagem",
1762
+ "remove_attachment": "Remover anexo",
1763
+ "attached_image": "Imagem anexada",
1764
+ "compressing": "Comprimindo…",
1765
+ "copy": "Cópia",
1766
+ "sync_syncing": "Sincronizando com Picora…",
1767
+ "sync_idle": "Sincronizado com Picora",
1768
+ "sync_offline": "Off-line (tentarei novamente)",
1769
+ "sync_error": "Erro de sincronização – verifique a conexão",
1770
+ "sync_disabled": "Sincronização desativada",
1771
+ "mention_title": "Mencione uma nota",
1737
1772
  "mention_search": "Search your notes…",
1738
- "no_notes": "No notes yet open one from the Files tab.",
1773
+ "no_notes": "Nenhuma nota ainda abra uma na guia Arquivos.",
1739
1774
  "insert_action": "Insert",
1740
1775
  "insert_title": "Insert into note",
1741
- "insert_append": "Append to current note",
1742
- "insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
1743
- "insert_new": "Create new note",
1744
- "insert_new_sub": "Make a new doc from this AI reply and open it.",
1745
- "insert_no_active": "No document is open in the Edit tab.",
1746
- "insert_failed": "Could not write the note check storage permissions.",
1747
- "insert_append_ok": "Appended to current note.",
1748
- "insert_new_ok": "New note created.",
1749
- "export": "Export / Share",
1750
- "export_failed": "Could not export this conversation.",
1751
- "export_ok": "Conversation exported.",
1752
- "rag_used": "Referenced {n} past message(s)",
1753
- "rag_on_title": "History RAG enabled past conversations may be used as context",
1754
- "citations_title": "{n} reference(s)",
1755
- "citations_empty": "No citations attached to this message.",
1756
- "params_title": "Generation parameters",
1757
- "params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
1758
- "params_save": "Save",
1759
- "params_reset": "Reset to defaults",
1760
- "param_temperature": "Temperature",
1761
- "param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
1762
- "param_max_tokens": "Max output tokens",
1763
- "param_max_tokens_sub": "Hard cap on the model's reply length",
1764
- "param_top_p": "Top-P",
1765
- "param_top_p_sub": "Nucleus sampling threshold (0–1)",
1766
- "param_stop": "Stop sequences",
1767
- "param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
1768
- "param_stop_placeholder": "\\n\\n###, END",
1769
- "presets_label": "Presets",
1770
- "preset_save_as": "Save current as preset",
1771
- "preset_save_prompt": "Name this preset:",
1772
- "preset_delete_confirm": "Delete preset \"{name}\"?",
1773
- "preset_delete_aria": "Delete preset",
1774
- "preset_picker_title": "Pick a preset",
1775
- "preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
1776
- "preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
1777
- "preset_custom_label": "Custom",
1778
- "retry_title": "Retry this reply",
1779
- "retry_action": "Retry",
1780
- "retry_as_is": "Retry with current params",
1781
- "retry_with_preset": "Or try a different preset",
1782
- "retry_done": "Reply regenerating",
1783
- "retry_undone": "Original reply restored",
1784
- "undo": "Undo",
1776
+ "insert_append": "Anexar à nota atual",
1777
+ "insert_append_sub": "Adicione esta resposta de IA ao documento que você abriu na guia Editar.",
1778
+ "insert_new": "Criar nova nota",
1779
+ "insert_new_sub": "Faça um novo documento a partir desta resposta da IA ​​e abra-o.",
1780
+ "insert_no_active": "Nenhum documento está aberto na guia Editar.",
1781
+ "insert_failed": "Não foi possível escrever a nota. Verifique as permissões de armazenamento.",
1782
+ "insert_append_ok": "Anexado à nota atual.",
1783
+ "insert_new_ok": "Nova nota criada.",
1784
+ "export": "Exportar/Compartilhar",
1785
+ "export_failed": "Não foi possível exportar esta conversa.",
1786
+ "export_ok": "Conversa exportada.",
1787
+ "rag_used": "Mensagens anteriores {n} referenciadas",
1788
+ "rag_on_title": "Histórico RAG ativado conversas anteriores podem ser usadas como contexto",
1789
+ "citations_title": "{n} referência(s)",
1790
+ "citations_empty": "Nenhuma citação anexada a esta mensagem.",
1791
+ "params_title": "Parâmetros de geração",
1792
+ "params_hint": "Substitua as configurações de geração de IA apenas para esta conversa. Deixe em branco para usar o padrão do provedor.",
1793
+ "params_save": "Salvar",
1794
+ "params_reset": "Redefinir para os padrões",
1795
+ "param_temperature": "Temperatura",
1796
+ "param_temperature_sub": "0 = determinístico · 1 = equilibrado · 2 = criativo",
1797
+ "param_max_tokens": "Máximo de tokens de saída",
1798
+ "param_max_tokens_sub": "Limite rígido no comprimento da resposta do modelo",
1799
+ "param_top_p": "Topo-P",
1800
+ "param_top_p_sub": "Limite de amostragem de núcleo (0–1)",
1801
+ "param_stop": "Parar sequências",
1802
+ "param_stop_sub": "O modelo para quando está prestes a emitir qualquer um deles. Separados por vírgula; use \\n para nova linha.",
1803
+ "param_stop_placeholder": "\\n\\n###, FIM",
1804
+ "presets_label": "Predefinições",
1805
+ "preset_save_as": "Salvar atual como predefinido",
1806
+ "preset_save_prompt": "Nomeie esta predefinição:",
1807
+ "preset_delete_confirm": "Excluir predefinição \"{name}\"?",
1808
+ "preset_delete_aria": "Excluir predefinição",
1809
+ "preset_deleted": "Predefinição \"{name}\" excluída",
1810
+ "preset_restored": "Predefinição restaurada",
1811
+ "preset_picker_title": "Escolha uma predefinição",
1812
+ "preset_picker_hint": "Mude o tom desta conversa. Para ajuste fino, use a engrenagem ⚙.",
1813
+ "preset_picker_custom_note": "Atualmente usando valores personalizados — abra ⚙ para visualizá-los ou salvá-los como uma predefinição.",
1814
+ "preset_custom_label": "Personalizado",
1815
+ "retry_title": "Tente esta resposta novamente",
1816
+ "retry_action": "Tentar novamente",
1817
+ "retry_as_is": "Tente novamente com os parâmetros atuais",
1818
+ "retry_with_preset": "Ou tente uma predefinição diferente",
1819
+ "retry_done": "Resposta regenerando",
1820
+ "retry_undone": "Resposta original restaurada",
1821
+ "undo": "Desfazer",
1785
1822
  "presets": {
1786
1823
  "default": {
1787
1824
  "label": "Default"
1788
1825
  },
1789
1826
  "precise": {
1790
- "label": "Precise"
1827
+ "label": "Preciso"
1791
1828
  },
1792
1829
  "balanced": {
1793
- "label": "Balanced"
1830
+ "label": "Equilibrado"
1794
1831
  },
1795
1832
  "creative": {
1796
- "label": "Creative"
1833
+ "label": "Criativo"
1797
1834
  }
1798
1835
  },
1799
- "default": "Default",
1800
- "quick_actions_header": "Start with",
1801
- "workflows_header": "Workflows",
1802
- "wf_steps": "steps",
1836
+ "default": "Padrão",
1837
+ "quick_actions_header": "Comece com",
1838
+ "workflows_header": "Fluxos de trabalho",
1839
+ "wf_steps": "passos",
1803
1840
  "wf": {
1804
1841
  "summarize-then-translate": {
1805
- "name": "SummarizeTranslate",
1806
- "desc": "TL;DR the input, then translate the summary."
1842
+ "name": "ResumirTraduzir",
1843
+ "desc": "DR a entrada e, em seguida, traduza o resumo."
1807
1844
  },
1808
1845
  "translate-then-polish": {
1809
- "name": "TranslatePolish",
1810
- "desc": "Translate input, then smooth the translation."
1846
+ "name": "TraduzirPolonês",
1847
+ "desc": "Traduza a entrada e suavize a tradução."
1811
1848
  },
1812
1849
  "step": {
1813
- "summarize": "Summarizing",
1814
- "translate": "Translating",
1815
- "polish": "Polishing",
1816
- "tone": "Tone",
1817
- "length": "Length",
1818
- "article": "Writing article",
1819
- "cover": "Cover image",
1820
- "target_lang": "Target language",
1821
- "dictate": "Dictation",
1822
- "structurize": "Structuring"
1850
+ "summarize": "Resumindo",
1851
+ "translate": "Traduzindo",
1852
+ "polish": "Polimento",
1853
+ "tone": "Tom",
1854
+ "length": "Comprimento",
1855
+ "article": "Escrevendo artigo",
1856
+ "cover": "Imagem da capa",
1857
+ "target_lang": "Idioma alvo",
1858
+ "dictate": "Ditado",
1859
+ "structurize": "Estruturação"
1823
1860
  },
1824
1861
  "write-article": {
1825
- "name": "Write article + cover",
1826
- "desc": "Topictone/lengtharticle → AI cover",
1827
- "ask_tone": "What tone should the article take?",
1828
- "ask_length": "How long should it be?",
1829
- "cover_hint": "Generating a cover image…"
1862
+ "name": "Escrever artigo + capa",
1863
+ "desc": "Tópicotom/duraçãoartigocapa AI",
1864
+ "ask_tone": "Que tom o artigo deve ter?",
1865
+ "ask_length": "Quanto tempo deveria durar?",
1866
+ "cover_hint": "Gerando uma imagem de capa…"
1830
1867
  },
1831
1868
  "translate": {
1832
- "name": "Translate",
1833
- "desc": "Translate text into a target language",
1834
- "ask_lang": "Translate into which language?"
1869
+ "name": "Traduzir",
1870
+ "desc": "Traduzir texto para um idioma de destino",
1871
+ "ask_lang": "Traduzir para qual idioma?"
1835
1872
  },
1836
1873
  "voice-transcribe": {
1837
- "name": "Voicenote",
1838
- "desc": "Dictate, then structure into a note",
1839
- "hint": "Tap done when you finish speaking."
1874
+ "name": "Voznota",
1875
+ "desc": "Dite e depois estruture em uma nota",
1876
+ "hint": "Toque em concluído quando terminar de falar."
1840
1877
  },
1841
1878
  "tone": {
1842
- "general": "General",
1879
+ "general": "Em geral",
1843
1880
  "marketing": "Marketing",
1844
- "technical": "Technical",
1845
- "story": "Story"
1881
+ "technical": "Técnico",
1882
+ "story": "História"
1846
1883
  },
1847
1884
  "length": {
1848
- "short": "Short (~500)",
1849
- "medium": "Medium (~1500)",
1885
+ "short": "Curto (~500)",
1886
+ "medium": "Médio (~1500)",
1850
1887
  "long": "Long (~3000)"
1851
1888
  },
1852
1889
  "lang": {
1853
1890
  "en": "English",
1854
- "zh": "Chinese",
1855
- "ja": "Japanese",
1856
- "ko": "Korean"
1891
+ "zh": "chinês",
1892
+ "ja": "japonês",
1893
+ "ko": "coreano"
1857
1894
  },
1858
- "cancel": "Cancel",
1859
- "listening": "Listening…",
1860
- "stt_done": "Done",
1861
- "generating_cover": "Generating cover…",
1862
- "cover_failed": "Cover generation failed",
1863
- "skip_cover": "Skip cover",
1864
- "regenerate": "Regenerate",
1865
- "insert_with_cover": "Insert article + cover",
1866
- "no_image_provider": "No image provider set one up in SettingsImage generation."
1895
+ "cancel": "Cancelar",
1896
+ "listening": "Audição…",
1897
+ "stt_done": "Feito",
1898
+ "generating_cover": "Gerando cobertura…",
1899
+ "cover_failed": "Falha na geração da capa",
1900
+ "skip_cover": "Pular capa",
1901
+ "regenerate": "Regenerado",
1902
+ "insert_with_cover": "Inserir artigo + capa",
1903
+ "no_image_provider": "Nenhum provedor de imagem configure um em ConfiguraçõesGeração de imagem."
1867
1904
  },
1868
1905
  "tpl": {
1869
1906
  "screenshot-to-md": {
1870
- "name": "ImageMarkdown",
1871
- "desc": "Convert a screenshot, photo, or chart to clean Markdown.",
1872
- "input": "Add a caption or leave empty the model uses your image."
1907
+ "name": "ImagemRemarcação",
1908
+ "desc": "Converta uma captura de tela, foto ou gráfico para limpar o Markdown.",
1909
+ "input": "Adicione uma legenda ou deixe em branco o modelo usa sua imagem."
1873
1910
  },
1874
1911
  "summarize-current": {
1875
- "name": "Summarize note",
1876
- "desc": "TL;DR + key terms of the doc open in the Edit tab.",
1877
- "input": "Optional focus: “key claims only”, “as bullet list”…"
1912
+ "name": "Resumir nota",
1913
+ "desc": "TL;DR + termos-chave do documento abertos na guia Editar.",
1914
+ "input": "Foco opcional: “somente reivindicações principais”, “como lista com marcadores”…"
1878
1915
  },
1879
1916
  "continue-writing": {
1880
- "name": "Continue writing",
1881
- "desc": "Pick up where you left off in the current doc.",
1882
- "input": "Optional steering: tone, length, next section…"
1917
+ "name": "Continuar escrevendo",
1918
+ "desc": "Continue de onde parou no documento atual.",
1919
+ "input": "Direção opcional: tom, comprimento, próxima seção…"
1883
1920
  },
1884
1921
  "translate-zh-en": {
1885
- "name": "Translate ZH ↔ EN",
1886
- "desc": "Auto-detects source language. Preserves Markdown.",
1887
- "input": "Paste the text to translate."
1922
+ "name": "Traduzir ZH ↔ EN",
1923
+ "desc": "Detecta automaticamente o idioma de origem. Preserva Markdown.",
1924
+ "input": "Cole o texto para traduzir."
1888
1925
  }
1889
1926
  },
1890
- "rename": "Rename",
1891
- "rename_prompt": "New title",
1892
- "delete_confirm": "Delete “{title}”? This cannot be undone.",
1893
- "conv_deleted": "Deleted “{title}”",
1894
- "conv_restored": "Conversation restored",
1895
- "usage_tooltip": "Prompt tokens Completion tokens ↓",
1896
- "budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
1897
- "budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
1898
- "bulk_import": "Import all",
1927
+ "rename": "Renomear",
1928
+ "rename_prompt": "Novo título",
1929
+ "delete_confirm": "Excluir “{title}”? Isto não pode ser desfeito.",
1930
+ "conv_deleted": "Excluído “{title}”",
1931
+ "conv_restored": "Conversa restaurada",
1932
+ "usage_tooltip": "Tokens de prompt Tokens de conclusão ↓",
1933
+ "budget_warn_confirm": "Você está se aproximando do seu orçamento mensal de IA. Enviar mesmo assim?",
1934
+ "budget_over_confirm": "Você superou seu orçamento mensal de IA. Enviar mesmo assim?",
1935
+ "bulk_import": "Importar tudo",
1899
1936
  "bulk_export": "Export all",
1900
- "import_ok": "Imported {n} conversation(s).",
1901
- "import_empty": "No conversations in that file.",
1902
- "import_failed": "Import failed: {err}",
1903
- "compose": "Compose article",
1937
+ "import_ok": "Conversa(s) {n} importadas.",
1938
+ "import_empty": "Nenhuma conversa nesse arquivo.",
1939
+ "import_failed": "Falha na importação: {err}",
1940
+ "compose": "Compor artigo",
1904
1941
  "commands_title": "Commands",
1905
- "more_actions": "More actions",
1906
- "commands_empty": "No matching commands.",
1907
- "voice_dictate": "Voice input",
1908
- "voice_stop": "Stop",
1909
- "voice_read_aloud": "Read aloud",
1910
- "voice_local_badge": "On-device",
1911
- "voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
1912
- "voice_start_failed": "Could not start voice input.",
1913
- "voice_speak_failed": "Could not read this message aloud."
1942
+ "more_actions": "Mais ações",
1943
+ "commands_empty": "Nenhum comando correspondente.",
1944
+ "voice_dictate": "Entrada de voz",
1945
+ "voice_stop": "Parar",
1946
+ "voice_read_aloud": "Ler em voz alta",
1947
+ "voice_local_badge": "No dispositivo",
1948
+ "voice_permission_denied": "Permissão de microfone ou fala negada. Ative-o em Configurações para usar a voz.",
1949
+ "voice_start_failed": "Não foi possível iniciar a entrada de voz.",
1950
+ "voice_speak_failed": "Não foi possível ler esta mensagem em voz alta.",
1951
+ "delete": "Excluir"
1914
1952
  },
1915
1953
  "files": {
1916
1954
  "title": "Knowledge Base",
1917
1955
  "kb": "Knowledge Bases",
1918
- "tree": "All Notes",
1919
- "recent": "Recent",
1920
- "favorites": "Favorites",
1921
- "open_local": "Open from device",
1922
- "open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
1923
- "new": "New document",
1924
- "no_recent": "No recently opened documents.",
1925
- "no_favorites": "No favorites yet. Star a document from the editor to add it here.",
1926
- "empty": "No notes yet. TapNew documentorOpen from deviceto start.",
1927
- "loading": "Loading…",
1928
- "new_kb": "New knowledge base",
1956
+ "tree": "Todas as notas",
1957
+ "recent": "Recente",
1958
+ "favorites": "Favoritos",
1959
+ "open_local": "Abrir no dispositivo",
1960
+ "open_local_failed": "Não foi possível abrir este arquivo. Certifique-se de que seja um arquivo de texto ou Markdown.",
1961
+ "new": "Novo documento",
1962
+ "no_recent": "Nenhum documento aberto recentemente.",
1963
+ "no_favorites": "Ainda não há favoritos. Marque um documento do editor com estrela para adicioná-lo aqui.",
1964
+ "empty": "Ainda não há notas. Toque em Novo documentoouAbrir no dispositivopara começar.",
1965
+ "loading": "Carregando…",
1966
+ "new_kb": "Nova base de conhecimento",
1929
1967
  "kb_name_placeholder": "Knowledge base name",
1930
- "create": "Create",
1931
- "cancel": "Cancel",
1968
+ "create": "Criar",
1969
+ "cancel": "Cancelar",
1932
1970
  "kb_create_failed": "Could not create the knowledge base."
1933
1971
  },
1934
1972
  "media": {
1935
- "title": "Cloud images",
1973
+ "title": "Imagens de nuvem",
1936
1974
  "search": "Search images",
1937
- "loading": "Loading…",
1938
- "empty": "No cloud images yet.",
1939
- "insert": "Insert cloud image"
1975
+ "loading": "Carregando…",
1976
+ "empty": "Ainda não imagens de nuvem.",
1977
+ "insert": "Inserir imagem da nuvem"
1940
1978
  }
1941
1979
  },
1942
1980
  "notifications": {
1943
- "__mt": true,
1944
- "title": "Push Notifications",
1945
- "subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
1946
- "unsupported": "This browser does not support push notifications.",
1947
- "permission_status": "Permission",
1948
- "permission_denied": "Notification permission denied.",
1949
- "denied_hint": "Open your browser settings to re-enable notifications.",
1950
- "enable": "Enable",
1951
- "disable": "Disable",
1952
- "no_token": "Failed to obtain a device token.",
1953
- "device_registered": "This device is registered:",
1954
- "registered_devices": "Registered devices",
1955
- "no_devices": "No devices registered yet.",
1956
- "revoke": "Revoke",
1957
- "revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
1981
+ "title": "Notificações push",
1982
+ "subtitle": "Receba alertas quando suas tarefas de IA terminarem ou quando colaboradores @ você.",
1983
+ "unsupported": "Este navegador não suporta notificações push.",
1984
+ "permission_status": "Permissão",
1985
+ "permission_denied": "Permissão de notificação negada.",
1986
+ "denied_hint": "Abra as configurações do seu navegador para reativar as notificações.",
1987
+ "enable": "Habilitar",
1988
+ "disable": "Desativar",
1989
+ "no_token": "Falha ao obter um token de dispositivo.",
1990
+ "device_registered": "Este dispositivo está registrado:",
1991
+ "registered_devices": "Dispositivos registrados",
1992
+ "no_devices": "Nenhum dispositivo cadastrado ainda.",
1993
+ "revoke": "Revogar",
1994
+ "revoke_confirm": "Revogar este dispositivo? Ele irá parar de receber notificações push imediatamente.",
1958
1995
  "platform": {
1959
- "web": "Web",
1996
+ "web": "Rede",
1960
1997
  "ios": "iOS",
1961
1998
  "android": "Android",
1962
- "desktop": "Desktop",
1999
+ "desktop": "Área de trabalho",
1963
2000
  "unknown": "Unknown"
1964
2001
  },
1965
- "registered_at": "Registered {date}",
1966
- "last_seen": "Last seen {date}",
1967
- "error_register": "Could not register this device.",
1968
- "error_list": "Could not load device list."
2002
+ "registered_at": "Registrado {date}",
2003
+ "last_seen": "Visto pela última vez {date}",
2004
+ "error_register": "Não foi possível registrar este dispositivo.",
2005
+ "error_list": "Não foi possível carregar a lista de dispositivos.",
2006
+ "recent": "Notificações recentes"
2007
+ },
2008
+ "ocr": {
2009
+ "capture_button": "Capture e extraia texto",
2010
+ "capture_short": "Capturar",
2011
+ "recognizing": "Reconhecendo texto…",
2012
+ "empty_result": "Nenhum texto detectado",
2013
+ "failed": "Falha no OCR",
2014
+ "engine_unavailable": "OCR não disponível neste dispositivo"
1969
2015
  },
1970
2016
  "offline": {
1971
- "__mt": true,
1972
- "cache_enabled": "Offline cache enabled",
1973
- "cache_disabled": "Offline cache disabled",
1974
- "cache_size": "{size} cached",
1975
- "cache_note_count": "{count} notes cached",
1976
- "cache_expired": "Cache expired",
1977
- "note_cached": "Note cached for offline",
2017
+ "cache_enabled": "Cache off-line ativado",
2018
+ "cache_disabled": "Cache off-line desativado",
2019
+ "cache_size": "{size} em cache",
2020
+ "cache_note_count": "{count} notas armazenadas em cache",
2021
+ "cache_expired": "Cache expirou",
2022
+ "note_cached": "Nota armazenada em cache para off-line",
1978
2023
  "note_evicted": "Note evicted from cache",
1979
- "offline_banner": "You are offline. Showing cached content.",
1980
- "cache_settings": "Offline Cache Settings",
1981
- "max_notes": "Max cached notes"
2024
+ "offline_banner": "Você está off-line. Mostrando conteúdo em cache.",
2025
+ "cache_settings": "Configurações de cache off-line",
2026
+ "max_notes": "Máximo de notas em cache"
1982
2027
  },
1983
2028
  "outline": {
1984
2029
  "empty": "No headings found",
@@ -1987,27 +2032,25 @@
1987
2032
  "collapse": "Collapse"
1988
2033
  },
1989
2034
  "perf": {
1990
- "__mt": true,
1991
- "memory_warning": "High memory usage detected ({percent}%)",
1992
- "memory_critical": "Critical memory usage ({percent}%)",
1993
- "memory_trend_growing": "Memory growing",
1994
- "memory_trend_stable": "Memory stable",
1995
- "memory_trend_shrinking": "Memory shrinking",
1996
- "vitals_score": "Performance score: {score}",
1997
- "vitals_good": "Good",
1998
- "vitals_needs_improvement": "Needs improvement",
1999
- "vitals_poor": "Poor"
2035
+ "memory_warning": "Alto uso de memória detectado ({percent}%)",
2036
+ "memory_critical": "Uso crítico de memória ({percent}%)",
2037
+ "memory_trend_growing": "Memória crescendo",
2038
+ "memory_trend_stable": "Memória estável",
2039
+ "memory_trend_shrinking": "Encolhimento de memória",
2040
+ "vitals_score": "Pontuação de desempenho: {score}",
2041
+ "vitals_good": "Bom",
2042
+ "vitals_needs_improvement": "Precisa de melhorias",
2043
+ "vitals_poor": "Pobre"
2000
2044
  },
2001
2045
  "permissions": {
2002
- "__mt": true,
2003
- "paste_title": "Allow Clipboard Access?",
2004
- "paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
2005
- "allow_once": "Allow Once",
2006
- "allow_always": "Always Allow",
2007
- "deny": "Deny",
2008
- "granted": "Clipboard access granted",
2009
- "denied": "Clipboard access denied",
2010
- "revoke": "Revoke Permission"
2046
+ "paste_title": "Permitir acesso à área de transferência?",
2047
+ "paste_desc": "Moraya deseja ler dados de imagem da sua área de transferência. Isso é usado apenas quando você cola uma imagem.",
2048
+ "allow_once": "Permitir uma vez",
2049
+ "allow_always": "Sempre permitir",
2050
+ "deny": "Negar",
2051
+ "granted": "Acesso à área de transferência concedido",
2052
+ "denied": "Acesso à área de transferência negado",
2053
+ "revoke": "Revogar permissão"
2011
2054
  },
2012
2055
  "plugin_action": {
2013
2056
  "title": "Executar plugin",
@@ -2152,43 +2195,40 @@
2152
2195
  "seo_no_provider": "Nenhum provedor de IA configurado. Configure um provedor de IA nas Configurações."
2153
2196
  },
2154
2197
  "pwa": {
2155
- "__mt": true,
2156
- "install_prompt": "Install Moraya Web for a better experience.",
2157
- "install": "Install",
2158
- "dismiss": "Not now",
2159
- "update_available": "A new version is available.",
2160
- "refresh": "Refresh"
2198
+ "install_prompt": "Instale Moraya Web para uma melhor experiência.",
2199
+ "install": "Instalar",
2200
+ "dismiss": "Agora não",
2201
+ "update_available": "Uma nova versão está disponível.",
2202
+ "refresh": "Atualizar"
2161
2203
  },
2162
2204
  "quickopen": {
2163
- "__mt": true,
2164
- "title": "Quick Open",
2165
- "placeholder": "Search notes...",
2166
- "no_results": "No notes found",
2167
- "hint_enter": " Open",
2168
- "hint_cmd_enter": "⌘↵ Open in new tab"
2205
+ "title": "Abertura rápida",
2206
+ "placeholder": "Pesquisar notas...",
2207
+ "no_results": "Nenhuma nota encontrada",
2208
+ "hint_enter": " Abrir",
2209
+ "hint_cmd_enter": "⌘↵ Abrir em uma nova aba"
2169
2210
  },
2170
2211
  "rag": {
2171
- "__mt": true,
2172
- "title": "AI Knowledge Search (RAG)",
2173
- "mode_label": "Search Mode",
2174
- "mode_disabled": "Disabled",
2175
- "mode_client": "Client-side (E2E compatible)",
2176
- "mode_server": "Server-side (faster, KMS required)",
2177
- "index_status": "Index Status",
2178
- "indexed_notes": "Indexed notes",
2179
- "rebuild_index": "Rebuild Full Index",
2180
- "pause_rebuild": "Pause",
2181
- "rebuilding": "Rebuilding index...",
2182
- "search_settings": "Search Settings",
2183
- "top_k_label": "Results (top-K)",
2184
- "threshold_label": "Min. similarity",
2185
- "sources_label": "Sources",
2186
- "sources_count": "{n} note excerpts",
2187
- "jump_to_source": "Jump to note →",
2212
+ "title": "Pesquisa de conhecimento de IA (RAG)",
2213
+ "mode_label": "Modo de pesquisa",
2214
+ "mode_disabled": "Desabilitado",
2215
+ "mode_client": "Lado do cliente (compatível com E2E)",
2216
+ "mode_server": "Lado do servidor (mais rápido, requer KMS)",
2217
+ "index_status": "Status do índice",
2218
+ "indexed_notes": "Notas indexadas",
2219
+ "rebuild_index": "Reconstruir índice completo",
2220
+ "pause_rebuild": "Pausa",
2221
+ "rebuilding": "Reconstruindo índice...",
2222
+ "search_settings": "Configurações de pesquisa",
2223
+ "top_k_label": "Resultados (top-K)",
2224
+ "threshold_label": "Min. semelhança",
2225
+ "sources_label": "Fontes",
2226
+ "sources_count": "{n} trechos de notas",
2227
+ "jump_to_source": "Ir para a nota →",
2188
2228
  "no_sources": "No sources",
2189
- "server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
2190
- "model_version": "Model version",
2191
- "upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
2229
+ "server_mode_warning": "O modo servidor permite que Moraya descriptografe temporariamente suas notas para indexação. Requer Cloud KMS.",
2230
+ "model_version": "Versão do modelo",
2231
+ "upgrade_for_cross_kb": "Atualize para Pessoal para pesquisar em todas as suas bases de conhecimento."
2192
2232
  },
2193
2233
  "review": {
2194
2234
  "panel_title": "Revisões",
@@ -2278,64 +2318,73 @@
2278
2318
  "invalid_regex": "Invalid regular expression"
2279
2319
  },
2280
2320
  "security": {
2281
- "__mt": true,
2282
- "title": "Security",
2283
- "encryption_mode_label": "Encryption Mode",
2284
- "mode_none": "None",
2285
- "mode_e2e": "E2E Client Encryption",
2286
- "mode_kms": "Cloud KMS",
2287
- "setup_title": "Set Up E2E Encryption",
2288
- "setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
2289
- "passphrase_label": "Passphrase",
2290
- "passphrase_confirm_label": "Confirm Passphrase",
2291
- "passphrase_strength_weak": "Too weak",
2292
- "passphrase_strength_fair": "Fair",
2293
- "passphrase_strength_strong": "Strong",
2294
- "passphrase_strength_very_strong": "Very strong",
2295
- "passphrase_min_length": "Minimum 12 characters",
2296
- "passphrase_mismatch": "Passphrases do not match",
2297
- "passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
2298
- "warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
2299
- "recovery_code_title": "Your Recovery Code",
2300
- "recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
2301
- "recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
2302
- "recovery_confirm_correct": "Correct! Enter word #{n}:",
2303
- "recovery_confirm_wrong": "Wrong word. Try again.",
2304
- "recovery_complete": "Recovery code confirmed.",
2305
- "i_have_written_down": "I have written down my recovery code",
2306
- "unlock_title": "Unlock Your Notes",
2307
- "unlock_subtitle": "Enter your passphrase to decrypt your notes.",
2308
- "unlock_button": "Unlock",
2309
- "unlock_failed": "Wrong passphrase. Please try again.",
2310
- "unlock_remember_device": "Remember this device for 7 days",
2311
- "migrate_title": "Upgrade to Cloud KMS",
2312
- "migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
2313
- "migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
2314
- "migrate_confirm": "I understand and want to proceed",
2315
- "migrate_progress": "Migrating {completed}/{total} notes...",
2316
- "migrate_done": "Migration complete!",
2317
- "migrate_failed": "Migration failed. Your original data is unchanged.",
2318
- "kms_provider_label": "KMS Provider",
2319
- "kms_key_arn_label": "Key ARN / Key ID",
2320
- "kms_role_arn_label": "Role ARN (for AssumeRole)",
2321
- "kms_verify": "Verify KMS Connection",
2322
- "kms_verified": "KMS connection verified",
2323
- "kms_verify_failed": "KMS connection failed",
2324
- "back": "Back",
2325
- "next": "Next",
2326
- "save": "Save",
2327
- "cancel": "Cancel",
2328
- "setup_complete": "E2E encryption enabled",
2329
- "deriving_key": "Deriving encryption key...",
2330
- "encrypting": "Encrypting notes...",
2321
+ "title": "Segurança",
2322
+ "encryption_mode_label": "Modo de criptografia",
2323
+ "mode_none": "Nenhum",
2324
+ "mode_e2e": "Criptografia de cliente E2E",
2325
+ "mode_kms": "Nuvem KMS",
2326
+ "setup_title": "Configurar criptografia E2E",
2327
+ "setup_subtitle": "Suas notas serão criptografadas antes de sair do dispositivo. Moraya não consegue ler suas anotações.",
2328
+ "passphrase_label": "Senha",
2329
+ "passphrase_confirm_label": "Confirmar senha",
2330
+ "passphrase_strength_weak": "Muito fraco",
2331
+ "passphrase_strength_fair": "Justo",
2332
+ "passphrase_strength_strong": "Forte",
2333
+ "passphrase_strength_very_strong": "Muito forte",
2334
+ "passphrase_min_length": "Mínimo 12 caracteres",
2335
+ "passphrase_mismatch": "As senhas não correspondem",
2336
+ "passphrase_too_weak": "A senha é muito fraca. Use uma frase mais longa e complexa.",
2337
+ "warning_no_recovery": "⚠️ Se você esquecer sua senha e perder seu código de recuperação, seus dados não poderão ser recuperados. Moraya não tem backup.",
2338
+ "recovery_code_title": "Seu código de recuperação",
2339
+ "recovery_code_subtitle": "Escreva essas 12 palavras. Você precisará deles se esquecer sua senha.",
2340
+ "recovery_confirm_instruction": "Digite a palavra #{n} para confirmar que você anotou:",
2341
+ "recovery_confirm_correct": "Correto! Digite a palavra #{n}:",
2342
+ "recovery_confirm_wrong": "Palavra errada. Tente novamente.",
2343
+ "recovery_complete": "Código de recuperação confirmado.",
2344
+ "i_have_written_down": "Eu anotei meu código de recuperação",
2345
+ "unlock_title": "Desbloqueie suas notas",
2346
+ "unlock_subtitle": "Digite sua senha para descriptografar suas notas.",
2347
+ "unlock_button": "Desbloquear",
2348
+ "unlock_failed": "Senha errada. Por favor, tente novamente.",
2349
+ "unlock_remember_device": "Lembre-se deste dispositivo por 7 dias",
2350
+ "migrate_title": "Atualizar para o Cloud KMS",
2351
+ "migrate_subtitle": "Suas notas serão criptografadas novamente usando seu KMS na nuvem. Moraya pode usar seu KMS para auxiliar nos recursos de IA.",
2352
+ "migrate_warning": "Esta é uma migração unilateral. Você não pode reverter para o modo E2E sem exportar e reimportar todos os dados.",
2353
+ "migrate_confirm": "Eu entendo e quero prosseguir",
2354
+ "migrate_progress": "Migrando notas {completed}/{total}...",
2355
+ "migrate_done": "Migração concluída!",
2356
+ "migrate_failed": "A migração falhou. Seus dados originais permanecem inalterados.",
2357
+ "kms_provider_label": "Provedor KMS",
2358
+ "kms_key_arn_label": "ARN da chave/ID da chave",
2359
+ "kms_role_arn_label": "Função ARN (para AssumeRole)",
2360
+ "kms_verify": "Verifique a conexão KMS",
2361
+ "kms_verified": "Conexão KMS verificada",
2362
+ "kms_verify_failed": "Falha na conexão KMS",
2363
+ "back": "Voltar",
2364
+ "next": "Próximo",
2365
+ "save": "Salvar",
2366
+ "cancel": "Cancelar",
2367
+ "setup_complete": "Criptografia E2E habilitada",
2368
+ "deriving_key": "Derivando chave de criptografia...",
2369
+ "encrypting": "Criptografando notas...",
2331
2370
  "current_mode": "Current mode: {mode}",
2332
- "last_unlock": "Last unlocked: {time}",
2371
+ "last_unlock": "Último desbloqueio: {time}",
2333
2372
  "use_recovery_code": "Use recovery code instead",
2334
- "recovery_unlock_title": "Recover Access",
2335
- "recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
2336
- "recovery_code_input": "Recovery Code (12 words, space-separated)",
2337
- "recovery_unlock_button": "Recover",
2338
- "set_new_passphrase": "Set New Passphrase"
2373
+ "recovery_unlock_title": "Recuperar acesso",
2374
+ "recovery_unlock_subtitle": "Digite seu código de recuperação de 12 palavras para recuperar o acesso.",
2375
+ "recovery_code_input": "Código de recuperação (12 palavras, separadas por espaço)",
2376
+ "recovery_unlock_button": "Recuperar",
2377
+ "set_new_passphrase": "Definir nova senha",
2378
+ "biometric_unlock_title": "Desbloquear Moraya",
2379
+ "biometric_unlock_subtitle": "Autentique-se para acessar seus dados",
2380
+ "biometric_failed": "Falha na autenticação",
2381
+ "unlock_with_biometric": "Unlock with biometric",
2382
+ "unlock_with_face_id": "Desbloquear com Face ID",
2383
+ "unlock_with_touch_id": "Desbloquear com Touch ID",
2384
+ "unlock_with_fingerprint": "Desbloquear com impressão digital",
2385
+ "unlock_with_iris": "Desbloquear com leitura de íris",
2386
+ "unlock_with_passkey": "Desbloquear com senha",
2387
+ "use_passphrase_fallback": "Em vez disso, use a senha"
2339
2388
  },
2340
2389
  "seo": {
2341
2390
  "title": "Otimização SEO",
@@ -2355,21 +2404,20 @@
2355
2404
  "step_description": "Gerar título, resumo e tags"
2356
2405
  },
2357
2406
  "sessions": {
2358
- "__mt": true,
2359
- "title": "Active Sessions",
2360
- "active_sessions": "Active Sessions",
2361
- "anomaly_alerts": "Security Alerts",
2362
- "current": "Current",
2363
- "last_active": "Last active",
2364
- "revoke": "Revoke",
2365
- "revoking": "Revoking…",
2366
- "confirm_revoke": "Revoke this session?",
2367
- "yes": "Yes",
2407
+ "title": "Sessões ativas",
2408
+ "active_sessions": "Sessões ativas",
2409
+ "anomaly_alerts": "Alertas de segurança",
2410
+ "current": "Atual",
2411
+ "last_active": "Último ativo",
2412
+ "revoke": "Revogar",
2413
+ "revoking": "Revogando…",
2414
+ "confirm_revoke": "Revogar esta sessão?",
2415
+ "yes": "Sim",
2368
2416
  "no": "Cancel",
2369
- "dismiss": "Dismiss",
2370
- "just_now": "Just now",
2371
- "hours_ago": "h ago",
2372
- "days_ago": "d ago"
2417
+ "dismiss": "Liberar",
2418
+ "just_now": "Agora mesmo",
2419
+ "hours_ago": "h atrás",
2420
+ "days_ago": "d atrás"
2373
2421
  },
2374
2422
  "settings": {
2375
2423
  "title": "Settings",
@@ -3007,25 +3055,24 @@
3007
3055
  "local_workspace": "Local"
3008
3056
  },
3009
3057
  "sso": {
3010
- "__mt": true,
3011
- "title": "Single Sign-On",
3012
- "description": "Configure SSO to let team members authenticate via your identity provider.",
3013
- "enable_sso": "Enable SSO",
3014
- "require_sso": "Require SSO for all members",
3015
- "oidc": "OIDC / OAuth 2.0",
3016
- "saml": "SAML 2.0",
3017
- "provider": "Identity Provider",
3018
- "custom_provider": "Custom",
3019
- "issuer": "Issuer URL",
3020
- "client_id": "Client ID",
3021
- "client_secret": "Client Secret",
3022
- "scopes": "Scopes",
3023
- "idp_metadata_url": "IdP Metadata URL",
3024
- "sp_entity_id": "SP Entity ID",
3025
- "sp_acs_url": "ACS URL",
3026
- "signing_cert": "Signing Certificate",
3027
- "save": "Save SSO Configuration",
3028
- "saved_success": "SSO configuration saved."
3058
+ "title": "Logon único",
3059
+ "description": "Configure o SSO para permitir que os membros da equipe se autentiquem por meio do seu provedor de identidade.",
3060
+ "enable_sso": "Habilitar SSO",
3061
+ "require_sso": "Exigir SSO para todos os membros",
3062
+ "oidc": "OIDC/OAuth 2.0",
3063
+ "saml": "SAML2.0",
3064
+ "provider": "Provedor de identidade",
3065
+ "custom_provider": "Personalizado",
3066
+ "issuer": "URL do emissor",
3067
+ "client_id": "ID do cliente",
3068
+ "client_secret": "Segredo do cliente",
3069
+ "scopes": "Escopos",
3070
+ "idp_metadata_url": "URL de metadados do IdP",
3071
+ "sp_entity_id": "ID da entidade SP",
3072
+ "sp_acs_url": "URL do ACS",
3073
+ "signing_cert": "Certificado de Assinatura",
3074
+ "save": "Salvar configuração de SSO",
3075
+ "saved_success": "Configuração de SSO salva."
3029
3076
  },
3030
3077
  "stale_dmg": {
3031
3078
  "title": "Limpar imagens de disco antigas",
@@ -3045,53 +3092,52 @@
3045
3092
  "ai_tooltip": "IA"
3046
3093
  },
3047
3094
  "storage": {
3048
- "__mt": true,
3049
- "title": "Storage",
3050
- "connected_providers": "Connected Providers",
3051
- "connect_provider": "Connect Provider",
3052
- "primary": "Primary",
3053
- "set_primary": "Set as Primary",
3054
- "remove": "Remove",
3055
- "edit": "Edit",
3056
- "verify": "Verify Connection",
3057
- "verifying": "Verifying...",
3058
- "verify_success": "Connection verified",
3059
- "verify_failed": "Verification failed",
3060
- "no_providers": "No storage providers connected.",
3061
- "connect_prompt": "Connect your own cloud storage to keep full control of your data.",
3062
- "picora_default": "Picora is your storage provider (Connect plan)",
3063
- "upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
3064
- "step_choose": "Choose Provider",
3065
- "step_setup": "Setup Script",
3066
- "step_credentials": "Enter Credentials",
3067
- "step_verify": "Verify",
3068
- "step_name": "Name & Save",
3069
- "provider_label": "Provider",
3070
- "bucket_label": "Bucket Name",
3071
- "region_label": "Region",
3072
- "access_key_label": "Access Key ID",
3073
- "secret_key_label": "Secret Access Key",
3074
- "role_arn_label": "Role ARN (for STS)",
3075
- "account_id_label": "Account ID",
3076
- "key_id_label": "Key ID",
3077
- "application_key_label": "Application Key",
3078
- "binding_label": "Display Name",
3079
- "copy_script": "Copy Script",
3080
- "copy_policy": "Copy Policy JSON",
3081
- "copied": "Copied!",
3082
- "back": "Back",
3083
- "next": "Next",
3084
- "save": "Save",
3085
- "health_ok": "Healthy",
3086
- "health_degraded": "Degraded",
3087
- "health_failed": "Failed",
3095
+ "title": "Armazenar",
3096
+ "connected_providers": "Provedores Conectados",
3097
+ "connect_provider": "Conectar provedor",
3098
+ "primary": "Primário",
3099
+ "set_primary": "Definir como principal",
3100
+ "remove": "Remover",
3101
+ "edit": "Editar",
3102
+ "verify": "Verifique a conexão",
3103
+ "verifying": "Verificando...",
3104
+ "verify_success": "Conexão verificada",
3105
+ "verify_failed": "Falha na verificação",
3106
+ "no_providers": "Nenhum provedor de armazenamento conectado.",
3107
+ "connect_prompt": "Conecte seu próprio armazenamento em nuvem para manter controle total de seus dados.",
3108
+ "picora_default": "Picora é seu provedor de armazenamento (plano Connect)",
3109
+ "upgrade_for_byoc": "Atualize para Pessoal para conectar seu próprio armazenamento.",
3110
+ "step_choose": "Escolha o provedor",
3111
+ "step_setup": "Script de configuração",
3112
+ "step_credentials": "Insira as credenciais",
3113
+ "step_verify": "Verificar",
3114
+ "step_name": "Nomear e salvar",
3115
+ "provider_label": "Provedor",
3116
+ "bucket_label": "Nome do intervalo",
3117
+ "region_label": "Região",
3118
+ "access_key_label": "ID da chave de acesso",
3119
+ "secret_key_label": "Chave de acesso secreta",
3120
+ "role_arn_label": "Função ARN (para STS)",
3121
+ "account_id_label": "ID da conta",
3122
+ "key_id_label": "ID da chave",
3123
+ "application_key_label": "Chave do aplicativo",
3124
+ "binding_label": "Nome de exibição",
3125
+ "copy_script": "Copiar roteiro",
3126
+ "copy_policy": "Copiar política JSON",
3127
+ "copied": "Copiado!",
3128
+ "back": "Voltar",
3129
+ "next": "Próximo",
3130
+ "save": "Salvar",
3131
+ "health_ok": "Saudável",
3132
+ "health_degraded": "Degradado",
3133
+ "health_failed": "Fracassado",
3088
3134
  "health_unknown": "Unknown",
3089
- "access_denied": "Access denied.",
3090
- "bucket_not_found": "Bucket not found.",
3091
- "bucket_exists": "Bucket already exists.",
3092
- "clock_skew": "System clock is out of sync. Please check your date/time settings.",
3135
+ "access_denied": "Acesso negado.",
3136
+ "bucket_not_found": "Balde não encontrado.",
3137
+ "bucket_exists": "O balde já existe.",
3138
+ "clock_skew": "O relógio do sistema está fora de sincronia. Verifique suas configurações de data/hora.",
3093
3139
  "b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
3094
- "r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
3140
+ "r2_token_info": "Crie um token de API no Cloudflare Dashboard com permissões de leitura/gravação R2 para este bucket."
3095
3141
  },
3096
3142
  "table": {
3097
3143
  "insert_row_above": "Inserir linha acima",
@@ -3135,36 +3181,35 @@
3135
3181
  "dirty_dot": "Unsaved changes"
3136
3182
  },
3137
3183
  "team": {
3138
- "__mt": true,
3139
- "title": "Team Knowledge Bases",
3140
- "create": "New Team KB",
3141
- "no_kbs": "You don't have any team knowledge bases yet.",
3142
- "create_first": "Create your first team KB",
3143
- "members": "members",
3144
- "open": "Open",
3145
- "settings": "Settings",
3146
- "encryption_kms": "Cloud KMS (AI Review enabled)",
3147
- "encryption_e2e": "E2E Encryption (AI Review disabled)",
3148
- "wizard_title": "Create Team Knowledge Base",
3149
- "step_info": "Name",
3150
- "step_provider": "Storage",
3151
- "step_members": "Members",
3152
- "step_encryption": "Encryption",
3153
- "step_confirm": "Confirm",
3154
- "kb_name_label": "Team KB Name",
3155
- "kb_name_placeholder": "e.g. Engineering Docs",
3156
- "provider_label": "Provider",
3157
- "bucket_label": "Bucket",
3158
- "prefix_label": "Prefix (optional)",
3159
- "invite_emails_label": "Email addresses (comma-separated)",
3160
- "invite_role_label": "Role",
3161
- "mode_kms_name": "Cloud KMS",
3162
- "mode_kms_desc": "AI Review and server-side features enabled.",
3163
- "mode_e2e_name": "End-to-End",
3164
- "mode_e2e_desc": "Maximum privacy. AI Review not available.",
3165
- "confirm_summary": "Confirm & Create",
3166
- "creating": "Creating…",
3167
- "create_kb": "Create Team KB"
3184
+ "title": "Bases de conhecimento da equipe",
3185
+ "create": "Nova base de conhecimento da equipe",
3186
+ "no_kbs": "Você ainda não tem nenhuma base de conhecimento da equipe.",
3187
+ "create_first": "Crie sua primeira KB de equipe",
3188
+ "members": "membros",
3189
+ "open": "Abrir",
3190
+ "settings": "Configurações",
3191
+ "encryption_kms": "Cloud KMS (revisão de IA ativada)",
3192
+ "encryption_e2e": "Criptografia E2E (revisão de IA desativada)",
3193
+ "wizard_title": "Criar base de conhecimento da equipe",
3194
+ "step_info": "Nome",
3195
+ "step_provider": "Armazenar",
3196
+ "step_members": "Membros",
3197
+ "step_encryption": "Criptografia",
3198
+ "step_confirm": "Confirmar",
3199
+ "kb_name_label": "Nome da base de conhecimento da equipe",
3200
+ "kb_name_placeholder": "por exemplo Documentos de engenharia",
3201
+ "provider_label": "Provedor",
3202
+ "bucket_label": "Balde",
3203
+ "prefix_label": "Prefixo (opcional)",
3204
+ "invite_emails_label": "Endereços de e-mail (separados por vírgula)",
3205
+ "invite_role_label": "Papel",
3206
+ "mode_kms_name": "Nuvem KMS",
3207
+ "mode_kms_desc": "Revisão de IA e recursos do lado do servidor ativados.",
3208
+ "mode_e2e_name": "De ponta a ponta",
3209
+ "mode_e2e_desc": "Máxima privacidade. Revisão de IA não disponível.",
3210
+ "confirm_summary": "Confirmar e criar",
3211
+ "creating": "Criando…",
3212
+ "create_kb": "Criar equipe KB"
3168
3213
  },
3169
3214
  "templates": {
3170
3215
  "gallery": {
@@ -3587,29 +3632,28 @@
3587
3632
  }
3588
3633
  },
3589
3634
  "theme": {
3590
- "__mt": true,
3591
- "title": "Appearance",
3592
- "mode_title": "Color Mode",
3593
- "mode_light": "Light",
3594
- "mode_dark": "Dark",
3595
- "mode_system": "System",
3596
- "custom_title": "Custom Themes",
3597
- "custom_new": "New Theme",
3598
- "custom_export": "Export",
3599
- "custom_import": "Import",
3600
- "custom_delete": "Delete",
3601
- "custom_activate": "Activate",
3602
- "custom_deactivate": "Deactivate",
3603
- "custom_edit": "Edit",
3604
- "editor_title": "Theme Editor",
3605
- "name_label": "Theme Name",
3606
- "no_custom": "No custom themes yet. Create one below.",
3607
- "groups_base": "Base Colors",
3635
+ "title": "Aparência",
3636
+ "mode_title": "Modo de cor",
3637
+ "mode_light": "Luz",
3638
+ "mode_dark": "Escuro",
3639
+ "mode_system": "Sistema",
3640
+ "custom_title": "Temas personalizados",
3641
+ "custom_new": "Novo tema",
3642
+ "custom_export": "Exportar",
3643
+ "custom_import": "Importar",
3644
+ "custom_delete": "Excluir",
3645
+ "custom_activate": "Ativar",
3646
+ "custom_deactivate": "Desativar",
3647
+ "custom_edit": "Editar",
3648
+ "editor_title": "Editor de Tema",
3649
+ "name_label": "Nome do tema",
3650
+ "no_custom": "Ainda não há temas personalizados. Crie um abaixo.",
3651
+ "groups_base": "Cores básicas",
3608
3652
  "groups_editor": "Editor",
3609
- "groups_ui": "UI Components",
3610
- "groups_code": "Code Block",
3611
- "saved": "Save",
3612
- "import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
3653
+ "groups_ui": "Componentes da IU",
3654
+ "groups_code": "Bloco de código",
3655
+ "saved": "Salvar",
3656
+ "import_error": "Arquivo de tema inválido. Use um JSON de tema Moraya válido."
3613
3657
  },
3614
3658
  "titlebar": {
3615
3659
  "unsaved": "Não salvo",
@@ -3638,7 +3682,34 @@
3638
3682
  "summarize_prompt": "Por favor, gere um resumo de reunião a partir da transcrição a seguir. Identifique os principais pontos de discussão, decisões tomadas e itens de ação. Formate como Markdown.",
3639
3683
  "no_speech_config": "Nenhum provedor de fala configurado. Adicione um em Configurações → Voz.",
3640
3684
  "no_speech_config_hint": "Vá para Configurações → Voz para adicionar um provedor de fala (ex.: Deepgram).",
3641
- "go_to_voice_settings": "Abrir configurações de voz"
3685
+ "go_to_voice_settings": "Abrir configurações de voz",
3686
+ "mute_mic": "Silenciar microfone",
3687
+ "unmute_mic": "Ativar microfone",
3688
+ "source_label": "Fonte",
3689
+ "source_mic": "Microfone",
3690
+ "source_system": "Sistema",
3691
+ "source_mixed": "Misturado",
3692
+ "mode_label": "Modo",
3693
+ "mode_transcription": "Transcrição",
3694
+ "mode_interview": "Entrevista",
3695
+ "summarize_interview": "Resumir entrevista",
3696
+ "to_document_append": "Anexar ao documento atual",
3697
+ "interview_summarize_prompt": "Por favor, resuma a seguinte transcrição da entrevista. Extraia perguntas importantes, pontos de resposta concisos e sugestões de otimização. Formatar como Markdown.",
3698
+ "interview_no_aiconfig": "Nenhum modelo de IA de chat configurado. Adicione um em Configurações → AI.",
3699
+ "interview_empty_answer": "AI retornou uma resposta vazia.",
3700
+ "interview_answer_pending": "Analisando o contexto mais recente...",
3701
+ "interview_answer_failed": "Falha ao gerar a resposta da entrevista.",
3702
+ "interview_system_share_hint": "Interview mode follows the current audio source setting; screen sharing is requested only when System source is selected.",
3703
+ "interview_native_system_hint": "O modo Entrevista segue a configuração atual da fonte de áudio. No macOS, o sistema e a fonte mista usam a captura nativa de áudio do sistema em vez da caixa de diálogo de compartilhamento de tela.",
3704
+ "system_source_restart_hint": "A gravação foi interrompida após mudar para fonte Sistema/Misto. Clique em Iniciar novamente para autorizar novamente e continuar.",
3705
+ "system_source_click_start_hint": "A permissão de origem do sistema deve ser acionada no botão Iniciar. Clique em Iniciar novamente.",
3706
+ "system_source_permission_denied": "A permissão de origem do sistema foi negada. Permita o compartilhamento de tela e de áudio e tente novamente.",
3707
+ "system_source_no_audio_track_hint": "Nenhuma trilha de áudio do sistema foi capturada. Na caixa de diálogo de compartilhamento, habilite o compartilhamento de áudio e prefira Tela Inteira; se sua plataforma não tiver opção de compartilhamento de áudio, use microfone ou fonte mista.",
3708
+ "system_source_unsupported_hint": "Este ambiente não expõe uma trilha de áudio do sistema na caixa de diálogo de compartilhamento. A fonte voltou automaticamente para o microfone. Para um verdadeiro áudio do sistema, use um caminho de captura de loopback nativo.",
3709
+ "system_source_native_hint": "A captura de áudio do sistema nativo do macOS está ativa. Nenhuma caixa de diálogo de compartilhamento de tela é necessária para a origem do sistema.",
3710
+ "system_source_native_mixed_hint": "A captura de áudio do sistema nativo do macOS está ativa. A fonte mista combina o áudio nativo do sistema com entrada de microfone no aplicativo.",
3711
+ "system_source_native_permission_denied": "macOS negou captura de áudio do sistema nativo. Permita o aplicativo em Configurações do sistema → Privacidade e segurança e tente novamente.",
3712
+ "system_source_runtime_incompatible": "Este tempo de execução do macOS não é totalmente compatível com a captura nativa de áudio do sistema. Atualize o macOS ou mude para a fonte do microfone."
3642
3713
  },
3643
3714
  "update": {
3644
3715
  "title": "Informações da versão",
@@ -3658,34 +3729,37 @@
3658
3729
  "new_version_available": "Nova versão disponível! Clique para atualizar."
3659
3730
  },
3660
3731
  "voice": {
3661
- "__mt": true,
3662
- "title": "Voice Capture",
3663
- "provider": "Provider",
3664
- "language": "Language",
3665
- "doubao": "Doubao (Realtime)",
3732
+ "title": "Captura de voz",
3733
+ "provider": "Provedor",
3734
+ "language": "Linguagem",
3735
+ "doubao": "Doubao (tempo real)",
3666
3736
  "start": "Record",
3667
- "stop": "Stop",
3668
- "processing": "Processing...",
3669
- "transcript": "Transcript",
3670
- "words": "words",
3671
- "structurize": "AI Structurize",
3672
- "view_history": "View History",
3673
- "untitled": "Untitled",
3674
- "key_points": "Key Points",
3675
- "action_items": "Action Items",
3676
- "save_note": "Save Note",
3677
- "discard": "Discard",
3678
- "quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
3679
- "quota_near": "You are near your monthly voice limit.",
3737
+ "stop": "Parar",
3738
+ "processing": "Processamento...",
3739
+ "transcript": "Transcrição",
3740
+ "words": "palavras",
3741
+ "structurize": "Estruturação de IA",
3742
+ "view_history": "Ver histórico",
3743
+ "untitled": "Sem título",
3744
+ "key_points": "Pontos-chave",
3745
+ "action_items": "Itens de ação",
3746
+ "save_note": "Salvar nota",
3747
+ "discard": "Descartar",
3748
+ "quota_exceeded": "Cota mensal de voz excedida. Atualize ou espere até o próximo mês.",
3749
+ "quota_near": "Você está próximo do seu limite mensal de voz.",
3680
3750
  "history": {
3681
- "title": "Voice History",
3682
- "new_capture": "+ New Recording",
3683
- "search_placeholder": "Search transcripts...",
3684
- "no_results": "No transcripts match your search.",
3685
- "empty": "No recordings yet. Start capturing your voice!",
3686
- "reprocess": "Re-process",
3687
- "delete": "Delete"
3688
- }
3751
+ "title": "Histórico de voz",
3752
+ "new_capture": "+ Nova Gravação",
3753
+ "search_placeholder": "Pesquisar transcrições...",
3754
+ "no_results": "Nenhuma transcrição corresponde à sua pesquisa.",
3755
+ "empty": "Ainda não há gravações. Comece a capturar sua voz!",
3756
+ "reprocess": "Reprocessar",
3757
+ "delete": "Excluir"
3758
+ },
3759
+ "hold_to_record": "Segure para gravar",
3760
+ "release_to_send": "Liberar para enviar",
3761
+ "cancel": "Deslize para cancelar",
3762
+ "permission_denied": "Permissão de microfone negada"
3689
3763
  },
3690
3764
  "welcome": {
3691
3765
  "title": "Bem-vindo ao Moraya",