diff --git a/.github/workflows/PR-Auto-Deploy-V2.yml b/.github/workflows/PR-Auto-Deploy-V2.yml index 173b4db9df..a3573a49df 100644 --- a/.github/workflows/PR-Auto-Deploy-V2.yml +++ b/.github/workflows/PR-Auto-Deploy-V2.yml @@ -256,7 +256,7 @@ jobs: - name: Build and push V2 image (Docker fork fallback) if: env.USE_DEPOT != 'true' && steps.check-image.outputs.exists == 'false' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ./docker/embedded/Dockerfile diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml index e478f95c89..5a4ea8deef 100644 --- a/.github/workflows/PR-Demo-Comment-with-react.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -270,7 +270,7 @@ jobs: - name: Build and push PR-specific image (Docker fork fallback) if: env.USE_DEPOT != 'true' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ./docker/embedded/Dockerfile @@ -296,7 +296,7 @@ jobs: - name: Build and push engine image (Docker fork fallback) if: env.USE_DEPOT != 'true' && needs.check-comment.outputs.enable_prototypes == 'true' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: ./engine file: ./engine/Dockerfile diff --git a/.github/workflows/backend-build.yml b/.github/workflows/backend-build.yml index 37a42c419f..ef0dd20aba 100644 --- a/.github/workflows/backend-build.yml +++ b/.github/workflows/backend-build.yml @@ -47,7 +47,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/check-licence.yml b/.github/workflows/check-licence.yml index b984f7d47d..dcd8c032df 100644 --- a/.github/workflows/check-licence.yml +++ b/.github/workflows/check-licence.yml @@ -29,7 +29,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/check-openapi.yml b/.github/workflows/check-openapi.yml index 46ce829a87..a27ea4ec02 100644 --- a/.github/workflows/check-openapi.yml +++ b/.github/workflows/check-openapi.yml @@ -34,7 +34,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/coverage-aggregate.yml b/.github/workflows/coverage-aggregate.yml index ce792bcadc..18772fe819 100644 --- a/.github/workflows/coverage-aggregate.yml +++ b/.github/workflows/coverage-aggregate.yml @@ -51,7 +51,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/db-migration-test.yml b/.github/workflows/db-migration-test.yml index 4b5ca8b674..9e8eeb8c8c 100644 --- a/.github/workflows/db-migration-test.yml +++ b/.github/workflows/db-migration-test.yml @@ -37,7 +37,7 @@ jobs: distribution: temurin - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/deploy-on-v2-commit.yml b/.github/workflows/deploy-on-v2-commit.yml index 850dcb12e4..0a4f502166 100644 --- a/.github/workflows/deploy-on-v2-commit.yml +++ b/.github/workflows/deploy-on-v2-commit.yml @@ -121,7 +121,7 @@ jobs: - name: Build and push frontend image (Docker fork fallback) if: env.USE_DEPOT != 'true' && steps.check-frontend.outputs.exists == 'false' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ./docker/frontend/Dockerfile @@ -150,7 +150,7 @@ jobs: - name: Build and push backend image (Docker fork fallback) if: env.USE_DEPOT != 'true' && steps.check-backend.outputs.exists == 'false' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ./docker/backend/Dockerfile diff --git a/.github/workflows/docker-compose-tests.yml b/.github/workflows/docker-compose-tests.yml index 155b990b32..945f4883cb 100644 --- a/.github/workflows/docker-compose-tests.yml +++ b/.github/workflows/docker-compose-tests.yml @@ -50,7 +50,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml index f5fb743a3f..9e8a65f02c 100644 --- a/.github/workflows/multiOSReleases.yml +++ b/.github/workflows/multiOSReleases.yml @@ -61,7 +61,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependencies - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/caches diff --git a/.github/workflows/push-docker-base.yml b/.github/workflows/push-docker-base.yml index 57d0935d1d..c6fbe3f7ad 100644 --- a/.github/workflows/push-docker-base.yml +++ b/.github/workflows/push-docker-base.yml @@ -85,7 +85,7 @@ jobs: - name: Build and push base image id: build-push-base - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: builder: ${{ steps.buildx.outputs.name }} context: docker/base diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index 75b1aa60c8..eac1fa49fc 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -66,7 +66,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependencies - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/caches @@ -145,7 +145,7 @@ jobs: id: build-push-latest # Empty-tag guard: build-push-action errors when asked to push with no tags. if: env.RUN_MAIN_APP == 'true' && steps.meta.outputs.tags != '' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: builder: ${{ steps.buildx.outputs.name }} context: . @@ -192,7 +192,7 @@ jobs: - name: Build and push Unified Dockerfile (fat variant) id: build-push-fat - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 if: env.RUN_MAIN_APP == 'true' && github.ref != 'refs/heads/main' && github.ref != 'refs/heads/testMain' && steps.meta-fat.outputs.tags != '' with: builder: ${{ steps.buildx.outputs.name }} @@ -236,7 +236,7 @@ jobs: - name: Build and push Unified Dockerfile (ultra-lite variant) id: build-push-lite - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 if: env.RUN_MAIN_APP == 'true' && github.ref != 'refs/heads/main' && github.ref != 'refs/heads/testMain' && steps.meta-lite.outputs.tags != '' with: builder: ${{ steps.buildx.outputs.name }} @@ -365,7 +365,7 @@ jobs: - name: Build and push unoserver image id: build-push-unoserver if: env.RUN_UNOSERVER == 'true' && steps.unoserverDecision.outputs.mode != 'skip' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: builder: ${{ steps.buildx.outputs.name }} context: . diff --git a/.github/workflows/test-build-docker.yml b/.github/workflows/test-build-docker.yml index b6a081bb1e..c91ea0435a 100644 --- a/.github/workflows/test-build-docker.yml +++ b/.github/workflows/test-build-docker.yml @@ -95,7 +95,7 @@ jobs: distribution: "temurin" - name: Cache Gradle dependency artifacts - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.gradle/wrapper @@ -186,7 +186,7 @@ jobs: # (multi-platform + gha cache) against the published base image. - name: Build ${{ matrix.docker-rev }} (Docker fork fallback) if: env.USE_DEPOT != 'true' && inputs.docker-base-changed != 'true' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: builder: ${{ steps.buildx.outputs.name }} context: . @@ -259,7 +259,7 @@ jobs: - name: Build docker/unoserver/Dockerfile (Docker fork fallback) if: env.USE_DEPOT != 'true' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: builder: ${{ steps.buildx.outputs.name }} context: . diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml index e9774694e7..ec9b658326 100644 --- a/.github/workflows/testdriver.yml +++ b/.github/workflows/testdriver.yml @@ -95,7 +95,7 @@ jobs: - name: Build and push test image (Docker fork fallback) if: env.USE_DEPOT != 'true' - uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ./docker/embedded/Dockerfile diff --git a/.imgbotconfig b/.imgbotconfig new file mode 100644 index 0000000000..720b938475 --- /dev/null +++ b/.imgbotconfig @@ -0,0 +1,5 @@ +{ + "ignoredFiles": [ + "frontend/editor/src-tauri/icons/icon.png" + ] +} diff --git a/app/common/src/main/java/stirling/software/common/service/TempFileCleanupService.java b/app/common/src/main/java/stirling/software/common/service/TempFileCleanupService.java index 81b45aed09..438481c212 100644 --- a/app/common/src/main/java/stirling/software/common/service/TempFileCleanupService.java +++ b/app/common/src/main/java/stirling/software/common/service/TempFileCleanupService.java @@ -144,8 +144,10 @@ public class TempFileCleanupService { int directoriesDeletedCount = 0; for (Path directory : registry.getTempDirectories()) { try { - if (Files.exists(directory)) { + if (Files.exists(directory) + && shouldDeleteRegisteredDirectory(directory, maxAgeMillis)) { GeneralUtils.deleteDirectory(directory); + registry.unregisterDirectory(directory); directoriesDeletedCount++; log.debug("Cleaned up temporary directory: {}", directory); } @@ -275,6 +277,21 @@ public class TempFileCleanupService { return totalDeletedCount.get(); } + private boolean shouldDeleteRegisteredDirectory(Path directory, long maxAgeMillis) { + if (maxAgeMillis <= 0) { + return true; + } + + try { + long currentTime = System.currentTimeMillis(); + long lastModified = Files.getLastModifiedTime(directory).toMillis(); + return (currentTime - lastModified) > maxAgeMillis; + } catch (IOException e) { + log.debug("Could not check directory age, skipping cleanup: {}", directory, e); + return false; + } + } + /** Get the system temp directory path based on configuration or system property. */ private Path getSystemTempPath() { String systemTempDir = diff --git a/app/common/src/main/java/stirling/software/common/util/TempFileManager.java b/app/common/src/main/java/stirling/software/common/util/TempFileManager.java index ff31975837..0d977e7d06 100644 --- a/app/common/src/main/java/stirling/software/common/util/TempFileManager.java +++ b/app/common/src/main/java/stirling/software/common/util/TempFileManager.java @@ -155,6 +155,7 @@ public class TempFileManager { if (directory != null && Files.isDirectory(directory)) { try { GeneralUtils.deleteDirectory(directory); + registry.unregisterDirectory(directory); log.debug("Deleted temp directory: {}", directory.toString()); } catch (IOException e) { log.warn("Failed to delete temp directory: {}", directory.toString(), e); diff --git a/app/common/src/main/java/stirling/software/common/util/TempFileRegistry.java b/app/common/src/main/java/stirling/software/common/util/TempFileRegistry.java index ab1304f5e4..84a3c12272 100644 --- a/app/common/src/main/java/stirling/software/common/util/TempFileRegistry.java +++ b/app/common/src/main/java/stirling/software/common/util/TempFileRegistry.java @@ -85,6 +85,18 @@ public class TempFileRegistry { return directory; } + /** + * Unregister a temporary directory from the registry. + * + * @param directory The directory to unregister + */ + public void unregisterDirectory(Path directory) { + if (directory != null) { + tempDirectories.remove(directory); + log.debug("Unregistered temp directory: {}", directory.toString()); + } + } + /** * Register a third-party temporary file that requires special handling. * diff --git a/app/common/src/test/java/stirling/software/common/service/TempFileCleanupServiceMoreTest.java b/app/common/src/test/java/stirling/software/common/service/TempFileCleanupServiceMoreTest.java index 802dc2eace..cfbe950574 100644 --- a/app/common/src/test/java/stirling/software/common/service/TempFileCleanupServiceMoreTest.java +++ b/app/common/src/test/java/stirling/software/common/service/TempFileCleanupServiceMoreTest.java @@ -176,11 +176,13 @@ class TempFileCleanupServiceMoreTest { class ScheduledCleanup { @Test - @DisplayName("deletes registered temp directories and reports counts") + @DisplayName("deletes stale registered temp directories and reports counts") void deletesRegisteredDirectories() throws IOException { when(tempFileManager.cleanupOldTempFiles(anyLong())).thenReturn(2); Path regDir = Files.createDirectories(tempDir.resolve("registeredDir")); Files.createFile(regDir.resolve("inside.txt")); + Files.setLastModifiedTime( + regDir, FileTime.fromMillis(System.currentTimeMillis() - 2L * 60 * 60 * 1000)); Set dirs = new HashSet<>(); dirs.add(regDir); when(registry.getTempDirectories()).thenReturn(dirs); @@ -193,6 +195,22 @@ class TempFileCleanupServiceMoreTest { verify(tempFileManager).cleanupOldTempFiles(anyLong()); } + @Test + @DisplayName("keeps a fresh registered temp directory") + void keepsFreshRegisteredDirectory() throws IOException { + when(tempFileManager.cleanupOldTempFiles(anyLong())).thenReturn(0); + Path regDir = Files.createDirectories(tempDir.resolve("freshRegisteredDir")); + Files.createFile(regDir.resolve("inside.txt")); + Set dirs = new HashSet<>(); + dirs.add(regDir); + when(registry.getTempDirectories()).thenReturn(dirs); + lenient().when(registry.contains(any(File.class))).thenReturn(false); + + withIsolatedUserHome(cleanupService::scheduledCleanup); + + assertThat(Files.exists(regDir)).isTrue(); + } + @Test @DisplayName("skips a registered directory that no longer exists") void skipsMissingRegisteredDirectory() { diff --git a/frontend/editor/public/locales/ar-AR/translation.toml b/frontend/editor/public/locales/ar-AR/translation.toml index 8f7e9c5921..287cd284d5 100644 --- a/frontend/editor/public/locales/ar-AR/translation.toml +++ b/frontend/editor/public/locales/ar-AR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "العقود" -"Financial reports" = "التقارير المالية" -"HR records" = "سجلات الموارد البشرية" -Insurance = "التأمين" -Invoices = "الفواتير" -"Legal filings" = "الإيداعات القانونية" -"Medical / PHI" = "طبي / PHI" -"Tax documents" = "المستندات الضريبية" - [policies.enforcement] applying = "جارٍ تطبيق {{names}}" applyingProgress = "جارٍ تطبيق {{names}} ({{done}} من {{total}})" @@ -6025,51 +6015,6 @@ notify = "إشعار عند التوجيه" onViolation = "عند عدم الامتثال" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "سنة واحدة" -"30 days" = "30 يومًا" -"90 days" = "90 يومًا" -Never = "أبدًا" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "وضع علامة للمراجعة" -Hold = "احتجاز" -"Route to bucket" = "توجيه إلى bucket" - -[policies.fieldOption.destination] -Documents = "المستندات" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "سنة واحدة" -"3 years" = "3 سنوات" -"30 days" = "30 يومًا" -"7 years" = "7 سنوات" -Indefinite = "إلى أجل غير مسمى" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "تنقيح PHI تلقائيًا" -"Block export" = "حظر التصدير" -"Flag for review" = "وضع علامة للمراجعة" -"Quarantine document" = "عزل المستند" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "إغلاق التراكب" enforcingTitle = "جارٍ فرض السياسة..." viewAnyway = "عرض الملف (لا تزال السياسة قيد الفرض)" +[policyOption] +autoRedactPhi = "تنقيح PHI تلقائيًا" +blockExport = "حظر التصدير" +contracts = "العقود" +documents = "المستندات" +fedramp = "FedRAMP" +financialReports = "التقارير المالية" +flagForReview = "وضع علامة للمراجعة" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "احتجاز" +hrRecords = "سجلات الموارد البشرية" +indefinite = "إلى أجل غير مسمى" +insurance = "التأمين" +invoices = "الفواتير" +iso27001 = "ISO 27001" +legalFilings = "الإيداعات القانونية" +medicalPhi = "طبي / PHI" +never = "أبدًا" +ninetyDays = "90 يومًا" +oneYear = "سنة واحدة" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "عزل المستند" +routeToBucket = "توجيه إلى bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 سنوات" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "المستندات الضريبية" +thirtyDays = "30 يومًا" +threeYears = "3 سنوات" +webhook = "Webhook" + [portal] comingSoon = "قريبًا" @@ -8067,10 +8050,6 @@ title = "انتهت صلاحية الجلسة" [portal.users] title = "المستخدمون" -[portal.users.roles] -subtitle = "كل دور موجود في كل خطة — وما يمكن لكل دور فعله ثابت عبر المؤسسة." -title = "الأدوار" - [portal.users.roles.admin] label = "المسؤول (مالك المؤسسة)" summary = "حوكمة كاملة على مساحة العمل والإعدادات والأعضاء." diff --git a/frontend/editor/public/locales/az-AZ/translation.toml b/frontend/editor/public/locales/az-AZ/translation.toml index f0dea4966e..f27f1ff0d1 100644 --- a/frontend/editor/public/locales/az-AZ/translation.toml +++ b/frontend/editor/public/locales/az-AZ/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Müqavilələr" -"Financial reports" = "Maliyyə hesabatları" -"HR records" = "HR qeydləri" -Insurance = "Sığorta" -Invoices = "Fakturalar" -"Legal filings" = "Hüquqi sənədlər" -"Medical / PHI" = "Tibbi / PHI" -"Tax documents" = "Vergi sənədləri" - [policies.enforcement] applying = "{{names}} tətbiq edilir" applyingProgress = "{{names}} tətbiq edilir ({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "Yönləndirmədə bildir" onViolation = "Uyğunsuzluq olduqda" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 il" -"30 days" = "30 gün" -"90 days" = "90 gün" -Never = "Heç vaxt" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Baxış üçün işarələ" -Hold = "Saxla" -"Route to bucket" = "Bucket-ə yönləndir" - -[policies.fieldOption.destination] -Documents = "Sənədlər" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 il" -"3 years" = "3 il" -"30 days" = "30 gün" -"7 years" = "7 il" -Indefinite = "Qeyri-müəyyən" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI-ni avtomatik redaktə et" -"Block export" = "Eksportu blokla" -"Flag for review" = "Baxış üçün işarələ" -"Quarantine document" = "Sənədi karantinə al" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Örtüyü bağla" enforcingTitle = "Siyasət tətbiq edilir..." viewAnyway = "Faylı göstər (siyasət hələ tətbiq edilir)" +[policyOption] +autoRedactPhi = "PHI-ni avtomatik redaktə et" +blockExport = "Eksportu blokla" +contracts = "Müqavilələr" +documents = "Sənədlər" +fedramp = "FedRAMP" +financialReports = "Maliyyə hesabatları" +flagForReview = "Baxış üçün işarələ" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Saxla" +hrRecords = "HR qeydləri" +indefinite = "Qeyri-müəyyən" +insurance = "Sığorta" +invoices = "Fakturalar" +iso27001 = "ISO 27001" +legalFilings = "Hüquqi sənədlər" +medicalPhi = "Tibbi / PHI" +never = "Heç vaxt" +ninetyDays = "90 gün" +oneYear = "1 il" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Sənədi karantinə al" +routeToBucket = "Bucket-ə yönləndir" +s3Bucket = "S3 bucket" +sevenYears = "7 il" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Vergi sənədləri" +thirtyDays = "30 gün" +threeYears = "3 il" +webhook = "Webhook" + [portal] comingSoon = "Tezliklə" @@ -8067,10 +8050,6 @@ title = "Sessiyanın müddəti bitib" [portal.users] title = "İstifadəçilər" -[portal.users.roles] -subtitle = "Hər rol hər planda mövcuddur — hər birinin nə edə biləcəyi təşkilat üzrə sabitdir." -title = "Rollar" - [portal.users.roles.admin] label = "Admin (Təşkilat sahibi)" summary = "İş sahəsi, parametrlər və üzvlər üzərində tam idarəetmə." diff --git a/frontend/editor/public/locales/bg-BG/translation.toml b/frontend/editor/public/locales/bg-BG/translation.toml index 401c100a34..b967c4b7c8 100644 --- a/frontend/editor/public/locales/bg-BG/translation.toml +++ b/frontend/editor/public/locales/bg-BG/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Договори" -"Financial reports" = "Финансови отчети" -"HR records" = "HR записи" -Insurance = "Застраховане" -Invoices = "Фактури" -"Legal filings" = "Правни документи" -"Medical / PHI" = "Медицински / PHI" -"Tax documents" = "Данъчни документи" - [policies.enforcement] applying = "Прилагане на {{names}}" applyingProgress = "Прилагане на {{names}} ({{done}} от {{total}})" @@ -6025,51 +6015,6 @@ notify = "Уведоми при маршрутизиране" onViolation = "При несъответствие" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 година" -"30 days" = "30 дни" -"90 days" = "90 дни" -Never = "Никога" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Маркирай за преглед" -Hold = "Задръж" -"Route to bucket" = "Насочи към bucket" - -[policies.fieldOption.destination] -Documents = "Документи" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 година" -"3 years" = "3 години" -"30 days" = "30 дни" -"7 years" = "7 години" -Indefinite = "Безсрочно" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Автоматично заличаване на PHI" -"Block export" = "Блокирай експортирането" -"Flag for review" = "Маркирай за преглед" -"Quarantine document" = "Постави документа под карантина" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Скрий наслагването" enforcingTitle = "Прилагане на политика..." viewAnyway = "Виж файла (политиката все още се прилага)" +[policyOption] +autoRedactPhi = "Автоматично заличаване на PHI" +blockExport = "Блокирай експортирането" +contracts = "Договори" +documents = "Документи" +fedramp = "FedRAMP" +financialReports = "Финансови отчети" +flagForReview = "Маркирай за преглед" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Задръж" +hrRecords = "HR записи" +indefinite = "Безсрочно" +insurance = "Застраховане" +invoices = "Фактури" +iso27001 = "ISO 27001" +legalFilings = "Правни документи" +medicalPhi = "Медицински / PHI" +never = "Никога" +ninetyDays = "90 дни" +oneYear = "1 година" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Постави документа под карантина" +routeToBucket = "Насочи към bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 години" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Данъчни документи" +thirtyDays = "30 дни" +threeYears = "3 години" +webhook = "Webhook" + [portal] comingSoon = "Очаквайте скоро" @@ -8067,10 +8050,6 @@ title = "Сесията е изтекла" [portal.users] title = "Потребители" -[portal.users.roles] -subtitle = "Всяка роля съществува във всеки план — това, което всяка може да прави, е фиксирано за цялата организация." -title = "Роли" - [portal.users.roles.admin] label = "Администратор (собственик на организация)" summary = "Пълно управление на работното пространство, настройките и членовете." diff --git a/frontend/editor/public/locales/ca-CA/translation.toml b/frontend/editor/public/locales/ca-CA/translation.toml index 3b386d0328..7f748e20b2 100644 --- a/frontend/editor/public/locales/ca-CA/translation.toml +++ b/frontend/editor/public/locales/ca-CA/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contractes" -"Financial reports" = "Informes financers" -"HR records" = "Registres de RR. HH." -Insurance = "Assegurances" -Invoices = "Factures" -"Legal filings" = "Presentacions legals" -"Medical / PHI" = "Mèdic / PHI" -"Tax documents" = "Documents fiscals" - [policies.enforcement] applying = "Aplicant {{names}}" applyingProgress = "Aplicant {{names}} ({{done}} de {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notifica en encaminar" onViolation = "Quan no compleix" webhookUrl = "URL del webhook" -[policies.fieldOption.archiveAfter] -"1 year" = "1 any" -"30 days" = "30 dies" -"90 days" = "90 dies" -Never = "Mai" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marca per revisar" -Hold = "Retén" -"Route to bucket" = "Encamina al bucket" - -[policies.fieldOption.destination] -Documents = "Documents" -"S3 bucket" = "bucket S3" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 any" -"3 years" = "3 anys" -"30 days" = "30 dies" -"7 years" = "7 anys" -Indefinite = "Indefinit" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Oculta automàticament PHI" -"Block export" = "Bloqueja l'exportació" -"Flag for review" = "Marca per revisar" -"Quarantine document" = "Posa el document en quarantena" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Descarta la superposició" enforcingTitle = "S'està aplicant la política..." viewAnyway = "Mostra el fitxer (la política encara s'està aplicant)" +[policyOption] +autoRedactPhi = "Oculta automàticament PHI" +blockExport = "Bloqueja l'exportació" +contracts = "Contractes" +documents = "Documents" +fedramp = "FedRAMP" +financialReports = "Informes financers" +flagForReview = "Marca per revisar" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Retén" +hrRecords = "Registres de RR. HH." +indefinite = "Indefinit" +insurance = "Assegurances" +invoices = "Factures" +iso27001 = "ISO 27001" +legalFilings = "Presentacions legals" +medicalPhi = "Mèdic / PHI" +never = "Mai" +ninetyDays = "90 dies" +oneYear = "1 any" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Posa el document en quarantena" +routeToBucket = "Encamina al bucket" +s3Bucket = "bucket S3" +sevenYears = "7 anys" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documents fiscals" +thirtyDays = "30 dies" +threeYears = "3 anys" +webhook = "Webhook" + [portal] comingSoon = "Properament" @@ -8067,10 +8050,6 @@ title = "Sessió caducada" [portal.users] title = "Usuaris" -[portal.users.roles] -subtitle = "Cada rol existeix en tots els plans — el que pot fer cadascun és fix a tota l'organització." -title = "Rols" - [portal.users.roles.admin] label = "Admin (propietari de l'org)" summary = "Governança completa sobre l'espai de treball, la configuració i els membres." diff --git a/frontend/editor/public/locales/cs-CZ/translation.toml b/frontend/editor/public/locales/cs-CZ/translation.toml index 086d3af5ad..cd6f7c4315 100644 --- a/frontend/editor/public/locales/cs-CZ/translation.toml +++ b/frontend/editor/public/locales/cs-CZ/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Smlouvy" -"Financial reports" = "Finanční zprávy" -"HR records" = "HR záznamy" -Insurance = "Pojištění" -Invoices = "Faktury" -"Legal filings" = "Právní podání" -"Medical / PHI" = "Zdravotní / PHI" -"Tax documents" = "Daňové dokumenty" - [policies.enforcement] applying = "Probíhá použití {{names}}" applyingProgress = "Probíhá použití {{names}} ({{done}} z {{total}})" @@ -6025,51 +6015,6 @@ notify = "Upozornit při směrování" onViolation = "Při nesouladu" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 rok" -"30 days" = "30 dní" -"90 days" = "90 dní" -Never = "Nikdy" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Označit ke kontrole" -Hold = "Zadržet" -"Route to bucket" = "Směrovat do bucketu" - -[policies.fieldOption.destination] -Documents = "Dokumenty" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 rok" -"3 years" = "3 roky" -"30 days" = "30 dní" -"7 years" = "7 let" -Indefinite = "Neurčitě" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automaticky redigovat PHI" -"Block export" = "Blokovat export" -"Flag for review" = "Označit ke kontrole" -"Quarantine document" = "Umístit dokument do karantény" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Zavřít překryvnou vrstvu" enforcingTitle = "Vynucování zásady..." viewAnyway = "Zobrazit soubor (zásada se stále vynucuje)" +[policyOption] +autoRedactPhi = "Automaticky redigovat PHI" +blockExport = "Blokovat export" +contracts = "Smlouvy" +documents = "Dokumenty" +fedramp = "FedRAMP" +financialReports = "Finanční zprávy" +flagForReview = "Označit ke kontrole" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Zadržet" +hrRecords = "HR záznamy" +indefinite = "Neurčitě" +insurance = "Pojištění" +invoices = "Faktury" +iso27001 = "ISO 27001" +legalFilings = "Právní podání" +medicalPhi = "Zdravotní / PHI" +never = "Nikdy" +ninetyDays = "90 dní" +oneYear = "1 rok" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Umístit dokument do karantény" +routeToBucket = "Směrovat do bucketu" +s3Bucket = "S3 bucket" +sevenYears = "7 let" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Daňové dokumenty" +thirtyDays = "30 dní" +threeYears = "3 roky" +webhook = "Webhook" + [portal] comingSoon = "Již brzy" @@ -8067,10 +8050,6 @@ title = "Relace vypršela" [portal.users] title = "Uživatelé" -[portal.users.roles] -subtitle = "Každá role existuje v každém plánu — co která může dělat, je pevně dané napříč organizací." -title = "Role" - [portal.users.roles.admin] label = "Admin (vlastník org.)" summary = "Plná správa governance nad workspace, nastavením a členy." diff --git a/frontend/editor/public/locales/da-DK/translation.toml b/frontend/editor/public/locales/da-DK/translation.toml index 6cc8988263..665eaeece6 100644 --- a/frontend/editor/public/locales/da-DK/translation.toml +++ b/frontend/editor/public/locales/da-DK/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Kontrakter" -"Financial reports" = "Finansrapporter" -"HR records" = "HR-registreringer" -Insurance = "Forsikring" -Invoices = "Fakturaer" -"Legal filings" = "Juridiske indleveringer" -"Medical / PHI" = "Medicinsk / PHI" -"Tax documents" = "Skattedokumenter" - [policies.enforcement] applying = "Anvender {{names}}" applyingProgress = "Anvender {{names}} ({{done}} af {{total}})" @@ -6025,51 +6015,6 @@ notify = "Giv besked ved routing" onViolation = "Når ikke-kompatibel" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 år" -"30 days" = "30 dage" -"90 days" = "90 dage" -Never = "Aldrig" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Markér til gennemgang" -Hold = "Tilbagehold" -"Route to bucket" = "Route til bucket" - -[policies.fieldOption.destination] -Documents = "Dokumenter" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 år" -"3 years" = "3 år" -"30 days" = "30 dage" -"7 years" = "7 år" -Indefinite = "På ubestemt tid" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Auto-rediger PHI" -"Block export" = "Bloker eksport" -"Flag for review" = "Markér til gennemgang" -"Quarantine document" = "Sæt dokument i karantæne" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Afvis overlay" enforcingTitle = "Håndhæver politik..." viewAnyway = "Vis fil (politik håndhæves stadig)" +[policyOption] +autoRedactPhi = "Auto-rediger PHI" +blockExport = "Bloker eksport" +contracts = "Kontrakter" +documents = "Dokumenter" +fedramp = "FedRAMP" +financialReports = "Finansrapporter" +flagForReview = "Markér til gennemgang" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Tilbagehold" +hrRecords = "HR-registreringer" +indefinite = "På ubestemt tid" +insurance = "Forsikring" +invoices = "Fakturaer" +iso27001 = "ISO 27001" +legalFilings = "Juridiske indleveringer" +medicalPhi = "Medicinsk / PHI" +never = "Aldrig" +ninetyDays = "90 dage" +oneYear = "1 år" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Sæt dokument i karantæne" +routeToBucket = "Route til bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 år" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Skattedokumenter" +thirtyDays = "30 dage" +threeYears = "3 år" +webhook = "Webhook" + [portal] comingSoon = "Kommer snart" @@ -8067,10 +8050,6 @@ title = "Session udløbet" [portal.users] title = "Brugere" -[portal.users.roles] -subtitle = "Alle roller findes på alle abonnementer — hvad hver enkelt kan gøre, er fast på tværs af organisationen." -title = "Roller" - [portal.users.roles.admin] label = "Admin (organisationsejer)" summary = "Fuld styring over workspace, indstillinger og medlemmer." diff --git a/frontend/editor/public/locales/de-DE/translation.toml b/frontend/editor/public/locales/de-DE/translation.toml index 0b4c2c0468..29efeca137 100644 --- a/frontend/editor/public/locales/de-DE/translation.toml +++ b/frontend/editor/public/locales/de-DE/translation.toml @@ -356,6 +356,7 @@ text = "Diese Berechtigungen kontrollieren, was Benutzer mit der PDF machen kön title = "Berechtigungen ändern" [addStamp] +preview = "Stempelvorschau" tags = "stamp,mark,seal,approved,rejected,confidential,stamp tool,rubber stamp,date stamp,approval stamp,received,void,copy,original" [AddStampRequest] @@ -1842,6 +1843,15 @@ export = "Export" accessDenied = "Zugriff verweigert" insufficientPermissions = "Sie haben keine Berechtigung, diese Aktion auszuführen." +[auth.callback] +completing = "Authentifizierung wird abgeschlossen" +invalidToken = "OAuth-Anmeldung fehlgeschlagen – ungültiges Token." +missingToken = "OAuth-Anmeldung fehlgeschlagen – kein Token empfangen." +oauthFailed = "OAuth-Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut." +pleaseWait = "Bitte warten Sie, während wir Ihre Anmeldung abschließen." +signedOut = "Sie wurden abgemeldet. Bitte melden Sie sich erneut an." +windowMayClose = "Sie können dieses Fenster schließen, sobald der Vorgang abgeschlossen ist." + [auth.displayName] guest = "Gast" user = "Benutzer" @@ -2824,6 +2834,7 @@ next = "Weiter" preview = "Vorschau" previous = "Zurück" refresh = "Aktualisieren" +remaining = "Verbleibend" retry = "Wiederholen" save = "Save" @@ -4072,10 +4083,17 @@ discord = "Discord" issues = "GitHub" [formFill] +allSaved = "Alles gespeichert" +extractCsvError = "CSV konnte nicht extrahiert werden" +extractXlsxError = "XLSX konnte nicht extrahiert werden" flattenAfterFilling = "Nach dem Ausfüllen ebnen" +requiredAbbreviation = "erf." +requiredFieldsError = "Bitte füllen Sie alle Pflichtfelder aus" rescanFields = "Felder erneut scannen" rescanFormFields = "Formularfelder erneut scannen" save = "Speichern" +saveShortcut = "Strg+S zum Speichern" +unsavedChanges = "Nicht gespeicherte Änderungen" [formFill.sidebar] close = "Seitenleiste schließen" @@ -4996,7 +5014,21 @@ titleWithOs = "Herunterladen für {{osLabel}}" [onboarding.mfa] authenticationCode = "Authentifizierungscode" +description = "Schützen Sie Ihr Konto, indem Sie eine Authenticator-App verknüpfen. Scannen Sie den QR-Code oder geben Sie den Einrichtungsschlüssel ein und bestätigen Sie anschließend den sechsstelligen Code." +enable = "MFA aktivieren" +enableError = "Die Multi-Faktor-Authentifizierung konnte nicht aktiviert werden. Prüfen Sie den Code und versuchen Sie es erneut." +enterCode = "Geben Sie den sechsstelligen Code aus Ihrer App ein." +enterCodeError = "Geben Sie den Authentifizierungscode ein, um fortzufahren." +logout = "Abmelden" +openAuthenticator = "Öffnen Sie Google Authenticator, Authy oder 1Password." qrCodeLoading = "Ihr QR-Code wird erstellt…" +regenerateQrCode = "QR-Code neu erstellen" +scanQrCode = "Scannen Sie den QR-Code oder geben Sie den unten stehenden Einrichtungsschlüssel ein." +setupError = "Die Einrichtung der Zwei-Faktor-Authentifizierung konnte nicht gestartet werden. Bitte versuchen Sie es erneut." +setupKey = "Einrichtungsschlüssel (manuelle Eingabe)" +stepByStep = "Schritt für Schritt" +success = "MFA wurde aktiviert. Sie können jetzt fortfahren." +title = "Einrichtung der Multi-Faktor-Authentifizierung" [onboarding.planOverview] adminBodyLoginDisabled = "Sobald Sie den Login-Modus aktivieren, können Sie Nutzer verwalten, Einstellungen konfigurieren und die Servergesundheit überwachen. Die ersten {{freeTierLimit}} Personen auf Ihrem Server nutzen Stirling kostenlos." @@ -5980,16 +6012,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Verträge" -"Financial reports" = "Finanzberichte" -"HR records" = "Personalakten" -Insurance = "Versicherung" -Invoices = "Rechnungen" -"Legal filings" = "Rechtliche Einreichungen" -"Medical / PHI" = "Medizinisch / PHI" -"Tax documents" = "Steuerdokumente" - [policies.enforcement] applying = "Wende {{names}} an" applyingProgress = "Wende {{names}} an ({{done}} von {{total}})" @@ -6025,51 +6047,6 @@ notify = "Bei Weiterleitung benachrichtigen" onViolation = "Bei Nichteinhaltung" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 Jahr" -"30 days" = "30 Tage" -"90 days" = "90 Tage" -Never = "Nie" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Zur Prüfung markieren" -Hold = "Zurückhalten" -"Route to bucket" = "In Bucket weiterleiten" - -[policies.fieldOption.destination] -Documents = "Dokumente" -"S3 bucket" = "S3-Bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 Jahr" -"3 years" = "3 Jahre" -"30 days" = "30 Tage" -"7 years" = "7 Jahre" -Indefinite = "Unbefristet" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI automatisch schwärzen" -"Block export" = "Export blockieren" -"Flag for review" = "Zur Prüfung markieren" -"Quarantine document" = "Dokument unter Quarantäne stellen" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6180,44 @@ dismiss = "Overlay ausblenden" enforcingTitle = "Richtlinie wird durchgesetzt..." viewAnyway = "Datei anzeigen (Richtlinie wird noch durchgesetzt)" +[policyOption] +autoRedactPhi = "PHI automatisch schwärzen" +blockExport = "Export blockieren" +contracts = "Verträge" +documents = "Dokumente" +fedramp = "FedRAMP" +financialReports = "Finanzberichte" +flagForReview = "Zur Prüfung markieren" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Zurückhalten" +hrRecords = "Personalakten" +indefinite = "Unbefristet" +insurance = "Versicherung" +invoices = "Rechnungen" +iso27001 = "ISO 27001" +legalFilings = "Rechtliche Einreichungen" +medicalPhi = "Medizinisch / PHI" +never = "Nie" +ninetyDays = "90 Tage" +oneYear = "1 Jahr" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Dokument unter Quarantäne stellen" +routeToBucket = "In Bucket weiterleiten" +s3Bucket = "S3-Bucket" +sevenYears = "7 Jahre" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Steuerdokumente" +thirtyDays = "30 Tage" +threeYears = "3 Jahre" +webhook = "Webhook" + [portal] comingSoon = "Demnächst" @@ -8067,10 +8082,6 @@ title = "Sitzung abgelaufen" [portal.users] title = "Benutzer" -[portal.users.roles] -subtitle = "Jede Rolle existiert in jedem Plan — was jede Rolle tun kann, ist in der gesamten Organisation festgelegt." -title = "Rollen" - [portal.users.roles.admin] label = "Admin (Org-Inhaber)" summary = "Vollständige Steuerung über Workspace, Einstellungen und Mitglieder." @@ -9131,6 +9142,11 @@ security = "Sicherheit" telegram = "Telegram" title = "Sicherheit & Authentifizierung" +[settings.signOut] +confirm = "Möchten Sie sich wirklich abmelden?" +submit = "Abmelden" +title = "Abmelden" + [settings.team] title = "Team" @@ -9747,6 +9763,9 @@ uploadButton = "Auf Server hochladen" title = "Stirling-PDF Survey" [swagger] +clickHere = "hier klicken" +fallback = "Falls die Seite nicht automatisch geöffnet wurde," +opening = "Swagger UI wird in einem neuen Tab geöffnet..." tags = "API,Dokumentation,Swagger,Endpunkte,Entwicklung" title = "API-Dokumentation" @@ -10302,9 +10321,11 @@ title = "Attachments" [viewer.bookmarks] bookmarkTitle = "Lesezeichentitel" +bookmarkTitleRequired = "Ein Lesezeichentitel ist erforderlich" closeSidebar = "Seitenleiste für Lesezeichen schließen" collapseAll = "Alle Lesezeichen einklappen" expandAll = "Alle Lesezeichen ausklappen" +searchPlaceholder = "Lesezeichen durchsuchen" [viewer.comments] addComment = "Kommentar hinzufügen" diff --git a/frontend/editor/public/locales/el-GR/translation.toml b/frontend/editor/public/locales/el-GR/translation.toml index 8c850d6223..677b255d82 100644 --- a/frontend/editor/public/locales/el-GR/translation.toml +++ b/frontend/editor/public/locales/el-GR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Συμβάσεις" -"Financial reports" = "Οικονομικές αναφορές" -"HR records" = "Αρχεία HR" -Insurance = "Ασφάλειες" -Invoices = "Τιμολόγια" -"Legal filings" = "Νομικές καταθέσεις" -"Medical / PHI" = "Ιατρικά / PHI" -"Tax documents" = "Φορολογικά έγγραφα" - [policies.enforcement] applying = "Εφαρμογή {{names}}" applyingProgress = "Εφαρμογή {{names}} ({{done}} από {{total}})" @@ -6025,51 +6015,6 @@ notify = "Ειδοποίηση κατά τη δρομολόγηση" onViolation = "Όταν δεν συμμορφώνεται" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 έτος" -"30 days" = "30 ημέρες" -"90 days" = "90 ημέρες" -Never = "Ποτέ" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Επισήμανση για έλεγχο" -Hold = "Διατήρηση" -"Route to bucket" = "Δρομολόγηση σε bucket" - -[policies.fieldOption.destination] -Documents = "Έγγραφα" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 έτος" -"3 years" = "3 έτη" -"30 days" = "30 ημέρες" -"7 years" = "7 έτη" -Indefinite = "Επ' αόριστον" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Αυτόματη απόκρυψη PHI" -"Block export" = "Αποκλεισμός εξαγωγής" -"Flag for review" = "Επισήμανση για έλεγχο" -"Quarantine document" = "Καραντίνα εγγράφου" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Απόρριψη επικάλυψης" enforcingTitle = "Επιβολή πολιτικής..." viewAnyway = "Προβολή αρχείου (η πολιτική εξακολουθεί να επιβάλλεται)" +[policyOption] +autoRedactPhi = "Αυτόματη απόκρυψη PHI" +blockExport = "Αποκλεισμός εξαγωγής" +contracts = "Συμβάσεις" +documents = "Έγγραφα" +fedramp = "FedRAMP" +financialReports = "Οικονομικές αναφορές" +flagForReview = "Επισήμανση για έλεγχο" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Διατήρηση" +hrRecords = "Αρχεία HR" +indefinite = "Επ' αόριστον" +insurance = "Ασφάλειες" +invoices = "Τιμολόγια" +iso27001 = "ISO 27001" +legalFilings = "Νομικές καταθέσεις" +medicalPhi = "Ιατρικά / PHI" +never = "Ποτέ" +ninetyDays = "90 ημέρες" +oneYear = "1 έτος" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Καραντίνα εγγράφου" +routeToBucket = "Δρομολόγηση σε bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 έτη" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Φορολογικά έγγραφα" +thirtyDays = "30 ημέρες" +threeYears = "3 έτη" +webhook = "Webhook" + [portal] comingSoon = "Προσεχώς" @@ -8067,10 +8050,6 @@ title = "Η συνεδρία έληξε" [portal.users] title = "Χρήστες" -[portal.users.roles] -subtitle = "Κάθε ρόλος υπάρχει σε κάθε πλάνο — τι μπορεί να κάνει ο καθένας είναι σταθερό σε όλο τον οργανισμό." -title = "Ρόλοι" - [portal.users.roles.admin] label = "Διαχειριστής (Κάτοχος οργανισμού)" summary = "Πλήρης διακυβέρνηση του χώρου εργασίας, των ρυθμίσεων και των μελών." diff --git a/frontend/editor/public/locales/en-GB/translation.toml b/frontend/editor/public/locales/en-GB/translation.toml index 1e43a305e5..bdc49c4258 100644 --- a/frontend/editor/public/locales/en-GB/translation.toml +++ b/frontend/editor/public/locales/en-GB/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contracts" -"Financial reports" = "Financial reports" -"HR records" = "HR records" -Insurance = "Insurance" -Invoices = "Invoices" -"Legal filings" = "Legal filings" -"Medical / PHI" = "Medical / PHI" -"Tax documents" = "Tax documents" - [policies.enforcement] applying = "Applying {{names}}" applyingProgress = "Applying {{names}} ({{done}} of {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notify on route" onViolation = "When non-compliant" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 year" -"30 days" = "30 days" -"90 days" = "90 days" -Never = "Never" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Flag for review" -Hold = "Hold" -"Route to bucket" = "Route to bucket" - -[policies.fieldOption.destination] -Documents = "Documents" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 year" -"3 years" = "3 years" -"30 days" = "30 days" -"7 years" = "7 years" -Indefinite = "Indefinite" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Auto-redact PHI" -"Block export" = "Block export" -"Flag for review" = "Flag for review" -"Quarantine document" = "Quarantine document" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Dismiss overlay" enforcingTitle = "Enforcing policy..." viewAnyway = "View file (policy still enforcing)" +[policyOption] +autoRedactPhi = "Auto-redact PHI" +blockExport = "Block export" +contracts = "Contracts" +documents = "Documents" +fedramp = "FedRAMP" +financialReports = "Financial reports" +flagForReview = "Flag for review" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Hold" +hrRecords = "HR records" +indefinite = "Indefinite" +insurance = "Insurance" +invoices = "Invoices" +iso27001 = "ISO 27001" +legalFilings = "Legal filings" +medicalPhi = "Medical / PHI" +never = "Never" +ninetyDays = "90 days" +oneYear = "1 year" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Quarantine document" +routeToBucket = "Route to bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 years" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Tax documents" +thirtyDays = "30 days" +threeYears = "3 years" +webhook = "Webhook" + [portal] comingSoon = "Coming soon" @@ -8067,10 +8050,6 @@ title = "Session expired" [portal.users] title = "Users" -[portal.users.roles] -subtitle = "Every role exists on every plan — what each one can do is fixed across the organisation." -title = "Roles" - [portal.users.roles.admin] label = "Admin (Org owner)" summary = "Full governance over the workspace, settings and members." diff --git a/frontend/editor/public/locales/en-US/translation.toml b/frontend/editor/public/locales/en-US/translation.toml index bbd1ab66b1..59c1012144 100644 --- a/frontend/editor/public/locales/en-US/translation.toml +++ b/frontend/editor/public/locales/en-US/translation.toml @@ -356,6 +356,7 @@ text = "These permissions control what users can do with the PDF. Most effective title = "Change Permissions" [addStamp] +preview = "Preview Stamp" tags = "stamp,mark,seal,approved,rejected,confidential,stamp tool,rubber stamp,date stamp,approval stamp,received,void,copy,original" [AddStampRequest] @@ -1842,6 +1843,15 @@ export = "Export" accessDenied = "Access Denied" insufficientPermissions = "You do not have permission to perform this action." +[auth.callback] +completing = "Completing authentication" +invalidToken = "OAuth login failed - invalid token." +missingToken = "OAuth login failed - no token received." +oauthFailed = "OAuth login failed. Please try again." +pleaseWait = "Please wait while we finish signing you in." +signedOut = "You have been signed out. Please sign in again." +windowMayClose = "You can close this window once it completes." + [auth.displayName] guest = "Guest" user = "User" @@ -2824,6 +2834,7 @@ next = "Next" preview = "Preview" previous = "Previous" refresh = "Refresh" +remaining = "Remaining" retry = "Retry" save = "Save" @@ -4072,10 +4083,17 @@ discord = "Discord" issues = "GitHub" [formFill] +allSaved = "All saved" +extractCsvError = "Failed to extract CSV" +extractXlsxError = "Failed to extract XLSX" flattenAfterFilling = "Flatten after filling" +requiredAbbreviation = "req" +requiredFieldsError = "Please fill in all required fields" rescanFields = "Re-scan fields" rescanFormFields = "Re-scan form fields" save = "Save" +saveShortcut = "Ctrl+S to save" +unsavedChanges = "Unsaved changes" [formFill.sidebar] close = "Close sidebar" @@ -5016,7 +5034,21 @@ titleWithOs = "Download for {{osLabel}}" [onboarding.mfa] authenticationCode = "Authentication code" +description = "Secure your account by linking an authenticator app. Scan the QR code or enter the setup key, then confirm the 6-digit code to finish." +enable = "Enable MFA" +enableError = "Unable to enable two-factor authentication. Check the code and try again." +enterCode = "Enter the 6-digit code from your app." +enterCodeError = "Enter the authentication code to continue." +logout = "Logout" +openAuthenticator = "Open Google Authenticator, Authy, or 1Password." qrCodeLoading = "Generating your QR code…" +regenerateQrCode = "Regenerate QR code" +scanQrCode = "Scan the QR code or enter the setup key below." +setupError = "Unable to start two-factor setup. Please try again." +setupKey = "Setup key (manual entry)" +stepByStep = "Step-by-step" +success = "MFA has been enabled. You can now continue." +title = "Multi-Factor Authentication Setup" [onboarding.planOverview] adminBodyLoginDisabled = "Once you enable login mode, you can manage users, configure settings, and monitor server health. The first {{freeTierLimit}} people on your server get to use Stirling free of charge." @@ -5981,51 +6013,6 @@ successTitle = "{{names}} applied" summaryMore = "{{first}}, {{second}} and {{more}} more" summaryTwo = "{{first}} and {{second}}" -[policies.fieldOption.archiveAfter] -"1 year" = "1 year" -"30 days" = "30 days" -"90 days" = "90 days" -Never = "Never" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Flag for review" -Hold = "Hold" -"Route to bucket" = "Route to bucket" - -[policies.fieldOption.destination] -Documents = "Documents" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 year" -"3 years" = "3 years" -"30 days" = "30 days" -"7 years" = "7 years" -Indefinite = "Indefinite" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Auto-redact PHI" -"Block export" = "Block export" -"Flag for review" = "Flag for review" -"Quarantine document" = "Quarantine document" - [policies.labels] add = "Add" addPlaceholder = "Add a label…" @@ -6072,6 +6059,45 @@ dismiss = "Dismiss overlay" enforcingTitle = "Enforcing policy..." viewAnyway = "View file (policy still enforcing)" +[policyOption] +autoRedactPhi = "Auto-redact PHI" +blockExport = "Block export" +ccpa = "CCPA" +contracts = "Contracts" +documents = "Documents" +fedramp = "FedRAMP" +financialReports = "Financial reports" +flagForReview = "Flag for review" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Hold" +hrRecords = "HR records" +indefinite = "Indefinite" +insurance = "Insurance" +invoices = "Invoices" +iso27001 = "ISO 27001" +legalFilings = "Legal filings" +medicalPhi = "Medical / PHI" +never = "Never" +ninetyDays = "90 days" +oneYear = "1 year" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Quarantine document" +routeToBucket = "Route to bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 years" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Tax documents" +thirtyDays = "30 days" +threeYears = "3 years" +webhook = "Webhook" + [portal] comingSoon = "Coming soon" @@ -8120,10 +8146,6 @@ title = "Session expired" [portal.users] title = "Users" -[portal.users.roles] -subtitle = "Every role exists on every plan — what each one can do is fixed across the org." -title = "Roles" - [portal.users.roles.admin] label = "Admin (Org owner)" summary = "Full governance over the workspace, settings and members." @@ -9191,6 +9213,11 @@ security = "Security" telegram = "Telegram" title = "Security & Authentication" +[settings.signOut] +confirm = "Are you sure you want to sign out?" +submit = "Sign out" +title = "Sign out" + [settings.team] title = "Team" @@ -9807,6 +9834,9 @@ uploadButton = "Upload to Server" title = "Stirling-PDF Survey" [swagger] +clickHere = "click here" +fallback = "If it didn't open automatically," +opening = "Opening Swagger UI in a new tab..." tags = "api,documentation,swagger,endpoints,development" title = "API Documentation" @@ -10375,9 +10405,11 @@ title = "Attachments" [viewer.bookmarks] bookmarkTitle = "Bookmark title" +bookmarkTitleRequired = "Bookmark title is required" closeSidebar = "Close bookmarks sidebar" collapseAll = "Collapse all bookmarks" expandAll = "Expand all bookmarks" +searchPlaceholder = "Search bookmarks" [viewer.comments] addComment = "Add comment" diff --git a/frontend/editor/public/locales/es-ES/translation.toml b/frontend/editor/public/locales/es-ES/translation.toml index 2fbcfcc243..78d48ef9a0 100644 --- a/frontend/editor/public/locales/es-ES/translation.toml +++ b/frontend/editor/public/locales/es-ES/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contratos" -"Financial reports" = "Informes financieros" -"HR records" = "Registros de RR. HH." -Insurance = "Seguros" -Invoices = "Facturas" -"Legal filings" = "Presentaciones legales" -"Medical / PHI" = "Médico / PHI" -"Tax documents" = "Documentos fiscales" - [policies.enforcement] applying = "Aplicando {{names}}" applyingProgress = "Aplicando {{names}} ({{done}} de {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notificar al enrutar" onViolation = "Cuando no cumple" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 año" -"30 days" = "30 días" -"90 days" = "90 días" -Never = "Nunca" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marcar para revisión" -Hold = "Retener" -"Route to bucket" = "Enrutar al bucket" - -[policies.fieldOption.destination] -Documents = "Documentos" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 año" -"3 years" = "3 años" -"30 days" = "30 días" -"7 years" = "7 años" -Indefinite = "Indefinido" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Censurar PHI automáticamente" -"Block export" = "Bloquear exportación" -"Flag for review" = "Marcar para revisión" -"Quarantine document" = "Poner documento en cuarentena" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Descartar superposición" enforcingTitle = "Aplicando política..." viewAnyway = "Ver archivo (la política aún se está aplicando)" +[policyOption] +autoRedactPhi = "Censurar PHI automáticamente" +blockExport = "Bloquear exportación" +contracts = "Contratos" +documents = "Documentos" +fedramp = "FedRAMP" +financialReports = "Informes financieros" +flagForReview = "Marcar para revisión" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Retener" +hrRecords = "Registros de RR. HH." +indefinite = "Indefinido" +insurance = "Seguros" +invoices = "Facturas" +iso27001 = "ISO 27001" +legalFilings = "Presentaciones legales" +medicalPhi = "Médico / PHI" +never = "Nunca" +ninetyDays = "90 días" +oneYear = "1 año" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Poner documento en cuarentena" +routeToBucket = "Enrutar al bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 años" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documentos fiscales" +thirtyDays = "30 días" +threeYears = "3 años" +webhook = "Webhook" + [portal] comingSoon = "Próximamente" @@ -8067,10 +8050,6 @@ title = "Sesión caducada" [portal.users] title = "Usuarios" -[portal.users.roles] -subtitle = "Cada rol existe en todos los planes — lo que cada uno puede hacer es fijo en toda la organización." -title = "Roles" - [portal.users.roles.admin] label = "Admin (propietario de la org)" summary = "Gobierno completo sobre el espacio de trabajo, los ajustes y los miembros." diff --git a/frontend/editor/public/locales/eu-ES/translation.toml b/frontend/editor/public/locales/eu-ES/translation.toml index 1742663607..666886a8c7 100644 --- a/frontend/editor/public/locales/eu-ES/translation.toml +++ b/frontend/editor/public/locales/eu-ES/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Kontratuak" -"Financial reports" = "Finantza-txostenak" -"HR records" = "Giza baliabideen erregistroak" -Insurance = "Aseguruak" -Invoices = "Fakturak" -"Legal filings" = "Legezko aurkezpenak" -"Medical / PHI" = "Medikua / PHI" -"Tax documents" = "Zerga-dokumentuak" - [policies.enforcement] applying = "{{names}} aplikatzen" applyingProgress = "{{names}} aplikatzen ({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "Jakinarazi bideratzean" onViolation = "Betetzen ez denean" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 urte" -"30 days" = "30 egun" -"90 days" = "90 egun" -Never = "Inoiz ez" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Markatu berrikusteko" -Hold = "Eutsi" -"Route to bucket" = "Bideratu bucket-era" - -[policies.fieldOption.destination] -Documents = "Dokumentuak" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 urte" -"3 years" = "3 urte" -"30 days" = "30 egun" -"7 years" = "7 urte" -Indefinite = "Mugagabe" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automatikoki ezkutatu PHI" -"Block export" = "Blokeatu esportazioa" -"Flag for review" = "Markatu berrikusteko" -"Quarantine document" = "Jarri dokumentua berrogeialdian" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Baztertu gainjartzea" enforcingTitle = "Politika betearazten..." viewAnyway = "Ikusi fitxategia (politika oraindik betearazten ari da)" +[policyOption] +autoRedactPhi = "Automatikoki ezkutatu PHI" +blockExport = "Blokeatu esportazioa" +contracts = "Kontratuak" +documents = "Dokumentuak" +fedramp = "FedRAMP" +financialReports = "Finantza-txostenak" +flagForReview = "Markatu berrikusteko" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Eutsi" +hrRecords = "Giza baliabideen erregistroak" +indefinite = "Mugagabe" +insurance = "Aseguruak" +invoices = "Fakturak" +iso27001 = "ISO 27001" +legalFilings = "Legezko aurkezpenak" +medicalPhi = "Medikua / PHI" +never = "Inoiz ez" +ninetyDays = "90 egun" +oneYear = "1 urte" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Jarri dokumentua berrogeialdian" +routeToBucket = "Bideratu bucket-era" +s3Bucket = "S3 bucket" +sevenYears = "7 urte" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Zerga-dokumentuak" +thirtyDays = "30 egun" +threeYears = "3 urte" +webhook = "Webhook" + [portal] comingSoon = "Laster" @@ -8067,10 +8050,6 @@ title = "Saioa iraungi da" [portal.users] title = "Erabiltzaileak" -[portal.users.roles] -subtitle = "Rol guztiak plan guztietan daude — bakoitzak egin dezakeena finkoa da erakunde osoan." -title = "Rolak" - [portal.users.roles.admin] label = "Admin (erakundearen jabea)" summary = "Lan-eremuaren, ezarpenen eta kideen gaineko gobernantza osoa." diff --git a/frontend/editor/public/locales/fa-IR/translation.toml b/frontend/editor/public/locales/fa-IR/translation.toml index ce465bf21f..b6e4d4903d 100644 --- a/frontend/editor/public/locales/fa-IR/translation.toml +++ b/frontend/editor/public/locales/fa-IR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "قراردادها" -"Financial reports" = "گزارش‌های مالی" -"HR records" = "سوابق منابع انسانی" -Insurance = "بیمه" -Invoices = "فاکتورها" -"Legal filings" = "پرونده‌های حقوقی" -"Medical / PHI" = "پزشکی / PHI" -"Tax documents" = "اسناد مالیاتی" - [policies.enforcement] applying = "در حال اعمال {{names}}" applyingProgress = "در حال اعمال {{names}} ({{done}} از {{total}})" @@ -6025,51 +6015,6 @@ notify = "اعلان هنگام مسیریابی" onViolation = "هنگام عدم انطباق" webhookUrl = "URL Webhook" -[policies.fieldOption.archiveAfter] -"1 year" = "۱ سال" -"30 days" = "۳۰ روز" -"90 days" = "۹۰ روز" -Never = "هرگز" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "علامت‌گذاری برای بازبینی" -Hold = "نگه داشتن" -"Route to bucket" = "مسیریابی به bucket" - -[policies.fieldOption.destination] -Documents = "اسناد" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "۱ سال" -"3 years" = "۳ سال" -"30 days" = "۳۰ روز" -"7 years" = "۷ سال" -Indefinite = "نامحدود" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "حذف خودکار PHI" -"Block export" = "مسدود کردن خروجی" -"Flag for review" = "علامت‌گذاری برای بازبینی" -"Quarantine document" = "قرنطینه کردن سند" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "بستن پوشش" enforcingTitle = "در حال اعمال خط‌مشی..." viewAnyway = "مشاهده فایل (خط‌مشی همچنان در حال اعمال است)" +[policyOption] +autoRedactPhi = "حذف خودکار PHI" +blockExport = "مسدود کردن خروجی" +contracts = "قراردادها" +documents = "اسناد" +fedramp = "FedRAMP" +financialReports = "گزارش‌های مالی" +flagForReview = "علامت‌گذاری برای بازبینی" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "نگه داشتن" +hrRecords = "سوابق منابع انسانی" +indefinite = "نامحدود" +insurance = "بیمه" +invoices = "فاکتورها" +iso27001 = "ISO 27001" +legalFilings = "پرونده‌های حقوقی" +medicalPhi = "پزشکی / PHI" +never = "هرگز" +ninetyDays = "۹۰ روز" +oneYear = "۱ سال" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "قرنطینه کردن سند" +routeToBucket = "مسیریابی به bucket" +s3Bucket = "S3 bucket" +sevenYears = "۷ سال" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "اسناد مالیاتی" +thirtyDays = "۳۰ روز" +threeYears = "۳ سال" +webhook = "Webhook" + [portal] comingSoon = "به‌زودی" @@ -8067,10 +8050,6 @@ title = "نشست منقضی شد" [portal.users] title = "کاربران" -[portal.users.roles] -subtitle = "هر نقش در هر طرح وجود دارد — کاری که هر نقش می‌تواند انجام دهد در کل سازمان ثابت است." -title = "نقش‌ها" - [portal.users.roles.admin] label = "مدیر (مالک سازمان)" summary = "حاکمیت کامل بر فضای کاری، تنظیمات و اعضا." diff --git a/frontend/editor/public/locales/fr-FR/translation.toml b/frontend/editor/public/locales/fr-FR/translation.toml index dff0ff30c4..9292811eac 100644 --- a/frontend/editor/public/locales/fr-FR/translation.toml +++ b/frontend/editor/public/locales/fr-FR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contrats" -"Financial reports" = "Rapports financiers" -"HR records" = "Dossiers RH" -Insurance = "Assurance" -Invoices = "Factures" -"Legal filings" = "Dépôts juridiques" -"Medical / PHI" = "Médical / PHI" -"Tax documents" = "Documents fiscaux" - [policies.enforcement] applying = "Application de {{names}}" applyingProgress = "Application de {{names}} ({{done}} sur {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notifier lors du routage" onViolation = "En cas de non-conformité" webhookUrl = "URL du webhook" -[policies.fieldOption.archiveAfter] -"1 year" = "1 an" -"30 days" = "30 jours" -"90 days" = "90 jours" -Never = "Jamais" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marquer pour examen" -Hold = "Mettre en attente" -"Route to bucket" = "Acheminer vers le bucket" - -[policies.fieldOption.destination] -Documents = "Documents" -"S3 bucket" = "Bucket S3" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 an" -"3 years" = "3 ans" -"30 days" = "30 jours" -"7 years" = "7 ans" -Indefinite = "Indéfiniment" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Masquer automatiquement les PHI" -"Block export" = "Bloquer l’exportation" -"Flag for review" = "Marquer pour examen" -"Quarantine document" = "Mettre le document en quarantaine" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Fermer la superposition" enforcingTitle = "Application de la politique..." viewAnyway = "Voir le fichier (politique toujours en cours d’application)" +[policyOption] +autoRedactPhi = "Masquer automatiquement les PHI" +blockExport = "Bloquer l’exportation" +contracts = "Contrats" +documents = "Documents" +fedramp = "FedRAMP" +financialReports = "Rapports financiers" +flagForReview = "Marquer pour examen" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Mettre en attente" +hrRecords = "Dossiers RH" +indefinite = "Indéfiniment" +insurance = "Assurance" +invoices = "Factures" +iso27001 = "ISO 27001" +legalFilings = "Dépôts juridiques" +medicalPhi = "Médical / PHI" +never = "Jamais" +ninetyDays = "90 jours" +oneYear = "1 an" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Mettre le document en quarantaine" +routeToBucket = "Acheminer vers le bucket" +s3Bucket = "Bucket S3" +sevenYears = "7 ans" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documents fiscaux" +thirtyDays = "30 jours" +threeYears = "3 ans" +webhook = "Webhook" + [portal] comingSoon = "Bientôt disponible" @@ -8067,10 +8050,6 @@ title = "Session expirée" [portal.users] title = "Utilisateurs" -[portal.users.roles] -subtitle = "Chaque rôle existe sur chaque plan — ce que chacun peut faire est fixe dans toute l’organisation." -title = "Rôles" - [portal.users.roles.admin] label = "Admin (propriétaire de l’organisation)" summary = "Gouvernance complète de l’espace de travail, des paramètres et des membres." diff --git a/frontend/editor/public/locales/ga-IE/translation.toml b/frontend/editor/public/locales/ga-IE/translation.toml index d44eee53e3..39370baa7e 100644 --- a/frontend/editor/public/locales/ga-IE/translation.toml +++ b/frontend/editor/public/locales/ga-IE/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Conarthaí" -"Financial reports" = "Tuarascálacha airgeadais" -"HR records" = "Taifid AD" -Insurance = "Árachas" -Invoices = "Sonraisc" -"Legal filings" = "Comhdúcháin dlí" -"Medical / PHI" = "Leighis / PHI" -"Tax documents" = "Doiciméid chánach" - [policies.enforcement] applying = "Á chur {{names}} i bhfeidhm" applyingProgress = "Á chur {{names}} i bhfeidhm ({{done}} as {{total}})" @@ -6025,51 +6015,6 @@ notify = "Cuir ar an eolas ar ródú" onViolation = "Nuair nach bhfuil sé comhlíontach" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 bhliain" -"30 days" = "30 lá" -"90 days" = "90 lá" -Never = "Riamh" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marcáil le hathbhreithniú" -Hold = "Coinnigh" -"Route to bucket" = "Ródaigh chuig bucket" - -[policies.fieldOption.destination] -Documents = "Doiciméid" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 bhliain" -"3 years" = "3 bliana" -"30 days" = "30 lá" -"7 years" = "7 mbliana" -Indefinite = "Gan teorainn" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Ceil PHI go huathoibríoch" -"Block export" = "Blocáil easpórtáil" -"Flag for review" = "Marcáil le hathbhreithniú" -"Quarantine document" = "Cuir doiciméad i gcoraintín" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Dún forleagan" enforcingTitle = "Polasaí á chur i bhfeidhm..." viewAnyway = "Amharc ar chomhad (polasaí fós á chur i bhfeidhm)" +[policyOption] +autoRedactPhi = "Ceil PHI go huathoibríoch" +blockExport = "Blocáil easpórtáil" +contracts = "Conarthaí" +documents = "Doiciméid" +fedramp = "FedRAMP" +financialReports = "Tuarascálacha airgeadais" +flagForReview = "Marcáil le hathbhreithniú" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Coinnigh" +hrRecords = "Taifid AD" +indefinite = "Gan teorainn" +insurance = "Árachas" +invoices = "Sonraisc" +iso27001 = "ISO 27001" +legalFilings = "Comhdúcháin dlí" +medicalPhi = "Leighis / PHI" +never = "Riamh" +ninetyDays = "90 lá" +oneYear = "1 bhliain" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Cuir doiciméad i gcoraintín" +routeToBucket = "Ródaigh chuig bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 mbliana" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Doiciméid chánach" +thirtyDays = "30 lá" +threeYears = "3 bliana" +webhook = "Webhook" + [portal] comingSoon = "Ag teacht go luath" @@ -8067,10 +8050,6 @@ title = "Seisiún imithe in éag" [portal.users] title = "Úsáideoirí" -[portal.users.roles] -subtitle = "Tá gach ról ann ar gach plean — tá an méid is féidir le gach ceann a dhéanamh socraithe ar fud na heagraíochta." -title = "Róil" - [portal.users.roles.admin] label = "Riarachán (Úinéir eagraíochta)" summary = "Rialachas iomlán ar an spás oibre, socruithe agus baill." diff --git a/frontend/editor/public/locales/hi-IN/translation.toml b/frontend/editor/public/locales/hi-IN/translation.toml index 5baffccd4a..769ceacdb4 100644 --- a/frontend/editor/public/locales/hi-IN/translation.toml +++ b/frontend/editor/public/locales/hi-IN/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "अनुबंध" -"Financial reports" = "वित्तीय रिपोर्ट" -"HR records" = "HR रिकॉर्ड" -Insurance = "बीमा" -Invoices = "इनवॉइस" -"Legal filings" = "कानूनी फ़ाइलिंग" -"Medical / PHI" = "मेडिकल / PHI" -"Tax documents" = "कर दस्तावेज़" - [policies.enforcement] applying = "{{names}} लागू किए जा रहे हैं" applyingProgress = "{{names}} लागू किए जा रहे हैं ({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "रूट पर सूचित करें" onViolation = "अनुपालन न होने पर" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 वर्ष" -"30 days" = "30 दिन" -"90 days" = "90 दिन" -Never = "कभी नहीं" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "समीक्षा के लिए फ़्लैग करें" -Hold = "होल्ड करें" -"Route to bucket" = "बकेट में रूट करें" - -[policies.fieldOption.destination] -Documents = "दस्तावेज़" -"S3 bucket" = "S3 बकेट" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 वर्ष" -"3 years" = "3 वर्ष" -"30 days" = "30 दिन" -"7 years" = "7 वर्ष" -Indefinite = "अनिश्चित काल" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI को अपने-आप redact करें" -"Block export" = "export ब्लॉक करें" -"Flag for review" = "समीक्षा के लिए फ़्लैग करें" -"Quarantine document" = "दस्तावेज़ को क्वारंटीन करें" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "ओवरले हटाएँ" enforcingTitle = "policy लागू हो रही है..." viewAnyway = "फ़ाइल देखें (policy अभी भी लागू हो रही है)" +[policyOption] +autoRedactPhi = "PHI को अपने-आप redact करें" +blockExport = "export ब्लॉक करें" +contracts = "अनुबंध" +documents = "दस्तावेज़" +fedramp = "FedRAMP" +financialReports = "वित्तीय रिपोर्ट" +flagForReview = "समीक्षा के लिए फ़्लैग करें" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "होल्ड करें" +hrRecords = "HR रिकॉर्ड" +indefinite = "अनिश्चित काल" +insurance = "बीमा" +invoices = "इनवॉइस" +iso27001 = "ISO 27001" +legalFilings = "कानूनी फ़ाइलिंग" +medicalPhi = "मेडिकल / PHI" +never = "कभी नहीं" +ninetyDays = "90 दिन" +oneYear = "1 वर्ष" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "दस्तावेज़ को क्वारंटीन करें" +routeToBucket = "बकेट में रूट करें" +s3Bucket = "S3 बकेट" +sevenYears = "7 वर्ष" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "कर दस्तावेज़" +thirtyDays = "30 दिन" +threeYears = "3 वर्ष" +webhook = "Webhook" + [portal] comingSoon = "जल्द आ रहा है" @@ -8067,10 +8050,6 @@ title = "Session समाप्त" [portal.users] title = "उपयोगकर्ता" -[portal.users.roles] -subtitle = "हर role हर plan पर मौजूद है — प्रत्येक क्या कर सकता है, यह org में fixed है।" -title = "Roles" - [portal.users.roles.admin] label = "Admin (Org owner)" summary = "Workspace, settings और members पर पूर्ण governance।" diff --git a/frontend/editor/public/locales/hr-HR/translation.toml b/frontend/editor/public/locales/hr-HR/translation.toml index bd1fa92372..75df8b6e28 100644 --- a/frontend/editor/public/locales/hr-HR/translation.toml +++ b/frontend/editor/public/locales/hr-HR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Ugovori" -"Financial reports" = "Financijska izvješća" -"HR records" = "HR evidencija" -Insurance = "Osiguranje" -Invoices = "Računi" -"Legal filings" = "Pravni podnesci" -"Medical / PHI" = "Medicinski / PHI" -"Tax documents" = "Porezni dokumenti" - [policies.enforcement] applying = "Primjenjuje se {{names}}" applyingProgress = "Primjenjuje se {{names}} ({{done}} od {{total}})" @@ -6025,51 +6015,6 @@ notify = "Obavijesti pri usmjeravanju" onViolation = "Kada nije usklađeno" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 godina" -"30 days" = "30 dana" -"90 days" = "90 dana" -Never = "Nikad" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Označi za pregled" -Hold = "Zadrži" -"Route to bucket" = "Usmjeri u bucket" - -[policies.fieldOption.destination] -Documents = "Dokumenti" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 godina" -"3 years" = "3 godine" -"30 days" = "30 dana" -"7 years" = "7 godina" -Indefinite = "Neograničeno" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automatski redigiraj PHI" -"Block export" = "Blokiraj izvoz" -"Flag for review" = "Označi za pregled" -"Quarantine document" = "Stavi dokument u karantenu" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Zatvori preklapanje" enforcingTitle = "Primjena pravila..." viewAnyway = "Prikaži datoteku (pravilo se još primjenjuje)" +[policyOption] +autoRedactPhi = "Automatski redigiraj PHI" +blockExport = "Blokiraj izvoz" +contracts = "Ugovori" +documents = "Dokumenti" +fedramp = "FedRAMP" +financialReports = "Financijska izvješća" +flagForReview = "Označi za pregled" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Zadrži" +hrRecords = "HR evidencija" +indefinite = "Neograničeno" +insurance = "Osiguranje" +invoices = "Računi" +iso27001 = "ISO 27001" +legalFilings = "Pravni podnesci" +medicalPhi = "Medicinski / PHI" +never = "Nikad" +ninetyDays = "90 dana" +oneYear = "1 godina" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Stavi dokument u karantenu" +routeToBucket = "Usmjeri u bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 godina" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Porezni dokumenti" +thirtyDays = "30 dana" +threeYears = "3 godine" +webhook = "Webhook" + [portal] comingSoon = "Uskoro" @@ -8067,10 +8050,6 @@ title = "Sesija je istekla" [portal.users] title = "Korisnici" -[portal.users.roles] -subtitle = "Svaka uloga postoji na svakom planu — što svaka može raditi fiksno je na razini organizacije." -title = "Uloge" - [portal.users.roles.admin] label = "Admin (vlasnik organizacije)" summary = "Potpuno upravljanje radnim prostorom, postavkama i članovima." diff --git a/frontend/editor/public/locales/hu-HU/translation.toml b/frontend/editor/public/locales/hu-HU/translation.toml index 14e56d4467..de318db739 100644 --- a/frontend/editor/public/locales/hu-HU/translation.toml +++ b/frontend/editor/public/locales/hu-HU/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Szerződések" -"Financial reports" = "Pénzügyi jelentések" -"HR records" = "HR nyilvántartások" -Insurance = "Biztosítás" -Invoices = "Számlák" -"Legal filings" = "Jogi beadványok" -"Medical / PHI" = "Orvosi / PHI" -"Tax documents" = "Adóügyi dokumentumok" - [policies.enforcement] applying = "A(z) {{names}} alkalmazása" applyingProgress = "A(z) {{names}} alkalmazása ({{done}} / {{total}})" @@ -6025,51 +6015,6 @@ notify = "Értesítés útvonalon" onViolation = "Ha nem megfelelő" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 év" -"30 days" = "30 nap" -"90 days" = "90 nap" -Never = "Soha" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Megjelölés felülvizsgálatra" -Hold = "Visszatartás" -"Route to bucket" = "Továbbítás bucketbe" - -[policies.fieldOption.destination] -Documents = "Dokumentumok" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 év" -"3 years" = "3 év" -"30 days" = "30 nap" -"7 years" = "7 év" -Indefinite = "Határozatlan ideig" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI automatikus kitakarása" -"Block export" = "Exportálás blokkolása" -"Flag for review" = "Megjelölés felülvizsgálatra" -"Quarantine document" = "Dokumentum karanténba helyezése" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Átfedés elvetése" enforcingTitle = "Szabályzat érvényesítése..." viewAnyway = "Fájl megtekintése (a szabályzat érvényesítése még tart)" +[policyOption] +autoRedactPhi = "PHI automatikus kitakarása" +blockExport = "Exportálás blokkolása" +contracts = "Szerződések" +documents = "Dokumentumok" +fedramp = "FedRAMP" +financialReports = "Pénzügyi jelentések" +flagForReview = "Megjelölés felülvizsgálatra" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Visszatartás" +hrRecords = "HR nyilvántartások" +indefinite = "Határozatlan ideig" +insurance = "Biztosítás" +invoices = "Számlák" +iso27001 = "ISO 27001" +legalFilings = "Jogi beadványok" +medicalPhi = "Orvosi / PHI" +never = "Soha" +ninetyDays = "90 nap" +oneYear = "1 év" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Dokumentum karanténba helyezése" +routeToBucket = "Továbbítás bucketbe" +s3Bucket = "S3 bucket" +sevenYears = "7 év" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Adóügyi dokumentumok" +thirtyDays = "30 nap" +threeYears = "3 év" +webhook = "Webhook" + [portal] comingSoon = "Hamarosan" @@ -8067,10 +8050,6 @@ title = "Munkamenet lejárt" [portal.users] title = "Felhasználók" -[portal.users.roles] -subtitle = "Minden szerepkör minden csomagban létezik — az, hogy melyik mit tehet, szervezetszerte rögzített." -title = "Szerepkörök" - [portal.users.roles.admin] label = "Admin (szervezettulajdonos)" summary = "Teljes irányítás a munkaterület, beállítások és tagok felett." diff --git a/frontend/editor/public/locales/id-ID/translation.toml b/frontend/editor/public/locales/id-ID/translation.toml index efcb1e5f28..d25a0eb816 100644 --- a/frontend/editor/public/locales/id-ID/translation.toml +++ b/frontend/editor/public/locales/id-ID/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Kontrak" -"Financial reports" = "Laporan keuangan" -"HR records" = "Catatan HR" -Insurance = "Asuransi" -Invoices = "Faktur" -"Legal filings" = "Pengajuan hukum" -"Medical / PHI" = "Medis / PHI" -"Tax documents" = "Dokumen pajak" - [policies.enforcement] applying = "Menerapkan {{names}}" applyingProgress = "Menerapkan {{names}} ({{done}} dari {{total}})" @@ -6025,51 +6015,6 @@ notify = "Beri tahu saat dirutekan" onViolation = "Saat tidak patuh" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 tahun" -"30 days" = "30 hari" -"90 days" = "90 hari" -Never = "Tidak pernah" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Tandai untuk ditinjau" -Hold = "Tahan" -"Route to bucket" = "Rutekan ke bucket" - -[policies.fieldOption.destination] -Documents = "Dokumen" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 tahun" -"3 years" = "3 tahun" -"30 days" = "30 hari" -"7 years" = "7 tahun" -Indefinite = "Tanpa batas" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Redaksi otomatis PHI" -"Block export" = "Blokir ekspor" -"Flag for review" = "Tandai untuk ditinjau" -"Quarantine document" = "Karantina dokumen" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Tutup overlay" enforcingTitle = "Menerapkan kebijakan..." viewAnyway = "Lihat file (kebijakan masih diterapkan)" +[policyOption] +autoRedactPhi = "Redaksi otomatis PHI" +blockExport = "Blokir ekspor" +contracts = "Kontrak" +documents = "Dokumen" +fedramp = "FedRAMP" +financialReports = "Laporan keuangan" +flagForReview = "Tandai untuk ditinjau" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Tahan" +hrRecords = "Catatan HR" +indefinite = "Tanpa batas" +insurance = "Asuransi" +invoices = "Faktur" +iso27001 = "ISO 27001" +legalFilings = "Pengajuan hukum" +medicalPhi = "Medis / PHI" +never = "Tidak pernah" +ninetyDays = "90 hari" +oneYear = "1 tahun" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Karantina dokumen" +routeToBucket = "Rutekan ke bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 tahun" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Dokumen pajak" +thirtyDays = "30 hari" +threeYears = "3 tahun" +webhook = "Webhook" + [portal] comingSoon = "Segera hadir" @@ -8067,10 +8050,6 @@ title = "Sesi kedaluwarsa" [portal.users] title = "Pengguna" -[portal.users.roles] -subtitle = "Setiap peran ada di setiap paket — apa yang dapat dilakukan masing-masing tetap di seluruh org." -title = "Peran" - [portal.users.roles.admin] label = "Admin (Pemilik org)" summary = "Tata kelola penuh atas workspace, pengaturan, dan anggota." diff --git a/frontend/editor/public/locales/it-IT/translation.toml b/frontend/editor/public/locales/it-IT/translation.toml index e86508ef96..4806e5c5e2 100644 --- a/frontend/editor/public/locales/it-IT/translation.toml +++ b/frontend/editor/public/locales/it-IT/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contratti" -"Financial reports" = "Report finanziari" -"HR records" = "Record HR" -Insurance = "Assicurazione" -Invoices = "Fatture" -"Legal filings" = "Depositi legali" -"Medical / PHI" = "Medico / PHI" -"Tax documents" = "Documenti fiscali" - [policies.enforcement] applying = "Applicazione di {{names}}" applyingProgress = "Applicazione di {{names}} ({{done}} di {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notifica su instradamento" onViolation = "Quando non conforme" webhookUrl = "URL webhook" -[policies.fieldOption.archiveAfter] -"1 year" = "1 anno" -"30 days" = "30 giorni" -"90 days" = "90 giorni" -Never = "Mai" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Segnala per revisione" -Hold = "Trattieni" -"Route to bucket" = "Instrada al bucket" - -[policies.fieldOption.destination] -Documents = "Documenti" -"S3 bucket" = "Bucket S3" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 anno" -"3 years" = "3 anni" -"30 days" = "30 giorni" -"7 years" = "7 anni" -Indefinite = "A tempo indeterminato" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Oscura automaticamente PHI" -"Block export" = "Blocca esportazione" -"Flag for review" = "Segnala per revisione" -"Quarantine document" = "Metti documento in quarantena" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Chiudi overlay" enforcingTitle = "Applicazione criterio in corso..." viewAnyway = "Visualizza file (criterio ancora in applicazione)" +[policyOption] +autoRedactPhi = "Oscura automaticamente PHI" +blockExport = "Blocca esportazione" +contracts = "Contratti" +documents = "Documenti" +fedramp = "FedRAMP" +financialReports = "Report finanziari" +flagForReview = "Segnala per revisione" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Trattieni" +hrRecords = "Record HR" +indefinite = "A tempo indeterminato" +insurance = "Assicurazione" +invoices = "Fatture" +iso27001 = "ISO 27001" +legalFilings = "Depositi legali" +medicalPhi = "Medico / PHI" +never = "Mai" +ninetyDays = "90 giorni" +oneYear = "1 anno" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Metti documento in quarantena" +routeToBucket = "Instrada al bucket" +s3Bucket = "Bucket S3" +sevenYears = "7 anni" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documenti fiscali" +thirtyDays = "30 giorni" +threeYears = "3 anni" +webhook = "Webhook" + [portal] comingSoon = "Disponibile a breve" @@ -8067,10 +8050,6 @@ title = "Sessione scaduta" [portal.users] title = "Utenti" -[portal.users.roles] -subtitle = "Ogni ruolo esiste su ogni piano — ciò che ciascuno può fare è fisso in tutta l'organizzazione." -title = "Ruoli" - [portal.users.roles.admin] label = "Admin (proprietario org)" summary = "Governance completa su workspace, impostazioni e membri." diff --git a/frontend/editor/public/locales/ja-JP/translation.toml b/frontend/editor/public/locales/ja-JP/translation.toml index 2474e53c75..843f2c055c 100644 --- a/frontend/editor/public/locales/ja-JP/translation.toml +++ b/frontend/editor/public/locales/ja-JP/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "契約書" -"Financial reports" = "財務報告書" -"HR records" = "人事記録" -Insurance = "保険" -Invoices = "請求書" -"Legal filings" = "法的提出書類" -"Medical / PHI" = "医療 / PHI" -"Tax documents" = "税務書類" - [policies.enforcement] applying = "{{names}} を適用中" applyingProgress = "{{names}} を適用中({{total}} 中 {{done}})" @@ -6025,51 +6015,6 @@ notify = "ルート時に通知" onViolation = "非準拠時" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1年" -"30 days" = "30日" -"90 days" = "90日" -Never = "なし" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "レビュー用にフラグ付け" -Hold = "保留" -"Route to bucket" = "バケットへルーティング" - -[policies.fieldOption.destination] -Documents = "ドキュメント" -"S3 bucket" = "S3 バケット" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1年" -"3 years" = "3年" -"30 days" = "30日" -"7 years" = "7年" -Indefinite = "無期限" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHIを自動墨消し" -"Block export" = "エクスポートをブロック" -"Flag for review" = "レビュー用にフラグ付け" -"Quarantine document" = "ドキュメントを隔離" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "オーバーレイを閉じる" enforcingTitle = "ポリシーを適用中..." viewAnyway = "ファイルを表示(ポリシーはまだ適用中)" +[policyOption] +autoRedactPhi = "PHIを自動墨消し" +blockExport = "エクスポートをブロック" +contracts = "契約書" +documents = "ドキュメント" +fedramp = "FedRAMP" +financialReports = "財務報告書" +flagForReview = "レビュー用にフラグ付け" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "保留" +hrRecords = "人事記録" +indefinite = "無期限" +insurance = "保険" +invoices = "請求書" +iso27001 = "ISO 27001" +legalFilings = "法的提出書類" +medicalPhi = "医療 / PHI" +never = "なし" +ninetyDays = "90日" +oneYear = "1年" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "ドキュメントを隔離" +routeToBucket = "バケットへルーティング" +s3Bucket = "S3 バケット" +sevenYears = "7年" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "税務書類" +thirtyDays = "30日" +threeYears = "3年" +webhook = "Webhook" + [portal] comingSoon = "近日公開" @@ -8067,10 +8050,6 @@ title = "セッションの期限切れ" [portal.users] title = "ユーザー" -[portal.users.roles] -subtitle = "すべてのロールはすべてのプランに存在し、各ロールでできることは組織全体で固定されています。" -title = "ロール" - [portal.users.roles.admin] label = "管理者(組織オーナー)" summary = "ワークスペース、設定、メンバーを完全に管理できます。" diff --git a/frontend/editor/public/locales/ko-KR/translation.toml b/frontend/editor/public/locales/ko-KR/translation.toml index ee1bdd91fa..8eeebf1f47 100644 --- a/frontend/editor/public/locales/ko-KR/translation.toml +++ b/frontend/editor/public/locales/ko-KR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "계약서" -"Financial reports" = "재무 보고서" -"HR records" = "HR 기록" -Insurance = "보험" -Invoices = "송장" -"Legal filings" = "법적 제출 서류" -"Medical / PHI" = "의료 / PHI" -"Tax documents" = "세금 문서" - [policies.enforcement] applying = "{{names}} 적용 중" applyingProgress = "{{names}} 적용 중 ({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "라우팅 시 알림" onViolation = "비준수 시" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1년" -"30 days" = "30일" -"90 days" = "90일" -Never = "안 함" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "검토 대상으로 표시" -Hold = "보류" -"Route to bucket" = "버킷으로 라우팅" - -[policies.fieldOption.destination] -Documents = "문서" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1년" -"3 years" = "3년" -"30 days" = "30일" -"7 years" = "7년" -Indefinite = "무기한" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI 자동 수정" -"Block export" = "내보내기 차단" -"Flag for review" = "검토 대상으로 표시" -"Quarantine document" = "문서 격리" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "오버레이 닫기" enforcingTitle = "정책 적용 중..." viewAnyway = "파일 보기(정책은 계속 적용 중)" +[policyOption] +autoRedactPhi = "PHI 자동 수정" +blockExport = "내보내기 차단" +contracts = "계약서" +documents = "문서" +fedramp = "FedRAMP" +financialReports = "재무 보고서" +flagForReview = "검토 대상으로 표시" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "보류" +hrRecords = "HR 기록" +indefinite = "무기한" +insurance = "보험" +invoices = "송장" +iso27001 = "ISO 27001" +legalFilings = "법적 제출 서류" +medicalPhi = "의료 / PHI" +never = "안 함" +ninetyDays = "90일" +oneYear = "1년" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "문서 격리" +routeToBucket = "버킷으로 라우팅" +s3Bucket = "S3 bucket" +sevenYears = "7년" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "세금 문서" +thirtyDays = "30일" +threeYears = "3년" +webhook = "Webhook" + [portal] comingSoon = "곧 제공 예정" @@ -8067,10 +8050,6 @@ title = "세션 만료됨" [portal.users] title = "사용자" -[portal.users.roles] -subtitle = "모든 역할은 모든 플랜에 존재하며, 각 역할이 할 수 있는 일은 조직 전체에서 고정되어 있습니다." -title = "역할" - [portal.users.roles.admin] label = "관리자(조직 소유자)" summary = "워크스페이스, 설정 및 구성원에 대한 전체 거버넌스." diff --git a/frontend/editor/public/locales/ml-ML/translation.toml b/frontend/editor/public/locales/ml-ML/translation.toml index 648f8655f3..a9b9bab959 100644 --- a/frontend/editor/public/locales/ml-ML/translation.toml +++ b/frontend/editor/public/locales/ml-ML/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "കരാറുകൾ" -"Financial reports" = "സാമ്പത്തിക റിപ്പോർട്ടുകൾ" -"HR records" = "HR രേഖകൾ" -Insurance = "ഇൻഷുറൻസ്" -Invoices = "ഇൻവോയിസുകൾ" -"Legal filings" = "നിയമ ഫയലിംഗുകൾ" -"Medical / PHI" = "മെഡിക്കൽ / PHI" -"Tax documents" = "നികുതി രേഖകൾ" - [policies.enforcement] applying = "പ്രാബല്യപ്പെടുത്തുന്നു {{names}}" applyingProgress = "പ്രാബല്യപ്പെടുത്തുന്നു {{names}} ({{total}} ൽ {{done}})" @@ -6025,51 +6015,6 @@ notify = "റൂട്ടിൽ അറിയിക്കുക" onViolation = "അനുസരണക്കേട് ഉണ്ടായാൽ" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 വർഷം" -"30 days" = "30 ദിവസം" -"90 days" = "90 ദിവസം" -Never = "ഒരിക്കലും ഇല്ല" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "അവലോകനത്തിനായി അടയാളപ്പെടുത്തുക" -Hold = "ഹോൾഡ് ചെയ്യുക" -"Route to bucket" = "ബക്കറ്റിലേക്ക് റൂട്ട് ചെയ്യുക" - -[policies.fieldOption.destination] -Documents = "രേഖകൾ" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 വർഷം" -"3 years" = "3 വർഷം" -"30 days" = "30 ദിവസം" -"7 years" = "7 വർഷം" -Indefinite = "അനിശ്ചിതകാലം" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI സ്വയമേവ റിഡാക്റ്റ് ചെയ്യുക" -"Block export" = "എക്സ്പോർട്ട് തടയുക" -"Flag for review" = "അവലോകനത്തിനായി അടയാളപ്പെടുത്തുക" -"Quarantine document" = "രേഖ ക്വാറന്റൈനിൽ ഇടുക" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "ഓവർലേ നിരസിക്കുക" enforcingTitle = "നയം നടപ്പിലാക്കുന്നു..." viewAnyway = "ഫയൽ കാണുക (നയം ഇപ്പോഴും നടപ്പിലാക്കുന്നു)" +[policyOption] +autoRedactPhi = "PHI സ്വയമേവ റിഡാക്റ്റ് ചെയ്യുക" +blockExport = "എക്സ്പോർട്ട് തടയുക" +contracts = "കരാറുകൾ" +documents = "രേഖകൾ" +fedramp = "FedRAMP" +financialReports = "സാമ്പത്തിക റിപ്പോർട്ടുകൾ" +flagForReview = "അവലോകനത്തിനായി അടയാളപ്പെടുത്തുക" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "ഹോൾഡ് ചെയ്യുക" +hrRecords = "HR രേഖകൾ" +indefinite = "അനിശ്ചിതകാലം" +insurance = "ഇൻഷുറൻസ്" +invoices = "ഇൻവോയിസുകൾ" +iso27001 = "ISO 27001" +legalFilings = "നിയമ ഫയലിംഗുകൾ" +medicalPhi = "മെഡിക്കൽ / PHI" +never = "ഒരിക്കലും ഇല്ല" +ninetyDays = "90 ദിവസം" +oneYear = "1 വർഷം" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "രേഖ ക്വാറന്റൈനിൽ ഇടുക" +routeToBucket = "ബക്കറ്റിലേക്ക് റൂട്ട് ചെയ്യുക" +s3Bucket = "S3 bucket" +sevenYears = "7 വർഷം" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "നികുതി രേഖകൾ" +thirtyDays = "30 ദിവസം" +threeYears = "3 വർഷം" +webhook = "Webhook" + [portal] comingSoon = "ഉടൻ വരുന്നു" @@ -8067,10 +8050,6 @@ title = "Session കാലഹരണപ്പെട്ടു" [portal.users] title = "ഉപയോക്താക്കൾ" -[portal.users.roles] -subtitle = "എല്ലാ plan-ലും ഓരോ role ഉണ്ട് — ഓരോന്നിന് ചെയ്യാനാവുന്നത് org-ലാകെ നിശ്ചിതമാണ്." -title = "Roles" - [portal.users.roles.admin] label = "Admin (Org owner)" summary = "Workspace, settings, members എന്നിവയിൽ പൂർണ്ണ governance." diff --git a/frontend/editor/public/locales/nl-NL/translation.toml b/frontend/editor/public/locales/nl-NL/translation.toml index 91a56b2594..6a364ede3f 100644 --- a/frontend/editor/public/locales/nl-NL/translation.toml +++ b/frontend/editor/public/locales/nl-NL/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contracten" -"Financial reports" = "Financiële rapporten" -"HR records" = "HR-dossiers" -Insurance = "Verzekeringen" -Invoices = "Facturen" -"Legal filings" = "Juridische indieningen" -"Medical / PHI" = "Medisch / PHI" -"Tax documents" = "Belastingdocumenten" - [policies.enforcement] applying = "Bezig met toepassen van {{names}}" applyingProgress = "Bezig met toepassen van {{names}} ({{done}} van {{total}})" @@ -6025,51 +6015,6 @@ notify = "Melden bij routering" onViolation = "Bij niet-naleving" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 jaar" -"30 days" = "30 dagen" -"90 days" = "90 dagen" -Never = "Nooit" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Markeren voor beoordeling" -Hold = "Vasthouden" -"Route to bucket" = "Routeren naar bucket" - -[policies.fieldOption.destination] -Documents = "Documenten" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 jaar" -"3 years" = "3 jaar" -"30 days" = "30 dagen" -"7 years" = "7 jaar" -Indefinite = "Onbepaalde tijd" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI automatisch redigeren" -"Block export" = "Export blokkeren" -"Flag for review" = "Markeren voor beoordeling" -"Quarantine document" = "Document in quarantaine plaatsen" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Overlay sluiten" enforcingTitle = "Beleid afdwingen..." viewAnyway = "Bestand bekijken (beleid wordt nog afgedwongen)" +[policyOption] +autoRedactPhi = "PHI automatisch redigeren" +blockExport = "Export blokkeren" +contracts = "Contracten" +documents = "Documenten" +fedramp = "FedRAMP" +financialReports = "Financiële rapporten" +flagForReview = "Markeren voor beoordeling" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Vasthouden" +hrRecords = "HR-dossiers" +indefinite = "Onbepaalde tijd" +insurance = "Verzekeringen" +invoices = "Facturen" +iso27001 = "ISO 27001" +legalFilings = "Juridische indieningen" +medicalPhi = "Medisch / PHI" +never = "Nooit" +ninetyDays = "90 dagen" +oneYear = "1 jaar" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Document in quarantaine plaatsen" +routeToBucket = "Routeren naar bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 jaar" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Belastingdocumenten" +thirtyDays = "30 dagen" +threeYears = "3 jaar" +webhook = "Webhook" + [portal] comingSoon = "Binnenkort beschikbaar" @@ -8067,10 +8050,6 @@ title = "Sessie verlopen" [portal.users] title = "Gebruikers" -[portal.users.roles] -subtitle = "Elke rol bestaat op elk abonnement — wat elke rol kan doen is vastgelegd voor de hele organisatie." -title = "Rollen" - [portal.users.roles.admin] label = "Admin (organisatie-eigenaar)" summary = "Volledig beheer over de workspace, instellingen en leden." diff --git a/frontend/editor/public/locales/no-NB/translation.toml b/frontend/editor/public/locales/no-NB/translation.toml index e67cad4214..1fd68531a2 100644 --- a/frontend/editor/public/locales/no-NB/translation.toml +++ b/frontend/editor/public/locales/no-NB/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Kontrakter" -"Financial reports" = "Finansrapporter" -"HR records" = "HR-poster" -Insurance = "Forsikring" -Invoices = "Fakturaer" -"Legal filings" = "Juridiske innsendelser" -"Medical / PHI" = "Medisinsk / PHI" -"Tax documents" = "Skattedokumenter" - [policies.enforcement] applying = "Tar i bruk {{names}}" applyingProgress = "Tar i bruk {{names}} ({{done}} av {{total}})" @@ -6025,51 +6015,6 @@ notify = "Varsle ved ruting" onViolation = "Ved manglende samsvar" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 år" -"30 days" = "30 dager" -"90 days" = "90 dager" -Never = "Aldri" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Merk for gjennomgang" -Hold = "Hold tilbake" -"Route to bucket" = "Rut til bucket" - -[policies.fieldOption.destination] -Documents = "Dokumenter" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 år" -"3 years" = "3 år" -"30 days" = "30 dager" -"7 years" = "7 år" -Indefinite = "På ubestemt tid" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Sladd PHI automatisk" -"Block export" = "Blokker eksport" -"Flag for review" = "Merk for gjennomgang" -"Quarantine document" = "Sett dokument i karantene" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Avvis overlegg" enforcingTitle = "Håndhever policy..." viewAnyway = "Vis fil (policy håndheves fortsatt)" +[policyOption] +autoRedactPhi = "Sladd PHI automatisk" +blockExport = "Blokker eksport" +contracts = "Kontrakter" +documents = "Dokumenter" +fedramp = "FedRAMP" +financialReports = "Finansrapporter" +flagForReview = "Merk for gjennomgang" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Hold tilbake" +hrRecords = "HR-poster" +indefinite = "På ubestemt tid" +insurance = "Forsikring" +invoices = "Fakturaer" +iso27001 = "ISO 27001" +legalFilings = "Juridiske innsendelser" +medicalPhi = "Medisinsk / PHI" +never = "Aldri" +ninetyDays = "90 dager" +oneYear = "1 år" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Sett dokument i karantene" +routeToBucket = "Rut til bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 år" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Skattedokumenter" +thirtyDays = "30 dager" +threeYears = "3 år" +webhook = "Webhook" + [portal] comingSoon = "Kommer snart" @@ -8067,10 +8050,6 @@ title = "Økten er utløpt" [portal.users] title = "Brukere" -[portal.users.roles] -subtitle = "Alle roller finnes på alle abonnementer — hva hver enkelt kan gjøre, er fast på tvers av organisasjonen." -title = "Roller" - [portal.users.roles.admin] label = "Administrator (org-eier)" summary = "Full styring over arbeidsområdet, innstillinger og medlemmer." diff --git a/frontend/editor/public/locales/pl-PL/translation.toml b/frontend/editor/public/locales/pl-PL/translation.toml index fc4f6119f7..2309dd6966 100644 --- a/frontend/editor/public/locales/pl-PL/translation.toml +++ b/frontend/editor/public/locales/pl-PL/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Umowy" -"Financial reports" = "Raporty finansowe" -"HR records" = "Dokumentacja HR" -Insurance = "Ubezpieczenia" -Invoices = "Faktury" -"Legal filings" = "Dokumenty prawne" -"Medical / PHI" = "Medyczne / PHI" -"Tax documents" = "Dokumenty podatkowe" - [policies.enforcement] applying = "Stosowanie {{names}}" applyingProgress = "Stosowanie {{names}} ({{done}} z {{total}})" @@ -6025,51 +6015,6 @@ notify = "Powiadom przy kierowaniu" onViolation = "Gdy niezgodne" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 rok" -"30 days" = "30 dni" -"90 days" = "90 dni" -Never = "Nigdy" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Oznacz do przeglądu" -Hold = "Wstrzymaj" -"Route to bucket" = "Skieruj do bucket" - -[policies.fieldOption.destination] -Documents = "Dokumenty" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 rok" -"3 years" = "3 lata" -"30 days" = "30 dni" -"7 years" = "7 lat" -Indefinite = "Bezterminowo" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automatycznie zredaguj PHI" -"Block export" = "Zablokuj eksport" -"Flag for review" = "Oznacz do przeglądu" -"Quarantine document" = "Poddaj dokument kwarantannie" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Zamknij nakładkę" enforcingTitle = "Wymuszanie zasady..." viewAnyway = "Wyświetl plik (zasada nadal jest wymuszana)" +[policyOption] +autoRedactPhi = "Automatycznie zredaguj PHI" +blockExport = "Zablokuj eksport" +contracts = "Umowy" +documents = "Dokumenty" +fedramp = "FedRAMP" +financialReports = "Raporty finansowe" +flagForReview = "Oznacz do przeglądu" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Wstrzymaj" +hrRecords = "Dokumentacja HR" +indefinite = "Bezterminowo" +insurance = "Ubezpieczenia" +invoices = "Faktury" +iso27001 = "ISO 27001" +legalFilings = "Dokumenty prawne" +medicalPhi = "Medyczne / PHI" +never = "Nigdy" +ninetyDays = "90 dni" +oneYear = "1 rok" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Poddaj dokument kwarantannie" +routeToBucket = "Skieruj do bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 lat" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Dokumenty podatkowe" +thirtyDays = "30 dni" +threeYears = "3 lata" +webhook = "Webhook" + [portal] comingSoon = "Wkrótce" @@ -8067,10 +8050,6 @@ title = "Sesja wygasła" [portal.users] title = "Użytkownicy" -[portal.users.roles] -subtitle = "Każda rola istnieje w każdym planie — to, co każda z nich może robić, jest stałe w całej organizacji." -title = "Role" - [portal.users.roles.admin] label = "Admin (właściciel organizacji)" summary = "Pełne zarządzanie workspace, ustawieniami i członkami." diff --git a/frontend/editor/public/locales/pt-BR/translation.toml b/frontend/editor/public/locales/pt-BR/translation.toml index 4e4f20cd9f..df95886da7 100644 --- a/frontend/editor/public/locales/pt-BR/translation.toml +++ b/frontend/editor/public/locales/pt-BR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contratos" -"Financial reports" = "Relatórios financeiros" -"HR records" = "Registros de RH" -Insurance = "Seguros" -Invoices = "Faturas" -"Legal filings" = "Registros legais" -"Medical / PHI" = "Médico / PHI" -"Tax documents" = "Documentos fiscais" - [policies.enforcement] applying = "Aplicando {{names}}" applyingProgress = "Aplicando {{names}} ({{done}} de {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notificar no roteamento" onViolation = "Quando não conforme" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 ano" -"30 days" = "30 dias" -"90 days" = "90 dias" -Never = "Nunca" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marcar para revisão" -Hold = "Reter" -"Route to bucket" = "Rotear para bucket" - -[policies.fieldOption.destination] -Documents = "Documentos" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 ano" -"3 years" = "3 anos" -"30 days" = "30 dias" -"7 years" = "7 anos" -Indefinite = "Indefinidamente" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Redigir PHI automaticamente" -"Block export" = "Bloquear exportação" -"Flag for review" = "Marcar para revisão" -"Quarantine document" = "Colocar documento em quarentena" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Dispensar sobreposição" enforcingTitle = "Aplicando política..." viewAnyway = "Ver arquivo (política ainda sendo aplicada)" +[policyOption] +autoRedactPhi = "Redigir PHI automaticamente" +blockExport = "Bloquear exportação" +contracts = "Contratos" +documents = "Documentos" +fedramp = "FedRAMP" +financialReports = "Relatórios financeiros" +flagForReview = "Marcar para revisão" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Reter" +hrRecords = "Registros de RH" +indefinite = "Indefinidamente" +insurance = "Seguros" +invoices = "Faturas" +iso27001 = "ISO 27001" +legalFilings = "Registros legais" +medicalPhi = "Médico / PHI" +never = "Nunca" +ninetyDays = "90 dias" +oneYear = "1 ano" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Colocar documento em quarentena" +routeToBucket = "Rotear para bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 anos" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documentos fiscais" +thirtyDays = "30 dias" +threeYears = "3 anos" +webhook = "Webhook" + [portal] comingSoon = "Em breve" @@ -8067,10 +8050,6 @@ title = "Sessão expirada" [portal.users] title = "Usuários" -[portal.users.roles] -subtitle = "Toda função existe em todo plano — o que cada uma pode fazer é fixo em toda a organização." -title = "Funções" - [portal.users.roles.admin] label = "Admin (proprietário da organização)" summary = "Governança total sobre o workspace, configurações e membros." diff --git a/frontend/editor/public/locales/pt-PT/translation.toml b/frontend/editor/public/locales/pt-PT/translation.toml index 288e2d6e5f..c7b1a45ee9 100644 --- a/frontend/editor/public/locales/pt-PT/translation.toml +++ b/frontend/editor/public/locales/pt-PT/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contratos" -"Financial reports" = "Relatórios financeiros" -"HR records" = "Registos de RH" -Insurance = "Seguros" -Invoices = "Faturas" -"Legal filings" = "Documentação legal" -"Medical / PHI" = "Médico / PHI" -"Tax documents" = "Documentos fiscais" - [policies.enforcement] applying = "A aplicar {{names}}" applyingProgress = "A aplicar {{names}} ({{done}} de {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notificar no encaminhamento" onViolation = "Quando não conforme" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 ano" -"30 days" = "30 dias" -"90 days" = "90 dias" -Never = "Nunca" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Assinalar para revisão" -Hold = "Reter" -"Route to bucket" = "Encaminhar para bucket" - -[policies.fieldOption.destination] -Documents = "Documentos" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 ano" -"3 years" = "3 anos" -"30 days" = "30 dias" -"7 years" = "7 anos" -Indefinite = "Indefinidamente" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Ocultar automaticamente PHI" -"Block export" = "Bloquear exportação" -"Flag for review" = "Assinalar para revisão" -"Quarantine document" = "Colocar documento em quarentena" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Dispensar sobreposição" enforcingTitle = "A aplicar política..." viewAnyway = "Ver ficheiro (política ainda em aplicação)" +[policyOption] +autoRedactPhi = "Ocultar automaticamente PHI" +blockExport = "Bloquear exportação" +contracts = "Contratos" +documents = "Documentos" +fedramp = "FedRAMP" +financialReports = "Relatórios financeiros" +flagForReview = "Assinalar para revisão" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Reter" +hrRecords = "Registos de RH" +indefinite = "Indefinidamente" +insurance = "Seguros" +invoices = "Faturas" +iso27001 = "ISO 27001" +legalFilings = "Documentação legal" +medicalPhi = "Médico / PHI" +never = "Nunca" +ninetyDays = "90 dias" +oneYear = "1 ano" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Colocar documento em quarentena" +routeToBucket = "Encaminhar para bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 anos" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documentos fiscais" +thirtyDays = "30 dias" +threeYears = "3 anos" +webhook = "Webhook" + [portal] comingSoon = "Em breve" @@ -8067,10 +8050,6 @@ title = "Sessão expirada" [portal.users] title = "Utilizadores" -[portal.users.roles] -subtitle = "Todas as funções existem em todos os planos — o que cada uma pode fazer é fixo em toda a organização." -title = "Funções" - [portal.users.roles.admin] label = "Admin (Proprietário da organização)" summary = "Governação total sobre o workspace, definições e membros." diff --git a/frontend/editor/public/locales/ro-RO/translation.toml b/frontend/editor/public/locales/ro-RO/translation.toml index e99f79b6cd..00c9a155ae 100644 --- a/frontend/editor/public/locales/ro-RO/translation.toml +++ b/frontend/editor/public/locales/ro-RO/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Contracte" -"Financial reports" = "Rapoarte financiare" -"HR records" = "Înregistrări HR" -Insurance = "Asigurări" -Invoices = "Facturi" -"Legal filings" = "Depuneri juridice" -"Medical / PHI" = "Medical / PHI" -"Tax documents" = "Documente fiscale" - [policies.enforcement] applying = "Se aplică {{names}}" applyingProgress = "Se aplică {{names}} ({{done}} din {{total}})" @@ -6025,51 +6015,6 @@ notify = "Notifică la rutare" onViolation = "Când nu este conform" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 an" -"30 days" = "30 de zile" -"90 days" = "90 de zile" -Never = "Niciodată" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Marchează pentru revizuire" -Hold = "Reține" -"Route to bucket" = "Rutează către bucket" - -[policies.fieldOption.destination] -Documents = "Documente" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 an" -"3 years" = "3 ani" -"30 days" = "30 de zile" -"7 years" = "7 ani" -Indefinite = "Pe termen nelimitat" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Anonimizează automat PHI" -"Block export" = "Blochează exportul" -"Flag for review" = "Marchează pentru revizuire" -"Quarantine document" = "Pune documentul în carantină" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Închide suprapunerea" enforcingTitle = "Se aplică politica..." viewAnyway = "Vezi fișierul (politica încă se aplică)" +[policyOption] +autoRedactPhi = "Anonimizează automat PHI" +blockExport = "Blochează exportul" +contracts = "Contracte" +documents = "Documente" +fedramp = "FedRAMP" +financialReports = "Rapoarte financiare" +flagForReview = "Marchează pentru revizuire" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Reține" +hrRecords = "Înregistrări HR" +indefinite = "Pe termen nelimitat" +insurance = "Asigurări" +invoices = "Facturi" +iso27001 = "ISO 27001" +legalFilings = "Depuneri juridice" +medicalPhi = "Medical / PHI" +never = "Niciodată" +ninetyDays = "90 de zile" +oneYear = "1 an" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Pune documentul în carantină" +routeToBucket = "Rutează către bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 ani" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Documente fiscale" +thirtyDays = "30 de zile" +threeYears = "3 ani" +webhook = "Webhook" + [portal] comingSoon = "În curând" @@ -8067,10 +8050,6 @@ title = "Sesiune expirată" [portal.users] title = "Utilizatori" -[portal.users.roles] -subtitle = "Fiecare rol există în fiecare plan — ce poate face fiecare este fix în întreaga org." -title = "Roluri" - [portal.users.roles.admin] label = "Admin (proprietar org)" summary = "Guvernanță completă asupra spațiului de lucru, setărilor și membrilor." diff --git a/frontend/editor/public/locales/ru-RU/translation.toml b/frontend/editor/public/locales/ru-RU/translation.toml index 0c73250687..c4ceb3281e 100644 --- a/frontend/editor/public/locales/ru-RU/translation.toml +++ b/frontend/editor/public/locales/ru-RU/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Контракты" -"Financial reports" = "Финансовые отчёты" -"HR records" = "Кадровые записи" -Insurance = "Страхование" -Invoices = "Счета" -"Legal filings" = "Юридические документы" -"Medical / PHI" = "Медицинские / PHI" -"Tax documents" = "Налоговые документы" - [policies.enforcement] applying = "Применение {{names}}" applyingProgress = "Применение {{names}} ({{done}} из {{total}})" @@ -6025,51 +6015,6 @@ notify = "Уведомлять при маршрутизации" onViolation = "При несоответствии" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 год" -"30 days" = "30 дней" -"90 days" = "90 дней" -Never = "Никогда" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Пометить для проверки" -Hold = "Удержать" -"Route to bucket" = "Маршрутизировать в bucket" - -[policies.fieldOption.destination] -Documents = "Документы" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 год" -"3 years" = "3 года" -"30 days" = "30 дней" -"7 years" = "7 лет" -Indefinite = "Бессрочно" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Автоматически редактировать PHI" -"Block export" = "Заблокировать экспорт" -"Flag for review" = "Пометить для проверки" -"Quarantine document" = "Поместить документ в карантин" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Закрыть оверлей" enforcingTitle = "Применение политики..." viewAnyway = "Показать файл (политика всё ещё применяется)" +[policyOption] +autoRedactPhi = "Автоматически редактировать PHI" +blockExport = "Заблокировать экспорт" +contracts = "Контракты" +documents = "Документы" +fedramp = "FedRAMP" +financialReports = "Финансовые отчёты" +flagForReview = "Пометить для проверки" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Удержать" +hrRecords = "Кадровые записи" +indefinite = "Бессрочно" +insurance = "Страхование" +invoices = "Счета" +iso27001 = "ISO 27001" +legalFilings = "Юридические документы" +medicalPhi = "Медицинские / PHI" +never = "Никогда" +ninetyDays = "90 дней" +oneYear = "1 год" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Поместить документ в карантин" +routeToBucket = "Маршрутизировать в bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 лет" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Налоговые документы" +thirtyDays = "30 дней" +threeYears = "3 года" +webhook = "Webhook" + [portal] comingSoon = "Скоро" @@ -8067,10 +8050,6 @@ title = "Сессия истекла" [portal.users] title = "Пользователи" -[portal.users.roles] -subtitle = "Каждая роль есть в каждом плане — набор действий для каждой роли фиксирован в рамках организации." -title = "Роли" - [portal.users.roles.admin] label = "Администратор (владелец организации)" summary = "Полное управление рабочим пространством, настройками и участниками." diff --git a/frontend/editor/public/locales/sk-SK/translation.toml b/frontend/editor/public/locales/sk-SK/translation.toml index 96349ceb1a..1ab3fe48ee 100644 --- a/frontend/editor/public/locales/sk-SK/translation.toml +++ b/frontend/editor/public/locales/sk-SK/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Zmluvy" -"Financial reports" = "Finančné správy" -"HR records" = "HR záznamy" -Insurance = "Poistenie" -Invoices = "Faktúry" -"Legal filings" = "Právne podania" -"Medical / PHI" = "Zdravotné / PHI" -"Tax documents" = "Daňové dokumenty" - [policies.enforcement] applying = "Uplatňuje sa {{names}}" applyingProgress = "Uplatňuje sa {{names}} ({{done}} z {{total}})" @@ -6025,51 +6015,6 @@ notify = "Upozorniť pri smerovaní" onViolation = "Pri nesúlade" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 rok" -"30 days" = "30 dní" -"90 days" = "90 dní" -Never = "Nikdy" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Označiť na kontrolu" -Hold = "Pozdržať" -"Route to bucket" = "Smerovať do bucketu" - -[policies.fieldOption.destination] -Documents = "Dokumenty" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 rok" -"3 years" = "3 roky" -"30 days" = "30 dní" -"7 years" = "7 rokov" -Indefinite = "Na neurčito" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automaticky začierniť PHI" -"Block export" = "Blokovať export" -"Flag for review" = "Označiť na kontrolu" -"Quarantine document" = "Umiestniť dokument do karantény" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Zavrieť prekrytie" enforcingTitle = "Vynucuje sa zásada..." viewAnyway = "Zobraziť súbor (zásada sa stále vynucuje)" +[policyOption] +autoRedactPhi = "Automaticky začierniť PHI" +blockExport = "Blokovať export" +contracts = "Zmluvy" +documents = "Dokumenty" +fedramp = "FedRAMP" +financialReports = "Finančné správy" +flagForReview = "Označiť na kontrolu" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Pozdržať" +hrRecords = "HR záznamy" +indefinite = "Na neurčito" +insurance = "Poistenie" +invoices = "Faktúry" +iso27001 = "ISO 27001" +legalFilings = "Právne podania" +medicalPhi = "Zdravotné / PHI" +never = "Nikdy" +ninetyDays = "90 dní" +oneYear = "1 rok" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Umiestniť dokument do karantény" +routeToBucket = "Smerovať do bucketu" +s3Bucket = "S3 bucket" +sevenYears = "7 rokov" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Daňové dokumenty" +thirtyDays = "30 dní" +threeYears = "3 roky" +webhook = "Webhook" + [portal] comingSoon = "Už čoskoro" @@ -8067,10 +8050,6 @@ title = "Relácia vypršala" [portal.users] title = "Používatelia" -[portal.users.roles] -subtitle = "Každá rola existuje v každom pláne — to, čo môže každá robiť, je pevne dané naprieč organizáciou." -title = "Roly" - [portal.users.roles.admin] label = "Admin (vlastník organizácie)" summary = "Úplná správa workspace, nastavení a členov." diff --git a/frontend/editor/public/locales/sl-SI/translation.toml b/frontend/editor/public/locales/sl-SI/translation.toml index 1d782b38a5..dd7bfc7292 100644 --- a/frontend/editor/public/locales/sl-SI/translation.toml +++ b/frontend/editor/public/locales/sl-SI/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Pogodbe" -"Financial reports" = "Finančna poročila" -"HR records" = "Kadrovske evidence" -Insurance = "Zavarovanje" -Invoices = "Računi" -"Legal filings" = "Pravne vloge" -"Medical / PHI" = "Medicinsko / PHI" -"Tax documents" = "Davčni dokumenti" - [policies.enforcement] applying = "Uveljavljanje {{names}}" applyingProgress = "Uveljavljanje {{names}} ({{done}} od {{total}})" @@ -6025,51 +6015,6 @@ notify = "Obvesti ob usmerjanju" onViolation = "Ob neskladnosti" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 leto" -"30 days" = "30 dni" -"90 days" = "90 dni" -Never = "Nikoli" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Označi za pregled" -Hold = "Zadrži" -"Route to bucket" = "Usmeri v vedro" - -[policies.fieldOption.destination] -Documents = "Dokumenti" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 leto" -"3 years" = "3 leta" -"30 days" = "30 dni" -"7 years" = "7 let" -Indefinite = "Nedoločeno" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Samodejno prekrij PHI" -"Block export" = "Blokiraj izvoz" -"Flag for review" = "Označi za pregled" -"Quarantine document" = "Daj dokument v karanteno" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Opusti prekrivanje" enforcingTitle = "Uveljavljanje pravilnika..." viewAnyway = "Prikaži datoteko (pravilnik se še uveljavlja)" +[policyOption] +autoRedactPhi = "Samodejno prekrij PHI" +blockExport = "Blokiraj izvoz" +contracts = "Pogodbe" +documents = "Dokumenti" +fedramp = "FedRAMP" +financialReports = "Finančna poročila" +flagForReview = "Označi za pregled" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Zadrži" +hrRecords = "Kadrovske evidence" +indefinite = "Nedoločeno" +insurance = "Zavarovanje" +invoices = "Računi" +iso27001 = "ISO 27001" +legalFilings = "Pravne vloge" +medicalPhi = "Medicinsko / PHI" +never = "Nikoli" +ninetyDays = "90 dni" +oneYear = "1 leto" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Daj dokument v karanteno" +routeToBucket = "Usmeri v vedro" +s3Bucket = "S3 bucket" +sevenYears = "7 let" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Davčni dokumenti" +thirtyDays = "30 dni" +threeYears = "3 leta" +webhook = "Webhook" + [portal] comingSoon = "Kmalu na voljo" @@ -8067,10 +8050,6 @@ title = "Seja je potekla" [portal.users] title = "Uporabniki" -[portal.users.roles] -subtitle = "Vsaka vloga obstaja v vsakem paketu — kaj lahko vsaka naredi, je fiksno v celotni organizaciji." -title = "Vloge" - [portal.users.roles.admin] label = "Admin (lastnik organizacije)" summary = "Popolno upravljanje delovnega prostora, nastavitev in članov." diff --git a/frontend/editor/public/locales/sr-LATN-RS/translation.toml b/frontend/editor/public/locales/sr-LATN-RS/translation.toml index fbd8cb5b03..2ddd6060b0 100644 --- a/frontend/editor/public/locales/sr-LATN-RS/translation.toml +++ b/frontend/editor/public/locales/sr-LATN-RS/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Ugovori" -"Financial reports" = "Finansijski izveštaji" -"HR records" = "HR evidencija" -Insurance = "Osiguranje" -Invoices = "Fakture" -"Legal filings" = "Pravne prijave" -"Medical / PHI" = "Medicinsko / PHI" -"Tax documents" = "Poreski dokumenti" - [policies.enforcement] applying = "Primena {{names}}" applyingProgress = "Primena {{names}} ({{done}} od {{total}})" @@ -6025,51 +6015,6 @@ notify = "Obavesti pri usmeravanju" onViolation = "Kada nije usklađeno" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 godina" -"30 days" = "30 dana" -"90 days" = "90 dana" -Never = "Nikad" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Označi za pregled" -Hold = "Zadrži" -"Route to bucket" = "Usmeri u bucket" - -[policies.fieldOption.destination] -Documents = "Dokumenti" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 godinu" -"3 years" = "3 godine" -"30 days" = "30 dana" -"7 years" = "7 godina" -Indefinite = "Neograničeno" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automatski rediguj PHI" -"Block export" = "Blokiraj izvoz" -"Flag for review" = "Označi za pregled" -"Quarantine document" = "Stavi dokument u karantin" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Zatvori preklop" enforcingTitle = "Primena politike..." viewAnyway = "Prikaži fajl (politika se i dalje primenjuje)" +[policyOption] +autoRedactPhi = "Automatski rediguj PHI" +blockExport = "Blokiraj izvoz" +contracts = "Ugovori" +documents = "Dokumenti" +fedramp = "FedRAMP" +financialReports = "Finansijski izveštaji" +flagForReview = "Označi za pregled" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Zadrži" +hrRecords = "HR evidencija" +indefinite = "Neograničeno" +insurance = "Osiguranje" +invoices = "Fakture" +iso27001 = "ISO 27001" +legalFilings = "Pravne prijave" +medicalPhi = "Medicinsko / PHI" +never = "Nikad" +ninetyDays = "90 dana" +oneYear = "1 godina" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Stavi dokument u karantin" +routeToBucket = "Usmeri u bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 godina" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Poreski dokumenti" +thirtyDays = "30 dana" +threeYears = "3 godine" +webhook = "Webhook" + [portal] comingSoon = "Uskoro" @@ -8067,10 +8050,6 @@ title = "Sesija je istekla" [portal.users] title = "Korisnici" -[portal.users.roles] -subtitle = "Svaka uloga postoji na svakom planu — ono što svaka može da radi je fiksno na nivou organizacije." -title = "Uloge" - [portal.users.roles.admin] label = "Admin (vlasnik organizacije)" summary = "Puno upravljanje radnim prostorom, podešavanjima i članovima." diff --git a/frontend/editor/public/locales/sv-SE/translation.toml b/frontend/editor/public/locales/sv-SE/translation.toml index a7ddadbe3b..841cce5277 100644 --- a/frontend/editor/public/locales/sv-SE/translation.toml +++ b/frontend/editor/public/locales/sv-SE/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Avtal" -"Financial reports" = "Finansiella rapporter" -"HR records" = "HR-poster" -Insurance = "Försäkring" -Invoices = "Fakturor" -"Legal filings" = "Juridiska inlagor" -"Medical / PHI" = "Medicinskt / PHI" -"Tax documents" = "Skattedokument" - [policies.enforcement] applying = "Tillämpning av {{names}}" applyingProgress = "Tillämpning av {{names}} ({{done}} av {{total}})" @@ -6025,51 +6015,6 @@ notify = "Avisera vid dirigering" onViolation = "Vid bristande efterlevnad" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 år" -"30 days" = "30 dagar" -"90 days" = "90 dagar" -Never = "Aldrig" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Flagga för granskning" -Hold = "Spärra" -"Route to bucket" = "Dirigera till bucket" - -[policies.fieldOption.destination] -Documents = "Dokument" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 år" -"3 years" = "3 år" -"30 days" = "30 dagar" -"7 years" = "7 år" -Indefinite = "Tills vidare" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Automatisk maskering av PHI" -"Block export" = "Blockera export" -"Flag for review" = "Flagga för granskning" -"Quarantine document" = "Sätt dokument i karantän" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Stäng överlägg" enforcingTitle = "Tillämpar policy..." viewAnyway = "Visa fil (policy tillämpas fortfarande)" +[policyOption] +autoRedactPhi = "Automatisk maskering av PHI" +blockExport = "Blockera export" +contracts = "Avtal" +documents = "Dokument" +fedramp = "FedRAMP" +financialReports = "Finansiella rapporter" +flagForReview = "Flagga för granskning" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Spärra" +hrRecords = "HR-poster" +indefinite = "Tills vidare" +insurance = "Försäkring" +invoices = "Fakturor" +iso27001 = "ISO 27001" +legalFilings = "Juridiska inlagor" +medicalPhi = "Medicinskt / PHI" +never = "Aldrig" +ninetyDays = "90 dagar" +oneYear = "1 år" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Sätt dokument i karantän" +routeToBucket = "Dirigera till bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 år" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Skattedokument" +thirtyDays = "30 dagar" +threeYears = "3 år" +webhook = "Webhook" + [portal] comingSoon = "Kommer snart" @@ -8067,10 +8050,6 @@ title = "Sessionen har löpt ut" [portal.users] title = "Användare" -[portal.users.roles] -subtitle = "Varje roll finns på varje plan — vad var och en kan göra är fast i hela organisationen." -title = "Roller" - [portal.users.roles.admin] label = "Admin (organisationsägare)" summary = "Full styrning över arbetsytan, inställningar och medlemmar." diff --git a/frontend/editor/public/locales/th-TH/translation.toml b/frontend/editor/public/locales/th-TH/translation.toml index ee7f5f8b6c..55f27a8467 100644 --- a/frontend/editor/public/locales/th-TH/translation.toml +++ b/frontend/editor/public/locales/th-TH/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "สัญญา" -"Financial reports" = "รายงานทางการเงิน" -"HR records" = "ระเบียน HR" -Insurance = "ประกันภัย" -Invoices = "ใบแจ้งหนี้" -"Legal filings" = "เอกสารยื่นทางกฎหมาย" -"Medical / PHI" = "การแพทย์ / PHI" -"Tax documents" = "เอกสารภาษี" - [policies.enforcement] applying = "กำลังนำ {{names}} ไปใช้" applyingProgress = "กำลังนำ {{names}} ไปใช้ ({{done}} จาก {{total}})" @@ -6025,51 +6015,6 @@ notify = "แจ้งเตือนเมื่อกำหนดเส้น onViolation = "เมื่อไม่เป็นไปตามข้อกำหนด" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 ปี" -"30 days" = "30 วัน" -"90 days" = "90 วัน" -Never = "ไม่เลย" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "ทำเครื่องหมายเพื่อตรวจสอบ" -Hold = "ระงับ" -"Route to bucket" = "กำหนดเส้นทางไปยัง bucket" - -[policies.fieldOption.destination] -Documents = "เอกสาร" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 ปี" -"3 years" = "3 ปี" -"30 days" = "30 วัน" -"7 years" = "7 ปี" -Indefinite = "ไม่มีกำหนด" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "ปกปิด PHI อัตโนมัติ" -"Block export" = "บล็อกการส่งออก" -"Flag for review" = "ทำเครื่องหมายเพื่อตรวจสอบ" -"Quarantine document" = "กักกันเอกสาร" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "ปิดโอเวอร์เลย์" enforcingTitle = "กำลังบังคับใช้นโยบาย..." viewAnyway = "ดูไฟล์ (นโยบายยังคงบังคับใช้อยู่)" +[policyOption] +autoRedactPhi = "ปกปิด PHI อัตโนมัติ" +blockExport = "บล็อกการส่งออก" +contracts = "สัญญา" +documents = "เอกสาร" +fedramp = "FedRAMP" +financialReports = "รายงานทางการเงิน" +flagForReview = "ทำเครื่องหมายเพื่อตรวจสอบ" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "ระงับ" +hrRecords = "ระเบียน HR" +indefinite = "ไม่มีกำหนด" +insurance = "ประกันภัย" +invoices = "ใบแจ้งหนี้" +iso27001 = "ISO 27001" +legalFilings = "เอกสารยื่นทางกฎหมาย" +medicalPhi = "การแพทย์ / PHI" +never = "ไม่เลย" +ninetyDays = "90 วัน" +oneYear = "1 ปี" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "กักกันเอกสาร" +routeToBucket = "กำหนดเส้นทางไปยัง bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 ปี" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "เอกสารภาษี" +thirtyDays = "30 วัน" +threeYears = "3 ปี" +webhook = "Webhook" + [portal] comingSoon = "เร็วๆ นี้" @@ -8067,10 +8050,6 @@ title = "เซสชันหมดอายุ" [portal.users] title = "ผู้ใช้" -[portal.users.roles] -subtitle = "ทุกบทบาทมีอยู่ในทุกแผน — สิ่งที่แต่ละบทบาททำได้ถูกกำหนดตายตัวทั่วทั้งองค์กร" -title = "บทบาท" - [portal.users.roles.admin] label = "Admin (เจ้าขององค์กร)" summary = "การกำกับดูแลเต็มรูปแบบเหนือ workspace, การตั้งค่า และสมาชิก" diff --git a/frontend/editor/public/locales/tr-TR/translation.toml b/frontend/editor/public/locales/tr-TR/translation.toml index d7b56d7021..4577a23154 100644 --- a/frontend/editor/public/locales/tr-TR/translation.toml +++ b/frontend/editor/public/locales/tr-TR/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Sözleşmeler" -"Financial reports" = "Finansal raporlar" -"HR records" = "İK kayıtları" -Insurance = "Sigorta" -Invoices = "Faturalar" -"Legal filings" = "Yasal başvurular" -"Medical / PHI" = "Tıbbi / PHI" -"Tax documents" = "Vergi belgeleri" - [policies.enforcement] applying = "{{names}} uygulanıyor" applyingProgress = "{{names}} uygulanıyor ({{done}} / {{total}})" @@ -6025,51 +6015,6 @@ notify = "Yönlendirmede bildir" onViolation = "Uyumsuz olduğunda" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 yıl" -"30 days" = "30 gün" -"90 days" = "90 gün" -Never = "Asla" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "İnceleme için işaretle" -Hold = "Tut" -"Route to bucket" = "Bucket'a yönlendir" - -[policies.fieldOption.destination] -Documents = "Belgeler" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 yıl" -"3 years" = "3 yıl" -"30 days" = "30 gün" -"7 years" = "7 yıl" -Indefinite = "Süresiz" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "PHI'yi otomatik sansürle" -"Block export" = "Dışa aktarmayı engelle" -"Flag for review" = "İnceleme için işaretle" -"Quarantine document" = "Belgeyi karantinaya al" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Katmanı kapat" enforcingTitle = "Politika uygulanıyor..." viewAnyway = "Dosyayı görüntüle (politika hâlâ uygulanıyor)" +[policyOption] +autoRedactPhi = "PHI'yi otomatik sansürle" +blockExport = "Dışa aktarmayı engelle" +contracts = "Sözleşmeler" +documents = "Belgeler" +fedramp = "FedRAMP" +financialReports = "Finansal raporlar" +flagForReview = "İnceleme için işaretle" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Tut" +hrRecords = "İK kayıtları" +indefinite = "Süresiz" +insurance = "Sigorta" +invoices = "Faturalar" +iso27001 = "ISO 27001" +legalFilings = "Yasal başvurular" +medicalPhi = "Tıbbi / PHI" +never = "Asla" +ninetyDays = "90 gün" +oneYear = "1 yıl" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Belgeyi karantinaya al" +routeToBucket = "Bucket'a yönlendir" +s3Bucket = "S3 bucket" +sevenYears = "7 yıl" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Vergi belgeleri" +thirtyDays = "30 gün" +threeYears = "3 yıl" +webhook = "Webhook" + [portal] comingSoon = "Yakında" @@ -8067,10 +8050,6 @@ title = "Oturum süresi doldu" [portal.users] title = "Kullanıcılar" -[portal.users.roles] -subtitle = "Her rol her planda bulunur — her birinin yapabilecekleri kuruluş genelinde sabittir." -title = "Roller" - [portal.users.roles.admin] label = "Yönetici (Kuruluş sahibi)" summary = "Çalışma alanı, ayarlar ve üyeler üzerinde tam yönetişim." diff --git a/frontend/editor/public/locales/uk-UA/translation.toml b/frontend/editor/public/locales/uk-UA/translation.toml index 18669c7b19..d0cdcc91d5 100644 --- a/frontend/editor/public/locales/uk-UA/translation.toml +++ b/frontend/editor/public/locales/uk-UA/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Договори" -"Financial reports" = "Фінансові звіти" -"HR records" = "Кадрові записи" -Insurance = "Страхування" -Invoices = "Рахунки-фактури" -"Legal filings" = "Юридичні подання" -"Medical / PHI" = "Медичні / PHI" -"Tax documents" = "Податкові документи" - [policies.enforcement] applying = "Застосовуємо {{names}}" applyingProgress = "Застосовуємо {{names}} ({{done}} з {{total}})" @@ -6025,51 +6015,6 @@ notify = "Сповіщати під час маршрутизації" onViolation = "У разі невідповідності" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 рік" -"30 days" = "30 днів" -"90 days" = "90 днів" -Never = "Ніколи" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Позначити для перевірки" -Hold = "Утримати" -"Route to bucket" = "Маршрутизувати в bucket" - -[policies.fieldOption.destination] -Documents = "Документи" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 рік" -"3 years" = "3 роки" -"30 days" = "30 днів" -"7 years" = "7 років" -Indefinite = "Безстроково" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Автоматично приховати PHI" -"Block export" = "Заблокувати експорт" -"Flag for review" = "Позначити для перевірки" -"Quarantine document" = "Помістити документ у карантин" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Закрити накладення" enforcingTitle = "Застосування політики..." viewAnyway = "Переглянути файл (політика ще застосовується)" +[policyOption] +autoRedactPhi = "Автоматично приховати PHI" +blockExport = "Заблокувати експорт" +contracts = "Договори" +documents = "Документи" +fedramp = "FedRAMP" +financialReports = "Фінансові звіти" +flagForReview = "Позначити для перевірки" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Утримати" +hrRecords = "Кадрові записи" +indefinite = "Безстроково" +insurance = "Страхування" +invoices = "Рахунки-фактури" +iso27001 = "ISO 27001" +legalFilings = "Юридичні подання" +medicalPhi = "Медичні / PHI" +never = "Ніколи" +ninetyDays = "90 днів" +oneYear = "1 рік" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Помістити документ у карантин" +routeToBucket = "Маршрутизувати в bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 років" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Податкові документи" +thirtyDays = "30 днів" +threeYears = "3 роки" +webhook = "Webhook" + [portal] comingSoon = "Незабаром" @@ -8067,10 +8050,6 @@ title = "Сеанс закінчився" [portal.users] title = "Користувачі" -[portal.users.roles] -subtitle = "Кожна роль існує в кожному плані — те, що кожна може робити, фіксовано для всієї організації." -title = "Ролі" - [portal.users.roles.admin] label = "Адміністратор (власник організації)" summary = "Повне керування робочим простором, налаштуваннями та учасниками." diff --git a/frontend/editor/public/locales/vi-VN/translation.toml b/frontend/editor/public/locales/vi-VN/translation.toml index 8edc557e3a..18afcd310f 100644 --- a/frontend/editor/public/locales/vi-VN/translation.toml +++ b/frontend/editor/public/locales/vi-VN/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "Hợp đồng" -"Financial reports" = "Báo cáo tài chính" -"HR records" = "Hồ sơ nhân sự" -Insurance = "Bảo hiểm" -Invoices = "Hóa đơn" -"Legal filings" = "Hồ sơ pháp lý" -"Medical / PHI" = "Y tế / PHI" -"Tax documents" = "Tài liệu thuế" - [policies.enforcement] applying = "Đang áp dụng {{names}}" applyingProgress = "Đang áp dụng {{names}} ({{done}} trong {{total}})" @@ -6025,51 +6015,6 @@ notify = "Thông báo khi định tuyến" onViolation = "Khi không tuân thủ" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 năm" -"30 days" = "30 ngày" -"90 days" = "90 ngày" -Never = "Không bao giờ" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "Đánh dấu để xem xét" -Hold = "Giữ lại" -"Route to bucket" = "Định tuyến đến bucket" - -[policies.fieldOption.destination] -Documents = "Tài liệu" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 năm" -"3 years" = "3 năm" -"30 days" = "30 ngày" -"7 years" = "7 năm" -Indefinite = "Vô thời hạn" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "Tự động che PHI" -"Block export" = "Chặn xuất" -"Flag for review" = "Đánh dấu để xem xét" -"Quarantine document" = "Cách ly tài liệu" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "Đóng lớp phủ" enforcingTitle = "Đang thực thi chính sách..." viewAnyway = "Xem tệp (chính sách vẫn đang thực thi)" +[policyOption] +autoRedactPhi = "Tự động che PHI" +blockExport = "Chặn xuất" +contracts = "Hợp đồng" +documents = "Tài liệu" +fedramp = "FedRAMP" +financialReports = "Báo cáo tài chính" +flagForReview = "Đánh dấu để xem xét" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "Giữ lại" +hrRecords = "Hồ sơ nhân sự" +indefinite = "Vô thời hạn" +insurance = "Bảo hiểm" +invoices = "Hóa đơn" +iso27001 = "ISO 27001" +legalFilings = "Hồ sơ pháp lý" +medicalPhi = "Y tế / PHI" +never = "Không bao giờ" +ninetyDays = "90 ngày" +oneYear = "1 năm" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "Cách ly tài liệu" +routeToBucket = "Định tuyến đến bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 năm" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "Tài liệu thuế" +thirtyDays = "30 ngày" +threeYears = "3 năm" +webhook = "Webhook" + [portal] comingSoon = "Sắp ra mắt" @@ -8067,10 +8050,6 @@ title = "Phiên đã hết hạn" [portal.users] title = "Người dùng" -[portal.users.roles] -subtitle = "Mọi vai trò tồn tại trên mọi gói — những gì mỗi vai trò có thể làm là cố định trên toàn tổ chức." -title = "Vai trò" - [portal.users.roles.admin] label = "Quản trị viên (Chủ sở hữu tổ chức)" summary = "Toàn quyền quản trị workspace, cài đặt và thành viên." diff --git a/frontend/editor/public/locales/zh-BO/translation.toml b/frontend/editor/public/locales/zh-BO/translation.toml index 3a224f3633..836971b555 100644 --- a/frontend/editor/public/locales/zh-BO/translation.toml +++ b/frontend/editor/public/locales/zh-BO/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "合同" -"Financial reports" = "财务报告" -"HR records" = "HR 记录" -Insurance = "保险" -Invoices = "发票" -"Legal filings" = "法律申报文件" -"Medical / PHI" = "医疗 / PHI" -"Tax documents" = "税务文件" - [policies.enforcement] applying = "正在应用 {{names}}" applyingProgress = "正在应用 {{names}}({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "路由时通知" onViolation = "不合规时" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 年" -"30 days" = "30 天" -"90 days" = "90 天" -Never = "从不" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "标记以供审核" -Hold = "保留" -"Route to bucket" = "路由到存储桶" - -[policies.fieldOption.destination] -Documents = "文档" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 年" -"3 years" = "3 年" -"30 days" = "30 天" -"7 years" = "7 年" -Indefinite = "无限期" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "自动遮盖 PHI" -"Block export" = "阻止导出" -"Flag for review" = "标记以供审核" -"Quarantine document" = "隔离文档" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "关闭覆盖层" enforcingTitle = "正在执行策略..." viewAnyway = "查看文件(策略仍在执行)" +[policyOption] +autoRedactPhi = "自动遮盖 PHI" +blockExport = "阻止导出" +contracts = "合同" +documents = "文档" +fedramp = "FedRAMP" +financialReports = "财务报告" +flagForReview = "标记以供审核" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "保留" +hrRecords = "HR 记录" +indefinite = "无限期" +insurance = "保险" +invoices = "发票" +iso27001 = "ISO 27001" +legalFilings = "法律申报文件" +medicalPhi = "医疗 / PHI" +never = "从不" +ninetyDays = "90 天" +oneYear = "1 年" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "隔离文档" +routeToBucket = "路由到存储桶" +s3Bucket = "S3 bucket" +sevenYears = "7 年" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "税务文件" +thirtyDays = "30 天" +threeYears = "3 年" +webhook = "Webhook" + [portal] comingSoon = "即将推出" @@ -8067,10 +8050,6 @@ title = "会话已过期" [portal.users] title = "用户" -[portal.users.roles] -subtitle = "每个方案都有所有角色——每个角色能做什么在整个组织中固定。" -title = "角色" - [portal.users.roles.admin] label = "管理员(组织所有者)" summary = "对工作区、设置和成员拥有完整治理权限。" diff --git a/frontend/editor/public/locales/zh-CN/translation.toml b/frontend/editor/public/locales/zh-CN/translation.toml index d81be6405a..ef6ff55a7b 100644 --- a/frontend/editor/public/locales/zh-CN/translation.toml +++ b/frontend/editor/public/locales/zh-CN/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "合同" -"Financial reports" = "财务报告" -"HR records" = "人力资源记录" -Insurance = "保险" -Invoices = "发票" -"Legal filings" = "法律申报文件" -"Medical / PHI" = "医疗 / PHI" -"Tax documents" = "税务文件" - [policies.enforcement] applying = "正在应用 {{names}}" applyingProgress = "正在应用 {{names}} ({{done}}/{{total}})" @@ -6025,51 +6015,6 @@ notify = "路由时通知" onViolation = "不合规时" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 年" -"30 days" = "30 天" -"90 days" = "90 天" -Never = "从不" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "标记以供审核" -Hold = "保留" -"Route to bucket" = "路由到存储桶" - -[policies.fieldOption.destination] -Documents = "文档" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 年" -"3 years" = "3 年" -"30 days" = "30 天" -"7 years" = "7 年" -Indefinite = "无限期" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "自动遮盖 PHI" -"Block export" = "阻止导出" -"Flag for review" = "标记以供审核" -"Quarantine document" = "隔离文档" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "关闭叠加层" enforcingTitle = "正在强制执行策略..." viewAnyway = "查看文件(策略仍在强制执行)" +[policyOption] +autoRedactPhi = "自动遮盖 PHI" +blockExport = "阻止导出" +contracts = "合同" +documents = "文档" +fedramp = "FedRAMP" +financialReports = "财务报告" +flagForReview = "标记以供审核" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "保留" +hrRecords = "人力资源记录" +indefinite = "无限期" +insurance = "保险" +invoices = "发票" +iso27001 = "ISO 27001" +legalFilings = "法律申报文件" +medicalPhi = "医疗 / PHI" +never = "从不" +ninetyDays = "90 天" +oneYear = "1 年" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "隔离文档" +routeToBucket = "路由到存储桶" +s3Bucket = "S3 bucket" +sevenYears = "7 年" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "税务文件" +thirtyDays = "30 天" +threeYears = "3 年" +webhook = "Webhook" + [portal] comingSoon = "即将推出" @@ -8067,10 +8050,6 @@ title = "会话已过期" [portal.users] title = "用户" -[portal.users.roles] -subtitle = "每个方案都有每个角色——每个角色可执行的操作在整个组织中固定。" -title = "角色" - [portal.users.roles.admin] label = "管理员(组织所有者)" summary = "对工作区、设置和成员拥有完整治理权限。" diff --git a/frontend/editor/public/locales/zh-TW/translation.toml b/frontend/editor/public/locales/zh-TW/translation.toml index 98194e6c9a..c0f9e5fe18 100644 --- a/frontend/editor/public/locales/zh-TW/translation.toml +++ b/frontend/editor/public/locales/zh-TW/translation.toml @@ -5980,16 +5980,6 @@ statDocsEnforced = "Docs enforced" statusActive = "Active" statusPaused = "Paused" -[policies.docType] -Contracts = "合約" -"Financial reports" = "財務報告" -"HR records" = "人資紀錄" -Insurance = "保險" -Invoices = "發票" -"Legal filings" = "法律申報文件" -"Medical / PHI" = "醫療 / PHI" -"Tax documents" = "稅務文件" - [policies.enforcement] applying = "正在套用 {{names}}" applyingProgress = "正在套用 {{names}}({{done}} / {{total}})" @@ -6025,51 +6015,6 @@ notify = "路由時通知" onViolation = "不符合規範時" webhookUrl = "Webhook URL" -[policies.fieldOption.archiveAfter] -"1 year" = "1 年" -"30 days" = "30 天" -"90 days" = "90 天" -Never = "永不" - -[policies.fieldOption.belowThreshold] -"Flag for review" = "標記以供審查" -Hold = "保留" -"Route to bucket" = "路由到 bucket" - -[policies.fieldOption.destination] -Documents = "文件" -"S3 bucket" = "S3 bucket" -SharePoint = "SharePoint" -Webhook = "Webhook" - -[policies.fieldOption.frameworks] -FedRAMP = "FedRAMP" -GDPR = "GDPR" -HIPAA = "HIPAA" -"ISO 27001" = "ISO 27001" -"PCI DSS" = "PCI DSS" -"SOC 2" = "SOC 2" - -[policies.fieldOption.keepFor] -"1 year" = "1 年" -"3 years" = "3 年" -"30 days" = "30 天" -"7 years" = "7 年" -Indefinite = "無限期" - -[policies.fieldOption.minConfidence] -"60%" = "60%" -"70%" = "70%" -"80%" = "80%" -"90%" = "90%" -"95%" = "95%" - -[policies.fieldOption.onViolation] -"Auto-redact PHI" = "自動遮蔽 PHI" -"Block export" = "封鎖匯出" -"Flag for review" = "標記以供審查" -"Quarantine document" = "隔離文件" - [policies.fields] selectedCount = "{{count}} selected" @@ -6203,6 +6148,44 @@ dismiss = "關閉覆蓋層" enforcingTitle = "正在強制執行政策..." viewAnyway = "檢視檔案(政策仍在強制執行)" +[policyOption] +autoRedactPhi = "自動遮蔽 PHI" +blockExport = "封鎖匯出" +contracts = "合約" +documents = "文件" +fedramp = "FedRAMP" +financialReports = "財務報告" +flagForReview = "標記以供審查" +gdpr = "GDPR" +hipaa = "HIPAA" +hold = "保留" +hrRecords = "人資紀錄" +indefinite = "無限期" +insurance = "保險" +invoices = "發票" +iso27001 = "ISO 27001" +legalFilings = "法律申報文件" +medicalPhi = "醫療 / PHI" +never = "永不" +ninetyDays = "90 天" +oneYear = "1 年" +p60 = "60%" +p70 = "70%" +p80 = "80%" +p90 = "90%" +p95 = "95%" +pciDss = "PCI DSS" +quarantineDocument = "隔離文件" +routeToBucket = "路由到 bucket" +s3Bucket = "S3 bucket" +sevenYears = "7 年" +sharePoint = "SharePoint" +soc2 = "SOC 2" +taxDocuments = "稅務文件" +thirtyDays = "30 天" +threeYears = "3 年" +webhook = "Webhook" + [portal] comingSoon = "即將推出" @@ -8067,10 +8050,6 @@ title = "工作階段已過期" [portal.users] title = "使用者" -[portal.users.roles] -subtitle = "每個方案都有所有角色 — 各角色可執行的動作在整個組織中固定一致。" -title = "角色" - [portal.users.roles.admin] label = "管理員(組織擁有者)" summary = "對工作區、設定和成員擁有完整治理權限。" diff --git a/frontend/editor/src-tauri/icons/icon.png b/frontend/editor/src-tauri/icons/icon.png index 05069d088c..5819d1b89d 100644 Binary files a/frontend/editor/src-tauri/icons/icon.png and b/frontend/editor/src-tauri/icons/icon.png differ diff --git a/frontend/editor/src/core/components/onboarding/Onboarding.tsx b/frontend/editor/src/core/components/onboarding/Onboarding.tsx index 90fde8f79f..e95aaf57aa 100644 --- a/frontend/editor/src/core/components/onboarding/Onboarding.tsx +++ b/frontend/editor/src/core/components/onboarding/Onboarding.tsx @@ -3,6 +3,7 @@ import { type StepType } from "@reactour/tour"; import { useTranslation } from "react-i18next"; import { useNavigate, useLocation } from "react-router-dom"; import { isAuthRoute } from "@app/constants/routes"; +import { withBasePath } from "@app/constants/app"; import { dispatchTourState } from "@app/constants/events"; import { useOnboardingOrchestrator } from "@app/components/onboarding/orchestrator/useOnboardingOrchestrator"; import { useBypassOnboarding } from "@app/components/onboarding/useBypassOnboarding"; @@ -76,7 +77,7 @@ export default function Onboarding() { ); const redirectToLogin = useCallback(() => { - window.location.assign("/login"); + window.location.assign(withBasePath("/login")); }, []); const handlePasswordChanged = useCallback(async () => { diff --git a/frontend/editor/src/core/components/onboarding/slides/MFASetupSlide.tsx b/frontend/editor/src/core/components/onboarding/slides/MFASetupSlide.tsx index c018d69265..41c8308f2b 100644 --- a/frontend/editor/src/core/components/onboarding/slides/MFASetupSlide.tsx +++ b/frontend/editor/src/core/components/onboarding/slides/MFASetupSlide.tsx @@ -23,9 +23,10 @@ import { accountService } from "@app/services/accountService"; import { useAccountLogout } from "@app/extensions/accountLogout"; import { useAuth } from "@app/auth/UseSession"; import LocalIcon from "@app/components/shared/LocalIcon"; -import { BASE_PATH } from "@app/constants/app"; +import { BASE_PATH, withBasePath } from "@app/constants/app"; import styles from "@app/components/onboarding/InitialOnboardingModal/InitialOnboardingModal.module.css"; import { MfaSetupResponse } from "@app/responses/Mfa/MfaResponse"; +import i18n from "@app/i18n"; interface MFASetupSlideProps { onMfaSetupComplete?: () => void; @@ -62,12 +63,15 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { const axiosError = err as { response?: { data?: { error?: string } } }; setMfaError( axiosError.response?.data?.error || - "Unable to start two-factor setup. Please try again.", + t( + "onboarding.mfa.setupError", + "Unable to start two-factor setup. Please try again.", + ), ); } finally { setMfaLoading(false); } - }, []); + }, [t]); useEffect(() => { setupCompleteRef.current = setupComplete; @@ -84,7 +88,7 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { }, [fetchMfaSetup]); const redirectToLogin = useCallback(() => { - window.location.assign("/login"); + window.location.assign(withBasePath("/login")); }, []); const onLogout = useCallback(async () => { @@ -96,7 +100,12 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { event.preventDefault(); if (!mfaSetupCode.trim()) { - setMfaError("Enter the authentication code to continue."); + setMfaError( + t( + "onboarding.mfa.enterCodeError", + "Enter the authentication code to continue.", + ), + ); return; } @@ -110,13 +119,16 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { const axiosError = err as { response?: { data?: { error?: string } } }; setMfaError( axiosError.response?.data?.error || - "Unable to enable two-factor authentication. Check the code and try again.", + t( + "onboarding.mfa.enableError", + "Unable to enable two-factor authentication. Check the code and try again.", + ), ); } finally { setSubmitting(false); } }, - [mfaSetupCode, onMfaSetupComplete], + [mfaSetupCode, onMfaSetupComplete, t], ); const isReady = Boolean(mfaSetupData); @@ -138,15 +150,30 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { - Step-by-step + {t("onboarding.mfa.stepByStep", "Step-by-step")}
    -
  1. Open Google Authenticator, Authy, or 1Password.
  2. -
  3. Scan the QR code or enter the setup key below.
  4. -
  5. Enter the 6-digit code from your app.
  6. +
  7. + {t( + "onboarding.mfa.openAuthenticator", + "Open Google Authenticator, Authy, or 1Password.", + )} +
  8. +
  9. + {t( + "onboarding.mfa.scanQrCode", + "Scan the QR code or enter the setup key below.", + )} +
  10. +
  11. + {t( + "onboarding.mfa.enterCode", + "Enter the 6-digit code from your app.", + )} +
