Added language selection and translation files

This commit is contained in:
gulimabr
2025-12-04 15:42:43 -03:00
parent 469ecc8054
commit 51233ec989
32 changed files with 5526 additions and 313 deletions

9
frontend/src/i18n/i18n.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
import 'i18next';
import { resources, defaultNS } from './index';
declare module 'i18next' {
interface CustomTypeOptions {
defaultNS: typeof defaultNS;
resources: typeof resources['en'];
}
}

View File

@@ -0,0 +1,96 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
// Import English translations
import enCommon from './locales/en/common.json';
import enNavbar from './locales/en/navbar.json';
import enHome from './locales/en/home.json';
import enDashboard from './locales/en/dashboard.json';
import enRequirements from './locales/en/requirements.json';
import enRequirementDetail from './locales/en/requirementDetail.json';
import enAdmin from './locales/en/admin.json';
import enValidation from './locales/en/validation.json';
import enErrors from './locales/en/errors.json';
// Import Portuguese translations
import ptCommon from './locales/pt/common.json';
import ptNavbar from './locales/pt/navbar.json';
import ptHome from './locales/pt/home.json';
import ptDashboard from './locales/pt/dashboard.json';
import ptRequirements from './locales/pt/requirements.json';
import ptRequirementDetail from './locales/pt/requirementDetail.json';
import ptAdmin from './locales/pt/admin.json';
import ptValidation from './locales/pt/validation.json';
import ptErrors from './locales/pt/errors.json';
// Define available languages for the language selector
export const LANGUAGES = [
{ code: 'en', label: 'English', flag: '🇺🇸' },
{ code: 'pt', label: 'Português', flag: '🇧🇷' },
] as const;
export type LanguageCode = typeof LANGUAGES[number]['code'];
// Define resources with all namespaces
export const resources = {
en: {
common: enCommon,
navbar: enNavbar,
home: enHome,
dashboard: enDashboard,
requirements: enRequirements,
requirementDetail: enRequirementDetail,
admin: enAdmin,
validation: enValidation,
errors: enErrors,
},
pt: {
common: ptCommon,
navbar: ptNavbar,
home: ptHome,
dashboard: ptDashboard,
requirements: ptRequirements,
requirementDetail: ptRequirementDetail,
admin: ptAdmin,
validation: ptValidation,
errors: ptErrors,
},
} as const;
// Define default namespace
export const defaultNS = 'common';
i18n
// Detect user language from localStorage, navigator, etc.
.use(LanguageDetector)
// Pass i18n instance to react-i18next
.use(initReactI18next)
// Initialize i18next
.init({
resources,
fallbackLng: 'en',
defaultNS,
// Language detection options
detection: {
// Order of language detection methods
order: ['localStorage', 'navigator', 'htmlTag'],
// Cache user language preference in localStorage
caches: ['localStorage'],
// Key name in localStorage
lookupLocalStorage: 'i18nextLng',
},
interpolation: {
// React already escapes values, so we don't need i18next to do it
escapeValue: false,
},
// React Suspense support (for future lazy loading)
react: {
useSuspense: false,
},
});
export default i18n;

View File

@@ -0,0 +1,68 @@
{
"pageTitle": "Admin Panel",
"managing": "Managing:",
"tabs": {
"projectSettings": "Project Settings",
"memberRoles": "Member Roles",
"relationshipTypes": "Relationship Types"
},
"backToDashboard": "Back to Dashboard",
"noProject": {
"title": "No Project Selected",
"message": "Please select a project from the dashboard first.",
"goToDashboard": "Go to Dashboard"
},
"projectSettings": {
"title": "Project Settings",
"projectName": "Project Name",
"description": "Description",
"saveButton": "Save Changes",
"successMessage": "Project updated successfully!",
"errorUpdating": "Failed to update project"
},
"memberRoles": {
"title": "Member Roles",
"loadingMembers": "Loading members...",
"noMembers": "No members found",
"tableHeaders": {
"user": "User",
"role": "Role",
"actions": "Actions"
},
"youBadge": "You",
"cannotDemoteSelf": "You cannot demote yourself. Ask another admin to change your role.",
"errorUpdating": "Failed to update member role"
},
"relationshipTypes": {
"title": "Relationship Types",
"addButton": "+ Add Type",
"loadingTypes": "Loading relationship types...",
"noTypes": "No relationship types defined yet. Create one to link requirements.",
"inverse": "Inverse:",
"editButton": "Edit",
"deleteButton": "Delete"
},
"createRelTypeModal": {
"title": "Create Relationship Type",
"typeName": "Type Name",
"typeNamePlaceholder": "e.g., Depends On",
"inverseName": "Inverse Name",
"inverseNamePlaceholder": "e.g., Depended By",
"inverseNameHint": "Optional. The name shown when viewing from the target requirement.",
"description": "Description",
"createButton": "Create",
"errorCreating": "Failed to create relationship type"
},
"editRelTypeModal": {
"title": "Edit Relationship Type",
"saveButton": "Save Changes",
"errorUpdating": "Failed to update relationship type"
},
"deleteRelTypeModal": {
"title": "Delete Relationship Type",
"confirmMessage": "Are you sure you want to delete the relationship type",
"warningMessage": "⚠️ This will also delete all requirement links using this type.",
"deleteButton": "Delete",
"errorDeleting": "Failed to delete relationship type"
}
}

