Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
1991 lines
80 KiB
JSON
1991 lines
80 KiB
JSON
{
|
|
"escalationManager": {
|
|
"unsavedChanges_one": "{{count}} unsaved change",
|
|
"unsavedChanges_other": "{{count}} unsaved changes"
|
|
},
|
|
"page": {
|
|
"title": "Admin Settings"
|
|
},
|
|
"tabs": {
|
|
"general": "General",
|
|
"experimentalFeatures": "Recursos experimentais",
|
|
"clientPortal": "Client Portal",
|
|
"users": "Users",
|
|
"teams": "Teams",
|
|
"language": "Language",
|
|
"ticketing": "Ticketing",
|
|
"projects": "Projects",
|
|
"interactions": "Interações",
|
|
"notifications": "Notifications",
|
|
"timeEntry": "Time Entry",
|
|
"billing": "Billing",
|
|
"secrets": "Secrets",
|
|
"importExport": "Import/Export",
|
|
"email": "Email",
|
|
"integrations": "Integrations",
|
|
"extensions": "Extensions",
|
|
"ticketingSettings": "Configurações de ticketing",
|
|
"loadingTicketing": "Carregando configuração de ticketing...",
|
|
"teamManagement": "Gestão de equipe",
|
|
"loadingTeam": "Carregando configuração da equipe...",
|
|
"loadingExperimental": "Carregando configuração de recursos experimentais...",
|
|
"loadingInteractions": "Carregando configurações de interação...",
|
|
"keyboardShortcuts": "Atalhos de teclado"
|
|
},
|
|
"unsavedChanges": {
|
|
"title": "Unsaved Changes",
|
|
"message": "You have unsaved changes. Are you sure you want to leave? Your changes will be lost."
|
|
},
|
|
"general": {
|
|
"title": "General Settings",
|
|
"description": "Manage your organization name and default client. The default client is used for configuration purposes and represents your MSP.",
|
|
"fields": {
|
|
"organizationName": {
|
|
"label": "Organization Name"
|
|
},
|
|
"defaultTimezone": {
|
|
"label": "Default Time Zone",
|
|
"help": "Used for emails and notifications when a user has not set their own timezone."
|
|
}
|
|
},
|
|
"actions": {
|
|
"saveOrganizationName": "Save Organization Name",
|
|
"saveDefaultTimezone": "Save Default Time Zone"
|
|
},
|
|
"clients": {
|
|
"title": "Clients",
|
|
"table": {
|
|
"name": "Name",
|
|
"default": "Default",
|
|
"actions": "Actions"
|
|
},
|
|
"placeholder": "Select a client to add",
|
|
"addClient": "Add Client"
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"tenantNameUpdated": "Tenant name updated successfully",
|
|
"timezoneUpdated": "Default timezone updated successfully",
|
|
"clientAdded": "Client added successfully",
|
|
"clientRemoved": "Client removed successfully",
|
|
"defaultClientUpdated": "Default client updated successfully"
|
|
},
|
|
"error": {
|
|
"loadTenantData": "Failed to load tenant data",
|
|
"updateTenantName": "Failed to update tenant name",
|
|
"updateTimezone": "Failed to update timezone",
|
|
"selectClient": "Please select a client",
|
|
"clientNotFound": "Client not found",
|
|
"addClient": "Failed to add client",
|
|
"removeClient": "Failed to remove client",
|
|
"setDefaultClient": "Failed to set default client",
|
|
"loadClients": "Failed to load clients"
|
|
}
|
|
}
|
|
},
|
|
"experimentalFeatures": {
|
|
"title": "Experimental Features",
|
|
"description": "Enable or disable experimental features for your tenant.",
|
|
"alert": {
|
|
"title": "Experimental",
|
|
"description": "Experimental features may change or be removed without notice."
|
|
},
|
|
"features": {
|
|
"aiAssistant": {
|
|
"name": "AI Assistant",
|
|
"description": "Enable AI-powered Quick Ask and Chat sidebar.",
|
|
"restriction": "Only available for whitelisted tenants."
|
|
}
|
|
},
|
|
"actions": {
|
|
"save": "Save",
|
|
"saving": "Saving...",
|
|
"retry": "Retry"
|
|
},
|
|
"loading": "Loading experimental features...",
|
|
"messages": {
|
|
"success": {
|
|
"saved": "Experimental feature settings saved. Reload the page to apply changes."
|
|
},
|
|
"error": {
|
|
"loadFailed": "Failed to load experimental feature settings.",
|
|
"saveFailed": "Failed to save experimental feature settings."
|
|
}
|
|
}
|
|
},
|
|
"users": {
|
|
"title": "User Management",
|
|
"description": {
|
|
"msp": "Manage MSP users and permissions",
|
|
"client": "Manage client portal users and their access"
|
|
},
|
|
"viewSwitcher": {
|
|
"msp": "MSP",
|
|
"clientPortal": "Client Portal"
|
|
},
|
|
"license": {
|
|
"usage": "MSP users: {{used}}{{limit}} licenses used",
|
|
"noLimit": " (No limit)",
|
|
"ofLimit": " of {{limit}}",
|
|
"addLicensePrompt": "To add a new user you must purchase additional licenses",
|
|
"addLicense": "Add License"
|
|
},
|
|
"search": "Search users",
|
|
"filter": {
|
|
"all": "All Users",
|
|
"active": "Active Users",
|
|
"inactive": "Inactive Users",
|
|
"selectStatus": "Select Status"
|
|
},
|
|
"tabs": {
|
|
"list": "List",
|
|
"structure": "Structure",
|
|
"listDescription": "Manage individual users, roles, and permissions.",
|
|
"structureDescription": "Visualize and manage the organizational reporting hierarchy."
|
|
},
|
|
"actions": {
|
|
"createNewUser": "Create New User",
|
|
"createNewClientUser": "Create New Client User",
|
|
"copyPortalLink": "Copy Portal Login Link",
|
|
"copying": "Copying...",
|
|
"createUser": "Create User",
|
|
"sendInvitation": "Send Portal Invitation",
|
|
"cancel": "Cancel"
|
|
},
|
|
"form": {
|
|
"title": {
|
|
"msp": "Create New MSP User",
|
|
"client": "Create New Client Portal User"
|
|
},
|
|
"fields": {
|
|
"firstName": "First Name",
|
|
"lastName": "Last Name",
|
|
"email": "Email",
|
|
"client": "Client",
|
|
"clientOptional": "(optional)",
|
|
"primaryRole": "Primary Role",
|
|
"selectRole": "Select Role",
|
|
"reportsTo": "Reports To",
|
|
"reportsToOptional": "(optional)",
|
|
"selectManager": "Select manager",
|
|
"existingContact": "Existing Contact",
|
|
"existingContactOptional": "(optional)",
|
|
"selectExistingContact": "Select existing contact (optional)",
|
|
"selectExistingContactRequired": "Select existing contact",
|
|
"selectContactToInvite": "Select contact to invite",
|
|
"password": "Password",
|
|
"passwordOptional": "(Leave blank to send invitation)",
|
|
"passwordPlaceholder": {
|
|
"msp": "Enter password",
|
|
"client": "Leave blank to send invitation"
|
|
},
|
|
"selectClient": "Select Client"
|
|
},
|
|
"passwordAlert": {
|
|
"withPassword": "Setting a password will create the user immediately. They can log in right away.",
|
|
"withoutPassword": "No password required — we will send a portal invitation for the user to set it."
|
|
},
|
|
"requirePasswordChange": "Require password change on first login"
|
|
},
|
|
"table": {
|
|
"firstName": "First Name",
|
|
"lastName": "Last Name",
|
|
"email": "Email",
|
|
"client": "Client",
|
|
"role": "Role",
|
|
"lastLogin": "Last Login",
|
|
"actions": "Actions",
|
|
"noClient": "No Client",
|
|
"noRole": "No Role",
|
|
"never": "Never",
|
|
"viaMethod": "via {{method}}",
|
|
"loading": "Loading...",
|
|
"openMenu": "Open menu",
|
|
"edit": "Edit",
|
|
"remove": "Remove"
|
|
},
|
|
"loading": "Loading users...",
|
|
"messages": {
|
|
"success": {
|
|
"portalInvitationSent": "Portal invitation sent successfully!",
|
|
"clientPortalUserCreated": "Client portal user created successfully!",
|
|
"copiedVanityLink": "Copied vanity portal login link to clipboard",
|
|
"copiedCanonicalLink": "Copied canonical portal login link to clipboard"
|
|
},
|
|
"error": {
|
|
"fetchUsers": "Failed to fetch users",
|
|
"fetchRoles": "Failed to fetch roles",
|
|
"fetchClients": "Failed to fetch clients",
|
|
"createUser": "Failed to create user",
|
|
"sendInvitation": "Failed to send invitation",
|
|
"sendInvitationManual": "Failed to send invitation. You can send it manually from the user list.",
|
|
"createClientPortalUser": "Failed to create client portal user",
|
|
"clipboardUnavailable": "Clipboard API is not available in this browser.",
|
|
"copyPortalLink": "Failed to copy portal login link",
|
|
"fillRequiredFields": "Please fill in all required fields",
|
|
"fixValidationErrors": "Please fix the validation errors before continuing",
|
|
"fixValidationBeforeInvitation": "Please fix the validation errors before sending the invitation",
|
|
"emailAlreadyInUse": "This email address is already in use. Please use a different email address.",
|
|
"portalUserExists": "A portal user already exists for this contact or email address.",
|
|
"portalUserExistsForContact": "A portal user already exists for this contact. Use password reset for the existing user.",
|
|
"selectAppropriateRole": "Please select an appropriate role for this user type",
|
|
"contactMissingEmail": "Contact \"{{name}}\" is missing an email address. Please update the contact's email before sending an invitation.",
|
|
"licenseLimit": "Cannot activate user: License limit reached. Please deactivate another user or upgrade your license.",
|
|
"permissionDeniedInvite": "Não tem permissão para convidar utilizadores.",
|
|
"permissionDeniedCreate": "Não tem permissão para criar utilizadores.",
|
|
"emailNotConfigured": "O serviço de e-mail está desativado ou não configurado.",
|
|
"contactNotFound": "Contacto não encontrado.",
|
|
"contactMissingEmailGeneric": "O contacto não tem um endereço de e-mail. Adicione um endereço de e-mail ao contacto antes de enviar um convite.",
|
|
"contactInvalidEmail": "O contacto tem um endereço de e-mail inválido. Atualize o contacto com um endereço de e-mail válido antes de enviar um convite.",
|
|
"noDefaultClient": "Nenhum cliente predefinido configurado para este inquilino. Defina um cliente predefinido nas Definições Gerais.",
|
|
"noDefaultLocation": "O cliente predefinido deve ter uma localização predefinida configurada para enviar convites do portal.",
|
|
"noLocationEmail": "A localização do cliente predefinido deve ter um e-mail de contacto configurado.",
|
|
"noBaseUrl": "O URL base não está configurado para convites do portal.",
|
|
"passwordTooShort": "A palavra-passe deve ter pelo menos 8 caracteres.",
|
|
"roleRequired": "A função é obrigatória",
|
|
"invalidRole": "A função selecionada é inválida",
|
|
"licenseLimitReached": "Atingiu o limite de licenças de utilizador MSP.",
|
|
"soloPlanLimit": "O plano Solo está limitado a 1 utilizador. Atualize para Pro para adicionar mais utilizadores."
|
|
}
|
|
}
|
|
},
|
|
"userDetails": {
|
|
"title": "User Details",
|
|
"fields": {
|
|
"firstName": {
|
|
"label": "First Name",
|
|
"placeholder": "Enter first name"
|
|
},
|
|
"lastName": {
|
|
"label": "Last Name",
|
|
"placeholder": "Enter last name"
|
|
},
|
|
"email": {
|
|
"label": "Email",
|
|
"placeholder": "Enter email"
|
|
},
|
|
"reportsTo": {
|
|
"label": "Reports To",
|
|
"placeholder": "Select manager"
|
|
},
|
|
"lastLogin": "Last Login",
|
|
"roles": "Roles",
|
|
"status": "Status",
|
|
"statusHelp": "Set user account status",
|
|
"newPassword": "New Password"
|
|
},
|
|
"status": {
|
|
"active": "Active",
|
|
"inactive": "Inactive",
|
|
"inactiveTag": "(Inactive)"
|
|
},
|
|
"actions": {
|
|
"addRole": "Add Role",
|
|
"selectRoleToAdd": "Select role to add",
|
|
"removeRole": "Remove",
|
|
"setPassword": "Set Password",
|
|
"cancel": "Cancel",
|
|
"saveChanges": "Save Changes"
|
|
},
|
|
"dialog": {
|
|
"setPassword": {
|
|
"title": "Set User Password (Admin)"
|
|
}
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"passwordChanged": "Password changed successfully",
|
|
"userUpdated": "User updated successfully",
|
|
"roleAdded": "Função adicionada com sucesso",
|
|
"roleRemoved": "Função removida com sucesso"
|
|
},
|
|
"error": {
|
|
"userNotFound": "User not found",
|
|
"loadFailed": "Failed to load user details. Please try again.",
|
|
"addRoleFailed": "Failed to add role. Please try again.",
|
|
"removeRoleFailed": "Failed to remove role. Please try again.",
|
|
"updateUserNotFound": "Failed to update user. User not found.",
|
|
"updateFailed": "Failed to update user. Please try again.",
|
|
"passwordTooShort": "Password must be at least 8 characters long",
|
|
"passwordChangeFailed": "Failed to change password",
|
|
"passwordChangeError": "An error occurred while changing password",
|
|
"emailAlreadyExists": "Já existe um utilizador com este endereço de e-mail",
|
|
"reportsToSelf": "Um utilizador não pode reportar a si próprio",
|
|
"reportsToCycle": "Isto criaria uma cadeia de reporte circular",
|
|
"permissionDenied": "Você não tem permissão para alterar funções de usuário."
|
|
}
|
|
},
|
|
"loading": "Carregando detalhes do usuário..."
|
|
},
|
|
"teams": {
|
|
"title": "Team Management",
|
|
"description": "Create and manage teams, assign team leads, and organize members across your organization",
|
|
"loading": "Loading teams...",
|
|
"emptyState": "Please select a team to manage members",
|
|
"list": {
|
|
"title": "Teams",
|
|
"addNewTeam": "Add New Team",
|
|
"createTeam": "Create Team",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"placeholder": "Enter new team name",
|
|
"selectManager": "Select a manager"
|
|
},
|
|
"details": {
|
|
"loading": "Loading team details...",
|
|
"notFound": "No team found",
|
|
"fields": {
|
|
"teamLead": "Team Lead",
|
|
"addMember": "Add Member"
|
|
},
|
|
"placeholders": {
|
|
"teamName": "Enter team name",
|
|
"selectTeamLead": "Select a team lead",
|
|
"selectUserToAdd": "Select a user to add"
|
|
},
|
|
"alert": {
|
|
"unsavedChanges": "You have unsaved changes"
|
|
},
|
|
"actions": {
|
|
"discard": "Discard",
|
|
"saveChanges": "Save Changes",
|
|
"saveName": "Save name",
|
|
"cancel": "Cancel",
|
|
"editName": "Edit name",
|
|
"remove": "Remove"
|
|
},
|
|
"table": {
|
|
"teamMembers": "Team Members",
|
|
"member": "Member",
|
|
"role": "Role"
|
|
},
|
|
"badge": {
|
|
"new": "New",
|
|
"lead": "Lead"
|
|
},
|
|
"leadName": "Lead: {{name}}",
|
|
"memberCount_one": "{{count}} member",
|
|
"memberCount_other": "{{count}} members"
|
|
},
|
|
"messages": {
|
|
"error": {
|
|
"loadFailed": "Failed to load teams. Please try again.",
|
|
"fetchUsers": "Failed to fetch users",
|
|
"createFailed": "Failed to create team: {{error}}",
|
|
"deleteFailed": "Failed to delete team",
|
|
"updateName": "Falha ao atualizar o nome da equipa",
|
|
"saveChanges": "Falha ao guardar as alterações. Tente novamente."
|
|
}
|
|
}
|
|
},
|
|
"ticketing": {
|
|
"title": "Ticket Settings",
|
|
"tabs": {
|
|
"display": "Display",
|
|
"ticketNumbering": "Ticket Numbering",
|
|
"boards": "Boards",
|
|
"statuses": "Statuses",
|
|
"priorities": "Priorities",
|
|
"categories": "Categories",
|
|
"checklistTemplates": "Modelos de checklist"
|
|
},
|
|
"numbering": {
|
|
"title": "Number Format",
|
|
"description": "Define the prefix, digit padding, and current sequence",
|
|
"fields": {
|
|
"prefix": {
|
|
"label": "Ticket Number Prefix",
|
|
"placeholder": "TK-",
|
|
"help": "Optional prefix for ticket numbers. Leave empty for no prefix or enter a custom prefix (e.g., 'TK-')"
|
|
},
|
|
"minimumDigits": {
|
|
"label": "Minimum Digits",
|
|
"help": "Minimum number of digits for the sequential number. For example, 6 makes '1' become '000001'"
|
|
},
|
|
"initialValue": {
|
|
"label": "Initial Value",
|
|
"placeholder": "Enter value",
|
|
"help": "Set the starting number for the sequence. This can only be set once."
|
|
},
|
|
"lastUsedNumber": {
|
|
"label": "Last Used Number",
|
|
"help": "The last number that was assigned. The next number will be one higher than this value."
|
|
},
|
|
"nextPreview": {
|
|
"label": "Next Ticket Number Preview",
|
|
"help": "This is the number that will be assigned to the next ticket"
|
|
}
|
|
},
|
|
"actions": {
|
|
"saveChanges": "Save Changes",
|
|
"cancel": "Cancel"
|
|
},
|
|
"dialog": {
|
|
"title": "Update Ticket Number Settings",
|
|
"message": "Changing these settings will affect how new ticket numbers are generated. This change will not affect existing tickets. Are you sure you want to proceed?",
|
|
"confirm": "Update Settings"
|
|
},
|
|
"loading": "Loading...",
|
|
"messages": {
|
|
"error": {
|
|
"noSettings": "No ticket numbering settings found. Please contact your administrator.",
|
|
"loadFailed": "Failed to load ticket numbering settings",
|
|
"updateFailed": "Failed to update settings",
|
|
"updatePaddingFailed": "Falha ao atualizar o comprimento de preenchimento",
|
|
"updateLastNumberFailed": "Falha ao atualizar o último número",
|
|
"updateInitialValueFailed": "Falha ao atualizar o valor inicial"
|
|
},
|
|
"success": {
|
|
"updated": "Ticket numbering settings updated successfully"
|
|
}
|
|
}
|
|
},
|
|
"statuses": {
|
|
"title": "Ticket Statuses",
|
|
"alert": "Default Status: When clients create tickets through the client portal, they will automatically be assigned the status marked as default. Only one status can be set as default at a time.",
|
|
"table": {
|
|
"name": "Name",
|
|
"status": "Status",
|
|
"default": "Default",
|
|
"order": "Order",
|
|
"actions": "Actions"
|
|
},
|
|
"statusLabels": {
|
|
"closed": "Closed",
|
|
"open": "Open",
|
|
"closedHelp": "Tickets with this status will be marked as closed",
|
|
"openHelp": "Tickets with this status will remain open",
|
|
"defaultHelp": "Default status for new tickets from client portal"
|
|
},
|
|
"actions": {
|
|
"addStatus": "Add Status",
|
|
"importStandard": "Import from Standard Statuses",
|
|
"edit": "Edit",
|
|
"delete": "Delete"
|
|
},
|
|
"retiredAlert": "Os estados dos tickets agora são geridos dentro de cada quadro. Use a aba Quadros para editar os ciclos de vida dos tickets de um quadro específico.",
|
|
"messages": {
|
|
"success": {
|
|
"deleted": "Status deleted successfully",
|
|
"updated": "Status updated successfully"
|
|
},
|
|
"error": {
|
|
"lastClosed": "At least one status must remain marked as closed",
|
|
"deleteLastClosed": "Cannot delete the last closed status for this type.",
|
|
"removeDefault": "Cannot remove default status from the last default status"
|
|
}
|
|
}
|
|
},
|
|
"boards": {
|
|
"title": "Boards",
|
|
"alert": "Boards organize tickets into logical groups. Each board can have its own default agent, priority, and SLA policy.",
|
|
"table": {
|
|
"name": "Name",
|
|
"description": "Description",
|
|
"status": "Status",
|
|
"default": "Default",
|
|
"defaultAgent": "Default Agent",
|
|
"defaultPriority": "Default Priority",
|
|
"boardManager": "Board Manager",
|
|
"order": "Order",
|
|
"itilBoard": "ITIL Board",
|
|
"actions": "Actions"
|
|
},
|
|
"statusLabels": {
|
|
"active": "Active",
|
|
"inactive": "Inactive"
|
|
},
|
|
"actions": {
|
|
"addBoard": "Add Board",
|
|
"importStandard": "Import from Standard Boards",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"cancel": "Cancel",
|
|
"close": "Close",
|
|
"create": "Create",
|
|
"update": "Update",
|
|
"importSelected": "Import Selected",
|
|
"up": "Mover para cima",
|
|
"down": "Mover para baixo",
|
|
"remove": "Remover",
|
|
"addStatus": "Adicionar estado"
|
|
},
|
|
"fields": {
|
|
"boardName": {
|
|
"label": "Board Name",
|
|
"placeholder": "Enter board name"
|
|
},
|
|
"description": {
|
|
"label": "Description",
|
|
"placeholder": "Enter board description"
|
|
},
|
|
"displayOrder": {
|
|
"label": "Display Order",
|
|
"placeholder": "Enter display order",
|
|
"help": "Controls the order boards appear in the list"
|
|
},
|
|
"inactive": "Mark as inactive",
|
|
"itilCompliant": "ITIL Compliant",
|
|
"boardConfiguration": "Board Configuration",
|
|
"boardManager": {
|
|
"label": "Board Manager",
|
|
"placeholder": "Select a board manager",
|
|
"help": "The user responsible for managing this board"
|
|
},
|
|
"defaultAssignedAgent": {
|
|
"label": "Default Assigned Agent",
|
|
"placeholder": "Select default agent",
|
|
"help": "New tickets on this board will be assigned to this agent by default"
|
|
},
|
|
"defaultPriority": {
|
|
"label": "Default Priority",
|
|
"placeholder": "Select default priority",
|
|
"help": "New tickets on this board will use this priority by default",
|
|
"none": "None"
|
|
},
|
|
"slaPolicy": {
|
|
"label": "SLA Policy",
|
|
"placeholder": "Select SLA policy",
|
|
"help": "The SLA policy to apply to tickets on this board",
|
|
"none": "None"
|
|
},
|
|
"ticketStatusSetup": {
|
|
"label": "Configuração de estados de tickets",
|
|
"help": "Escolha se este quadro começa a partir de um ciclo de vida existente ou de uma nova lista de estados em linha.",
|
|
"copyExisting": "Copiar de quadro existente",
|
|
"createInline": "Criar estados em linha"
|
|
},
|
|
"copyTicketStatuses": {
|
|
"label": "Copiar estados de tickets de",
|
|
"help": "Novos quadros clonam o seu ciclo de vida de tickets de um quadro existente.",
|
|
"selectSource": "Selecionar um quadro de origem",
|
|
"noSourceAvailable": "Nenhum quadro de origem disponível",
|
|
"unnamedBoard": "Quadro sem nome"
|
|
},
|
|
"ticketStatuses": {
|
|
"labelEditing": "Estados de tickets do quadro",
|
|
"labelCopied": "Estados de tickets copiados",
|
|
"labelInline": "Estados de tickets em linha",
|
|
"helpEditing": "Edite o ciclo de vida de tickets apenas para este quadro.",
|
|
"helpCopied": "Reveja e ajuste o ciclo de vida copiado antes de guardar o novo quadro.",
|
|
"helpInline": "Crie o ciclo de vida inicial de tickets do quadro antes de guardar.",
|
|
"loading": "A carregar estados de tickets do quadro…",
|
|
"statusName": "Nome do estado",
|
|
"closed": "Fechado",
|
|
"default": "Padrão"
|
|
},
|
|
"inboundReplyReopen": {
|
|
"enabledLabel": "Reabrir tickets fechados em respostas recebidas",
|
|
"enabledHelp": "Aplica-se a respostas encadeadas correspondentes a tickets já fechados neste quadro.",
|
|
"cutoffHoursLabel": "Limite de reabertura (horas)",
|
|
"cutoffHoursHelp": "Respostas recebidas após este período criam novos tickets em vez de reabrir os antigos.",
|
|
"statusLabel": "Estado ao reabrir (opcional)",
|
|
"statusPlaceholder": "Selecionar estado de reabertura",
|
|
"statusUseDefault": "Usar o estado aberto padrão do quadro",
|
|
"suppressAiLabel": "Suprimir reabertura para respostas curtas de confirmação (IA)",
|
|
"suppressAiHelp": "Apenas complemento Enterprise AI Assistant. Se indisponível, as respostas reabrem normalmente."
|
|
},
|
|
"liveTimer": {
|
|
"label": "Ativar cronómetro de ticket em tempo real",
|
|
"help": "Mostra o cronómetro em tempo real e os intervalos registados nos tickets deste quadro. A introdução manual de tempo permanece disponível."
|
|
}
|
|
},
|
|
"dialog": {
|
|
"addBoard": "Add Board",
|
|
"editBoard": "Edit Board",
|
|
"deleteBoardTitle": "Delete Board",
|
|
"deleteBoardMessage": "This will permanently delete the board.",
|
|
"cleanupItilTitle": "Clean Up ITIL Board",
|
|
"cleanupItilMessage": "This will remove the ITIL categories and priority matrix associated with this board.",
|
|
"deleteOnly": "Delete Only",
|
|
"deleteAndCleanup": "Delete & Clean Up",
|
|
"deleteAll": "Delete All",
|
|
"importTitle": "Import Standard Boards",
|
|
"importDescription": "Select standard boards to import into your organization:",
|
|
"importEmpty": "No standard boards available to import.",
|
|
"conflictsTitle": "Resolve Import Conflicts",
|
|
"conflictsDescription": "The following items have conflicts that need to be resolved:",
|
|
"nameConflict": "Name already exists",
|
|
"orderConflict": "Order {{order}} is already in use",
|
|
"skipItem": "Skip this item",
|
|
"importNewName": "Import with different name:",
|
|
"importWithOrder": "Import with order {{order}}",
|
|
"importWithResolutions": "Import with Resolutions"
|
|
},
|
|
"importTable": {
|
|
"active": "Active"
|
|
},
|
|
"itilInfo": {
|
|
"title": "ITIL Information",
|
|
"tooltip": "This board follows ITIL best practices",
|
|
"categoriesTitle": "ITIL Categories",
|
|
"priorityMatrixTitle": "Priority Matrix",
|
|
"impactDescription": "Impact levels define the scope of the issue",
|
|
"urgencyDescription": "Urgency levels define how quickly the issue needs resolution",
|
|
"priorityDescription": "Priority is calculated from impact and urgency",
|
|
"categories": {
|
|
"serviceRequest": "Solicitação de Serviço"
|
|
},
|
|
"priorityMatrix": {
|
|
"urgencyHeaderLine1": {
|
|
"high": "Alta",
|
|
"mediumHigh": "Média-Alta",
|
|
"medium": "Média",
|
|
"mediumLow": "Média-Baixa",
|
|
"low": "Baixa"
|
|
},
|
|
"urgencyHeaderLine2": {
|
|
"high": "Urgência (1)",
|
|
"mediumHigh": "Urgência (2)",
|
|
"medium": "Urgência (3)",
|
|
"mediumLow": "Urgência (4)",
|
|
"low": "Urgência (5)"
|
|
},
|
|
"impact": {
|
|
"high": "Impacto Alto (1)",
|
|
"mediumHigh": "Impacto Médio-Alto (2)",
|
|
"medium": "Impacto Médio (3)",
|
|
"mediumLow": "Impacto Médio-Baixo (4)",
|
|
"low": "Impacto Baixo (5)"
|
|
},
|
|
"priority": {
|
|
"critical": "Crítica (1)",
|
|
"high": "Alta (2)",
|
|
"medium": "Média (3)",
|
|
"low": "Baixa (4)",
|
|
"planning": "Planejamento (5)"
|
|
}
|
|
}
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"created": "Board created successfully",
|
|
"updated": "Board updated successfully",
|
|
"deleted": "Board deleted successfully",
|
|
"imported": "Boards imported successfully"
|
|
},
|
|
"error": {
|
|
"fetchFailed": "Failed to load boards",
|
|
"fetchAvailableFailed": "Failed to fetch available boards for import",
|
|
"nameRequired": "Board name is required",
|
|
"saveFailed": "Failed to save board",
|
|
"lastDefault": "Cannot remove the last default board",
|
|
"statusRequired": "Adicione pelo menos um estado de ticket antes de guardar o quadro.",
|
|
"duplicateStatusName": "Os nomes dos estados de ticket devem ser únicos dentro de um quadro.",
|
|
"invalidOpenDefault": "Selecione exatamente um estado de ticket aberto predefinido antes de guardar o quadro.",
|
|
"nameAlreadyExists": "Já existe um quadro com este nome.",
|
|
"selectBoardToCopy": "Selecione um quadro existente a partir do qual copiar os estados de ticket.",
|
|
"fetchStatusesFailed": "Falha ao carregar os estados de ticket do quadro.",
|
|
"deleteFailed": "Falha ao eliminar o quadro",
|
|
"importFailed": "Falha ao importar os quadros",
|
|
"updateStatusFailed": "Falha ao atualizar o estado do quadro",
|
|
"updateDefaultFailed": "Falha ao atualizar o quadro predefinido"
|
|
}
|
|
},
|
|
"closeRules": {
|
|
"enabledLabel": "Regras de encerramento",
|
|
"enabledHelp": "Exigir que determinadas condições sejam cumpridas antes de os tickets deste quadro poderem ser encerrados.",
|
|
"requireResolutionCommentLabel": "Exigir comentário de resolução",
|
|
"requireResolutionCommentHelp": "É necessário um comentário de resolução antes de o ticket poder ser encerrado.",
|
|
"requireTimeEntryLabel": "Exigir registo de tempo",
|
|
"requireTimeEntryHelp": "É necessário pelo menos um registo de tempo antes de o ticket poder ser encerrado.",
|
|
"requireChecklistCompleteLabel": "Exigir conclusão da checklist",
|
|
"requireChecklistCompleteHelp": "Todos os itens obrigatórios da checklist têm de ser marcados antes de o ticket poder ser encerrado.",
|
|
"requireNoOpenChildrenLabel": "Exigir encerramento dos tickets agrupados",
|
|
"requireNoOpenChildrenHelp": "Um ticket principal de agrupamento não pode ser encerrado enquanto existirem tickets secundários agrupados ainda abertos.",
|
|
"requiredFieldsLabel": "Campos obrigatórios no encerramento",
|
|
"requiredFieldsHelp": "Estes campos do ticket têm de ser preenchidos antes de o ticket poder ser encerrado.",
|
|
"autoCloseLabel": "Regras de encerramento automático",
|
|
"autoCloseHelp": "Encerra automaticamente tickets que permaneçam num estado sem atividade. Pode ser enviado um email de aviso ao contacto antes do encerramento.",
|
|
"addAutoCloseRule": "Adicionar regra",
|
|
"triggerStatusLabel": "Quando o ticket está no estado",
|
|
"triggerStatusPlaceholder": "Selecionar estado",
|
|
"targetStatusLabel": "Encerrar para o estado",
|
|
"targetStatusPlaceholder": "Selecionar estado encerrado",
|
|
"inactivityDaysLabel": "Dias de inatividade",
|
|
"warningDaysLabel": "Dias de aviso antes do encerramento",
|
|
"warningDaysPlaceholder": "Sem aviso",
|
|
"ruleEnabledLabel": "Ativo",
|
|
"removeRule": "Remover",
|
|
"messages": {
|
|
"fetchFailed": "Falha ao carregar as regras de encerramento deste quadro",
|
|
"autoCloseStatusRequired": "Cada regra de encerramento automático necessita de um estado de acionamento e de um estado de destino encerrado",
|
|
"autoCloseDaysInvalid": "Os dias de inatividade para encerramento automático têm de ser um número inteiro positivo",
|
|
"autoCloseWarningInvalid": "O tempo de antecedência do aviso tem de ser inferior aos dias de inatividade"
|
|
}
|
|
}
|
|
},
|
|
"priorities": {
|
|
"title": {
|
|
"ticket": "Prioridades de tickets",
|
|
"projectTask": "Prioridades de tarefas de projeto"
|
|
},
|
|
"alert": {
|
|
"header": "Gestão de prioridades:",
|
|
"description": "Crie prioridades personalizadas para a sua organização ou importe a partir de modelos padrão.",
|
|
"itilNote": "As prioridades padrão ITIL não podem ser editadas ou eliminadas.",
|
|
"nonItilNote": "Todas as prioridades podem ser editadas ou eliminadas para se adequarem ao seu fluxo de trabalho."
|
|
},
|
|
"table": {
|
|
"name": "Nome",
|
|
"type": "Tipo",
|
|
"color": "Cor",
|
|
"order": "Ordem",
|
|
"actions": "Ações",
|
|
"standardTag": "(Padrão)",
|
|
"itilProtected": "Protegido"
|
|
},
|
|
"itemTypes": {
|
|
"ticket": "Ticket",
|
|
"projectTask": "Tarefa de projeto"
|
|
},
|
|
"actions": {
|
|
"addPriority": "Adicionar prioridade",
|
|
"importStandard": "Importar de prioridades padrão",
|
|
"openMenu": "Abrir menu",
|
|
"edit": "Editar",
|
|
"delete": "Eliminar",
|
|
"cancel": "Cancelar"
|
|
},
|
|
"dialog": {
|
|
"addTitle": "Adicionar nova prioridade",
|
|
"editTitle": "Editar prioridade",
|
|
"submitAdd": "Adicionar prioridade",
|
|
"submitUpdate": "Atualizar prioridade"
|
|
},
|
|
"fields": {
|
|
"priorityName": {
|
|
"label": "Nome da prioridade",
|
|
"placeholder": "p. ex., Urgente"
|
|
},
|
|
"orderNumber": {
|
|
"label": "Número de ordem (1-100, números mais altos aparecem primeiro)",
|
|
"help": "Controla a ordem em que as prioridades aparecem nos menus pendentes em toda a plataforma. Números mais altos aparecem primeiro para prioridades.",
|
|
"used": "Números de ordem usados: {{numbers}}",
|
|
"noneUsed": "Ainda não foram usados números de ordem"
|
|
},
|
|
"color": {
|
|
"label": "Cor",
|
|
"chooseButton": "Escolher cor"
|
|
}
|
|
},
|
|
"import": {
|
|
"title": "Importar prioridades padrão",
|
|
"submit": "Importar ({{count}})",
|
|
"allImportedTicket": "Todas as prioridades padrão já foram importadas para tickets.",
|
|
"allImportedProjectTask": "Todas as prioridades padrão já foram importadas para tarefas de projeto.",
|
|
"instructions": "Selecione as prioridades padrão que deseja importar. Serão copiadas para as prioridades da sua organização."
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"deleted": "Prioridade eliminada com sucesso",
|
|
"imported": "{{count}} prioridades importadas com sucesso",
|
|
"skipped": "{{count}} prioridades ignoradas (já existem)"
|
|
},
|
|
"error": {
|
|
"orderTaken": "O número de ordem {{order}} já está em uso por \"{{name}}\". Escolha um número de ordem diferente.",
|
|
"uniqueConstraint": "Este número de ordem já está em uso. Escolha um número de ordem diferente.",
|
|
"saveFailed": "Falha ao guardar a prioridade",
|
|
"deleteFailed": "Falha ao eliminar a prioridade",
|
|
"deleteValidationFailed": "Falha ao validar a eliminação. Tente novamente.",
|
|
"importFailed": "Falha ao importar prioridades"
|
|
}
|
|
},
|
|
"entity": {
|
|
"fallback": "esta prioridade"
|
|
}
|
|
},
|
|
"checklistTemplates": {
|
|
"title": "Modelos de checklist",
|
|
"alert": "Os modelos de checklist definem checklists reutilizáveis para tickets. Os itens do modelo são copiados para os tickets quando aplicados, pelo que editar um modelo nunca altera as checklists já existentes nos tickets.",
|
|
"table": {
|
|
"name": "Nome",
|
|
"description": "Descrição",
|
|
"items": "Itens",
|
|
"status": "Estado",
|
|
"actions": "Ações"
|
|
},
|
|
"statusLabels": {
|
|
"active": "Ativo",
|
|
"inactive": "Inativo"
|
|
},
|
|
"actions": {
|
|
"addTemplate": "Adicionar modelo",
|
|
"edit": "Editar",
|
|
"delete": "Eliminar",
|
|
"cancel": "Cancelar",
|
|
"close": "Fechar",
|
|
"create": "Criar",
|
|
"update": "Atualizar",
|
|
"up": "Subir",
|
|
"down": "Descer",
|
|
"remove": "Remover",
|
|
"addItem": "Adicionar item",
|
|
"addRule": "Adicionar regra"
|
|
},
|
|
"fields": {
|
|
"name": {
|
|
"label": "Nome do modelo",
|
|
"placeholder": "Introduza o nome do modelo"
|
|
},
|
|
"description": {
|
|
"label": "Descrição",
|
|
"placeholder": "Introduza a descrição"
|
|
},
|
|
"active": "Ativo",
|
|
"items": {
|
|
"label": "Itens da checklist",
|
|
"help": "Os itens são adicionados aos tickets por esta ordem quando o modelo é aplicado.",
|
|
"itemName": "Nome do item",
|
|
"required": "Obrigatório",
|
|
"newItemLabel": "Novo item",
|
|
"newItemPlaceholder": "Introduza o nome do item"
|
|
},
|
|
"rules": {
|
|
"label": "Regras de aplicação automática",
|
|
"help": "O modelo é automaticamente aplicado a novos tickets que correspondam a qualquer uma destas regras. Deixe um campo como \"Qualquer\" para corresponder a todos os valores.",
|
|
"empty": "Sem regras de aplicação automática. Este modelo ainda pode ser aplicado manualmente aos tickets.",
|
|
"board": "Quadro",
|
|
"category": "Categoria",
|
|
"subcategory": "Subcategoria",
|
|
"priority": "Prioridade",
|
|
"any": "Qualquer"
|
|
}
|
|
},
|
|
"dialog": {
|
|
"addTemplate": "Adicionar modelo de checklist",
|
|
"editTemplate": "Editar modelo de checklist",
|
|
"createFirstHelp": "Crie primeiro o modelo e depois adicione itens de checklist e regras de aplicação automática.",
|
|
"deleteTitle": "Eliminar modelo de checklist",
|
|
"deleteMessage": "Tem a certeza de que pretende eliminar \"{{name}}\"? As checklists já adicionadas aos tickets não serão afetadas."
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"created": "Modelo de checklist criado com sucesso",
|
|
"updated": "Modelo de checklist atualizado com sucesso",
|
|
"deleted": "Modelo de checklist eliminado com sucesso"
|
|
},
|
|
"error": {
|
|
"fetchFailed": "Falha ao obter os modelos de checklist",
|
|
"fetchRulesFailed": "Falha ao obter as regras de aplicação automática",
|
|
"nameRequired": "O nome do modelo é obrigatório",
|
|
"saveFailed": "Falha ao guardar o modelo de checklist",
|
|
"deleteFailed": "Falha ao eliminar o modelo de checklist",
|
|
"updateStatusFailed": "Falha ao atualizar o estado do modelo",
|
|
"itemSaveFailed": "Falha ao guardar o item da checklist",
|
|
"ruleSaveFailed": "Falha ao guardar a regra de aplicação automática"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"interactions": {
|
|
"title": "Interaction Settings",
|
|
"tabs": {
|
|
"types": "Interaction Types",
|
|
"statuses": "Interaction Statuses"
|
|
},
|
|
"types": {
|
|
"title": "Interaction Types",
|
|
"loading": "Loading interaction types...",
|
|
"table": {
|
|
"name": "Name",
|
|
"order": "Order",
|
|
"actions": "Actions"
|
|
},
|
|
"actions": {
|
|
"addType": "Add Interaction Type",
|
|
"importStandard": "Import from Standard Interaction Types",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"cancel": "Cancel",
|
|
"importSelected": "Import Selected"
|
|
},
|
|
"dialog": {
|
|
"import": {
|
|
"title": "Import Standard Interaction Types",
|
|
"description": "Select standard interaction types to import into your organization:",
|
|
"empty": "No standard interaction types available to import."
|
|
},
|
|
"conflicts": {
|
|
"title": "Resolve Import Conflicts",
|
|
"description": "The following items have conflicts that need to be resolved:",
|
|
"nameConflict": "Name already exists",
|
|
"orderConflict": "Order {{order}} is already in use",
|
|
"skipItem": "Skip this item",
|
|
"importDifferentName": "Import with different name:",
|
|
"importDifferentOrder": "Import with order {{order}}",
|
|
"resolve": "Import with Resolutions"
|
|
}
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"deleted": "Interaction type deleted",
|
|
"imported_one": "Imported {{count}} interaction type",
|
|
"imported_other": "Imported {{count}} interaction types"
|
|
},
|
|
"error": {
|
|
"fetchFailed": "Failed to fetch interaction types",
|
|
"validateDeleteFailed": "Failed to validate interaction type deletion",
|
|
"deleteFailed": "Failed to delete interaction type",
|
|
"checkConflicts": "Failed to check conflicts",
|
|
"importFailed": "Failed to import interaction types",
|
|
"fetchAvailable": "Failed to fetch available interaction types for import"
|
|
}
|
|
}
|
|
},
|
|
"statuses": {
|
|
"title": "Interaction Statuses",
|
|
"alert": "Interaction Statuses: Track the state of customer interactions such as calls, emails, and meetings.",
|
|
"table": {
|
|
"name": "Name",
|
|
"status": "Status",
|
|
"order": "Order",
|
|
"actions": "Actions"
|
|
},
|
|
"statusLabels": {
|
|
"closedHelp": "Interactions with this status will be marked as closed",
|
|
"openHelp": "Interactions with this status will remain open"
|
|
},
|
|
"actions": {
|
|
"addStatus": "Add Status",
|
|
"importStandard": "Import from Standard",
|
|
"edit": "Edit",
|
|
"delete": "Delete"
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"updated": "Status updated successfully",
|
|
"deleted": "Status deleted successfully",
|
|
"imported": "Successfully imported {{count}} statuses"
|
|
},
|
|
"error": {
|
|
"lastClosed": "At least one status must remain marked as closed",
|
|
"deleteLastClosed": "Cannot delete the last closed status for this type.",
|
|
"skipped": "{{count}} estados ignorados ({{reason}})",
|
|
"importFailed": "Falha ao importar os estados"
|
|
}
|
|
}
|
|
},
|
|
"quickAdd": {
|
|
"dialog": {
|
|
"createTitle": "Create Interaction Type",
|
|
"editTitle": "Edit Interaction Type"
|
|
},
|
|
"fields": {
|
|
"name": {
|
|
"label": "Interaction Type Name:",
|
|
"placeholder": "e.g., 'Client Onboarding Call', 'Sales Demo', 'Project Review'"
|
|
},
|
|
"displayOrder": {
|
|
"label": "Display Order:",
|
|
"placeholder": "e.g., 1, 2, 3..."
|
|
},
|
|
"icon": {
|
|
"label": "Choose an Icon:"
|
|
}
|
|
},
|
|
"preview": {
|
|
"title": "Preview:",
|
|
"empty": "Enter type name above"
|
|
},
|
|
"actions": {
|
|
"cancel": "Cancel",
|
|
"create": "Create Type",
|
|
"update": "Update Type",
|
|
"creating": "Creating...",
|
|
"updating": "Updating..."
|
|
},
|
|
"messages": {
|
|
"error": {
|
|
"nameRequired": "Please enter a name for the interaction type.",
|
|
"saveFailed": "Failed to {{action}} interaction type. Please try again."
|
|
}
|
|
}
|
|
},
|
|
"openMenu": "Abrir menu"
|
|
},
|
|
"clientPortal": {
|
|
"branding": {
|
|
"title": "Branding & Appearance",
|
|
"description": "Customize the look and feel of your client portal with your company branding.",
|
|
"fields": {
|
|
"companyName": "Company Name",
|
|
"companyLogo": "Company Logo",
|
|
"colorPalette": "Color Palette",
|
|
"primaryColor": "Primary Color",
|
|
"secondaryColor": "Secondary Color",
|
|
"supportEmail": "Support Email",
|
|
"supportPhone": "Support Phone"
|
|
},
|
|
"help": {
|
|
"companyName": "This will be displayed in the client portal header",
|
|
"companyLogo": "Recommended: PNG or SVG, max 2MB, transparent background",
|
|
"primaryColor": "Used for buttons, links, and highlights",
|
|
"secondaryColor": "Used for accents and secondary actions",
|
|
"supportEmail": "Shown to clients in appointment confirmations and other outbound emails as the address to contact for help.",
|
|
"supportPhone": "Optional. Shown alongside the support email in client-facing emails."
|
|
},
|
|
"preview": "Preview",
|
|
"previewDarkMode": "Preview dark mode",
|
|
"actions": {
|
|
"saveBranding": "Save Branding Settings",
|
|
"previewDashboard": "Preview Client Dashboard",
|
|
"hideDashboard": "Hide Client Dashboard",
|
|
"previewSignIn": "Preview Sign-in Page",
|
|
"hideSignIn": "Hide Sign-in Page"
|
|
},
|
|
"customDomainRequired": "Must have custom domain set up"
|
|
},
|
|
"dashboardPreview": {
|
|
"title": "Your Client Portal",
|
|
"welcome": "Welcome back!",
|
|
"subtitle": "Here's an overview of your account activity",
|
|
"openTickets": "Open Tickets",
|
|
"activeProjects": "Active Projects",
|
|
"invoices": "Invoices",
|
|
"urgent": "{{count}} urgent",
|
|
"nearDeadline": "{{count}} near deadline",
|
|
"dueThisMonth": "Due this month",
|
|
"recentActivity": "Recent Activity",
|
|
"ticketUpdated": "Ticket #1234 was updated",
|
|
"hoursAgo": "{{count}} hours ago",
|
|
"newInvoice": "New invoice generated",
|
|
"milestoneCompleted": "Project milestone completed",
|
|
"dayAgo": "1 day ago",
|
|
"createTicket": "Create Ticket",
|
|
"viewProjects": "View Projects",
|
|
"activeDevices": "Dispositivos ativos",
|
|
"basicSupport": "Suporte básico",
|
|
"dashboardTitle": "Dashboard",
|
|
"greeting": "Bom dia, Alex 👋",
|
|
"navAppointments": "Agendamentos",
|
|
"navDashboard": "Dashboard",
|
|
"navDevices": "Meus dispositivos",
|
|
"navProjects": "Projetos",
|
|
"navServiceRequests": "Pedidos de serviço",
|
|
"navTickets": "Tickets",
|
|
"serviceRequests": "Pedidos de serviço",
|
|
"upcomingShort": "Próximos",
|
|
"upcomingVisits": "Próximas visitas",
|
|
"welcomeBack": "Bem-vindo de volta",
|
|
"workspaceSection": "Área de trabalho"
|
|
},
|
|
"signInPreview": {
|
|
"portalTitle": "Client Portal",
|
|
"welcome": "Welcome to Your Client Portal",
|
|
"subtitle": "Manage your support tickets and stay connected",
|
|
"features": {
|
|
"submitTickets": {
|
|
"title": "Submit Support Tickets",
|
|
"description": "Create and manage your support requests"
|
|
},
|
|
"trackStatus": {
|
|
"title": "Track Ticket Status",
|
|
"description": "Monitor progress in real-time"
|
|
},
|
|
"ticketHistory": {
|
|
"title": "Ticket History",
|
|
"description": "Access your complete support history"
|
|
},
|
|
"documentation": {
|
|
"title": "Documentation Access",
|
|
"description": "View shared documents and resources"
|
|
}
|
|
},
|
|
"signIn": {
|
|
"title": "Sign In",
|
|
"description": "Please enter your credentials to access your account.",
|
|
"email": "Email",
|
|
"emailPlaceholder": "Enter your email",
|
|
"password": "Password",
|
|
"passwordPlaceholder": "Enter your password",
|
|
"forgotPassword": "Forgot your password?",
|
|
"mspStaffLogin": "MSP Staff? Login here →"
|
|
}
|
|
},
|
|
"domain": {
|
|
"title": "Domínio Personalizado",
|
|
"description": "Configure um nome de anfitrião personalizado para o seu portal do cliente. Os certificados TLS serão aprovisionados automaticamente assim que o DNS for verificado.",
|
|
"currentStatus": "Estado atual",
|
|
"noDomainConfigured": "Nenhum domínio personalizado configurado",
|
|
"defaultStatusMessage": "Ainda não foi registado nenhum domínio personalizado.",
|
|
"lastChecked": "Última verificação: {{value}}",
|
|
"updatingDomainPrefix": "A atualizar o domínio para ",
|
|
"updatingDomainSuffix": ". O aprovisionamento será reiniciado após a atualização.",
|
|
"editInstructions": "Para alterar o seu domínio, edite o valor abaixo e submeta para iniciar uma nova execução de aprovisionamento.",
|
|
"actions": {
|
|
"refresh": "Atualizar",
|
|
"refreshing": "A atualizar...",
|
|
"retry": "Tentar novamente",
|
|
"retrying": "A tentar novamente…",
|
|
"removeDomain": "Remover Domínio",
|
|
"saveDomain": "Guardar Domínio",
|
|
"updateDomain": "Atualizar Domínio",
|
|
"submitting": "A submeter…",
|
|
"cancelEdit": "Cancelar Edição"
|
|
},
|
|
"form": {
|
|
"label": "Domínio personalizado",
|
|
"helpTextPrefix": "Adicione um registo CNAME a apontar para ",
|
|
"helpTextSuffix": " antes de submeter.",
|
|
"placeholder": "portal.example.com"
|
|
},
|
|
"checklist": {
|
|
"title": "Lista de verificação de configuração",
|
|
"step1Prefix": "Crie um registo CNAME para o anfitrião escolhido a apontar para ",
|
|
"step1Suffix": ".",
|
|
"step2": "Clique em \"Guardar Domínio\" para iniciar a verificação de DNS e o aprovisionamento do certificado.",
|
|
"step3": "Use o botão Atualizar para acompanhar o progresso do aprovisionamento. Os seus administradores serão notificados por email se o aprovisionamento falhar.",
|
|
"canonicalHostFallback": "anfitrião canónico"
|
|
},
|
|
"badges": {
|
|
"pending_dns": "DNS Pendente",
|
|
"verifying_dns": "A Verificar DNS",
|
|
"dns_failed": "DNS Falhou",
|
|
"pending_certificate": "Certificado Pendente",
|
|
"certificate_issuing": "A Emitir Certificado",
|
|
"certificate_failed": "Certificado Falhou",
|
|
"deploying": "A Implementar",
|
|
"active": "Ativo",
|
|
"disabled": "Desativado",
|
|
"unknown": "Desconhecido"
|
|
},
|
|
"messages": {
|
|
"requestSubmitted": "Pedido de domínio personalizado submetido.",
|
|
"retryQueued": "Nova tentativa colocada em fila. Verifique o estado novamente dentro de momentos.",
|
|
"removalRequested": "Remoção do domínio personalizado solicitada.",
|
|
"enterDomainFirst": "Introduza um domínio antes de submeter.",
|
|
"confirmRemove": "Remover o domínio personalizado atual? O tráfego será revertido para o endereço alojado predefinido.",
|
|
"loadFailed": "Não foi possível carregar o estado do domínio do portal.",
|
|
"registerFailed": "Falha ao registar o domínio personalizado.",
|
|
"refreshFailed": "Falha ao atualizar o estado do domínio.",
|
|
"retryFailed": "A nova tentativa falhou.",
|
|
"disableFailed": "Falha ao desativar o domínio personalizado."
|
|
}
|
|
},
|
|
"yourCompanyName": "Nome da sua empresa",
|
|
"brandingPreviewMode": "Modo de tema de pré-visualização da marca",
|
|
"brandingUpdated": "Configurações de marca atualizadas"
|
|
},
|
|
"mspLanguage": {
|
|
"title": "Idioma da organização",
|
|
"description": "Defina o idioma padrão para toda a organização — equipe MSP, usuários do portal do cliente e notificações por email. Cada usuário ou cliente pode substituí-lo individualmente.",
|
|
"fields": {
|
|
"defaultLanguage": "Idioma padrão",
|
|
"availableLanguages": "Idiomas disponíveis"
|
|
},
|
|
"help": {
|
|
"defaultLanguage": "Aplicado em todo lugar, a menos que substituído pela preferência pessoal de um usuário ou pelo idioma configurado para um cliente específico.",
|
|
"availableLanguages": "Selecione entre quais idiomas os usuários podem escolher."
|
|
}
|
|
},
|
|
"notifications": {
|
|
"title": "Notification Settings",
|
|
"description": {
|
|
"email": "Configure how your tenant sends email notifications",
|
|
"internal": "Configure how your tenant sends internal notifications"
|
|
},
|
|
"viewSwitcher": {
|
|
"email": "Email Notifications",
|
|
"internal": "Internal Notifications"
|
|
},
|
|
"emailTabs": {
|
|
"settings": "Settings",
|
|
"emailTemplates": "Email Templates",
|
|
"categories": "Categories",
|
|
"telemetry": "Telemetry"
|
|
},
|
|
"internalTabs": {
|
|
"categories": "Categories",
|
|
"categoriesTypes": "Categorias e Tipos"
|
|
},
|
|
"loading": {
|
|
"settings": "A carregar definições...",
|
|
"templates": "A carregar modelos...",
|
|
"categories": "A carregar categorias..."
|
|
},
|
|
"unsaved": {
|
|
"title": "Alterações Não Guardadas",
|
|
"message": "Tem alterações não guardadas nas definições de notificações. Tem a certeza de que pretende sair? As suas alterações serão perdidas."
|
|
},
|
|
"tenantDescription": {
|
|
"email": "Configure as definições de notificações por email para todo o tenant",
|
|
"internal": "Configure as definições de notificações internas para todo o tenant"
|
|
},
|
|
"sections": {
|
|
"globalSettings": {
|
|
"title": "Global Settings",
|
|
"description": "Configure global notification settings"
|
|
},
|
|
"emailTemplates": {
|
|
"title": "Email Templates",
|
|
"description": "Manage email notification templates"
|
|
},
|
|
"categories": {
|
|
"title": "Notification Categories",
|
|
"description": "Manage notification categories and types"
|
|
},
|
|
"internalCategories": {
|
|
"title": "Internal Notification Categories",
|
|
"description": "Manage internal notification categories and types"
|
|
},
|
|
"telemetry": {
|
|
"title": "Telemetry & Analytics",
|
|
"description": "Manage your telemetry and analytics preferences"
|
|
}
|
|
}
|
|
},
|
|
"timeEntry": {
|
|
"title": "Time Entry Settings",
|
|
"description": "Manage your time entry settings and time periods"
|
|
},
|
|
"billing": {
|
|
"title": "Billing Settings",
|
|
"description": "Manage your billing and subscription"
|
|
},
|
|
"secrets": {
|
|
"title": "Secrets Management",
|
|
"description": "Manage encrypted secrets for use in workflows. Secrets can be referenced in workflow actions using the $secret syntax.",
|
|
"list": {
|
|
"title": "Secrets",
|
|
"description": "Manage secrets for use in workflows. Secrets are encrypted and can be referenced using { $secret: \"SECRET_NAME\" }",
|
|
"search": "Search secrets...",
|
|
"createSecret": "Create Secret",
|
|
"table": {
|
|
"name": "Name",
|
|
"description": "Description",
|
|
"lastUpdated": "Last Updated",
|
|
"lastAccessed": "Last Accessed",
|
|
"actions": "Actions",
|
|
"never": "Never",
|
|
"empty": "-"
|
|
},
|
|
"tooltips": {
|
|
"edit": "Edit secret",
|
|
"delete": "Delete secret"
|
|
}
|
|
},
|
|
"dialog": {
|
|
"createTitle": "Create Secret",
|
|
"editTitle": "Edit Secret",
|
|
"deleteTitle": "Delete Secret",
|
|
"fields": {
|
|
"name": {
|
|
"label": "Name *",
|
|
"placeholder": "MY_API_KEY",
|
|
"help": "Use uppercase letters, numbers, and underscores only"
|
|
},
|
|
"value": {
|
|
"label": "Value *",
|
|
"placeholder": "Enter secret value",
|
|
"editPlaceholder": "Enter new value to update",
|
|
"editHelp": "Leave empty to keep the current value"
|
|
},
|
|
"description": {
|
|
"label": "Description",
|
|
"placeholder": "What is this secret used for?"
|
|
}
|
|
},
|
|
"delete": {
|
|
"confirmation": "Are you sure you want to delete the secret {{name}}?",
|
|
"usedByWorkflows": "This secret is used by {{count}} workflow(s)",
|
|
"usedByWarning": "Deleting it will cause those workflows to fail when they try to access this secret.",
|
|
"cannotUndo": "This action cannot be undone.",
|
|
"typeToConfirm": "Type {{name}} to confirm:",
|
|
"placeholder": "Enter secret name"
|
|
},
|
|
"actions": {
|
|
"cancel": "Cancel",
|
|
"create": "Create Secret",
|
|
"update": "Update Secret",
|
|
"delete": "Delete Secret",
|
|
"saving": "Saving...",
|
|
"deleting": "Deleting..."
|
|
}
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"created": "Secret \"{{name}}\" created",
|
|
"updated": "Secret \"{{name}}\" updated",
|
|
"deleted": "Secret \"{{name}}\" deleted"
|
|
},
|
|
"error": {
|
|
"loadFailed": "Failed to load secrets",
|
|
"deleteFailed": "Failed to delete secret",
|
|
"saveFailed": "Failed to save secret",
|
|
"nameRequired": "Secret name is required",
|
|
"valueRequired": "Secret value is required",
|
|
"noChanges": "No changes to save",
|
|
"fixValidation": "Please fix the validation errors"
|
|
}
|
|
}
|
|
},
|
|
"importExport": {
|
|
"title": "Import & Export Workspace",
|
|
"description": "Configure imports, exports, and automated data flows from a single control centre.",
|
|
"history": {
|
|
"title": "Import & Export History",
|
|
"description": "Review every import or export job in one place.",
|
|
"empty": "No import or export jobs found. Generate a preview to create the first job.",
|
|
"table": {
|
|
"date": "Date",
|
|
"source": "Source",
|
|
"file": "File",
|
|
"status": "Status",
|
|
"created": "Created",
|
|
"duplicates": "Duplicates",
|
|
"errors": "Errors"
|
|
}
|
|
},
|
|
"tabs": {
|
|
"assetImport": "Asset Import",
|
|
"assetExport": "Asset Export",
|
|
"templatesAutomation": "Templates & Automation"
|
|
},
|
|
"import": {
|
|
"fields": {
|
|
"importSource": "Import source",
|
|
"uploadFile": "Upload file",
|
|
"fieldMapping": "Field mapping",
|
|
"rememberMapping": "Remember this mapping for future imports"
|
|
},
|
|
"placeholders": {
|
|
"noSources": "No import sources available",
|
|
"selectSource": "Select an import source",
|
|
"sourceColumn": "Source column name",
|
|
"example": "e.g. {{example}}"
|
|
},
|
|
"help": {
|
|
"fieldMapping": "Enter the column names from your file that correspond to each required asset field. Leave optional fields blank to skip them."
|
|
},
|
|
"alerts": {
|
|
"selectSource": "Select an import source to continue.",
|
|
"chooseFile": "Choose a CSV or XLSX file to continue.",
|
|
"validationIssues": "Validation issues detected."
|
|
},
|
|
"actions": {
|
|
"generatePreview": "Generate Preview",
|
|
"preparingPreview": "Preparing Preview…",
|
|
"proceedWithImport": "Proceed with Import",
|
|
"startingImport": "Starting Import…",
|
|
"refresh": "Refresh",
|
|
"refreshing": "Refreshing…",
|
|
"cancel": "Cancel",
|
|
"importSelected": "Import Selected"
|
|
},
|
|
"preview": {
|
|
"title": "Import Preview",
|
|
"description": "Showing up to the first 10 rows from {{totalRows}} total records.",
|
|
"stats": {
|
|
"total": "Total",
|
|
"valid": "Valid",
|
|
"duplicates": "Duplicates",
|
|
"errors": "Errors"
|
|
},
|
|
"table": {
|
|
"row": "Row",
|
|
"values": "Values",
|
|
"issues": "Issues"
|
|
},
|
|
"empty": "No preview rows available."
|
|
}
|
|
},
|
|
"export": {
|
|
"comingSoon": "Asset export tooling is coming soon. Planned capabilities include exporting filtered asset lists, audit data, and mapping templates directly to CSV/XLSX."
|
|
},
|
|
"templates": {
|
|
"comingSoon": "Mapping templates and scheduled imports will live here. Save column mappings, share them across the team, and configure recurring jobs."
|
|
},
|
|
"jobDetails": {
|
|
"title": "Import Job Details",
|
|
"stats": {
|
|
"totalRows": "Total Rows",
|
|
"processed": "Processed",
|
|
"created": "Created",
|
|
"updated": "Updated",
|
|
"duplicates": "Duplicates",
|
|
"errors": "Errors"
|
|
},
|
|
"sections": {
|
|
"summary": "Summary",
|
|
"records": "Records ({{count}})",
|
|
"errors": "Errors ({{count}})",
|
|
"duplicates": "Duplicates ({{count}})"
|
|
},
|
|
"fields": {
|
|
"source": "Source",
|
|
"originalFileName": "Original file name",
|
|
"storedFileId": "Stored file ID",
|
|
"documentId": "Document ID",
|
|
"documentAssociation": "Document association",
|
|
"clientAssociation": "Client Association",
|
|
"associatedClient": "Associated client",
|
|
"defaultClientContext": "Default client context",
|
|
"tenantClientFallback": "Tenant client fallback",
|
|
"externalId": "External ID",
|
|
"status": "Status",
|
|
"sampleValues": "Sample Values",
|
|
"error": "Error",
|
|
"duplicateMatch": "Duplicate Match"
|
|
},
|
|
"empty": {
|
|
"noRecords": "No processed records yet.",
|
|
"noErrors": "No validation errors were recorded.",
|
|
"noDuplicates": "No duplicates were detected for this job.",
|
|
"noValues": "No values"
|
|
},
|
|
"truncated": "Showing the first {{count}} records. Download the job results for full history."
|
|
},
|
|
"messages": {
|
|
"error": {
|
|
"loadImportData": "Falha ao carregar os dados de importação",
|
|
"createPreview": "Falha ao criar a pré-visualização",
|
|
"selectPreviewFirst": "Selecione uma pré-visualização para aprovar antes de importar.",
|
|
"startImportJob": "Falha ao iniciar o trabalho de importação",
|
|
"loadJobDetails": "Falha ao carregar os detalhes do trabalho",
|
|
"refreshHistory": "Falha ao atualizar o histórico de importação"
|
|
}
|
|
},
|
|
"selectJobHint": "Selecione um trabalho de importação para inspecionar seus resultados."
|
|
},
|
|
"email": {
|
|
"title": "Email Configuration",
|
|
"description": "Configure email providers, domains, and settings"
|
|
},
|
|
"extensions": {
|
|
"title": "Extension Management",
|
|
"description": "Install, configure, and manage extensions to extend Alga PSA functionality.",
|
|
"tabs": {
|
|
"manage": "Manage",
|
|
"install": "Install"
|
|
},
|
|
"enterpriseOnly": {
|
|
"title": "Enterprise feature",
|
|
"description": "Extensions are available in the Enterprise edition of Alga PSA."
|
|
},
|
|
"links": {
|
|
"needLogs": "Need extension logs?",
|
|
"debugConsole": "Open Service Proxy Demo Debug Console"
|
|
},
|
|
"loading": {
|
|
"extensions": "Loading extensions...",
|
|
"installer": "Loading installer..."
|
|
}
|
|
},
|
|
"security": {
|
|
"title": "Security Settings",
|
|
"tabs": {
|
|
"roles": "Roles",
|
|
"sessions": "Sessions",
|
|
"sso": "Single Sign-On",
|
|
"permissions": "Permissions",
|
|
"userRoles": "User Roles",
|
|
"policies": "Policies",
|
|
"apiKeys": "API Keys"
|
|
},
|
|
"loading": {
|
|
"roles": "Loading role configuration...",
|
|
"permissions": "Loading permissions configuration...",
|
|
"userRoles": "Loading user role configuration...",
|
|
"policies": "Loading policy configuration...",
|
|
"apiKeys": "Loading API key configuration...",
|
|
"sso": "Loading SSO management tools...",
|
|
"sessions": "Loading active sessions..."
|
|
},
|
|
"userRoles": {
|
|
"title": "Assign Roles to Users",
|
|
"description": {
|
|
"msp": "Manage user role assignments for MSP users",
|
|
"client": "Manage user role assignments for Client Portal users"
|
|
},
|
|
"viewSwitcher": {
|
|
"msp": "MSP",
|
|
"clientPortal": "Client Portal"
|
|
},
|
|
"showInactive": "Show Inactive Users",
|
|
"fields": {
|
|
"selectUser": "Select User",
|
|
"selectRole": "Select Role"
|
|
},
|
|
"actions": {
|
|
"assignRole": "Assign Role"
|
|
},
|
|
"table": {
|
|
"user": "User",
|
|
"email": "Email",
|
|
"roles": "Roles",
|
|
"actions": "Actions"
|
|
},
|
|
"noRolesAssigned": "No roles assigned",
|
|
"removeRole": "Remove {{role}}",
|
|
"emptyState": {
|
|
"noUsers": "No {{type}} users found",
|
|
"inactiveHidden": "(inactive users hidden)"
|
|
},
|
|
"inactiveTag": "(Inactive)"
|
|
},
|
|
"sessions": {
|
|
"title": "All User Sessions",
|
|
"filters": {
|
|
"search": "Search",
|
|
"searchPlaceholder": "Search by name, email, device, or IP...",
|
|
"user": "User",
|
|
"allUsers": "All Users",
|
|
"loginMethod": "Login Method",
|
|
"allMethods": "All Methods",
|
|
"userType": "User Type",
|
|
"allTypes": "All Types",
|
|
"from": "From",
|
|
"to": "To",
|
|
"selectDate": "Select date",
|
|
"reset": "Reset"
|
|
},
|
|
"loginMethods": {
|
|
"password": "Password",
|
|
"google": "Google OAuth",
|
|
"microsoft": "Microsoft OAuth",
|
|
"keycloak": "Keycloak"
|
|
},
|
|
"userTypes": {
|
|
"internal": "Internal",
|
|
"client": "Client"
|
|
},
|
|
"session": {
|
|
"yourSession": "Your Session",
|
|
"unknownDevice": "Unknown Device",
|
|
"lastActive": "Last active {{time}} ago",
|
|
"logout": "Logout",
|
|
"revoke": "Revoke",
|
|
"revoking": "Revoking..."
|
|
},
|
|
"oauthWarning": "Revoking this session will not revoke {{provider}} OAuth access. Revoke access from your {{provider}} account settings.",
|
|
"confirmLogout": "Are you sure you want to logout from this device?",
|
|
"messages": {
|
|
"loggingOut": "Logging out...",
|
|
"revoked": "Session revoked successfully"
|
|
},
|
|
"emptyState": {
|
|
"loading": "Loading sessions...",
|
|
"noMatch": "No sessions match your search",
|
|
"noSessions": "No active sessions found"
|
|
},
|
|
"subtitle_one": "{{sessionCount}} active session across {{userCount}} user",
|
|
"subtitle_other": "{{sessionCount}} active sessions across {{userCount}} users"
|
|
}
|
|
},
|
|
"ssoBulk": {
|
|
"loading": {
|
|
"title": "SSO",
|
|
"description": "A carregar ferramentas de atribuição em massa de SSO..."
|
|
},
|
|
"autoLink": {
|
|
"title": "Configurar SSO automaticamente para novos utilizadores internos",
|
|
"description": "Ative esta opção para aprovisionar imediatamente cada nova conta de colaborador com o seu fornecedor de SSO empresarial, dispensando o início de sessão por palavra-passe.",
|
|
"body": "Quando ativado, os novos utilizadores MSP podem iniciar sessão com Google ou Microsoft utilizando o seu email profissional. Não terão de associar manualmente a conta.",
|
|
"toggleLabel": "Alternar associação automática de SSO",
|
|
"disabledInfo": "Ative esta opção para que colaboradores novos e existentes possam dispensar o fluxo \"Conectar SSO\" quando o seu email já corresponde a um fornecedor configurado. Continuaremos a registar todas as associações automáticas."
|
|
},
|
|
"bulk": {
|
|
"title": "Atribuição em Massa de SSO",
|
|
"description": "Selecione utilizadores internos da lista abaixo e associe-os a um fornecedor Google ou Microsoft configurado. Use a pré-visualização para confirmar o impacto antes de executar.",
|
|
"noProviders": "Ainda não existem fornecedores SSO configurados. Adicione credenciais OAuth para continuar com as atribuições em massa."
|
|
},
|
|
"errors": {
|
|
"loadProviders": "Não foi possível carregar a configuração do fornecedor SSO.",
|
|
"updatePreferences": "Não foi possível atualizar as preferências de SSO."
|
|
},
|
|
"form": {
|
|
"title": "Escolher fornecedor e selecionar utilizadores",
|
|
"description": "Escolha o fornecedor SSO configurado para a sua equipa e, em seguida, pesquise e selecione os utilizadores a associar.",
|
|
"providerLabel": "Fornecedor",
|
|
"notConfigured": "Não configurado",
|
|
"providerNotConfiguredAlert": "Forneça credenciais OAuth para este fornecedor antes de associar contas.",
|
|
"actionLabel": "Ação",
|
|
"linkSelected": "Associar utilizadores selecionados",
|
|
"unlinkSelected": "Desassociar utilizadores selecionados",
|
|
"actionPlaceholder": "Selecionar ação em massa de SSO",
|
|
"actionDescription": "Associar adiciona o fornecedor a cada utilizador selecionado. Desassociar remove o fornecedor para que o utilizador volte ao início de sessão por palavra-passe/TOTP até voltar a associar.",
|
|
"searchLabel": "Procurar utilizadores internos",
|
|
"searchPlaceholder": "Pesquisar por email ou nome",
|
|
"noneSelected": "Ainda não há utilizadores selecionados.",
|
|
"selected_one": "{{count}} utilizador selecionado.",
|
|
"selected_other": "{{count}} utilizadores selecionados.",
|
|
"clearSelection": "Limpar seleção",
|
|
"loadingUsers": "A carregar utilizadores...",
|
|
"noMatch": "Nenhum utilizador corresponde a esta pesquisa.",
|
|
"noUsers": "Não foram encontrados utilizadores internos.",
|
|
"clientPortalComing": "As atribuições em massa do portal do cliente estarão disponíveis em breve. Por agora, esta ferramenta aplica-se apenas a utilizadores MSP internos.",
|
|
"loadUsersFailed": "Não foi possível carregar os utilizadores atribuíveis.",
|
|
"actions": {
|
|
"previewLink": "Pré-visualizar atribuição",
|
|
"previewUnlink": "Pré-visualizar desassociação",
|
|
"link": "Associar contas",
|
|
"unlink": "Desassociar contas",
|
|
"preparingPreview": "A preparar pré-visualização…",
|
|
"linking": "A associar contas…",
|
|
"unlinking": "A desassociar contas…",
|
|
"bulkLabel": "Ações de SSO em massa {{location}}"
|
|
},
|
|
"table": {
|
|
"email": "Email",
|
|
"id": "ID",
|
|
"name": "Nome",
|
|
"status": "Estado",
|
|
"active": "Ativo",
|
|
"inactive": "Inativo",
|
|
"linkedProviders": "Fornecedores associados",
|
|
"unlinked": "Não associado",
|
|
"lastLogin": "Último início de sessão"
|
|
},
|
|
"toast": {
|
|
"providerRequiredTitle": "Fornecedor obrigatório",
|
|
"providerRequiredDescription": "Selecione um fornecedor configurado antes de continuar.",
|
|
"noUsersTitle": "Nenhum utilizador selecionado",
|
|
"noUsersDescription": "Selecione pelo menos um utilizador da tabela.",
|
|
"failedTitle": "Atribuição em massa falhou",
|
|
"failedDescription": "Não foi possível processar a atribuição em massa de SSO.",
|
|
"linkCompleteTitle": "Associação concluída",
|
|
"unlinkCompleteTitle": "Desassociação concluída",
|
|
"previewReadyTitle": "Pré-visualização pronta",
|
|
"linkedCount": "Associadas {{count}} contas via {{provider}}.",
|
|
"unlinkedCount": "Desassociadas {{count}} contas via {{provider}}.",
|
|
"previewUnlink_one": "Pré-visualização pronta. Iremos desassociar {{count}} utilizador selecionado.",
|
|
"previewUnlink_other": "Pré-visualização pronta. Iremos desassociar {{count}} utilizadores selecionados.",
|
|
"previewLink": "Pré-visualização pronta. Reveja o resumo antes de associar contas."
|
|
},
|
|
"results": {
|
|
"completeTitle": "Atribuição concluída",
|
|
"previewTitle": "Resultados da pré-visualização",
|
|
"noneMatched": "Nenhum dos utilizadores selecionados corresponde aos filtros atuais.",
|
|
"processed_one": "Processado {{count}} utilizador.",
|
|
"processed_other": "Processados {{count}} utilizadores.",
|
|
"candidatesSelected": "{{count}} selecionados",
|
|
"unlinked": "Desassociados",
|
|
"wouldUnlink": "Seriam desassociados",
|
|
"linked": "Associados",
|
|
"wouldLink": "Seriam associados",
|
|
"alreadyUnlinked": "Já não associados",
|
|
"alreadyLinked": "Já associados",
|
|
"skippedInactive": "Ignorados (inativos)"
|
|
},
|
|
"providerNames": {
|
|
"google": "Google Workspace",
|
|
"microsoft": "Microsoft 365"
|
|
}
|
|
}
|
|
},
|
|
"profile": {
|
|
"pageTitle": "Your Profile",
|
|
"tabs": {
|
|
"profile": "Profile",
|
|
"security": "Security",
|
|
"sso": "Single Sign-On",
|
|
"apiKeys": "API Keys",
|
|
"notifications": "Notifications",
|
|
"calendar": "Calendar"
|
|
},
|
|
"basicInfo": {
|
|
"title": "Basic Information"
|
|
},
|
|
"fields": {
|
|
"firstName": {
|
|
"label": "First Name *"
|
|
},
|
|
"lastName": {
|
|
"label": "Last Name *"
|
|
},
|
|
"email": {
|
|
"label": "Email *"
|
|
},
|
|
"phoneNumber": {
|
|
"label": "Phone Number"
|
|
},
|
|
"timeZone": {
|
|
"label": "Time Zone"
|
|
}
|
|
},
|
|
"actions": {
|
|
"saveChanges": "Save Changes"
|
|
},
|
|
"notifications": {
|
|
"title": "Notification Preferences",
|
|
"viewSwitcher": {
|
|
"email": "Email",
|
|
"internal": "Internal"
|
|
}
|
|
},
|
|
"loading": "Loading profile...",
|
|
"messages": {
|
|
"success": {
|
|
"profileUpdated": "Profile updated successfully"
|
|
},
|
|
"error": {
|
|
"userNotFound": "User not found",
|
|
"fillRequiredFields": "Please fill in all required fields",
|
|
"saveFailed": "Falha ao guardar o perfil",
|
|
"emailAlreadyExists": "Já existe um utilizador com este endereço de e-mail",
|
|
"reportsToSelf": "Um utilizador não pode reportar a si próprio",
|
|
"reportsToCycle": "Isto criaria uma cadeia de reporte circular"
|
|
}
|
|
},
|
|
"validation": {
|
|
"firstNameRequired": "First name is required",
|
|
"lastNameRequired": "Last name is required"
|
|
}
|
|
},
|
|
"password": {
|
|
"changePassword": "Change Password",
|
|
"fields": {
|
|
"currentPassword": "Current Password",
|
|
"newPassword": "New Password",
|
|
"confirmNewPassword": "Confirm New Password"
|
|
},
|
|
"messages": {
|
|
"success": {
|
|
"changed": "Password changed successfully"
|
|
},
|
|
"error": {
|
|
"mismatch": "New passwords do not match",
|
|
"tooShort": "Password must be at least 8 characters long",
|
|
"changeFailed": "An error occurred while changing password"
|
|
}
|
|
}
|
|
},
|
|
"integrations": {
|
|
"betaNotice": "Some integrations are still in development. Please work in a sandbox environment when evaluating, and share your feedback to help us improve.",
|
|
"emptyCategory": "No integrations available in this category.",
|
|
"rmmEnterpriseNote": "RMM integrations are available in the Enterprise edition.",
|
|
"categoryHeading": "{{label}} Integrations",
|
|
"loading": {
|
|
"payments": "Loading payment settings..."
|
|
},
|
|
"categories": {
|
|
"accounting": {
|
|
"label": "Accounting",
|
|
"description": "Select an accounting package to configure synchronization for invoices, payments, and tax data."
|
|
},
|
|
"rmm": {
|
|
"label": "RMM",
|
|
"description": "Connect remote monitoring and management tools"
|
|
},
|
|
"itDocumentation": {
|
|
"label": "Documentação de TI",
|
|
"description": "Conecte plataformas de documentação de TI para exibir documentação, ativos e credenciais dos clientes em contexto."
|
|
},
|
|
"communication": {
|
|
"label": "Communication",
|
|
"description": "Connect inbox and collaboration surfaces for ticket processing, operator workflows, and Microsoft Teams access."
|
|
},
|
|
"calendar": {
|
|
"label": "Calendar",
|
|
"description": "Enterprise-only calendar sync for Google and Outlook keeps dispatch and client appointments aligned."
|
|
},
|
|
"providers": {
|
|
"label": "Providers",
|
|
"description": {
|
|
"ee": "Configure shared provider credentials used by email, calendar, MSP SSO, and other integrations.",
|
|
"oss": "Configure shared provider credentials used by email, MSP SSO, and other integrations."
|
|
}
|
|
},
|
|
"identity": {
|
|
"label": "Identity",
|
|
"description": "Connect identity providers for tenant discovery and contact synchronization."
|
|
},
|
|
"payments": {
|
|
"label": "Payments",
|
|
"description": "Accept online payments for invoices"
|
|
}
|
|
},
|
|
"items": {
|
|
"accountingSetup": {
|
|
"name": "Accounting Integrations",
|
|
"description": "Configure accounting synchronization and exports"
|
|
},
|
|
"rmmSetup": {
|
|
"name": "RMM Integrations",
|
|
"description": "Select and configure your RMM provider"
|
|
},
|
|
"hudu": {
|
|
"name": "Hudu",
|
|
"description": "Conecte uma instância Hudu para visualizar a documentação e as credenciais dos clientes no AlgaPSA."
|
|
},
|
|
"email": {
|
|
"name": "Inbound Email",
|
|
"description": "Process incoming emails into tickets",
|
|
"cardTitle": "Inbound Email Integration",
|
|
"cardDescription": "Configure email providers to automatically process incoming emails into tickets"
|
|
},
|
|
"teams": {
|
|
"name": "Microsoft Teams",
|
|
"description": "Configure Teams collaboration surfaces for MSP technicians",
|
|
"upgradeDescription": "Configure Microsoft Teams collaboration surfaces for MSP technicians. Upgrade to Pro to unlock this feature."
|
|
},
|
|
"calendarSync": {
|
|
"name": "Calendar Sync",
|
|
"description": "Sync schedule entries with Google or Microsoft calendars"
|
|
},
|
|
"google": {
|
|
"name": "Google",
|
|
"description": {
|
|
"ee": "Tenant-owned Google Cloud credentials for Gmail and Calendar",
|
|
"oss": "Tenant-owned Google Cloud credentials for Gmail and MSP SSO support flows"
|
|
},
|
|
"cardTitle": "Provider Credentials",
|
|
"cardDescription": {
|
|
"ee": "Configure Google and Microsoft first, then connect provider accounts from the Inbound Email and Calendar integration screens. MSP SSO domain discovery uses these provider credentials with tenant login-domain mappings.",
|
|
"oss": "Configure Google and Microsoft first, then connect provider accounts from the Inbound Email integration screen. MSP SSO domain discovery uses these provider credentials with tenant login-domain mappings."
|
|
}
|
|
},
|
|
"entra": {
|
|
"name": "Microsoft Entra",
|
|
"description": "Discover managed Microsoft tenants and sync users to contacts",
|
|
"upgradeDescription": "Discover managed Microsoft Entra tenants and sync users to contacts. Upgrade to Premium to unlock this feature."
|
|
},
|
|
"stripe": {
|
|
"name": "Stripe",
|
|
"description": "Accept credit card payments for invoices via Stripe"
|
|
}
|
|
}
|
|
},
|
|
"orgChart": {
|
|
"emptyState": "No users available.",
|
|
"roles": {
|
|
"client": "Client User",
|
|
"internal": "Internal User"
|
|
},
|
|
"badge": {
|
|
"inactive": "Inactive"
|
|
}
|
|
},
|
|
"permissions": {
|
|
"messages": {
|
|
"adminLocked": "As permissões do papel de administrador não podem ser modificadas",
|
|
"permissionsUpdated": "Permissões atualizadas com sucesso"
|
|
}
|
|
},
|
|
"sla": {
|
|
"messages": {
|
|
"scheduleNotFound": "Agendamento não encontrado",
|
|
"scheduleUpdated": "Agendamento atualizado com sucesso",
|
|
"scheduleCreated": "Agendamento criado com sucesso",
|
|
"scheduleDeleted": "Agendamento excluído com sucesso",
|
|
"defaultHoursCreated": "Agendamento de horário comercial padrão criado",
|
|
"scheduleRequired": "Selecione primeiro um agendamento",
|
|
"holidayNameRequired": "O nome do feriado é obrigatório",
|
|
"holidayDateRequired": "A data do feriado é obrigatória",
|
|
"holidayAdded": "Feriado adicionado com sucesso",
|
|
"holidayDeleted": "Feriado excluído com sucesso"
|
|
}
|
|
},
|
|
"clientPortalLanguage": {
|
|
"title": "Idioma do portal do cliente",
|
|
"description": "Substitua o idioma padrão apenas para usuários do portal do cliente. A equipe MSP mantém o padrão da organização.",
|
|
"fields": {
|
|
"defaultLanguage": "Idioma padrão"
|
|
},
|
|
"help": {
|
|
"defaultLanguage": "Quando definido, os usuários do portal do cliente veem este idioma, a menos que a preferência individual ou o idioma configurado para o cliente o substitua."
|
|
},
|
|
"placeholder": "Selecione um idioma",
|
|
"inheritOption": "Usar o padrão da organização ({{language}})",
|
|
"unsetHint": "Para remover a substituição do portal do cliente, altere o padrão da organização em Configurações → Idioma.",
|
|
"updated": "Idioma padrão do portal do cliente atualizado para {{language}}"
|
|
},
|
|
"language": {
|
|
"selectLanguage": "Selecionar um idioma",
|
|
"languagesUpdated": "Idiomas disponíveis atualizados"
|
|
},
|
|
"settings": {
|
|
"assetTypes": {
|
|
"tab": "Ativos",
|
|
"title": "Tipos de ativos",
|
|
"description": "Gerencie os tipos de ativos disponíveis no módulo de ativos. Tipos personalizados carregam um esquema de campos que define seus formulários de criação/edição.",
|
|
"loading": "Carregando tipos de ativos...",
|
|
"table": {
|
|
"name": "Nome",
|
|
"builtin": "Integrado",
|
|
"slug": "Identificador",
|
|
"fieldCount": "Campos",
|
|
"order": "Ordem",
|
|
"actions": "Ações",
|
|
"openMenu": "Abrir menu"
|
|
},
|
|
"actions": {
|
|
"addType": "Adicionar tipo de ativo",
|
|
"edit": "Editar",
|
|
"delete": "Excluir",
|
|
"cancel": "Cancelar",
|
|
"save": "Salvar",
|
|
"create": "Criar",
|
|
"confirmDelete": "Excluir"
|
|
},
|
|
"dialog": {
|
|
"createTitle": "Adicionar tipo de ativo",
|
|
"editTitle": "Editar tipo de ativo",
|
|
"nameLabel": "Nome",
|
|
"namePlaceholder": "ex.: Firewall",
|
|
"displayOrderLabel": "Ordem de exibição",
|
|
"iconLabel": "Ícone",
|
|
"builtinSchemaHint": "Tipos integrados usam formulários fixos gerenciados pelo AlgaPSA, portanto seu esquema de campos não pode ser editado. Você ainda pode renomear o tipo ou alterar seu ícone."
|
|
},
|
|
"deleteDialog": {
|
|
"title": "Excluir tipo de ativo",
|
|
"message": "Isso remove permanentemente \"{{name}}\" do registro de tipos de ativos."
|
|
},
|
|
"messages": {
|
|
"created": "Tipo de ativo criado",
|
|
"updated": "Tipo de ativo atualizado",
|
|
"deleted": "Tipo de ativo excluído"
|
|
},
|
|
"errors": {
|
|
"fetchFailed": "Falha ao carregar os tipos de ativos.",
|
|
"saveFailed": "Falha ao salvar o tipo de ativo.",
|
|
"deleteFailed": "Falha ao excluir o tipo de ativo.",
|
|
"invalidName": "Insira um nome para este tipo de ativo.",
|
|
"invalidSchema": "O esquema de campos é inválido. Corrija os campos destacados e tente novamente.",
|
|
"reservedSlug": "O identificador \"{{slug}}\" é reservado para um tipo integrado. Escolha outro nome.",
|
|
"slugConflict": "Já existe um tipo de ativo com o identificador \"{{slug}}\".",
|
|
"notFound": "Este tipo de ativo não existe mais.",
|
|
"builtinImmutable": "Tipos integrados permitem apenas alterações de nome e ícone.",
|
|
"builtinUndeletable": "Tipos integrados não podem ser excluídos.",
|
|
"inUse": "Este tipo ainda é usado por {{assetCount}} ativo(s). Reatribua esses ativos antes de excluí-lo.",
|
|
"unknown": "Algo deu errado."
|
|
},
|
|
"editor": {
|
|
"title": "Campos",
|
|
"empty": "Ainda não há campos. Adicione campos para montar o formulário de criação/edição deste tipo.",
|
|
"addField": "Adicionar campo",
|
|
"fieldLabel": "Rótulo",
|
|
"fieldLabelPlaceholder": "ex.: Número de série",
|
|
"fieldKey": "Chave",
|
|
"fieldKeyPlaceholder": "ex.: serial_number",
|
|
"fieldKind": "Tipo",
|
|
"fieldRequired": "Obrigatório",
|
|
"fieldOptions": "Opções (separadas por vírgula)",
|
|
"fieldOptionsPlaceholder": "ex.: Ouro, Prata, Bronze",
|
|
"moveUp": "Mover campo para cima",
|
|
"moveDown": "Mover campo para baixo",
|
|
"removeField": "Remover campo",
|
|
"kinds": {
|
|
"text": "Texto",
|
|
"number": "Número",
|
|
"date": "Data",
|
|
"select": "Seleção",
|
|
"url": "URL",
|
|
"boolean": "Sim / Não"
|
|
},
|
|
"errors": {
|
|
"invalidKey": "A chave deve começar com uma letra minúscula e usar apenas letras minúsculas, números e sublinhados.",
|
|
"duplicateKey": "Cada chave de campo deve ser única.",
|
|
"missingLabel": "O rótulo é obrigatório.",
|
|
"invalidKind": "Escolha um tipo de campo válido.",
|
|
"invalidRequired": "\"Obrigatório\" deve estar ativado ou desativado.",
|
|
"missingOptions": "Campos de seleção precisam de pelo menos uma opção.",
|
|
"invalidOptions": "As opções não podem estar vazias.",
|
|
"invalidField": "Este campo é inválido."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|