1944 lines
126 KiB
JSON
1944 lines
126 KiB
JSON
{
|
||
"dashboard": "Dashboard",
|
||
"nav.pages": "Páginas",
|
||
"nav.messages": "Mensagens",
|
||
"nav.news": "Notícias",
|
||
"nav.events": "Eventos",
|
||
"nav.settings": "Configurações",
|
||
"nav.logout": "Sair",
|
||
"nav.collapse_sidebar": "Recolher",
|
||
"nav.expand_sidebar": "Expandir",
|
||
"nav.view_site": "Ver Site",
|
||
"btn.load": "Carregar",
|
||
"btn.save": "Salvar",
|
||
"btn.cancel": "Cancelar",
|
||
"btn.confirm": "Confirmar",
|
||
"btn.close": "Fechar",
|
||
"btn.back": "Voltar",
|
||
"btn.delete": "Excluir",
|
||
"btn.browse": "Procurar",
|
||
"btn.clear": "Limpar",
|
||
"btn.refresh": "Atualizar",
|
||
"btn.restore": "Restaurar",
|
||
"btn.saving": "Salvando...",
|
||
"btn.changing": "Alterando...",
|
||
"pages.title": "Páginas",
|
||
"pages.new_page": "+ Nova Página",
|
||
"pages.trash": "Lixeira",
|
||
"pages.col_title": "Título",
|
||
"pages.col_date": "Última Modificação",
|
||
"pages.edit": "Editar",
|
||
"pages.view": "Visualizar",
|
||
"pages.duplicate": "Duplicar",
|
||
"pages.create": "+ Criar",
|
||
"pages.all_pages": "Todas as Páginas",
|
||
"pages.back_to_pages": "Voltar para Páginas",
|
||
"trash.title": "Lixeira",
|
||
"trash.col_page": "Página",
|
||
"trash.col_deleted": "Excluída em",
|
||
"trash.col_actions": "Ações",
|
||
"trash.empty": "A lixeira está vazia.",
|
||
"trash.empty_trash": "Esvaziar Lixeira",
|
||
"editor.title": "Editor de Conteúdo",
|
||
"editor.expand_all": "Expandir Tudo",
|
||
"editor.collapse_all": "Recolher Tudo",
|
||
"editor.not_saved_yet": "Ainda não salvo",
|
||
"editor.last_saved": "Último salvamento: {date}",
|
||
"editor.move_to_trash": "Mover para Lixeira",
|
||
"editor.undo": "Desfazer (⌘Z)",
|
||
"editor.redo": "Refazer (⇧⌘Z)",
|
||
"editor.meta_page": "Página:",
|
||
"editor.meta_lang": "Idioma:",
|
||
"editor.items": "{count} itens",
|
||
"editor.fields": "{count} campos",
|
||
"editor.field_groups": "Field groups",
|
||
"editor.field_groups_count": "{count} field groups",
|
||
"editor.add_item": "+ Adicionar item",
|
||
"editor.add_section": "Adicionar nova seção:",
|
||
"editor.no_sections": "No sections yet.",
|
||
"editor.search_sections": "Pesquisar secções",
|
||
"editor.filter_all_types": "Todos os tipos",
|
||
"editor.compact_mode": "Compacto",
|
||
"editor.expand_section": "Expandir secção",
|
||
"editor.collapse_section": "Recolher secção",
|
||
"editor.insert_section": "Inserir secção",
|
||
"editor.insert_here": "Inserir aqui",
|
||
"editor.section_issues": "{count} avisos",
|
||
"editor.section_issue": "{count} aviso",
|
||
"editor.no_section_matches": "Nenhuma secção correspondente.",
|
||
"editor.drag_section": "Arrastar secção",
|
||
"editor.missing_media": "Caminho de média em falta",
|
||
"editor.missing_alt": "Texto alternativo em falta",
|
||
"editor.duplicate_h1": "Cabeçalho H1 adicional",
|
||
"editor.select_image": "Selecionar Imagem",
|
||
"editor.tab_content": "Content",
|
||
"editor.sections": "Sections",
|
||
"editor.page_settings": "Page Settings",
|
||
"editor.meta_title": "Title",
|
||
"editor.meta_description": "Description",
|
||
"editor.nav_locations": "Navigation",
|
||
"editor.nav_custom_hint": "Custom, e.g. sidebar",
|
||
"editor.breadcrumb": "Breadcrumb",
|
||
"editor.breadcrumb_label": "Label",
|
||
"editor.breadcrumb_href": "Link (slug)",
|
||
"editor.breadcrumb_add": "Add item",
|
||
"editor.breadcrumb_hint": "Last item is the current page (no link needed).",
|
||
"events.title": "Eventos",
|
||
"events.new_event": "+ Novo Evento",
|
||
"events.no_events": "Nenhum evento ainda.",
|
||
"events.start_date": "Data de início",
|
||
"events.start_time": "Hora de início",
|
||
"events.end_date": "Data de término",
|
||
"events.end_time": "Hora de término",
|
||
"events.url": "URL",
|
||
"events.untitled": "(sem título)",
|
||
"events.save_events": "Salvar Eventos",
|
||
"events.col_date": "Data",
|
||
"events.col_location": "Local",
|
||
"events.col_status": "Status",
|
||
"events.status_upcoming": "Próximo",
|
||
"events.status_today": "Hoje",
|
||
"events.status_past": "Passado",
|
||
"events.status_draft": "Rascunho",
|
||
"events.confirm_delete_permanent": "Excluir permanentemente o evento \"{title}\"? Esta ação não pode ser desfeita.",
|
||
"events.back_to_events": "Voltar aos eventos",
|
||
"mails.title": "Mensagens de Contato",
|
||
"mails.source_hint": "Os envios do formulário de contacto aparecem aqui. O raiju guarda-os localmente, mesmo que nenhuma notificação por e-mail seja enviada.",
|
||
"mails.all_forms": "Todos os formulários",
|
||
"mails.filter_form": "Filtrar por formulário",
|
||
"mails.col_form": "Formulário",
|
||
"mails.col_from": "Remetente",
|
||
"mails.col_subject": "Assunto",
|
||
"mails.col_received": "Recebido",
|
||
"mails.mark_all_read": "Marcar todas como lidas",
|
||
"mails.no_messages": "Nenhuma mensagem",
|
||
"mails.detail_title": "Detalhes da Mensagem",
|
||
"mails.date": "Data:",
|
||
"mails.name": "Nome:",
|
||
"mails.email": "Email:",
|
||
"mails.phone": "Telefone:",
|
||
"mails.preferred_date": "Data Preferida:",
|
||
"mails.message": "Mensagem:",
|
||
"mails.form": "Formulário:",
|
||
"mails.form_fields": "Campos:",
|
||
"mails.sort_read": "Ordenar por lida/não lida",
|
||
"mails.sort_starred": "Ordenar por favoritas",
|
||
"mails.mark_read": "Marcar como lida",
|
||
"mails.mark_unread": "Marcar como não lida",
|
||
"mails.star": "Marcar com estrela",
|
||
"mails.unstar": "Remover estrela",
|
||
"settings.title": "Configurações",
|
||
"settings.branding": "Marca",
|
||
"settings.branding_desc": "Personalize o logo, nome e visibilidade da marca. Desative a marca para uso white-label.",
|
||
"settings.logo": "Logo",
|
||
"settings.logo_light": "Logo (light mode)",
|
||
"settings.logo_dark": "Logo (dark mode)",
|
||
"settings.logo_dark_hint": "Optional. Shown only in dark mode. Leave empty if the same logo works for both themes.",
|
||
"settings.frontend_logos": "Frontend logos",
|
||
"settings.frontend_logos_hint": "These logos appear only on the public site. Recommended size: SVG or PNG around 320 × 96 px.",
|
||
"settings.favicon": "Favicon",
|
||
"settings.favicon_hint": "Shown in the browser tab and the backend. Recommended: square SVG or 512 × 512 px PNG.",
|
||
"settings.site_identity": "Identidade do site",
|
||
"settings.admin_interface": "Interface de administração",
|
||
"settings.header_display": "Exibição no cabeçalho",
|
||
"settings.header_display_hint": "Sem logo, exibir o seguinte no cabeçalho da página:",
|
||
"settings.logo_display": "Sem logo",
|
||
"settings.logo_display_favicon": "Favicon",
|
||
"settings.logo_display_text": "Nome do site",
|
||
"settings.logo_display_both": "Favicon e nome do site",
|
||
"settings.site_name": "Nome do Site",
|
||
"settings.site_name_hint": "Mostrado na aba do navegador, no cabeçalho público quando selecionado abaixo, e na interface de administração.",
|
||
"settings.site_name_placeholder": "Nome do site",
|
||
"settings.show_branding": "Mostrar marca no admin",
|
||
"settings.branding_hint": "Quando desativado, o logo e o nome do site ficam ocultos na barra de administração e na página de login.",
|
||
"settings.save_branding": "Salvar Marca",
|
||
"settings.theme": "Tema",
|
||
"settings.theme_desc": "Aparência da área de administração: tema, modo, cor base, fonte e densidade.",
|
||
"settings.admin_theme": "Tema do Admin",
|
||
"settings.theme_light": "Claro",
|
||
"settings.theme_dark": "Escuro",
|
||
"settings.theme_system": "Sistema",
|
||
"settings.appearance": "Aparência",
|
||
"settings.theme_preset": "Tema",
|
||
"settings.theme_preset_hint": "Define superfícies, bordas, raios, barra lateral e a fonte correspondente; a fonte continua livre para alterar abaixo. Cada tema tem uma variante clara e uma escura.",
|
||
"settings.preset_soft": "Soft",
|
||
"settings.preset_soft_desc": "Barra lateral tingida, cartões brancos, medidas do shadcn/ui.",
|
||
"settings.preset_classic": "Classic",
|
||
"settings.preset_classic_desc": "Barra lateral escura, área clara, plano – próximo do WordPress.",
|
||
"settings.preset_paper": "Paper",
|
||
"settings.preset_paper_desc": "Branco, apenas linhas finas, muita calma.",
|
||
"settings.preset_studio": "Studio",
|
||
"settings.preset_studio_desc": "Monocromático como Vercel: botões pretos, linhas finas, cor base apenas como destaque.",
|
||
"settings.preset_console": "Console",
|
||
"settings.preset_console_desc": "Monoespaçada, versaletes, seleção com mira, um acento forte – como uma central de controlo.",
|
||
"settings.preset_pop": "Pop",
|
||
"settings.preset_pop_desc": "Barra lateral escura em gradiente, etiquetas em pílulas coloridas, cartões suaves e arredondados – lúdico e amigável.",
|
||
"settings.theme_mode": "Modo",
|
||
"settings.base_color": "Cor base",
|
||
"settings.base_color_hint": "Botões, links, estados ativos e o tom das superfícies derivam desta única cor. O contraste é garantido automaticamente.",
|
||
"settings.font": "Fonte",
|
||
"settings.font_hint": "Carregada localmente a partir da pasta de administração. Não são feitos pedidos externos.",
|
||
"settings.font_system": "Sistema (sem ficheiro)",
|
||
"settings.font_inter": "Inter",
|
||
"settings.font_plex": "IBM Plex Sans",
|
||
"settings.font_atkinson": "Atkinson Hyperlegible",
|
||
"settings.font_public": "Public Sans",
|
||
"settings.font_size": "Tamanho da letra",
|
||
"settings.font_size_hint": "Altera apenas a tipografia do painel, não os espaçamentos nem os elementos.",
|
||
"settings.font_size_small": "Pequeno",
|
||
"settings.font_size_default": "Padrão",
|
||
"settings.font_size_large": "Grande",
|
||
"settings.font_geist_mono": "Geist Mono",
|
||
"settings.density": "Densidade",
|
||
"settings.density_hint": "«Automático» segue a largura da janela: compacto em ecrãs pequenos, mais espaçoso em grandes.",
|
||
"settings.density_auto": "Automático",
|
||
"settings.density_compact": "Compacto",
|
||
"settings.density_comfortable": "Espaçoso",
|
||
"settings.advanced": "Avançado",
|
||
"settings.sidebar_bg_light": "Cor da barra lateral (claro)",
|
||
"settings.sidebar_bg_dark": "Cor da barra lateral (escuro)",
|
||
"forms.title": "Formulários",
|
||
"forms.desc": "Gere formulários simples baseados em JSON. Esta vista é para pequenas alterações em formulários existentes: textos, campos obrigatórios, opções, larguras de colunas e notificações.",
|
||
"forms.forms": "Formulários",
|
||
"forms.select_form": "Selecionar formulário",
|
||
"forms.new": "Novo",
|
||
"forms.save": "Guardar formulário",
|
||
"forms.base_data": "Dados base",
|
||
"forms.form_id": "ID do formulário",
|
||
"forms.form_id_hint": "Usado para incorporação e envios, por exemplo contacto ou enviar-evento.",
|
||
"forms.label": "Etiqueta",
|
||
"forms.description": "Descrição",
|
||
"forms.enabled": "Ativo",
|
||
"forms.store": "Guardar localmente",
|
||
"forms.email": "Enviar e-mail",
|
||
"forms.subject": "Assunto",
|
||
"forms.success_text": "Mensagem de sucesso",
|
||
"forms.fields": "Campos",
|
||
"forms.add_field": "Adicionar campo",
|
||
"forms.type": "Tipo",
|
||
"forms.key": "Chave",
|
||
"forms.placeholder": "Placeholder",
|
||
"forms.width": "Largura",
|
||
"forms.required": "Obrigatório",
|
||
"forms.options": "Opções",
|
||
"forms.options_hint": "Para campos select e radio, introduza uma opção por linha. Use value|Etiqueta apenas quando o valor guardado deve diferir da etiqueta visível.",
|
||
"forms.empty": "Ainda não há formulários.",
|
||
"forms.field_count": "{count} campos",
|
||
"forms.new_field": "Novo campo",
|
||
"forms.default_success": "Obrigado pela sua mensagem.",
|
||
"forms.contact_default": "Formulário de contacto",
|
||
"forms.saved": "Formulário guardado.",
|
||
"forms.load_error": "Não foi possível carregar o formulário.",
|
||
"forms.save_error": "Não foi possível guardar o formulário.",
|
||
"settings.theme_section_light": "Light Theme",
|
||
"settings.theme_section_dark": "Dark Theme",
|
||
"settings.dark_section_hint": "Leave fields empty to inherit values from the light theme. Click the ↺ icon to reset a field to auto.",
|
||
"settings.primary_color": "Cor Primária",
|
||
"settings.primary_color_hint": "Usada em botões, links e elementos interativos.",
|
||
"settings.accent_color": "Cor de Destaque",
|
||
"settings.accent_color_hint": "Para destaques e acentos da marca. Deixar vazio para usar a cor base.",
|
||
"settings.danger_color": "Cor de alerta (vermelho)",
|
||
"settings.warning_color": "Cor de aviso (amarelo)",
|
||
"settings.success_color": "Cor de sucesso (verde)",
|
||
"settings.semantic_colors_hint": "Para erros, avisos e confirmações. Deixar vazio para as cores padrão; o sucesso segue então a cor base.",
|
||
"settings.sidebar_bg": "Background (sidebar & topbar)",
|
||
"settings.sidebar_bg_hint": "Derivada da cor base pelo tema, mas pode ser substituída.",
|
||
"settings.auto_badge": "Auto",
|
||
"settings.reset_to_auto": "Reset to automatic value",
|
||
"settings.reset_colors": "Repor predefinições",
|
||
"settings.button_style": "Estilo dos Botões do Editor",
|
||
"settings.button_glow": "Efeito de Brilho",
|
||
"settings.button_glow_hint": "Adiciona um brilho aos botões do editor.",
|
||
"settings.button_radius": "Raio da Borda",
|
||
"settings.button_radius_hint": "Controla o arredondamento dos botões do editor (0 = quadrado, 24 = pílula).",
|
||
"settings.preview_primary": "Botão Primário",
|
||
"settings.preview_secondary": "Botão Secundário",
|
||
"settings.save_theme": "Salvar Tema",
|
||
"settings.invalid_color": "Formato de cor inválido. Use hexadecimal (#RRGGBB).",
|
||
"settings.theme_color_adjusted": "{field} foi ajustado para {value} para manter a interface legível.",
|
||
"settings.contrast_ok": "Contraste: {ratio}:1",
|
||
"settings.contrast_error": "Contraste: {ratio}:1 - abaixo do mínimo de UI 3:1",
|
||
"settings.text_contrast_ok": "Contraste com o texto: {ratio}:1",
|
||
"settings.text_contrast_error": "Contraste com o texto: {ratio}:1 - abaixo do mínimo de UI 3:1",
|
||
"settings.contrast_invalid": "Introduza uma cor Hex válida para calcular o contraste.",
|
||
"settings.language": "Idioma",
|
||
"settings.admin_language": "Idioma do Admin",
|
||
"settings.admin_language_hint": "Idioma da interface de administração. O padrão segue o idioma principal do site.",
|
||
"settings.admin_language_default": "Padrão ({lang})",
|
||
"settings.save_language": "Salvar Idioma",
|
||
"settings.ai_label_artwork": "Etiquetas de IA nas imagens",
|
||
"settings.ai_label_artwork_en": "Inglês – “AI generated” (padrão)",
|
||
"settings.ai_label_artwork_page": "Idioma da página – “KI generiert” em páginas em alemão",
|
||
"settings.ai_label_artwork_hint": "Aplica-se às etiquetas das imagens geradas ou modificadas por IA no site. O texto alternativo para leitores de ecrã segue sempre o idioma da página.",
|
||
"editor.language_tabs": "Separadores de idioma",
|
||
"editor.translate_from_active": "Traduzir a partir do idioma ativo",
|
||
"editor.translating": "A traduzir...",
|
||
"editor.translate_done": "Tradução concluída.",
|
||
"editor.translate_no_source": "Não há texto de origem para traduzir.",
|
||
"editor.translate_invalid_response": "Resposta de tradução inválida.",
|
||
"settings.password": "Senha",
|
||
"settings.my_account": "Minha conta",
|
||
"settings.change_password": "Alterar Senha",
|
||
"settings.current_password": "Senha Atual",
|
||
"settings.new_password": "Nova Senha",
|
||
"settings.confirm_password": "Confirmar Nova Senha",
|
||
"settings.pw_requirements": "Requisitos da senha:",
|
||
"settings.pw_length": "Pelo menos 8 caracteres",
|
||
"settings.pw_upper": "Letra maiúscula",
|
||
"settings.pw_lower": "Letra minúscula",
|
||
"settings.pw_digit": "Dígito",
|
||
"settings.pw_special": "Caractere especial",
|
||
"settings.pw_match": "As senhas coincidem",
|
||
"settings.email": "Email",
|
||
"settings.email_desc": "Configure como o formulário de contato envia emails. As mensagens são sempre salvas localmente na caixa de entrada do admin, mesmo se o envio falhar.",
|
||
"settings.email_method": "Método de Envio",
|
||
"settings.sendmail_hint": "Usa a função de email integrada do servidor (PHP mail). Para que os emails sejam entregues de forma confiável, o endereço IP do servidor deve estar autorizado a enviar emails para o domínio do remetente (registro SPF). Este método funciona sem credenciais, mas a entrega não é garantida.",
|
||
"settings.recipient_email": "Email do Destinatário",
|
||
"settings.recipient_email_hint": "As mensagens do formulário de contato são enviadas para este endereço. Separe vários endereços com vírgulas.",
|
||
"settings.bcc_email": "Email BCC",
|
||
"settings.bcc_email_hint": "Destinatários opcionais em cópia oculta. Separe vários endereços com vírgulas.",
|
||
"settings.from_email": "Email do Remetente (De)",
|
||
"settings.from_email_hint": "O endereço 'De' exibido para o destinatário. Deve corresponder à sua conta SMTP ou domínio.",
|
||
"settings.from_name": "Nome do Remetente",
|
||
"settings.smtp_settings": "Servidor SMTP",
|
||
"settings.smtp_host": "Host",
|
||
"settings.smtp_port": "Porta",
|
||
"settings.smtp_encryption": "Criptografia",
|
||
"settings.smtp_encryption_none": "Nenhuma (não recomendado)",
|
||
"settings.smtp_username": "Usuário",
|
||
"settings.smtp_password": "Senha",
|
||
"settings.smtp_password_placeholder": "Digite a senha",
|
||
"settings.smtp_password_hint": "Deixe em branco para manter a senha salva inalterada.",
|
||
"settings.save_email": "Salvar Configurações de Email",
|
||
"settings.test_email": "Enviar Email de Teste",
|
||
"settings.testing_email": "Enviando...",
|
||
"settings.test_email_success": "Email de teste enviado com sucesso! Verifique sua caixa de entrada.",
|
||
"settings.test_email_error": "Falha ao enviar o email de teste.",
|
||
"settings.recipient_required": "Por favor, insira um endereço de email do destinatário primeiro.",
|
||
"toast.email_saved": "Configurações de email salvas",
|
||
"settings.danger_zone": "Zona de Perigo",
|
||
"settings.danger_zone_desc": "Ações irreversíveis. Prossiga com extrema cautela.",
|
||
"settings.total_reset": "Redefinição Total",
|
||
"settings.total_reset_desc": "Redefine completamente a instalação para o estado de fábrica. Exclui todo o conteúdo, páginas, imagens, notícias, backups, configurações e configuração. Após a redefinição, o assistente de configuração aparecerá como se o raiju tivesse sido recém-instalado.",
|
||
"settings.total_reset_warning": "Esta ação é irreversível. Todos os dados serão permanentemente excluídos.",
|
||
"settings.total_reset_confirm_label": "Digite DELETE para confirmar:",
|
||
"settings.total_reset_confirm_placeholder": "DELETE",
|
||
"settings.total_reset_btn": "Redefinir Tudo",
|
||
"settings.total_reset_mismatch": "Por favor, digite DELETE exatamente para confirmar.",
|
||
"toast.total_reset_success": "Instalação redefinida. Redirecionando para o assistente de configuração...",
|
||
"security.warning": "Aviso de Segurança:",
|
||
"security.weak_password": "Sua senha atual não atende aos requisitos mínimos de segurança (pelo menos 8 caracteres com uma combinação de maiúsculas, minúsculas, dígitos e caracteres especiais).",
|
||
"security.change_now": "Por favor, altere-a imediatamente",
|
||
"security.change_link": "Altere sua senha nas Configurações",
|
||
"backups.title": "Backups",
|
||
"backups.no_backups": "Nenhum backup disponível",
|
||
"backups.view": "Visualizar",
|
||
"backups.restore": "Restaurar",
|
||
"backups.delete": "Excluir",
|
||
"toast.saved": "Salvo com sucesso!",
|
||
"toast.page_duplicated": "Página duplicada: {slug}",
|
||
"toast.page_trashed": "Página movida para a lixeira",
|
||
"toast.page_created": "Página criada: {title}",
|
||
"toast.page_restored": "Página restaurada",
|
||
"toast.page_deleted": "Página excluída permanentemente",
|
||
"toast.trash_emptied": "Lixeira esvaziada",
|
||
"toast.backup_restored": "Backup restaurado!",
|
||
"toast.backup_deleted": "Backup excluído",
|
||
"toast.branding_saved": "Marca salva",
|
||
"toast.theme_saved": "Tema salvo",
|
||
"toast.password_changed": "Senha alterada com sucesso!",
|
||
"toast.all_read": "Todas marcadas como lidas",
|
||
"toast.message_deleted": "Mensagem excluída",
|
||
"toast.events_saved": "Eventos salvos!",
|
||
"toast.event_deleted": "Evento excluído permanentemente",
|
||
"toast.event_trashed": "Evento movido para a lixeira",
|
||
"toast.event_restored": "Evento restaurado",
|
||
"toast.no_images": "Nenhuma imagem encontrada. Envie imagens primeiro.",
|
||
"toast.error_loading": "Erro ao carregar: {message}",
|
||
"toast.error_saving": "Erro ao salvar: {message}",
|
||
"toast.error_generic": "Erro: {message}",
|
||
"toast.error_loading_images": "Erro ao carregar imagens: {message}",
|
||
"toast.error_loading_events": "Erro ao carregar eventos: {message}",
|
||
"toast.error_loading_settings": "Erro ao carregar configurações: {message}",
|
||
"toast.events_date_required": "Data e título são obrigatórios",
|
||
"toast.language_saved": "Idioma salvo",
|
||
"modal.new_page": "Nova Página",
|
||
"modal.new_page_title": "Título",
|
||
"modal.new_page_title_placeholder": "Minha Nova Página",
|
||
"modal.new_page_slug": "Slug",
|
||
"modal.new_page_slug_placeholder": "minha-nova-pagina",
|
||
"modal.new_page_slug_hint": "Apenas minúsculas e hífens. Gerado automaticamente a partir do título.",
|
||
"modal.create_page": "Criar Página",
|
||
"modal.delete_permanently": "Excluir Permanentemente",
|
||
"modal.delete_confirm": "Tem certeza de que deseja excluir permanentemente \"{title}\" ({page})? Esta ação não pode ser desfeita.",
|
||
"modal.empty_trash": "Esvaziar Lixeira",
|
||
"modal.empty_trash_confirm": "Tem certeza de que deseja excluir permanentemente todas as páginas na lixeira? Esta ação não pode ser desfeita.",
|
||
"modal.restore_backup": "Restaurar Backup",
|
||
"modal.restore_backup_confirm": "Restaurar este backup? O estado atual será salvo primeiro.",
|
||
"modal.delete_backup": "Excluir Backup",
|
||
"modal.delete_backup_confirm": "Tem certeza de que deseja excluir este backup? Esta ação não pode ser desfeita.",
|
||
"modal.delete_message": "Excluir Mensagem",
|
||
"modal.delete_message_confirm": "Tem certeza de que deseja excluir esta mensagem?",
|
||
"modal.select_logo": "Selecionar Logo",
|
||
"login.title": "Entrar",
|
||
"login.username": "Usuário",
|
||
"login.password": "Senha",
|
||
"login.show_password": "Mostrar senha",
|
||
"login.hide_password": "Ocultar senha",
|
||
"login.button": "Entrar",
|
||
"login.back_to_site": "Voltar ao site",
|
||
"login.error_locked": "Conta bloqueada devido a muitas tentativas falhas. Tente novamente em {time}.",
|
||
"login.error_too_many": "Muitas tentativas falhas. Aguarde antes de tentar novamente.",
|
||
"login.error_wait": "Credenciais inválidas. Aguarde antes de tentar novamente.",
|
||
"login.error_invalid": "Usuário ou senha inválidos",
|
||
"login.hour": "h",
|
||
"login.minute": "min",
|
||
"setup.page_title": "Configuração - raiju CMS",
|
||
"setup.complete_title": "Configuração Concluída",
|
||
"setup.complete_message": "O raiju CMS foi configurado com sucesso.",
|
||
"setup.complete_login_hint": "Agora você pode fazer login com as credenciais que acabou de criar.",
|
||
"setup.go_to_login": "Ir para Login",
|
||
"setup.title": "Configuração",
|
||
"setup.subtitle": "Configuração Inicial",
|
||
"setup.site_name": "Nome do Site",
|
||
"setup.site_name_placeholder": "Meu Site",
|
||
"setup.primary_language": "Idioma Principal",
|
||
"setup.primary_language_hint": "As páginas neste idioma ficam na URL raiz (sem prefixo).",
|
||
"setup.additional_language": "Idioma Adicional (opcional)",
|
||
"setup.additional_language_none": "— Nenhum —",
|
||
"setup.additional_language_hint": "As páginas neste idioma ficarão em /{code}/.",
|
||
"setup.admin_username": "Usuário Administrador",
|
||
"setup.password": "Senha",
|
||
"setup.generate": "Gerar",
|
||
"setup.confirm_password": "Confirmar Senha",
|
||
"setup.pw_length": "Pelo menos 8 caracteres",
|
||
"setup.pw_upper": "Letra maiúscula",
|
||
"setup.pw_lower": "Letra minúscula",
|
||
"setup.pw_digit": "Dígito",
|
||
"setup.pw_special": "Caractere especial",
|
||
"setup.create_config": "Criar Configuração",
|
||
"setup.error_site_name": "Por favor, insira um nome para o site.",
|
||
"setup.error_username": "Por favor, insira um nome de usuário administrador.",
|
||
"setup.error_username_short": "O nome de usuário deve ter pelo menos 3 caracteres.",
|
||
"setup.error_password": "Por favor, insira uma senha.",
|
||
"setup.error_password_mismatch": "As senhas não coincidem.",
|
||
"setup.error_password_weak": "A senha não atende aos requisitos: pelo menos 8 caracteres com maiúsculas, minúsculas, dígitos e caracteres especiais.",
|
||
"setup.error_write": "Não foi possível gravar o config.php. Verifique se o diretório admin/ tem permissão de escrita pelo servidor web.",
|
||
"setup.copied": "Copiado!",
|
||
"setup.copy": "Copiar",
|
||
"block.text": "Texto",
|
||
"block.youtube": "YouTube",
|
||
"block.soundcloud": "SoundCloud",
|
||
"block.audio": "Áudio",
|
||
"block.card": "Cartão",
|
||
"block.heading": "Título",
|
||
"block.quote": "Citação",
|
||
"block.image": "Imagem",
|
||
"block.list": "Lista",
|
||
"block.divider": "Divisor",
|
||
"block.spacer": "Espaçador",
|
||
"field.title": "Título",
|
||
"field.heading_level": "Nível do Título",
|
||
"field.content": "Conteúdo",
|
||
"field.style": "Estilo",
|
||
"field.video_id": "ID do Vídeo",
|
||
"field.video_id_hint": "O ID do vídeo da URL do YouTube (após v=)",
|
||
"field.track_id": "ID da Faixa",
|
||
"field.track_id_hint": "Encontre o ID da faixa na URL de incorporação do SoundCloud",
|
||
"field.audio_file": "Arquivo de Áudio",
|
||
"field.description": "Descrição",
|
||
"field.heading_text": "Texto do Título",
|
||
"field.level": "Nível",
|
||
"field.subtitle": "Subtítulo (opcional)",
|
||
"field.quote_text": "Texto da Citação",
|
||
"field.attribution": "Atribuição (opcional)",
|
||
"field.alt_text": "Texto Alternativo",
|
||
"field.caption": "Legenda (opcional)",
|
||
"field.width": "Largura",
|
||
"field.title_optional": "Título (opcional)",
|
||
"field.list_items": "Itens da Lista",
|
||
"field.height": "Altura",
|
||
"option.default": "Padrão",
|
||
"option.highlight": "Destaque",
|
||
"option.large": "Grande",
|
||
"option.h1_page_title": "H1 — Título da Página",
|
||
"option.h2_section": "H2 — Seção",
|
||
"option.h3_subsection": "H3 — Subseção",
|
||
"option.h4_small": "H4 — Pequeno",
|
||
"option.full_width": "Largura Total",
|
||
"option.medium_75": "Médio (75%)",
|
||
"option.small_50": "Pequeno (50%)",
|
||
"option.bullet_list": "Lista com Marcadores",
|
||
"option.numbered_list": "Lista Numerada",
|
||
"option.small": "Pequeno",
|
||
"option.medium": "Médio",
|
||
"option.extra_large": "Extra Grande",
|
||
"news.title": "Notícias",
|
||
"news.new_post": "+ Nova Publicação",
|
||
"news.no_posts": "Nenhuma publicação ainda.",
|
||
"news.edit": "Editar",
|
||
"news.delete": "Excluir Publicação",
|
||
"news.untitled": "(sem título)",
|
||
"news.save_posts": "Salvar",
|
||
"news.post_title": "Título",
|
||
"news.post_slug": "Slug",
|
||
"news.post_date": "Data",
|
||
"news.post_author": "Autor",
|
||
"news.post_excerpt": "Resumo",
|
||
"news.post_image": "Imagem de Capa",
|
||
"news.post_content": "Conteúdo",
|
||
"news.draft": "Rascunho",
|
||
"news.published": "Publicado",
|
||
"news.post_language": "Idioma",
|
||
"news.publish": "Publicar",
|
||
"news.unpublish": "Despublicar",
|
||
"news.view": "Visualizar",
|
||
"news.all_posts": "Todas as Notícias",
|
||
"news.read_more": "Leia mais",
|
||
"toast.news_saved": "Publicação salva!",
|
||
"toast.news_deleted": "Publicação excluída",
|
||
"toast.news_created": "Publicação criada",
|
||
"toast.error_loading_news": "Erro ao carregar notícias: {message}",
|
||
"toast.news_date_required": "Data e título são obrigatórios",
|
||
"modal.delete_post": "Excluir Publicação",
|
||
"modal.delete_post_confirm": "Tem certeza de que deseja excluir \"{title}\"? Esta ação não pode ser desfeita.",
|
||
"settings.backup": "Backup",
|
||
"settings.backup_desc": "Graças à arquitetura de arquivos planos do raiju, os backups são rápidos e simples — baixe uma cópia completa do seu site incluindo todo o conteúdo, templates, imagens e configuração.",
|
||
"settings.backup_site": "Backup do Site",
|
||
"settings.backup_site_desc": "Cria um arquivo ZIP de todo o diretório do site. Arquivos de desenvolvimento (node_modules, .git, etc.) são excluídos.",
|
||
"settings.backup_create": "Criar Backup",
|
||
"settings.backup_creating": "Criando backup…",
|
||
"settings.backup_downloading": "Baixando…",
|
||
"toast.backup_site_created": "Backup criado — download iniciado.",
|
||
"toast.backup_site_failed": "Falha no backup: {message}",
|
||
"settings.restore_title": "Restaurar a partir do Backup",
|
||
"settings.restore_desc": "Envie um arquivo ZIP de backup do raiju baixado anteriormente para restaurar seu site.",
|
||
"settings.restore_mode_prompt": "Tipo de restauração — escolha uma opção",
|
||
"settings.restore_full": "Restauração Completa",
|
||
"settings.restore_full_desc": "Substitui tudo — arquivos do CMS, conteúdo, imagens e configuração. Um backup do estado atual é criado automaticamente antes da restauração.",
|
||
"settings.restore_content": "Somente Conteúdo",
|
||
"settings.restore_content_desc": "Substitui apenas seu conteúdo, imagens, fontes e templates de páginas. Os arquivos principais do CMS e as credenciais de administrador permanecem inalterados.",
|
||
"settings.restore_select_file": "Selecionar arquivo ZIP",
|
||
"settings.restore_change_file": "Alterar arquivo",
|
||
"settings.restore_btn": "Restaurar",
|
||
"settings.restore_uploading": "Enviando e restaurando…",
|
||
"settings.restore_warning_full": "Isso substituirá todo o seu site pelo conteúdo do ZIP de backup. Um backup do estado atual será criado primeiro. Esta ação não pode ser desfeita facilmente. Tem certeza?",
|
||
"settings.restore_warning_content": "Isso substituirá todo o conteúdo, imagens, fontes e templates de páginas pelo conteúdo do ZIP de backup. Os arquivos principais do CMS e suas credenciais de login não serão afetados. Continuar?",
|
||
"settings.scheduled_backups": "Automated backups",
|
||
"settings.scheduled_backups_desc": "Run periodic full-site backups via a server cron job or a secret web-cron URL. The retention rules below decide how many tiered copies to keep — tight enough for fast incident recovery, loose enough to surface issues that only show up months later.",
|
||
"settings.scheduled_enabled": "Scheduled backups enabled",
|
||
"settings.scheduled_enabled_hint": "When off, the server or web cron exits without doing anything. Manual backups via the button above still work.",
|
||
"settings.cron_mode": "Execution",
|
||
"settings.cron_mode_server": "Server cron",
|
||
"settings.cron_mode_web": "Web cron",
|
||
"settings.cron_mode_hint": "Server cron is more reliable. Web cron is meant for hosts that do not provide cron jobs.",
|
||
"settings.retention_title": "Retention",
|
||
"settings.retention_hint": "Backups are tagged daily, weekly, monthly, or yearly when they're created. The numbers below say how many of each tier to keep before the oldest of that tier is deleted.",
|
||
"settings.retention_daily": "Daily",
|
||
"settings.retention_weekly": "Weekly",
|
||
"settings.retention_monthly": "Monthly",
|
||
"settings.retention_yearly": "Yearly",
|
||
"settings.storage_limit": "Storage limit (MB)",
|
||
"settings.storage_limit_hint": "Hard cap on total backup storage. When reached, the oldest non-manual backups are deleted even if they're still within retention. 0 = no cap.",
|
||
"settings.backup_settings_save": "Save backup settings",
|
||
"settings.remote_backups": "Remote backup targets",
|
||
"settings.remote_backups_hint": "After each scheduled backup, raiju uploads the ZIP to every enabled target. Uploads are placed in a per-site subfolder below the configured remote path. Access tokens and passwords are saved in settings and hidden after saving.",
|
||
"settings.remote_oauth_beta_note": "Beta note: Browser-based connections to Dropbox, Google Drive, and Microsoft OneDrive may be limited depending on the providers' approval status.",
|
||
"settings.remote_add_target": "Add target",
|
||
"settings.remote_empty": "No remote targets configured yet.",
|
||
"settings.remote_test": "Test",
|
||
"settings.remote_upload": "Upload remote",
|
||
"settings.remote_uploading": "Uploading…",
|
||
"settings.remote_files": "Remote files",
|
||
"settings.remote_files_empty": "No remote backups found.",
|
||
"settings.remote_import": "Import",
|
||
"settings.remote_delete": "Delete remote backup",
|
||
"settings.remote_delete_confirm": "Delete this backup from remote storage? The local copy is not affected.",
|
||
"settings.remote_hint_sftp": "Requires an SSH/SFTP account and the PHP ssh2 extension on the raiju server.",
|
||
"settings.remote_hint_ftp": "Use this for classic FTP accounts such as Plesk FTP users. Enable FTPS when the server supports encrypted FTP.",
|
||
"settings.remote_error_dropbox_access_token_missing": "Dropbox access token is missing.",
|
||
"settings.remote_error_google_access_token_missing": "Google Drive access token is missing.",
|
||
"settings.remote_error_onedrive_access_token_missing": "OneDrive access token is missing.",
|
||
"settings.remote_error_ssh2_required": "PHP ssh2 extension is required for SFTP/SCP uploads.",
|
||
"settings.remote_error_ftp_required": "PHP FTP extension is required for FTP/FTPS uploads.",
|
||
"settings.remote_not_tested": "Not tested yet.",
|
||
"settings.remote_last_upload": "Last upload: {date} — {message}",
|
||
"settings.remote_placeholder_optional": "Optional",
|
||
"settings.remote_connect_dropbox": "Connect Dropbox",
|
||
"settings.remote_connect_google": "Connect Google",
|
||
"settings.remote_connect_onedrive": "Connect OneDrive",
|
||
"settings.remote_field_app_key": "App key",
|
||
"settings.remote_field_client_id": "Client ID",
|
||
"settings.remote_field_client_secret": "Client secret",
|
||
"settings.remote_field_access_token": "Access token",
|
||
"settings.remote_field_refresh_token": "Refresh token",
|
||
"settings.remote_field_path": "Folder path",
|
||
"settings.remote_field_folder_id": "Folder ID",
|
||
"settings.remote_field_folder_path": "Folder path",
|
||
"settings.remote_field_host": "Host",
|
||
"settings.remote_field_port": "Port",
|
||
"settings.remote_field_username": "Username",
|
||
"settings.remote_field_password": "Password",
|
||
"settings.remote_field_remote_path": "Remote path",
|
||
"settings.remote_field_ssl": "Use FTPS",
|
||
"settings.remote_field_passive": "Passive mode",
|
||
"settings.remote_field_endpoint": "Endpoint",
|
||
"settings.remote_field_region": "Region",
|
||
"settings.remote_field_bucket": "Bucket",
|
||
"settings.remote_field_prefix": "Prefix",
|
||
"settings.remote_field_access_key": "Access key",
|
||
"settings.remote_field_secret_key": "Secret key",
|
||
"settings.remote_field_path_style": "Use path-style URLs",
|
||
"settings.remote_field_url": "WebDAV URL",
|
||
"settings.remote_field_bearer_token": "Bearer token",
|
||
"settings.cron_setup": "Cron setup",
|
||
"settings.cron_setup_hint": "Create a daily scheduled task at 03:00. In Plesk choose “Run a PHP script”, enter the script path, and set the arguments to --action=run. This avoids relying on a php command in Plesk's PATH. If you use “Run a command”, use the absolute path to the PHP CLI binary.",
|
||
"settings.cron_script_path": "Script path",
|
||
"settings.cron_arguments": "Arguments",
|
||
"settings.cron_shell_command": "Command fallback",
|
||
"settings.web_cron_url": "Web-cron URL",
|
||
"settings.web_cron_hint": "If your host does not allow cron jobs, call this secret URL once per day through an external service such as cron-job.org or easycron.com. Anyone who knows this URL can start scheduled backups.",
|
||
"settings.cron_copy": "Copy",
|
||
"settings.cron_copied": "Copied",
|
||
"settings.last_run": "Last run",
|
||
"settings.last_run_never": "Never",
|
||
"settings.last_run_warning": "Cron has not run in {days} days — verify the crontab is active.",
|
||
"settings.last_run_ok": "Cron is running on schedule.",
|
||
"settings.last_run_error": "Last run failed: {message}",
|
||
"settings.storage_summary": "Storage in use",
|
||
"settings.storage_count": "{count} backup(s), total {size}",
|
||
"settings.storage_oldest": "Oldest: {date}",
|
||
"settings.storage_newest": "Newest: {date}",
|
||
"settings.backup_list_title": "Stored backups",
|
||
"settings.backup_list_empty": "No backups stored yet. Run the cron job once or click \"Create backup now\" above.",
|
||
"settings.backup_list_col_date": "Date",
|
||
"settings.backup_list_col_tier": "Tier",
|
||
"settings.backup_list_col_size": "Size",
|
||
"settings.backup_list_col_actions": "Actions",
|
||
"settings.backup_download": "Download",
|
||
"settings.backup_restore_from_pool": "Restore",
|
||
"settings.backup_delete": "Delete",
|
||
"settings.backup_delete_confirm": "Delete this backup? This cannot be undone.",
|
||
"settings.backup_restore_pool_warning_full": "This will replace your entire site with the contents of the selected backup. A new backup of the current state is created first. Continue?",
|
||
"settings.backup_restore_pool_warning_content": "This will replace your content, images, fonts, and page templates with the contents of the selected backup. CMS core files and your login credentials are not affected. Continue?",
|
||
"toast.scheduled_backup_settings_saved": "Backup settings saved.",
|
||
"toast.scheduled_backup_settings_failed": "Failed to save backup settings: {message}",
|
||
"toast.backup_delete_failed": "Failed to delete backup: {message}",
|
||
"toast.remote_test_success": "Remote target test succeeded.",
|
||
"toast.remote_test_failed": "Remote target test failed: {message}",
|
||
"toast.remote_upload_success": "Remote upload complete.",
|
||
"toast.remote_upload_failed": "Remote upload failed: {message}",
|
||
"toast.remote_list_failed": "Failed to load remote backups: {message}",
|
||
"toast.remote_import_success": "Remote backup imported locally.",
|
||
"toast.remote_import_failed": "Failed to import remote backup: {message}",
|
||
"toast.remote_delete_success": "Remote backup deleted.",
|
||
"toast.remote_delete_failed": "Failed to delete remote backup: {message}",
|
||
"toast.remote_no_enabled_targets": "No enabled remote targets configured.",
|
||
"toast.remote_dropbox_connected": "Dropbox connected.",
|
||
"toast.remote_oauth_connected": "Cloud storage connected.",
|
||
"toast.remote_dropbox_app_key_missing": "Enter and save a Dropbox app key first.",
|
||
"toast.remote_client_id_missing": "Enter and save a client ID first.",
|
||
"toast.remote_dropbox_connect_failed": "Dropbox connection failed: {message}",
|
||
"toast.remote_oauth_connect_failed": "Cloud storage connection failed: {message}",
|
||
"toast.restore_success_full": "Restauração completa concluída — {extracted} arquivos restaurados.",
|
||
"toast.restore_success_content": "Conteúdo restaurado — {extracted} arquivos atualizados.",
|
||
"toast.restore_failed": "Falha na restauração: {message}",
|
||
"settings.users": "Usuários",
|
||
"settings.users_desc": "Gerencie as contas de usuário que podem acessar o painel de administração.",
|
||
"settings.email_missing_title": "Endereço de email em falta",
|
||
"settings.email_missing_text": "A sua conta não tem endereço de email. Sem ele, a redefinição de senha por email não funcionará.",
|
||
"settings.email_missing_link": "Adicionar endereço de email agora",
|
||
"settings.add_user": "Adicionar usuário",
|
||
"settings.edit_user": "Editar usuário",
|
||
"settings.delete_user": "Excluir usuário",
|
||
"settings.delete_user_confirm": "Tem certeza de que deseja excluir o usuário \"{username}\"? Esta ação não pode ser desfeita.",
|
||
"settings.user_username": "Nome de usuário",
|
||
"settings.user_email": "Email",
|
||
"settings.user_role": "Papel",
|
||
"settings.user_last_login": "Último login",
|
||
"settings.user_actions": "Ações",
|
||
"settings.user_you": "você",
|
||
"settings.reset_password": "Redefinir senha",
|
||
"settings.reset_password_prompt": "Digite a nova senha para {username}:",
|
||
"toast.user_created": "Usuário criado",
|
||
"toast.user_updated": "Usuário atualizado",
|
||
"toast.user_deleted": "Usuário excluído",
|
||
"settings.email_inactive": "Inativo",
|
||
"settings.email_inactive_hint": "O envio de emails está desativado. Os envios do formulário de contato serão salvos localmente, mas nenhum email será enviado.",
|
||
"settings.menus": "Menus",
|
||
"settings.menus_desc": "Gerir a ordem das páginas em cada menu de navegação.",
|
||
"settings.menu_select": "Selecionar menu",
|
||
"settings.menu_order_empty": "Nenhuma página neste menu.",
|
||
"settings.menu_order_saved": "Ordem do menu guardada.",
|
||
"setup.admin_email": "Email (opcional)",
|
||
"setup.admin_email_placeholder": "admin@example.com",
|
||
"setup.admin_email_hint": "Usado para redefinição de senha. Pode ser adicionado posteriormente nas Configurações.",
|
||
"login.forgot_password": "Esqueceu a senha?",
|
||
"login.back_to_login": "Voltar ao login",
|
||
"login.reset_desc": "Digite seu endereço de email e enviaremos um link para redefinir sua senha.",
|
||
"login.reset_email_label": "Endereço de email",
|
||
"login.reset_send": "Enviar link de redefinição",
|
||
"login.reset_sent": "Se existir uma conta com esse email, um link de redefinição foi enviado.",
|
||
"login.reset_rate_limit": "Muitas solicitações. Tente novamente mais tarde.",
|
||
"login.reset_invalid_token": "Este link de redefinição é inválido ou expirou.",
|
||
"login.reset_password_mismatch": "As senhas não coincidem.",
|
||
"login.reset_password_weak": "A senha não atende aos requisitos.",
|
||
"login.reset_new_password_desc": "Digite sua nova senha.",
|
||
"login.reset_set_password": "Definir nova senha",
|
||
"login.reset_success": "A senha foi redefinida com sucesso. Agora você pode fazer login.",
|
||
"login.reset_email_subject": "Redefinição de senha",
|
||
"login.reset_email_body": "Olá {username},\n\nVocê solicitou uma redefinição de senha. Clique no link abaixo para definir uma nova senha:\n\n{url}\n\nEste link expira em 1 hora.\n\nSe você não solicitou isso, pode ignorar este email.",
|
||
"login.session_expired": "A sua sessão expirou. Por favor, inicie sessão novamente.",
|
||
"editor.nav_add_custom": "Add menu",
|
||
"close": "Fechar",
|
||
"banner.frontend_edit_title": "Editar in-line?",
|
||
"banner.frontend_edit_text": "Você veio de uma página pública. Pode editá-la diretamente no frontend.",
|
||
"banner.frontend_edit_cta": "Voltar para essa página",
|
||
"settings.frontend_login_redirect": "Após o login",
|
||
"settings.frontend_login_redirect_hint": "Para onde enviar um usuário que faz login pelo duplo-clique no ano do rodapé.",
|
||
"settings.frontend_login_redirect_auto": "Voltar para a página de origem (recomendado)",
|
||
"settings.frontend_login_redirect_dashboard": "Sempre ir para o painel",
|
||
"settings.login": "Login",
|
||
"settings.login_visual": "Aspeto do login",
|
||
"settings.visual_brand_asset": "Elemento de marca",
|
||
"settings.visual_brand_none": "Nenhum",
|
||
"settings.visual_brand_favicon": "Favicon",
|
||
"settings.visual_brand_logo": "Logótipo",
|
||
"settings.visual_image": "Imagem",
|
||
"settings.visual_image_hint": "Imagem opcional para a área de login.",
|
||
"settings.visual_image_layout": "Layout da imagem",
|
||
"settings.visual_image_none": "Sem imagem",
|
||
"settings.visual_image_left": "Imagem à esquerda",
|
||
"settings.visual_image_right": "Imagem à direita",
|
||
"settings.visual_image_background": "Imagem de fundo",
|
||
"settings.visual_overlay_color": "Cor de sobreposição",
|
||
"settings.visual_overlay_color_hint": "Usada quando a imagem é o fundo.",
|
||
"settings.visual_login_box": "Caixa de login",
|
||
"settings.visual_login_box_card": "Cartão",
|
||
"settings.visual_login_box_plain": "Simples",
|
||
"settings.visual_box_color": "Cor da caixa",
|
||
"settings.visual_box_color_hint": "Fundo do formulário de login.",
|
||
"settings.visual_box_text_color": "Cor do texto da caixa",
|
||
"settings.visual_box_text_color_hint": "Texto no formulário de login.",
|
||
"settings.save_login": "Salvar configurações de login",
|
||
"toast.login_saved": "Configurações de login salvas",
|
||
"settings.save_menus": "Salvar menus",
|
||
"settings.favicon_png": "Fallback PNG",
|
||
"settings.favicon_png_hint": "Ícone PNG opcional para navegadores, abas fixadas e dispositivos touch que preferem imagem raster.",
|
||
"settings.logo_size": "Tamanho do logo",
|
||
"settings.logo_size_hint": "Controla a altura do logo no cabeçalho público.",
|
||
"settings.logo_size_small": "Pequeno",
|
||
"settings.logo_size_medium": "Médio",
|
||
"settings.logo_size_large": "Grande",
|
||
"settings.default_og_image": "Default Open Graph image",
|
||
"settings.default_og_image_hint": "Used for sharing previews when a page has no custom Open Graph image. JPG/PNG only; recommended size: 1200 × 630 px.",
|
||
"settings.admin_logo": "Logo do admin",
|
||
"settings.admin_logo_hint": "Logo opcional para a barra superior de administração. Deixe vazio para usar o favicon.",
|
||
"settings.reset_branding": "Redefinir marca",
|
||
"mails.delete_read": "Excluir lidas",
|
||
"mails.delete_read_count": "Excluir lidas ({count})",
|
||
"mails.open_email_settings": "Abrir configurações de email",
|
||
"mails.email_inactive_title": "O envio de email está inativo:",
|
||
"mails.email_inactive_text": "As mensagens são salvas localmente, mas nenhuma notificação por email é enviada. Ative SMTP ou Sendmail para receber avisos.",
|
||
"mails.email_recipient_missing_title": "Email do destinatário ausente:",
|
||
"mails.email_recipient_missing_text": "As mensagens são salvas localmente, mas nenhuma notificação pode ser enviada sem um destinatário.",
|
||
"toast.read_messages_deleted": "{count} mensagens lidas excluídas",
|
||
"modal.delete_read_messages": "Excluir mensagens lidas",
|
||
"modal.delete_read_messages_confirm": "Excluir {count} mensagens lidas? Esta ação não pode ser desfeita.",
|
||
"nav.image_manager": "Gestor de imagens",
|
||
"nav.media_library": "Media Library",
|
||
"nav.icon_manager": "Icon Manager",
|
||
"media_manager": "Media Library",
|
||
"image_manager": "Image Manager",
|
||
"image.formats_hint": "Supported image formats: JPG, PNG, WebP, GIF, SVG",
|
||
"audio.formats_hint": "Supported audio formats: MP3, WAV, OGG, M4A, AAC, FLAC",
|
||
"media.video_formats_hint": "Supported video formats: MP4, WebM, MOV, M4V",
|
||
"media.document_formats_hint": "Supported documents: PDF, Office, text files",
|
||
"media.type_all": "All",
|
||
"media.type_images": "Images",
|
||
"media.type_audio": "Audio",
|
||
"media.type_video": "Video",
|
||
"media.type_documents": "Documents",
|
||
"media.no_files": "No files found.",
|
||
"media.no_selection": "No file selected.",
|
||
"media.selection_count": "{count} files selected",
|
||
"media.file": "File",
|
||
"media.open_file": "Open file",
|
||
"media.folder": "Folder",
|
||
"media.folders": "Folders",
|
||
"media.folder_all": "All folders",
|
||
"media.folder_root": "Main folder",
|
||
"media.folder_create": "New folder",
|
||
"media.folder_create_prompt": "Folder name (letters, numbers, hyphen, underscore, dot; one level only):",
|
||
"media.download_file": "Download image",
|
||
"media.folder_created": "Folder created",
|
||
"media.folder_delete": "Delete folder",
|
||
"media.folder_delete_confirm": "Delete the empty folder \"{folder}\"?",
|
||
"media.folder_deleted": "Folder deleted",
|
||
"media.move_file": "Move file",
|
||
"media.move_file_prompt": "Move to folder. Leave empty for no folder. Available: {folders}",
|
||
"media.file_moved": "File moved",
|
||
"media.rename_file": "Rename file",
|
||
"media.ai_label": "Rótulo de IA",
|
||
"media.ai_none": "Sem rótulo",
|
||
"media.ai_generated": "Gerado por IA",
|
||
"media.ai_generated_desc": "Criado com IA, p. ex. com um gerador de imagens",
|
||
"media.ai_modified": "Modificado por IA",
|
||
"media.ai_modified_desc": "Foto real alterada com IA, p. ex. com preenchimento ou expansão generativos",
|
||
"media.ai_hint": "Segundo o artigo 50.º do Regulamento Europeu da IA, as imagens realistas criadas ou alteradas com IA têm de ser assinaladas. O rótulo aparece automaticamente no site.",
|
||
"media.ai_saved": "Rótulo de IA guardado",
|
||
"media.ai_detected": "Origem de IA detetada: a imagem foi assinalada.",
|
||
"media.large_title": "Grande para uma página web ({size}). Melhor inserir uma versão mais pequena.",
|
||
"media.large_badge": "grande",
|
||
"media.download_original": "Transferir o original ({size})",
|
||
"media.original_title": "Original guardado: {size}, {width} × {height} px. As páginas usam a versão web; a transferência entrega o original.",
|
||
"media.original_badge": "Original",
|
||
"media.original_copy_path": "Copiar o caminho do original",
|
||
"media.original_view": "Ver o original",
|
||
"media.original_hint": "As páginas inserem a versão web. O original está em assets/images-originals/ para transferência e impressão, não para inserir; acompanha o ficheiro ao renomear, mover e eliminar.",
|
||
"media.original_info": "{size}, {width} × {height} px (versão web {web})",
|
||
"media.original_dialog_title": "Ficheiro original",
|
||
"media.web_version_created": "Versão web criada: {width} × {height} px, {size}. O original fica guardado; o distintivo «Original» no ficheiro abre-o.",
|
||
"media.size_limit_error": "{name} é demasiado grande (máx. {max} MB).",
|
||
"media.server_limit_error": "{name} é demasiado grande: o servidor aceita envios até {max} MB (upload_max_filesize / post_max_size).",
|
||
"media.server_limit": "limite do servidor {max} MB",
|
||
"media.upload_limit": "até {max} MB por ficheiro",
|
||
"media.ai_badge": "IA",
|
||
"media.rename_new_name": "New filename",
|
||
"media.rename_scan_references": "Search JSON content for existing references first",
|
||
"media.rename_extension_hint": "The file extension cannot be changed. .jpeg and .jpg count as equivalent.",
|
||
"media.rename_references_found": "{count} reference(s) found in JSON content.",
|
||
"media.rename_references_confirm": "If you rename the file anyway, existing pages may still point to the old path.",
|
||
"media.rename_confirm_anyway": "Rename anyway",
|
||
"media.file_renamed": "File renamed",
|
||
"media.previous_image": "Previous image",
|
||
"media.next_image": "Next image",
|
||
"image.library": "Library",
|
||
"image.no_selection": "No image selected.",
|
||
"image.trash": "Trash",
|
||
"image.search": "Search files",
|
||
"image.grid_view": "Grid view",
|
||
"image.list_view": "List view",
|
||
"image.upload": "Upload",
|
||
"image.drop_files": "Drop files here",
|
||
"image.or": "or",
|
||
"image.select": "Select",
|
||
"image.empty_trash": "Empty trash",
|
||
"image.col_filename": "Filename",
|
||
"image.col_size": "Size",
|
||
"image.col_date": "Date",
|
||
"image.copy_path": "Copy path",
|
||
"image.replace": "Replace",
|
||
"image.restore": "Restore",
|
||
"image.delete_permanently": "Delete permanently",
|
||
"image.no_search_results": "No matching files.",
|
||
"image.loading": "Loading...",
|
||
"image.uploading": "Uploading...",
|
||
"image.uploaded": "File uploaded",
|
||
"image.trashed": "File moved to trash",
|
||
"image.restored": "File restored",
|
||
"image.replaced": "File replaced",
|
||
"image.replacing": "Replacing...",
|
||
"image.deleted_permanently": "File deleted permanently",
|
||
"image.trash_emptied": "Trash emptied",
|
||
"image.empty_trash_confirm": "Empty the media trash? This cannot be undone.",
|
||
"image.delete_permanently_confirm": "Delete this file permanently? This cannot be undone.",
|
||
"image.exists": "A file with this name already exists.",
|
||
"image.overwrite_file": "Overwrite file",
|
||
"image.overwrite_desc": "Replace the existing file with the uploaded file.",
|
||
"image.save_new_name": "Save with new name",
|
||
"image.save_new_desc": "Keep both files and save the upload with a new name.",
|
||
"image.choose_file": "Choose file",
|
||
"image.format_error": "This file type is not supported.",
|
||
"image.size_error": "This file is too large.",
|
||
"image.trash_hint": "Files in trash can be restored or deleted permanently.",
|
||
"image_preview": "Image preview",
|
||
"icons.title": "Icon Manager",
|
||
"icons.add_icon": "Add Icon",
|
||
"icons.edit_icon": "Edit Icon",
|
||
"icons.delete_icon": "Delete Icon",
|
||
"icons.empty": "No icons available.",
|
||
"icons.path": "Icon set: {path}",
|
||
"icons.filter": "Search icons",
|
||
"icons.filter_placeholder": "Name, key, or tag",
|
||
"icons.sort": "Sort order",
|
||
"icons.sort_alpha": "Alphabetical",
|
||
"icons.sort_newest": "Newest first",
|
||
"icons.sort_oldest": "Oldest first",
|
||
"icons.key": "Icon key",
|
||
"icons.key_hint": "Renaming an icon key can break existing content that references the old key.",
|
||
"icons.label": "Label",
|
||
"icons.tags": "Tags",
|
||
"icons.tags_hint": "Stored metadata for search and filtering in icon pickers; does not affect rendering.",
|
||
"icons.viewbox": "ViewBox",
|
||
"icons.svg": "SVG code",
|
||
"icons.svg_hint": "Paste SVG inner markup or a full <svg>. raiju stores only the inner markup and adds the outer <svg> with a 24x24 viewBox when rendering. Scripts, event handlers, external references, and unsupported tags are removed on save.",
|
||
"icons.preview": "Preview",
|
||
"icons.source_core": "Core default",
|
||
"icons.source_custom": "Custom",
|
||
"icons.rename_warning_title": "Icon key changed",
|
||
"icons.rename_warning": "Existing JSON content may still reference the old icon key and will then fall back to the default icon.",
|
||
"icons.rename_confirm": "Rename this icon key? Existing content may still reference the old key.",
|
||
"icons.delete_confirm": "Delete icon \"{key}\"? Existing content that references this key will fall back to the default icon.",
|
||
"icons.saved": "Icon saved.",
|
||
"icons.deleted": "Icon deleted.",
|
||
"icons.load_error": "Error loading icons: {message}",
|
||
"icons.save_error": "Error saving icon: {message}",
|
||
"icons.delete_error": "Error deleting icon: {message}",
|
||
"icons.cleanup": "Clean up",
|
||
"icons.current_color": "Use currentColor",
|
||
"icons.cleanup_done": "SVG code cleaned up.",
|
||
"icons.import_icon": "Import from Icon Library",
|
||
"icons.icon_set": "Icon set",
|
||
"icons.search": "Search",
|
||
"icons.import": "Import",
|
||
"icons.imported_short": "Imported",
|
||
"icons.imported": "Icon imported.",
|
||
"icons.import_empty": "No icons found.",
|
||
"icons.import_loading": "Loading icons ...",
|
||
"icons.import_error": "Error importing icon: {message}",
|
||
"icons.import_query_short": "Enter at least 2 characters.",
|
||
"icons.import_license_hint": "Searching {set} through Iconify. License: {license}. Imported icons are stored locally.",
|
||
"icons.current_color_done": "Icon colors set to currentColor.",
|
||
"settings.access": "Access",
|
||
"settings.access_desc": "Control maintenance mode and preview bypass access.",
|
||
"settings.maintenance": "Maintenance mode",
|
||
"settings.maintenance_enabled": "Enable maintenance mode",
|
||
"settings.maintenance_mode": "Mode",
|
||
"settings.maintenance_mode_maintenance": "Maintenance",
|
||
"settings.maintenance_mode_offline": "Back soon",
|
||
"settings.maintenance_mode_launch": "Launch countdown",
|
||
"settings.maintenance_title": "Title",
|
||
"settings.maintenance_text": "Text",
|
||
"settings.maintenance_default_title": "Maintenance",
|
||
"settings.maintenance_default_text": "We will be back online shortly.",
|
||
"settings.maintenance_until": "Unavailable until",
|
||
"settings.maintenance_countdown": "Show countdown",
|
||
"settings.access_bypass": "Bypass link",
|
||
"settings.access_bypass_desc": "Com estes links o site continua acessível durante o modo de manutenção. Um link é composto pelo endereço do site, um ponto de interrogação, o parâmetro de URL, um sinal de igual e a chave. Crie vários links para pessoas diferentes e revogue cada um eliminando-o.",
|
||
"settings.access_bypass_link": "Link:",
|
||
"settings.access_bypass_key_placeholder": "CHAVE",
|
||
"settings.access_bypass_param": "URL parameter",
|
||
"settings.access_bypass_key": "Chave",
|
||
"settings.access_bypass_add": "Adicionar link",
|
||
"settings.access_bypass_remove": "Remover link",
|
||
"settings.group_site": "Site",
|
||
"settings.group_features": "Features",
|
||
"settings.group_users": "Users",
|
||
"settings.group_system": "System",
|
||
"settings.modules": "Dashboard modules",
|
||
"settings.modules_nav": "Modules",
|
||
"settings.modules_desc": "Control which dashboard feature areas are available in this installation.",
|
||
"settings.modules_hint": "Disabled modules are hidden from dashboard navigation. When AI Features is off, AI tools and AI buttons are hidden throughout the admin UI. Existing content remains stored and can be re-enabled later.",
|
||
"settings.media_web_quality": "Qualidade WebP (50–95)",
|
||
"settings.media_web_max_side": "Lado mais longo da versão web (px)",
|
||
"settings.media_web_version_hint": "Imagens JPG, PNG e WebP grandes são reduzidas ao lado mais longo e guardadas como WebP ao enviar; as páginas inserem essa versão. O original fica em assets/images-originals/ e pode ser transferido na biblioteca.",
|
||
"settings.media_web_version": "Criar uma versão web ao enviar",
|
||
"settings.media_max_upload_hint": "Aplica-se a JPG, PNG, WebP, GIF e SVG. O servidor também limita os envios (upload_max_filesize, post_max_size); o estado do sistema mostra ambos os valores.",
|
||
"settings.media_max_upload": "Limite de envio para imagens (MB)",
|
||
"settings.media_section": "Biblioteca multimédia",
|
||
"settings.module_ai": "AI Features",
|
||
"settings.module_news": "News",
|
||
"settings.module_events": "Events",
|
||
"settings.module_messages": "Messages",
|
||
"settings.module_icon_manager": "Icon Manager",
|
||
"settings.privacy": "Privacy",
|
||
"settings.privacy_desc": "Control frontend privacy behavior and local browser storage.",
|
||
"settings.email_obfuscation": "Obfuscate email addresses",
|
||
"settings.email_obfuscation_hint": "Public pages replace email addresses with JavaScript-decoded placeholders.",
|
||
"settings.remember_public_theme": "Remember public theme choice",
|
||
"settings.remember_public_theme_hint": "Stores the visitor's light/dark preference in local browser storage. Disable for highly privacy-sensitive sites.",
|
||
"settings.save_access": "Save Access Settings",
|
||
"settings.save_modules": "Save Dashboard Modules",
|
||
"settings.save_privacy": "Save Privacy Settings",
|
||
"toast.access_saved": "Access settings saved.",
|
||
"toast.modules_saved": "Dashboard modules saved.",
|
||
"toast.privacy_saved": "Privacy settings saved.",
|
||
"editor.visibility": "Visibility",
|
||
"editor.visibility_public": "Public",
|
||
"editor.visibility_private": "Private, password protected",
|
||
"editor.visibility_password": "Page password",
|
||
"editor.visibility_title": "Password page title",
|
||
"editor.visibility_text": "Password page text",
|
||
"editor.visibility_password_hint": "Required when switching the page to private.",
|
||
"editor.visibility_password_set": "A password is already stored. Enter a new one only to replace it.",
|
||
"editor.seo": "SEO / AEO",
|
||
"editor.settings_basics": "Basics",
|
||
"editor.settings_navigation": "Navigation",
|
||
"editor.settings_access": "Access",
|
||
"editor.seo_hint": "Search previews, answer summaries, sharing, and indexing.",
|
||
"editor.ai_fill_seo": "Fill SEO fields with AI",
|
||
"editor.ai_fill_field": "Fill this field with AI",
|
||
"editor.ai_generating": "AI is generating...",
|
||
"editor.ai_done": "AI suggestion inserted.",
|
||
"editor.ai_unavailable": "AI text generation is not active.",
|
||
"editor.seo_title": "SEO title (defaults to page title)",
|
||
"editor.seo_description": "Meta description (defaults to page description)",
|
||
"editor.seo_answer_summary": "Short answer / AI summary for answer engines",
|
||
"editor.seo_canonical": "Canonical URL (optional)",
|
||
"editor.seo_robots_index": "Index, follow",
|
||
"editor.seo_robots_noindex": "Noindex, follow",
|
||
"editor.seo_robots_private": "Noindex, nofollow",
|
||
"editor.seo_og_title": "Open Graph title",
|
||
"editor.seo_og_description": "Open Graph description",
|
||
"editor.seo_og_image": "Open Graph image",
|
||
"editor.seo_og_image_format": "Open Graph images must be JPG or PNG files from /assets/images/.",
|
||
"editor.seo_sitemap": "Include in XML sitemap",
|
||
"ai.title": "AI",
|
||
"ai.settings": "AI Settings",
|
||
"ai.settings_desc": "Configure an OpenAI-compatible AI provider, budgets, quotas, and enabled AI features.",
|
||
"ai.open_settings": "AI Settings",
|
||
"ai.not_configured_title": "AI is not configured",
|
||
"ai.not_configured_text": "Add an API key or configure an explicitly allowed local provider before AI tools can be used.",
|
||
"ai.module_disabled_status": "As funcionalidades de IA estão desativadas nos módulos.",
|
||
"ai.dismiss_notice": "Fechar aviso de IA",
|
||
"ai.disabled_status": "A provider is configured, but AI features are disabled.",
|
||
"ai.configured_status": "AI is configured and enabled. Usage limits and audit logging are active.",
|
||
"ai.assistant": "Assistant",
|
||
"ai.assistant_placeholder": "Ask how to change settings, edit content, or use raiju.",
|
||
"ai.text_generator": "Text generator",
|
||
"ai.text_placeholder": "Example: Write an SEO meta description for this page...",
|
||
"ai.image_generator": "Image generator",
|
||
"ai.image_prompt": "Image prompt",
|
||
"ai.image_placeholder": "Describe the image to generate.",
|
||
"ai.image_generator_disabled": "O gerador de imagens está desativado nas definições de IA.",
|
||
"ai.image_filename": "Filename",
|
||
"ai.image_filename_placeholder": "e.g. homepage-hero",
|
||
"ai.image_filename_hint": "Without file extension. The output format determines .png, .jpg, or .webp.",
|
||
"ai.image_filename_suggest": "Suggest from prompt",
|
||
"ai.send": "Send",
|
||
"ai.chat_shortcuts": "Enter to send · Cmd/Ctrl+Enter for a line break.",
|
||
"ai.chat_shortcuts_mac": "Enter to send · Cmd+Enter for a line break.",
|
||
"ai.chat_shortcuts_ctrl": "Enter to send · Ctrl+Enter for a line break.",
|
||
"ai.answering": "Generating answer...",
|
||
"ai.generate_text": "Generate Text",
|
||
"ai.generate_image": "Generate Image",
|
||
"ai.generate_images": "Generate Images",
|
||
"ai.generating": "Generating...",
|
||
"ai.max_output_tokens": "Max output tokens",
|
||
"ai.image_size": "Resolution / orientation",
|
||
"ai.image_size_auto": "Auto",
|
||
"ai.image_scale": "Resolution",
|
||
"ai.image_cost_per_image": "Estimated cost per image: {cost}",
|
||
"ai.image_size_note": "Computed image size: {size}.",
|
||
"ai.image_size_note_auto": "Provider chooses the image size automatically.",
|
||
"ai.image_orientation_square": "Square",
|
||
"ai.image_orientation_landscape": "Landscape",
|
||
"ai.image_orientation_portrait": "Portrait",
|
||
"ai.image_format": "Format",
|
||
"ai.image_quality": "Quality / detail level",
|
||
"ai.image_auto": "Auto",
|
||
"ai.image_quality_low": "Low",
|
||
"ai.image_quality_medium": "Medium",
|
||
"ai.image_quality_high": "High",
|
||
"ai.image_background": "Background",
|
||
"ai.image_background_opaque": "Opaque",
|
||
"ai.image_background_transparent": "Transparent",
|
||
"ai.image_moderation": "Segurança do provedor",
|
||
"ai.image_moderation_standard": "Standard",
|
||
"ai.image_moderation_low": "Menos rigoroso",
|
||
"ai.image_compression": "Compression",
|
||
"ai.image_count": "Images",
|
||
"ai.image_count_increase": "Increase image count",
|
||
"ai.image_count_decrease": "Decrease image count",
|
||
"ai.image_reference": "Reference image",
|
||
"ai.image_reference_upload": "Upload image",
|
||
"ai.image_reference_library": "Media Library",
|
||
"ai.image_reference_none": "No reference image",
|
||
"ai.image_reference_count": "{count} of {max} reference images",
|
||
"ai.image_reference_file": "Reference image",
|
||
"ai.image_reference_remove": "Remove reference image",
|
||
"ai.improve_prompt": "Improve prompt",
|
||
"ai.improving_prompt": "Improving...",
|
||
"ai.image_group_auto": "Auto",
|
||
"ai.image_group_square": "Square",
|
||
"ai.image_group_landscape": "Landscape",
|
||
"ai.image_group_portrait": "Portrait",
|
||
"ai.image_history_title": "Recent generations",
|
||
"ai.image_history_hint": "Saved locally with prompt, model, options, status, and media links.",
|
||
"ai.image_history_empty": "No image generations saved yet.",
|
||
"ai.image_history_load_more": "Load more",
|
||
"ai.image_history_clear": "Clear history",
|
||
"ai.image_history_clear_confirm": "Clear the complete image generation history? Generated image files remain in the Media Library.",
|
||
"ai.image_history_cleared": "Image generation history cleared.",
|
||
"ai.image_history_use_prompt": "Use prompt",
|
||
"ai.image_history_error": "No image",
|
||
"ai.image_history_status_success": "Created",
|
||
"ai.image_history_status_error": "Failed",
|
||
"ai.image_job_queued": "A geração da imagem foi iniciada em segundo plano.",
|
||
"ai.image_job_finished": "A geração da imagem terminou.",
|
||
"ai.image_job_failed": "A geração da imagem falhou.",
|
||
"ai.image_model_missing_note": "Add an image model in AI Settings before generating images.",
|
||
"ai.image_anthropic_note": "A Anthropic não tem API de imagens. Escolhe um serviço de imagens para que o agente e as funções de imagem possam criar imagens.",
|
||
"ai.image_openrouter_note": "OpenRouter image generation uses compatible multimodal models such as Gemini; options may vary by model.",
|
||
"ai.image_field_hint": "Need a new image for this field?",
|
||
"ai.open_image_generator": "AI Image Generator",
|
||
"ai.provider": "Provider",
|
||
"ai.enable_ai": "Enable AI features",
|
||
"ai.openai_compatible": "OpenAI-compatible",
|
||
"ai.anthropic": "Anthropic (Claude)",
|
||
"ai.openrouter": "OpenRouter",
|
||
"ai.openrouter_image_gpt": "GPT Image 2",
|
||
"ai.openai_image_gpt": "GPT Image 2",
|
||
"ai.openrouter_image_gemini_flash": "Nano Banana 2",
|
||
"ai.openrouter_image_gemini_pro": "Nano Banana Pro",
|
||
"ai.openrouter_image_model_hint": "OpenRouter requires provider-prefixed model IDs; raiju stores the selected ID automatically.",
|
||
"ai.base_url": "Base URL",
|
||
"ai.allow_local_provider": "Allow local/private provider URL",
|
||
"ai.allow_local_provider_hint": "Required for Ollama, LM Studio, or self-hosted providers on localhost/private networks.",
|
||
"ai.api_key": "API key",
|
||
"ai.api_key_saved": "Chave API guardada. Deixa-a inalterada para a manter.",
|
||
"ai.api_key_missing": "No API key stored. Local providers may work without one.",
|
||
"ai.clear_api_key": "Remove stored API key",
|
||
"ai.organization": "ID da organização OpenAI (opcional)",
|
||
"ai.models": "Models",
|
||
"ai.chat_model": "Chat model",
|
||
"ai.text_model": "Text model",
|
||
"ai.image_model": "Image model",
|
||
"ai.features": "Features",
|
||
"ai.feature_assistant": "Backend assistant",
|
||
"ai.feature_seo": "SEO/text generation",
|
||
"ai.feature_images": "Image generation",
|
||
"ai.assistant_surface_visual_editor": "Show chatbot in Visual Editor",
|
||
"ai.assistant_surface_dashboard": "Show chatbot in Dashboard",
|
||
"ai.assistant_force_english": "Ignore dashboard language setting - always use English for the chatbot",
|
||
"ai.assistant_force_english_hint": "When enabled, the AI Assistant answers in English even if the dashboard is shown in another language.",
|
||
"ai.limits": "Limits",
|
||
"ai.monthly_budget": "Monthly budget (cents)",
|
||
"ai.daily_requests": "Daily requests",
|
||
"ai.daily_text_requests": "Daily text requests",
|
||
"ai.daily_image_requests": "Daily image requests",
|
||
"ai.max_input_tokens": "Max input tokens",
|
||
"ai.max_input_tokens_hint": "Recomendação: 64.000. Chega para o agente e páginas longas; baixe-o apenas em sites muito pequenos para poupar custos.",
|
||
"ai.max_output_tokens_hint": "Recomendação: 16.000. Os modelos de raciocínio contam o seu raciocínio neste limite, por isso um valor baixo pode cortar respostas. O limite só restringe uma resposta; paga o que for gerado.",
|
||
"ai.request_timeout": "Request timeout (sec.)",
|
||
"ai.request_timeout_hint": "Recomendação: 300 segundos para geração de imagens; pedidos de texto geralmente terminam antes.",
|
||
"ai.pricing": "Cost estimates",
|
||
"ai.input_price": "Input cents / 1M tokens",
|
||
"ai.output_price": "Output cents / 1M tokens",
|
||
"ai.image_price": "Preço predefinido por imagem (cêntimos)",
|
||
"ai.save_settings": "Save AI Settings",
|
||
"ai.test_connection": "Test Connection",
|
||
"ai.testing": "Testing...",
|
||
"ai.connection_ok": "AI connection works.",
|
||
"ai.settings_saved": "AI settings saved.",
|
||
"ai.audit_tab": "Content audit",
|
||
"ai.audit_hint": "Scan all pages for missing or weak SEO descriptions and images without alt text. The scan itself is free; suggestions use the AI text model.",
|
||
"ai.audit_run": "Run audit",
|
||
"ai.audit_running": "Scanning pages...",
|
||
"ai.audit_empty": "No pages found.",
|
||
"ai.audit_col_page": "Page",
|
||
"ai.audit_col_description": "SEO description",
|
||
"ai.audit_col_alt": "Image alt texts",
|
||
"ai.audit_status_missing": "Missing",
|
||
"ai.audit_status_short": "Too short",
|
||
"ai.audit_status_long": "Too long",
|
||
"ai.audit_status_ok": "OK",
|
||
"ai.audit_alt_missing": "{count} missing",
|
||
"ai.audit_suggest": "Suggest description",
|
||
"ai.audit_apply": "Apply",
|
||
"ai.audit_applied": "Applied",
|
||
"ai.audit_apply_confirm": "Save this description to \"{page}\"? A backup is created first.",
|
||
"ai.usage_panel": "Usage this month",
|
||
"ai.usage_requests_today": "Requests today",
|
||
"ai.usage_text_image_split": "{text} text · {images} image",
|
||
"ai.usage_cost_month": "Cost this month",
|
||
"ai.usage_requests_month": "{requests} requests",
|
||
"ai.usage_tokens_month": "Tokens this month",
|
||
"ai.usage_tokens_split": "{input} in · {output} out",
|
||
"ai.usage_budget": "Monthly budget",
|
||
"ai.usage_budget_value": "{spent} of {budget} ({percent}%)",
|
||
"ai.pricing_autofilled": "Pricing fields were filled from the OpenRouter model data. Review and save.",
|
||
"ai.model_list_open": "Show model suggestions",
|
||
"ai.usage_summary": "Today: {today} requests · Month: {cost}",
|
||
"dashboard_home.title": "Dashboard",
|
||
"dashboard_home.page_views_today": "Views today",
|
||
"dashboard_home.page_views_30d": "Views in 30 days",
|
||
"dashboard_home.visitors_30d": "Visitors in 30 days",
|
||
"dashboard_home.visits_30d": "Visits in 30 days",
|
||
"dashboard_home.bots_filtered": "Bots filtered",
|
||
"dashboard_home.pages": "Pages",
|
||
"dashboard_home.news": "News posts",
|
||
"dashboard_home.top_pages": "Top pages",
|
||
"dashboard_home.referrers": "Referrers",
|
||
"dashboard_home.devices": "Devices",
|
||
"dashboard_home.browsers_os": "Browsers / OS",
|
||
"dashboard_home.no_views": "No page views recorded yet.",
|
||
"dashboard_home.no_data": "No data yet.",
|
||
"dashboard_home.views_detail": "{views} views · {visitors} visitors · {visits} visits",
|
||
"dashboard_home.ai_status": "AI status",
|
||
"dashboard_home.ai_tools": "AI tools",
|
||
"dashboard_home.analytics": "Analytics",
|
||
"dashboard_home.analytics_hint": "Visitor overview for the last 30 days with bot traffic filtered.",
|
||
"dashboard_home.analytics_details": "Technology details",
|
||
"dashboard_home.content_overview": "Content overview",
|
||
"dashboard_home.traffic_curve": "Traffic trend",
|
||
"dashboard_home.views_label": "views",
|
||
"dashboard_home.analytics_range": "Analytics range",
|
||
"dashboard_home.range_days": "30 days",
|
||
"dashboard_home.range_months": "12 months",
|
||
"dashboard_home.range_years": "Years",
|
||
"dashboard_home.range_label_days": "last {count} days",
|
||
"dashboard_home.range_label_months": "last {count} months",
|
||
"dashboard_home.range_label_years": "all years",
|
||
"dashboard_home.views_period": "Views in {period}",
|
||
"dashboard_home.visitors_period": "Visitors in {period}",
|
||
"dashboard_home.visits_period": "Visits in {period}",
|
||
"dashboard_home.hourly_distribution": "Today by hour",
|
||
"dashboard_home.today": "Today",
|
||
"dashboard_home.site_status": "Site status",
|
||
"dashboard_home.unread_messages": "Unread messages",
|
||
"dashboard_home.backup_status": "Last backup",
|
||
"dashboard_home.auto_backup": "Auto backup",
|
||
"dashboard_home.no_backup": "No backup",
|
||
"dashboard_home.active": "Active",
|
||
"dashboard_home.inactive": "Inactive",
|
||
"dashboard_home.recent_edit": "Last edited",
|
||
"dashboard_home.current_user": "Signed in",
|
||
"save": "Salvar",
|
||
"saving": "Saving...",
|
||
"cancel": "Cancelar",
|
||
"delete": "Excluir",
|
||
"edit": "Editar",
|
||
"logout": "Sair",
|
||
"show": "Visualizar",
|
||
"hide": "Hide",
|
||
"undo": "Desfazer (⌘Z)",
|
||
"redo": "Refazer (⇧⌘Z)",
|
||
"bold": "Bold",
|
||
"italic": "Italic",
|
||
"insert_link": "Insert link",
|
||
"clean_formatting": "Clean formatting",
|
||
"visual_editor": "Visual editor",
|
||
"content_editor": "Content editor",
|
||
"edit_block_title": "Edit block",
|
||
"edit_mode_hint": "Edit mode is active.",
|
||
"drag_reorder": "Drag to reorder",
|
||
"search_blocks": "Search blocks",
|
||
"add_block": "Add block",
|
||
"cat.content": "Editor de Conteúdo",
|
||
"cat.media": "Media",
|
||
"cat.embed": "Embed",
|
||
"cat.cards": "Cards",
|
||
"cat.layout": "Layout",
|
||
"cat.interactive": "Interactive",
|
||
"btn.move_up": "Move up",
|
||
"btn.move_down": "Move down",
|
||
"nav.edit_mode_active": "Edit mode active",
|
||
"nav.unsaved_changes": "Unsaved changes",
|
||
"link_internal": "Internal link",
|
||
"link_external": "External link",
|
||
"link_target": "Link target",
|
||
"link_open_new_tab": "Open in new tab",
|
||
"link_offer_download": "Offer as download",
|
||
"footer.edit": "Edit footer",
|
||
"footer.copyright": "Copyright",
|
||
"footer.link_text": "Link text",
|
||
"footer.link_url": "Link URL",
|
||
"item.delete": "Delete item",
|
||
"item.delete_confirm": "Delete this item?",
|
||
"section.delete": "Delete section",
|
||
"section.delete_confirm": "Delete this section?",
|
||
"section.reload_hint": "Reload the page to see the updated section layout.",
|
||
"image.col_actions": "Ações",
|
||
"editor.change_image": "Selecionar Imagem",
|
||
"audio.manager": "Audio Library",
|
||
"audio.upload": "Upload audio",
|
||
"audio.select": "Select audio",
|
||
"audio.search": "Search audio",
|
||
"audio.no_files": "No audio files found.",
|
||
"audio.loading": "Loading audio...",
|
||
"audio.play": "Play audio",
|
||
"audio.playing": "Playing audio",
|
||
"audio.delete": "Delete audio",
|
||
"audio.delete_confirm": "Delete this audio file?",
|
||
"audio.uploaded": "Audio uploaded",
|
||
"audio.trashed": "Audio moved to trash",
|
||
"audio.trash_hint": "Audio files in trash can be restored or deleted permanently.",
|
||
"audio.error_loading": "Error loading audio files.",
|
||
"audio.format_error": "This audio format is not supported.",
|
||
"audio.size_error": "This audio file is too large.",
|
||
"event.new": "+ Novo Evento",
|
||
"event.edit": "Editar",
|
||
"event.delete": "Excluir",
|
||
"event.delete_confirm": "Delete this event? This cannot be undone.",
|
||
"event.cannot_undo": "This cannot be undone.",
|
||
"event.copy_to_all": "Copy to all languages",
|
||
"event.date_required": "Data de início",
|
||
"event.title": "Title",
|
||
"event.location": "Local",
|
||
"event.description": "Description",
|
||
"event.admission": "Admission",
|
||
"event.url": "URL",
|
||
"event.image": "Logo",
|
||
"event.start_date": "Data de início",
|
||
"event.start_time": "Hora de início",
|
||
"event.end_date": "Data de término",
|
||
"event.end_time": "Hora de término",
|
||
"history.title": "History",
|
||
"history.empty": "No history entries yet.",
|
||
"history.restore": "Restore",
|
||
"history.restore_title": "Restore version",
|
||
"history.restore_confirm": "Restore this version? Current unsaved changes will be lost.",
|
||
"history.overwrite": "Overwrite current content",
|
||
"history.overwrite_warning": "This will overwrite the current content.",
|
||
"history.not_found": "History entry not found.",
|
||
"history.clear": "Clear history",
|
||
"history.clear_confirm": "Clear history? This cannot be undone.",
|
||
"history.cleared": "History cleared.",
|
||
"toast.error": "Something went wrong.",
|
||
"toast.error_saving_short": "Could not save.",
|
||
"toast.error_deleting": "Could not delete.",
|
||
"toast.error_undo": "Could not undo.",
|
||
"toast.upload_error": "Upload failed.",
|
||
"toast.no_changes": "No changes to save.",
|
||
"toast.copied": "Copied.",
|
||
"toast.copied_to_empty": "Copied into empty field.",
|
||
"toast.change_queued": "Change queued.",
|
||
"toast.order_changed": "Order changed.",
|
||
"toast.hidden": "Hidden.",
|
||
"toast.visible": "Visible.",
|
||
"toast.row_hidden": "Row hidden.",
|
||
"toast.row_visible": "Row visible.",
|
||
"toast.event_hidden": "Event hidden.",
|
||
"toast.event_visible": "Event visible.",
|
||
"toast.undone": "Change undone.",
|
||
"toast.formatting_cleaned": "Formatting cleaned.",
|
||
"toast.select_text_first": "Select text first.",
|
||
"toast.sort_same_section": "Items can only be sorted within the same section.",
|
||
"copilot.title": "AI Assistant",
|
||
"copilot.type_page": "Standard page",
|
||
"copilot.type_news": "News post",
|
||
"copilot.type_event": "Event / appointment",
|
||
"copilot.type_form": "Form",
|
||
"copilot.subtitle": "Safe editor assistance",
|
||
"copilot.close": "Close AI Assistant",
|
||
"copilot.placeholder": "Ask how to change this page...",
|
||
"copilot.ask": "Ask AI Assistant",
|
||
"copilot.draft_changes": "Draft changes",
|
||
"copilot.draft_content": "Draft content",
|
||
"copilot.draft_image": "Image",
|
||
"copilot.shortcut_needs_prompt": "Enter an instruction first.",
|
||
"copilot.draft_changes_hint": "Open a guided dialog to prepare a reviewed page change.",
|
||
"copilot.draft_content_hint": "Open a guided dialog to prepare a new page, news post, event, or appointment.",
|
||
"copilot.draft_image_hint": "Open image options and enter or refine the image prompt.",
|
||
"copilot.send": "Send",
|
||
"copilot.not_ready": "AI is not ready yet. Check AI Settings in the dashboard.",
|
||
"copilot.current_page": "current page",
|
||
"copilot.field_hints": "{count} editable field hints found",
|
||
"copilot.selected_field": "Selected field: {field}",
|
||
"copilot.missing": "Missing: {fields}",
|
||
"copilot.create_draft": "Create draft",
|
||
"copilot.needs_details_hint": "Ask another message with the missing details before creating.",
|
||
"copilot.complete_details": "Complete details",
|
||
"copilot.complete_details_title": "Complete content details",
|
||
"copilot.update_draft": "Update draft",
|
||
"copilot.update_draft_instruction": "Update the content draft with the submitted form fields.",
|
||
"copilot.content_draft_title": "{type} draft",
|
||
"copilot.ready_to_create": "Ready to create",
|
||
"copilot.needs_details": "Needs details",
|
||
"copilot.private_draft": "Private draft",
|
||
"copilot.hidden_draft": "Hidden draft",
|
||
"copilot.draft_created": "Draft created",
|
||
"copilot.open_dashboard": "Open in dashboard",
|
||
"copilot.open_preview": "Open preview URL",
|
||
"copilot.created_title": "{type} created",
|
||
"copilot.last_change": "Last AI change applied",
|
||
"copilot.undo": "Undo",
|
||
"copilot.alt_text": "Alt text",
|
||
"copilot.current": "Current",
|
||
"copilot.draft": "Draft",
|
||
"copilot.review_backup": "Review before applying. A backup is created server-side.",
|
||
"copilot.apply": "Apply",
|
||
"copilot.copy": "Copy",
|
||
"copilot.copied_message": "Copied the draft value for {field}.",
|
||
"copilot.copy_failed": "Could not copy the draft value.",
|
||
"copilot.publish": "Publish",
|
||
"copilot.publish_confirm": "Publish this draft now?",
|
||
"copilot.published_message": "Published {type} \"{id}\".",
|
||
"copilot.intro_message": "I can help with this page and explain how to edit or create content safely. Write what you want to change or create.",
|
||
"copilot.no_response": "No response.",
|
||
"copilot.suggestions_ready": "I drafted safe field-level suggestions. Review the preview cards below.",
|
||
"copilot.no_safe_field": "I could not map that request to a safe editable field on this page yet.",
|
||
"copilot.content_draft_ready_message": "I prepared a new {type} draft. Review the preview before creating it.",
|
||
"copilot.content_draft_needs_details_message": "I prepared a draft, but it needs more details before it can be created.",
|
||
"copilot.content_unavailable": "Content creation is not available for your role or this site configuration.",
|
||
"copilot.image_unavailable": "Image generation is not available for your role, this page, or the current AI settings.",
|
||
"copilot.no_image_field": "I could not find an editable image field on this page.",
|
||
"copilot.choose_image_field": "Which image field should I use?",
|
||
"copilot.image_options_title": "Image options",
|
||
"copilot.image_options_hint": "Choose the target image and generation mode.",
|
||
"copilot.image_mode_label": "Mode",
|
||
"copilot.image_mode_generate": "From prompt",
|
||
"copilot.image_mode_edit": "With reference image",
|
||
"copilot.image_size": "Size",
|
||
"copilot.image_size_auto": "Auto",
|
||
"copilot.image_size_square": "Square",
|
||
"copilot.image_size_landscape": "Landscape",
|
||
"copilot.image_size_portrait": "Portrait",
|
||
"copilot.image_count": "Images",
|
||
"copilot.image_format": "Format",
|
||
"copilot.image_quality": "Quality",
|
||
"copilot.image_quality_auto": "Auto",
|
||
"copilot.image_quality_low": "Low",
|
||
"copilot.image_quality_medium": "Medium",
|
||
"copilot.image_quality_high": "High",
|
||
"copilot.image_generate_action": "Generate image",
|
||
"copilot.image_options_ready": "Choose the image field and whether to generate a new image or edit the current one.",
|
||
"copilot.image_job_queued": "A geração da imagem está em execução em segundo plano. Você pode continuar trabalhando; mostrarei a prévia quando estiver pronta.",
|
||
"copilot.image_draft_ready": "Generated image ready. Review the preview card before applying it.",
|
||
"copilot.image_no_proposal": "Image generation returned no preview.",
|
||
"copilot.apply_confirm": "Apply this AI draft to \"{field}\"?",
|
||
"copilot.applied_message": "Applied the draft to {field}. A backup was created before saving.",
|
||
"copilot.undo_confirm": "Undo the last AI change on this page? The current state will be backed up first.",
|
||
"copilot.undo_message": "Restored the page from the backup. Reloading the page now.",
|
||
"copilot.create_confirm": "Create this {type} draft?",
|
||
"copilot.created_message": "Created {type} draft \"{id}\". It is not published publicly by default.",
|
||
"copilot.created_page_navigation_hint": "Open the page in the Content Editor and set Page Settings / Navigation if it should appear in a menu.",
|
||
"copilot.navigation_manual_required": "No change was applied. I cannot safely change page navigation directly from chat yet. Open Page Settings / Navigation in the Content Editor and select the menus where this page should appear.",
|
||
"copilot.image_request_failed": "Image generation failed.",
|
||
"copilot.working_translate": "Translating the page content...",
|
||
"copilot.translate_ready": "I drafted {target} translations. Review the preview cards below; applying saves them to the {target} page.",
|
||
"copilot.translate_no_fields": "I could not draft translations for this page. Check that the target language page exists and has translatable fields.",
|
||
"copilot.translate_unavailable": "Translation drafts are not available for your role or on this surface. Open the page in the Visual Editor to translate it.",
|
||
"copilot.request_failed": "AI Assistant request failed.",
|
||
"copilot.proposal_summary_title": "Planned changes",
|
||
"copilot.proposal_summary_hint": "{count} changes will be reviewed together.",
|
||
"copilot.apply_all": "Apply all",
|
||
"copilot.apply_all_confirm_title": "Apply all AI drafts?",
|
||
"copilot.apply_all_confirm_body": "Apply these {count} AI drafts? A backup is created for every changed page state.",
|
||
"copilot.applied_all_message": "Applied {count} AI drafts. A backup was created before each save.",
|
||
"copilot.apply_confirm_title": "Apply AI draft?",
|
||
"copilot.confirm_title": "Confirm action",
|
||
"copilot.modal_cancel": "Cancel",
|
||
"copilot.modal_confirm": "Confirm",
|
||
"copilot.enable_visual_editor_title": "Activate Visual Editor?",
|
||
"copilot.enable_visual_editor_action": "Activate Visual Editor",
|
||
"copilot.undo_confirm_title": "Undo last AI change?",
|
||
"copilot.create_confirm_title": "Create draft?",
|
||
"copilot.publish_confirm_title": "Publish draft?",
|
||
"copilot.summary_hide": "Hide field",
|
||
"copilot.summary_show": "Show field",
|
||
"copilot.summary_image": "Replace image",
|
||
"copilot.request_timeout": "AI Assistant request timed out. No change was applied.",
|
||
"copilot.working": "AI Assistant is working...",
|
||
"copilot.working_context": "Loading page context...",
|
||
"copilot.working_chat": "Thinking about your question...",
|
||
"copilot.working_draft": "Drafting a safe change...",
|
||
"copilot.working_content": "Preparing a content draft...",
|
||
"copilot.working_image": "Generating image...",
|
||
"copilot.working_apply": "Applying the confirmed change...",
|
||
"copilot.working_undo": "Restoring the previous version...",
|
||
"copilot.working_create": "Creating the confirmed draft...",
|
||
"copilot.working_publish": "Publishing the confirmed draft...",
|
||
"copilot.enable_visual_editor_confirm": "The Visual Editor must be active before AI changes can be prepared on this page. Activate it now?",
|
||
"copilot.visual_editor_required": "No change was made. Activate the Visual Editor first, then ask me to prepare the change again.",
|
||
"copilot.visual_editor_enabled": "Visual Editor is active. I will prepare the change as a preview first.",
|
||
"copilot.visual_editor_unavailable": "The Visual Editor is not available on this page, so I cannot safely prepare page changes here.",
|
||
"copilot.use_current_image_confirm": "Use the current image as a reference for editing? Choose Cancel to generate a new image from the prompt only.",
|
||
"copilot.maximize": "Maximize AI Assistant",
|
||
"copilot.minimize": "Minimize AI Assistant",
|
||
"copilot.no_pending_preview": "There is no reviewed AI preview waiting to apply. Ask for a change first, then use the preview card.",
|
||
"copilot.image_prompt": "Prompt",
|
||
"copilot.image_prompt_placeholder": "Describe the image to generate...",
|
||
"copilot.image_prompt_required": "Add a prompt before generating an image.",
|
||
"copilot.image_request_timeout": "Image generation timed out. No image preview was created.",
|
||
"copilot.session_expired": "Your session expired. Please log in again in the dashboard, then reload this page.",
|
||
"copilot.applied_image_message": "Applied the generated image to {field}. A backup was created before saving.",
|
||
"copilot.generated_image": "Generated image",
|
||
"copilot.generated_image_applied": "Generated image applied",
|
||
"copilot.history": "Chat history",
|
||
"copilot.history_loading": "Loading chat history...",
|
||
"copilot.history_empty": "No archived chats yet.",
|
||
"copilot.new_chat": "New chat",
|
||
"copilot.delete_chat": "Delete chat",
|
||
"copilot.delete_chat_title": "Delete chat?",
|
||
"copilot.delete_chat_confirm": "Delete this AI Assistant chat history? This cannot be undone.",
|
||
"copilot.untitled_chat": "Untitled chat",
|
||
"copilot.dashboard_context": "Dashboard",
|
||
"copilot.dashboard_hint": "General site and dashboard assistance",
|
||
"copilot.undo_detail": "Changed: {field}",
|
||
"copilot.unknown_field": "selected field",
|
||
"copilot.section_field_label": "Section {section} {field}",
|
||
"copilot.change_details_title": "Prepare change",
|
||
"copilot.change_details_hint": "Describe the change. The Assistant will create a reviewable preview before anything is applied.",
|
||
"copilot.target_field": "Target",
|
||
"copilot.current_selection_none": "No field selected",
|
||
"copilot.change_instruction": "Change instruction",
|
||
"copilot.change_instruction_placeholder": "Describe what should change on this page...",
|
||
"copilot.prepare_preview": "Prepare preview",
|
||
"copilot.content_type": "Content type",
|
||
"copilot.content_type_page": "Page",
|
||
"copilot.content_type_news": "News post",
|
||
"copilot.content_type_event": "Event / appointment",
|
||
"copilot.choose_target_field": "Choose target field",
|
||
"copilot.choose_target_field_placeholder": "Select a field...",
|
||
"copilot.choose_target_field_hint": "You can also click an editable element on the page before opening this dialog.",
|
||
"copilot.choose_target_required": "Choose the field you want to change first.",
|
||
"copilot.current_field_content": "Current content",
|
||
"copilot.current_field_empty": "This field is currently empty.",
|
||
"copilot.current_field_select": "Choose a target field to preview its current content.",
|
||
"copilot.dash_apply": "Aplicar",
|
||
"copilot.dash_open_btn": "Abrir",
|
||
"copilot.dash_dismiss": "Dispensar",
|
||
"copilot.dash_applying": "Em curso...",
|
||
"copilot.dash_done": "Concluído.",
|
||
"copilot.dash_failed": "Isso não funcionou.",
|
||
"copilot.dash_opened": "Aberto.",
|
||
"copilot.dash_language_reload": "Guardado. O painel recarrega no novo idioma.",
|
||
"copilot.dash_adjusted": "Guardado. A cor foi ligeiramente ajustada para continuar legível.",
|
||
"copilot.dash_saved": "Guardado.",
|
||
"copilot.dash_open_title": "Abrir {target}",
|
||
"copilot.dash_change_title": "Alterar {setting}",
|
||
"copilot.dash_already": "{setting} já é {value}.",
|
||
"copilot.dash_setting_adminTheme": "tema do painel",
|
||
"copilot.dash_setting_primaryColor": "cor principal do painel",
|
||
"copilot.dash_setting_accentColor": "cor de destaque do painel",
|
||
"copilot.dash_setting_adminLanguage": "idioma do painel",
|
||
"copilot.dash_value_light": "Claro",
|
||
"copilot.dash_value_dark": "Escuro",
|
||
"copilot.dash_value_system": "Seguir o dispositivo",
|
||
"copilot.dash_actions_ready": "Preparei isto para você. Verifique o cartão e confirme.",
|
||
"copilot.dash_not_possible": "Não consegui preparar isso. Diga o que você quer mudar ou aonde quer ir, e eu mostro o caminho.",
|
||
"copilot.dash_open_new_tab": "Abrir em uma nova aba",
|
||
"copilot.dash_where_title": "Veja onde encontrar: {name}",
|
||
"copilot.dash_where_lead": "Não posso fazer isso por você aqui, mas veja onde encontrar:",
|
||
"copilot.dash_admin_only": "Isso é reservado aos administradores. Veja onde fica no painel:",
|
||
"copilot.dash_module_off_title": "{target} está desativado",
|
||
"copilot.dash_value_unclear": "Não consegui usar esse valor. Você pode ajustar diretamente aqui: {name}",
|
||
"copilot.map_admin_only": "Isto está reservado aos administradores.",
|
||
"copilot.map_module_off": "Este módulo está desativado. Você pode ativá-lo em {path}.",
|
||
"copilot.safety_blocked": "Descartei esta sugestão: parecia fraude, phishing, malware, ódio ou conteúdo adulto ou ilegal.",
|
||
"copilot.safety_note": "Aviso de segurança: este texto pede senhas ou dados de pagamento, tem links que merecem uma segunda olhada ou contém instruções dirigidas a uma IA. Verifique-o com atenção antes de aplicar.",
|
||
"ai.image_jobs_title": "Tarefas de imagem",
|
||
"ai.image_jobs_check": "Verificar tarefas",
|
||
"ai.image_jobs_idle": "Nenhuma tarefa de imagem em aberto.",
|
||
"ai.image_jobs_open": "{count} tarefa(s) de imagem na fila ou em execução.",
|
||
"ai.image_jobs_finished": "A tarefa de imagem mais recente foi concluída.",
|
||
"ai.image_jobs_failed": "A tarefa de imagem mais recente falhou.",
|
||
"agent.title": "Agente de IA",
|
||
"agent.intro": "O agente trabalha o seu pedido, prepara um pacote de alterações e mostra-o. Nada é publicado até o aplicar.",
|
||
"agent.mode_label": "Modo",
|
||
"agent.mode_agent": "Agente",
|
||
"agent.mode_agent_hint": "O agente prepara um pacote de alterações completo para revisão.",
|
||
"agent.mode_classic": "Clássico",
|
||
"agent.mode_classic_hint": "Faça perguntas e prepare alterações individuais passo a passo.",
|
||
"agent.placeholder": "Diga ao agente o que alterar, p. ex. «Cria uma notícia sobre …»",
|
||
"agent.placeholder_busy": "O agente está a trabalhar…",
|
||
"agent.placeholder_answer": "Responda ao agente…",
|
||
"agent.placeholder_changes": "O que deve ser diferente no pacote?",
|
||
"agent.status_thinking": "A pensar…",
|
||
"agent.status_waiting_image": "A aguardar a imagem…",
|
||
"agent.status_ready": "Pronto",
|
||
"agent.status_conflict": "Desatualizado",
|
||
"agent.status_check": "Requer atenção",
|
||
"agent.cancel": "Cancelar",
|
||
"agent.cancelling": "A cancelar…",
|
||
"agent.cancelled": "O agente foi cancelado. Nada foi alterado.",
|
||
"agent.steps_title": "{count} passos",
|
||
"agent.step_failed": "não funcionou",
|
||
"agent.retry": "Recomeçar",
|
||
"agent.continue": "Continuar",
|
||
"agent.busy": "O agente ainda está a trabalhar. Tente novamente daqui a pouco.",
|
||
"agent.error_generic": "O agente não conseguiu terminar.",
|
||
"agent.error_connection": "A ligação foi interrompida.",
|
||
"agent.step.unknown": "A trabalhar",
|
||
"agent.step.get_site_overview": "A ver o site",
|
||
"agent.step.get_page_capabilities": "A verificar o que se pode editar em {detail}",
|
||
"agent.step.read_content": "A ler {detail}",
|
||
"agent.step.list_content": "A listar {detail}",
|
||
"agent.step.list_media": "A explorar a mediateca",
|
||
"agent.step.list_run_media": "A verificar as imagens anexadas",
|
||
"agent.step.search_stock_images": "A procurar fotos de banco de imagens: {detail}",
|
||
"agent.step.import_stock_image": "A descarregar uma foto de banco de imagens",
|
||
"agent.step.generate_image": "A gerar uma imagem",
|
||
"agent.step.search_web": "A pesquisar: {detail}",
|
||
"agent.step.read_web_result": "A ler uma fonte",
|
||
"agent.step.stage_set_field": "A alterar {detail}",
|
||
"agent.step.stage_set_image": "A definir uma imagem em {detail}",
|
||
"agent.step.stage_add_list_item": "A adicionar um item a {detail}",
|
||
"agent.step.stage_hide_list_item": "A ocultar ou mostrar um item em {detail}",
|
||
"agent.step.stage_remove_list_item": "A remover um item de {detail}",
|
||
"agent.step.stage_move_list_item": "A mover um item em {detail}",
|
||
"agent.step.stage_add_section": "A adicionar uma secção a {detail}",
|
||
"agent.step.stage_create_news": "A criar uma notícia",
|
||
"agent.step.stage_create_event": "A criar um evento",
|
||
"agent.step.stage_create_page": "A criar uma página",
|
||
"agent.step.stage_set_page_menus": "Altera os menus de {detail}",
|
||
"agent.step.stage_revert_op": "A desfazer uma alteração",
|
||
"agent.step.validate_changeset": "A verificar o pacote",
|
||
"agent.step.ask_user": "A fazer-lhe uma pergunta",
|
||
"agent.step.present_changeset": "A preparar a revisão",
|
||
"agent.package_title": "Pacote de alterações",
|
||
"agent.open_questions": "Perguntas em aberto",
|
||
"agent.target_page": "Página: {name}",
|
||
"agent.target_news": "Notícia: {name}",
|
||
"agent.target_event": "Evento: {name}",
|
||
"agent.target_shared": "Conteúdo partilhado: {name}",
|
||
"agent.before": "Antes",
|
||
"agent.after": "Depois",
|
||
"agent.empty_value": "(vazio)",
|
||
"agent.destructive": "Elimina conteúdo",
|
||
"agent.validation_ok": "Todas as verificações passaram",
|
||
"agent.validation_errors": "Problemas encontrados",
|
||
"agent.validation_warnings": "Notas",
|
||
"agent.where_title": "Onde encontrar",
|
||
"agent.step.find_in_dashboard": "Procura onde isso fica no painel",
|
||
"agent.risk_title": "Verificação de segurança: olhe com atenção",
|
||
"agent.risk_confirm_title": "Aplicar apesar dos avisos de segurança?",
|
||
"agent.risk_confirm_body": "A verificação de segurança sinalizou este pacote. Aplique-o somente se for exatamente o que você pediu. Depois você pode desfazer o pacote.",
|
||
"agent.risk_confirm_button": "Aplicar mesmo assim",
|
||
"agent.safety_confirm_needed": "Este pacote tem avisos de segurança. Leia-os na revisão e confirme-os para aplicá-lo.",
|
||
"agent.safety.mass_removal": "De {total} partes de {target}, {count} seriam removidas, ocultadas ou esvaziadas.",
|
||
"agent.safety.list_emptied": "A lista “{list}” em {target} ficaria vazia.",
|
||
"agent.safety.large_text_loss": "Cerca de {percent} % do texto de {target} desapareceria.",
|
||
"agent.safety.too_many_removals": "Este pacote removeria, ocultaria ou esvaziaria {count} partes do site.",
|
||
"agent.safety.too_many_creations": "Este pacote criaria {count} páginas, notícias ou eventos.",
|
||
"agent.safety.menu_changes": "Este pacote alteraria os menus de {count} páginas.",
|
||
"agent.safety.too_many_targets": "Este pacote afeta {count} páginas, notícias ou eventos.",
|
||
"agent.safety.contact_changed": "Um e-mail, telefone ou dado bancário em {target} seria substituído por outro.",
|
||
"agent.safety.content_blocked": "O novo texto de {target} parece fraude, phishing, malware, ódio ou conteúdo adulto ou ilegal e foi bloqueado.",
|
||
"agent.safety.content_caution": "O novo texto de {target} pede senhas ou dados de pagamento aos visitantes, ou contém links que merecem uma segunda olhada.",
|
||
"agent.safety.content_injection": "O novo texto de {target} contém instruções dirigidas a uma IA. Isso pode indicar uma fonte manipulada.",
|
||
"agent.safety_refuse.mass_delete": "Não vou esvaziar uma página nem apagar um site inteiro de uma só vez. Diga quais seções ou itens remover ou ocultar, poucos de cada vez, e eu preparo isso para você revisar. Depois tudo pode ser desfeito.",
|
||
"agent.safety_refuse.hate": "Não posso ajudar com isso: espalharia ódio ou incitaria violência contra pessoas.",
|
||
"agent.safety_refuse.create_crime": "Não posso ajudar com isso: criaria conteúdo fraudulento, prejudicial, adulto ou ilegal.",
|
||
"agent.render_failed": "Uma página requer atenção",
|
||
"agent.images": "Imagens",
|
||
"agent.image_ai": "Gerada por IA",
|
||
"agent.image_stock": "Foto de banco de imagens",
|
||
"agent.image_generated": "Imagem gerada",
|
||
"agent.image_upload": "O seu ficheiro",
|
||
"agent.sources": "Fontes",
|
||
"agent.source_warning": "Esta página contém texto que tenta dar instruções a uma IA. Foi ignorado.",
|
||
"agent.conflict": "O conteúdo mudou depois de o agente iniciar. Valide o pacote novamente para continuar.",
|
||
"agent.revalidate": "Validar novamente",
|
||
"agent.preview": "Pré-visualização",
|
||
"agent.preview_hint": "Abre a página com as alterações. Só você a vê.",
|
||
"agent.preview_page": "Pré-visualização: {name}",
|
||
"agent.preview_banner": "Pré-visualização: estas alterações ainda não foram aplicadas. Só você vê a página assim.",
|
||
"agent.preview_back": "Voltar ao assistente",
|
||
"agent.op.set_field": "Alterar “{field}”",
|
||
"agent.op.set_image": "Definir a imagem “{field}”",
|
||
"agent.op.list_insert": "Adicionar item a “{field}”",
|
||
"agent.op.list_hide": "Ocultar o item {n} de “{field}”",
|
||
"agent.op.list_show": "Mostrar o item {n} de “{field}”",
|
||
"agent.op.list_remove": "Remover o item {n} de “{field}”",
|
||
"agent.op.list_move": "Mover o item {from} para a posição {to} em “{field}”",
|
||
"agent.op.section_insert": "Adicionar secção do tipo {type}",
|
||
"agent.op.create_news": "Criar publicação de notícias",
|
||
"agent.op.create_event": "Criar evento",
|
||
"agent.op.create_page": "Criar página",
|
||
"agent.op.set_page_menus": "Alterar os menus desta página",
|
||
"agent.op.in_section": "{what} na secção {n} ({type}): “{title}”",
|
||
"agent.op.in_section_untitled": "{what} na secção {n} ({type})",
|
||
"agent.op.item": "(item {item})",
|
||
"agent.field.content": "Texto",
|
||
"agent.field.text": "Texto",
|
||
"agent.field.title": "Título",
|
||
"agent.field.heading": "Cabeçalho",
|
||
"agent.field.subtitle": "Subtítulo",
|
||
"agent.field.description": "Descrição",
|
||
"agent.field.caption": "Legenda",
|
||
"agent.field.image": "Imagem",
|
||
"agent.field.items": "Itens",
|
||
"agent.field.alt": "Texto alternativo",
|
||
"agent.apply": "Aplicar alterações",
|
||
"agent.apply_confirm_title": "Aplicar este pacote?",
|
||
"agent.apply_confirm_body": "Serão guardadas {count} alterações. As alterações a conteúdo existente ficam visíveis de imediato; o conteúdo novo permanece oculto até o publicar. Depois pode anular o pacote.",
|
||
"agent.apply_confirm_body_live": "Serão guardadas {count} alterações, que ficam visíveis de imediato. Depois pode anular o pacote.",
|
||
"agent.apply_confirm_button": "Aplicar",
|
||
"agent.apply_failed": "Não foi possível aplicar o pacote. {message}",
|
||
"agent.discard": "Descartar",
|
||
"agent.discard_confirm_title": "Descartar este pacote?",
|
||
"agent.discard_confirm_body": "As alterações e imagens preparadas são eliminadas. O seu site não muda.",
|
||
"agent.discard_confirm_button": "Descartar",
|
||
"agent.discarded": "O pacote foi descartado. Nada foi alterado.",
|
||
"agent.request_changes": "Pedir alterações",
|
||
"agent.applied_title": "Alterações aplicadas",
|
||
"agent.applied_note": "Foi criada uma cópia de segurança. As alterações a conteúdo existente já estão visíveis; o conteúdo novo permanece oculto até o publicar.",
|
||
"agent.applied_note_live": "Foi criada uma cópia de segurança. As alterações estão visíveis. «Anular» repõe o estado anterior.",
|
||
"agent.applied_summary": "O pacote anterior foi aplicado.",
|
||
"agent.undo": "Anular",
|
||
"agent.undo_confirm_title": "Anular este pacote?",
|
||
"agent.undo_confirm_body": "O conteúdo afetado volta ao estado anterior ao pacote.",
|
||
"agent.undone": "O pacote foi anulado.",
|
||
"agent.publish": "Publicar",
|
||
"agent.publish_confirm_title": "Publicar este item?",
|
||
"agent.publish_confirm_body": "Fica visível para os visitantes.",
|
||
"agent.publish_not_allowed": "Para publicar é necessária uma função com essa permissão.",
|
||
"agent.published": "Publicado",
|
||
"agent.item_news": "Notícia",
|
||
"agent.item_event": "Evento",
|
||
"agent.item_page": "Página",
|
||
"agent.item_section": "Secção",
|
||
"agent.item_list_item": "Item de lista",
|
||
"agent.reload": "Recarregar a página",
|
||
"agent.attach": "Anexar imagens",
|
||
"agent.attach_hint": "Anexar imagens (JPEG, PNG ou WebP). O agente pode usá-las no pacote.",
|
||
"agent.attach_blocked": "Anexe as imagens antes de enviar o pedido.",
|
||
"agent.drop_hint": "Largue as imagens aqui para as anexar",
|
||
"agent.upload_busy": "A enviar…",
|
||
"agent.upload_failed": "{name}: {message}",
|
||
"agent.upload_limit": "Pode anexar até {count} imagens de cada vez.",
|
||
"agent.upload_size": "{name} é demasiado grande (máx. {size} MB).",
|
||
"agent.upload_type": "Só podem ser anexadas imagens JPEG, PNG e WebP.",
|
||
"agent.chips_remove": "Remover imagens",
|
||
"ai.agent_title": "Agente de IA",
|
||
"ai.agent_hint": "O agente trabalha um pedido por conta própria, prepara um pacote de alterações e aguarda confirmação. Precisa de um fornecedor com chamadas de ferramentas e usa vários pedidos de IA por execução.",
|
||
"ai.agent_enable": "Ativar o agente de IA",
|
||
"ai.agent_status_ready": "O agente está pronto.",
|
||
"ai.agent_status_off": "O agente está desativado.",
|
||
"ai.agent_status_ai_off": "Ative primeiro a IA e adicione uma chave de API.",
|
||
"ai.agent_status_no_tools": "O fornecedor ou modelo selecionado não suporta chamadas de ferramentas, por isso o agente continua indisponível.",
|
||
"ai.agent_status_no_gd": "Falta a extensão PHP GD, por isso não é possível preparar imagens.",
|
||
"ai.agent_status_no_webp": "O GD não suporta WebP; as imagens são guardadas como JPEG.",
|
||
"ai.agent_status_limits": "Uma execução do agente precisa de vários pedidos de IA. Aumente os limites diários (agora {requests} pedidos) e os tokens de entrada máximos (agora {tokens}); cerca de 300 pedidos por dia e 64.000 tokens são um bom começo.",
|
||
"ai.agent_limits": "Limites por execução",
|
||
"ai.agent_runs_per_hour": "Execuções por hora e utilizador",
|
||
"ai.agent_max_turns": "Turnos do modelo por ronda",
|
||
"ai.agent_max_tool_calls": "Chamadas de ferramentas por ronda",
|
||
"ai.agent_max_cost": "Limite de custo por execução (cêntimos)",
|
||
"ai.agent_max_runtime": "Duração máxima (minutos)",
|
||
"ai.agent_uploads": "Envios de imagens por 10 minutos",
|
||
"ai.agent_roles": "O que os editores podem fazer",
|
||
"ai.agent_roles_hint": "Os administradores podem fazer tudo. Os editores podem sempre alterar textos, imagens e ligações existentes.",
|
||
"ai.agent_right_publish": "Publicar conteúdo novo",
|
||
"ai.agent_right_stockImages": "Usar fotos de banco de imagens",
|
||
"ai.agent_right_uploadImages": "Anexar as suas próprias imagens",
|
||
"ai.agent_right_generateImages": "Gerar imagens com IA",
|
||
"ai.agent_right_research": "Pesquisar na web",
|
||
"ai.agent_right_structural": "Adicionar, remover e mover itens e secções",
|
||
"ai.agent_right_createPages": "Criar páginas",
|
||
"ai.agent_right_createNews": "Criar notícias",
|
||
"ai.agent_right_createEvents": "Criar eventos",
|
||
"ai.agent_right_editSharedContent": "Alterar conteúdo partilhado (rodapé, barra lateral)",
|
||
"ai.agent_images": "Imagens",
|
||
"ai.agent_media_folder": "Pasta de multimédia para imagens do agente",
|
||
"ai.agent_media_folder_hint": "Letras minúsculas, dígitos, - e _. As imagens que o agente traz são guardadas nesta pasta de assets/images/.",
|
||
"ai.agent_credit_in_news": "Adicionar créditos de foto às notícias",
|
||
"ai.agent_pexels_key": "Chave de API do Pexels (fotos de banco de imagens)",
|
||
"ai.agent_research": "Pesquisa na web",
|
||
"ai.agent_brave_key": "Chave de API do Brave Search",
|
||
"ai.agent_clear_key": "Remover a chave API guardada",
|
||
"ai.agent_allow_domains": "Permitir apenas estes sites (um por linha, opcional)",
|
||
"ai.agent_deny_domains": "Nunca ler estes sites (um por linha)",
|
||
"ai.agent_respect_robots": "Respeitar o robots.txt dos sites",
|
||
"ai.agent_sources_in_news": "Acrescentar uma lista de fontes às notícias",
|
||
"ai.agent_clear_cache": "Limpar a cache de análise de páginas",
|
||
"ai.agent_cache_cleared": "Cache limpa ({count} ficheiros).",
|
||
"ai.agent_cache_hint": "O agente analisa os seus modelos de página para saber o que é editável. Limpe a cache depois de alterar modelos à mão.",
|
||
"system.agent": "Agente de IA",
|
||
"system.agent_state": "Agente",
|
||
"system.agent_on": "Ativo",
|
||
"system.agent_off": "Desativado",
|
||
"system.agent_tools": "Chamadas de ferramentas",
|
||
"system.agent_gd": "Processamento de imagens (GD)",
|
||
"system.agent_webp": "Saída WebP",
|
||
"system.agent_research": "Chave de pesquisa na web",
|
||
"system.agent_stock": "Chave de fotos de banco de imagens",
|
||
"system.agent_storage_note": "O agente guarda os seus dados em content/; a verificação de segurança acima mostra que esta pasta não é pública.",
|
||
"system.upload_note": "Se o limite do PHP for inferior ao limite de imagens, aplica-se o do PHP. Define-se em php.ini, .user.ini ou .htaccess (upload_max_filesize, post_max_size); o .htaccess contém um exemplo.",
|
||
"system.upload_no_webp": "Não é possível: GD sem WebP",
|
||
"system.upload_off": "Desativada",
|
||
"system.upload_on": "Ativa",
|
||
"system.upload_unlimited": "Ilimitado",
|
||
"system.upload_memory": "Memória (memory_limit)",
|
||
"system.upload_web_version": "Versão web ao enviar",
|
||
"system.upload_server_bound": "aplica-se o limite PHP de {max} MB",
|
||
"system.upload_image_limit": "Limite de imagens da biblioteca",
|
||
"system.upload_server_limit": "Limite de envio do PHP",
|
||
"system.uploads": "Envios",
|
||
"system.configured": "Configurado",
|
||
"system.not_configured": "Não configurado",
|
||
"agent.step.read_url": "A ler {detail}",
|
||
"ai.agent_research_hint": "Sem chave do Brave, o agente ainda pode ler os endereços web que o utilizador escreve no chat.",
|
||
"ai.models_loading": "A carregar os modelos do seu fornecedor…",
|
||
"ai.models_loaded": "{count} modelos carregados do seu fornecedor.",
|
||
"ai.models_failed": "Não foi possível carregar a lista de modelos ({message}). Pode na mesma escrever o nome de um modelo.",
|
||
"ai.agent_recommended_limits": "Usar os limites recomendados",
|
||
"ai.agent_recommended_limits_hint": "Aumenta os limites de tokens e pedidos que estão abaixo do que o agente precisa (64.000 tokens de entrada, 16.000 de saída, 300 pedidos por dia). Os valores mais altos mantêm-se.",
|
||
"ai.agent_limits_raised": "Limites aumentados para o que o agente precisa. Guarde para os manter.",
|
||
"ai.agent_limits_fine": "Os seus limites já são suficientes.",
|
||
"ai.limit_kind_month": "Orçamento mensal de IA",
|
||
"ai.limit_kind_requests": "Pedidos de IA por dia",
|
||
"ai.limit_kind_text": "Pedidos de texto de IA por dia",
|
||
"ai.limit_kind_images": "Pedidos de imagem de IA por dia",
|
||
"ai.limit_warning": "{kind}: {used} de {limit} usado ({percent} %). Aumente o limite a tempo.",
|
||
"ai.limit_reached": "{kind}: limite atingido ({used} de {limit}). Os novos pedidos de IA ficam bloqueados até o limite ser aumentado ou o período terminar.",
|
||
"ai.limit_adjust": "Ajustar limites",
|
||
"ai.limit_raise": "Aumentar 50 %",
|
||
"ai.limit_raised": "Limites aumentados para metade. Guarde para os manter.",
|
||
"ai.limit_ask_admin": "Peça a um administrador que aumente o limite.",
|
||
"ai.limit_dismiss": "Ocultar",
|
||
"ai.limits_hint": "Os limites são orientações, não muros: um pedido que começa abaixo do limite pode terminar, e uma execução do agente em curso pode usar cerca de 10 % a mais antes de ser parada. Os novos pedidos ficam bloqueados quando um limite é atingido. O limite de imagens é estrito.",
|
||
"settings.search_engines": "Motores de busca",
|
||
"settings.noindex_site": "Bloquear este site para os motores de busca (staging)",
|
||
"settings.noindex_site_hint": "Bloqueia o site no robots.txt, na meta tag robots e no X-Robots-Tag e esvazia o sitemap. Pensado para sites de teste e de staging. Desative o bloqueio assim que o site estiver no ar.",
|
||
"settings.site_url": "Endereço do site",
|
||
"settings.site_url_hint": "O endereço público com https://, por exemplo https://www.example.com. Aparece nos links canónicos e no sitemap. Deixe em branco para usar o endereço visitado. Atualize-o ao passar do staging para o domínio definitivo.",
|
||
"system.badge": "Avisos: {count}",
|
||
"seo_check.title": "Motores de busca",
|
||
"seo_check.running": "A verificar …",
|
||
"seo_check.pending": "Ainda não verificado",
|
||
"seo_check.url": "Endereço:",
|
||
"seo_check.expected": "Esperado num site em produção:",
|
||
"seo_check.allow": "Permitir a indexação",
|
||
"seo_check.allowed": "O bloqueio foi levantado. A verificação está a ser executada novamente.",
|
||
"seo_check.where_meta": "meta tag robots",
|
||
"seo_check.where_header": "X-Robots-Tag",
|
||
"seo_check.skipped_local": "Instalação local: só é verificada num endereço público",
|
||
"seo_check.skipped_dev_server": "Não é possível no servidor de desenvolvimento PHP",
|
||
"seo_check.unknown_unreachable": "Não foi possível verificar: o servidor não consegue aceder ao seu próprio endereço ({detail})",
|
||
"seo_check.unknown_auth": "Não foi possível verificar: o site tem proteção de acesso (HTTP 401)",
|
||
"seo_check.unknown_host": "Não foi possível verificar: o endereço do site é desconhecido",
|
||
"seo_check.unknown_no_curl": "Não foi possível verificar: falta a extensão PHP curl",
|
||
"seo_check.unknown_fix": "Verifique a partir do exterior se o endereço está acessível, por exemplo com: curl -I {url}",
|
||
"seo_check.robots_txt": "robots.txt",
|
||
"seo_check.robots_txt_ok": "Permite os motores de busca",
|
||
"seo_check.robots_txt_blocked": "Bloqueia todos os motores de busca (Disallow: /)",
|
||
"seo_check.robots_txt_status": "Responde com {detail}",
|
||
"seo_check.robots_txt_sitemap_host": "Aponta para um sitemap noutro endereço: {detail}",
|
||
"seo_check.robots_txt_no_sitemap": "Não contém nenhuma referência ao sitemap",
|
||
"seo_check.robots_txt_expected": "Nenhum “Disallow: /” para todos os motores de busca e uma referência ao sitemap deste site.",
|
||
"seo_check.robots_txt_fix_blocked_setting": "O bloqueio vem da definição “Bloquear este site para os motores de busca” (Configurações → Marca → Motores de busca). Se o site já está no ar, permita a indexação com o botão abaixo ou desative a definição.",
|
||
"seo_check.robots_txt_fix_blocked_file": "Um ficheiro robots.txt na pasta principal do site substitui o robots.txt do próprio Raiju. Se o site está no ar, elimine o ficheiro ou remova dele a linha “Disallow: /”. O Raiju passa então a fornecer o robots.txt por si mesmo.",
|
||
"seo_check.robots_txt_fix_blocked_unknown": "O bloqueio não vem nem da definição do Raiju nem de um ficheiro na pasta principal. Verifique se uma regra do alojamento, um proxy ou outro sistema substitui o robots.txt.",
|
||
"seo_check.robots_txt_fix_status": "O robots.txt não é servido normalmente. Verifique os redirecionamentos e as regras do alojamento para este endereço.",
|
||
"seo_check.robots_txt_fix_sitemap_host": "O robots.txt indica o sitemap de outro endereço, normalmente o domínio de staging. Introduza o endereço correto do site em Configurações → Marca → Motores de busca ou ajuste um robots.txt próprio na pasta principal.",
|
||
"seo_check.robots_txt_fix_no_sitemap": "Adicione ao robots.txt uma linha “Sitemap: https://o-seu-dominio/sitemap.xml” ou elimine um robots.txt próprio da pasta principal para que o Raiju o gere.",
|
||
"seo_check.page_robots": "Página inicial para os motores de busca",
|
||
"seo_check.page_robots_ok": "Sem noindex na meta tag robots nem no X-Robots-Tag",
|
||
"seo_check.page_robots_noindex": "noindex encontrado: {where}",
|
||
"seo_check.page_robots_redirect": "Redireciona para outro endereço: {detail}",
|
||
"seo_check.page_robots_status": "Responde com {detail}",
|
||
"seo_check.page_robots_expected": "Nem a meta tag robots nem o X-Robots-Tag contêm noindex, e o endereço não redireciona para outro domínio.",
|
||
"seo_check.page_robots_fix_noindex_setting": "O bloqueio vem da definição “Bloquear este site para os motores de busca” (Configurações → Marca → Motores de busca). Se o site já está no ar, permita a indexação com o botão abaixo ou desative a definição.",
|
||
"seo_check.page_robots_fix_noindex_other": "A definição “Bloquear este site para os motores de busca” está desativada e, mesmo assim, a página inicial envia noindex. Verifique a página inicial (definições SEO: Robots), ficheiros próprios como includes/header.php, o .htaccess e as regras do alojamento ou de um proxy para o X-Robots-Tag.",
|
||
"seo_check.page_robots_fix_redirect": "O endereço redireciona para outro domínio, por exemplo o domínio de staging ou uma página de estacionamento. Verifique os redirecionamentos no painel do alojamento e no .htaccess.",
|
||
"seo_check.page_robots_fix_status": "A página inicial não é servida normalmente. Verifique os redirecionamentos e as regras do alojamento para este endereço.",
|
||
"seo_check.sitemap": "sitemap.xml",
|
||
"seo_check.sitemap_ok": "Válido, {count} endereços",
|
||
"seo_check.sitemap_status": "Responde com {detail}",
|
||
"seo_check.sitemap_not_xml": "Não é um sitemap válido (não é XML)",
|
||
"seo_check.sitemap_empty": "Não contém páginas",
|
||
"seo_check.sitemap_empty_blocked": "Vazio porque o site está bloqueado",
|
||
"seo_check.sitemap_host": "{count} endereços pertencem a outro domínio, por exemplo {detail}",
|
||
"seo_check.sitemap_http": "{count} endereços usam http://, por exemplo {detail}",
|
||
"seo_check.sitemap_expected": "XML válido com as páginas deste site, todos os endereços no mesmo domínio e com https://.",
|
||
"seo_check.sitemap_fix_status": "O sitemap.xml não é servido normalmente. Verifique os redirecionamentos e as regras do alojamento para este endereço.",
|
||
"seo_check.sitemap_fix_not_xml": "Neste endereço não há nenhum sitemap, provavelmente uma página de erro ou de manutenção ou um ficheiro sitemap.xml danificado na pasta principal. Elimine o ficheiro próprio para que o Raiju gere o sitemap.",
|
||
"seo_check.sitemap_fix_empty": "Todas as páginas estão excluídas do sitemap (privadas, noindex ou “não incluir no sitemap”) ou ainda não há páginas públicas. Verifique as definições SEO das páginas.",
|
||
"seo_check.sitemap_fix_empty_blocked": "O sitemap permanece vazio enquanto o site estiver bloqueado. Fica preenchido assim que a indexação for permitida.",
|
||
"seo_check.sitemap_fix_host": "O sitemap indica endereços de outro domínio, normalmente o de staging. Introduza o endereço correto do site em Configurações → Marca → Motores de busca. Se existir um sitemap.xml próprio na pasta principal, gere-o novamente ou elimine-o.",
|
||
"seo_check.sitemap_fix_http": "O sitemap indica endereços com http:// embora o site funcione com https://. Introduza o endereço com https:// em Configurações → Marca → Motores de busca. Atrás de um proxy, este tem de transmitir X-Forwarded-Proto.",
|
||
"seo_check.site_url": "Endereço do site (definição)",
|
||
"seo_check.site_url_ok": "Corresponde ao endereço visitado",
|
||
"seo_check.site_url_host": "Definido como {url}, mas visitado em {detail}",
|
||
"seo_check.site_url_scheme": "Definido como {url}, mas o site funciona com https://",
|
||
"seo_check.site_url_expected": "O mesmo domínio do endereço visitado, com https://.",
|
||
"seo_check.site_url_fix_host": "Este endereço aparece nos links canónicos, no hreflang e no sitemap. Depois de passar do staging para o domínio definitivo, tem de ser atualizado (Configurações → Marca → Motores de busca); caso contrário, os motores de busca apontam para o domínio antigo.",
|
||
"seo_check.site_url_fix_scheme": "Introduza o endereço com https:// em Configurações → Marca → Motores de busca.",
|
||
"seo_check.page_noindex": "Páginas individuais com noindex",
|
||
"seo_check.page_noindex_ok": "Nenhuma",
|
||
"seo_check.page_noindex_note": "{count} de {total} páginas públicas estão definidas como noindex",
|
||
"seo_check.page_noindex_expected": "Apenas as páginas que devem ficar fora dos motores de busca.",
|
||
"seo_check.page_noindex_fix_note": "Não há problema se for intencional, por exemplo em páginas de agradecimento. Caso contrário, altere a definição “Robots” na área SEO da página (lista de páginas).",
|
||
"seo_check.maintenance": "Modo de manutenção",
|
||
"seo_check.maintenance_ok": "Desativado",
|
||
"seo_check.maintenance_warning": "Ativado: os visitantes e os motores de busca recebem a página de manutenção (HTTP 503)",
|
||
"seo_check.maintenance_expected": "Modo de manutenção desativado.",
|
||
"seo_check.maintenance_fix_warning": "Desative o modo de manutenção em Configurações → Access assim que o site estiver no ar. Respostas 503 prolongadas fazem as páginas sair do índice de pesquisa.",
|
||
"seo_check.banner_title": "Este site está bloqueado para os motores de busca",
|
||
"seo_check.banner_text_setting": "A definição “Bloquear este site para os motores de busca” está ativada. Num site de staging ou de teste, isso está certo. Quando o site estiver no ar, assim não aparecerá no Google.",
|
||
"seo_check.banner_text_other": "Bloqueado através de: {where}. Num site de staging ou de teste, isso está certo. Quando o site estiver no ar, assim não aparecerá no Google.",
|
||
"ai.organization_hint": "Só é necessário se os pedidos à API tiverem de ser atribuídos expressamente a uma organização OpenAI específica. Caso contrário, deixa vazio.",
|
||
"ai.budget_explanation": "Os custos baseiam-se no preço do modelo realmente utilizado (preço do catálogo ou preço próprio). O limite local inclui a utilização concluída e as reservas em aberto. Os valores reais cobrados pelo fornecedor podem diferir; consulta a faturação do fornecedor.",
|
||
"ai.model_label": "Modelo",
|
||
"ai.model_group_chat": "Chat/Agente",
|
||
"ai.model_group_chat_hint": "Para o assistente, o agente de IA e os rascunhos de conteúdo completos. Aqui conta a qualidade.",
|
||
"ai.model_group_text": "Texto/SEO",
|
||
"ai.model_group_text_hint": "Para sugestões de campos, revisões curtas de texto e textos SEO. Pode ser um modelo mais barato e rápido.",
|
||
"ai.model_group_both": "Chat/Agente e Texto/SEO",
|
||
"ai.reasoning_effort": "Esforço de raciocínio",
|
||
"ai.reasoning_recommended_with": "Recomendado ({level})",
|
||
"ai.reasoning_low": "Baixo",
|
||
"ai.reasoning_medium": "Médio",
|
||
"ai.reasoning_high": "Alto",
|
||
"ai.reasoning_legacy": "Comportamento anterior (predefinição do fornecedor)",
|
||
"ai.reasoning_hint": "Um maior esforço de raciocínio pode ajudar em tarefas complexas, mas aumenta muitas vezes o tempo de resposta e o custo. Para tarefas normais, a definição recomendada é suficiente.",
|
||
"ai.reasoning_unknown": "Não é conhecido nenhum nível de raciocínio para este modelo. Aplica-se a predefinição do fornecedor.",
|
||
"ai.reasoning_reset": "O modelo não suporta o nível escolhido. Reposto em «Recomendado».",
|
||
"ai.pricing_hint": "Os preços aplicam-se por fornecedor e modelo, em USD ou EUR por 1 M de tokens. Sem preço próprio usa-se o do catálogo. Leituras de cache e tokens de raciocínio contam como o fornecedor indica; o esforço de raciocínio não tem acréscimo.",
|
||
"ai.price_input": "Preço de entrada (por 1 M de tokens)",
|
||
"ai.price_output": "Preço de saída (por 1 M de tokens)",
|
||
"ai.price_currency": "Moeda",
|
||
"ai.price_remove": "Remover preço próprio",
|
||
"ai.price_unknown": "Preço não registado",
|
||
"ai.price_unknown_notice": "Falta o preço de pelo menos um modelo. Sem preço, o orçamento mensal não pode ser controlado de forma fiável em dinheiro; só se aplicam os limites de pedidos. Introduz abaixo um preço próprio.",
|
||
"ai.price_status_catalog": "Preço de catálogo: {input} / {output} USD por 1 M de tokens (entrada / saída), a {date}.",
|
||
"ai.price_status_override": "Preço próprio: {input} / {output} {currency} por 1 M de tokens (entrada / saída).",
|
||
"ai.price_status_migrated": "Estimativa herdada: {input} / {output} {currency} por 1 M de tokens (entrada / saída). Podes substituí-la ou removê-la.",
|
||
"ai.price_tier_multiplier": "Acima de {tokens} tokens de entrada, todo o pedido é cobrado assim: entrada ×{input}, saída ×{output}.",
|
||
"ai.price_tier_absolute": "Acima de {tokens} tokens de entrada, todo o pedido é cobrado a {input} / {output} USD.",
|
||
"ai.fx_custom": "Taxa de câmbio própria (USD por 1 EUR)",
|
||
"ai.fx_hint": "Atualmente: 1 EUR = {rate} USD (a {date}, {source}). Os preços em USD são convertidos em euros com esta taxa.",
|
||
"ai.fx_own": "taxa própria",
|
||
"ai.usage_unpriced": "{count} pedidos deste mês não têm preço registado. O seu custo não está incluído no total.",
|
||
"ai.remove_key_title": "Remover chave API",
|
||
"ai.remove_key_confirm": "A chave guardada é eliminada de imediato, independentemente de outras alterações por guardar. As funções que a usam só voltam a estar disponíveis depois de guardares uma nova chave.",
|
||
"ai.remove_key_button": "Remover chave",
|
||
"ai.key_removed": "A chave guardada foi removida.",
|
||
"ai.agent_offer_title": "Ativar o agente de IA?",
|
||
"ai.agent_offer_text": "O agente de IA funciona especialmente bem com {model}. Queres ativá-lo agora?",
|
||
"ai.agent_offer_confirm": "Ativar agente",
|
||
"mails.storage_off_title": "As novas mensagens não são guardadas aqui",
|
||
"mails.storage_off_text": "«Guardar localmente» está desativado em todos os formulários ativos. Por isso, as mensagens recebidas não aparecem nesta lista e só chegam por e-mail, se o envio estiver configurado.",
|
||
"mails.forms_disabled_title": "Nenhum formulário está ativo",
|
||
"mails.forms_disabled_text": "Enquanto nenhum formulário estiver ativo, os visitantes não podem enviar mensagens e esta lista fica vazia.",
|
||
"mails.open_forms_settings": "Abrir formulários",
|
||
"ai.agent_classic_mode": "Oferecer o modo clássico no chat",
|
||
"ai.agent_classic_mode_hint": "O chat permite alternar entre o agente e o assistente clássico. O modo clássico é mais rápido e barato para perguntas e sugestões de texto avulsas. Desativa-o se o chat deve mostrar apenas o agente.",
|
||
"ai.images_section": "Imagens",
|
||
"ai.images_section_hint": "As imagens vêm de um serviço próprio, independente do fornecedor de chat. O agente de IA, o assistente e o gerador de imagens usam-no em conjunto.",
|
||
"ai.image_service": "Serviço de imagens",
|
||
"ai.image_service_inherit": "Igual ao fornecedor de chat",
|
||
"ai.image_service_openai": "OpenAI",
|
||
"ai.image_service_openrouter": "OpenRouter",
|
||
"ai.image_service_kie": "Kie.ai",
|
||
"ai.image_service_fal": "fal.ai",
|
||
"ai.image_service_comet": "Comet API",
|
||
"ai.image_service_custom": "Personalizado (compatível com OpenAI)",
|
||
"ai.image_service_inherit_hint": "Usa os modelos de imagem do fornecedor de chat (não é possível com a Anthropic).",
|
||
"ai.image_service_inherit_anthropic": "A Anthropic não tem API de imagens. Escolhe um serviço de imagens para que o agente e as funções de imagem possam criar imagens.",
|
||
"ai.image_service_key_own": "Chave própria guardada. Deixa-a inalterada para a manter.",
|
||
"ai.image_service_key_chat": "Sem chave própria: é usada a chave do fornecedor de chat com o mesmo nome. Introduz aqui uma chave para usar uma separada.",
|
||
"ai.image_service_key_none": "Não há nenhuma chave API guardada para este serviço.",
|
||
"ai.image_service_unverified": "Os parâmetros deste modelo não foram verificados com a documentação do fornecedor. São usados valores predefinidos; se for preciso, acrescenta abaixo parâmetros específicos do modelo.",
|
||
"ai.image_service_custom_base_url": "URL base",
|
||
"ai.image_service_custom_base_url_hint": "Endereço de um serviço com endpoint /images/generations compatível com OpenAI, p. ex. https://api.example.com/v1. Os endereços locais exigem a opção «Permitir URL de fornecedor local/privado».",
|
||
"ai.image_service_custom_base_url_missing": "Introduz o URL base do serviço de imagens.",
|
||
"ai.image_service_size_mode": "Parâmetro de tamanho",
|
||
"ai.image_service_size_mode_size": "Tamanho em píxeis (size: 1024x1024)",
|
||
"ai.image_service_size_mode_aspect": "Proporção (aspect_ratio: 16:9)",
|
||
"ai.image_service_size_mode_none": "Não enviar tamanho",
|
||
"ai.image_service_auth_style": "Autenticação",
|
||
"ai.image_service_extra_params": "Parâmetros próprios (JSON)",
|
||
"ai.image_service_extra_params_hint": "Opcional. Acrescentado a cada pedido deste serviço, p. ex. opções específicas do modelo. Não introduzas chaves aqui. prompt, model e n são definidos pelo raiju.",
|
||
"ai.image_price_model": "Preço da imagem",
|
||
"ai.image_price_per_image": "Preço por imagem",
|
||
"ai.image_price_status_override": "Preço próprio: {price} {currency} por imagem.",
|
||
"ai.image_price_status_catalog": "Preço de catálogo: {price} {currency} por imagem, a {date}.",
|
||
"ai.image_price_status_default": "Não há preço para este modelo: aplica-se o preço predefinido de {cents} cêntimos por imagem.",
|
||
"ai.usage_unpriced_images": "{count} pedidos de imagem deste mês não têm preço. O seu custo não está incluído no total.",
|
||
"ai.image_price_tables": "Preços por resolução e qualidade (opcional)",
|
||
"ai.image_price_tables_hint": "Se o modelo cobra de forma diferente por resolução ou qualidade, introduz aqui o preço por imagem de cada uma. Um pedido usa o preço da sua resolução, depois o da sua qualidade e, por fim, o preço por imagem acima. Os campos vazios usam o preço por imagem.",
|
||
"ai.image_price_status_tables": "Também há preços por resolução ou qualidade.",
|
||
"ai.image_price_status_tables_only": "Há preços por resolução ou qualidade; os pedidos sem correspondência usam o preço predefinido por imagem.",
|
||
"ai.image_service_models_loaded": "{count} modelos carregados do serviço. Podes na mesma escrever qualquer ID de modelo.",
|
||
"ai.image_service_unusable_key": "O serviço de imagens {service} ainda não tem chave API. Adiciona-a em Definições de IA → Imagens.",
|
||
"ai.image_service_unusable_model": "Não há nenhum modelo de imagem escolhido para {service}. Escolhe um em Definições de IA → Imagens.",
|
||
"ai.image_price_status_catalog_tables": "Preços de catálogo por resolução ou qualidade, a {date}.",
|
||
"settings.dashboard_design": "Design"
|
||
}
|