View File

@@ -0,0 +1,49 @@
{
"save": "Save",
"saveChanges": "Save Changes",
"saving": "Saving...",
"cancel": "Cancel",
"delete": "Delete",
"deleting": "Deleting...",
"edit": "Edit",
"close": "Close",
"loading": "Loading...",
"retry": "Retry",
"search": "Search",
"clear": "Clear",
"filter": "Filter",
"create": "Create",
"creating": "Creating...",
"add": "Add",
"remove": "Remove",
"yes": "Yes",
"no": "No",
"none": "None",
"unknown": "Unknown",
"noResults": "No results found",
"required": "Required",
"optional": "Optional",
"version": "Version",
"priority": "Priority",
"status": "Status",
"date": "Date",
"name": "Name",
"description": "Description",
"actions": "Actions",
"details": "Details",
"user": "User",
"role": "Role",
"by": "by",
"on": "on",
"more": "more",
"empty": "Empty",
"old": "Old",
"new": "New",
"total": "Total",
"all": "All",
"you": "You",
"projects": "Projects",
"project": "Project",
"selectLanguage": "Select language",
"logout": "Logout"
}

View File

@@ -0,0 +1,67 @@
{
"sidebar": {
"title": "Digital Twin",
"subtitle": "Requirements Tool",
"createRequirement": "Create Requirement",
"navigation": "Navigation",
"searchRequirements": "Search Requirements",
"myRequirements": "My Requirements",
"generateReport": "Generate Report",
"projectSummary": "Project Summary",
"total": "Total",
"validated": "Validated"
},
"header": {
"projects": "Projects",
"admin": "Admin"
},
"projectDropdown": {
"loading": "Loading...",
"noProjectSelected": "No project selected",
"noProjectsAvailable": "No projects available",
"createNewProject": "+ Create New Project"
},
"noProjectWarning": {
"title": "No Project Selected",
"messagePart1": "Please select a project from the dropdown above or",
"createProject": "create a new project",
"messagePart2": "to get started."
},
"quickFilters": {
"title": "Quick Search Filters",
"subtitle": "Click a category to filter requirements",
"noGroupsFound": "No groups found",
"total": "total"
},
"needsAttention": {
"title": "Needs Attention",
"subtitle": "Requirements with denied or partial validation",
"viewAll": "View All",
"moreRequirements": "more requirements need attention",
"by": "by"
},
"needsRevalidation": {
"title": "Needs Revalidation",
"subtitle": "Requirements updated since last validation",
"viewAll": "View All",
"moreRequirements": "more requirements need revalidation",
"versionBehind": "version behind",
"versionsBehind": "versions behind",
"lastValidatedBy": "Last validated by",
"by": "by"
},
"allClear": {
"title": "All Clear!",
"message": "No requirements need attention. All validations are either approved or pending review."
},
"createProject": {
"title": "Create New Project",
"projectName": "Project Name",
"projectNamePlaceholder": "Enter project name",
"description": "Description",
"descriptionPlaceholder": "Enter project description (optional)",
"createButton": "Create Project",
"creating": "Creating...",
"errorCreating": "Failed to create project. Please try again."
}
}

View File

@@ -0,0 +1,11 @@
{
"generic": "An error occurred. Please try again.",
"loadFailed": "Failed to load data. Please try again.",
"saveFailed": "Failed to save. Please try again.",
"deleteFailed": "Failed to delete. Please try again.",
"createFailed": "Failed to create. Please try again.",
"unauthorized": "You are not authorized to perform this action.",
"notFound": "The requested resource was not found.",
"networkError": "Network error. Please check your connection.",
"sessionExpired": "Your session has expired. Please log in again."
}

