PSA/server/public/locales/en/client-portal.json
Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

704 lines
28 KiB
JSON

{
"nav": {
"dashboard": "Dashboard",
"tickets": "Tickets",
"projects": "Projects",
"appointments": "Appointments",
"billing": "Billing",
"assets": "Assets",
"clientSettings": "Client Settings",
"profile": "Profile",
"account": "Account",
"signOut": "Sign out",
"clientPortal": "Client Portal",
"clientPortalLabel": "Client portal",
"portal": "Portal",
"notifications": "Notifications",
"documents": "Documents",
"knowledgeBase": "Knowledge Base",
"requestServices": "Service Requests",
"home": "Home",
"myTickets": "My tickets",
"newRequest": "New request",
"schedule": "Schedule",
"myDevices": "My devices",
"helpCenter": "Help center",
"organization": "Organization",
"supportCard": {
"title": "Need urgent help?",
"description": "Reach out any time for assistance."
},
"sections": {
"workspace": "Workspace",
"resources": "Resources",
"more": "More",
"apps": "Apps"
},
"licenses": "Licenses"
},
"sidebar": {
"goToDashboard": "Go to dashboard",
"logoAlt": "Client Portal Logo",
"expandSidebar": "Expand sidebar",
"collapseSidebar": "Collapse sidebar"
},
"devices": {
"pageTitle": "My devices",
"loading": "Loading devices…",
"statusOkTitle": "All devices active",
"statusOkBody": "{{count}} devices reporting in",
"empty": {
"title": "No devices yet",
"body": "Devices your provider manages will appear here."
},
"types": {
"workstation": "Workstations",
"server": "Servers",
"mobile": "Mobile",
"printer": "Printers",
"network": "Network",
"unknown": "Other"
},
"statusWarnTitle": "Some devices inactive",
"statusWarnBody": "{{active}} active · {{inactive}} inactive",
"status": {
"active": "Active",
"inactive": "Inactive"
},
"searchPlaceholder": "Search by name, tag, or serial",
"filters": {
"allTypes": "All types",
"allStatuses": "All statuses"
},
"clearFilters": "Clear filters",
"columns": {
"name": "Name",
"type": "Type",
"status": "Status",
"location": "Location",
"updated": "Updated",
"actions": "Actions"
},
"notAvailable": "N/A",
"detailsTitle": "Asset details",
"createTicket": "Create ticket",
"createTicketForDevice": "Create a ticket for this device",
"rowActionsLabel": "Row actions"
},
"dashboard": {
"title": "Dashboard",
"welcome": "Welcome back! Here's an overview of your account.",
"loading": "Loading dashboard...",
"error": "There was an error loading the dashboard. Please try again later.",
"metrics": {
"openTickets": "Open Support Tickets",
"activeProjects": "Open Projects",
"pendingInvoices": "Pending Invoices",
"activeAssets": "Active Assets",
"upcomingVisits": "Upcoming visits",
"activeDevices": "Active devices",
"openTicketsHint": "Active support",
"activeProjectsHint": "In progress",
"nextLabel": "Next: {{when}}",
"noneScheduled": "None scheduled",
"deviceStatusHint": "Managed endpoints",
"serviceRequests": "Service requests",
"serviceRequestsHint": "Total submissions",
"openTicketsDescription": "Support tickets we are still working on.",
"activeProjectsDescription": "Projects we are delivering for your team.",
"serviceRequestsDescription": "Structured requests you have submitted from the catalog.",
"upcomingVisitsDescription": "Scheduled appointments with our technicians.",
"activeDevicesDescription": "Endpoints we currently manage and monitor."
},
"welcomeBack": "Welcome back",
"heroSubtitle": "Here's a snapshot of your IT support activity. Our team is standing by to help you stay productive.",
"greeting": {
"morning": "Good morning",
"afternoon": "Good afternoon",
"evening": "Good evening"
},
"nextToday": "Today",
"nextTomorrow": "Tomorrow",
"recentTickets": {
"title": "Recent tickets",
"viewAll": "View all",
"id": "ID",
"subject": "Subject",
"status": "Status",
"priority": "Priority",
"updated": "Updated",
"empty": "No active tickets — nice!",
"countLabel": "{{count}} shown"
},
"activity": {
"title": "Recent activity",
"subtitle": "Latest updates across your account",
"empty": "No recent activity yet",
"emptyHint": "When tickets are updated or invoices arrive, you will see them here.",
"viewTickets": "View all tickets",
"titles": {
"ticket": "New ticket: {{name}}",
"invoice": "Invoice {{name}} generated",
"asset": "Asset maintenance: {{name}}",
"project": "Project updated: {{name}}",
"quote": {
"_default": "Quote {{name}}",
"sent": "Quote {{name}} sent for review",
"accepted": "Quote {{name}} accepted",
"rejected": "Quote {{name}} rejected",
"expired": "Quote {{name}} expired"
},
"service_request": {
"_default": "Service request: {{name}}",
"pending": "Service request submitted: {{name}}",
"succeeded": "Service request fulfilled: {{name}}",
"failed": "Service request failed: {{name}}"
},
"appointment": {
"_default": "Appointment: {{name}}",
"pending": "Appointment requested: {{name}}",
"approved": "Appointment confirmed: {{name}}",
"declined": "Appointment declined: {{name}}",
"cancelled": "Appointment cancelled: {{name}}"
}
},
"algadeskEmptyHint": "When tickets are updated, you will see them here."
},
"devices": {
"title": "Your devices",
"viewAll": "View all",
"countLabel": "{{count}} managed",
"emptyShort": "No devices yet",
"emptyBody": "Devices your provider manages will appear here.",
"healthy": "Healthy",
"inactive": "Inactive",
"active": "Active"
},
"quickActions": {
"title": "Quick Actions",
"createTicket": "Create ticket",
"requestAppointment": "Request appointment",
"viewLatestInvoice": "View Latest Invoice",
"newServiceRequest": "New service request"
},
"appointments": {
"title": "Upcoming Appointments",
"noUpcoming": "No upcoming appointments. Request one now!",
"noUpcomingShort": "Nothing on the calendar",
"countLabel": "{{count}} upcoming",
"requestButton": "Request Appointment",
"viewAll": "View all appointments →",
"technician": "Technician"
},
"recentActivity": {
"title": "Recent Activity"
},
"viewAll": "View all {{item}} →",
"timeAgo": {
"justNow": "just now",
"minutes": "{{count}} min ago",
"hours": "{{count}} h ago",
"days": "{{count}}d ago"
}
},
"auth": {
"signIn": "Sign In",
"signOut": "Sign Out",
"email": "Email",
"password": "Password",
"emailPlaceholder": "Enter your email",
"passwordPlaceholder": "Enter your password",
"signingIn": "Signing in...",
"rememberMe": "Remember me",
"forgotPasswordLink": "Forgot your password?",
"forgotPasswordPage": {
"title": "Forgot password?",
"subtitle": "No worries, we'll send you reset instructions.",
"logoAlt": "Client Portal Logo",
"emailLabel": "Email",
"emailPlaceholder": "Enter your email",
"sendResetButton": "Send Reset Link",
"backToLogin": "← Back to log in",
"resetLinkSent": "If an account exists with this email, a password reset link has been sent."
},
"resetPassword": "Reset Password",
"backToSignIn": "Back to sign in",
"sendResetLink": "Send reset link",
"resetLinkSent": "Password reset link has been sent to your email",
"invalidCredentials": "Invalid email or password",
"loginError": "An error occurred during login",
"sessionExpired": "Your session has expired. Please sign in again.",
"welcomeTitle": "Welcome to Your Client Portal",
"welcomeSubtitle": "Manage your support tickets and stay connected",
"signInDescription": "Please enter your credentials to access your account.",
"clientLogin": "Client Login",
"mspStaffLogin": "MSP Staff? Login here →",
"accessDeniedTitle": "Access Denied",
"accessDeniedMessage": "You do not have permission to access the client portal.",
"registrationSuccessTitle": "Registration Successful",
"registrationSuccessMessage": "Your account has been created. Please sign in.",
"portalSetup": {
"title": "Set Up Portal Access",
"subtitle": "Complete your client portal account setup",
"loading": "Loading...",
"invalidInvitation": "Invalid Invitation",
"invalidInvitationDescription": "There was a problem with your portal invitation",
"invalidTokenMessage": "The invitation token is invalid or has expired. Please contact your service provider for a new invitation.",
"noTokenProvided": "No invitation token provided",
"invalidOrExpiredToken": "Invalid or expired invitation token",
"verificationFailed": "Failed to verify invitation token",
"goToPortalSignIn": "Go to Portal Sign In",
"accountInformation": "Account Information",
"name": "Name:",
"email": "Email:",
"client": "Client:",
"password": "Password",
"passwordPlaceholder": "Enter your password",
"confirmPassword": "Confirm Password",
"confirmPasswordPlaceholder": "Confirm your password",
"passwordRequirements": "Password Requirements",
"requirements": {
"minLength": "At least 8 characters",
"hasUppercase": "One uppercase letter",
"hasLowercase": "One lowercase letter",
"hasNumber": "One number",
"hasSpecialChar": "One special character",
"passwordsMatch": "Passwords match"
},
"createAccount": "Create Portal Account",
"creatingAccount": "Creating Account...",
"alreadyHaveAccount": "Already have an account?",
"signInToPortal": "Sign in to portal",
"requirementsNotMet": "Please ensure all password requirements are met",
"accountReady": "Account ready. Please sign in.",
"accountCreatedSuccess": "Account created successfully. Please sign in.",
"welcome": "Welcome to the client portal!",
"createFailed": "Failed to create account",
"errors": {
"tokenRequired": "A valid invitation token is required.",
"tokenAndPasswordRequired": "A token and password are required to complete setup.",
"passwordTooShort": "Password must be at least 8 characters long.",
"invalidOrExpiredToken": "This invitation link is invalid or has expired.",
"tenantContextRequired": "Missing organization context. Please reopen the invitation link.",
"resetPasswordFailed": "We couldn't reset the password for the existing account. Please try again.",
"createUserFailed": "We couldn't create your user account. Please try again.",
"setupFailed": "We couldn't complete the portal setup. Please try again.",
"verificationFailed": "We couldn't verify your invitation token. Please try again.",
"invitationFailed": "We couldn't send the invitation. Please try again.",
"permissionDeniedInvite": "You don't have permission to send portal invitations.",
"permissionDeniedCreate": "You don't have permission to create portal user accounts.",
"emailNotConfigured": "Email service is not configured. Please contact your administrator.",
"contactNotFound": "Contact not found.",
"contactMissingEmail": "The contact doesn't have an email address.",
"contactInvalidEmail": "The contact has an invalid email address.",
"userExistsForContact": "A user account already exists for this contact.",
"portalUserAlreadyExists": "A portal user already exists for this contact.",
"noDefaultClient": "No default client is configured for this tenant.",
"noDefaultLocation": "The default client has no default location configured.",
"noLocationEmail": "The client location has no contact email configured.",
"baseUrlNotConfigured": "The application base URL is not configured.",
"invitationNotFound": "Invitation not found.",
"revokeFailed": "Failed to revoke the invitation. Please try again."
}
},
"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"
}
},
"forgotPassword": "Forgot password?",
"sessionEndedTitle": "Session Ended",
"sessionEndedMessage": "Your session has been signed out. Please sign in again.",
"clientRegistration": {
"errors": {
"contactNotFound": "Contact not found.",
"contactInactive": "This contact is inactive.",
"emailAlreadyExists": "A user with this email address already exists.",
"registrationFailed": "We couldn't complete the registration. Please try again."
}
},
"captchaRequired": "Please complete the verification below, then sign in again.",
"tooManyAttempts": "Too many failed sign-in attempts. Please wait a few minutes before trying again."
},
"account": {
"title": "Account",
"licenseManagement": {
"title": "Account",
"subtitle": "License management is available in the MSP Portal",
"howToPurchaseTitle": "How to Purchase Additional Licenses:",
"step1": "Sign in to the MSP Portal (if you have admin access)",
"step2": "Navigate to Settings → Account Management",
"step3": "Click \"Add Licenses\" to purchase more licenses",
"step4": "Complete the checkout process",
"needHelpTitle": "Need Help?",
"needHelpDescription": "Only users with Account Management permissions can purchase licenses. If you don't have access, please contact your AlgaPSA administrator.",
"backToDashboard": "Back to Dashboard",
"goToMSPPortal": "Go to MSP Portal",
"signingOut": "Signing out..."
},
"services": {
"loadError": "Failed to load services",
"loadContractLinesError": "Failed to load service contract lines",
"updateError": "Failed to update service",
"loading": "Loading services...",
"activeTitle": "Active Services",
"empty": "No active services found",
"columns": {
"service": "Service",
"description": "Description",
"status": "Status",
"currentContractLine": "Current Contract Line",
"nextBilling": "Next Billing"
},
"actions": {
"manage": "Manage",
"upgrade": "Upgrade",
"downgrade": "Downgrade"
},
"manageTitle": "Manage {{service}}",
"genericServiceLabel": "Service",
"currentContractLine": "Current Contract Line",
"availableContractLines": "Available Contract Lines",
"catalog": {
"title": "Available Services",
"learnMore": "Learn More",
"managedIt": {
"title": "Managed IT Support",
"description": "24/7 IT support and monitoring for your business. Includes proactive maintenance, security updates, and dedicated technical support.",
"price": "Starting at $299/mo"
},
"cloudBackup": {
"title": "Cloud Backup",
"description": "Secure cloud backup and disaster recovery solutions. Automated backups, quick recovery options, and data encryption included.",
"price": "Starting at $99/mo"
},
"cybersecurity": {
"title": "Cybersecurity",
"description": "Advanced security monitoring and threat prevention. Includes firewall management, endpoint protection, and regular security assessments.",
"price": "Starting at $199/mo"
}
}
},
"billing": {
"loadError": "Failed to load billing data",
"addPaymentError": "Failed to add payment method",
"removePaymentError": "Failed to remove payment method",
"setDefaultError": "Failed to set default payment method",
"loadingBillingInfo": "Loading billing information...",
"overviewTitle": "Billing Overview",
"paymentMethodsTitle": "Payment Methods",
"noPaymentMethods": "No payment methods on file",
"billingCycleTitle": "Billing Cycle",
"noBillingCycle": "No billing cycle found",
"recentInvoicesTitle": "Recent Invoices",
"billingHistoryTitle": "Billing History",
"labels": {
"defaultTag": "(Default)"
},
"actions": {
"setDefault": "Set Default",
"remove": "Remove",
"addPaymentMethod": "Add Payment Method",
"adding": "Adding...",
"view": "View"
},
"fields": {
"cardNumber": "Card Number",
"expiryMonth": "Month",
"expiryYear": "Year",
"cvv": "CVV",
"setAsDefault": "Set as default payment method"
},
"history": {
"period": "Period",
"startDate": "Start Date",
"endDate": "End Date",
"status": "Status",
"empty": "No billing history available"
},
"validation": {
"cardNumber": "Please enter a valid 16-digit card number",
"expMonth": "Please enter a valid month (01-12)",
"expYear": "Please enter a valid year (2024-2099)",
"cvv": "Please enter a valid CVV"
}
}
},
"profile": {
"title": "My Profile",
"personalInfo": "Personal Information",
"contactInfo": "Contact Information",
"clientInfo": "Client Information",
"preferences": "Preferences",
"security": "Security",
"activity": "Activity",
"notificationSettings": "Notification Settings",
"fields": {
"firstName": "First Name",
"lastName": "Last Name",
"email": "Email Address",
"phone": "Phone Number",
"mobile": "Mobile Phone",
"title": "Job Title",
"department": "Department",
"client": "Client",
"address": "Address",
"city": "City",
"state": "State/Province",
"postalCode": "Postal Code",
"country": "Country",
"timezone": "Time Zone",
"language": "Language Preference",
"dateFormat": "Date Format",
"avatar": "Profile Picture",
"notes": "Notes"
},
"changePassword": {
"title": "Change Password",
"current": "Current Password",
"new": "New Password",
"confirm": "Confirm New Password",
"requirements": "Password must be at least 8 characters",
"submit": "Update Password",
"success": "Password updated successfully",
"error": "Failed to update password",
"passwordMismatch": "New passwords do not match",
"unknownError": "An error occurred while changing password"
},
"twoFactorAuth": {
"title": "Two-Factor Authentication",
"enable": "Enable 2FA",
"disable": "Disable 2FA",
"status": "Status",
"enabled": "Enabled",
"disabled": "Disabled"
},
"notifications": {
"unreadCount_one": "{{count}} unread notification",
"unreadCount_other": "{{count}} unread notifications",
"title": "Notification Settings",
"email": "Email Notifications",
"ticketUpdates": "Ticket Updates",
"projectUpdates": "Project Updates",
"invoices": "Invoice Notifications",
"announcements": "System Announcements",
"emailPreferences": "Email",
"internalPreferences": "Internal"
},
"actions": {
"save": "Save Changes",
"cancel": "Cancel",
"edit": "Edit Profile",
"uploadPhoto": "Upload Photo",
"removePhoto": "Remove Photo"
},
"messages": {
"updateSuccess": "Profile updated successfully",
"updateError": "Failed to update profile",
"emailAlreadyExists": "A user with this email address already exists",
"reportsToSelf": "A user cannot report to themselves",
"reportsToCycle": "This would create a circular reporting chain",
"photoUploaded": "Photo uploaded successfully",
"photoRemoved": "Photo removed successfully",
"userNotFound": "User not found",
"loadError": "Failed to load profile",
"loading": "Loading profile...",
"avatarDescription": "This avatar is shown to MSP staff when they view your contact information."
},
"imageUpload": {
"uploadAvatar": "Upload Avatar",
"uploadLogo": "Upload Logo",
"uploadingAvatar": "Uploading Avatar...",
"uploadingLogo": "Uploading Logo...",
"deleteAvatar": "Delete Profile Picture",
"deleteLogo": "Delete Client Logo",
"deleteProfilePicture": "Delete Profile Picture",
"delete": "Delete",
"deleting": "Deleting...",
"deleteLogoConfirm": "Are you sure you want to delete the logo? This action cannot be undone.",
"deleteAvatarConfirm": "Are you sure you want to delete the profile picture? This action cannot be undone.",
"edit": "Edit",
"invalidType": "Please select an image file.",
"sizeLimit": "Image size must be less than 2MB.",
"maxSize": "Max 2MB (PNG, JPG, GIF)",
"uploadSuccess": "Uploaded successfully.",
"uploadError": "Failed to upload. Please try again.",
"deleteSuccess": "Deleted successfully.",
"deleteError": "Failed to delete.",
"deleteConfirm": "Are you sure you want to delete this? This action cannot be undone.",
"linking": "Linking...",
"linkDocument": "Link Document"
},
"validation": {
"clientNameRequired": "Client name is required",
"emailRequired": "Email is required",
"emailInvalid": "Please enter a valid email address",
"phoneInvalid": "Please enter a valid phone number",
"addressInvalid": "Address cannot be empty if provided"
}
},
"clientSettings": {
"title": "Client Settings",
"details": "Client Details",
"billing": "Billing Information",
"description": "Manage your client settings and configurations.",
"tabs": {
"account": "Account",
"clientDetails": "Client Details",
"userManagement": "User Management",
"visibilityGroups": "Visibility Groups"
},
"fields": {
"clientLogo": "Client Logo",
"clientName": "Client Name",
"clientLocations": "Client Locations",
"manageLocations": "Manage Locations",
"mainOffice": "Main Office",
"warehouse": "Warehouse",
"website": "Website",
"industry": "Industry",
"companySize": "Company Size",
"company_size": "Company Size",
"annualRevenue": "Annual Revenue",
"size": "Company Size",
"taxId": "Tax ID",
"billingAddress": "Billing Address",
"primaryContact": "Primary Contact",
"uploadLogo": "Upload Logo",
"deleteLogo": "Delete Client Logo"
},
"users": {
"title": "User Management",
"searchUsers": "Search users",
"addNewUser": "Add New User",
"addUser": "Add User",
"editUser": "Edit User",
"removeUser": "Remove User",
"firstName": "First Name",
"lastName": "Last Name",
"email": "Email",
"phone": "Phone",
"roles": "Roles",
"status": "Status",
"actions": "Actions",
"active": "Active",
"inactive": "Inactive",
"selectRole": "Select a role (optional)",
"createUser": "Create User",
"invite": "Send Invitation",
"resendInvite": "Resend Invitation",
"lastLogin": "Last Login",
"never": "Never",
"via": "via",
"userNotFound": "User not found",
"failedToLoad": "Failed to load user details",
"failedToUpdate": "Failed to update user",
"failedToAssignRole": "Failed to assign role",
"failedToRemoveRole": "Failed to remove role",
"statusDescription": "Set user account status",
"noRolesAssigned": "No roles assigned",
"assignRole": "Assign Role",
"resetPassword": "Reset User Password",
"clientNotFound": "Client not found",
"permissionError": "You do not have permission to manage users",
"loadError": "Failed to load users",
"emailExists": "A contact with this email address already exists",
"emailAlreadyExists": "A user with this email address already exists",
"reportsToSelf": "A user cannot report to themselves",
"reportsToCycle": "This would create a circular reporting chain",
"createError": "Failed to create user",
"deleteError": "Failed to delete user"
},
"messages": {
"saveChanges": "Save Changes",
"failedToLoad": "Failed to load account information",
"updateSuccess": "Client settings updated successfully",
"userAdded": "User added successfully",
"userRemoved": "User removed successfully",
"inviteSent": "Invitation sent successfully",
"noPermission": "You do not have permission to access client settings",
"clientNotFound": "Client not found",
"detailsLoadError": "Failed to load client details",
"updateError": "Failed to update client details"
},
"visibilityGroups": {
"title": "Visibility Groups",
"description": "Manage which ticket boards each client portal contact can access.",
"nameLabel": "Name",
"descriptionLabel": "Description",
"boardLabel": "Boards",
"noBoards": "No boards are available",
"loadError": "Unable to load visibility groups",
"empty": "No visibility groups yet.",
"loading": "Loading groups...",
"boardCount": "boards",
"assignmentCount": "assigned contacts",
"edit": "Edit",
"delete": "Delete",
"deleteDialogTitle": "Delete visibility group",
"deleteConfirm": "Delete this visibility group?",
"deleteAssignedError": "This visibility group is still assigned to one or more contacts.",
"deleteMissingError": "This visibility group no longer exists.",
"deleteSuccess": "Visibility group deleted",
"deleteError": "Unable to delete visibility group",
"save": "Save group",
"create": "Create group",
"nameRequired": "Visibility group name is required",
"saveError": "Unable to save visibility group",
"updateSuccess": "Visibility group updated",
"createSuccess": "Visibility group created",
"assignmentsTitle": "Contact assignments",
"assignmentsDescription": "Assign each contact a visibility group or keep full access.",
"noContacts": "No contacts available.",
"assignmentLabel": "Assigned group",
"fullAccess": "Full access",
"cancel": "Cancel",
"assignSuccess": "Contact visibility assignment updated",
"assignError": "Unable to assign visibility group"
}
},
"notifications": {
"title": "Notifications",
"markAsRead": "Mark as read",
"markAllAsRead": "Mark all as read",
"noNotifications": "No new notifications",
"settings": "Notification Settings",
"viewAll": "View all notifications",
"tabs": {
"unread": "Unread",
"all": "All",
"read": "Read"
},
"preferences": {
"title": "Notification Preferences",
"description": "Manage which internal notifications you receive",
"loading": "Loading preferences...",
"loadError": "Failed to load preferences",
"saveError": "Failed to save preference",
"noCategories": "No notification categories available",
"emailPreferences": "Email preferences",
"internalPreferences": "Internal preferences"
},
"categories": {
"tickets": "Tickets",
"invoices": "Invoices",
"messages": "Messages",
"projects": "Projects",
"system": "System"
}
}
}