From e0684cdb0a64dc3af57cd3e542d58ae29de442bd Mon Sep 17 00:00:00 2001 From: Abderrahmane Smimite Date: Thu, 9 May 2024 17:36:09 +0200 Subject: [PATCH 1/2] Add Brazilian Portuguese translation --- frontend/messages/en.json | 1 + frontend/messages/fr.json | 1 + frontend/messages/pt.json | 517 ++++++++++++++++++ frontend/project.inlang/settings.json | 2 +- .../components/SideBar/SideBarFooter.svelte | 3 +- frontend/src/lib/utils/locales.ts | 7 +- 6 files changed, 528 insertions(+), 3 deletions(-) create mode 100644 frontend/messages/pt.json diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 626b37aba..27a31c89d 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -3,6 +3,7 @@ "french": "French", "english": "English", "arabic": "Arabic", + "portuguese": "Portuguese", "addThreat": "Add threat", "addReferenceControl": "Add reference control", "addAppliedControl": "Add applied control", diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index edccc3116..8b01061f9 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -3,6 +3,7 @@ "french": "Français", "english": "Anglais", "arabic": "Arabe", + "portuguese": "Portugais", "addThreat": "Ajouter une menace", "addReferenceControl": "Ajouter une mesure de référence", "addAppliedControl": "Ajouter une mesure appliquée", diff --git a/frontend/messages/pt.json b/frontend/messages/pt.json new file mode 100644 index 000000000..2686372fc --- /dev/null +++ b/frontend/messages/pt.json @@ -0,0 +1,517 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "french": "Francês", + "english": "Inglês", + "arabic": "Árabe", + "portuguese": "Português", + "addThreat": "Adicionar ameaça", + "addReferenceControl": "Adicionar controle de referência", + "addAppliedControl": "Adicionar controle aplicado", + "addAsset": "Adicionar ativo", + "addRiskAssessment": "Adicionar avaliação de risco", + "addRiskScenario": "Adicionar cenário de risco", + "addRiskAcceptance": "Adicionar aceite de risco", + "addComplianceAssessment": "Iniciar Auditoria", + "addEvidence": "Adicionar evidência", + "addDomain": "Adicionar domínio", + "addProject": "Adicionar projeto", + "addUser": "Adicionar usuário", + "addPolicy": "Adicionar política", + "associatedThreats": "Ameaças associadas", + "associatedReferenceControls": "Controles de referência associados", + "associatedAppliedControls": "Controles aplicados associados", + "associatedAssets": "Ativos associados", + "associatedRiskAssessments": "Avaliações de risco associadas", + "associatedRiskScenarios": "Cenários de risco associados", + "associatedRiskAcceptances": "Aceites de risco associados", + "associatedComplianceAssessments": "Auditorias associadas", + "associatedEvidences": "Evidências associadas", + "associatedDomains": "Domínios associados", + "associatedProjects": "Projetos associados", + "associatedUsers": "Usuários associados", + "home": "Início", + "edit": "Editar", + "changePassword": "Alterar senha", + "overview": "Visão geral", + "context": "Contexto", + "governance": "Governança", + "risk": "Risco", + "compliance": "Conformidade", + "organization": "Organização", + "extra": "Extra", + "analytics": "Análises", + "calendar": "Calendário", + "threats": "Ameaças", + "referenceControls": "Controles de referência", + "appliedControls": "Controles aplicados", + "assets": "Ativos", + "asset": "Ativo", + "policy": "Política", + "policies": "Políticas", + "riskMatrices": "Matrizes de risco", + "riskAssessments": "Avaliações de risco", + "riskScenarios": "Cenários de risco", + "riskScenario": "Cenário de risco", + "riskAcceptances": "Aceites de risco", + "riskAcceptance": "Aceite de risco", + "complianceAssessments": "Auditorias", + "complianceAssessment": "Auditoria", + "evidences": "Evidências", + "evidence": "Evidência", + "frameworks": "Frameworks", + "domains": "Domínios", + "projects": "Projetos", + "users": "Usuários", + "user": "Usuário", + "userGroups": "Grupos de usuários", + "roleAssignments": "Atribuições de função", + "xRays": "Raios-X", + "scoringAssistant": "Assistente de pontuação", + "scoringAssistantNoMatrixError": "Importe uma matriz de risco da loja de bibliotecas para acessar esta página", + "libraries": "Bibliotecas", + "backupRestore": "Backup e restauração", + "myProfile": "Meu perfil", + "aboutCiso": "Sobre o CISO Assistant", + "Logout": "Sair", + "name": "Nome", + "description": "Descrição", + "parentDomain": "Domínio pai", + "ref": "Ref", + "refId": "ID de referência", + "businessValue": "Valor de negócio", + "email": "E-mail", + "firstName": "Primeiro Nome", + "lastName": "Sobrenome", + "category": "Categoria", + "eta": "ETA", + "referenceControl": "Controle de referência", + "appliedControl": "Controle aplicado", + "provider": "Fornecedor", + "domain": "Domínio", + "urn": "URN", + "id": "ID", + "treatmentStatus": "Status de tratamento", + "currentLevel": "Nível atual", + "residualLevel": "Nível residual", + "riskMatrix": "Matriz de risco", + "project": "Projeto", + "folder": "Pasta", + "riskAssessment": "Avaliação de risco", + "threat": "Ameaça", + "framework": "Framework", + "file": "Arquivo", + "language": "Idioma", + "builtin": "Integrado", + "next": "Próximo", + "previous": "Anterior", + "show": "Mostrar", + "entries": "entradas", + "searchPlaceholder": "Pesquisar...", + "noEntriesFound": "Nenhuma entrada encontrada", + "rowCount": "Mostrando {start} a {end} de {total}", + "status": "Status", + "effort": "Esforço", + "impact": "Impacto", + "expiryDate": "Data de expiração", + "link": "Link", + "createdAt": "Criado em", + "updatedAt": "Atualizado em", + "acceptedAt": "Aceito em", + "rejectedAt": "Rejeitado em", + "revokedAt": "Revogado em", + "submitted": "Enviado", + "rejected": "Rejeitado", + "revoked": "Revogado", + "locale": "Localização", + "defaultLocale": "Localização padrão", + "annotation": "Anotação", + "library": "Biblioteca", + "typicalEvidence": "Evidência típica", + "parentAsset": "Ativo pai", + "parentAssets": "Ativos pais", + "approver": "Aprovador", + "state": "Estado", + "justification": "Justificativa", + "parentFolder": "Pasta pai", + "contentType": "Tipo de conteúdo", + "type": "Tipo", + "lcStatus": "Status", + "internalReference": "Referência interna", + "isActive": "Está ativo", + "dateJoined": "Data de adesão", + "version": "Versão", + "treatment": "Tratamento", + "currentProba": "Probabilidade atual", + "currentImpact": "Impacto atual", + "residualProba": "Probabilidade residual", + "residualImpact": "Impacto residual", + "existingControls": "Controles existentes", + "strengthOfKnowledge": "Força do conhecimento", + "dueDate": "Data de vencimento", + "attachment": "Anexo", + "observation": "Observação", + "importMatrices": "Importar matrizes", + "importFrameworks": "Importar frameworks", + "summary": "Resumo", + "composer": "Compositor", + "statistics": "Estatísticas", + "myProjects": "Meus projetos", + "scenarios": "Cenários", + "assignedProjects": "Atribuído a {number} projeto{s}", + "currentRiskLevelPerScenario": "Nível de risco atual por cenário de risco", + "residualRiskLevelPerScenario": "Nível de risco residual por cenário de risco", + "appliedControlsStatus": "Status dos controles aplicados", + "currentRisk": "Risco atual", + "residualRisk": "Risco residual", + "planned": "Planejado", + "active": "Ativo", + "inactive": "Inativo", + "watchlist": "Lista de observação", + "watchlistDescription": "Itens que expiraram ou estão próximos do ETA", + "measuresToReview": "Controles aplicados para revisão", + "exceptionsToReview": "Exceções para revisão", + "expired": "Expirado", + "upcoming": "Próximo", + "today": "Hoje", + "actionRequested": "Ação solicitada", + "noRiskAcceptanceYet": "Nenhuma aceite de risco ainda", + "noAppliedControlYet": "Nenhum controle aplicado ainda", + "authors": "Autores", + "reviewers": "Revisores", + "processButton": "Processar", + "selectTargets": "Selecione seus alvos", + "composerDescription": "Isso ajudará você a agregar vários componentes (projetos) para obter a visualização compilada sobre o risco. Isso é particularmente útil para dois casos de uso", + "composerDescription1": "abordagem de inteligência de negócios para focar em um subconjunto específico em diferentes domínios de projeto (por exemplo, entre divisões)", + "composerDescription2": "você está interessado na avaliação de risco de um sistema específico, para o qual você precisa da avaliação de risco dos componentes subjacentes", + "overallCompliance": "Conformidade geral", + "exportButton": "Exportar", + "treatmentProgressOverview": "Visão geral do progresso do tratamento", + "pendingMeasures": "Seus controles aplicados pendentes", + "orderdByRankingScore": "Ordenado por pontuação de classificação", + "rankingScore": "Pontuação de classificação", + "noPendingAppliedControl": "Nenhum controle aplicado pendente", + "rankingScoreDefintion": "A pontuação de classificação é uma métrica adaptativa que combina informações de esforço e nível de risco atual, cruzando-as com outros dados para auxiliá-lo na priorização", + "actions": "Ações", + "projectsSummaryEmpty": "O resumo do projeto está vazio", + "riskOpen": "Risco: aberto", + "riskMitigate": "Risco: mitigar", + "riskAccept": "Risco: aceitar", + "riskAvoid": "Risco: evitar", + "measureOpen": "Controle: aberto", + "measureProgress": "Controle: em andamento", + "measureHold": "Controle: em espera", + "measureDone": "Controle: concluído", + "monday": "Segunda-feira", + "tuesday": "Terça-feira", + "wednesday": "Quarta-feira", + "thursday": "Quinta-feira", + "friday": "Sexta-feira", + "saturday": "Sábado", + "sunday": "Domingo", + "january": "Janeiro", + "february": "Fevereiro", + "march": "Março", + "april": "Abril", + "may": "Maio", + "june": "Junho", + "july": "Julho", + "august": "Agosto", + "september": "Setembro", + "october": "Outubro", + "november": "Novembro", + "december": "Dezembro", + "errorsFound": "erro{s} encontrado{s}", + "warningsFound": "aviso{s} encontrado{s}", + "infosFound": "informação{s} encontrado{s}", + "remediationPlan": "Plano de remediação", + "treatmentPlan": "Plano de tratamento", + "plan": "Plano", + "asPDF": "como PDF", + "asCSV": "como CSV", + "draft": "Rascunho", + "riskMatrixView": "Visualização da matriz de risco", + "currentInMatrixView": "Atual", + "probability": "Probabilidade", + "riskLevels": "Níveis de risco", + "riskLevel": "Nível de risco", + "cancel": "Cancelar", + "save": "Salvar", + "assetsImpactedByTheRiskScenario": "Ativos impactados pelo cenário de risco", + "ecistingMeasures": "Controles existentes", + "theExistingAppliedControlsToManageThisRisk": "Os controles aplicados existentes para gerenciar esse risco", + "currentRiskLevelGivenCurrentMeasures": "O nível de risco atual dado os controles aplicados atuais", + "riskLevelWhenAllExtraMeasuresDone": "O nível de risco quando todas as medidas extras forem concluídas", + "myUserGroups": "Meus grupos de usuários", + "changePasswordText": "Você pode alterar sua senha aqui. Você precisará fazer login com sua nova senha após esta operação", + "oldPassword": "Senha antiga", + "newPassword": "Nova senha", + "confirmNewPassword": "Confirmar nova senha", + "label": "Rótulo", + "NA": "N/A", + "threatAgentFactors": "Fatores de agentes de ameaça", + "vulnerabilityFactors": "Fatores de vulnerabilidade", + "businessImpactFactors": "Fatores de impacto nos negócios", + "technicalImpactFactors": "Fatores de impacto técnico", + "assessmentVector": "Vetor de avaliação", + "skillLevelText": "Quão habilidoso tecnicamente é esse grupo de agentes de ameaça?", + "skillLevelChoice1": "Sem habilidades técnicas", + "skillLevelChoice2": "Algumas habilidades técnicas", + "skillLevelChoice3": "Usuário avançado de computador", + "skillLevelChoice4": "Habilidades em redes e programação", + "skillLevelChoice5": "Habilidades em penetração de segurança", + "motiveText": "Quão motivado está esse grupo de agentes de ameaça para encontrar e explorar essa vulnerabilidade?", + "motiveChoice1": "Recompensa baixa ou nenhuma", + "motiveChoice2": "Recompensa possível", + "motiveChoice3": "Recompensa alta", + "opportunityText": "Quais recursos e oportunidades são necessários para que esse grupo de agentes de ameaça encontre e explore essa vulnerabilidade?", + "opportunityChoice1": "Acesso total ou recursos caros são necessários", + "opportunityChoice2": "Acesso especializado ou recursos são necessários", + "opportunityChoice3": "Algum acesso ou recursos são necessários", + "opportunityChoice4": "Nenhum acesso ou recursos são necessários", + "sizeText": "Qual é o tamanho desse grupo de agentes de ameaça?", + "sizeChoice1": "Desenvolvedores ou administradores de sistema", + "sizeChoice2": "Usuários da intranet", + "sizeChoice3": "Parceiros", + "sizeChoice4": "Usuários autenticados", + "sizeChoice5": "Usuários anônimos da internet", + "easeOfDiscoveryText": "Quão fácil é para esse grupo de agentes de ameaça descobrir essa vulnerabilidade?", + "easeOfDiscoveryChoice1": "Praticamente impossível", + "easeOfDiscoveryChoice2": "Difícil", + "easeOfDiscoveryChoice3": "Fácil", + "easeOfDiscoveryChoice4": "Ferramentas automatizadas disponíveis", + "easeOfExploitText": "Quão fácil é para esse grupo de agentes de ameaça realmente explorar essa vulnerabilidade?", + "easeOfExploitChoice1": "Teórico", + "easeOfExploitChoice2": "Difícil", + "easeOfExploitChoice3": "Fácil", + "easeOfExploitChoice4": "Ferramentas automatizadas disponíveis", + "awarenessText": "Quão conhecida é essa vulnerabilidade para esse grupo de agentes de ameaça?", + "awarenessChoice1": "Desconhecida", + "awarenessChoice2": "Oculta", + "awarenessChoice3": "Óbvia", + "awarenessChoice4": "Conhecimento público", + "intrusionDetectionText": "Quão provável é uma exploração ser detectada?", + "intrusionDetectionChoice1": "Detecção ativa na aplicação", + "intrusionDetectionChoice2": "Registrado e revisado", + "intrusionDetectionChoice3": "Registrado sem revisão", + "intrusionDetectionChoice4": "Não registrado", + "financialDamageText": "Quanto dano financeiro resultará de uma exploração?", + "financialDamageChoice1": "Menos do que o custo para corrigir a vulnerabilidade", + "financialDamageChoice2": "Efeito mínimo no lucro anual", + "financialDamageChoice3": "Efeito significativo no lucro anual", + "financialDamageChoice4": "Falência", + "reputationDamageText": "Uma exploração resultaria em danos à reputação que prejudicariam o negócio?", + "reputationDamageChoice1": "Dano mínimo", + "reputationDamageChoice2": "Perda de grandes contas", + "reputationDamageChoice3": "Perda de boa vontade", + "reputationDamageChoice4": "Dano à marca", + "nonComplianceText": "Quanta exposição a não conformidade isso introduz?", + "nonComplianceChoice1": "Violação mínima", + "nonComplianceChoice2": "Violação clara", + "nonComplianceChoice3": "Violação de alto perfil", + "nonComplianceChoice4": "Nenhuma exposição", + "privacyViolationText": "Quanta informação pessoal identificável poderia ser divulgada?", + "privacyViolationChoice1": "Um indivíduo", + "privacyViolationChoice2": "Centenas de pessoas", + "privacyViolationChoice3": "Milhares de pessoas", + "privacyViolationChoice4": "Milhões de pessoas", + "lossOfConfidentialityText": "Quantos dados poderiam ser divulgados e quão sensíveis são?", + "lossOfConfidentialityChoice1": "Divulgação mínima de dados não sensíveis", + "lossOfConfidentialityChoice2": "Divulgação mínima de dados críticos ou extensa de dados não sensíveis", + "lossOfConfidentialityChoice3": "Divulgação extensa de dados críticos", + "lossOfConfidentialityChoice4": "Todos os dados divulgados", + "lossOfIntegrityText": "Quanto dados podem ser corrompidos e quão danificados estão?", + "lossOfIntegrityChoice1": "Dados ligeiramente corrompidos de forma mínima", + "lossOfIntegrityChoice2": "Dados seriamente corrompidos de forma mínima", + "lossOfIntegrityChoice3": "Dados ligeiramente corrompidos de forma extensiva", + "lossOfIntegrityChoice4": "Dados seriamente corrompidos de forma extensiva", + "lossOfIntegrityChoice5": "Todos os dados totalmente corrompidos", + "lossOfAvailabilityText": "Quanto serviço pode ser perdido e quão vital é?", + "lossOfAvailabilityChoice1": "Serviços secundários interrompidos de forma mínima", + "lossOfAvailabilityChoice2": "Serviços primários ou serviços secundários extensivos interrompidos de forma mínima", + "lossOfAvailabilityChoice3": "Serviços primários extensivamente interrompidos", + "lossOfAvailabilityChoice4": "Todos os serviços completamente perdidos", + "lossOfAccountabilityText": "As ações dos agentes de ameaça são rastreáveis até um indivíduo?", + "lossOfAccountabilityChoice1": "Totalmente rastreável", + "lossOfAccountabilityChoice2": "Possivelmente rastreável", + "lossOfAccountabilityChoice3": "Completamente anônimo", + "ignore": "Ignorar", + "importedLibraries": "Bibliotecas importadas", + "librariesStore": "Loja de bibliotecas", + "currentlyNoImportedLibraries": "Atualmente, você não possui bibliotecas importadas", + "loadingLibraryUploadButton": "Carregando o botão de upload de biblioteca", + "errorOccuredWhileLoadingLibrary": "O seguinte erro ocorreu ao carregar o formulário da biblioteca", + "packager": "Empacotador", + "dependencies": "Dependências", + "copyright": "Direitos autorais", + "uploadYourLibrary": "Carregue sua própria biblioteca", + "libraryFileInYaml": "Arquivo de biblioteca no formato YAML", + "importBackup": "Importar backup", + "exportBackup": "Exportar backup", + "confirmImportBackup": "Você tem certeza de que deseja importar este backup? Isso substituirá todos os dados existentes.", + "exportDatabase": "Exportar banco de dados", + "upload": "Carregar", + "undefined": "--", + "production": "Produção", + "design": "Design", + "development": "Desenvolvimento", + "endOfLife": "Fim de vida", + "dropped": "Descartado", + "technical": "Técnico", + "physical": "Físico", + "process": "Processo", + "veryLow": "Muito baixo", + "low": "Baixo", + "high": "Alto", + "veryHigh": "Muito alto", + "small": "Pequeno", + "medium": "Médio", + "large": "Grande", + "extraLarge": "Extra grande", + "rid": "RID", + "scope": "Escopo", + "reader": "Leitor", + "lastUpdate": "Última atualização", + "riskScenarioAssetHelpText": "Ativos impactados por este cenário de risco", + "riskScenarioMeasureHelpText": "Os controles aplicados existentes para gerenciar este risco", + "currentAssessment": "Avaliação atual", + "targetAssessment": "Avaliação de destino", + "currentRiskLevel": "Nível de risco atual", + "residualRiskLevel": "Nível de risco residual", + "currentRiskLevelHelpText": "O nível de risco dado os controles atuais", + "residualRiskLevelHelpText": "O nível de risco quando todos os controles extras forem concluídas", + "yourSelection": "Sua seleção", + "composerHint": "Dica: você pode marcar esta página para uso futuro", + "composerTitle": "Aqui está a visão geral para a avaliação de risco selecionada", + "composerTitlePlural": "Aqui está a visão geral para as {number} avaliações de risco selecionadas", + "statusOfAssociatedMeasures": "Status daos controles associados", + "forTheSelectedScope": "Para o escopo selecionado, você tem", + "untreatedRiskScenarios": "{count} cenário(s) de risco não tratado(s)", + "acceptedRiskScenarios": "{count} cenário(s) de risco aceito(s)", + "reviewNeeded": "Revisão necessária", + "ok": "Ok", + "inconsistenciesFoundComposer": "Encontrada(s) {count} inconsistência(s). Para mais detalhes, verifique", + "current": "Atual", + "residual": "Residual", + "jumpToRiskAssessment": "Ir para a avaliação de risco", + "additionalMeasures": "Controles adicionais", + "riskAssessmentMatrixHelpText": "AVISO: Você não poderá alterar a matriz de risco após a criação da avaliação de risco", + "etaHelpText": "Tempo estimado de chegada", + "dueDateHelpText": "Data em que a avaliação deve ser concluída", + "expiryDateHelpText": "Data em que o objeto não é mais válido", + "linkHelpText": "URL externa para acompanhamento da ação (por exemplo, ticket Jira)", + "effortHelpText": "O esforço necessário para implementar o controle aplicado", + "riskAcceptanceJusitficationHelpText": "Justificativa para a aceitação do risco. Somente o aprovador pode editar este campo.", + "approverHelpText": "Identidade do proprietário e aprovador do risco", + "riskAcceptanceRiskScenariosHelpText": "Os cenários de risco que foram aceitos", + "attachmentHelpText": "Arquivo de evidência (por exemplo, captura de tela, arquivo de log, etc.)", + "attachmentWarningText": "AVISO: O upload de um novo arquivo substituirá o existente", + "isActiveHelpText": "Indica se este usuário deve ser tratado como ativo", + "helloThere": "Olá! 👋", + "thisIsCisoAssistant": "Este é o Assistente CISO.", + "yourStreamlined": "Sua solução", + "oneStopShop": "tudo em um", + "forComplianceRiskManagement": "para conformidade e gerenciamento de riscos.", + "youCanSetPAsswordHere": "Você pode definir sua senha aqui", + "setPassword": "Definir senha", + "logIntoYourAccount": "Faça login em sua conta", + "youNeedToLogIn": "Você precisa fazer login para acessar todos os recursos", + "forgtPassword": "Esqueceu a senha", + "login": "Login", + "password": "Senha", + "enterYourEmail": "Digite seu endereço de e-mail abaixo e enviaremos instruções para definir uma nova senha", + "send": "Enviar", + "goBackToLogin": "Voltar para o login", + "riskAcceptanceReviewMessage": "Esta aceitação de risco está aguardando processamento. Lembre-se de revisá-la antes de validá-la ou rejeitá-la, pois você não poderá voltar atrás.", + "validate": "Validar", + "reject": "Rejeitar", + "revoke": "Revogar", + "riskAcceptanceValidatedMessage": "Esta aceitação de risco está atualmente validada. Ela pode ser revogada a qualquer momento, mas isso será irrevogável. Você precisará duplicá-la com uma versão diferente, se necessário.", + "confirmModalTitle": "Confirmar", + "confirmModalMessage": "Você tem certeza? Esta ação afetará permanentemente o objeto a seguir", + "submit": "Enviar", + "requirementAssessment": "Avaliação de requisitos", + "requirementAssessments": "Avaliações de requisitos", + "deleteModalTitle": "Excluir", + "deleteModalMessage": "Você tem certeza de que deseja excluir objeto a seguir", + "download": "Baixar", + "loading": "Carregando", + "open": "Aberto", + "mitigate": "Mitigado", + "accept": "Aceito", + "avoid": "Evitado", + "transfer": "Compartilhado", + "primary": "Primário", + "support": "Suporte", + "toDo": "A fazer", + "inProgress": "Em andamento", + "inReview": "Em revisão", + "deprecated": "Descontinuado", + "done": "Concluído", + "nonCompliant": "Não conforme", + "partiallyCompliant": "Parcialmente conforme", + "compliant": "Conforme", + "notApplicable": "Não aplicável", + "administrator": "Administrador", + "domainManager": "Gerente de domínio", + "analyst": "Analista", + "successfullyCreatedObject": "O objeto {object} foi criado com sucesso", + "successfullyUpdatedObject": "O objeto {object}: {name} foi atualizado com sucesso", + "successfullySavedObject": "O objeto {object} foi salvo com sucesso", + "successfullyDeletedObject": "O objeto {object} foi excluído com sucesso", + "successfullyCreatedUser": "Usuário criado com sucesso. Um e-mail foi enviado para definir a senha.", + "successfullyUpdatedUser": "O usuário: {email} foi atualizado com sucesso", + "successfullyValidatedObject": "O objeto {object} foi validado com sucesso", + "successfullyRejectedObject": "O objeto {object} foi rejeitado com sucesso", + "successfullyRevokedObject": "O objeto {object} foi revogado com sucesso", + "successfullyImportedObject": "O objeto {object} foi importado com sucesso", + "anErrorOccurred": "Ocorreu um erro", + "attachmentDeleted": "O anexo foi excluído com sucesso", + "librarySuccessfullyImported": "A biblioteca foi importada com sucesso", + "noLibraryDetected": "Nenhuma biblioteca detectada", + "errorImportingLibrary": "Erro ao importar a biblioteca", + "passwordSuccessfullyChanged": "Sua senha foi alterada com sucesso", + "passwordSuccessfullyReset": "Sua senha foi redefinida com sucesso", + "passwordSuccessfullySet": "Sua senha foi definida com sucesso", + "passwordSuccessfullySetWelcome": "Sua senha foi definida com sucesso. Bem-vindo ao CISO Assistant!", + "waitBeforeRequestingResetLink": "Aguarde {timing} segundos antes de solicitar um novo link de redefinição", + "resetLinkSent": "A solicitação foi recebida, você deve receber um link de redefinição no seguinte endereço: {email}", + "riskAcceptanceStateDoesntAllowEdit": "O estado da aceitação de risco: {riskAcceptance} não permite que ele seja editado", + "associatedRequirements": "Requisitos associados", + "isPublished": "Está publicado", + "suggestedReferenceControls": "Controles de referência sugeridos", + "threatsCovered": "Ameaças cobertas", + "noFileDetected": "Erro: nenhum arquivo detectado", + "usedRiskMatrices": "Matrizes de risco utilizadas", + "usedFrameworks": "Frameworks utilizados", + "riskAssessmentsStatus": "Status das avaliações de risco", + "complianceAssessmentsStatus": "Status das auditorias", + "noDescription": "Sem descrição", + "noExistingControls": "Sem controles existentes", + "noJustification": "Sem justificativa", + "undefinedSOK": "A força do conhecimento que sustenta a avaliação não está definida", + "lowSOK": "A força do conhecimento que sustenta a avaliação é baixa", + "mediumSOK": "A força do conhecimento que sustenta a avaliação é média", + "highSOK": "A força do conhecimento que sustenta a avaliação é alta", + "libraryImportError": "Ocorreu um erro durante a importação da sua biblioteca.", + "libraryAlreadyImportedError": "Esta biblioteca já foi importada.", + "invalidLibraryFileError": "Arquivo de biblioteca inválido. Certifique-se de que o formato está correto.", + "taintedFormMessage": "Você deseja sair desta página? As alterações que você fez podem não ser salvas.", + "riskScenariosStatus": "Status dos cenários de risco", + "onlineDocs": "Documentação online", + "warning": "Aviso", + "missingMandatoyObjects1": "Alguns objetos obrigatórios para {model} ainda não foram criados ou importados", + "missingMandatoyObjects2": "Por favor, adicione-os antes de prosseguir", + "attemptToDeleteOnlyAdminAccountError": "Você não pode excluir a única conta de administrador do seu aplicativo.", + "attemptToRemoveOnlyAdminUserGroup": "Você não pode remover o único usuário administrador do aplicativo do grupo de usuários administradores.", + "scoringHelpText": "Marque para habilitar a pontuação", + "minScore": "Pontuação mínima", + "maxScore": "Pontuação máxima", + "setTemporaryPassword1": "Caso o usuário não consiga definir sua própria senha, você pode", + "setTemporaryPassword": "definir uma senha temporária", + "setTemporaryPassword2": "Por favor, use uma senha forte e certifique-se de informar ao usuário para alterá-la o mais rápido possível", + "youCanSetNewPassword": "Você pode definir uma nova senha aqui", + "userWillBeDisconnected": "O usuário será desconectado e precisará fazer login novamente", + "scoresDefinition": "Definição de pontuações", + "selectedImplementationGroups": "Grupos de implementação selecionados", + "implementationGroupsDefinition": "Definição de grupos de implementação" +} diff --git a/frontend/project.inlang/settings.json b/frontend/project.inlang/settings.json index d4cf30191..e546f5c4a 100644 --- a/frontend/project.inlang/settings.json +++ b/frontend/project.inlang/settings.json @@ -1,7 +1,7 @@ { "$schema": "https://inlang.com/schema/project-settings", "sourceLanguageTag": "en", - "languageTags": ["en", "ar", "fr"], + "languageTags": ["en", "ar", "fr", "pt"], "modules": [ "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js", "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@latest/dist/index.js", diff --git a/frontend/src/lib/components/SideBar/SideBarFooter.svelte b/frontend/src/lib/components/SideBar/SideBarFooter.svelte index cd70b8174..eb0198d9a 100644 --- a/frontend/src/lib/components/SideBar/SideBarFooter.svelte +++ b/frontend/src/lib/components/SideBar/SideBarFooter.svelte @@ -11,7 +11,8 @@ const language: any = { french: m.french(), english: m.english(), - arabic: m.arabic() + arabic: m.arabic(), + portuguese: m.portuguese(), }; const modalStore = getModalStore(); diff --git a/frontend/src/lib/utils/locales.ts b/frontend/src/lib/utils/locales.ts index 731ef1562..55c779d88 100644 --- a/frontend/src/lib/utils/locales.ts +++ b/frontend/src/lib/utils/locales.ts @@ -12,7 +12,11 @@ export const LOCALE_MAP = { ar: { name: 'arabic', flag: '🇸🇦' - } + }, + pt: { + name: 'portuguese', + flag: '🇧🇷' + }, }; export function toCamelCase(str: string) { @@ -34,6 +38,7 @@ export function localItems(languageTag: string): LocalItems { french: m.french({ languageTag: languageTag }), english: m.english({ languageTag: languageTag }), arabic: m.arabic({ languageTag: languageTag }), + portuguese: m.portuguese({ languageTag: languageTag }), home: m.home({ languageTag: languageTag }), edit: m.edit({ languageTag: languageTag }), overview: m.overview({ languageTag: languageTag }), From 66615adf0ea78dd16d4d132a079d1d689d1f249d Mon Sep 17 00:00:00 2001 From: Abderrahmane Smimite Date: Thu, 9 May 2024 17:47:01 +0200 Subject: [PATCH 2/2] Rerun formatter --- frontend/src/lib/components/SideBar/SideBarFooter.svelte | 2 +- frontend/src/lib/utils/locales.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/SideBar/SideBarFooter.svelte b/frontend/src/lib/components/SideBar/SideBarFooter.svelte index eb0198d9a..7d2cc7f5e 100644 --- a/frontend/src/lib/components/SideBar/SideBarFooter.svelte +++ b/frontend/src/lib/components/SideBar/SideBarFooter.svelte @@ -12,7 +12,7 @@ french: m.french(), english: m.english(), arabic: m.arabic(), - portuguese: m.portuguese(), + portuguese: m.portuguese() }; const modalStore = getModalStore(); diff --git a/frontend/src/lib/utils/locales.ts b/frontend/src/lib/utils/locales.ts index 55c779d88..71ba70738 100644 --- a/frontend/src/lib/utils/locales.ts +++ b/frontend/src/lib/utils/locales.ts @@ -16,7 +16,7 @@ export const LOCALE_MAP = { pt: { name: 'portuguese', flag: '🇧🇷' - }, + } }; export function toCamelCase(str: string) {