View File

@@ -0,0 +1,5 @@
{
"title": "Requirements Periodic Table",
"subtitle": "Manage and track your project requirements.",
"goToDashboard": "Go to Dashboard"
}

View File

@@ -0,0 +1,7 @@
{
"brand": "Requirements Periodic Table",
"dashboard": "Dashboard",
"hello": "Hello",
"logout": "Logout",
"login": "Login"
}

View File

@@ -0,0 +1,155 @@
{
"pageTitle": "Digital Twin Requirements Tool",
"breadcrumb": {
"search": "Search",
"details": "Details"
},
"loadingRequirement": "Loading requirement...",
"requirementNotFound": "Requirement not found",
"noRequirementId": "No requirement ID provided",
"backToRequirements": "Back to Requirements",
"errorLoading": "Failed to load requirement. Please try again.",
"draft": {
"badge": "Draft - Not Finalized",
"title": "Draft Requirement",
"message": "This requirement is still in draft status and is not finalized. It may be subject to changes."
},
"tabs": {
"description": "Description",
"relationships": "Relationships",
"acceptanceCriteria": "Acceptance Criteria",
"sharedComments": "Shared Comments",
"validate": "Validate",
"history": "History"
},
"description": {
"title": "Description",
"version": "Version:",
"status": "Status:",
"validationStatus": "Validation Status:",
"author": "Author:",
"lastEditedBy": "Last Edited By:",
"created": "Created:",
"lastUpdated": "Last Updated:",
"noDescription": "No description provided.",
"editButton": "Edit"
},
"relationships": {
"title": "Relationships",
"addButton": "Add Relationship",
"noTypesWarning": "No relationship types have been defined for this project. Contact an administrator to set up relationship types.",
"loadingRelationships": "Loading relationships...",
"noRelationships": "No relationships defined yet.",
"tableHeaders": {
"direction": "Direction",
"type": "Type",
"linkedRequirement": "Linked Requirement",
"createdBy": "Created By",
"date": "Date",
"actions": "Actions"
},
"outgoing": "→ Outgoing",
"incoming": "← Incoming"
},
"acceptanceCriteria": {
"title": "Acceptance Criteria",
"noCriteria": "No acceptance criteria defined yet.",
"addButton": "Add Criterion"
},
"comments": {
"title": "Shared Comments",
"placeholder": "Add a comment...",
"postButton": "Post Comment",
"posting": "Posting...",
"noComments": "No comments yet. Be the first to comment!",
"loadingComments": "Loading comments...",
"reply": "Reply",
"cancelReply": "Cancel Reply",
"replyPlaceholder": "Write a reply...",
"postReply": "Post Reply",
"errorPosting": "Failed to post comment. Please try again.",
"errorPostingReply": "Failed to post reply. Please try again.",
"roles": {
"editor": "Editor",
"auditor": "Auditor",
"admin": "Project Admin",
"user": "User"
}
},
"validate": {
"title": "Validate Requirement",
"currentStatus": "Current Status:",
"requirementVersion": "Requirement Version:",
"lastValidatedBy": "Last validated by",
"staleWarning": "This requirement was modified after the last validation (validated at version {{validationVersion}}, current version {{currentVersion}}).",
"submitTitle": "Submit Validation",
"statusLabel": "Validation Status",
"selectStatus": "Select a status...",
"commentLabel": "Comment",
"commentPlaceholder": "Add a comment explaining your decision (optional but recommended)",
"submitButton": "Submit Validation",
"submitting": "Submitting...",
"errorSubmitting": "Failed to submit validation. Please try again.",
"historyTitle": "Validation History",
"loadingHistory": "Loading history...",
"noHistory": "No validation history yet.",
"tableHeaders": {
"date": "Date",
"status": "Status",
"version": "Version",
"validator": "Validator",
"comment": "Comment"
},
"noComment": "No comment"
},
"history": {
"title": "Version History",
"originalAuthor": "Original Author:",
"loadingHistory": "Loading history...",
"noHistory": "No history yet. History is recorded when the requirement is edited or relationships change.",
"requirementEdited": "Requirement edited",
"linkCreated": "Link Created",
"linkRemoved": "Link Removed",
"groupAdded": "Group Added",
"groupRemoved": "Group Removed",
"noChangesDetected": "No visible changes detected (may be a group-only change).",
"showLess": "Show less",
"showFullDiff": "Show full diff",
"deletedRequirement": "Deleted Requirement",
"unknownGroup": "Unknown Group"
},
"addRelationshipModal": {
"title": "Add Relationship",
"relationshipType": "Relationship Type",
"selectType": "Select a relationship type...",
"targetRequirement": "Target Requirement",
"searchPlaceholder": "Search by tag code or name...",
"selected": "Selected:",
"createButton": "Create Relationship",
"errorCreating": "Failed to create link. Please try again."
},
"editModal": {
"title": "Edit Requirement",
"loadingOptions": "Loading options...",
"name": "Name",
"tag": "Tag",
"selectTag": "Select a tag...",
"priority": "Priority",
"noPriority": "No priority",
"status": "Status",
"draftNote": "Draft requirements are not finalized and marked with a visual indicator.",
"description": "Description",
"groups": "Groups",
"noGroupsAvailable": "No groups available",
"errorSaving": "Failed to save changes. Please try again.",
"nameTagRequired": "Name and Tag are required"
},
"deleteModal": {
"deleteComment": "Delete Comment",
"deleteReply": "Delete Reply",
"deleteRelationship": "Delete Relationship",
"confirmDeleteComment": "Are you sure you want to delete this comment? This will also hide all replies.",
"confirmDeleteReply": "Are you sure you want to delete this reply?",
"confirmDeleteRelationship": "Are you sure you want to delete this relationship? This action cannot be undone."
}
}

