Merge branch 'main' into multi-api-keys-team-scope

This commit is contained in:
Frooodle
2026-07-13 10:11:41 +01:00
95 changed files with 2057 additions and 2627 deletions
+1 -1
View File
@@ -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
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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: .
+3 -3
View File
@@ -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: .
+1 -1
View File
@@ -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
+5
View File
@@ -0,0 +1,5 @@
{
"ignoredFiles": [
"frontend/editor/src-tauri/icons/icon.png"
]
}
@@ -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 =
@@ -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);
@@ -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.
*
@@ -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<Path> 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<Path> 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() {
@@ -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 = "حوكمة كاملة على مساحة العمل والإعدادات والأعضاء."
@@ -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ə."
@@ -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 = "Пълно управление на работното пространство, настройките и членовете."
@@ -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."
@@ -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."
@@ -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."
@@ -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 <strong>{{freeTierLimit}}</strong> 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"
@@ -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 = "Πλήρης διακυβέρνηση του χώρου εργασίας, των ρυθμίσεων και των μελών."
@@ -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."
@@ -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 <strong>{{freeTierLimit}}</strong> 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"
@@ -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."
@@ -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."
@@ -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 = "حاکمیت کامل بر فضای کاری، تنظیمات و اعضا."
@@ -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."
@@ -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."
@@ -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।"
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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 = "ワークスペース、設定、メンバーを完全に管理できます。"
@@ -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 = "워크스페이스, 설정 및 구성원에 대한 전체 거버넌스."
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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 = "Полное управление рабочим пространством, настройками и участниками."
@@ -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."
@@ -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."
@@ -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."
@@ -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."
@@ -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, การตั้งค่า และสมาชิก"
@@ -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."
@@ -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 = "Повне керування робочим простором, налаштуваннями та учасниками."
@@ -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."
@@ -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 = "对工作区、设置和成员拥有完整治理权限。"
@@ -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 = "对工作区、设置和成员拥有完整治理权限。"
@@ -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 = "對工作區、設定和成員擁有完整治理權限。"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 19 KiB

@@ -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 () => {
@@ -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) {
<Stack gap="xs">
<Text size="sm" fw={600}>
Step-by-step
{t("onboarding.mfa.stepByStep", "Step-by-step")}
</Text>
<ol className={styles.mfaSteps}>
<li>Open Google Authenticator, Authy, or 1Password.</li>
<li>Scan the QR code or enter the setup key below.</li>
<li>Enter the 6-digit code from your app.</li>
<li>
{t(
"onboarding.mfa.openAuthenticator",
"Open Google Authenticator, Authy, or 1Password.",
)}
</li>
<li>
{t(
"onboarding.mfa.scanQrCode",
"Scan the QR code or enter the setup key below.",
)}
</li>
<li>
{t(
"onboarding.mfa.enterCode",
"Enter the 6-digit code from your app.",
)}
</li>
</ol>
<Text size="xs" c="dimmed">
Setup key (manual entry)
{t("onboarding.mfa.setupKey", "Setup key (manual entry)")}
</Text>
<TextInput
value={mfaSetupData.secret ?? ""}
@@ -163,9 +190,10 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) {
<div className={styles.mfaCard}>
<Stack gap="md">
<Text size="sm" c="dimmed">
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.",
)}
</Text>
{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")}
</Button>
<Button
type="submit"
@@ -224,16 +252,19 @@ function MFASetupContent({ onMfaSetupComplete }: MFASetupSlideProps) {
!isReady || setupComplete || mfaSetupCode.length < 6
}
>
Enable MFA
{t("onboarding.mfa.enable", "Enable MFA")}
</Button>
<Button variant="secondary" type="button" onClick={onLogout}>
Logout
{t("onboarding.mfa.logout", "Logout")}
</Button>
</Group>
{setupComplete && (
<Alert color="green" variant="light">
MFA has been enabled. You can now continue.
{t(
"onboarding.mfa.success",
"MFA has been enabled. You can now continue.",
)}
</Alert>
)}
</Stack>
@@ -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: <MFASetupContent onMfaSetupComplete={onMfaSetupComplete} />,
background: {
gradientStops: ["#059669", "#0891B2"], // Green to teal - security/trust colors
@@ -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.
@@ -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<HTMLDivElement>(null);
const [containerSize, setContainerSize] = useState<{
width: number;
@@ -366,7 +368,9 @@ export default function StampPreview({
<div>
<div className={styles.previewHeader}>
<div className={styles.divider} />
<div className={styles.previewLabel}>Preview Stamp</div>
<div className={styles.previewLabel}>
{t("addStamp.preview", "Preview Stamp")}
</div>
</div>
<div
ref={containerRef}
@@ -328,7 +328,12 @@ export const BookmarkSidebar = ({
const handleSubmitAddBookmark = useCallback(async () => {
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",
)}
>
<LocalIcon
icon="unfold-more"
@@ -712,7 +720,10 @@ export const BookmarkSidebar = ({
"viewer.bookmarks.collapseAll",
"Collapse all bookmarks",
)}
title="Collapse all"
title={t(
"viewer.bookmarks.collapseAll",
"Collapse all bookmarks",
)}
>
<LocalIcon
icon="unfold-less"
@@ -732,7 +743,10 @@ export const BookmarkSidebar = ({
"viewer.bookmarks.closeSidebar",
"Close bookmarks sidebar",
)}
title="Close bookmarks"
title={t(
"viewer.bookmarks.closeSidebar",
"Close bookmarks sidebar",
)}
>
<LocalIcon icon="close-rounded" width="1.1rem" height="1.1rem" />
</ActionIcon>
@@ -746,7 +760,10 @@ export const BookmarkSidebar = ({
>
<TextInput
value={searchTerm}
placeholder="Search bookmarks"
placeholder={t(
"viewer.bookmarks.searchPlaceholder",
"Search bookmarks",
)}
onChange={(event) => setSearchTerm(event.currentTarget.value)}
leftSection={
<LocalIcon icon="search" width="1.1rem" height="1.1rem" />
@@ -839,7 +856,10 @@ export const BookmarkSidebar = ({
</Text>
<TextInput
size="xs"
placeholder="Bookmark title"
placeholder={t(
"viewer.bookmarks.bookmarkTitle",
"Bookmark title",
)}
aria-label={t(
"viewer.bookmarks.bookmarkTitle",
"Bookmark title",
@@ -350,7 +350,7 @@ export function LayerSidebar({
onClick={showAll}
disabled={allVisible || isApplying}
aria-label={t("viewer.layers.showAll", "Show all layers")}
title="Show all"
title={t("viewer.layers.showAll", "Show all layers")}
>
<VisibilityIcon sx={{ fontSize: "1rem" }} />
</ActionIcon>
@@ -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")}
>
<VisibilityOffIcon sx={{ fontSize: "1rem" }} />
</ActionIcon>
@@ -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")}
>
<LocalIcon icon="close-rounded" width="1.1rem" height="1.1rem" />
</ActionIcon>
@@ -193,7 +193,10 @@ export function ThumbnailSidebar({
"viewer.thumbnails.closeSidebar",
"Close thumbnails sidebar",
)}
title="Close thumbnails"
title={t(
"viewer.thumbnails.closeSidebar",
"Close thumbnails sidebar",
)}
>
<LocalIcon icon="close-rounded" width="1.1rem" height="1.1rem" />
</ActionIcon>
@@ -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,
+5 -3
View File
@@ -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<BaseToolProps> = () => {
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<BaseToolProps> = () => {
return (
<div style={{ textAlign: "center", padding: "2rem" }}>
<p>Opening Swagger UI in a new tab...</p>
<p>{t("swagger.opening", "Opening Swagger UI in a new tab...")}</p>
<p>
If it didn't open automatically,{" "}
{t("swagger.fallback", "If it didn't open automatically,")}{" "}
<a
href={withBasePath("/swagger-ui/5.21.0/index.html")}
target="_blank"
rel="noopener noreferrer"
>
click here
{t("swagger.clickHere", "click here")}
</a>
</p>
</div>
@@ -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}
</span>
{field.required && (
<span className={styles.fieldRequired}>req</span>
<span className={styles.fieldRequired}>
{t("formFill.requiredAbbreviation", "req")}
</span>
)}
</div>
@@ -683,10 +687,10 @@ const FormFill = (_props: BaseToolProps) => {
<span className={styles.unsavedDot} />
)}
{formState.isDirty || flattenChanged
? "Unsaved changes"
: "All saved"}
? t("formFill.unsavedChanges", "Unsaved changes")
: t("formFill.allSaved", "All saved")}
</span>
<span>Ctrl+S to save</span>
<span>{t("formFill.saveShortcut", "Ctrl+S to save")}</span>
</div>
)}
</>
+3 -1
View File
@@ -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")}
</Button>
)}
</div>
@@ -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 (
@@ -1,3 +1,4 @@
import { withBasePath } from "@app/constants/app";
import { Usage } from "@portal/views/Usage";
/**
@@ -13,7 +14,7 @@ export function PortalBillingGate() {
return (
<Usage
onReauth={() => {
window.location.href = "/login";
window.location.href = withBasePath("/login");
}}
/>
);
+32 -26
View File
@@ -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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
};
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 ───────────────────────────────────────────
+24 -12
View File
@@ -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;
@@ -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)}
/>
<span className="portal-agents__dropzone-icon" aria-hidden>
⇪
<FileUploadRounded style={{ fontSize: "1.5rem" }} />
</span>
<span className="portal-agents__dropzone-text">
{fileName ?? t("portal.agentBuilder.bootstrap.dropzoneText")}
@@ -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 (
<div className="portal-documents__masked">
<span className="portal-documents__masked-icon" aria-hidden>
🔒
<LockRounded style={{ fontSize: "1.5rem" }} />
</span>
<p className="portal-documents__masked-text">
{t("portal.documents.extractions.masked")}
@@ -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 (
<Banner
tone="success"
icon={<span aria-hidden>⏱</span>}
icon={<ScheduleRounded style={{ fontSize: "1.1rem" }} />}
title={t("portal.documents.elevation.active.title", {
time: formatCountdown(secondsLeft),
})}
@@ -42,7 +44,7 @@ export function ElevationBanner({
return (
<Banner
tone="warning"
icon={<span aria-hidden>🔒</span>}
icon={<LockRounded style={{ fontSize: "1.1rem" }} />}
title={t("portal.documents.elevation.gated.title")}
description={
fourEyes
@@ -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")}
>
🔒
<LockRounded style={{ fontSize: "0.95rem" }} />
</span>
)}
</div>
@@ -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) => (
<div className="portal-pipelines__name-cell">
<span className="portal-pipelines__pipe-dot" aria-hidden>
⛓
<AccountTreeRounded style={{ fontSize: "1.2rem" }} />
</span>
<div className="portal-pipelines__name-text">
<strong>{p.name}</strong>
@@ -51,7 +51,7 @@ export function PolicyFieldRow({
size="sm"
onClick={() => toggle(opt)}
>
{t(`policies.fieldOption.${field.key}.${opt}`, opt)}
{t(`policyOption.${opt}`, opt)}
</Chip>
))}
</div>
@@ -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 ?? "")}
/>
+38 -38
View File
@@ -96,14 +96,14 @@ export const PIPELINE_OPS: Record<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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<OpKind, PipelineOp[]> = {
{
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",
},
{
@@ -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() {
</div>
<Button
onClick={() => setBootstrapOpen(true)}
leftSection={<span aria-hidden>⇪</span>}
leftSection={<FileUploadRounded style={{ fontSize: "1.2rem" }} />}
>
{t("portal.agentBuilder.bootstrapFromDocument")}
</Button>
@@ -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"));
}
};
@@ -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 () => {
@@ -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`.
*
@@ -164,15 +164,15 @@ export const POLICY_CONFIG: Record<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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<string, PolicyConfigDef> = {
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",
];
@@ -262,6 +262,6 @@ describe("AuthCallback", () => {
</BrowserRouter>,
);
expect(getByText("Completing authentication")).toBeInTheDocument();
expect(getByText("auth.callback.completing")).toBeInTheDocument();
});
});
@@ -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() {
<div className={styles.page}>
<div className={styles.card}>
<div className={`${styles.icon} ${styles.iconNeutral}`}>...</div>
<div className={styles.title}>Completing authentication</div>
<div className={styles.title}>
{t("auth.callback.completing", "Completing authentication")}
</div>
<div className={styles.message}>
Please wait while we finish signing you in.
{t(
"auth.callback.pleaseWait",
"Please wait while we finish signing you in.",
)}
</div>
<div className={styles.loadingExtra}>
You can close this window once it completes.
{t(
"auth.callback.windowMayClose",
"You can close this window once it completes.",
)}
</div>
</div>
</div>
@@ -109,7 +109,9 @@ export default function Landing() {
>
<div className="text-center">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-3"></div>
<div className="text-gray-600">Loading...</div>
<div className="text-gray-600">
{t("common.loading", "Loading...")}
</div>
</div>
</div>
);
@@ -302,15 +302,20 @@ const AppConfigModal: React.FC<AppConfigModalProps> = ({
<Modal
opened={confirmOpen}
onClose={() => setConfirmOpen(false)}
title="Sign out"
title={t("settings.signOut.title", "Sign out")}
centered
zIndex={Z_INDEX_OVER_SETTINGS_MODAL}
>
<div className="confirm-modal-content">
<Text>Are you sure you want to sign out?</Text>
<Text>
{t(
"settings.signOut.confirm",
"Are you sure you want to sign out?",
)}
</Text>
<div className="confirm-modal-buttons">
<Button variant="secondary" onClick={() => setConfirmOpen(false)}>
Cancel
{t("common.cancel", "Cancel")}
</Button>
<Button
accent="danger"
@@ -324,7 +329,7 @@ const AppConfigModal: React.FC<AppConfigModalProps> = ({
}
}}
>
Sign out
{t("settings.signOut.submit", "Sign out")}
</Button>
</div>
</div>
@@ -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<HTMLDivElement | null>(null);
const tooltipRef = useRef<HTMLDivElement | null>(null);
const hasAnimatedRef = useRef(false);
@@ -309,7 +311,7 @@ export default function StackedBarChart({
outline: "1px solid var(--api-keys-card-border)",
}}
/>
<Text size="sm">Remaining</Text>
<Text size="sm">{t("common.remaining", "Remaining")}</Text>
</Group>
</Group>
)}
@@ -144,7 +144,7 @@ export const ProfilePictureCropper: React.FC<ProfilePictureCropperProps> = ({
>
<Stack gap="md">
{error && (
<Alert color="red" title="Error">
<Alert color="red" title={t("common.error", "Error")}>
{error}
</Alert>
)}
+8 -8
View File
@@ -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"