- Setup key (manual entry) + {t("onboarding.mfa.setupKey", "Setup key (manual entry)")} - Secure your account by linking an authenticator app. Scan the QR - code or enter the setup key, then confirm the 6-digit code to - finish. + {t( + "onboarding.mfa.description", + "Secure your account by linking an authenticator app. Scan the QR code or enter the setup key, then confirm the 6-digit code to finish.", + )} {mfaError && ( @@ -215,7 +243,7 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) { onClick={fetchMfaSetup} disabled={mfaLoading || submitting || setupComplete} > - Regenerate QR code + {t("onboarding.mfa.regenerateQrCode", "Regenerate QR code")} {setupComplete && ( - MFA has been enabled. You can now continue. + {t( + "onboarding.mfa.success", + "MFA has been enabled. You can now continue.", + )} )} @@ -249,7 +280,7 @@ export default function MFASetupSlide({ }: MFASetupSlideProps = {}): SlideConfig { return { key: "mfa-setup-slide", - title: "Multi-Factor Authentication Setup", + title: i18n.t("onboarding.mfa.title", "Multi-Factor Authentication Setup"), body: , background: { gradientStops: ["#059669", "#0891B2"], // Green to teal - security/trust colors diff --git a/frontend/editor/src/core/components/shared/LoginAgreementModal.tsx b/frontend/editor/src/core/components/shared/LoginAgreementModal.tsx index 9fb7f7c925..9329b0d6d8 100644 --- a/frontend/editor/src/core/components/shared/LoginAgreementModal.tsx +++ b/frontend/editor/src/core/components/shared/LoginAgreementModal.tsx @@ -16,6 +16,7 @@ import remarkGfm from "remark-gfm"; import apiClient from "@app/services/apiClient"; import { useAppConfig } from "@app/contexts/AppConfigContext"; import { useAuth } from "@app/auth/UseSession"; +import { withBasePath } from "@app/constants/app"; import { Z_INDEX_SIGN_IN_MODAL } from "@app/styles/zIndex"; const ACCEPTED_STORAGE_KEY = "loginAgreementAccepted"; @@ -144,7 +145,7 @@ export default function LoginAgreementModal() { } catch { /* ignore */ } - window.location.assign("/login"); + window.location.assign(withBasePath("/login")); } else { // Anonymous / desktop: best-effort close the window; if that is a no-op (web), // reload so the agreement re-blocks until accepted. diff --git a/frontend/editor/src/core/components/tools/addStamp/StampPreview.tsx b/frontend/editor/src/core/components/tools/addStamp/StampPreview.tsx index 88f2d72f6c..9311392beb 100644 --- a/frontend/editor/src/core/components/tools/addStamp/StampPreview.tsx +++ b/frontend/editor/src/core/components/tools/addStamp/StampPreview.tsx @@ -12,6 +12,7 @@ import { import styles from "@app/components/tools/addStamp/StampPreview.module.css"; import { PrivateContent } from "@app/components/shared/PrivateContent"; import { Button } from "@app/ui/Button"; +import { useTranslation } from "react-i18next"; type Props = { parameters: AddStampParameters; @@ -29,6 +30,7 @@ export default function StampPreview({ file, showQuickGrid, }: Props) { + const { t } = useTranslation(); const containerRef = useRef(null); const [containerSize, setContainerSize] = useState<{ width: number; @@ -366,7 +368,9 @@ export default function StampPreview({
-
Preview Stamp
+
+ {t("addStamp.preview", "Preview Stamp")} +
{ const title = newBookmarkTitle.trim(); if (!title) { - setAddBookmarkError("Bookmark title is required"); + setAddBookmarkError( + t( + "viewer.bookmarks.bookmarkTitleRequired", + "Bookmark title is required", + ), + ); return; } // Resolve the file the viewer is currently displaying. activeFileId @@ -695,7 +700,10 @@ export const BookmarkSidebar = ({ "viewer.bookmarks.expandAll", "Expand all bookmarks", )} - title="Expand all" + title={t( + "viewer.bookmarks.expandAll", + "Expand all bookmarks", + )} > @@ -746,7 +760,10 @@ export const BookmarkSidebar = ({ > setSearchTerm(event.currentTarget.value)} leftSection={ @@ -839,7 +856,10 @@ export const BookmarkSidebar = ({ @@ -360,7 +360,7 @@ export function LayerSidebar({ onClick={hideAll} disabled={allHidden || isApplying} aria-label={t("viewer.layers.hideAll", "Hide all layers")} - title="Hide all" + title={t("viewer.layers.hideAll", "Hide all layers")} > @@ -372,7 +372,7 @@ export function LayerSidebar({ size="sm" onClick={toggleLayerSidebar} aria-label={t("viewer.layers.closeSidebar", "Close layers sidebar")} - title="Close layers" + title={t("viewer.layers.closeSidebar", "Close layers sidebar")} > diff --git a/frontend/editor/src/core/components/viewer/ThumbnailSidebar.tsx b/frontend/editor/src/core/components/viewer/ThumbnailSidebar.tsx index 3fb62df970..6b195c4485 100644 --- a/frontend/editor/src/core/components/viewer/ThumbnailSidebar.tsx +++ b/frontend/editor/src/core/components/viewer/ThumbnailSidebar.tsx @@ -193,7 +193,10 @@ export function ThumbnailSidebar({ "viewer.thumbnails.closeSidebar", "Close thumbnails sidebar", )} - title="Close thumbnails" + title={t( + "viewer.thumbnails.closeSidebar", + "Close thumbnails sidebar", + )} > diff --git a/frontend/editor/src/core/i18n/translationAudit.ts b/frontend/editor/src/core/i18n/translationAudit.ts index e581689070..79fee63a7c 100644 --- a/frontend/editor/src/core/i18n/translationAudit.ts +++ b/frontend/editor/src/core/i18n/translationAudit.ts @@ -99,11 +99,12 @@ export const I18N_PROJECTS: TranslationProject[] = [ /^portal\.procurement\.journeySteps\./, /^portal\.users\.roles\./, /^portal\.policies\.(categories|config|endpoints)\./, - // Policy field/option/doc-type display copy is looked up with keys - // derived from catalogue data (t(`policies.fieldOption.${key}.${opt}`)) - // in both PolicyFieldRows and the setup wizards — invisible to the - // static scan. The raw catalogue value stays the stored fallback. - /^policies\.(field|fieldOption|docType)\./, + // Policy field labels + option display copy are looked up with keys + // derived from catalogue data (t(`policies.field.${key}`), + // t(`policyOption.${id}`)) in the PolicyFieldRows and setup wizards — + // invisible to the static scan. The raw catalogue value is the fallback. + /^policies\.field\./, + /^policyOption\./, ], minUsedKeys: 100, minLocaleKeys: 100, diff --git a/frontend/editor/src/core/tools/SwaggerUI.tsx b/frontend/editor/src/core/tools/SwaggerUI.tsx index 08a878b4c5..4ee6faf11d 100644 --- a/frontend/editor/src/core/tools/SwaggerUI.tsx +++ b/frontend/editor/src/core/tools/SwaggerUI.tsx @@ -1,8 +1,10 @@ import React, { useEffect } from "react"; import { BaseToolProps } from "@app/types/tool"; import { withBasePath } from "@app/constants/app"; +import { useTranslation } from "react-i18next"; const SwaggerUI: React.FC = () => { + const { t } = useTranslation(); useEffect(() => { // Redirect to Swagger UI window.open(withBasePath("/swagger-ui/5.21.0/index.html"), "_blank"); @@ -10,15 +12,15 @@ const SwaggerUI: React.FC = () => { return (
-

Opening Swagger UI in a new tab...

+

{t("swagger.opening", "Opening Swagger UI in a new tab...")}

- If it didn't open automatically,{" "} + {t("swagger.fallback", "If it didn't open automatically,")}{" "} - click here + {t("swagger.clickHere", "click here")}

diff --git a/frontend/editor/src/core/tools/formFill/FormFill.tsx b/frontend/editor/src/core/tools/formFill/FormFill.tsx index a99f990f33..bf1a8f5fe6 100644 --- a/frontend/editor/src/core/tools/formFill/FormFill.tsx +++ b/frontend/editor/src/core/tools/formFill/FormFill.tsx @@ -204,7 +204,7 @@ const FormFill = (_props: BaseToolProps) => { setTimeout(() => URL.revokeObjectURL(url), 250); } catch (err) { console.error("[FormFill] CSV extraction failed:", err); - setSaveError("Failed to extract CSV"); + setSaveError(t("formFill.extractCsvError", "Failed to extract CSV")); } finally { setExtracting(false); } @@ -223,7 +223,7 @@ const FormFill = (_props: BaseToolProps) => { setTimeout(() => URL.revokeObjectURL(url), 250); } catch (err) { console.error("[FormFill] XLSX extraction failed:", err); - setSaveError("Failed to extract XLSX"); + setSaveError(t("formFill.extractXlsxError", "Failed to extract XLSX")); } finally { setExtracting(false); } @@ -246,7 +246,9 @@ const FormFill = (_props: BaseToolProps) => { if (!currentFile || !isStirlingFile(currentFile)) return; if (!validateForm()) { - setSaveError("Please fill in all required fields"); + setSaveError( + t("formFill.requiredFieldsError", "Please fill in all required fields"), + ); return; } @@ -641,7 +643,9 @@ const FormFill = (_props: BaseToolProps) => { {field.label || field.name} {field.required && ( - req + + {t("formFill.requiredAbbreviation", "req")} + )}
@@ -683,10 +687,10 @@ const FormFill = (_props: BaseToolProps) => { )} {formState.isDirty || flattenChanged - ? "Unsaved changes" - : "All saved"} + ? t("formFill.unsavedChanges", "Unsaved changes") + : t("formFill.allSaved", "All saved")} - Ctrl+S to save + {t("formFill.saveShortcut", "Ctrl+S to save")}
)} diff --git a/frontend/editor/src/core/ui/CodeBlock.tsx b/frontend/editor/src/core/ui/CodeBlock.tsx index 1a05b23e4f..cff078057d 100644 --- a/frontend/editor/src/core/ui/CodeBlock.tsx +++ b/frontend/editor/src/core/ui/CodeBlock.tsx @@ -1,5 +1,6 @@ import { useState, type ReactNode } from "react"; import { Button } from "@app/ui/Button"; +import { useTranslation } from "react-i18next"; import "@app/ui/CodeBlock.css"; export type CodeLang = @@ -33,6 +34,7 @@ export function CodeBlock({ maxHeight = 400, className, }: CodeBlockProps) { + const { t } = useTranslation(); const [copied, setCopied] = useState(false); async function copy() { @@ -64,7 +66,7 @@ export function CodeBlock({ onClick={copy} aria-label="Copy code" > - {copied ? "Copied" : "Copy"} + {copied ? t("common.copied", "Copied!") : t("common.copy", "Copy")} )}
diff --git a/frontend/editor/src/portal-saas/auth/PortalAuthBoundary.tsx b/frontend/editor/src/portal-saas/auth/PortalAuthBoundary.tsx index 851c011ae0..8ab2c58dcd 100644 --- a/frontend/editor/src/portal-saas/auth/PortalAuthBoundary.tsx +++ b/frontend/editor/src/portal-saas/auth/PortalAuthBoundary.tsx @@ -2,6 +2,7 @@ import { useEffect, type ReactNode } from "react"; import { AuthProvider } from "@app/auth"; import { useAuth } from "@app/auth/context"; import { Spinner } from "@app/ui"; +import { withBasePath } from "@app/constants/app"; import { ensureSaasSupabase } from "@portal/auth/saasSupabase"; import { EDITOR_URL } from "@portal/auth/editorUrl"; @@ -34,7 +35,7 @@ function SaasPortalGate({ children }: { children: ReactNode }) { useEffect(() => { if (!blocked) return; // Guest (has a session but anonymous) -> editor; no session -> login. - window.location.href = session ? EDITOR_URL : "/login"; + window.location.href = session ? EDITOR_URL : withBasePath("/login"); }, [blocked, session]); if (loading || blocked) { return ( diff --git a/frontend/editor/src/portal-saas/components/billing/PortalBillingGate.tsx b/frontend/editor/src/portal-saas/components/billing/PortalBillingGate.tsx index b02c485581..73c3eba8f3 100644 --- a/frontend/editor/src/portal-saas/components/billing/PortalBillingGate.tsx +++ b/frontend/editor/src/portal-saas/components/billing/PortalBillingGate.tsx @@ -1,3 +1,4 @@ +import { withBasePath } from "@app/constants/app"; import { Usage } from "@portal/views/Usage"; /** @@ -13,7 +14,7 @@ export function PortalBillingGate() { return ( { - window.location.href = "/login"; + window.location.href = withBasePath("/login"); }} /> ); diff --git a/frontend/editor/src/portal/api/policies.ts b/frontend/editor/src/portal/api/policies.ts index 7954e04c59..5c3c33a75a 100644 --- a/frontend/editor/src/portal/api/policies.ts +++ b/frontend/editor/src/portal/api/policies.ts @@ -207,7 +207,7 @@ export const POLICY_CATEGORIES: PolicyCategory[] = [ { id: "retention", label: "portal.policies.categories.retention.label", - icon: "clock", + icon: "schedule", tone: "neutral", desc: "portal.policies.categories.retention.desc", comingSoon: true, @@ -238,15 +238,15 @@ export const POLICY_CONFIG: Record = { label: "portal.policies.config.ingestion.fields.minConfidence", key: "minConfidence", type: "select", - value: "80%", - options: ["60%", "70%", "80%", "90%", "95%"], + value: "p80", + options: ["p60", "p70", "p80", "p90", "p95"], }, { label: "portal.policies.config.ingestion.fields.belowThreshold", key: "belowThreshold", type: "select", - value: "Flag for review", - options: ["Flag for review", "Route to bucket", "Hold"], + value: "flagForReview", + options: ["flagForReview", "routeToBucket", "hold"], }, ], }, @@ -305,19 +305,19 @@ export const POLICY_CONFIG: Record = { label: "portal.policies.config.compliance.fields.frameworks", key: "frameworks", type: "chips", - value: ["HIPAA"], - options: ["HIPAA", "GDPR", "SOC 2", "FedRAMP", "PCI DSS", "ISO 27001"], + value: ["hipaa"], + options: ["hipaa", "gdpr", "soc2", "fedramp", "pciDss", "iso27001"], }, { label: "portal.policies.config.compliance.fields.onViolation", key: "onViolation", type: "select", - value: "Flag for review", + value: "flagForReview", options: [ - "Flag for review", - "Block export", - "Auto-redact PHI", - "Quarantine document", + "flagForReview", + "blockExport", + "autoRedactPhi", + "quarantineDocument", ], }, { @@ -348,8 +348,8 @@ export const POLICY_CONFIG: Record = { label: "portal.policies.config.routing.fields.destination", key: "destination", type: "select", - value: "Documents", - options: ["Documents", "S3 bucket", "SharePoint", "Webhook"], + value: "documents", + options: ["documents", "s3Bucket", "sharePoint", "webhook"], }, { label: "portal.policies.config.routing.fields.webhookUrl", @@ -379,15 +379,21 @@ export const POLICY_CONFIG: Record = { label: "portal.policies.config.retention.fields.keepFor", key: "keepFor", type: "select", - value: "7 years", - options: ["30 days", "1 year", "3 years", "7 years", "Indefinite"], + value: "sevenYears", + options: [ + "thirtyDays", + "oneYear", + "threeYears", + "sevenYears", + "indefinite", + ], }, { label: "portal.policies.config.retention.fields.archiveAfter", key: "archiveAfter", type: "select", - value: "Never", - options: ["30 days", "90 days", "1 year", "Never"], + value: "never", + options: ["thirtyDays", "ninetyDays", "oneYear", "never"], }, { label: "portal.policies.config.retention.fields.immutableHold", @@ -400,14 +406,14 @@ export const POLICY_CONFIG: Record = { }; export const POLICY_DOC_TYPES: string[] = [ - "Contracts", - "Invoices", - "Tax documents", - "HR records", - "Insurance", - "Medical / PHI", - "Legal filings", - "Financial reports", + "contracts", + "invoices", + "taxDocuments", + "hrRecords", + "insurance", + "medicalPhi", + "legalFilings", + "financialReports", ]; // ── Client-side catalogue assembly ─────────────────────────────────────────── diff --git a/frontend/editor/src/portal/auth/editorUrl.ts b/frontend/editor/src/portal/auth/editorUrl.ts index f5538f47ee..a7d92f0eb5 100644 --- a/frontend/editor/src/portal/auth/editorUrl.ts +++ b/frontend/editor/src/portal/auth/editorUrl.ts @@ -1,17 +1,29 @@ -/** - * Where to send users to reach the editor app (app switcher, and the auth gate - * bouncing non-admins out). - * - * Sourced from VITE_EDITOR_URL so it's configurable per deploy rather than - * hardcoded, falling back to "/" (the editor serves the portal at /processor - * on the same origin, so the root is the editor). For dev cross-app navigation to - * a separately-running editor, set VITE_EDITOR_URL in editor/.env.local. - */ -export const EDITOR_URL = import.meta.env.VITE_EDITOR_URL || "/"; +import { withBasePath } from "@app/constants/app"; + +const CONFIGURED_EDITOR_URL = import.meta.env.VITE_EDITOR_URL || ""; /** * When the editor is at the root of this origin, the portal and editor are * route-sets of one SPA — switching apps can be a client-side navigation - * instead of a full page load. + * instead of a full page load. True unless a distinct VITE_EDITOR_URL points at + * a separately-running editor (dev cross-app setup). */ -export const EDITOR_IS_SAME_APP = EDITOR_URL === "/"; +export const EDITOR_IS_SAME_APP = + !CONFIGURED_EDITOR_URL || CONFIGURED_EDITOR_URL === "/"; + +/** + * Where to send users to reach the editor app (app switcher, the auth gate + * bouncing non-admins out, the "Open in browser" CTAs on the home hero and the + * download-editor modal). + * + * Sourced from VITE_EDITOR_URL so it's configurable per deploy. When unset (the + * editor is this same app at the origin root), it resolves to the deploy's base + * path — so a subpath deploy (RUN_SUBPATH=/app → served under /app) lands on + * /app/ rather than the origin root. These CTAs use window.location, which + * bypasses the router basename, so the base path has to be baked in here. For + * dev cross-app navigation to a separately-running editor, set VITE_EDITOR_URL + * in editor/.env.local. + */ +export const EDITOR_URL = EDITOR_IS_SAME_APP + ? withBasePath("/") + : CONFIGURED_EDITOR_URL; diff --git a/frontend/editor/src/portal/components/agent-builder/BootstrapDialog.tsx b/frontend/editor/src/portal/components/agent-builder/BootstrapDialog.tsx index a6b28688e6..27b076eb69 100644 --- a/frontend/editor/src/portal/components/agent-builder/BootstrapDialog.tsx +++ b/frontend/editor/src/portal/components/agent-builder/BootstrapDialog.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; +import FileUploadRounded from "@mui/icons-material/FileUploadRounded"; import { Button, Modal } from "@app/ui"; import "@portal/views/AgentBuilder.css"; @@ -58,7 +59,7 @@ export function BootstrapDialog({ open, onClose }: BootstrapDialogProps) { onChange={(e) => setFileName(e.target.files?.[0]?.name ?? null)} /> - ⇪ + {fileName ?? t("portal.agentBuilder.bootstrap.dropzoneText")} diff --git a/frontend/editor/src/portal/components/documents/DocumentExtractions.tsx b/frontend/editor/src/portal/components/documents/DocumentExtractions.tsx index e43076dae3..3c6de80c93 100644 --- a/frontend/editor/src/portal/components/documents/DocumentExtractions.tsx +++ b/frontend/editor/src/portal/components/documents/DocumentExtractions.tsx @@ -1,4 +1,5 @@ import { useTranslation } from "react-i18next"; +import LockRounded from "@mui/icons-material/LockRounded"; import { StatusBadge, Table, type TableColumn } from "@app/ui"; import { type Extraction, type ReviewDocument } from "@portal/api/documents"; import { @@ -55,7 +56,7 @@ export function DocumentExtractions({ return (
- 🔒 +

{t("portal.documents.extractions.masked")} diff --git a/frontend/editor/src/portal/components/documents/ElevationBanner.tsx b/frontend/editor/src/portal/components/documents/ElevationBanner.tsx index 429cd606cb..67a26ad1c2 100644 --- a/frontend/editor/src/portal/components/documents/ElevationBanner.tsx +++ b/frontend/editor/src/portal/components/documents/ElevationBanner.tsx @@ -1,4 +1,6 @@ import { useTranslation } from "react-i18next"; +import ScheduleRounded from "@mui/icons-material/ScheduleRounded"; +import LockRounded from "@mui/icons-material/LockRounded"; import { Banner, Button } from "@app/ui"; import { formatCountdown } from "@portal/components/documents/format"; @@ -26,7 +28,7 @@ export function ElevationBanner({ return ( ⏱} + icon={} title={t("portal.documents.elevation.active.title", { time: formatCountdown(secondsLeft), })} @@ -42,7 +44,7 @@ export function ElevationBanner({ return ( 🔒} + icon={} title={t("portal.documents.elevation.gated.title")} description={ fourEyes diff --git a/frontend/editor/src/portal/components/documents/ReviewQueueTable.tsx b/frontend/editor/src/portal/components/documents/ReviewQueueTable.tsx index dffa7305d7..bff13d0c4f 100644 --- a/frontend/editor/src/portal/components/documents/ReviewQueueTable.tsx +++ b/frontend/editor/src/portal/components/documents/ReviewQueueTable.tsx @@ -1,5 +1,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; +import LockRounded from "@mui/icons-material/LockRounded"; import { Button, Chip, StatusBadge, Table, type TableColumn } from "@app/ui"; import { classificationTone, @@ -75,7 +76,7 @@ export function ReviewQueueTable({ title={t("portal.documents.table.sensitiveTitle")} aria-label={t("portal.documents.table.sensitiveLabel")} > - 🔒 + )}

diff --git a/frontend/editor/src/portal/components/pipelines/PipelinesTable.tsx b/frontend/editor/src/portal/components/pipelines/PipelinesTable.tsx index 42550e28a4..38c46547ca 100644 --- a/frontend/editor/src/portal/components/pipelines/PipelinesTable.tsx +++ b/frontend/editor/src/portal/components/pipelines/PipelinesTable.tsx @@ -1,5 +1,6 @@ import { useMemo } from "react"; import { useTranslation } from "react-i18next"; +import AccountTreeRounded from "@mui/icons-material/AccountTreeRounded"; import ChevronRightRoundedIcon from "@mui/icons-material/ChevronRightRounded"; import { Chip, @@ -31,7 +32,7 @@ export function PipelinesTable({ pipelines, onRowClick }: PipelinesTableProps) { render: (p) => (
- ⛓ +
{p.name} diff --git a/frontend/editor/src/portal/components/policies/PolicyFieldRow.tsx b/frontend/editor/src/portal/components/policies/PolicyFieldRow.tsx index 0ef87d77a9..b3c0b2c622 100644 --- a/frontend/editor/src/portal/components/policies/PolicyFieldRow.tsx +++ b/frontend/editor/src/portal/components/policies/PolicyFieldRow.tsx @@ -51,7 +51,7 @@ export function PolicyFieldRow({ size="sm" onClick={() => toggle(opt)} > - {t(`policies.fieldOption.${field.key}.${opt}`, opt)} + {t(`policyOption.${opt}`, opt)} ))}
@@ -67,7 +67,7 @@ export function PolicyFieldRow({ value={typeof value === "string" ? value : ""} options={(field.options ?? []).map((o) => ({ value: o, - label: t(`policies.fieldOption.${field.key}.${o}`, o), + label: t(`policyOption.${o}`, o), }))} onChange={(value) => onChange(value ?? "")} /> diff --git a/frontend/editor/src/portal/data/ops.ts b/frontend/editor/src/portal/data/ops.ts index 0cb4fa6b05..e5803971ad 100644 --- a/frontend/editor/src/portal/data/ops.ts +++ b/frontend/editor/src/portal/data/ops.ts @@ -96,14 +96,14 @@ export const PIPELINE_OPS: Record = { { id: "ocr", label: "OCR", - icon: "eye", + icon: "visibility", kind: "ingest", desc: "Text-recognize scanned or image-based pages", }, { id: "parse", label: "Parse", - icon: "layout", + icon: "dashboard", kind: "ingest", desc: "Reconstruct reading order and layout structure", }, @@ -117,14 +117,14 @@ export const PIPELINE_OPS: Record = { { id: "bundle-split", label: "Bundle split", - icon: "grid", + icon: "grid-view", kind: "ingest", desc: "Split a multi-document upload into component documents", }, { id: "extract", label: "Extract", - icon: "sparkles", + icon: "auto-awesome", kind: "ingest", desc: "Pull structured fields from the document into a typed schema", }, @@ -168,7 +168,7 @@ export const PIPELINE_OPS: Record = { { id: "confidence-check", label: "Confidence bounds", - icon: "activity", + icon: "analytics", kind: "validate", desc: "Gate downstream ops on extraction-confidence thresholds", }, @@ -184,7 +184,7 @@ export const PIPELINE_OPS: Record = { { id: "split", label: "Split", - icon: "grid", + icon: "grid-view", kind: "modify", desc: "Split a PDF into pages, sections, or by document boundary", }, @@ -212,7 +212,7 @@ export const PIPELINE_OPS: Record = { { id: "crop", label: "Crop", - icon: "layout", + icon: "dashboard", kind: "modify", desc: "Crop pages to a region or trim margins", }, @@ -221,7 +221,7 @@ export const PIPELINE_OPS: Record = { { id: "redact", label: "Redact PII", - icon: "eye", + icon: "visibility", kind: "secure", defaultOn: true, desc: "Remove or mask PII before the document is stored or released downstream", @@ -250,7 +250,7 @@ export const PIPELINE_OPS: Record = { { id: "flatten", label: "Flatten + lock", - icon: "layout", + icon: "dashboard", kind: "secure", desc: "Flatten forms and annotations to harden the document against tampering", }, @@ -350,7 +350,7 @@ export const PIPELINE_OPS: Record = { { id: "notify", label: "Notify", - icon: "bell", + icon: "notifications", kind: "alert", desc: "Fire a webhook or email when the pipeline finishes or trips a rule", }, @@ -524,7 +524,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "confidence-check", label: "Confidence bounds", - icon: "activity", + icon: "analytics", kind: "validate", category: "Validation", desc: "Gate downstream ops on extraction-confidence thresholds", @@ -622,7 +622,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "split", label: "Split", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Removal", desc: "Split a PDF into pages, sections, or by document boundary", @@ -630,7 +630,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "split-chapters", label: "Split by chapters", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Removal", desc: "Split a PDF along bookmark or chapter boundaries", @@ -638,7 +638,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "split-size", label: "Split by size", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Removal", desc: "Split a PDF when it exceeds a size or page-count threshold", @@ -646,7 +646,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "auto-split", label: "Auto split", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Classification", desc: "Detect document boundaries and split automatically", @@ -654,7 +654,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "remove-pages", label: "Remove pages", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Removal", desc: "Drop specified pages from the document", @@ -662,7 +662,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "remove-blanks", label: "Remove blank pages", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Removal", desc: "Detect and drop blank pages", @@ -670,7 +670,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "rearrange-pages", label: "Rearrange pages", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Page Formatting", desc: "Reorder pages by a specified sequence", @@ -686,7 +686,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "crop", label: "Crop", - icon: "layout", + icon: "dashboard", kind: "modify", category: "Page Formatting", desc: "Crop pages to a region or trim margins", @@ -702,7 +702,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "flatten", label: "Flatten", - icon: "layout", + icon: "dashboard", kind: "modify", category: "Page Formatting", desc: "Flatten forms and annotations into the page content", @@ -718,7 +718,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "remove-images", label: "Remove images", - icon: "eye", + icon: "visibility", kind: "modify", category: "Removal", desc: "Strip images to reduce file size", @@ -782,7 +782,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "multi-page-layout", label: "Multi-page layout", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Advanced Formatting", desc: "Combine multiple pages into a single page (n-up)", @@ -790,7 +790,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "scale-pages", label: "Scale pages", - icon: "layout", + icon: "dashboard", kind: "modify", category: "Page Formatting", desc: "Resize pages to a target dimension", @@ -934,7 +934,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "ocr", label: "OCR", - icon: "eye", + icon: "visibility", kind: "modify", category: "Extraction", desc: "Optical character recognition on scanned pages", @@ -942,7 +942,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "extract-images", label: "Extract images", - icon: "sparkles", + icon: "auto-awesome", kind: "modify", category: "Extraction", desc: "Extract embedded images from the PDF", @@ -950,7 +950,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "extract-bookmarks", label: "Extract bookmarks", - icon: "sparkles", + icon: "auto-awesome", kind: "modify", category: "Extraction", desc: "Extract the bookmark / outline tree", @@ -958,7 +958,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "extract-scans", label: "Extract scans", - icon: "sparkles", + icon: "auto-awesome", kind: "modify", category: "Extraction", desc: "Detect and extract scanned image regions", @@ -968,7 +968,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "redact", label: "Redact PII", - icon: "eye", + icon: "visibility", kind: "secure", category: "Document Security", desc: "Remove or mask PII before the document is stored or released", @@ -984,7 +984,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "auto-redact", label: "Auto-redact", - icon: "eye", + icon: "visibility", kind: "secure", category: "Document Security", desc: "Automatically redact sensitive content based on policy", @@ -1048,7 +1048,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "flatten-secure", label: "Flatten + lock", - icon: "layout", + icon: "dashboard", kind: "secure", category: "Document Security", desc: "Flatten forms and lock the document against tampering", @@ -1155,7 +1155,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "schema-extract", label: "Schema-aware extract", - icon: "sparkles", + icon: "auto-awesome", kind: "modify", category: "Classification", desc: "Extract the typed fields the inferred schema declares — not heuristic regexes. Confidence scored per field", @@ -1187,7 +1187,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "smart-redact", label: "Field-aware redact", - icon: "eye", + icon: "visibility", kind: "secure", category: "Document Security", desc: "Schema-aware PII redaction — targets fields the schema declares as PII, not regex fishing", @@ -1195,7 +1195,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "field-confidence", label: "Field confidence", - icon: "activity", + icon: "analytics", kind: "validate", category: "Validation", desc: "Per-field confidence scoring backed by the typed schema", @@ -1203,7 +1203,7 @@ export const LIBRARY_OPS: readonly LibraryOp[] = [ { id: "schema-split", label: "Schema-aware split", - icon: "grid", + icon: "grid-view", kind: "modify", category: "Classification", desc: "Split a multi-doc bundle along schema boundaries", @@ -1240,13 +1240,13 @@ export const SOURCE_OPTIONS: readonly SourceOption[] = [ { id: "webhook", label: "Inbound webhook", - icon: "plug", + icon: "webhook", desc: "Receive documents from another system via webhook", }, { id: "s3", label: "S3 bucket watch", - icon: "server", + icon: "storage", desc: "Poll an S3 bucket for new files", }, { @@ -1258,7 +1258,7 @@ export const SOURCE_OPTIONS: readonly SourceOption[] = [ { id: "scheduled", label: "Scheduled import", - icon: "activity", + icon: "schedule", desc: "Fetch from SFTP/URL on a schedule", }, ]; @@ -1273,7 +1273,7 @@ export const DESTINATION_OPTIONS: readonly DestinationOption[] = [ { id: "s3", label: "S3 bucket", - icon: "server", + icon: "storage", desc: "Write results to an S3 bucket", }, { diff --git a/frontend/editor/src/portal/views/AgentBuilder.tsx b/frontend/editor/src/portal/views/AgentBuilder.tsx index efa319c146..30a8f5e14e 100644 --- a/frontend/editor/src/portal/views/AgentBuilder.tsx +++ b/frontend/editor/src/portal/views/AgentBuilder.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; +import FileUploadRounded from "@mui/icons-material/FileUploadRounded"; import { Button, EmptyState, Skeleton } from "@app/ui"; import { useTier } from "@portal/contexts/TierContext"; import { useAsync, useSectionFlags } from "@portal/hooks/useAsync"; @@ -41,7 +42,7 @@ export function AgentBuilder() {
diff --git a/frontend/editor/src/proprietary/components/shared/config/OverviewHeader.tsx b/frontend/editor/src/proprietary/components/shared/config/OverviewHeader.tsx index 0b96811e18..5945d81fd8 100644 --- a/frontend/editor/src/proprietary/components/shared/config/OverviewHeader.tsx +++ b/frontend/editor/src/proprietary/components/shared/config/OverviewHeader.tsx @@ -2,6 +2,7 @@ import { Text } from "@mantine/core"; import { Button } from "@app/ui/Button"; import { useTranslation } from "react-i18next"; import { useAuth } from "@app/auth/UseSession"; +import { withBasePath } from "@app/constants/app"; export function OverviewHeader() { const { t } = useTranslation(); @@ -13,7 +14,7 @@ export function OverviewHeader() { } catch (error) { console.error("Logout error:", error); } finally { - window.location.assign("/login"); + window.location.assign(withBasePath("/login")); } }; diff --git a/frontend/editor/src/proprietary/components/shared/config/configSections/AccountSection.tsx b/frontend/editor/src/proprietary/components/shared/config/configSections/AccountSection.tsx index 457a02fef1..7212169e6e 100644 --- a/frontend/editor/src/proprietary/components/shared/config/configSections/AccountSection.tsx +++ b/frontend/editor/src/proprietary/components/shared/config/configSections/AccountSection.tsx @@ -19,7 +19,7 @@ import { accountService } from "@app/services/accountService"; import { Z_INDEX_OVER_CONFIG_MODAL } from "@app/styles/zIndex"; import { QRCodeSVG } from "qrcode.react"; import { useAccountLogout } from "@app/extensions/accountLogout"; -import { BASE_PATH } from "@app/constants/app"; +import { BASE_PATH, withBasePath } from "@app/constants/app"; import { MfaSetupResponse } from "@app/responses/Mfa/MfaResponse"; const AccountSection: React.FC = () => { @@ -80,7 +80,7 @@ const AccountSection: React.FC = () => { ); const redirectToLogin = useCallback(() => { - window.location.assign("/login"); + window.location.assign(withBasePath("/login")); }, []); const handleLogout = useCallback(async () => { diff --git a/frontend/editor/src/proprietary/data/labelIcons.ts b/frontend/editor/src/proprietary/data/labelIcons.ts index 699f9ba61c..c71e7a9da4 100644 --- a/frontend/editor/src/proprietary/data/labelIcons.ts +++ b/frontend/editor/src/proprietary/data/labelIcons.ts @@ -4,7 +4,7 @@ * Material Symbols names rendered via {@link LocalIcon}. * * IMPORTANT: each entry is written as an `icon: "…"` literal so the icon-bundler - * (`scripts/generate-icons.js`, which regex-scans for `icon: "name"`) picks every + * (`scripts/generate-icons.js`, which regex-scans for icon literals) picks every * one up and bundles it — otherwise a picked icon would fall back to the CDN and * render blank offline. After adding/removing entries run `task frontend:prepare:icons`. * diff --git a/frontend/editor/src/proprietary/data/policyDefinitions.tsx b/frontend/editor/src/proprietary/data/policyDefinitions.tsx index 1b8eacf931..3842b1885a 100644 --- a/frontend/editor/src/proprietary/data/policyDefinitions.tsx +++ b/frontend/editor/src/proprietary/data/policyDefinitions.tsx @@ -164,15 +164,15 @@ export const POLICY_CONFIG: Record = { label: "Min confidence", key: "minConfidence", type: "select", - value: "80%", - options: ["60%", "70%", "80%", "90%", "95%"], + value: "p80", + options: ["p60", "p70", "p80", "p90", "p95"], }, { label: "Below threshold", key: "belowThreshold", type: "select", - value: "Flag for review", - options: ["Flag for review", "Route to bucket", "Hold"], + value: "flagForReview", + options: ["flagForReview", "routeToBucket", "hold"], }, ], }, @@ -237,27 +237,27 @@ export const POLICY_CONFIG: Record = { label: "Frameworks", key: "frameworks", type: "chips", - value: ["HIPAA"], + value: ["hipaa"], options: [ - "HIPAA", - "GDPR", - "SOC 2", - "FedRAMP", - "PCI DSS", - "CCPA", - "ISO 27001", + "hipaa", + "gdpr", + "soc2", + "fedramp", + "pciDss", + "ccpa", + "iso27001", ], }, { label: "When non-compliant", key: "onViolation", type: "select", - value: "Flag for review", + value: "flagForReview", options: [ - "Flag for review", - "Block export", - "Auto-redact PHI", - "Quarantine document", + "flagForReview", + "blockExport", + "autoRedactPhi", + "quarantineDocument", ], }, { label: "Audit trail", key: "auditTrail", type: "toggle", value: true }, @@ -275,8 +275,8 @@ export const POLICY_CONFIG: Record = { label: "Destination", key: "destination", type: "select", - value: "Documents", - options: ["Documents", "S3 bucket", "SharePoint", "Webhook"], + value: "documents", + options: ["documents", "s3Bucket", "sharePoint", "webhook"], }, { label: "Webhook URL", key: "webhookUrl", type: "text", value: "" }, { label: "Notify on route", key: "notify", type: "toggle", value: false }, @@ -293,15 +293,21 @@ export const POLICY_CONFIG: Record = { label: "Keep for", key: "keepFor", type: "select", - value: "7 years", - options: ["30 days", "1 year", "3 years", "7 years", "Indefinite"], + value: "sevenYears", + options: [ + "thirtyDays", + "oneYear", + "threeYears", + "sevenYears", + "indefinite", + ], }, { label: "Archive after", key: "archiveAfter", type: "select", - value: "Never", - options: ["30 days", "90 days", "1 year", "Never"], + value: "never", + options: ["thirtyDays", "ninetyDays", "oneYear", "never"], }, { label: "Immutable hold", @@ -355,12 +361,12 @@ export const POLICY_SOURCES: PolicySource[] = [ /** Document types selectable when narrowing scope (gated behind classification). */ export const POLICY_DOC_TYPES: string[] = [ - "Contracts", - "Invoices", - "Tax documents", - "HR records", - "Insurance", - "Medical / PHI", - "Legal filings", - "Financial reports", + "contracts", + "invoices", + "taxDocuments", + "hrRecords", + "insurance", + "medicalPhi", + "legalFilings", + "financialReports", ]; diff --git a/frontend/editor/src/proprietary/routes/AuthCallback.test.tsx b/frontend/editor/src/proprietary/routes/AuthCallback.test.tsx index 61b676e786..53b838a0d3 100644 --- a/frontend/editor/src/proprietary/routes/AuthCallback.test.tsx +++ b/frontend/editor/src/proprietary/routes/AuthCallback.test.tsx @@ -262,6 +262,6 @@ describe("AuthCallback", () => { , ); - expect(getByText("Completing authentication")).toBeInTheDocument(); + expect(getByText("auth.callback.completing")).toBeInTheDocument(); }); }); diff --git a/frontend/editor/src/proprietary/routes/AuthCallback.tsx b/frontend/editor/src/proprietary/routes/AuthCallback.tsx index f0e90f5ed0..5d09776df4 100644 --- a/frontend/editor/src/proprietary/routes/AuthCallback.tsx +++ b/frontend/editor/src/proprietary/routes/AuthCallback.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef } from "react"; import { useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; import { consumePostLoginRedirectPath, springAuth, @@ -7,6 +8,7 @@ import { import { markLoginLandingPending } from "@app/utils/loginLanding"; import { handleAuthCallbackSuccess } from "@app/extensions/authCallback"; import styles from "@app/routes/AuthCallback.module.css"; +import i18n from "@app/i18n"; /** * OAuth Callback Handler @@ -16,6 +18,7 @@ import styles from "@app/routes/AuthCallback.module.css"; * We extract it, store in localStorage, and redirect to the home page. */ export default function AuthCallback() { + const { t } = useTranslation(); const navigate = useNavigate(); const processingRef = useRef(false); @@ -31,7 +34,12 @@ export default function AuthCallback() { ) { navigate("/login", { replace: true, - state: { error: "You have been signed out. Please sign in again." }, + state: { + error: i18n.t( + "auth.callback.signedOut", + "You have been signed out. Please sign in again.", + ), + }, }); return; } @@ -50,7 +58,12 @@ export default function AuthCallback() { ); navigate("/login", { replace: true, - state: { error: "OAuth login failed - no token received." }, + state: { + error: i18n.t( + "auth.callback.missingToken", + "OAuth login failed - no token received.", + ), + }, }); return; } @@ -67,7 +80,12 @@ export default function AuthCallback() { localStorage.removeItem("stirling_jwt"); navigate("/login", { replace: true, - state: { error: "OAuth login failed - invalid token." }, + state: { + error: i18n.t( + "auth.callback.invalidToken", + "OAuth login failed - invalid token.", + ), + }, }); return; } @@ -93,7 +111,12 @@ export default function AuthCallback() { ); navigate("/login", { replace: true, - state: { error: "OAuth login failed. Please try again." }, + state: { + error: i18n.t( + "auth.callback.oauthFailed", + "OAuth login failed. Please try again.", + ), + }, }); } }; @@ -105,12 +128,20 @@ export default function AuthCallback() {
...
-
Completing authentication
+
+ {t("auth.callback.completing", "Completing authentication")} +
- Please wait while we finish signing you in. + {t( + "auth.callback.pleaseWait", + "Please wait while we finish signing you in.", + )}
- You can close this window once it completes. + {t( + "auth.callback.windowMayClose", + "You can close this window once it completes.", + )}
diff --git a/frontend/editor/src/proprietary/routes/Landing.tsx b/frontend/editor/src/proprietary/routes/Landing.tsx index d22acbba56..c377df1794 100644 --- a/frontend/editor/src/proprietary/routes/Landing.tsx +++ b/frontend/editor/src/proprietary/routes/Landing.tsx @@ -109,7 +109,9 @@ export default function Landing() { >
-
Loading...
+
+ {t("common.loading", "Loading...")} +
); diff --git a/frontend/editor/src/saas/components/shared/AppConfigModal.tsx b/frontend/editor/src/saas/components/shared/AppConfigModal.tsx index 7b579f3c43..32def0b196 100644 --- a/frontend/editor/src/saas/components/shared/AppConfigModal.tsx +++ b/frontend/editor/src/saas/components/shared/AppConfigModal.tsx @@ -302,15 +302,20 @@ const AppConfigModal: React.FC = ({ setConfirmOpen(false)} - title="Sign out" + title={t("settings.signOut.title", "Sign out")} centered zIndex={Z_INDEX_OVER_SETTINGS_MODAL} >
- Are you sure you want to sign out? + + {t( + "settings.signOut.confirm", + "Are you sure you want to sign out?", + )} +
diff --git a/frontend/editor/src/saas/components/shared/charts/StackedBarChart.tsx b/frontend/editor/src/saas/components/shared/charts/StackedBarChart.tsx index 589eda3d0f..b1ba0ed3ac 100644 --- a/frontend/editor/src/saas/components/shared/charts/StackedBarChart.tsx +++ b/frontend/editor/src/saas/components/shared/charts/StackedBarChart.tsx @@ -13,6 +13,7 @@ import { createScale, } from "@app/components/shared/charts/utils/d3Utils"; import "@app/components/shared/charts/StackedBarChart.css"; +import { useTranslation } from "react-i18next"; export default function StackedBarChart({ fractions, @@ -26,6 +27,7 @@ export default function StackedBarChart({ animationDurationMs = 900, ariaLabel, }: StackedBarChartProps) { + const { t } = useTranslation(); const containerRef = useRef(null); const tooltipRef = useRef(null); const hasAnimatedRef = useRef(false); @@ -309,7 +311,7 @@ export default function StackedBarChart({ outline: "1px solid var(--api-keys-card-border)", }} /> - Remaining + {t("common.remaining", "Remaining")} )} diff --git a/frontend/editor/src/saas/components/shared/config/ProfilePictureCropper.tsx b/frontend/editor/src/saas/components/shared/config/ProfilePictureCropper.tsx index 8230184a2c..0604307b32 100644 --- a/frontend/editor/src/saas/components/shared/config/ProfilePictureCropper.tsx +++ b/frontend/editor/src/saas/components/shared/config/ProfilePictureCropper.tsx @@ -144,7 +144,7 @@ export const ProfilePictureCropper: React.FC = ({ > {error && ( - + {error} )} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3d0ff68cd2..da79c8aa34 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9391,16 +9391,16 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -9784,9 +9784,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2"