View File

@@ -0,0 +1,87 @@
{
"header": {
"title": "Digital Twin Requirements Tool"
},
"breadcrumb": {
"projects": "Projects",
"searchRequirements": "Search Requirements"
},
"noProjectSelected": {
"title": "No Project Selected",
"message": "Please select a project from the dashboard to view requirements.",
"goToDashboard": "Go to Dashboard"
},
"loadingRequirements": "Loading requirements...",
"newRequirement": "New Requirement",
"deleted": "Deleted",
"searchPlaceholder": "Search for a requirement tag or title",
"noRequirementsFound": "No requirements found matching your criteria.",
"filters": {
"filterGroup": "Filter Group",
"filterValidationStatus": "Filter Validation Status",
"showingNeedsRevalidation": "Showing: Needs Revalidation",
"showingNeedsAttention": "Showing: Needs Attention",
"needsRevalidation": "Needs Revalidation",
"statuses": {
"approved": "Approved",
"denied": "Denied",
"partiallyApproved": "Partially Approved",
"notValidated": "Not Validated"
}
},
"orderBy": {
"label": "Order by",
"date": "Date",
"priority": "Priority",
"name": "Name"
},
"caption": {
"title": "Tag Caption",
"viewCaptions": "View tag captions"
},
"requirement": {
"draft": "Draft",
"draftTooltip": "This requirement is still in draft and not finalized",
"noGroups": "No groups",
"more": "more",
"stale": "Stale",
"staleTooltip": "Requirement was modified after validation",
"by": "by",
"priority": "Priority",
"version": "Version"
},
"deletedPanel": {
"title": "Deleted Requirements",
"noDeleted": "No deleted requirements found.",
"deletedWillAppear": "Deleted requirements will appear here.",
"unnamed": "Unnamed Requirement",
"originalId": "Original ID",
"deletedAt": "Deleted",
"deletedBy": "Deleted by",
"footerNote": "Deleted requirements are preserved in history for auditing purposes."
},
"deleteModal": {
"title": "Delete Requirement",
"confirmMessage": "Are you sure you want to delete the requirement",
"explanation": "This action will move the requirement to the deleted items. You can view deleted requirements from the \"Deleted\" panel.",
"deleting": "Deleting..."
},
"createModal": {
"title": "New Requirement",
"tag": "Tag",
"selectTag": "Select a tag...",
"name": "Name",
"namePlaceholder": "Enter requirement name",
"description": "Description",
"descriptionPlaceholder": "Enter requirement description (optional)",
"priority": "Priority",
"selectPriority": "Select a priority (optional)...",
"groups": "Groups",
"createButton": "Create Requirement",
"creating": "Creating...",
"errorCreating": "Failed to create requirement. Please try again.",
"noProjectSelected": "No project selected",
"nameRequired": "Requirement name is required",
"tagRequired": "Please select a tag"
}
}

View File

@@ -0,0 +1,7 @@
{
"approved": "Approved",
"denied": "Denied",
"partial": "Partial",
"partiallyApproved": "Partially Approved",
"notValidated": "Not Validated"
}

