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
351 lines
14 KiB
JSON
351 lines
14 KiB
JSON
{
|
|
"navigation": {
|
|
"heading": "Extensions"
|
|
},
|
|
"enterpriseFeature": {
|
|
"title": "Enterprise Feature",
|
|
"description": "{{feature}} require Enterprise Edition. Please upgrade to access this feature."
|
|
},
|
|
"settings": {
|
|
"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..."
|
|
},
|
|
"featureNames": {
|
|
"settings": "Extension settings",
|
|
"details": "Extension details",
|
|
"permissions": "Extension permissions",
|
|
"management": "Extensions management",
|
|
"installer": "Extension installer"
|
|
},
|
|
"heading": "Extension Settings",
|
|
"notFound": "Extension not found",
|
|
"notFoundDescription": "The extension you're looking for doesn't exist or you don't have access to it.",
|
|
"backToExtensions": "Back to Extensions",
|
|
"nameSuffix": "{{name}} Settings",
|
|
"resetToDefaults": "Reset to Defaults",
|
|
"saveChanges": "Save Changes",
|
|
"confirmReset": "Are you sure you want to reset all settings to their default values?",
|
|
"cardTitle": "Extension Settings",
|
|
"cardDescription": "Configure settings for this extension. These settings will be used by the extension to customize its behavior.",
|
|
"noConfigurable": "This extension doesn't have any configurable settings.",
|
|
"customConfig": {
|
|
"title": "Custom Configuration",
|
|
"description": "Add custom configuration values for this extension. These are provided to the extension alongside the settings defined above.",
|
|
"empty": "No custom configuration entries.",
|
|
"addEntry": "Add Entry",
|
|
"keyPlaceholder": "Key (e.g. MY_API_KEY)",
|
|
"valuePlaceholder": "Value",
|
|
"markSensitive": "Mark as sensitive",
|
|
"markPublic": "Mark as public"
|
|
},
|
|
"schedules": {
|
|
"title": "Schedules",
|
|
"description": "Configure scheduled tasks for this extension by invoking a manifest-declared API endpoint on a cron schedule. On extension updates, schedules are remapped by endpoint method/path; updates may be blocked if a scheduled endpoint is removed.",
|
|
"loading": "Loading schedules…",
|
|
"noEndpoints": "This extension does not declare any API endpoints, so there is nothing to schedule.",
|
|
"endpoint": "Endpoint",
|
|
"cron": "Cron",
|
|
"timezone": "Timezone",
|
|
"selectEndpoint": "Select an endpoint",
|
|
"payloadLabel": "Payload (JSON, optional)",
|
|
"payloadHelp": "For GET endpoints, payload is ignored. For POST endpoints, payload becomes the request body. Avoid including secrets in payloads; use the extension's config/secrets instead.",
|
|
"create": "Create schedule",
|
|
"creating": "Creating...",
|
|
"refresh": "Refresh",
|
|
"empty": "No schedules configured.",
|
|
"lastStatus": " • last: {{status}}",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"edit": "Edit",
|
|
"runNow": "Run now",
|
|
"delete": "Delete",
|
|
"confirmDelete": "Delete this schedule?"
|
|
},
|
|
"secrets": {
|
|
"title": "Secret Values",
|
|
"descriptionPrefix": "Secrets are encrypted at rest.",
|
|
"descriptionHasStored": "Leave a field blank to keep the existing secret.",
|
|
"descriptionNoStored": "Provide values for required secrets before saving.",
|
|
"version": "Version: {{version}}",
|
|
"valuePlaceholder": "Enter secret value",
|
|
"storedHint": "Stored secret present. Enter a new value to rotate."
|
|
},
|
|
"selectOption": "Select an option"
|
|
},
|
|
"communityEdition": {
|
|
"listUnavailable": "Extensions not available in this edition",
|
|
"dynamicListUnavailable": "Extensions not available in Community Edition",
|
|
"dynamicInstallUnavailable": "Extension installation not available in Community Edition"
|
|
},
|
|
"page": {
|
|
"metadata": {
|
|
"title": "Extensions",
|
|
"description": "Manage extensions"
|
|
},
|
|
"title": "Extensions",
|
|
"description": "Extensions management is available in Enterprise Edition."
|
|
},
|
|
"detail": {
|
|
"metadataTitle": "Extensions - Enterprise Feature",
|
|
"extensionId": "Extension ID: {{id}}"
|
|
},
|
|
"runtime": {
|
|
"metadataTitle": "Extension",
|
|
"loadError": "Failed to load extension runtime info",
|
|
"notFoundTitle": "Extension not found.",
|
|
"goToExtensions": "Go to extensions",
|
|
"bundleUnavailableTitle": "Extension bundle not available.",
|
|
"bundleUnavailableDescription": "The extension bundle is missing or has not been uploaded.",
|
|
"goToDetails": "Go to extension details",
|
|
"runtimeDomainUnavailableTitle": "Extension runtime domain not available.",
|
|
"runtimeDomainUnavailableDescription": "Reprovision the extension from Settings -> Extensions -> select extension -> Provision."
|
|
},
|
|
"detailsPage": {
|
|
"metadata": {
|
|
"title": "Extension Details",
|
|
"description": "View extension details"
|
|
},
|
|
"title": "Extension Details",
|
|
"description": "Extension details are available in Enterprise Edition."
|
|
},
|
|
"settingsPage": {
|
|
"metadata": {
|
|
"title": "Extension Settings",
|
|
"description": "Configure extension settings"
|
|
},
|
|
"title": "Extension Settings",
|
|
"description": "Extension settings are available in Enterprise Edition."
|
|
},
|
|
"details": {
|
|
"label": "Extension Details",
|
|
"fallbackTitle": "Extension Details",
|
|
"notFoundTitle": "Extension Not Found",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"settings": "Settings",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"remove": "Remove",
|
|
"loading": "Loading extension details...",
|
|
"error": "Error",
|
|
"sectionInfo": "Extension Information",
|
|
"runtimeDomain": "Runtime Domain",
|
|
"open": "Open",
|
|
"copy": "Copy",
|
|
"provision": "Provision",
|
|
"description": "Description",
|
|
"version": "Version",
|
|
"author": "Author",
|
|
"unknownAuthor": "Unknown",
|
|
"homepage": "Homepage",
|
|
"license": "License",
|
|
"installedDate": "Installed Date",
|
|
"lastUpdated": "Last Updated",
|
|
"sectionPermissions": "Permissions",
|
|
"noPermissions": "This extension does not require any permissions.",
|
|
"sectionVersions": "Versions",
|
|
"loadingVersions": "Loading versions…",
|
|
"noVersions": "No published versions available.",
|
|
"colVersion": "Version",
|
|
"colPublished": "Published",
|
|
"colContentHash": "Content hash",
|
|
"colInstalled": "Installed",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"sectionComponents": "Components",
|
|
"noComponents": "This extension does not define any components.",
|
|
"colType": "Type",
|
|
"colId": "ID",
|
|
"colEntryPoint": "Entry Point",
|
|
"colMountPoint": "Mount Point",
|
|
"infoTitle": "Extension Information",
|
|
"infoInstalled": "This extension was installed on {{installedDate}} and last updated on {{updatedDate}}.",
|
|
"infoRefreshHint": "Enabling or disabling the extension may require a page refresh for changes to take effect.",
|
|
"settingsCountOne": "This extension has {{count}} configurable setting.",
|
|
"settingsCountOther": "This extension has {{count}} configurable settings.",
|
|
"manageSettings": "Manage Settings",
|
|
"removeTitle": "Remove Extension",
|
|
"removeMessage": "Are you sure you want to remove this extension? This action cannot be undone.",
|
|
"confirmRemove": "Remove",
|
|
"cancel": "Cancel"
|
|
},
|
|
"detailsModal": {
|
|
"description": "Description",
|
|
"version": "Version",
|
|
"author": "Author",
|
|
"unknownAuthor": "Unknown",
|
|
"status": "Status",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"created": "Created",
|
|
"lastUpdated": "Last Updated",
|
|
"extensionId": "Extension ID",
|
|
"settingsComingSoon": "Extension settings will be available in the next update.",
|
|
"settings": "Settings",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"remove": "Remove",
|
|
"removeTitle": "Remove Extension",
|
|
"removeMessage": "Are you sure you want to remove this extension? This action cannot be undone.",
|
|
"confirmRemove": "Remove",
|
|
"cancel": "Cancel"
|
|
},
|
|
"simple": {
|
|
"heading": "Extensions",
|
|
"loading": "Loading extensions...",
|
|
"error": "Error",
|
|
"emptyTitle": "No extensions installed",
|
|
"emptyDescription": "Install extensions to add new features and functionality to Alga PSA.",
|
|
"colExtension": "Extension",
|
|
"colVersion": "Version",
|
|
"colAuthor": "Author",
|
|
"colStatus": "Status",
|
|
"colActions": "Actions",
|
|
"unknownAuthor": "Unknown",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"view": "View",
|
|
"settings": "Settings",
|
|
"settingsComingSoon": "Extension settings will be available in the next update.",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"remove": "Remove",
|
|
"removeFailed": "Failed to remove extension",
|
|
"toggleDisableFailed": "Failed to disable extension",
|
|
"toggleEnableFailed": "Failed to enable extension",
|
|
"loadFailed": "Failed to load extensions",
|
|
"removeTitle": "Remove Extension",
|
|
"removeMessage": "Are you sure you want to remove this extension? This action cannot be undone.",
|
|
"confirmRemove": "Remove",
|
|
"cancel": "Cancel"
|
|
},
|
|
"list": {
|
|
"label": "Extensions Management",
|
|
"heading": "Extensions",
|
|
"loading": "Loading extensions...",
|
|
"error": "Error",
|
|
"loadFailed": "Failed to load extensions",
|
|
"emptyTitle": "No extensions installed",
|
|
"emptyDescription": "Install extensions to add new features and functionality to Alga PSA.",
|
|
"colExtension": "Extension",
|
|
"colVersion": "Version",
|
|
"colAuthor": "Author",
|
|
"colDomain": "Domain",
|
|
"colActions": "Actions",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"view": "View",
|
|
"settings": "Settings",
|
|
"provision": "Provision",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"remove": "Remove",
|
|
"debug": "Debug",
|
|
"removeTitle": "Remove Extension",
|
|
"removeMessage": "Are you sure you want to remove this extension? This action cannot be undone.",
|
|
"confirmRemove": "Remove",
|
|
"cancel": "Cancel",
|
|
"dialogVersion": "Version:",
|
|
"dialogAuthor": "Author:",
|
|
"dialogDomain": "Domain:",
|
|
"dialogStatus": "Status:"
|
|
},
|
|
"installer": {
|
|
"title": "Install Extension",
|
|
"description": "Choose a signed bundle and install it.",
|
|
"bundleLabel": "Extension Bundle (.tar.zst)",
|
|
"bundleHint": "The manifest will be extracted automatically from the bundle.",
|
|
"advancedOptions": "Advanced Options",
|
|
"customManifestLabel": "Custom Manifest (optional override)",
|
|
"customManifestPlaceholder": "Leave empty to use manifest from bundle, or paste custom manifest.json here",
|
|
"manifestJsonLabel": "Manifest JSON",
|
|
"manifestJsonPlaceholder": "Paste the manifest.json content here",
|
|
"browse": "Browse",
|
|
"manifestExtractFailed": "Could not extract manifest from bundle. Please provide it manually.",
|
|
"install": "Install",
|
|
"installing": "Installing…",
|
|
"reset": "Reset",
|
|
"finalize": "Finalize",
|
|
"finalizing": "Finalizing…",
|
|
"cancel": "Cancel",
|
|
"manageExtensions": "Manage Extensions",
|
|
"installAnother": "Install Another",
|
|
"error": "Error",
|
|
"installed": "Extension installed",
|
|
"installedName": "{{name}} v{{version}}",
|
|
"uploadNoKey": "Upload succeeded but no key was returned",
|
|
"manifestMissing": "Could not extract valid manifest from bundle.",
|
|
"finalizeError": "Unexpected error finalizing installation",
|
|
"installCompleteError": "Extension finalized, but install did not complete",
|
|
"installUnexpected": "Unexpected error during installation",
|
|
"finalizeRequireManifest": "Please paste the manifest JSON before finalizing.",
|
|
"finalizeProvidedFailed": "Failed to finalize with provided manifest"
|
|
},
|
|
"installSimple": {
|
|
"title": "Install Extension",
|
|
"heading": "Extension Installation",
|
|
"description": "Use the full extension installer for advanced options."
|
|
},
|
|
"clientPortal": {
|
|
"loadError": "Failed to load extension runtime info",
|
|
"notFoundTitle": "Extension not found.",
|
|
"backToDashboard": "Back to Dashboard",
|
|
"bundleUnavailableTitle": "Extension bundle not available.",
|
|
"bundleUnavailableDescription": "The extension bundle is missing or has not been uploaded.",
|
|
"runtimeDomainUnavailableTitle": "Extension runtime domain not available.",
|
|
"runtimeDomainUnavailableDescription": "Extension domain not provisioned."
|
|
},
|
|
"messages": {
|
|
"loadSettingsFailed": "Failed to load extension settings.",
|
|
"refreshSchedulesFailed": "Failed to refresh schedules.",
|
|
"requiredSecretsMissing": "Please provide values for required secrets before saving.",
|
|
"enterSecretValues": "Enter secret values before saving.",
|
|
"invalidCustomKey": "Custom keys can only contain letters, numbers, underscores, dots, and dashes.",
|
|
"saveSettingsFailed": "Failed to save extension settings.",
|
|
"updateSecretsFailed": "Failed to update extension secrets.",
|
|
"secretsUpdated": "Extension secrets updated.",
|
|
"settingsSaved": "Extension settings saved successfully.",
|
|
"resetSettingsFailed": "Failed to reset extension settings.",
|
|
"settingsReset": "Settings reset to default values.",
|
|
"invalidPayloadJson": "Payload must be valid JSON.",
|
|
"createScheduleFailed": "Failed to create schedule.",
|
|
"scheduleCreated": "Schedule created.",
|
|
"updateScheduleFailed": "Failed to update schedule.",
|
|
"scheduleUpdated": "Schedule updated.",
|
|
"runScheduleFailed": "Failed to run schedule.",
|
|
"scheduleRunEnqueued": "Schedule run enqueued.",
|
|
"deleteScheduleFailed": "Failed to delete schedule.",
|
|
"scheduleDeleted": "Schedule deleted.",
|
|
"toggleFailed": "Failed to update extension state",
|
|
"extensionEnabled": "Extension enabled",
|
|
"extensionDisabled": "Extension disabled",
|
|
"enableFailed": "Failed to enable extension",
|
|
"disableFailed": "Failed to disable extension",
|
|
"removeFailed": "Failed to remove extension",
|
|
"extensionRemoved": "Extension removed",
|
|
"reprovisionFailed": "Failed to reprovision",
|
|
"manifestReadFailed": "Failed to read manifest file",
|
|
"invalidBundleExtension": "File must end with \".tar.zst\": {{filename}}"
|
|
},
|
|
"debug": {
|
|
"scopeToOneInstall": "Scope to one install",
|
|
"overrideTenantContext": "Override tenant context",
|
|
"matchRequestId": "Match x-request-id / context.request_id"
|
|
}
|
|
}
|