View File

@@ -0,0 +1,68 @@
{
"pageTitle": "Painel de Administração",
"managing": "Gerenciando:",
"tabs": {
"projectSettings": "Configurações do Projeto",
"memberRoles": "Funções dos Membros",
"relationshipTypes": "Tipos de Relacionamento"
},
"backToDashboard": "Voltar ao Painel",
"noProject": {
"title": "Nenhum Projeto Selecionado",
"message": "Por favor, selecione um projeto no painel primeiro.",
"goToDashboard": "Ir para o Painel"
},
"projectSettings": {
"title": "Configurações do Projeto",
"projectName": "Nome do Projeto",
"description": "Descrição",
"saveButton": "Salvar Alterações",
"successMessage": "Projeto atualizado com sucesso!",
"errorUpdating": "Falha ao atualizar projeto"
},
"memberRoles": {
"title": "Funções dos Membros",
"loadingMembers": "Carregando membros...",
"noMembers": "Nenhum membro encontrado",
"tableHeaders": {
"user": "Usuário",
"role": "Função",
"actions": "Ações"
},
"youBadge": "Você",
"cannotDemoteSelf": "Você não pode rebaixar a si mesmo. Peça a outro administrador para alterar sua função.",
"errorUpdating": "Falha ao atualizar função do membro"
},
"relationshipTypes": {
"title": "Tipos de Relacionamento",
"addButton": "+ Adicionar Tipo",
"loadingTypes": "Carregando tipos de relacionamento...",
"noTypes": "Nenhum tipo de relacionamento definido ainda. Crie um para vincular requisitos.",
"inverse": "Inverso:",
"editButton": "Editar",
"deleteButton": "Excluir"
},
"createRelTypeModal": {
"title": "Criar Tipo de Relacionamento",
"typeName": "Nome do Tipo",
"typeNamePlaceholder": "ex.: Depende De",
"inverseName": "Nome Inverso",
"inverseNamePlaceholder": "ex.: É Dependência De",
"inverseNameHint": "Opcional. O nome mostrado ao visualizar do requisito de destino.",
"description": "Descrição",
"createButton": "Criar",
"errorCreating": "Falha ao criar tipo de relacionamento"
},
"editRelTypeModal": {
"title": "Editar Tipo de Relacionamento",
"saveButton": "Salvar Alterações",
"errorUpdating": "Falha ao atualizar tipo de relacionamento"
},
"deleteRelTypeModal": {
"title": "Excluir Tipo de Relacionamento",
"confirmMessage": "Tem certeza de que deseja excluir o tipo de relacionamento",
"warningMessage": "⚠️ Isso também excluirá todos os links de requisitos usando este tipo.",
"deleteButton": "Excluir",
"errorDeleting": "Falha ao excluir tipo de relacionamento"
}
}

View File

@@ -0,0 +1,49 @@
{
"save": "Salvar",
"saveChanges": "Salvar Alterações",
"saving": "Salvando...",
"cancel": "Cancelar",
"delete": "Excluir",
"deleting": "Excluindo...",
"edit": "Editar",
"close": "Fechar",
"loading": "Carregando...",
"retry": "Tentar Novamente",
"search": "Buscar",
"clear": "Limpar",
"filter": "Filtrar",
"create": "Criar",
"creating": "Criando...",
"add": "Adicionar",
"remove": "Remover",
"yes": "Sim",
"no": "Não",
"none": "Nenhum",
"unknown": "Desconhecido",
"noResults": "Nenhum resultado encontrado",
"required": "Obrigatório",
"optional": "Opcional",
"version": "Versão",
"priority": "Prioridade",
"status": "Status",
"date": "Data",
"name": "Nome",
"description": "Descrição",
"actions": "Ações",
"details": "Detalhes",
"user": "Usuário",
"role": "Função",
"by": "por",
"on": "em",
"more": "mais",
"empty": "Vazio",
"old": "Antigo",
"new": "Novo",
"total": "Total",
"all": "Todos",
"you": "Você",
"projects": "Projetos",
"project": "Projeto",
"selectLanguage": "Selecionar idioma",
"logout": "Sair"
}

View File

@@ -0,0 +1,67 @@
{
"sidebar": {
"title": "Digital Twin",
"subtitle": "Ferramenta de Requisitos",
"createRequirement": "Criar Requisito",
"navigation": "Navegação",
"searchRequirements": "Buscar Requisitos",
"myRequirements": "Meus Requisitos",
"generateReport": "Gerar Relatório",
"projectSummary": "Resumo do Projeto",
"total": "Total",
"validated": "Validados"
},
"header": {
"projects": "Projetos",
"admin": "Admin"
},
"projectDropdown": {
"loading": "Carregando...",
"noProjectSelected": "Nenhum projeto selecionado",
"noProjectsAvailable": "Nenhum projeto disponível",
"createNewProject": "+ Criar Novo Projeto"
},
"noProjectWarning": {
"title": "Nenhum Projeto Selecionado",
"messagePart1": "Por favor, selecione um projeto no menu acima ou",
"createProject": "crie um novo projeto",
"messagePart2": "para começar."
},
"quickFilters": {
"title": "Filtros Rápidos de Busca",
"subtitle": "Clique em uma categoria para filtrar requisitos",
"noGroupsFound": "Nenhum grupo encontrado",
"total": "total"
},
"needsAttention": {
"title": "Precisa de Atenção",
"subtitle": "Requisitos com validação negada ou parcial",
"viewAll": "Ver Todos",
"moreRequirements": "mais requisitos precisam de atenção",
"by": "por"
},
"needsRevalidation": {
"title": "Precisa de Revalidação",
"subtitle": "Requisitos atualizados desde a última validação",
"viewAll": "Ver Todos",
"moreRequirements": "mais requisitos precisam de revalidação",
"versionBehind": "versão atrás",
"versionsBehind": "versões atrás",
"lastValidatedBy": "Última validação por",
"by": "por"
},
"allClear": {
"title": "Tudo Certo!",
"message": "Nenhum requisito precisa de atenção. Todas as validações estão aprovadas ou pendentes de revisão."
},
"createProject": {
"title": "Criar Novo Projeto",
"projectName": "Nome do Projeto",
"projectNamePlaceholder": "Digite o nome do projeto",
"description": "Descrição",
"descriptionPlaceholder": "Digite a descrição do projeto (opcional)",
"createButton": "Criar Projeto",
"creating": "Criando...",
"errorCreating": "Falha ao criar projeto. Por favor, tente novamente."
}
}

View File

@@ -0,0 +1,11 @@
{
"generic": "Ocorreu um erro. Por favor, tente novamente.",
"loadFailed": "Falha ao carregar dados. Por favor, tente novamente.",
"saveFailed": "Falha ao salvar. Por favor, tente novamente.",
"deleteFailed": "Falha ao excluir. Por favor, tente novamente.",
"createFailed": "Falha ao criar. Por favor, tente novamente.",
"unauthorized": "Você não está autorizado a realizar esta ação.",
"notFound": "O recurso solicitado não foi encontrado.",
"networkError": "Erro de rede. Por favor, verifique sua conexão.",
"sessionExpired": "Sua sessão expirou. Por favor, faça login novamente."
}

View File

@@ -0,0 +1,5 @@
{
"title": "Tabela Periódica de Requisitos",
"subtitle": "Gerencie e acompanhe os requisitos do seu projeto.",
"goToDashboard": "Ir para o Painel"
}

View File

@@ -0,0 +1,7 @@
{
"brand": "Tabela Periódica de Requisitos",
"dashboard": "Painel",
"hello": "Olá",
"logout": "Sair",
"login": "Entrar"
}

View File

@@ -0,0 +1,155 @@
{
"pageTitle": "Ferramenta de Requisitos Digital Twin",
"breadcrumb": {
"search": "Buscar",
"details": "Detalhes"
},
"loadingRequirement": "Carregando requisito...",
"requirementNotFound": "Requisito não encontrado",
"noRequirementId": "Nenhum ID de requisito fornecido",
"backToRequirements": "Voltar aos Requisitos",
"errorLoading": "Falha ao carregar requisito. Por favor, tente novamente.",
"draft": {
"badge": "Rascunho - Não Finalizado",
"title": "Requisito em Rascunho",
"message": "Este requisito ainda está em status de rascunho e não foi finalizado. Pode estar sujeito a alterações."
},
"tabs": {
"description": "Descrição",
"relationships": "Relacionamentos",
"acceptanceCriteria": "Critérios de Aceitação",
"sharedComments": "Comentários Compartilhados",
"validate": "Validar",
"history": "Histórico"
},
"description": {
"title": "Descrição",
"version": "Versão:",
"status": "Status:",
"validationStatus": "Status de Validação:",
"author": "Autor:",
"lastEditedBy": "Última Edição Por:",
"created": "Criado:",
"lastUpdated": "Última Atualização:",
"noDescription": "Nenhuma descrição fornecida.",
"editButton": "Editar"
},
"relationships": {
"title": "Relacionamentos",
"addButton": "Adicionar Relacionamento",
"noTypesWarning": "Nenhum tipo de relacionamento foi definido para este projeto. Contate um administrador para configurar os tipos de relacionamento.",
"loadingRelationships": "Carregando relacionamentos...",
"noRelationships": "Nenhum relacionamento definido ainda.",
"tableHeaders": {
"direction": "Direção",
"type": "Tipo",
"linkedRequirement": "Requisito Vinculado",
"createdBy": "Criado Por",
"date": "Data",
"actions": "Ações"
},
"outgoing": "→ Saída",
"incoming": "← Entrada"
},
"acceptanceCriteria": {
"title": "Critérios de Aceitação",
"noCriteria": "Nenhum critério de aceitação definido ainda.",
"addButton": "Adicionar Critério"
},
"comments": {
"title": "Comentários Compartilhados",
"placeholder": "Adicionar um comentário...",
"postButton": "Publicar Comentário",
"posting": "Publicando...",
"noComments": "Nenhum comentário ainda. Seja o primeiro a comentar!",
"loadingComments": "Carregando comentários...",
"reply": "Responder",
"cancelReply": "Cancelar Resposta",
"replyPlaceholder": "Escreva uma resposta...",
"postReply": "Publicar Resposta",
"errorPosting": "Falha ao publicar comentário. Por favor, tente novamente.",
"errorPostingReply": "Falha ao publicar resposta. Por favor, tente novamente.",
"roles": {
"editor": "Editor",
"auditor": "Auditor",
"admin": "Admin do Projeto",
"user": "Usuário"
}
},
"validate": {
"title": "Validar Requisito",
"currentStatus": "Status Atual:",
"requirementVersion": "Versão do Requisito:",
"lastValidatedBy": "Última validação por",
"staleWarning": "Este requisito foi modificado após a última validação (validado na versão {{validationVersion}}, versão atual {{currentVersion}}).",
"submitTitle": "Enviar Validação",
"statusLabel": "Status de Validação",
"selectStatus": "Selecione um status...",
"commentLabel": "Comentário",
"commentPlaceholder": "Adicione um comentário explicando sua decisão (opcional, mas recomendado)",
"submitButton": "Enviar Validação",
"submitting": "Enviando...",
"errorSubmitting": "Falha ao enviar validação. Por favor, tente novamente.",
"historyTitle": "Histórico de Validação",
"loadingHistory": "Carregando histórico...",
"noHistory": "Nenhum histórico de validação ainda.",
"tableHeaders": {
"date": "Data",
"status": "Status",
"version": "Versão",
"validator": "Validador",
"comment": "Comentário"
},
"noComment": "Sem comentário"
},
"history": {
"title": "Histórico de Versões",
"originalAuthor": "Autor Original:",
"loadingHistory": "Carregando histórico...",
"noHistory": "Nenhum histórico ainda. O histórico é registrado quando o requisito é editado ou os relacionamentos mudam.",
"requirementEdited": "Requisito editado",
"linkCreated": "Link Criado",
"linkRemoved": "Link Removido",
"groupAdded": "Grupo Adicionado",
"groupRemoved": "Grupo Removido",
"noChangesDetected": "Nenhuma alteração visível detectada (pode ser uma alteração apenas de grupo).",
"showLess": "Mostrar menos",
"showFullDiff": "Mostrar diferença completa",
"deletedRequirement": "Requisito Excluído",
"unknownGroup": "Grupo Desconhecido"
},
"addRelationshipModal": {
"title": "Adicionar Relacionamento",
"relationshipType": "Tipo de Relacionamento",
"selectType": "Selecione um tipo de relacionamento...",
"targetRequirement": "Requisito de Destino",
"searchPlaceholder": "Buscar por código de tag ou nome...",
"selected": "Selecionado:",
"createButton": "Criar Relacionamento",
"errorCreating": "Falha ao criar link. Por favor, tente novamente."
},
"editModal": {
"title": "Editar Requisito",
"loadingOptions": "Carregando opções...",
"name": "Nome",
"tag": "Tag",
"selectTag": "Selecione uma tag...",
"priority": "Prioridade",
"noPriority": "Sem prioridade",
"status": "Status",
"draftNote": "Requisitos em rascunho não estão finalizados e são marcados com um indicador visual.",
"description": "Descrição",
"groups": "Grupos",
"noGroupsAvailable": "Nenhum grupo disponível",
"errorSaving": "Falha ao salvar alterações. Por favor, tente novamente.",
"nameTagRequired": "Nome e Tag são obrigatórios"
},
"deleteModal": {
"deleteComment": "Excluir Comentário",
"deleteReply": "Excluir Resposta",
"deleteRelationship": "Excluir Relacionamento",
"confirmDeleteComment": "Tem certeza de que deseja excluir este comentário? Isso também ocultará todas as respostas.",
"confirmDeleteReply": "Tem certeza de que deseja excluir esta resposta?",
"confirmDeleteRelationship": "Tem certeza de que deseja excluir este relacionamento? Esta ação não pode ser desfeita."
}
}

View File

@@ -0,0 +1,87 @@
{
"header": {
"title": "Ferramenta de Requisitos Digital Twin"
},
"breadcrumb": {
"projects": "Projetos",
"searchRequirements": "Buscar Requisitos"
},
"noProjectSelected": {
"title": "Nenhum Projeto Selecionado",
"message": "Por favor, selecione um projeto no painel para visualizar os requisitos.",
"goToDashboard": "Ir para o Painel"
},
"loadingRequirements": "Carregando requisitos...",
"newRequirement": "Novo Requisito",
"deleted": "Excluídos",
"searchPlaceholder": "Buscar por código de tag ou título do requisito",
"noRequirementsFound": "Nenhum requisito encontrado com os critérios selecionados.",
"filters": {
"filterGroup": "Filtrar Grupo",
"filterValidationStatus": "Filtrar Status de Validação",
"showingNeedsRevalidation": "Mostrando: Precisa de Revalidação",
"showingNeedsAttention": "Mostrando: Precisa de Atenção",
"needsRevalidation": "Precisa de Revalidação",
"statuses": {
"approved": "Aprovado",
"denied": "Negado",
"partiallyApproved": "Parcialmente Aprovado",
"notValidated": "Não Validado"
}
},
"orderBy": {
"label": "Ordenar por",
"date": "Data",
"priority": "Prioridade",
"name": "Nome"
},
"caption": {
"title": "Legenda das Tags",
"viewCaptions": "Ver legendas das tags"
},
"requirement": {
"draft": "Rascunho",
"draftTooltip": "Este requisito ainda está em rascunho e não foi finalizado",
"noGroups": "Sem grupos",
"more": "mais",
"stale": "Desatualizado",
"staleTooltip": "O requisito foi modificado após a validação",
"by": "por",
"priority": "Prioridade",
"version": "Versão"
},
"deletedPanel": {
"title": "Requisitos Excluídos",
"noDeleted": "Nenhum requisito excluído encontrado.",
"deletedWillAppear": "Requisitos excluídos aparecerão aqui.",
"unnamed": "Requisito sem nome",
"originalId": "ID Original",
"deletedAt": "Excluído",
"deletedBy": "Excluído por",
"footerNote": "Requisitos excluídos são preservados no histórico para fins de auditoria."
},
"deleteModal": {
"title": "Excluir Requisito",
"confirmMessage": "Tem certeza de que deseja excluir o requisito",
"explanation": "Esta ação moverá o requisito para os itens excluídos. Você pode visualizar os requisitos excluídos no painel \"Excluídos\".",
"deleting": "Excluindo..."
},
"createModal": {
"title": "Novo Requisito",
"tag": "Tag",
"selectTag": "Selecione uma tag...",
"name": "Nome",
"namePlaceholder": "Digite o nome do requisito",
"description": "Descrição",
"descriptionPlaceholder": "Digite a descrição do requisito (opcional)",
"priority": "Prioridade",
"selectPriority": "Selecione uma prioridade (opcional)...",
"groups": "Grupos",
"createButton": "Criar Requisito",
"creating": "Criando...",
"errorCreating": "Falha ao criar requisito. Por favor, tente novamente.",
"noProjectSelected": "Nenhum projeto selecionado",
"nameRequired": "O nome do requisito é obrigatório",
"tagRequired": "Por favor, selecione uma tag"
}
}

View File

@@ -0,0 +1,7 @@
{
"approved": "Aprovado",
"denied": "Negado",
"partial": "Parcial",
"partiallyApproved": "Parcialmente Aprovado",
"notValidated": "Não Validado"
}