diff --git a/build.gradle b/build.gradle index 3bf48dcb..c9839555 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.1.2' + id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.3' id 'org.springdoc.openapi-gradle-plugin' version '1.8.0' id "io.swagger.swaggerhub" version "1.3.2" @@ -80,17 +80,19 @@ dependencies { //security updates implementation 'ch.qos.logback:logback-classic:1.4.14' implementation 'ch.qos.logback:logback-core:1.4.14' - implementation 'org.springframework:spring-webmvc:6.0.15' + implementation 'org.springframework:spring-webmvc:6.1.2' - implementation 'org.yaml:snakeyaml:2.1' + implementation 'org.yaml:snakeyaml:2.2' implementation 'org.springframework.boot:spring-boot-starter-web:3.2.1' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.1' if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') { implementation 'org.springframework.boot:spring-boot-starter-security:3.2.1' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE' - implementation "org.springframework.boot:spring-boot-starter-data-jpa" - implementation "com.h2database:h2" + implementation "org.springframework.boot:spring-boot-starter-data-jpa:3.2.1" + + //2.2.x requires rebuild of DB file.. need migration path + implementation "com.h2database:h2:2.1.214" } testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.1' @@ -122,7 +124,7 @@ dependencies { //general PDF // https://mvnrepository.com/artifact/com.opencsv/opencsv - implementation ('com.opencsv:opencsv:5.7.1') { + implementation ('com.opencsv:opencsv:5.9') { exclude group: 'commons-logging', module: 'commons-logging' } diff --git a/exampleYmlFiles/docker-compose-latest-lite-security.yml b/exampleYmlFiles/docker-compose-latest-lite-security.yml new file mode 100644 index 00000000..41dc4567 --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-lite-security.yml @@ -0,0 +1,31 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF-Lite-Security + image: frooodle/s-pdf:latest-lite + deploy: + resources: + limits: + memory: 2G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -q 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "true" + SECURITY_ENABLELOGIN: "true" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF-Lite + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security + UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/exampleYmlFiles/docker-compose-latest-lite.yml b/exampleYmlFiles/docker-compose-latest-lite.yml new file mode 100644 index 00000000..7b374688 --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-lite.yml @@ -0,0 +1,30 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF-Lite + image: frooodle/s-pdf:latest-lite + deploy: + resources: + limits: + memory: 2G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "false" + SECURITY_ENABLELOGIN: "false" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF-Lite + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest + UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/exampleYmlFiles/docker-compose-latest-security.yml b/exampleYmlFiles/docker-compose-latest-security.yml new file mode 100644 index 00000000..807a755e --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-security.yml @@ -0,0 +1,31 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF-Security + image: frooodle/s-pdf:latest + deploy: + resources: + limits: + memory: 4G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -q 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "true" + SECURITY_ENABLELOGIN: "true" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest with Security + UI_APPNAMENAVBAR: Stirling-PDF Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml b/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml new file mode 100644 index 00000000..7971eeb7 --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml @@ -0,0 +1,31 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF-Ultra-Lite-Security + image: frooodle/s-pdf:latest-ultra-lite + deploy: + resources: + limits: + memory: 1G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -q 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "true" + SECURITY_ENABLELOGIN: "true" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF-Lite + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security + UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/exampleYmlFiles/docker-compose-latest-ultra-lite.yml b/exampleYmlFiles/docker-compose-latest-ultra-lite.yml new file mode 100644 index 00000000..31fec67b --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-ultra-lite.yml @@ -0,0 +1,30 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF-Ultra-Lite + image: frooodle/s-pdf:latest-ultra-lite + deploy: + resources: + limits: + memory: 1G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "false" + SECURITY_ENABLELOGIN: "false" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF-Ultra-lite + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Ultra-lite Latest + UI_APPNAMENAVBAR: Stirling-PDF-Ultra-lite Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/exampleYmlFiles/docker-compose-latest.yml b/exampleYmlFiles/docker-compose-latest.yml new file mode 100644 index 00000000..a9dc1f31 --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest.yml @@ -0,0 +1,31 @@ +version: '3.3' +services: + stirling-pdf: + container_name: Stirling-PDF + image: frooodle/s-pdf:latest + deploy: + resources: + limits: + memory: 4G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/data:/usr/share/tesseract-ocr/5/tessdata:rw + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "false" + SECURITY_ENABLELOGIN: "false" + SYSTEM_DEFAULTLOCALE: en_US + UI_APPNAME: Stirling-PDF + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest + UI_APPNAMENAVBAR: Stirling-PDF Latest + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java index 2b7ed6d1..bf1e3661 100644 --- a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java @@ -102,7 +102,9 @@ public class SecurityConfiguration { || trimmedUri.startsWith("/images/") || trimmedUri.startsWith("/public/") || trimmedUri.startsWith("/css/") - || trimmedUri.startsWith("/js/"); + || trimmedUri.startsWith("/js/") + || trimmedUri.startsWith( + "/api/v1/info/status"); }) .permitAll() .anyRequest() @@ -113,6 +115,7 @@ public class SecurityConfiguration { http.csrf(csrf -> csrf.disable()) .authorizeHttpRequests(authz -> authz.anyRequest().permitAll()); } + return http.build(); } diff --git a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java index b4375568..d12fc72b 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java @@ -103,6 +103,7 @@ public class UserAuthenticationFilter extends OncePerRequestFilter { contextPath + "/css/", contextPath + "/js/", contextPath + "/pdfjs/", + contextPath + "/api/v1/info/status", contextPath + "/site.webmanifest" }; diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java index 5d96920f..bc4e2cce 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java @@ -119,7 +119,11 @@ public class SplitPdfBySectionsController { // Set clipping area and position float translateX = -subPageWidth * i; float translateY = height - subPageHeight * (verticalDivisions - j); - + + + //Code for google Docs pdfs.. + //float translateY = -subPageHeight * (verticalDivisions - 1 - j); + contentStream.saveGraphicsState(); contentStream.addRect(0, 0, subPageWidth, subPageHeight); contentStream.clip(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java index c0008046..ebc9f4f5 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java @@ -79,7 +79,7 @@ public class ConvertOfficeController { @Operation( summary = "Convert a file to a PDF using LibreOffice", description = - "This endpoint converts a given file to a PDF using LibreOffice API Input:Any Output:PDF Type:SISO") + "This endpoint converts a given file to a PDF using LibreOffice API Input:ANY Output:PDF Type:SISO") public ResponseEntity processFileToPDF(@ModelAttribute GeneralFile request) throws Exception { MultipartFile inputFile = request.getFileInput(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java index db5e9661..31652e18 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java @@ -2,7 +2,9 @@ package stirling.software.SPDF.controller.api.pipeline; import java.io.ByteArrayOutputStream; import java.io.InputStream; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -84,9 +86,26 @@ public class PipelineController { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zipOut = new ZipOutputStream(baos); + // A map to keep track of filenames and their counts + Map filenameCount = new HashMap<>(); + // Loop through each file and add it to the zip for (Resource file : outputFiles) { - ZipEntry zipEntry = new ZipEntry(file.getFilename()); + String originalFilename = file.getFilename(); + String filename = originalFilename; + + // Check if the filename already exists, and modify it if necessary + if (filenameCount.containsKey(originalFilename)) { + int count = filenameCount.get(originalFilename); + String baseName = originalFilename.replaceAll("\\.[^.]*$", ""); + String extension = originalFilename.replaceAll("^.*\\.", ""); + filename = baseName + "(" + count + ")." + extension; + filenameCount.put(originalFilename, count + 1); + } else { + filenameCount.put(originalFilename, 1); + } + + ZipEntry zipEntry = new ZipEntry(filename); zipOut.putNextEntry(zipEntry); // Read the file into a byte array diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java index 534f3d3b..34dcb613 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java @@ -5,6 +5,8 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -132,8 +134,6 @@ public class PipelineProcessor { + operation); hasErrors = true; } - - outputFiles = newOutputFiles; } } else { @@ -185,10 +185,12 @@ public class PipelineProcessor { } } logPrintStream.close(); + outputFiles = newOutputFiles; } if (hasErrors) { logger.error("Errors occurred during processing. Log: {}", logStream.toString()); } + return outputFiles; } @@ -196,6 +198,7 @@ public class PipelineProcessor { RestTemplate restTemplate = new RestTemplate(); // Set up headers, including API key + HttpHeaders headers = new HttpHeaders(); String apiKey = getApiKeyForUser(); headers.add("X-API-Key", apiKey); @@ -216,11 +219,12 @@ public class PipelineProcessor { throws IOException { // Define filename String newFilename; - if ("auto-rename".equals(operation)) { + if (operation.contains("auto-rename")) { // If the operation is "auto-rename", generate a new filename. // This is a simple example of generating a filename using current timestamp. // Modify as per your needs. - newFilename = "file_" + System.currentTimeMillis(); + + newFilename = extractFilename(response); } else { // Otherwise, keep the original filename. newFilename = fileName; @@ -244,6 +248,28 @@ public class PipelineProcessor { return newOutputFiles; } + public String extractFilename(ResponseEntity response) { + String filename = "default-filename.ext"; // Default filename if not found + + HttpHeaders headers = response.getHeaders(); + String contentDisposition = headers.getFirst(HttpHeaders.CONTENT_DISPOSITION); + + if (contentDisposition != null && !contentDisposition.isEmpty()) { + String[] parts = contentDisposition.split(";"); + for (String part : parts) { + if (part.trim().startsWith("filename")) { + // Extracts filename and removes quotes if present + filename = part.split("=")[1].trim().replace("\"", ""); + filename = URLDecoder.decode(filename, StandardCharsets.UTF_8); + + break; + } + } + } + + return filename; + } + List generateInputFiles(File[] files) throws Exception { if (files == null || files.length == 0) { logger.info("No files"); diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 7b6489d6..5615a3a6 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -59,6 +59,14 @@ public class GeneralWebController { .readValue(config, new TypeReference>() {}); String name = (String) jsonContent.get("name"); + if (name == null || name.length() < 1) { + String filename = + jsonFiles + .get(pipelineConfigs.indexOf(config)) + .getFileName() + .toString(); + name = filename.substring(0, filename.lastIndexOf('.')); + } Map configWithName = new HashMap<>(); configWithName.put("json", config); configWithName.put("name", name); diff --git a/src/main/java/stirling/software/SPDF/utils/RequestUriUtils.java b/src/main/java/stirling/software/SPDF/utils/RequestUriUtils.java index b320f67e..21324a9c 100644 --- a/src/main/java/stirling/software/SPDF/utils/RequestUriUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/RequestUriUtils.java @@ -9,6 +9,7 @@ public class RequestUriUtils { || requestURI.startsWith("/images/") || requestURI.startsWith("/public/") || requestURI.startsWith("/pdfjs/") - || requestURI.endsWith(".svg"); + || requestURI.endsWith(".svg") + || requestURI.startsWith("/api/v1/info/status"); } } diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 96c66e3d..579e649c 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -1,4 +1,4 @@ -fileToPDF.fileTypesList=Microsoft Word: (DOC, DOCX, DOT, DOTX)
\ +fileToPDF.fileTypesList=Microsoft Word: (DOC, DOCX, DOT, DOTX)
\ Microsoft Excel: (CSV, XLS, XLSX, XLT, XLTX, SLK, DIF)
\ Microsoft PowerPoint: (PPT, PPTX)
\ OpenDocument Formats: (ODT, OTT, ODS, OTS, ODP, OTP, ODG, OTG)
\ diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 61b98ebd..34199c49 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 33052911..6a37ba61 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Червено green=Зелено blue=Синьо custom=Персонализиране... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Идентификационните данни са променени! notAuthenticatedMessage=Потребителят не е автентикиран. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Текущата парола е неправилна. usernameExistsMessage=Новият потребител вече съществува. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 497a38ab..ff5d060f 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Vermell green=Verd blue=Blau custom=Personalitzat... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 10e17038..2b1f9246 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Rot green=Grün blue=Blau custom=benutzerdefiniert... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Anmeldedaten geändert! notAuthenticatedMessage=Benutzer nicht authentifiziert. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Das Passwort ist falsch. usernameExistsMessage=Neuer Benutzername existiert bereits. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index cb7fefa9..44c9b53b 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=\u039A\u03CC\u03BA\u03BA\u03B9\u03BD\u03BF green=\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF blue=\u039C\u03C0\u03BB\u03AD custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=\u03A4\u03B1 \u03B4\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03AE\u03C1\u03B9\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9! notAuthenticatedMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C5\u03B8\u03B5\u03BD\u03C4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF. @@ -50,6 +51,29 @@ incorrectPasswordMessage=\u039F \u03C4\u03C1\u03AD\u03C7\u03C9\u03BD \u03BA\u03C usernameExistsMessage=\u03A4\u03BF \u03BD\u03AD\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 3a21736d..6cba440e 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr = left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 870b1ad7..9b7efd3a 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 4a520a50..199bbed6 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Rojo green=Verde blue=Azul custom=Personalizado... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Se cambiaron las credenciales! notAuthenticatedMessage=Usuario no autentificado. @@ -50,6 +51,29 @@ incorrectPasswordMessage=La contraseña actual no es correcta. usernameExistsMessage=El nuevo nombre de usuario está en uso. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 642d7405..312ea2aa 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Gorria green=Berdea blue=Urdina custom=Pertsonalizatu... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 7969690c..7331b391 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Rouge green=Vert blue=Bleu custom=Personnalisé\u2026 +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Les identifiants ont été mis à jour\u00a0! notAuthenticatedMessage=Utilisateur non authentifié. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Le mot de passe actuel est incorrect. usernameExistsMessage=Le nouveau nom d\u2019utilisateur existe déjà. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 57988512..6cc830e6 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=लाल green=हरा blue=नीला custom=कस्टम... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=क्रेडेंशियल्स बदल दी गईं! notAuthenticatedMessage=उपयोगकर्ता प्रमाणित नहीं है। @@ -50,6 +51,29 @@ incorrectPasswordMessage=वर्तमान पासवर्ड गलत usernameExistsMessage=नया उपयोगकर्ता नाम पहले से मौजूद है। +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index a4f47250..8a481fa1 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Piros green=Zöld blue=Kék custom=Egyedi... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=A hitelek megváltoztak! notAuthenticatedMessage=Felhasználó nincs hitelesítve. @@ -50,6 +51,29 @@ incorrectPasswordMessage=A jelenlegi jelszó helytelen. usernameExistsMessage=Az új felhasználónév már létezik. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 8a00dd9f..af7bd755 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl=right to left) @@ -42,6 +42,7 @@ red=Merah green=Hijau blue=Biru custom=Kustom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Kredensial berubah!! notAuthenticatedMessage=Pengguna tidak ter-autentikasi. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Kata sandi saat ini salah. usernameExistsMessage=Nama pengguna baru sudah ada. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 8801f014..2f944071 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Rosso green=Verde blue=Blu custom=Personalizzato +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credenziali cambiate! notAuthenticatedMessage=Utente non autenticato. @@ -50,6 +51,29 @@ incorrectPasswordMessage=La password attuale non è corretta. usernameExistsMessage=Il nuovo nome utente esiste già. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index e4cb1ff6..d910d7ff 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=赤 green=緑 blue=青 custom=カスタム... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=資格情報が変更されました! notAuthenticatedMessage=ユーザーが認証されていません。 @@ -50,6 +51,29 @@ incorrectPasswordMessage=現在のパスワードが正しくありません。 usernameExistsMessage=新しいユーザー名はすでに存在します。 +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 01f15e66..7303b058 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=계정 정보 변경 성공! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=현재 비밀번호가 틀립니다. usernameExistsMessage=새 사용자명이 이미 존재합니다. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index 17087c07..19b003b4 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 1a725f65..eeebf0a5 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 03c076ee..164fd9b7 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -1,830 +1,920 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr=left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Selecione PDF(s) -multiPdfPrompt=Selecione PDFs (2+) -multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários -imgPrompt=Selecione a(s) imagem(ns) -genericSubmit=Enviar -processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo -pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página): -goToPage=Ir -true=Verdadeiro -false=Falso -unknown=Desconhecido -save=Salvar -close=Fechar -filesSelected=arquivos selecionados -noFavourites=Nenhum favorito adicionado -bored=Entediado esperando? -alphabet=Alfabeto -downloadPdf=baixar PDF -text=Texto -font=Fonte -selectFillter=-- Selecione -- -pageNum=Número de página -sizes.small=Pequeno -sizes.medium=Médio -sizes.large=Grande -sizes.x-large=Muito grande -error.pdfPassword=O documento PDF está protegido por senha e a senha não foi fornecida ou está incorreta -delete=Delete -username=Username -password=Password -welcome=Welcome -property=Property -black=Black -white=White -red=Red -green=Green -blue=Blue -custom=Custom... - -changedCredsMessage=Credentials changed! -notAuthenticatedMessage=User not authenticated. -userNotFoundMessage=User not found. -incorrectPasswordMessage=Current password is incorrect. -usernameExistsMessage=New Username already exists. - - - -############# -# NAVBAR # -############# -navbar.convert=Converter -navbar.security=Segurança -navbar.other=Outro -navbar.darkmode=Modo Escuro -navbar.pageOps=Operações de página -navbar.settings=Configurações - -############# -# SETTINGS # -############# -settings.title=Configurações -settings.update=Atualização disponível -settings.appVersion=Versão do aplicativo: -settings.downloadOption.title=Escolha a opção de download (para downloads não compactados de arquivo único): -settings.downloadOption.1=Abrir na mesma janela -settings.downloadOption.2=Abrir em nova janela -settings.downloadOption.3=⇬ Fazer download do arquivo -settings.zipThreshold=Compactar arquivos quando o número de arquivos baixados exceder -settings.signOut=Sign Out -settings.accountSettings=Account Settings - - - -changeCreds.title=Change Credentials -changeCreds.header=Update Your Account Details -changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) -changeCreds.newUsername=New Username -changeCreds.oldPassword=Current Password -changeCreds.newPassword=New Password -changeCreds.confirmNewPassword=Confirm New Password -changeCreds.submit=Submit Changes - - - -account.title=Account Settings -account.accountSettings=Account Settings -account.adminSettings=Admin Settings - View and Add Users -account.userControlSettings=User Control Settings -account.changeUsername=Change Username -account.changeUsername=Change Username -account.password=Confirmation Password -account.oldPassword=Old password -account.newPassword=New Password -account.changePassword=Change Password -account.confirmNewPassword=Confirm New Password -account.signOut=Sign Out -account.yourApiKey=Your API Key -account.syncTitle=Sync browser settings with Account -account.settingsCompare=Settings Comparison: -account.property=Property -account.webBrowserSettings=Web Browser Setting -account.syncToBrowser=Sync Account -> Browser -account.syncToAccount=Sync Account <- Browser - - -adminUserSettings.title=User Control Settings -adminUserSettings.header=Admin User Control Settings -adminUserSettings.admin=Admin -adminUserSettings.user=User -adminUserSettings.addUser=Add New User -adminUserSettings.roles=Roles -adminUserSettings.role=Role -adminUserSettings.actions=Actions -adminUserSettings.apiUser=Limited API User -adminUserSettings.webOnlyUser=Web Only User -adminUserSettings.forceChange=Force user to change username/password on login -adminUserSettings.submit=Save User - -############# -# HOME-PAGE # -############# -home.desc=Seu melhor utilitário para suas necessidades de PDF. -home.searchBar=Search for features... - - -home.viewPdf.title=View PDF -home.viewPdf.desc=View, annotate, add text or images -viewPdf.tags=view,read,annotate,text,image - -home.multiTool.title=Multiferramenta de PDF -home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas -multiTool.tags=Multi Ferramenta, Operação Múltipla, Interface do Usuário, Clique e Arraste, Front-end, Lado do Cliente - -home.merge.title=Mesclar -home.merge.desc=Mesclar facilmente vários PDFs em um só. -merge.tags=mesclar, Operações de Página, Lado do Servidor - -home.split.title=Dividir -home.split.desc=Dividir PDFs em vários documentos -split.tags=Operações de Página, dividir, Múltiplas Páginas, cortar, Lado do Servidor - -home.rotate.title=Girar -home.rotate.desc=Girar facilmente seus PDFs. -rotate.tags=Lado do Servidor - - -home.imageToPdf.title=Imagem para PDF -home.imageToPdf.desc=Converter uma imagem (PNG, JPEG, GIF) em PDF. -imageToPdf.tags=conversão, img, jpg, imagem, foto - -home.pdfToImage.title=PDF para Imagem -home.pdfToImage.desc=Converter um PDF em uma imagem. (PNG, JPG, GIF) -pdfToImage.tags=conversão, img, jpg, imagem, foto - -home.pdfOrganiser.title=Organizar -home.pdfOrganiser.desc=Remover/reorganizar as páginas em qualquer ordem. -pdfOrganiser.tags=duplex, par, ímpar, ordenar, mover - - -home.addImage.title=Adicionar Imagem -home.addImage.desc=Adicionar uma imagem em um local definido no PDF (trabalho em andamento) -addImage.tags=img, jpg, imagem, foto - -home.watermark.title=Adicionar Marca d'água -home.watermark.desc=Adicionar uma marca d'água personalizada ao seu documento PDF. -watermark.tags=Texto, repetindo, rótulo, próprio, direitos autorais, marca registrada, img, jpg, imagem, foto - -home.permissions.title=Alterar Permissões -home.permissions.desc=Alterar as permissões do seu documento PDF. -permissions.tags=leitura, escrita, edição, impressão - - -home.removePages.title=Remover -home.removePages.desc=Excluir as páginas indesejadas do seu documento PDF. -removePages.tags=Remover páginas, excluir páginas - -home.addPassword.title=Adicionar Senha -home.addPassword.desc=Criptografar seu documento PDF com uma senha. -addPassword.tags=seguro, segurança - -home.removePassword.title=Remover Senha -home.removePassword.desc=Remover a proteção por senha do seu documento PDF. -removePassword.tags=seguro, Descriptografar, segurança, remover senha - -home.compressPdfs.title=Comprimir -home.compressPdfs.desc=Comprimir PDFs para reduzir o tamanho do arquivo. -compressPdfs.tags=compactar, pequeno, mínimo - - -home.changeMetadata.title=Alterar Metadados -home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF. -changeMetadata.tags=Título, autor, data, criação, hora, editor, produtor, estatísticas - -home.fileToPDF.title=Converter Arquivo para PDF -home.fileToPDF.desc=Converter praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) -fileToPDF.tags=transformação, formato, documento, imagem, slide, texto, conversão, escritório, documentos, word, excel, powerpoint - -home.ocr.title=OCR / Limpeza de Digitalizações -home.ocr.desc=A limpeza verifica e detecta texto em imagens de um PDF e o adiciona novamente como texto. -ocr.tags=reconhecimento, texto, imagem, digitalização, leitura, identificação, detecção, editável - - -home.extractImages.title=Extrair Imagens -home.extractImages.desc=Extrair todas as imagens de um PDF e salvá-las em um arquivo zip. -extractImages.tags=imagem, foto, salvar, arquivo, zip, captura, coleta - -home.pdfToPDFA.title=PDF para PDF/A -home.pdfToPDFA.desc=Converter PDF para o formato PDF/A para armazenamento a longo prazo. -pdfToPDFA.tags=arquivo, longo prazo, padrão, conversão, armazenamento, preservação - -home.PDFToWord.title=PDF para Word -home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) -PDFToWord.tags=doc, docx, odt, word, transformação, formato, conversão, escritório, microsoft, arquivo doc - -home.PDFToPresentation.title=PDF para Apresentação -home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP) -PDFToPresentation.tags=slides, apresentação, escritório, microsoft - -home.PDFToText.title=PDF para Texto/RTF -home.PDFToText.desc=Converter PDF em formato de texto ou RTF -PDFToText.tags=formato rico, formato de texto enriquecido, formato de texto rico - -home.PDFToHTML.title=PDF para HTML -home.PDFToHTML.desc=Converter PDF para o formato HTML -PDFToHTML.tags=conteúdo web, compatível com navegador - - -home.PDFToXML.title=PDF para XML -home.PDFToXML.desc=Converter PDF para o formato XML -PDFToXML.tags=extração-de-dados,conteúdo-estruturado,interoperabilidade,transformação,converter - -home.ScannerImageSplit.title=Detectar/Dividir Fotos Digitalizadas -home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma imagem/PDF digitalizado -ScannerImageSplit.tags=separar,detecção-automática,digitalizações,foto-múltipla,organizar - -home.sign.title=Assinar -home.sign.desc=Adicionar assinatura ao PDF por desenho, texto ou imagem -sign.tags=autorizar,iniciais,assinatura-desenhada,assinatura-de-texto,assinatura-de-imagem - -home.flatten.title=Achatar -home.flatten.desc=Remover todos os elementos e formulários interativos de um PDF -flatten.tags=estático,desativar,não-interativo,otimizar - -home.repair.title=Reparar -home.repair.desc=Tentar reparar um PDF corrompido/quebrado -repair.tags=corrigir,restaurar,correção,recuperar - -home.removeBlanks.title=Remover Páginas em Branco -home.removeBlanks.desc=Detectar e remover páginas em branco de um documento -removeBlanks.tags=limpeza,otimização,sem-conteúdo,organizar - -home.compare.title=Comparar -home.compare.desc=Comparar e mostrar as diferenças entre 2 documentos PDF -compare.tags=diferenciar,contraste,mudanças,análise - -home.certSign.title=Assinar com Certificado -home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12) -certSign.tags=autenticar,PEM,P12,oficial,criptografar - -home.pageLayout.title=Layout de Múltiplas Páginas -home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página -pageLayout.tags=mesclar,composto,vista-única,organizar - -home.scalePages.title=Ajustar Tamanho/Escala de Página -home.scalePages.desc=Alterar o tamanho/escala da página e/ou seu conteúdo. -scalePages.tags=redimensionar,modificar,dimensão,adaptar - -home.pipeline.title=Pipeline (Avançado) -home.pipeline.desc=Executar várias ações em PDFs definindo scripts de pipeline -pipeline.tags=automatizar,sequência,scriptado,processo-em-lote - -home.add-page-numbers.title=Adicionar Números de Página -home.add-page-numbers.desc=Adicionar números de página em todo o documento em um local definido -add-page-numbers.tags=paginar,rotular,organizar,índice - -home.auto-rename.title=Renomear Automaticamente o Arquivo PDF -home.auto-rename.desc=Renomeia automaticamente um arquivo PDF com base no cabeçalho detectado -auto-rename.tags=detecção-automática,baseado-em-cabeçalho,organizar,relabel - -home.adjust-contrast.title=Ajustar Cores/Contraste -home.adjust-contrast.desc=Ajustar Contraste, Saturação e Brilho de um PDF -adjust-contrast.tags=correção-de-cor,ajustar,modificar,realçar - -home.crop.title=Cortar PDF -home.crop.desc=Cortar um PDF para reduzir o tamanho (mantém o texto!) -crop.tags=aparar,encolher,editar,formato - -home.autoSplitPDF.title=Divisão Automática de Páginas -home.autoSplitPDF.desc=Dividir automaticamente um PDF digitalizado com separador de páginas físicas QR Code -autoSplitPDF.tags=baseado-em-QR,separar,segmento-de-digitalização,organizar - -home.sanitizePdf.title=Sanitizar -home.sanitizePdf.desc=Remover scripts e outros elementos de arquivos PDF -sanitizePdf.tags=limpar,seguro,protegido,remover-ameaças - -home.URLToPDF.title=Converter Site para PDF -home.URLToPDF.desc=Converte qualquer página da internet para um arquivo PDF -URLToPDF.tags=captura-de-web,salvar-página,web-para-doc,arquivar - -home.HTMLToPDF.title=HTML para PDF -home.HTMLToPDF.desc=Converte qualquer arquivo HTML ou zip para PDF -HTMLToPDF.tags=marcação,conteúdo-web,transformação,converter - - -home.MarkdownToPDF.title=Markdown para PDF -home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF -MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter - - -home.getPdfInfo.title=Obter TODAS as Informações de um PDF -home.getPdfInfo.desc=Obtém todas as informações possíveis de um PDF -getPdfInfo.tags=informações,dados,estatísticas - - -home.extractPage.title=Extrair Página(s) -home.extractPage.desc=Extrai páginas selecionadas de um PDF -extractPage.tags=extrair - - -home.PdfToSinglePage.title=PDF para Página Única Grande -home.PdfToSinglePage.desc=Combina todas as páginas de um PDF em uma única página grande -PdfToSinglePage.tags=página única - - -home.showJS.title=Mostrar Javascript -home.showJS.desc=Procura e exibe qualquer JavaScript injetado em um PDF -showJS.tags=JavaScript - -home.autoRedact.title=Auto Redact -home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text -showJS.tags=JavaScript - -########################### -# # -# WEB PAGES # -# # -########################### -#login -login.title=Sign in -login.signin=Sign in -login.rememberme=Remember me -login.invalid=Invalid username or password. -login.locked=Your account has been locked. -login.signinTitle=Please sign in - - -#auto-redact -autoRedact.title=Auto Redact -autoRedact.header=Auto Redact -autoRedact.colorLabel=Colour -autoRedact.textsToRedactLabel=Text to Redact (line-separated) -autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret -autoRedact.useRegexLabel=Use Regex -autoRedact.wholeWordSearchLabel=Whole Word Search -autoRedact.customPaddingLabel=Custom Extra Padding -autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) -autoRedact.submitButton=Submit - - -#showJS -showJS.title=Exibir JavaScript -showJS.header=Exibir JavaScript -showJS.downloadJS=Download do JavaScript -showJS.submit=Exibir - - -#pdfToSinglePage -pdfToSinglePage.title=PDF para Página Única -pdfToSinglePage.header=PDF para Página Única -pdfToSinglePage.submit=Converter para Página Única - - -#pageExtracter -pageExtracter.title=Extrair Páginas -pageExtracter.header=Extrair Páginas -pageExtracter.submit=Extrair - - -#getPdfInfo -getPdfInfo.title=Obter Informações do PDF -getPdfInfo.header=Obter Informações do PDF -getPdfInfo.submit=Obter Informações -getPdfInfo.downloadJson=Download JSON - - -#markdown-to-pdf -MarkdownToPDF.title=Markdown para PDF -MarkdownToPDF.header=Markdown para PDF -MarkdownToPDF.submit=Converter -MarkdownToPDF.help=Trabalho em andamento -MarkdownToPDF.credit=Usa o WeasyPrint - - - -#url-to-pdf -URLToPDF.title=URL para PDF -URLToPDF.header=URL para PDF -URLToPDF.submit=Converter -URLToPDF.credit=Usa o WeasyPrint - - -#html-to-pdf -HTMLToPDF.title=HTML para PDF -HTMLToPDF.header=HTML para PDF -HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html/css/imagens etc necessários -HTMLToPDF.submit=Converter -HTMLToPDF.credit=Usa o WeasyPrint - - -#sanitizePDF -sanitizePDF.title=Sanitizar PDF -sanitizePDF.header=Sanitizar um arquivo PDF -sanitizePDF.selectText.1=Remover ações de JavaScript -sanitizePDF.selectText.2=Remover arquivos embutidos -sanitizePDF.selectText.3=Remover metadados -sanitizePDF.selectText.4=Remover links -sanitizePDF.selectText.5=Remover fontes -sanitizePDF.submit=Sanitizar PDF - - -#addPageNumbers -addPageNumbers.title=Adicionar Números de Página -addPageNumbers.header=Adicionar Números de Página -addPageNumbers.selectText.1=Selecionar arquivo PDF: -addPageNumbers.selectText.2=Tamanho da Margem -addPageNumbers.selectText.3=Posição -addPageNumbers.selectText.4=Número Inicial -addPageNumbers.selectText.5=Páginas a Numerar -addPageNumbers.selectText.6=Texto Personalizado -addPageNumbers.customTextDesc=Custom Text -addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc -addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} -addPageNumbers.submit=Adicionar Números de Página - - -#auto-rename -auto-rename.title=Rename Automático -auto-rename.header=Rename Automático de PDF -auto-rename.submit=Rename Automático - - -#adjustContrast -adjustContrast.title=Ajustar Contraste -adjustContrast.header=Ajustar Contraste -adjustContrast.contrast=Contraste: -adjustContrast.brightness=Brilho: -adjustContrast.saturation=Saturação: -adjustContrast.download=Download - - -#crop -crop.title=Cortar -crop.header=Cortar Imagem -crop.submit=Enviar - - -#autoSplitPDF -autoSplitPDF.title=Divisão Automática de PDF -autoSplitPDF.header=Divisão Automática de PDF -autoSplitPDF.description=Imprima, insira, digitalize, faça o upload e deixe que a gente divida seus documentos automaticamente. Nenhuma classificação manual necessária. -autoSplitPDF.selectText.1=Imprima algumas folhas divisórias abaixo (preto e branco está bom). -autoSplitPDF.selectText.2=Digitalize todos os seus documentos de uma vez, inserindo a folha divisória entre eles. -autoSplitPDF.selectText.3=Faça o upload do único arquivo PDF grande digitalizado e deixe o Stirling PDF cuidar do resto. -autoSplitPDF.selectText.4=As páginas divisórias são detectadas e removidas automaticamente, garantindo um documento final organizado. -autoSplitPDF.formPrompt=Enviar PDF contendo folhas divisórias Stirling-PDF: -autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso) -autoSplitPDF.dividerDownload1=Download 'Folha Divisória Automática (mínima).pdf' -autoSplitPDF.dividerDownload2=Download 'Folha Divisória Automática (com instruções).pdf' -autoSplitPDF.submit=Enviar - - -#pipeline -pipeline.title=Pipeline - - -#pageLayout -pageLayout.title=Layout de Múltiplas Páginas -pageLayout.header=Layout de Múltiplas Páginas -pageLayout.pagesPerSheet=Páginas por folha: -pageLayout.addBorder=Add Borders -pageLayout.submit=Enviar - - -#scalePages -scalePages.title=Ajustar Tamanho/Escala da Página -scalePages.header=Ajustar Tamanho/Escala da Página -scalePages.pageSize=Tamanho de uma página do documento. -scalePages.scaleFactor=Fator de zoom (corte) de uma página. -scalePages.submit=Enviar - - -#certSign -certSign.title=Assinatura com Certificado -certSign.header=Assine um PDF com o seu certificado (Em desenvolvimento) -certSign.selectPDF=Selecione um arquivo PDF para assinatura: -certSign.selectKey=Selecione o seu arquivo de chave privada (formato PKCS#8, pode ser .pem ou .der): -certSign.selectCert=Selecione o seu arquivo de certificado (formato X.509, pode ser .pem ou .der): -certSign.selectP12=Selecione o seu arquivo de armazenamento de chave PKCS#12 (.p12 ou .pfx) (opcional, se fornecido, deve conter a sua chave privada e certificado): -certSign.certType=Tipo de Certificado -certSign.password=Digite a senha do seu armazenamento de chave ou chave privada (se aplicável): -certSign.showSig=Mostrar Assinatura -certSign.reason=Razão -certSign.location=Localização -certSign.name=Nome -certSign.submit=Assinar PDF - - -#removeBlanks -removeBlanks.title=Remover Páginas em Branco -removeBlanks.header=Remover Páginas em Branco -removeBlanks.threshold=Limiar: -removeBlanks.thresholdDesc=Limiar para determinar o quão branco um pixel branco deve ser -removeBlanks.whitePercent=Porcentagem de Branco (%): -removeBlanks.whitePercentDesc=Porcentagem da página que deve ser branca para ser removida -removeBlanks.submit=Remover Páginas em Branco - - -#compare -compare.title=Comparar -compare.header=Comparar PDFs -compare.document.1=Documento 1 -compare.document.2=Documento 2 -compare.submit=Comparar - - -#sign -sign.title=Assinar -sign.header=Assinar PDFs -sign.upload=Enviar Imagem -sign.draw=Desenhar Assinatura -sign.text=Inserir Texto -sign.clear=Limpar -sign.add=Adicionar - - -#repair -repair.title=Reparar -repair.header=Reparar PDFs -repair.submit=Reparar - - -#flatten -flatten.title=Achatar -flatten.header=Achatar PDFs -flatten.submit=Achatar - - -#ScannerImageSplit -ScannerImageSplit.selectText.1=Limite de Ângulo: -ScannerImageSplit.selectText.2=Define o ângulo absoluto mínimo necessário para que a imagem seja girada (padrão: 10). -ScannerImageSplit.selectText.3=Tolerância: -ScannerImageSplit.selectText.4=Determina o intervalo de variação de cor em torno da cor de fundo estimada (padrão: 30). -ScannerImageSplit.selectText.5=Área Mínima: -ScannerImageSplit.selectText.6=Define o limite mínimo de área para uma foto (padrão: 10000). -ScannerImageSplit.selectText.7=Área mínima de contorno: -ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para uma foto -ScannerImageSplit.selectText.9=Tamanho da Borda: -ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1). - - -#OCR -ocr.title=OCR / Limpeza de Digitalização -ocr.header=OCR / Limpeza de Digitalização (Reconhecimento Óptico de Caracteres) -ocr.selectText.1=Selecione os idiomas a serem detectados no PDF (os listados são os atualmente detectados): -ocr.selectText.2=Criar um arquivo de texto contendo o texto OCR ao lado do PDF com OCR -ocr.selectText.3=Páginas corretamente digitalizadas em um ângulo inclinado, gire-as de volta à posição original -ocr.selectText.4=Limpar a página para reduzir a probabilidade de o OCR encontrar texto no ruído de fundo (sem alteração na saída) -ocr.selectText.5=Limpar a página para reduzir a probabilidade de o OCR encontrar texto no ruído de fundo, mantendo a limpeza na saída. -ocr.selectText.6=Ignorar páginas com texto interativo, processar apenas as páginas de OCR que são imagens -ocr.selectText.7=Forçar OCR, executar OCR em todas as páginas, removendo todos os elementos de texto originais -ocr.selectText.8=Normal (gerará um erro se o PDF já contiver texto) -ocr.selectText.9=Configurações adicionais -ocr.selectText.10=Modo OCR -ocr.selectText.11=Remover imagens após o OCR (remove TODAS as imagens, útil apenas como parte do processo de conversão) -ocr.selectText.12=Render Type (Advanced) -ocr.help=Por favor, leia a documentação sobre como usar isso para outros idiomas e/ou fora do ambiente Docker -ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. -ocr.submit=Processar PDF com OCR - - -#extractImages -extractImages.title=Extrair Imagens -extractImages.header=Extrair Imagens -extractImages.selectText=Selecione o formato de imagem para converter as imagens extraídas -extractImages.submit=Extrair - - -#File to PDF -fileToPDF.title=Arquivo para PDF -fileToPDF.header=Converter Qualquer Arquivo para PDF -fileToPDF.credit=Este serviço usa o LibreOffice e o Unoconv para conversão de arquivos. -fileToPDF.supportedFileTypes=Os tipos de arquivo suportados devem incluir os listados abaixo. No entanto, para obter uma lista atualizada completa dos formatos suportados, consulte a documentação do LibreOffice. -fileToPDF.submit=Converter para PDF - - -#compress -compress.title=Comprimir -compress.header=Comprimir PDF -compress.credit=Este serviço usa o Ghostscript para compressão/otimização de PDF. -compress.selectText.1=Modo Manual - De 1 a 4 -compress.selectText.2=Nível de Otimização: -compress.selectText.3=4 (Pior para imagens de texto) -compress.selectText.4=Modo Automático - Ajusta automaticamente a qualidade para atingir o tamanho exato do PDF -compress.selectText.5=Tamanho Esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB) -compress.submit=Comprimir - - -#Add image -addImage.title=Adicionar Imagem -addImage.header=Adicionar Imagem ao PDF -addImage.everyPage=Para cada página? -addImage.upload=Enviar Imagem -addImage.submit=Adicionar Imagem - - -#merge -merge.title=Mesclar -merge.header=Mesclar Vários PDFs (2+) -merge.sortByName=Sort by name -merge.sortByDate=Sort by date -merge.submit=Mesclar - - -#pdfOrganiser -pdfOrganiser.title=Organizador de Páginas -pdfOrganiser.header=Organizador de Páginas PDF -pdfOrganiser.submit=Reorganizar Páginas - - -#multiTool -multiTool.title=Multiferramenta de PDF -multiTool.header=Multiferramenta de PDF - -#view pdf -viewPdf.title=View PDF -viewPdf.header=View PDF - -#pageRemover -pageRemover.title=Remover Página -pageRemover.header=Remover Páginas do PDF -pageRemover.pagesToDelete=Páginas a serem excluídas (insira uma lista separada por vírgulas de números de página): -pageRemover.submit=Excluir Páginas - - -#rotate -rotate.title=Girar PDF -rotate.header=Girar PDF -rotate.selectAngle=Selecione o ângulo de rotação (múltiplos de 90 graus): -rotate.submit=Girar - - -#merge -split.title=Dividir PDF -split.header=Dividir PDF -split.desc.1=Os números selecionados correspondem às páginas onde você deseja fazer a divisão. -split.desc.2=Por exemplo, selecionar 1,3,7-8 dividirá um documento de 10 páginas em 6 PDFs separados da seguinte forma: -split.desc.3=Documento Nº1: Página 1 -split.desc.4=Documento Nº2: Páginas 2 e 3 -split.desc.5=Documento Nº3: Páginas 4, 5 e 6 -split.desc.6=Documento Nº4: Página 7 -split.desc.7=Documento Nº5: Página 8 -split.desc.8=Documento Nº6: Páginas 9 e 10 -split.splitPages=Digite as páginas para a divisão: -split.submit=Dividir - - -#merge -imageToPDF.title=Imagem para PDF -imageToPDF.header=Converter Imagem para PDF -imageToPDF.submit=Converter -imageToPDF.selectLabel=Image Fit Options -imageToPDF.fillPage=Fill Page -imageToPDF.fitDocumentToImage=Fit Page to Image -imageToPDF.maintainAspectRatio=Maintain Aspect Ratios -imageToPDF.selectText.2=Girar Automaticamente -imageToPDF.selectText.3=Lógica de Vários Arquivos (Ativada apenas ao trabalhar com várias imagens) -imageToPDF.selectText.4=Mesclar em um Único PDF -imageToPDF.selectText.5=Converter em PDFs Separados - - -#pdfToImage -pdfToImage.title=PDF para Imagem -pdfToImage.header=Converter PDF para Imagem -pdfToImage.selectText=Formato de Imagem -pdfToImage.singleOrMultiple=Tipo de Resultado de Imagem -pdfToImage.single=Única Imagem Grande -pdfToImage.multi=Múltiplas Imagens -pdfToImage.colorType=Tipo de Cor -pdfToImage.color=Colorida -pdfToImage.grey=Escala de Cinza -pdfToImage.blackwhite=Preto e Branco (pode resultar em perda de dados!) -pdfToImage.submit=Converter - - -#addPassword -addPassword.title=Adicionar Senha -addPassword.header=Adicionar Senha (Criptografar) -addPassword.selectText.1=Selecione o PDF para Criptografar -addPassword.selectText.2=Senha -addPassword.selectText.3=Tamanho da Chave de Criptografia -addPassword.selectText.4=Valores mais altos são mais seguros, mas valores mais baixos são mais compatíveis. -addPassword.selectText.5=Permissões para Definir -addPassword.selectText.6=Impedir Montagem do Documento -addPassword.selectText.7=Impedir Extração de Conteúdo -addPassword.selectText.8=Impedir Extração para Acessibilidade -addPassword.selectText.9=Impedir Preenchimento de Formulário -addPassword.selectText.10=Impedir Modificação -addPassword.selectText.11=Impedir Modificação de Anotação -addPassword.selectText.12=Impedir Impressão -addPassword.selectText.13=Impedir Impressão de Formatos Diferentes -addPassword.selectText.14=Senha do Proprietário -addPassword.selectText.15=Restringe o que pode ser feito com o documento após a abertura (nem todos os leitores dão suporte a isso) -addPassword.selectText.16=Restringe a abertura do próprio documento -addPassword.submit=Criptografar - - -#watermark -watermark.title=Adicionar Marca d'Água -watermark.header=Adicionar Marca d'Água -watermark.selectText.1=Selecione o PDF para Adicionar a Marca d'Água -watermark.selectText.2=Texto da Marca d'Água -watermark.selectText.3=Tamanho da Fonte -watermark.selectText.4=Rotação (0-360) -watermark.selectText.5=Espaçamento Horizontal (widthSpacer) -watermark.selectText.6=Espaçamento Vertical (heightSpacer) -watermark.selectText.7=Opacidade (0% - 100%) -watermark.selectText.8=Tipo de Marca d'Água -watermark.selectText.9=Imagem da Marca d'Água -watermark.submit=Adicionar Marca d'Água - - -#Change permissions -permissions.title=Alterar Permissões -permissions.header=Alterar Permissões -permissions.warning=Nota: Para tornar essas permissões inalteráveis, é recomendável defini-las com uma senha através da página "Adicionar Senha". -permissions.selectText.1=Selecione o PDF para Alterar as Permissões -permissions.selectText.2=Permissões para Definir -permissions.selectText.3=Impedir Montagem do Documento -permissions.selectText.4=Impedir Extração de Conteúdo -permissions.selectText.5=Impedir Extração para Acessibilidade -permissions.selectText.6=Impedir Preenchimento de Formulário -permissions.selectText.7=Impedir Modificações -permissions.selectText.8=Impedir Modificação de Anotação -permissions.selectText.9=Impedir Impressão -permissions.selectText.10=Impedir Impressão de Formatos Diferentes -permissions.submit=Mudar - - -#remove password -removePassword.title=Remover Senha -removePassword.header=Remover Senha (Descriptografar) -removePassword.selectText.1=Selecione o PDF para Descriptografar -removePassword.selectText.2=Senha -removePassword.submit=Remover - - -#changeMetadata -changeMetadata.title=Título: -changeMetadata.header=Alterar Metadados -changeMetadata.selectText.1=Edite as Variáveis que Deseja Alterar -changeMetadata.selectText.2=Excluir Todos os Metadados -changeMetadata.selectText.3=Mostrar Metadados Personalizados -changeMetadata.author=Autor: -changeMetadata.creationDate=Data de Criação (aaaa/MM/dd HH:mm:ss): -changeMetadata.creator=Criador: -changeMetadata.keywords=Palavras-chave: -changeMetadata.modDate=Data de Modificação (aaaa/MM/dd HH:mm:ss): -changeMetadata.producer=Produtor: -changeMetadata.subject=Assunto: -changeMetadata.title=Título: -changeMetadata.trapped=Trapped: -changeMetadata.selectText.4=Outros Metadados -changeMetadata.selectText.5=Adicionar Entrada de Metadados Personalizados -changeMetadata.submit=Mudar - - -#pdfToPDFA -pdfToPDFA.title=PDF para PDF/A -pdfToPDFA.header=PDF para PDF/A -pdfToPDFA.credit=Este serviço usa OCRmyPDF para Conversão de PDF/A -pdfToPDFA.submit=Converter - - -#PDFToWord -PDFToWord.title=PDF para Word -PDFToWord.header=PDF para Word -PDFToWord.selectText.1=Formato do Arquivo de Saída -PDFToWord.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. -PDFToWord.submit=Converter - - -#PDFToPresentation -PDFToPresentation.title=PDF para Apresentação -PDFToPresentation.header=PDF para Apresentação -PDFToPresentation.selectText.1=Formato do Arquivo de Saída -PDFToPresentation.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. -PDFToPresentation.submit=Converter - - -#PDFToText -PDFToText.title=PDF para Texto/RTF -PDFToText.header=PDF para Texto/RTF -PDFToText.selectText.1=Formato do Arquivo de Saída -PDFToText.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. -PDFToText.submit=Converter - - -#PDFToHTML -PDFToHTML.title=PDF para HTML -PDFToHTML.header=PDF para HTML -PDFToHTML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. -PDFToHTML.submit=Converter - - -#PDFToXML -PDFToXML.title=PDF para XML -PDFToXML.header=PDF para XML -PDFToXML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. -PDFToXML.submit=Converter - -#PDFToCSV -PDFToCSV.title=PDF para CSV -PDFToCSV.header=PDF para CSV -PDFToCSV.submit=Eztenna \ No newline at end of file +########### +# Generic # +########### +# the direction that the language is written (ltr=left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Selecione PDF(s) +multiPdfPrompt=Selecione PDFs (2+) +multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários +imgPrompt=Selecione a(s) imagem(ns) +genericSubmit=Enviar +processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo +pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página): +goToPage=Ir +true=Verdadeiro +false=Falso +unknown=Desconhecido +save=Salvar +close=Fechar +filesSelected=arquivos selecionados +noFavourites=Nenhum favorito adicionado +bored=Entediado esperando? +alphabet=Alfabeto +downloadPdf=baixar PDF +text=Texto +font=Fonte +selectFillter=-- Selecione -- +pageNum=Número de página +sizes.small=Pequeno +sizes.medium=Médio +sizes.large=Grande +sizes.x-large=Muito grande +error.pdfPassword=O documento PDF está protegido por senha e a senha não foi fornecida ou está incorreta +delete=Delete +username=Username +password=Password +welcome=Welcome +property=Property +black=Black +white=White +red=Red +green=Green +blue=Blue +custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! + +changedCredsMessage=Credentials changed! +notAuthenticatedMessage=User not authenticated. +userNotFoundMessage=User not found. +incorrectPasswordMessage=Current password is incorrect. +usernameExistsMessage=New Username already exists. + + +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + + +############# +# NAVBAR # +############# +navbar.convert=Converter +navbar.security=Segurança +navbar.other=Outro +navbar.darkmode=Modo Escuro +navbar.pageOps=Operações de página +navbar.settings=Configurações + +############# +# SETTINGS # +############# +settings.title=Configurações +settings.update=Atualização disponível +settings.appVersion=Versão do aplicativo: +settings.downloadOption.title=Escolha a opção de download (para downloads não compactados de arquivo único): +settings.downloadOption.1=Abrir na mesma janela +settings.downloadOption.2=Abrir em nova janela +settings.downloadOption.3=⇬ Fazer download do arquivo +settings.zipThreshold=Compactar arquivos quando o número de arquivos baixados exceder +settings.signOut=Sign Out +settings.accountSettings=Account Settings + + + +changeCreds.title=Change Credentials +changeCreds.header=Update Your Account Details +changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) +changeCreds.newUsername=New Username +changeCreds.oldPassword=Current Password +changeCreds.newPassword=New Password +changeCreds.confirmNewPassword=Confirm New Password +changeCreds.submit=Submit Changes + + + +account.title=Account Settings +account.accountSettings=Account Settings +account.adminSettings=Admin Settings - View and Add Users +account.userControlSettings=User Control Settings +account.changeUsername=Change Username +account.changeUsername=Change Username +account.password=Confirmation Password +account.oldPassword=Old password +account.newPassword=New Password +account.changePassword=Change Password +account.confirmNewPassword=Confirm New Password +account.signOut=Sign Out +account.yourApiKey=Your API Key +account.syncTitle=Sync browser settings with Account +account.settingsCompare=Settings Comparison: +account.property=Property +account.webBrowserSettings=Web Browser Setting +account.syncToBrowser=Sync Account -> Browser +account.syncToAccount=Sync Account <- Browser + + +adminUserSettings.title=User Control Settings +adminUserSettings.header=Admin User Control Settings +adminUserSettings.admin=Admin +adminUserSettings.user=User +adminUserSettings.addUser=Add New User +adminUserSettings.roles=Roles +adminUserSettings.role=Role +adminUserSettings.actions=Actions +adminUserSettings.apiUser=Limited API User +adminUserSettings.webOnlyUser=Web Only User +adminUserSettings.demoUser=Demo User (No custom settings) +adminUserSettings.forceChange=Force user to change username/password on login +adminUserSettings.submit=Save User + +############# +# HOME-PAGE # +############# +home.desc=Seu melhor utilitário para suas necessidades de PDF. +home.searchBar=Search for features... + + +home.viewPdf.title=View PDF +home.viewPdf.desc=View, annotate, add text or images +viewPdf.tags=view,read,annotate,text,image + +home.multiTool.title=Multiferramenta de PDF +home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas +multiTool.tags=Multi Ferramenta, Operação Múltipla, Interface do Usuário, Clique e Arraste, Front-end, Lado do Cliente + +home.merge.title=Mesclar +home.merge.desc=Mesclar facilmente vários PDFs em um só. +merge.tags=mesclar, Operações de Página, Lado do Servidor + +home.split.title=Dividir +home.split.desc=Dividir PDFs em vários documentos +split.tags=Operações de Página, dividir, Múltiplas Páginas, cortar, Lado do Servidor + +home.rotate.title=Girar +home.rotate.desc=Girar facilmente seus PDFs. +rotate.tags=Lado do Servidor + + +home.imageToPdf.title=Imagem para PDF +home.imageToPdf.desc=Converter uma imagem (PNG, JPEG, GIF) em PDF. +imageToPdf.tags=conversão, img, jpg, imagem, foto + +home.pdfToImage.title=PDF para Imagem +home.pdfToImage.desc=Converter um PDF em uma imagem. (PNG, JPG, GIF) +pdfToImage.tags=conversão, img, jpg, imagem, foto + +home.pdfOrganiser.title=Organizar +home.pdfOrganiser.desc=Remover/reorganizar as páginas em qualquer ordem. +pdfOrganiser.tags=duplex, par, ímpar, ordenar, mover + + +home.addImage.title=Adicionar Imagem +home.addImage.desc=Adicionar uma imagem em um local definido no PDF (trabalho em andamento) +addImage.tags=img, jpg, imagem, foto + +home.watermark.title=Adicionar Marca d'água +home.watermark.desc=Adicionar uma marca d'água personalizada ao seu documento PDF. +watermark.tags=Texto, repetindo, rótulo, próprio, direitos autorais, marca registrada, img, jpg, imagem, foto + +home.permissions.title=Alterar Permissões +home.permissions.desc=Alterar as permissões do seu documento PDF. +permissions.tags=leitura, escrita, edição, impressão + + +home.removePages.title=Remover +home.removePages.desc=Excluir as páginas indesejadas do seu documento PDF. +removePages.tags=Remover páginas, excluir páginas + +home.addPassword.title=Adicionar Senha +home.addPassword.desc=Criptografar seu documento PDF com uma senha. +addPassword.tags=seguro, segurança + +home.removePassword.title=Remover Senha +home.removePassword.desc=Remover a proteção por senha do seu documento PDF. +removePassword.tags=seguro, Descriptografar, segurança, remover senha + +home.compressPdfs.title=Comprimir +home.compressPdfs.desc=Comprimir PDFs para reduzir o tamanho do arquivo. +compressPdfs.tags=compactar, pequeno, mínimo + + +home.changeMetadata.title=Alterar Metadados +home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF. +changeMetadata.tags=Título, autor, data, criação, hora, editor, produtor, estatísticas + +home.fileToPDF.title=Converter Arquivo para PDF +home.fileToPDF.desc=Converter praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) +fileToPDF.tags=transformação, formato, documento, imagem, slide, texto, conversão, escritório, documentos, word, excel, powerpoint + +home.ocr.title=OCR / Limpeza de Digitalizações +home.ocr.desc=A limpeza verifica e detecta texto em imagens de um PDF e o adiciona novamente como texto. +ocr.tags=reconhecimento, texto, imagem, digitalização, leitura, identificação, detecção, editável + + +home.extractImages.title=Extrair Imagens +home.extractImages.desc=Extrair todas as imagens de um PDF e salvá-las em um arquivo zip. +extractImages.tags=imagem, foto, salvar, arquivo, zip, captura, coleta + +home.pdfToPDFA.title=PDF para PDF/A +home.pdfToPDFA.desc=Converter PDF para o formato PDF/A para armazenamento a longo prazo. +pdfToPDFA.tags=arquivo, longo prazo, padrão, conversão, armazenamento, preservação + +home.PDFToWord.title=PDF para Word +home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) +PDFToWord.tags=doc, docx, odt, word, transformação, formato, conversão, escritório, microsoft, arquivo doc + +home.PDFToPresentation.title=PDF para Apresentação +home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP) +PDFToPresentation.tags=slides, apresentação, escritório, microsoft + +home.PDFToText.title=PDF para Texto/RTF +home.PDFToText.desc=Converter PDF em formato de texto ou RTF +PDFToText.tags=formato rico, formato de texto enriquecido, formato de texto rico + +home.PDFToHTML.title=PDF para HTML +home.PDFToHTML.desc=Converter PDF para o formato HTML +PDFToHTML.tags=conteúdo web, compatível com navegador + + +home.PDFToXML.title=PDF para XML +home.PDFToXML.desc=Converter PDF para o formato XML +PDFToXML.tags=extração-de-dados,conteúdo-estruturado,interoperabilidade,transformação,converter + +home.ScannerImageSplit.title=Detectar/Dividir Fotos Digitalizadas +home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma imagem/PDF digitalizado +ScannerImageSplit.tags=separar,detecção-automática,digitalizações,foto-múltipla,organizar + +home.sign.title=Assinar +home.sign.desc=Adicionar assinatura ao PDF por desenho, texto ou imagem +sign.tags=autorizar,iniciais,assinatura-desenhada,assinatura-de-texto,assinatura-de-imagem + +home.flatten.title=Achatar +home.flatten.desc=Remover todos os elementos e formulários interativos de um PDF +flatten.tags=estático,desativar,não-interativo,otimizar + +home.repair.title=Reparar +home.repair.desc=Tentar reparar um PDF corrompido/quebrado +repair.tags=corrigir,restaurar,correção,recuperar + +home.removeBlanks.title=Remover Páginas em Branco +home.removeBlanks.desc=Detectar e remover páginas em branco de um documento +removeBlanks.tags=limpeza,otimização,sem-conteúdo,organizar + +home.removeAnnotations.title=Remove Annotations +home.removeAnnotations.desc=Removes all comments/annotations from a PDF +removeAnnotations.tags=comments,highlight,notes,markup,remove + +home.compare.title=Comparar +home.compare.desc=Comparar e mostrar as diferenças entre 2 documentos PDF +compare.tags=diferenciar,contraste,mudanças,análise + +home.certSign.title=Assinar com Certificado +home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12) +certSign.tags=autenticar,PEM,P12,oficial,criptografar + +home.pageLayout.title=Layout de Múltiplas Páginas +home.pageLayout.desc=Mesclar várias páginas de um documento PDF em uma única página +pageLayout.tags=mesclar,composto,vista-única,organizar + +home.scalePages.title=Ajustar Tamanho/Escala de Página +home.scalePages.desc=Alterar o tamanho/escala da página e/ou seu conteúdo. +scalePages.tags=redimensionar,modificar,dimensão,adaptar + +home.pipeline.title=Pipeline (Avançado) +home.pipeline.desc=Executar várias ações em PDFs definindo scripts de pipeline +pipeline.tags=automatizar,sequência,scriptado,processo-em-lote + +home.add-page-numbers.title=Adicionar Números de Página +home.add-page-numbers.desc=Adicionar números de página em todo o documento em um local definido +add-page-numbers.tags=paginar,rotular,organizar,índice + +home.auto-rename.title=Renomear Automaticamente o Arquivo PDF +home.auto-rename.desc=Renomeia automaticamente um arquivo PDF com base no cabeçalho detectado +auto-rename.tags=detecção-automática,baseado-em-cabeçalho,organizar,relabel + +home.adjust-contrast.title=Ajustar Cores/Contraste +home.adjust-contrast.desc=Ajustar Contraste, Saturação e Brilho de um PDF +adjust-contrast.tags=correção-de-cor,ajustar,modificar,realçar + +home.crop.title=Cortar PDF +home.crop.desc=Cortar um PDF para reduzir o tamanho (mantém o texto!) +crop.tags=aparar,encolher,editar,formato + +home.autoSplitPDF.title=Divisão Automática de Páginas +home.autoSplitPDF.desc=Dividir automaticamente um PDF digitalizado com separador de páginas físicas QR Code +autoSplitPDF.tags=baseado-em-QR,separar,segmento-de-digitalização,organizar + +home.sanitizePdf.title=Sanitizar +home.sanitizePdf.desc=Remover scripts e outros elementos de arquivos PDF +sanitizePdf.tags=limpar,seguro,protegido,remover-ameaças + +home.URLToPDF.title=Converter Site para PDF +home.URLToPDF.desc=Converte qualquer página da internet para um arquivo PDF +URLToPDF.tags=captura-de-web,salvar-página,web-para-doc,arquivar + +home.HTMLToPDF.title=HTML para PDF +home.HTMLToPDF.desc=Converte qualquer arquivo HTML ou zip para PDF +HTMLToPDF.tags=marcação,conteúdo-web,transformação,converter + + +home.MarkdownToPDF.title=Markdown para PDF +home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF +MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter + + +home.getPdfInfo.title=Obter TODAS as Informações de um PDF +home.getPdfInfo.desc=Obtém todas as informações possíveis de um PDF +getPdfInfo.tags=informações,dados,estatísticas + + +home.extractPage.title=Extrair Página(s) +home.extractPage.desc=Extrai páginas selecionadas de um PDF +extractPage.tags=extrair + + +home.PdfToSinglePage.title=PDF para Página Única Grande +home.PdfToSinglePage.desc=Combina todas as páginas de um PDF em uma única página grande +PdfToSinglePage.tags=página única + + +home.showJS.title=Mostrar Javascript +home.showJS.desc=Procura e exibe qualquer JavaScript injetado em um PDF +showJS.tags=JavaScript + +home.autoRedact.title=Auto Redact +home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text +showJS.tags=JavaScript + +home.tableExtraxt.title=PDF to CSV +home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV +tableExtraxt.tags=CSV,Table Extraction,extract,convert + + +home.autoSizeSplitPDF.title=Auto Split by Size/Count +home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count +autoSizeSplitPDF.tags=pdf,split,document,organization + + +home.overlay-pdfs.title=Overlay PDFs +home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF +overlay-pdfs.tags=Overlay + +home.split-by-sections.title=Split PDF by Sections +home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections +split-by-sections.tags=Section Split, Divide, Customize + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Sign in +login.signin=Sign in +login.rememberme=Remember me +login.invalid=Invalid username or password. +login.locked=Your account has been locked. +login.signinTitle=Please sign in + + +#auto-redact +autoRedact.title=Auto Redact +autoRedact.header=Auto Redact +autoRedact.colorLabel=Colour +autoRedact.textsToRedactLabel=Text to Redact (line-separated) +autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret +autoRedact.useRegexLabel=Use Regex +autoRedact.wholeWordSearchLabel=Whole Word Search +autoRedact.customPaddingLabel=Custom Extra Padding +autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +autoRedact.submitButton=Submit + + +#showJS +showJS.title=Exibir JavaScript +showJS.header=Exibir JavaScript +showJS.downloadJS=Download do JavaScript +showJS.submit=Exibir + + +#pdfToSinglePage +pdfToSinglePage.title=PDF para Página Única +pdfToSinglePage.header=PDF para Página Única +pdfToSinglePage.submit=Converter para Página Única + + +#pageExtracter +pageExtracter.title=Extrair Páginas +pageExtracter.header=Extrair Páginas +pageExtracter.submit=Extrair + + +#getPdfInfo +getPdfInfo.title=Obter Informações do PDF +getPdfInfo.header=Obter Informações do PDF +getPdfInfo.submit=Obter Informações +getPdfInfo.downloadJson=Download JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown para PDF +MarkdownToPDF.header=Markdown para PDF +MarkdownToPDF.submit=Converter +MarkdownToPDF.help=Trabalho em andamento +MarkdownToPDF.credit=Usa o WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL para PDF +URLToPDF.header=URL para PDF +URLToPDF.submit=Converter +URLToPDF.credit=Usa o WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML para PDF +HTMLToPDF.header=HTML para PDF +HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html/css/imagens etc necessários +HTMLToPDF.submit=Converter +HTMLToPDF.credit=Usa o WeasyPrint + + +#sanitizePDF +sanitizePDF.title=Sanitizar PDF +sanitizePDF.header=Sanitizar um arquivo PDF +sanitizePDF.selectText.1=Remover ações de JavaScript +sanitizePDF.selectText.2=Remover arquivos embutidos +sanitizePDF.selectText.3=Remover metadados +sanitizePDF.selectText.4=Remover links +sanitizePDF.selectText.5=Remover fontes +sanitizePDF.submit=Sanitizar PDF + + +#addPageNumbers +addPageNumbers.title=Adicionar Números de Página +addPageNumbers.header=Adicionar Números de Página +addPageNumbers.selectText.1=Selecionar arquivo PDF: +addPageNumbers.selectText.2=Tamanho da Margem +addPageNumbers.selectText.3=Posição +addPageNumbers.selectText.4=Número Inicial +addPageNumbers.selectText.5=Páginas a Numerar +addPageNumbers.selectText.6=Texto Personalizado +addPageNumbers.customTextDesc=Custom Text +addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc +addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} +addPageNumbers.submit=Adicionar Números de Página + + +#auto-rename +auto-rename.title=Rename Automático +auto-rename.header=Rename Automático de PDF +auto-rename.submit=Rename Automático + + +#adjustContrast +adjustContrast.title=Ajustar Contraste +adjustContrast.header=Ajustar Contraste +adjustContrast.contrast=Contraste: +adjustContrast.brightness=Brilho: +adjustContrast.saturation=Saturação: +adjustContrast.download=Download + + +#crop +crop.title=Cortar +crop.header=Cortar Imagem +crop.submit=Enviar + + +#autoSplitPDF +autoSplitPDF.title=Divisão Automática de PDF +autoSplitPDF.header=Divisão Automática de PDF +autoSplitPDF.description=Imprima, insira, digitalize, faça o upload e deixe que a gente divida seus documentos automaticamente. Nenhuma classificação manual necessária. +autoSplitPDF.selectText.1=Imprima algumas folhas divisórias abaixo (preto e branco está bom). +autoSplitPDF.selectText.2=Digitalize todos os seus documentos de uma vez, inserindo a folha divisória entre eles. +autoSplitPDF.selectText.3=Faça o upload do único arquivo PDF grande digitalizado e deixe o Stirling PDF cuidar do resto. +autoSplitPDF.selectText.4=As páginas divisórias são detectadas e removidas automaticamente, garantindo um documento final organizado. +autoSplitPDF.formPrompt=Enviar PDF contendo folhas divisórias Stirling-PDF: +autoSplitPDF.duplexMode=Modo Duplex (Digitalização frente e verso) +autoSplitPDF.dividerDownload1=Download 'Folha Divisória Automática (mínima).pdf' +autoSplitPDF.dividerDownload2=Download 'Folha Divisória Automática (com instruções).pdf' +autoSplitPDF.submit=Enviar + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Layout de Múltiplas Páginas +pageLayout.header=Layout de Múltiplas Páginas +pageLayout.pagesPerSheet=Páginas por folha: +pageLayout.addBorder=Add Borders +pageLayout.submit=Enviar + + +#scalePages +scalePages.title=Ajustar Tamanho/Escala da Página +scalePages.header=Ajustar Tamanho/Escala da Página +scalePages.pageSize=Tamanho de uma página do documento. +scalePages.scaleFactor=Fator de zoom (corte) de uma página. +scalePages.submit=Enviar + + +#certSign +certSign.title=Assinatura com Certificado +certSign.header=Assine um PDF com o seu certificado (Em desenvolvimento) +certSign.selectPDF=Selecione um arquivo PDF para assinatura: +certSign.selectKey=Selecione o seu arquivo de chave privada (formato PKCS#8, pode ser .pem ou .der): +certSign.selectCert=Selecione o seu arquivo de certificado (formato X.509, pode ser .pem ou .der): +certSign.selectP12=Selecione o seu arquivo de armazenamento de chave PKCS#12 (.p12 ou .pfx) (opcional, se fornecido, deve conter a sua chave privada e certificado): +certSign.certType=Tipo de Certificado +certSign.password=Digite a senha do seu armazenamento de chave ou chave privada (se aplicável): +certSign.showSig=Mostrar Assinatura +certSign.reason=Razão +certSign.location=Localização +certSign.name=Nome +certSign.submit=Assinar PDF + + +#removeBlanks +removeBlanks.title=Remover Páginas em Branco +removeBlanks.header=Remover Páginas em Branco +removeBlanks.threshold=Limiar: +removeBlanks.thresholdDesc=Limiar para determinar o quão branco um pixel branco deve ser +removeBlanks.whitePercent=Porcentagem de Branco (%): +removeBlanks.whitePercentDesc=Porcentagem da página que deve ser branca para ser removida +removeBlanks.submit=Remover Páginas em Branco + + +#removeAnnotations +removeAnnotations.title=Remove Annotations +removeAnnotations.header=Remove Annotations +removeAnnotations.submit=Remove + + +#compare +compare.title=Comparar +compare.header=Comparar PDFs +compare.document.1=Documento 1 +compare.document.2=Documento 2 +compare.submit=Comparar + + +#sign +sign.title=Assinar +sign.header=Assinar PDFs +sign.upload=Enviar Imagem +sign.draw=Desenhar Assinatura +sign.text=Inserir Texto +sign.clear=Limpar +sign.add=Adicionar + + +#repair +repair.title=Reparar +repair.header=Reparar PDFs +repair.submit=Reparar + + +#flatten +flatten.title=Achatar +flatten.header=Achatar PDFs +flatten.submit=Achatar + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Limite de Ângulo: +ScannerImageSplit.selectText.2=Define o ângulo absoluto mínimo necessário para que a imagem seja girada (padrão: 10). +ScannerImageSplit.selectText.3=Tolerância: +ScannerImageSplit.selectText.4=Determina o intervalo de variação de cor em torno da cor de fundo estimada (padrão: 30). +ScannerImageSplit.selectText.5=Área Mínima: +ScannerImageSplit.selectText.6=Define o limite mínimo de área para uma foto (padrão: 10000). +ScannerImageSplit.selectText.7=Área mínima de contorno: +ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para uma foto +ScannerImageSplit.selectText.9=Tamanho da Borda: +ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1). + + +#OCR +ocr.title=OCR / Limpeza de Digitalização +ocr.header=OCR / Limpeza de Digitalização (Reconhecimento Óptico de Caracteres) +ocr.selectText.1=Selecione os idiomas a serem detectados no PDF (os listados são os atualmente detectados): +ocr.selectText.2=Criar um arquivo de texto contendo o texto OCR ao lado do PDF com OCR +ocr.selectText.3=Páginas corretamente digitalizadas em um ângulo inclinado, gire-as de volta à posição original +ocr.selectText.4=Limpar a página para reduzir a probabilidade de o OCR encontrar texto no ruído de fundo (sem alteração na saída) +ocr.selectText.5=Limpar a página para reduzir a probabilidade de o OCR encontrar texto no ruído de fundo, mantendo a limpeza na saída. +ocr.selectText.6=Ignorar páginas com texto interativo, processar apenas as páginas de OCR que são imagens +ocr.selectText.7=Forçar OCR, executar OCR em todas as páginas, removendo todos os elementos de texto originais +ocr.selectText.8=Normal (gerará um erro se o PDF já contiver texto) +ocr.selectText.9=Configurações adicionais +ocr.selectText.10=Modo OCR +ocr.selectText.11=Remover imagens após o OCR (remove TODAS as imagens, útil apenas como parte do processo de conversão) +ocr.selectText.12=Render Type (Advanced) +ocr.help=Por favor, leia a documentação sobre como usar isso para outros idiomas e/ou fora do ambiente Docker +ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. +ocr.submit=Processar PDF com OCR + + +#extractImages +extractImages.title=Extrair Imagens +extractImages.header=Extrair Imagens +extractImages.selectText=Selecione o formato de imagem para converter as imagens extraídas +extractImages.submit=Extrair + + +#File to PDF +fileToPDF.title=Arquivo para PDF +fileToPDF.header=Converter Qualquer Arquivo para PDF +fileToPDF.credit=Este serviço usa o LibreOffice e o Unoconv para conversão de arquivos. +fileToPDF.supportedFileTypes=Os tipos de arquivo suportados devem incluir os listados abaixo. No entanto, para obter uma lista atualizada completa dos formatos suportados, consulte a documentação do LibreOffice. +fileToPDF.submit=Converter para PDF + + +#compress +compress.title=Comprimir +compress.header=Comprimir PDF +compress.credit=Este serviço usa o Ghostscript para compressão/otimização de PDF. +compress.selectText.1=Modo Manual - De 1 a 4 +compress.selectText.2=Nível de Otimização: +compress.selectText.3=4 (Pior para imagens de texto) +compress.selectText.4=Modo Automático - Ajusta automaticamente a qualidade para atingir o tamanho exato do PDF +compress.selectText.5=Tamanho Esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB) +compress.submit=Comprimir + + +#Add image +addImage.title=Adicionar Imagem +addImage.header=Adicionar Imagem ao PDF +addImage.everyPage=Para cada página? +addImage.upload=Enviar Imagem +addImage.submit=Adicionar Imagem + + +#merge +merge.title=Mesclar +merge.header=Mesclar Vários PDFs (2+) +merge.sortByName=Sort by name +merge.sortByDate=Sort by date +merge.submit=Mesclar + + +#pdfOrganiser +pdfOrganiser.title=Organizador de Páginas +pdfOrganiser.header=Organizador de Páginas PDF +pdfOrganiser.submit=Reorganizar Páginas + + +#multiTool +multiTool.title=Multiferramenta de PDF +multiTool.header=Multiferramenta de PDF + +#view pdf +viewPdf.title=View PDF +viewPdf.header=View PDF + +#pageRemover +pageRemover.title=Remover Página +pageRemover.header=Remover Páginas do PDF +pageRemover.pagesToDelete=Páginas a serem excluídas (insira uma lista separada por vírgulas de números de página): +pageRemover.submit=Excluir Páginas + + +#rotate +rotate.title=Girar PDF +rotate.header=Girar PDF +rotate.selectAngle=Selecione o ângulo de rotação (múltiplos de 90 graus): +rotate.submit=Girar + + +#merge +split.title=Dividir PDF +split.header=Dividir PDF +split.desc.1=Os números selecionados correspondem às páginas onde você deseja fazer a divisão. +split.desc.2=Por exemplo, selecionar 1,3,7-8 dividirá um documento de 10 páginas em 6 PDFs separados da seguinte forma: +split.desc.3=Documento Nº1: Página 1 +split.desc.4=Documento Nº2: Páginas 2 e 3 +split.desc.5=Documento Nº3: Páginas 4, 5 e 6 +split.desc.6=Documento Nº4: Página 7 +split.desc.7=Documento Nº5: Página 8 +split.desc.8=Documento Nº6: Páginas 9 e 10 +split.splitPages=Digite as páginas para a divisão: +split.submit=Dividir + + +#merge +imageToPDF.title=Imagem para PDF +imageToPDF.header=Converter Imagem para PDF +imageToPDF.submit=Converter +imageToPDF.selectLabel=Image Fit Options +imageToPDF.fillPage=Fill Page +imageToPDF.fitDocumentToImage=Fit Page to Image +imageToPDF.maintainAspectRatio=Maintain Aspect Ratios +imageToPDF.selectText.2=Girar Automaticamente +imageToPDF.selectText.3=Lógica de Vários Arquivos (Ativada apenas ao trabalhar com várias imagens) +imageToPDF.selectText.4=Mesclar em um Único PDF +imageToPDF.selectText.5=Converter em PDFs Separados + + +#pdfToImage +pdfToImage.title=PDF para Imagem +pdfToImage.header=Converter PDF para Imagem +pdfToImage.selectText=Formato de Imagem +pdfToImage.singleOrMultiple=Tipo de Resultado de Imagem +pdfToImage.single=Única Imagem Grande +pdfToImage.multi=Múltiplas Imagens +pdfToImage.colorType=Tipo de Cor +pdfToImage.color=Colorida +pdfToImage.grey=Escala de Cinza +pdfToImage.blackwhite=Preto e Branco (pode resultar em perda de dados!) +pdfToImage.submit=Converter + + +#addPassword +addPassword.title=Adicionar Senha +addPassword.header=Adicionar Senha (Criptografar) +addPassword.selectText.1=Selecione o PDF para Criptografar +addPassword.selectText.2=Senha +addPassword.selectText.3=Tamanho da Chave de Criptografia +addPassword.selectText.4=Valores mais altos são mais seguros, mas valores mais baixos são mais compatíveis. +addPassword.selectText.5=Permissões para Definir +addPassword.selectText.6=Impedir Montagem do Documento +addPassword.selectText.7=Impedir Extração de Conteúdo +addPassword.selectText.8=Impedir Extração para Acessibilidade +addPassword.selectText.9=Impedir Preenchimento de Formulário +addPassword.selectText.10=Impedir Modificação +addPassword.selectText.11=Impedir Modificação de Anotação +addPassword.selectText.12=Impedir Impressão +addPassword.selectText.13=Impedir Impressão de Formatos Diferentes +addPassword.selectText.14=Senha do Proprietário +addPassword.selectText.15=Restringe o que pode ser feito com o documento após a abertura (nem todos os leitores dão suporte a isso) +addPassword.selectText.16=Restringe a abertura do próprio documento +addPassword.submit=Criptografar + + +#watermark +watermark.title=Adicionar Marca d'Água +watermark.header=Adicionar Marca d'Água +watermark.selectText.1=Selecione o PDF para Adicionar a Marca d'Água +watermark.selectText.2=Texto da Marca d'Água +watermark.selectText.3=Tamanho da Fonte +watermark.selectText.4=Rotação (0-360) +watermark.selectText.5=Espaçamento Horizontal (widthSpacer) +watermark.selectText.6=Espaçamento Vertical (heightSpacer) +watermark.selectText.7=Opacidade (0% - 100%) +watermark.selectText.8=Tipo de Marca d'Água +watermark.selectText.9=Imagem da Marca d'Água +watermark.submit=Adicionar Marca d'Água + + +#Change permissions +permissions.title=Alterar Permissões +permissions.header=Alterar Permissões +permissions.warning=Nota: Para tornar essas permissões inalteráveis, é recomendável defini-las com uma senha através da página "Adicionar Senha". +permissions.selectText.1=Selecione o PDF para Alterar as Permissões +permissions.selectText.2=Permissões para Definir +permissions.selectText.3=Impedir Montagem do Documento +permissions.selectText.4=Impedir Extração de Conteúdo +permissions.selectText.5=Impedir Extração para Acessibilidade +permissions.selectText.6=Impedir Preenchimento de Formulário +permissions.selectText.7=Impedir Modificações +permissions.selectText.8=Impedir Modificação de Anotação +permissions.selectText.9=Impedir Impressão +permissions.selectText.10=Impedir Impressão de Formatos Diferentes +permissions.submit=Mudar + + +#remove password +removePassword.title=Remover Senha +removePassword.header=Remover Senha (Descriptografar) +removePassword.selectText.1=Selecione o PDF para Descriptografar +removePassword.selectText.2=Senha +removePassword.submit=Remover + + +#changeMetadata +changeMetadata.title=Título: +changeMetadata.header=Alterar Metadados +changeMetadata.selectText.1=Edite as Variáveis que Deseja Alterar +changeMetadata.selectText.2=Excluir Todos os Metadados +changeMetadata.selectText.3=Mostrar Metadados Personalizados +changeMetadata.author=Autor: +changeMetadata.creationDate=Data de Criação (aaaa/MM/dd HH:mm:ss): +changeMetadata.creator=Criador: +changeMetadata.keywords=Palavras-chave: +changeMetadata.modDate=Data de Modificação (aaaa/MM/dd HH:mm:ss): +changeMetadata.producer=Produtor: +changeMetadata.subject=Assunto: +changeMetadata.title=Título: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Outros Metadados +changeMetadata.selectText.5=Adicionar Entrada de Metadados Personalizados +changeMetadata.submit=Mudar + + +#pdfToPDFA +pdfToPDFA.title=PDF para PDF/A +pdfToPDFA.header=PDF para PDF/A +pdfToPDFA.credit=Este serviço usa OCRmyPDF para Conversão de PDF/A +pdfToPDFA.submit=Converter + + +#PDFToWord +PDFToWord.title=PDF para Word +PDFToWord.header=PDF para Word +PDFToWord.selectText.1=Formato do Arquivo de Saída +PDFToWord.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. +PDFToWord.submit=Converter + + +#PDFToPresentation +PDFToPresentation.title=PDF para Apresentação +PDFToPresentation.header=PDF para Apresentação +PDFToPresentation.selectText.1=Formato do Arquivo de Saída +PDFToPresentation.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. +PDFToPresentation.submit=Converter + + +#PDFToText +PDFToText.title=PDF para Texto/RTF +PDFToText.header=PDF para Texto/RTF +PDFToText.selectText.1=Formato do Arquivo de Saída +PDFToText.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. +PDFToText.submit=Converter + + +#PDFToHTML +PDFToHTML.title=PDF para HTML +PDFToHTML.header=PDF para HTML +PDFToHTML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. +PDFToHTML.submit=Converter + + +#PDFToXML +PDFToXML.title=PDF para XML +PDFToXML.header=PDF para XML +PDFToXML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. +PDFToXML.submit=Converter + +#PDFToCSV +PDFToCSV.title=PDF para CSV +PDFToCSV.header=PDF para CSV +PDFToCSV.prompt=Choose page to extract table +PDFToCSV.submit=Eztenna + +#split-by-size-or-count +split-by-size-or-count.header=Split PDF by Size or Count +split-by-size-or-count.type.label=Select Split Type +split-by-size-or-count.type.size=By Size +split-by-size-or-count.type.pageCount=By Page Count +split-by-size-or-count.type.docCount=By Document Count +split-by-size-or-count.value.label=Enter Value +split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5) +split-by-size-or-count.submit=Submit + + +#overlay-pdfs +overlay-pdfs.header=Overlay PDF Files +overlay-pdfs.baseFile.label=Select Base PDF File +overlay-pdfs.overlayFiles.label=Select Overlay PDF Files +overlay-pdfs.mode.label=Select Overlay Mode +overlay-pdfs.mode.sequential=Sequential Overlay +overlay-pdfs.mode.interleaved=Interleaved Overlay +overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay +overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode) +overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1) +overlay-pdfs.position.label=Select Overlay Position +overlay-pdfs.position.foreground=Foreground +overlay-pdfs.position.background=Background +overlay-pdfs.submit=Submit + + +#split-by-sections +split-by-sections.title=Split PDF by Sections +split-by-sections.header=Split PDF into Sections +split-by-sections.horizontal.label=Horizontal Divisions +split-by-sections.vertical.label=Vertical Divisions +split-by-sections.horizontal.placeholder=Enter number of horizontal divisions +split-by-sections.vertical.placeholder=Enter number of vertical divisions +split-by-sections.submit=Split PDF diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 97ab70b7..d1b867de 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -1,830 +1,920 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr=left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Selectează fișiere PDF -multiPdfPrompt=Selectează mai multe fișiere PDF (2+) -multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie -imgPrompt=Selectează imagini -genericSubmit=Trimite -processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului -pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină): -goToPage=Mergi la pagină -true=Adevărat -false=Fals -unknown=Necunoscut -save=Salvează -close=Închide -filesSelected=fișiere selectate -noFavourites=Niciun favorit adăugat -bored=Plictisit așteptând? -alphabet=Alfabet -downloadPdf=Descarcă PDF -text=Text -font=Font -selectFillter=-- Selectează -- -pageNum=Numărul paginii -sizes.small=Small -sizes.medium=Medium -sizes.large=Large -sizes.x-large=X-Large -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect -delete=Delete -username=Username -password=Password -welcome=Welcome -property=Property -black=Black -white=White -red=Red -green=Green -blue=Blue -custom=Custom... - -changedCredsMessage=Credentials changed! -notAuthenticatedMessage=User not authenticated. -userNotFoundMessage=User not found. -incorrectPasswordMessage=Current password is incorrect. -usernameExistsMessage=New Username already exists. - - - -############# -# NAVBAR # -############# -navbar.convert=Converteste -navbar.security=Securitate -navbar.other=Altele -navbar.darkmode=Mod întunecat -navbar.pageOps=Operații pe pagină -navbar.settings=Setări - -############# -# SETTINGS # -############# -settings.title=Setări -settings.update=Actualizare disponibilă -settings.appVersion=Versiune aplicație: -settings.downloadOption.title=Alege opțiunea de descărcare (pentru descărcarea unui singur fișier non-zip): -settings.downloadOption.1=Deschide în aceeași fereastră -settings.downloadOption.2=Deschide într-o fereastră nouă -settings.downloadOption.3=Descarcă fișierul -settings.zipThreshold=Împachetează fișierele când numărul de fișiere descărcate depășește -settings.signOut=Sign Out -settings.accountSettings=Account Settings - - - -changeCreds.title=Change Credentials -changeCreds.header=Update Your Account Details -changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) -changeCreds.newUsername=New Username -changeCreds.oldPassword=Current Password -changeCreds.newPassword=New Password -changeCreds.confirmNewPassword=Confirm New Password -changeCreds.submit=Submit Changes - - - -account.title=Account Settings -account.accountSettings=Account Settings -account.adminSettings=Admin Settings - View and Add Users -account.userControlSettings=User Control Settings -account.changeUsername=Change Username -account.changeUsername=Change Username -account.password=Confirmation Password -account.oldPassword=Old password -account.newPassword=New Password -account.changePassword=Change Password -account.confirmNewPassword=Confirm New Password -account.signOut=Sign Out -account.yourApiKey=Your API Key -account.syncTitle=Sync browser settings with Account -account.settingsCompare=Settings Comparison: -account.property=Property -account.webBrowserSettings=Web Browser Setting -account.syncToBrowser=Sync Account -> Browser -account.syncToAccount=Sync Account <- Browser - - -adminUserSettings.title=User Control Settings -adminUserSettings.header=Admin User Control Settings -adminUserSettings.admin=Admin -adminUserSettings.user=User -adminUserSettings.addUser=Add New User -adminUserSettings.roles=Roles -adminUserSettings.role=Role -adminUserSettings.actions=Actions -adminUserSettings.apiUser=Limited API User -adminUserSettings.webOnlyUser=Web Only User -adminUserSettings.forceChange=Force user to change username/password on login -adminUserSettings.submit=Save User - -############# -# HOME-PAGE # -############# -home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF. -home.searchBar=Search for features... - - -home.viewPdf.title=View PDF -home.viewPdf.desc=View, annotate, add text or images -viewPdf.tags=view,read,annotate,text,image - -home.multiTool.title=Instrument multiplu PDF -home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini -multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side - -home.merge.title=Unifică -home.merge.desc=Unifică cu ușurință mai multe fișiere PDF într-unul singur. -merge.tags=merge,Page operations,Back end,server side - -home.split.title=Desparte -home.split.desc=Desparte fișierele PDF în mai multe documente. -split.tags=Page operations,divide,Multi Page,cut,server side - -home.rotate.title=Rotește -home.rotate.desc=Rotește cu ușurință fișierele PDF. -rotate.tags=server side - - -home.imageToPdf.title=Imagine în PDF -home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF. -imageToPdf.tags=conversion,img,jpg,picture,photo - -home.pdfToImage.title=PDF în Imagine -home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF). -pdfToImage.tags=conversion,img,jpg,picture,photo - -home.pdfOrganiser.title=Organizează -home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine -pdfOrganiser.tags=duplex,even,odd,sort,move - - -home.addImage.title=Adaugă imagine -home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare) -addImage.tags=img,jpg,picture,photo - -home.watermark.title=Adaugă Filigran -home.watermark.desc=Adaugă un filigran personalizat la documentul PDF. -watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo - -home.permissions.title=Schimbă permisiuni -home.permissions.desc=Schimbă permisiunile documentului PDF -permissions.tags=read,write,edit,print - - -home.removePages.title=Elimină -home.removePages.desc=Șterge paginile nedorite din documentul PDF. -removePages.tags=Remove pages,delete pages - -home.addPassword.title=Adaugă Parolă -home.addPassword.desc=Criptează documentul PDF cu o parolă. -addPassword.tags=secure,security - -home.removePassword.title=Elimină Parola -home.removePassword.desc=Elimină protecția cu parolă din documentul PDF. -removePassword.tags=secure,Decrypt,security,unpassword,delete password - -home.compressPdfs.title=Comprimă -home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor. -compressPdfs.tags=squish,small,tiny - - -home.changeMetadata.title=Schimbă Metadatele -home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF. -changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats - -home.fileToPDF.title=Convertește fișierul în PDF -home.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele). -fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint - -home.ocr.title=OCR / Curățare scanări -home.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text. -ocr.tags=recognition,text,image,scan,read,identify,detection,editable - - -home.extractImages.title=Extrage Imagini -home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip. -extractImages.tags=picture,photo,save,archive,zip,capture,grab - -home.pdfToPDFA.title=PDF în PDF/A -home.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung. -pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation - -home.PDFToWord.title=PDF în Word -home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT). -PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile - -home.PDFToPresentation.title=PDF în Prezentare -home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP). -PDFToPresentation.tags=slides,show,office,microsoft - -home.PDFToText.title=PDF în Text/RTF -home.PDFToText.desc=Convertește un document PDF în format Text sau RTF. -PDFToText.tags=richformat,richtextformat,rich text format - -home.PDFToHTML.title=PDF în HTML -home.PDFToHTML.desc=Convertește un document PDF în format HTML. -PDFToHTML.tags=web content,browser friendly - - -home.PDFToXML.title=PDF în XML -home.PDFToXML.desc=Convertește un document PDF în format XML. -PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert - -home.ScannerImageSplit.title=Detectează/Împarte poze scanate -home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF. -ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize - -home.sign.title=Semnează -home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine. -sign.tags=authorize,initials,drawn-signature,text-sign,image-signature - -home.flatten.title=Nivelare -home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF. -flatten.tags=static,deactivate,non-interactive,streamline - -home.repair.title=Repară -home.repair.desc=Încearcă să repare un document PDF corupt/defect. -repair.tags=fix,restore,correction,recover - -home.removeBlanks.title=Elimină pagini goale -home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document. -removeBlanks.tags=cleanup,streamline,non-content,organize - -home.compare.title=Compară -home.compare.desc=Compară și arată diferențele dintre 2 documente PDF. -compare.tags=differentiate,contrast,changes,analysis - -home.certSign.title=Semnare cu certificat -home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) -certSign.tags=authenticate,PEM,P12,official,encrypt - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page -pageLayout.tags=merge,composite,single-view,organize - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. -scalePages.tags=resize,modify,dimension,adapt - -home.pipeline.title=Pipeline (Advanced) -home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts -pipeline.tags=automate,sequence,scripted,batch-process - -home.add-page-numbers.title=Add Page Numbers -home.add-page-numbers.desc=Add Page numbers throughout a document in a set location -add-page-numbers.tags=paginate,label,organize,index - -home.auto-rename.title=Auto Rename PDF File -home.auto-rename.desc=Auto renames a PDF file based on its detected header -auto-rename.tags=auto-detect,header-based,organize,relabel - -home.adjust-contrast.title=Adjust Colors/Contrast -home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF -adjust-contrast.tags=color-correction,tune,modify,enhance - -home.crop.title=Crop PDF -home.crop.desc=Crop a PDF to reduce its size (maintains text!) -crop.tags=trim,shrink,edit,shape - -home.autoSplitPDF.title=Auto Split Pages -home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code -autoSplitPDF.tags=QR-based,separate,scan-segment,organize - -home.sanitizePdf.title=Sanitize -home.sanitizePdf.desc=Remove scripts and other elements from PDF files -sanitizePdf.tags=clean,secure,safe,remove-threats - -home.URLToPDF.title=URL/Website To PDF -home.URLToPDF.desc=Converts any http(s)URL to PDF -URLToPDF.tags=web-capture,save-page,web-to-doc,archive - -home.HTMLToPDF.title=HTML to PDF -home.HTMLToPDF.desc=Converts any HTML file or zip to PDF -HTMLToPDF.tags=markup,web-content,transformation,convert - - -home.MarkdownToPDF.title=Markdown to PDF -home.MarkdownToPDF.desc=Converts any Markdown file to PDF -MarkdownToPDF.tags=markup,web-content,transformation,convert - - -home.getPdfInfo.title=Get ALL Info on PDF -home.getPdfInfo.desc=Grabs any and all information possible on PDFs -getPdfInfo.tags=infomation,data,stats,statistics - - -home.extractPage.title=Extract page(s) -home.extractPage.desc=Extracts select pages from PDF -extractPage.tags=extract - - -home.PdfToSinglePage.title=PDF to Single Large Page -home.PdfToSinglePage.desc=Merges all PDF pages into one large single page -PdfToSinglePage.tags=single page - - -home.showJS.title=Show Javascript -home.showJS.desc=Searches and displays any JS injected into a PDF -showJS.tags=JS - -home.autoRedact.title=Auto Redact -home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text -showJS.tags=JS - -########################### -# # -# WEB PAGES # -# # -########################### -#login -login.title=Sign in -login.signin=Sign in -login.rememberme=Remember me -login.invalid=Invalid username or password. -login.locked=Your account has been locked. -login.signinTitle=Please sign in - - -#auto-redact -autoRedact.title=Auto Redact -autoRedact.header=Auto Redact -autoRedact.colorLabel=Colour -autoRedact.textsToRedactLabel=Text to Redact (line-separated) -autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret -autoRedact.useRegexLabel=Use Regex -autoRedact.wholeWordSearchLabel=Whole Word Search -autoRedact.customPaddingLabel=Custom Extra Padding -autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) -autoRedact.submitButton=Submit - - -#showJS -showJS.title=Show Javascript -showJS.header=Show Javascript -showJS.downloadJS=Download Javascript -showJS.submit=Show - - -#pdfToSinglePage -pdfToSinglePage.title=PDF To Single Page -pdfToSinglePage.header=PDF To Single Page -pdfToSinglePage.submit=Convert To Single Page - - -#pageExtracter -pageExtracter.title=Extract Pages -pageExtracter.header=Extract Pages -pageExtracter.submit=Extract - - -#getPdfInfo -getPdfInfo.title=Get Info on PDF -getPdfInfo.header=Get Info on PDF -getPdfInfo.submit=Get Info -getPdfInfo.downloadJson=Download JSON - - -#markdown-to-pdf -MarkdownToPDF.title=Markdown To PDF -MarkdownToPDF.header=Markdown To PDF -MarkdownToPDF.submit=Convert -MarkdownToPDF.help=Work in progress -MarkdownToPDF.credit=Uses WeasyPrint - - - -#url-to-pdf -URLToPDF.title=URL To PDF -URLToPDF.header=URL To PDF -URLToPDF.submit=Convert -URLToPDF.credit=Uses WeasyPrint - - -#html-to-pdf -HTMLToPDF.title=HTML To PDF -HTMLToPDF.header=HTML To PDF -HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required -HTMLToPDF.submit=Convert -HTMLToPDF.credit=Uses WeasyPrint - - -#sanitizePDF -sanitizePDF.title=Sanitize PDF -sanitizePDF.header=Sanitize a PDF file -sanitizePDF.selectText.1=Remove JavaScript actions -sanitizePDF.selectText.2=Remove embedded files -sanitizePDF.selectText.3=Remove metadata -sanitizePDF.selectText.4=Remove links -sanitizePDF.selectText.5=Remove fonts -sanitizePDF.submit=Sanitize PDF - - -#addPageNumbers -addPageNumbers.title=Add Page Numbers -addPageNumbers.header=Add Page Numbers -addPageNumbers.selectText.1=Select PDF file: -addPageNumbers.selectText.2=Margin Size -addPageNumbers.selectText.3=Position -addPageNumbers.selectText.4=Starting Number -addPageNumbers.selectText.5=Pages to Number -addPageNumbers.selectText.6=Custom Text -addPageNumbers.customTextDesc=Custom Text -addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc -addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} -addPageNumbers.submit=Add Page Numbers - - -#auto-rename -auto-rename.title=Auto Rename -auto-rename.header=Auto Rename PDF -auto-rename.submit=Auto Rename - - -#adjustContrast -adjustContrast.title=Adjust Contrast -adjustContrast.header=Adjust Contrast -adjustContrast.contrast=Contrast: -adjustContrast.brightness=Brightness: -adjustContrast.saturation=Saturation: -adjustContrast.download=Download - - -#crop -crop.title=Crop -crop.header=Crop Image -crop.submit=Submit - - -#autoSplitPDF -autoSplitPDF.title=Auto Split PDF -autoSplitPDF.header=Auto Split PDF -autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. -autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). -autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. -autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. -autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. -autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: -autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) -autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' -autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' -autoSplitPDF.submit=Submit - - -#pipeline -pipeline.title=Pipeline - - -#pageLayout -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.addBorder=Add Borders -pageLayout.submit=Submit - - -#scalePages -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - - -#certSign -certSign.title=Semnare certificat -certSign.header=Semnează un fișier PDF cu certificatul tău (În curs de desfășurare) -certSign.selectPDF=Selectează un fișier PDF pentru semnare: -certSign.selectKey=Selectează fișierul cheie privată (format PKCS#8, poate fi .pem sau .der): -certSign.selectCert=Selectează fișierul de certificat (format X.509, poate fi .pem sau .der): -certSign.selectP12=Selectează fișierul de stocare cheie PKCS#12 (.p12 sau .pfx) (Opțional, dacă este furnizat, ar trebui să conțină cheia privată și certificatul tău): -certSign.certType=Tipul certificatului -certSign.password=Introdu parola pentru stocarea cheie sau cheia privată (dacă există): -certSign.showSig=Afișează semnătura -certSign.reason=Motivul -certSign.location=Locația -certSign.name=Numele -certSign.submit=Semnează PDF - - -#removeBlanks -removeBlanks.title=Elimină pagini goale -removeBlanks.header=Elimină pagini goale -removeBlanks.threshold=Prag: -removeBlanks.thresholdDesc=Prag pentru determinarea cât de alb trebuie să fie un pixel alb -removeBlanks.whitePercent=Procent alb (%): -removeBlanks.whitePercentDesc=Procentul paginii care trebuie să fie alb pentru a fi eliminată -removeBlanks.submit=Elimină pagini goale - - -#compare -compare.title=Compară -compare.header=Compară PDF-uri -compare.document.1=Document 1 -compare.document.2=Document 2 -compare.submit=Compară - - -#sign -sign.title=Semnează -sign.header=Semnează documente PDF -sign.upload=Încarcă Imaginea -sign.draw=Desenează Semnătura -sign.text=Introdu Textul -sign.clear=Curăță -sign.add=Adaugă - - -#repair -repair.title=Repară -repair.header=Repară documente PDF -repair.submit=Repară - - -#flatten -flatten.title=Nivelare -flatten.header=Nivelează documente PDF -flatten.submit=Nivelează - - -#ScannerImageSplit -ScannerImageSplit.selectText.1=Prag unghi: -ScannerImageSplit.selectText.2=Stabilește unghiul absolut minim necesar pentru ca imaginea să fie rotită (implicit: 5). -ScannerImageSplit.selectText.3=Toleranță: -ScannerImageSplit.selectText.4=Determină intervalul de variație a culorii în jurul culorii de fundal estimate (implicit: 20). -ScannerImageSplit.selectText.5=Arie minimă: -ScannerImageSplit.selectText.6=Stabilește pragul minim de arie pentru o fotografie (implicit: 8000). -ScannerImageSplit.selectText.7=Arie minimă a conturului: -ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pentru o fotografie. -ScannerImageSplit.selectText.9=Mărimea marginii: -ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1). - - -#OCR -ocr.title=OCR / Curățare scanare -ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor) -ocr.selectText.1=Selectați limbile care trebuie detectate în PDF (Cele listate sunt cele detectate în prezent): -ocr.selectText.2=Produceți un fișier text care conține textul OCR împreună cu PDF-ul OCR -ocr.selectText.3=Corectați paginile care au fost scanate în unghi înclinat prin rotirea lor în poziție corectă -ocr.selectText.4=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal. (Nu se schimbă rezultatul) -ocr.selectText.5=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal, menține curățarea în rezultat. -ocr.selectText.6=Ignorați paginile care conțin text interactiv, OCR-ul se aplică doar paginilor care sunt imagini -ocr.selectText.7=Forțează OCR-ul, va aplica OCR pe fiecare pagină, înlăturând toate elementele de text originale -ocr.selectText.8=Normal (Va genera eroare dacă PDF-ul conține text) -ocr.selectText.9=Setări suplimentare -ocr.selectText.10=Mod OCR -ocr.selectText.11=Elimină imaginile după OCR (Elimină TOATE imaginile, util doar în etapa de conversie) -ocr.selectText.12=Tip de redare (Avansat) -ocr.help=Citiți documentația pentru a afla cum să utilizați acest serviciu pentru alte limbi și/sau în afara mediului Docker -ocr.credit=Acest serviciu utilizează OCRmyPDF și Tesseract pentru OCR. -ocr.submit=Procesează PDF-ul cu OCR - - -#extractImages -extractImages.title=Extrage Imagini -extractImages.header=Extrage Imagini -extractImages.selectText=Selectați formatul imaginii în care să se convertească imaginile extrase -extractImages.submit=Extrage - - -#File to PDF -fileToPDF.title=Fișier în PDF -fileToPDF.header=Convertiți orice fișier în PDF -fileToPDF.credit=Acest serviciu utilizează LibreOffice și Unoconv pentru conversia fișierelor. -fileToPDF.supportedFileTypes=Tipurile de fișiere suportate ar trebui să includă cele de mai jos. Pentru o listă completă și actualizată a formatelor suportate, consultați documentația LibreOffice. -fileToPDF.submit=Convertiți în PDF - - -#compress -compress.title=Comprimare -compress.header=Comprimare PDF -compress.credit=Acest serviciu utilizează OCRmyPDF pentru comprimarea/optimalizarea PDF-urilor. -compress.selectText.1=Nivel de optimizare: -compress.selectText.2=0 (Fără optimizare) -compress.selectText.3=1 (Implicit, optimizare fără pierdere) -compress.selectText.4=2 (Optimizare cu pierdere) -compress.selectText.5=3 (Optimizare cu pierdere, mai agresivă) -compress.submit=Comprimare - - -#Add image -addImage.title=Adăugare imagine -addImage.header=Adăugare imagine în PDF -addImage.everyPage=Pe fiecare pagină? -addImage.upload=Adăugare imagine -addImage.submit=Adăugare imagine - - -#merge -merge.title=Unire -merge.header=Unirea mai multor PDF-uri (2+) -merge.sortByName=Sort by name -merge.sortByDate=Sort by date -merge.submit=Unire - - -#pdfOrganiser -pdfOrganiser.title=Organizator de pagini -pdfOrganiser.header=Organizator de pagini PDF -pdfOrganiser.submit=Rearanjați paginile - - -#multiTool -multiTool.title=Instrument PDF multiplu -multiTool.header=Instrument PDF multiplu - -#view pdf -viewPdf.title=View PDF -viewPdf.header=View PDF - -#pageRemover -pageRemover.title=Înlăturare pagini -pageRemover.header=Înlăturare pagini din PDF -pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă): -pageRemover.submit=Ștergere pagini - - -#rotate -rotate.title=Rotește PDF -rotate.header=Rotește PDF -rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de grade): -rotate.submit=Rotește - - -#merge -split.title=Împarte PDF -split.header=Împarte PDF -split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți -split.desc.2=Prin urmare, selectând 1,3,7-8, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel: -split.desc.3=Documentul #1: Pagina 1 -split.desc.4=Documentul #2: Paginile 2 și 3 -split.desc.5=Documentul #3: Paginile 4, 5 și 6 -split.desc.6=Documentul #4: Pagina 7 -split.desc.7=Documentul #5: Pagina 8 -split.desc.8=Documentul #6: Paginile 9 și 10 -split.splitPages=Introduceți paginile pe care să le împărțiți: -split.submit=Împarte - - -#merge -imageToPDF.title=Imagine în PDF -imageToPDF.header=Imagine în PDF -imageToPDF.submit=Convertă -imageToPDF.selectLabel=Image Fit Options -imageToPDF.fillPage=Fill Page -imageToPDF.fitDocumentToImage=Fit Page to Image -imageToPDF.maintainAspectRatio=Maintain Aspect Ratios -imageToPDF.selectText.2=Rotire automată a PDF-ului -imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini) -imageToPDF.selectText.4=Unifică într-un singur PDF -imageToPDF.selectText.5=Convertă în PDF-uri separate - - -#pdfToImage -pdfToImage.title=PDF în Imagine -pdfToImage.header=PDF în Imagine -pdfToImage.selectText=Format imagine -pdfToImage.singleOrMultiple=Tip rezultat imagine -pdfToImage.single=O singură imagine mare -pdfToImage.multi=Mai multe imagini -pdfToImage.colorType=Tip culoare -pdfToImage.color=Culoare -pdfToImage.grey=Scală de gri -pdfToImage.blackwhite=Alb și negru (Poate pierde date!) -pdfToImage.submit=Convertă - - -#addPassword -addPassword.title=Adăugați parolă -addPassword.header=Adăugați o parolă (Criptare) -addPassword.selectText.1=Selectați PDF-ul pentru criptare -addPassword.selectText.2=Parolă -addPassword.selectText.3=Lungime cheie de criptare -addPassword.selectText.4=Valori mai mari sunt mai puternice, dar valorile mai mici au o compatibilitate mai bună. -addPassword.selectText.5=Permisiuni de setare -addPassword.selectText.6=Preveniți asamblarea documentului -addPassword.selectText.7=Preveniți extragerea conținutului -addPassword.selectText.8=Preveniți extragerea pentru accesibilitate -addPassword.selectText.9=Preveniți completarea formularului -addPassword.selectText.10=Preveniți modificarea -addPassword.selectText.11=Preveniți modificarea adnotărilor -addPassword.selectText.12=Preveniți tipărirea -addPassword.selectText.13=Preveniți tipărirea în formate diferite -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Criptare - - -#watermark -watermark.title=Adăugați Filigran -watermark.header=Adăugați Filigran -watermark.selectText.1=Selectați PDF-ul la care să adăugați filigranul: -watermark.selectText.2=Textul Filigranului: -watermark.selectText.3=Mărimea fontului: -watermark.selectText.4=Rotire (0-360): -watermark.selectText.5=widthSpacer (Spațiu între fiecare filigran pe orizontală): -watermark.selectText.6=heightSpacer (Spațiu între fiecare filigran pe verticală): -watermark.selectText.7=Opacitate (0% - 100%): -watermark.selectText.8=Watermark Type: -watermark.selectText.9=Watermark Image: -watermark.submit=Adăugați Filigran - - -#Change permissions -permissions.title=Schimbați Permisiunile -permissions.header=Schimbați Permisiunile -permissions.warning=Pentru a face aceste permisiuni neschimbabile, se recomandă să le setați cu o parolă prin intermediul paginii de adăugare a parolei -permissions.selectText.1=Selectați PDF-ul pentru a schimba permisiunile -permissions.selectText.2=Permisiunile de setat -permissions.selectText.3=Preveniți asamblarea documentului -permissions.selectText.4=Preveniți extragerea conținutului -permissions.selectText.5=Preveniți extragerea pentru accesibilitate -permissions.selectText.6=Preveniți completarea formularului -permissions.selectText.7=Preveniți modificarea -permissions.selectText.8=Preveniți modificarea adnotărilor -permissions.selectText.9=Preveniți tipărirea -permissions.selectText.10=Preveniți tipărirea în formate diferite -permissions.submit=Schimbare - - -#remove password -removePassword.title=Eliminați parola -removePassword.header=Eliminați parola (Decodificați) -removePassword.selectText.1=Selectați PDF-ul pentru decodificare -removePassword.selectText.2=Parolă -removePassword.submit=Eliminați - - -#changeMetadata -changeMetadata.title=Titlu: -changeMetadata.header=Schimbați Metadatele -changeMetadata.selectText.1=Vă rugăm să editați variabilele pe care doriți să le schimbați -changeMetadata.selectText.2=Ștergeți toate metadatele -changeMetadata.selectText.3=Afișați Metadatele Personalizate: -changeMetadata.author=Autor: -changeMetadata.creationDate=Data creării (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Creator: -changeMetadata.keywords=Cuvinte cheie: -changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Producător: -changeMetadata.subject=Subiect: -changeMetadata.title=Titlu: -changeMetadata.trapped=Blocat: -changeMetadata.selectText.4=Alte Metadate: -changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate -changeMetadata.submit=Schimbare - - -#pdfToPDFA -pdfToPDFA.title=PDF către PDF/A -pdfToPDFA.header=PDF către PDF/A -pdfToPDFA.credit=Acest serviciu utilizează OCRmyPDF pentru conversia în PDF/A -pdfToPDFA.submit=Convert - - -#PDFToWord -PDFToWord.title=PDF către Word -PDFToWord.header=PDF către Word -PDFToWord.selectText.1=Format fișier de ieșire -PDFToWord.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToWord.submit=Convert - - -#PDFToPresentation -PDFToPresentation.title=PDF către Prezentare -PDFToPresentation.header=PDF către Prezentare -PDFToPresentation.selectText.1=Format fișier de ieșire -PDFToPresentation.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToPresentation.submit=Convert - - -#PDFToText -PDFToText.title=PDF către Text/RTF -PDFToText.header=PDF către Text/RTF -PDFToText.selectText.1=Format fișier de ieșire -PDFToText.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToText.submit=Convert - - -#PDFToHTML -PDFToHTML.title=PDF către HTML -PDFToHTML.header=PDF către HTML -PDFToHTML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToHTML.submit=Convert - - -#PDFToXML -PDFToXML.title=PDF către XML -PDFToXML.header=PDF către XML -PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToXML.submit=Convert - -#PDFToCSV -PDFToCSV.title=PDF n CSV -PDFToCSV.header=PDF n CSV -PDFToCSV.submit=Extrage +########### +# Generic # +########### +# the direction that the language is written (ltr=left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Selectează fișiere PDF +multiPdfPrompt=Selectează mai multe fișiere PDF (2+) +multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie +imgPrompt=Selectează imagini +genericSubmit=Trimite +processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului +pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină): +goToPage=Mergi la pagină +true=Adevărat +false=Fals +unknown=Necunoscut +save=Salvează +close=Închide +filesSelected=fișiere selectate +noFavourites=Niciun favorit adăugat +bored=Plictisit așteptând? +alphabet=Alfabet +downloadPdf=Descarcă PDF +text=Text +font=Font +selectFillter=-- Selectează -- +pageNum=Numărul paginii +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect +delete=Delete +username=Username +password=Password +welcome=Welcome +property=Property +black=Black +white=White +red=Red +green=Green +blue=Blue +custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! + +changedCredsMessage=Credentials changed! +notAuthenticatedMessage=User not authenticated. +userNotFoundMessage=User not found. +incorrectPasswordMessage=Current password is incorrect. +usernameExistsMessage=New Username already exists. + + +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + + +############# +# NAVBAR # +############# +navbar.convert=Converteste +navbar.security=Securitate +navbar.other=Altele +navbar.darkmode=Mod întunecat +navbar.pageOps=Operații pe pagină +navbar.settings=Setări + +############# +# SETTINGS # +############# +settings.title=Setări +settings.update=Actualizare disponibilă +settings.appVersion=Versiune aplicație: +settings.downloadOption.title=Alege opțiunea de descărcare (pentru descărcarea unui singur fișier non-zip): +settings.downloadOption.1=Deschide în aceeași fereastră +settings.downloadOption.2=Deschide într-o fereastră nouă +settings.downloadOption.3=Descarcă fișierul +settings.zipThreshold=Împachetează fișierele când numărul de fișiere descărcate depășește +settings.signOut=Sign Out +settings.accountSettings=Account Settings + + + +changeCreds.title=Change Credentials +changeCreds.header=Update Your Account Details +changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) +changeCreds.newUsername=New Username +changeCreds.oldPassword=Current Password +changeCreds.newPassword=New Password +changeCreds.confirmNewPassword=Confirm New Password +changeCreds.submit=Submit Changes + + + +account.title=Account Settings +account.accountSettings=Account Settings +account.adminSettings=Admin Settings - View and Add Users +account.userControlSettings=User Control Settings +account.changeUsername=Change Username +account.changeUsername=Change Username +account.password=Confirmation Password +account.oldPassword=Old password +account.newPassword=New Password +account.changePassword=Change Password +account.confirmNewPassword=Confirm New Password +account.signOut=Sign Out +account.yourApiKey=Your API Key +account.syncTitle=Sync browser settings with Account +account.settingsCompare=Settings Comparison: +account.property=Property +account.webBrowserSettings=Web Browser Setting +account.syncToBrowser=Sync Account -> Browser +account.syncToAccount=Sync Account <- Browser + + +adminUserSettings.title=User Control Settings +adminUserSettings.header=Admin User Control Settings +adminUserSettings.admin=Admin +adminUserSettings.user=User +adminUserSettings.addUser=Add New User +adminUserSettings.roles=Roles +adminUserSettings.role=Role +adminUserSettings.actions=Actions +adminUserSettings.apiUser=Limited API User +adminUserSettings.webOnlyUser=Web Only User +adminUserSettings.demoUser=Demo User (No custom settings) +adminUserSettings.forceChange=Force user to change username/password on login +adminUserSettings.submit=Save User + +############# +# HOME-PAGE # +############# +home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF. +home.searchBar=Search for features... + + +home.viewPdf.title=View PDF +home.viewPdf.desc=View, annotate, add text or images +viewPdf.tags=view,read,annotate,text,image + +home.multiTool.title=Instrument multiplu PDF +home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Unifică +home.merge.desc=Unifică cu ușurință mai multe fișiere PDF într-unul singur. +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Desparte +home.split.desc=Desparte fișierele PDF în mai multe documente. +split.tags=Page operations,divide,Multi Page,cut,server side + +home.rotate.title=Rotește +home.rotate.desc=Rotește cu ușurință fișierele PDF. +rotate.tags=server side + + +home.imageToPdf.title=Imagine în PDF +home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF. +imageToPdf.tags=conversion,img,jpg,picture,photo + +home.pdfToImage.title=PDF în Imagine +home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF). +pdfToImage.tags=conversion,img,jpg,picture,photo + +home.pdfOrganiser.title=Organizează +home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine +pdfOrganiser.tags=duplex,even,odd,sort,move + + +home.addImage.title=Adaugă imagine +home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare) +addImage.tags=img,jpg,picture,photo + +home.watermark.title=Adaugă Filigran +home.watermark.desc=Adaugă un filigran personalizat la documentul PDF. +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo + +home.permissions.title=Schimbă permisiuni +home.permissions.desc=Schimbă permisiunile documentului PDF +permissions.tags=read,write,edit,print + + +home.removePages.title=Elimină +home.removePages.desc=Șterge paginile nedorite din documentul PDF. +removePages.tags=Remove pages,delete pages + +home.addPassword.title=Adaugă Parolă +home.addPassword.desc=Criptează documentul PDF cu o parolă. +addPassword.tags=secure,security + +home.removePassword.title=Elimină Parola +home.removePassword.desc=Elimină protecția cu parolă din documentul PDF. +removePassword.tags=secure,Decrypt,security,unpassword,delete password + +home.compressPdfs.title=Comprimă +home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor. +compressPdfs.tags=squish,small,tiny + + +home.changeMetadata.title=Schimbă Metadatele +home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF. +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats + +home.fileToPDF.title=Convertește fișierul în PDF +home.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele). +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint + +home.ocr.title=OCR / Curățare scanări +home.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text. +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + + +home.extractImages.title=Extrage Imagini +home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip. +extractImages.tags=picture,photo,save,archive,zip,capture,grab + +home.pdfToPDFA.title=PDF în PDF/A +home.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung. +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation + +home.PDFToWord.title=PDF în Word +home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT). +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile + +home.PDFToPresentation.title=PDF în Prezentare +home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP). +PDFToPresentation.tags=slides,show,office,microsoft + +home.PDFToText.title=PDF în Text/RTF +home.PDFToText.desc=Convertește un document PDF în format Text sau RTF. +PDFToText.tags=richformat,richtextformat,rich text format + +home.PDFToHTML.title=PDF în HTML +home.PDFToHTML.desc=Convertește un document PDF în format HTML. +PDFToHTML.tags=web content,browser friendly + + +home.PDFToXML.title=PDF în XML +home.PDFToXML.desc=Convertește un document PDF în format XML. +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert + +home.ScannerImageSplit.title=Detectează/Împarte poze scanate +home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF. +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize + +home.sign.title=Semnează +home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine. +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature + +home.flatten.title=Nivelare +home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF. +flatten.tags=static,deactivate,non-interactive,streamline + +home.repair.title=Repară +home.repair.desc=Încearcă să repare un document PDF corupt/defect. +repair.tags=fix,restore,correction,recover + +home.removeBlanks.title=Elimină pagini goale +home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document. +removeBlanks.tags=cleanup,streamline,non-content,organize + +home.removeAnnotations.title=Remove Annotations +home.removeAnnotations.desc=Removes all comments/annotations from a PDF +removeAnnotations.tags=comments,highlight,notes,markup,remove + +home.compare.title=Compară +home.compare.desc=Compară și arată diferențele dintre 2 documente PDF. +compare.tags=differentiate,contrast,changes,analysis + +home.certSign.title=Semnare cu certificat +home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) +certSign.tags=authenticate,PEM,P12,official,encrypt + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +pageLayout.tags=merge,composite,single-view,organize + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. +scalePages.tags=resize,modify,dimension,adapt + +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +pipeline.tags=automate,sequence,scripted,batch-process + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +add-page-numbers.tags=paginate,label,organize,index + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header +auto-rename.tags=auto-detect,header-based,organize,relabel + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +adjust-contrast.tags=color-correction,tune,modify,enhance + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) +crop.tags=trim,shrink,edit,shape + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +autoSplitPDF.tags=QR-based,separate,scan-segment,organize + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files +sanitizePdf.tags=clean,secure,safe,remove-threats + +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert + + +home.MarkdownToPDF.title=Markdown to PDF +home.MarkdownToPDF.desc=Converts any Markdown file to PDF +MarkdownToPDF.tags=markup,web-content,transformation,convert + + +home.getPdfInfo.title=Get ALL Info on PDF +home.getPdfInfo.desc=Grabs any and all information possible on PDFs +getPdfInfo.tags=infomation,data,stats,statistics + + +home.extractPage.title=Extract page(s) +home.extractPage.desc=Extracts select pages from PDF +extractPage.tags=extract + + +home.PdfToSinglePage.title=PDF to Single Large Page +home.PdfToSinglePage.desc=Merges all PDF pages into one large single page +PdfToSinglePage.tags=single page + + +home.showJS.title=Show Javascript +home.showJS.desc=Searches and displays any JS injected into a PDF +showJS.tags=JS + +home.autoRedact.title=Auto Redact +home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text +showJS.tags=JS + +home.tableExtraxt.title=PDF to CSV +home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV +tableExtraxt.tags=CSV,Table Extraction,extract,convert + + +home.autoSizeSplitPDF.title=Auto Split by Size/Count +home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count +autoSizeSplitPDF.tags=pdf,split,document,organization + + +home.overlay-pdfs.title=Overlay PDFs +home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF +overlay-pdfs.tags=Overlay + +home.split-by-sections.title=Split PDF by Sections +home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections +split-by-sections.tags=Section Split, Divide, Customize + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Sign in +login.signin=Sign in +login.rememberme=Remember me +login.invalid=Invalid username or password. +login.locked=Your account has been locked. +login.signinTitle=Please sign in + + +#auto-redact +autoRedact.title=Auto Redact +autoRedact.header=Auto Redact +autoRedact.colorLabel=Colour +autoRedact.textsToRedactLabel=Text to Redact (line-separated) +autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret +autoRedact.useRegexLabel=Use Regex +autoRedact.wholeWordSearchLabel=Whole Word Search +autoRedact.customPaddingLabel=Custom Extra Padding +autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +autoRedact.submitButton=Submit + + +#showJS +showJS.title=Show Javascript +showJS.header=Show Javascript +showJS.downloadJS=Download Javascript +showJS.submit=Show + + +#pdfToSinglePage +pdfToSinglePage.title=PDF To Single Page +pdfToSinglePage.header=PDF To Single Page +pdfToSinglePage.submit=Convert To Single Page + + +#pageExtracter +pageExtracter.title=Extract Pages +pageExtracter.header=Extract Pages +pageExtracter.submit=Extract + + +#getPdfInfo +getPdfInfo.title=Get Info on PDF +getPdfInfo.header=Get Info on PDF +getPdfInfo.submit=Get Info +getPdfInfo.downloadJson=Download JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown To PDF +MarkdownToPDF.header=Markdown To PDF +MarkdownToPDF.submit=Convert +MarkdownToPDF.help=Work in progress +MarkdownToPDF.credit=Uses WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL To PDF +URLToPDF.header=URL To PDF +URLToPDF.submit=Convert +URLToPDF.credit=Uses WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML To PDF +HTMLToPDF.header=HTML To PDF +HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required +HTMLToPDF.submit=Convert +HTMLToPDF.credit=Uses WeasyPrint + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.customTextDesc=Custom Text +addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc +addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.addBorder=Add Borders +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Semnare certificat +certSign.header=Semnează un fișier PDF cu certificatul tău (În curs de desfășurare) +certSign.selectPDF=Selectează un fișier PDF pentru semnare: +certSign.selectKey=Selectează fișierul cheie privată (format PKCS#8, poate fi .pem sau .der): +certSign.selectCert=Selectează fișierul de certificat (format X.509, poate fi .pem sau .der): +certSign.selectP12=Selectează fișierul de stocare cheie PKCS#12 (.p12 sau .pfx) (Opțional, dacă este furnizat, ar trebui să conțină cheia privată și certificatul tău): +certSign.certType=Tipul certificatului +certSign.password=Introdu parola pentru stocarea cheie sau cheia privată (dacă există): +certSign.showSig=Afișează semnătura +certSign.reason=Motivul +certSign.location=Locația +certSign.name=Numele +certSign.submit=Semnează PDF + + +#removeBlanks +removeBlanks.title=Elimină pagini goale +removeBlanks.header=Elimină pagini goale +removeBlanks.threshold=Prag: +removeBlanks.thresholdDesc=Prag pentru determinarea cât de alb trebuie să fie un pixel alb +removeBlanks.whitePercent=Procent alb (%): +removeBlanks.whitePercentDesc=Procentul paginii care trebuie să fie alb pentru a fi eliminată +removeBlanks.submit=Elimină pagini goale + + +#removeAnnotations +removeAnnotations.title=Remove Annotations +removeAnnotations.header=Remove Annotations +removeAnnotations.submit=Remove + + +#compare +compare.title=Compară +compare.header=Compară PDF-uri +compare.document.1=Document 1 +compare.document.2=Document 2 +compare.submit=Compară + + +#sign +sign.title=Semnează +sign.header=Semnează documente PDF +sign.upload=Încarcă Imaginea +sign.draw=Desenează Semnătura +sign.text=Introdu Textul +sign.clear=Curăță +sign.add=Adaugă + + +#repair +repair.title=Repară +repair.header=Repară documente PDF +repair.submit=Repară + + +#flatten +flatten.title=Nivelare +flatten.header=Nivelează documente PDF +flatten.submit=Nivelează + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Prag unghi: +ScannerImageSplit.selectText.2=Stabilește unghiul absolut minim necesar pentru ca imaginea să fie rotită (implicit: 5). +ScannerImageSplit.selectText.3=Toleranță: +ScannerImageSplit.selectText.4=Determină intervalul de variație a culorii în jurul culorii de fundal estimate (implicit: 20). +ScannerImageSplit.selectText.5=Arie minimă: +ScannerImageSplit.selectText.6=Stabilește pragul minim de arie pentru o fotografie (implicit: 8000). +ScannerImageSplit.selectText.7=Arie minimă a conturului: +ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pentru o fotografie. +ScannerImageSplit.selectText.9=Mărimea marginii: +ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1). + + +#OCR +ocr.title=OCR / Curățare scanare +ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor) +ocr.selectText.1=Selectați limbile care trebuie detectate în PDF (Cele listate sunt cele detectate în prezent): +ocr.selectText.2=Produceți un fișier text care conține textul OCR împreună cu PDF-ul OCR +ocr.selectText.3=Corectați paginile care au fost scanate în unghi înclinat prin rotirea lor în poziție corectă +ocr.selectText.4=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal. (Nu se schimbă rezultatul) +ocr.selectText.5=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal, menține curățarea în rezultat. +ocr.selectText.6=Ignorați paginile care conțin text interactiv, OCR-ul se aplică doar paginilor care sunt imagini +ocr.selectText.7=Forțează OCR-ul, va aplica OCR pe fiecare pagină, înlăturând toate elementele de text originale +ocr.selectText.8=Normal (Va genera eroare dacă PDF-ul conține text) +ocr.selectText.9=Setări suplimentare +ocr.selectText.10=Mod OCR +ocr.selectText.11=Elimină imaginile după OCR (Elimină TOATE imaginile, util doar în etapa de conversie) +ocr.selectText.12=Tip de redare (Avansat) +ocr.help=Citiți documentația pentru a afla cum să utilizați acest serviciu pentru alte limbi și/sau în afara mediului Docker +ocr.credit=Acest serviciu utilizează OCRmyPDF și Tesseract pentru OCR. +ocr.submit=Procesează PDF-ul cu OCR + + +#extractImages +extractImages.title=Extrage Imagini +extractImages.header=Extrage Imagini +extractImages.selectText=Selectați formatul imaginii în care să se convertească imaginile extrase +extractImages.submit=Extrage + + +#File to PDF +fileToPDF.title=Fișier în PDF +fileToPDF.header=Convertiți orice fișier în PDF +fileToPDF.credit=Acest serviciu utilizează LibreOffice și Unoconv pentru conversia fișierelor. +fileToPDF.supportedFileTypes=Tipurile de fișiere suportate ar trebui să includă cele de mai jos. Pentru o listă completă și actualizată a formatelor suportate, consultați documentația LibreOffice. +fileToPDF.submit=Convertiți în PDF + + +#compress +compress.title=Comprimare +compress.header=Comprimare PDF +compress.credit=Acest serviciu utilizează OCRmyPDF pentru comprimarea/optimalizarea PDF-urilor. +compress.selectText.1=Nivel de optimizare: +compress.selectText.2=0 (Fără optimizare) +compress.selectText.3=1 (Implicit, optimizare fără pierdere) +compress.selectText.4=2 (Optimizare cu pierdere) +compress.selectText.5=3 (Optimizare cu pierdere, mai agresivă) +compress.submit=Comprimare + + +#Add image +addImage.title=Adăugare imagine +addImage.header=Adăugare imagine în PDF +addImage.everyPage=Pe fiecare pagină? +addImage.upload=Adăugare imagine +addImage.submit=Adăugare imagine + + +#merge +merge.title=Unire +merge.header=Unirea mai multor PDF-uri (2+) +merge.sortByName=Sort by name +merge.sortByDate=Sort by date +merge.submit=Unire + + +#pdfOrganiser +pdfOrganiser.title=Organizator de pagini +pdfOrganiser.header=Organizator de pagini PDF +pdfOrganiser.submit=Rearanjați paginile + + +#multiTool +multiTool.title=Instrument PDF multiplu +multiTool.header=Instrument PDF multiplu + +#view pdf +viewPdf.title=View PDF +viewPdf.header=View PDF + +#pageRemover +pageRemover.title=Înlăturare pagini +pageRemover.header=Înlăturare pagini din PDF +pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă): +pageRemover.submit=Ștergere pagini + + +#rotate +rotate.title=Rotește PDF +rotate.header=Rotește PDF +rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de grade): +rotate.submit=Rotește + + +#merge +split.title=Împarte PDF +split.header=Împarte PDF +split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți +split.desc.2=Prin urmare, selectând 1,3,7-8, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel: +split.desc.3=Documentul #1: Pagina 1 +split.desc.4=Documentul #2: Paginile 2 și 3 +split.desc.5=Documentul #3: Paginile 4, 5 și 6 +split.desc.6=Documentul #4: Pagina 7 +split.desc.7=Documentul #5: Pagina 8 +split.desc.8=Documentul #6: Paginile 9 și 10 +split.splitPages=Introduceți paginile pe care să le împărțiți: +split.submit=Împarte + + +#merge +imageToPDF.title=Imagine în PDF +imageToPDF.header=Imagine în PDF +imageToPDF.submit=Convertă +imageToPDF.selectLabel=Image Fit Options +imageToPDF.fillPage=Fill Page +imageToPDF.fitDocumentToImage=Fit Page to Image +imageToPDF.maintainAspectRatio=Maintain Aspect Ratios +imageToPDF.selectText.2=Rotire automată a PDF-ului +imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini) +imageToPDF.selectText.4=Unifică într-un singur PDF +imageToPDF.selectText.5=Convertă în PDF-uri separate + + +#pdfToImage +pdfToImage.title=PDF în Imagine +pdfToImage.header=PDF în Imagine +pdfToImage.selectText=Format imagine +pdfToImage.singleOrMultiple=Tip rezultat imagine +pdfToImage.single=O singură imagine mare +pdfToImage.multi=Mai multe imagini +pdfToImage.colorType=Tip culoare +pdfToImage.color=Culoare +pdfToImage.grey=Scală de gri +pdfToImage.blackwhite=Alb și negru (Poate pierde date!) +pdfToImage.submit=Convertă + + +#addPassword +addPassword.title=Adăugați parolă +addPassword.header=Adăugați o parolă (Criptare) +addPassword.selectText.1=Selectați PDF-ul pentru criptare +addPassword.selectText.2=Parolă +addPassword.selectText.3=Lungime cheie de criptare +addPassword.selectText.4=Valori mai mari sunt mai puternice, dar valorile mai mici au o compatibilitate mai bună. +addPassword.selectText.5=Permisiuni de setare +addPassword.selectText.6=Preveniți asamblarea documentului +addPassword.selectText.7=Preveniți extragerea conținutului +addPassword.selectText.8=Preveniți extragerea pentru accesibilitate +addPassword.selectText.9=Preveniți completarea formularului +addPassword.selectText.10=Preveniți modificarea +addPassword.selectText.11=Preveniți modificarea adnotărilor +addPassword.selectText.12=Preveniți tipărirea +addPassword.selectText.13=Preveniți tipărirea în formate diferite +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Criptare + + +#watermark +watermark.title=Adăugați Filigran +watermark.header=Adăugați Filigran +watermark.selectText.1=Selectați PDF-ul la care să adăugați filigranul: +watermark.selectText.2=Textul Filigranului: +watermark.selectText.3=Mărimea fontului: +watermark.selectText.4=Rotire (0-360): +watermark.selectText.5=widthSpacer (Spațiu între fiecare filigran pe orizontală): +watermark.selectText.6=heightSpacer (Spațiu între fiecare filigran pe verticală): +watermark.selectText.7=Opacitate (0% - 100%): +watermark.selectText.8=Watermark Type: +watermark.selectText.9=Watermark Image: +watermark.submit=Adăugați Filigran + + +#Change permissions +permissions.title=Schimbați Permisiunile +permissions.header=Schimbați Permisiunile +permissions.warning=Pentru a face aceste permisiuni neschimbabile, se recomandă să le setați cu o parolă prin intermediul paginii de adăugare a parolei +permissions.selectText.1=Selectați PDF-ul pentru a schimba permisiunile +permissions.selectText.2=Permisiunile de setat +permissions.selectText.3=Preveniți asamblarea documentului +permissions.selectText.4=Preveniți extragerea conținutului +permissions.selectText.5=Preveniți extragerea pentru accesibilitate +permissions.selectText.6=Preveniți completarea formularului +permissions.selectText.7=Preveniți modificarea +permissions.selectText.8=Preveniți modificarea adnotărilor +permissions.selectText.9=Preveniți tipărirea +permissions.selectText.10=Preveniți tipărirea în formate diferite +permissions.submit=Schimbare + + +#remove password +removePassword.title=Eliminați parola +removePassword.header=Eliminați parola (Decodificați) +removePassword.selectText.1=Selectați PDF-ul pentru decodificare +removePassword.selectText.2=Parolă +removePassword.submit=Eliminați + + +#changeMetadata +changeMetadata.title=Titlu: +changeMetadata.header=Schimbați Metadatele +changeMetadata.selectText.1=Vă rugăm să editați variabilele pe care doriți să le schimbați +changeMetadata.selectText.2=Ștergeți toate metadatele +changeMetadata.selectText.3=Afișați Metadatele Personalizate: +changeMetadata.author=Autor: +changeMetadata.creationDate=Data creării (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Creator: +changeMetadata.keywords=Cuvinte cheie: +changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Producător: +changeMetadata.subject=Subiect: +changeMetadata.title=Titlu: +changeMetadata.trapped=Blocat: +changeMetadata.selectText.4=Alte Metadate: +changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate +changeMetadata.submit=Schimbare + + +#pdfToPDFA +pdfToPDFA.title=PDF către PDF/A +pdfToPDFA.header=PDF către PDF/A +pdfToPDFA.credit=Acest serviciu utilizează OCRmyPDF pentru conversia în PDF/A +pdfToPDFA.submit=Convert + + +#PDFToWord +PDFToWord.title=PDF către Word +PDFToWord.header=PDF către Word +PDFToWord.selectText.1=Format fișier de ieșire +PDFToWord.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToWord.submit=Convert + + +#PDFToPresentation +PDFToPresentation.title=PDF către Prezentare +PDFToPresentation.header=PDF către Prezentare +PDFToPresentation.selectText.1=Format fișier de ieșire +PDFToPresentation.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToPresentation.submit=Convert + + +#PDFToText +PDFToText.title=PDF către Text/RTF +PDFToText.header=PDF către Text/RTF +PDFToText.selectText.1=Format fișier de ieșire +PDFToText.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToText.submit=Convert + + +#PDFToHTML +PDFToHTML.title=PDF către HTML +PDFToHTML.header=PDF către HTML +PDFToHTML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToHTML.submit=Convert + + +#PDFToXML +PDFToXML.title=PDF către XML +PDFToXML.header=PDF către XML +PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToXML.submit=Convert + +#PDFToCSV +PDFToCSV.title=PDF �n CSV +PDFToCSV.header=PDF �n CSV +PDFToCSV.prompt=Choose page to extract table +PDFToCSV.submit=Extrage + +#split-by-size-or-count +split-by-size-or-count.header=Split PDF by Size or Count +split-by-size-or-count.type.label=Select Split Type +split-by-size-or-count.type.size=By Size +split-by-size-or-count.type.pageCount=By Page Count +split-by-size-or-count.type.docCount=By Document Count +split-by-size-or-count.value.label=Enter Value +split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5) +split-by-size-or-count.submit=Submit + + +#overlay-pdfs +overlay-pdfs.header=Overlay PDF Files +overlay-pdfs.baseFile.label=Select Base PDF File +overlay-pdfs.overlayFiles.label=Select Overlay PDF Files +overlay-pdfs.mode.label=Select Overlay Mode +overlay-pdfs.mode.sequential=Sequential Overlay +overlay-pdfs.mode.interleaved=Interleaved Overlay +overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay +overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode) +overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1) +overlay-pdfs.position.label=Select Overlay Position +overlay-pdfs.position.foreground=Foreground +overlay-pdfs.position.background=Background +overlay-pdfs.submit=Submit + + +#split-by-sections +split-by-sections.title=Split PDF by Sections +split-by-sections.header=Split PDF into Sections +split-by-sections.horizontal.label=Horizontal Divisions +split-by-sections.vertical.label=Vertical Divisions +split-by-sections.horizontal.placeholder=Enter number of horizontal divisions +split-by-sections.vertical.placeholder=Enter number of vertical divisions +split-by-sections.submit=Split PDF diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index c29c8f24..7266094d 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index d090ef8e..e6d9aa13 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Credentials changed! notAuthenticatedMessage=User not authenticated. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Current password is incorrect. usernameExistsMessage=New Username already exists. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 43eab312..3dc5e0d7 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Kırmızı green=Yeşil blue=Mavi custom=Özel +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=Bilgiler değiştirildi! notAuthenticatedMessage=Kullanıcı doğrulanmadı. @@ -50,6 +51,29 @@ incorrectPasswordMessage=Mevcut şifre yanlış. usernameExistsMessage=Yeni Kullanıcı Adı zaten var. +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 808fac2c..1fec9ae8 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -1,4 +1,4 @@ -########### +########### # Generic # ########### # the direction that the language is written (ltr=left to right, rtl = right to left) @@ -42,6 +42,7 @@ red=Red green=Green blue=Blue custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! changedCredsMessage=凭证已更改! notAuthenticatedMessage=用户未经过身份验证。 @@ -50,6 +51,29 @@ incorrectPasswordMessage=当前密码不正确。 usernameExistsMessage=新用户名已存在。 +############### +# Pipeline # +############### +pipeline.header=Pipeline Menu (Alpha) +pipeline.uploadButton=Upload Custom +pipeline.configureButton=Configure +pipeline.defaultOption=Custom +pipeline.submitButton=Submit + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline Configuration +pipelineOptions.pipelineNameLabel=Pipeline Name +pipelineOptions.saveSettings=Save Settings +pipelineOptions.pipelineNamePrompt=Enter pipeline name here +pipelineOptions.addOperationButton=Add operation +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + ############# # NAVBAR # diff --git a/src/main/resources/static/js/pipeline.js b/src/main/resources/static/js/pipeline.js index 4fcde3a0..079f2503 100644 --- a/src/main/resources/static/js/pipeline.js +++ b/src/main/resources/static/js/pipeline.js @@ -19,7 +19,7 @@ function validatePipeline() { // Strip off 'ZIP-' prefix currentOperationDescription = currentOperationDescription.replace("ZIP-", ''); nextOperationDescription = nextOperationDescription.replace("ZIP-", ''); - + let currentOperationOutput = currentOperationDescription.match(/Output:([A-Z\/]*)/)?.[1] || ""; let nextOperationInput = nextOperationDescription.match(/Input:([A-Z\/]*)/)?.[1] || ""; @@ -57,14 +57,14 @@ function validatePipeline() { } function updateValidateButton(isValid) { - var validateButton = document.getElementById('validateButton'); - if (isValid) { - validateButton.classList.remove('btn-danger'); - validateButton.classList.add('btn-success'); - } else { - validateButton.classList.remove('btn-success'); - validateButton.classList.add('btn-danger'); - } + var validateButton = document.getElementById('validateButton'); + if (isValid) { + validateButton.classList.remove('btn-danger'); + validateButton.classList.add('btn-success'); + } else { + validateButton.classList.remove('btn-success'); + validateButton.classList.add('btn-danger'); + } } @@ -77,7 +77,7 @@ document.getElementById('submitConfigBtn').addEventListener('click', function() } let selectedOperation = document.getElementById('operationsDropdown').value; - + var pipelineName = document.getElementById('pipelineName').value; let pipelineList = document.getElementById('pipelineList').children; @@ -101,18 +101,18 @@ document.getElementById('submitConfigBtn').addEventListener('click', function() "parameters": parameters }); } - - - - - - - - - - - - + + + + + + + + + + + + let pipelineConfigJson = JSON.stringify(pipelineConfig, null, 2); @@ -131,34 +131,34 @@ document.getElementById('submitConfigBtn').addEventListener('click', function() console.log("formData", formData); fetch('api/v1/pipeline/handleData', { - method: 'POST', - body: formData + method: 'POST', + body: formData }) - .then(response => { - // Save the response to use it later - const responseToUseLater = response; - - return response.blob().then(blob => { - let url = window.URL.createObjectURL(blob); - let a = document.createElement('a'); - a.href = url; - - // Use responseToUseLater instead of response - const contentDisposition = responseToUseLater.headers.get('Content-Disposition'); - let filename = 'download'; - if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) { - filename = decodeURIComponent(contentDisposition.split('filename=')[1].replace(/"/g, '')).trim(); - } - a.download = filename; - - document.body.appendChild(a); - a.click(); - a.remove(); - }); - }) - .catch((error) => { - console.error('Error:', error); - }); + .then(response => { + // Save the response to use it later + const responseToUseLater = response; + + return response.blob().then(blob => { + let url = window.URL.createObjectURL(blob); + let a = document.createElement('a'); + a.href = url; + + // Use responseToUseLater instead of response + const contentDisposition = responseToUseLater.headers.get('Content-Disposition'); + let filename = 'download'; + if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) { + filename = decodeURIComponent(contentDisposition.split('filename=')[1].replace(/"/g, '')).trim(); + } + a.download = filename; + + document.body.appendChild(a); + a.click(); + a.remove(); + }); + }) + .catch((error) => { + console.error('Error:', error); + }); }); @@ -182,10 +182,11 @@ fetch('v1/api-docs') // Group operations by tags Object.keys(data.paths).forEach(operationPath => { let operation = data.paths[operationPath].post; - if(!operation || !operation.description) { + if (!operation || !operation.description) { console.log(operationPath); } - if (operation && !ignoreOperations.includes(operationPath) && !operation.description.includes("Type:MISO")) { + //!operation.description.includes("Type:MISO") + if (operation && !ignoreOperations.includes(operationPath)) { let operationTag = operation.tags[0]; // This assumes each operation has exactly one tag if (!operationsByTag[operationTag]) { operationsByTag[operationTag] = []; @@ -193,6 +194,12 @@ fetch('v1/api-docs') operationsByTag[operationTag].push(operationPath); } }); + + // Sort operations within each tag alphabetically + Object.keys(operationsByTag).forEach(tag => { + operationsByTag[tag].sort(); + }); + // Specify the order of tags let tagOrder = ["General", "Security", "Convert", "Misc", "Filter"]; @@ -204,17 +211,17 @@ fetch('v1/api-docs') operationsByTag[tag].forEach(operationPath => { let option = document.createElement('option'); - + let operationPathDisplay = operationPath operationPathDisplay = operationPath.replace(new RegExp("api/v1/" + tag.toLowerCase() + "/", 'i'), ""); - - - if(operationPath.includes("/convert")){ + + + if (operationPath.includes("/convert")) { operationPathDisplay = operationPathDisplay.replace(/^\//, '').replaceAll("/", " to "); } else { operationPathDisplay = operationPathDisplay.replace(/\//g, ''); // Remove slashes } - operationPathDisplay = operationPathDisplay.replaceAll(" ","-"); + operationPathDisplay = operationPathDisplay.replaceAll(" ", "-"); option.textContent = operationPathDisplay; option.value = operationPath; // Keep the value with slashes for querying group.appendChild(option); @@ -234,37 +241,43 @@ document.getElementById('addOperationBtn').addEventListener('click', function() listItem.className = "list-group-item"; let hasSettings = false; if (apiDocs[selectedOperation] && apiDocs[selectedOperation].post) { - const postMethod = apiDocs[selectedOperation].post; - - // Check if parameters exist - if (postMethod.parameters && postMethod.parameters.length > 0) { - hasSettings = true; - } else if (postMethod.requestBody && postMethod.requestBody.content['multipart/form-data']) { - // Extract the reference key - const refKey = postMethod.requestBody.content['multipart/form-data'].schema['$ref'].split('/').pop(); - // Check if the referenced schema exists and has properties - if (apiSchemas[refKey] && Object.keys(apiSchemas[refKey].properties).length > 0) { - hasSettings = true; - } - } + const postMethod = apiDocs[selectedOperation].post; + + // Check if parameters exist + if (postMethod.parameters && postMethod.parameters.length > 0) { + hasSettings = true; + } else if (postMethod.requestBody && postMethod.requestBody.content['multipart/form-data']) { + // Extract the reference key + const refKey = postMethod.requestBody.content['multipart/form-data'].schema['$ref'].split('/').pop(); + // Check if the referenced schema exists and has properties more than just its input file + if (apiSchemas[refKey]) { + const properties = apiSchemas[refKey].properties; + const propertyKeys = Object.keys(properties); + + // Check if there's more than one property or if there's exactly one property and its format is not 'binary' + if (propertyKeys.length > 1 || (propertyKeys.length === 1 && properties[propertyKeys[0]].format !== 'binary')) { + hasSettings = true; + } + } + } } listItem.innerHTML = ` -
-
${selectedOperation}
-
- - - - -
-
-`; +
+
${selectedOperation}
+
+ + + + +
+
+ `; pipelineList.appendChild(listItem); @@ -273,6 +286,7 @@ document.getElementById('addOperationBtn').addEventListener('click', function() event.preventDefault(); if (listItem.previousElementSibling) { pipelineList.insertBefore(listItem, listItem.previousElementSibling); + updateConfigInDropdown(); } }); @@ -280,13 +294,16 @@ document.getElementById('addOperationBtn').addEventListener('click', function() event.preventDefault(); if (listItem.nextElementSibling) { pipelineList.insertBefore(listItem.nextElementSibling, listItem); + updateConfigInDropdown(); } + }); listItem.querySelector('.remove').addEventListener('click', function(event) { event.preventDefault(); pipelineList.removeChild(listItem); hideOrShowPipelineHeader(); + updateConfigInDropdown(); }); listItem.querySelector('.pipelineSettings').addEventListener('click', function(event) { @@ -303,19 +320,19 @@ document.getElementById('addOperationBtn').addEventListener('click', function() // Resolve the $ref reference to get actual schema properties let refKey = apiDocs[operation].post.requestBody.content['multipart/form-data'].schema['$ref'].split('/').pop(); let requestBodyData = apiSchemas[refKey].properties || {}; - + // Combine operationData and requestBodyData into a single array operationData = operationData.concat(Object.keys(requestBodyData).map(key => ({ - name: key, - schema: requestBodyData[key] + name: key, + schema: requestBodyData[key] }))); pipelineSettingsContent.innerHTML = ''; operationData.forEach(parameter => { // If the parameter name is 'fileInput', return early to skip the rest of this iteration - if (parameter.name === 'fileInput') return; - + if (parameter.name === 'fileInput') return; + let parameterDiv = document.createElement('div'); parameterDiv.className = "mb-3"; @@ -324,12 +341,12 @@ document.getElementById('addOperationBtn').addEventListener('click', function() parameterLabel.title = parameter.schema.description; parameterLabel.setAttribute('for', parameter.name); parameterDiv.appendChild(parameterLabel); - - let defaultValue = parameter.schema.example; - if (defaultValue === undefined) defaultValue = parameter.schema.default; + + let defaultValue = parameter.schema.example; + if (defaultValue === undefined) defaultValue = parameter.schema.default; let parameterInput; - + // check if enum exists in schema if (parameter.schema.enum) { // if enum exists, create a select element @@ -349,15 +366,15 @@ document.getElementById('addOperationBtn').addEventListener('click', function() case 'string': if (parameter.schema.format === 'binary') { // This is a file input - + //parameterInput = document.createElement('input'); //parameterInput.type = 'file'; //parameterInput.className = "form-control"; - + parameterInput = document.createElement('input'); parameterInput.type = 'text'; parameterInput.className = "form-control"; - parameterInput.value = "FileInputPathToBeInputtedManuallyOffline"; + parameterInput.value = "FileInputPathToBeInputtedManuallyForOffline"; } else { parameterInput = document.createElement('input'); parameterInput.type = 'text'; @@ -379,8 +396,9 @@ document.getElementById('addOperationBtn').addEventListener('click', function() break; case 'array': case 'object': + //TODO compare to doc and check if fileInput array? parameter.schema.format === 'binary' parameterInput = document.createElement('textarea'); - parameterInput.placeholder = `Enter a JSON formatted ${parameter.schema.type}`; + parameterInput.placeholder = `Enter a JSON formatted ${parameter.schema.type}, If this is a fileInput, it is not currently supported`; parameterInput.className = "form-control"; break; default: @@ -418,42 +436,48 @@ document.getElementById('addOperationBtn').addEventListener('click', function() pipelineSettingsContent.appendChild(parameterDiv); }); - - let saveButton = document.createElement('button'); - saveButton.textContent = "Save Settings"; - saveButton.className = "btn btn-primary"; - saveButton.addEventListener('click', function(event) { - event.preventDefault(); - let settings = {}; - operationData.forEach(parameter => { - if(parameter.name !== "fileInput"){ - let value = document.getElementById(parameter.name).value; - switch (parameter.schema.type) { - case 'number': - case 'integer': - settings[parameter.name] = Number(value); - break; - case 'boolean': - settings[parameter.name] = document.getElementById(parameter.name).checked; - break; - case 'array': - case 'object': - try { - settings[parameter.name] = JSON.parse(value); - } catch (err) { - console.error(`Invalid JSON format for ${parameter.name}`); - } - break; - default: - settings[parameter.name] = value; + + if(hasSettings) { + let saveButton = document.createElement('button'); + saveButton.textContent = saveSettings; + saveButton.className = "btn btn-primary"; + saveButton.addEventListener('click', function(event) { + event.preventDefault(); + let settings = {}; + operationData.forEach(parameter => { + if (parameter.name !== "fileInput") { + let value = document.getElementById(parameter.name).value; + switch (parameter.schema.type) { + case 'number': + case 'integer': + settings[parameter.name] = Number(value); + break; + case 'boolean': + settings[parameter.name] = document.getElementById(parameter.name).checked; + break; + case 'array': + case 'object': + if (value === null || value === '') { + settings[parameter.name] = ''; + } else { + try { + settings[parameter.name] = JSON.parse(value); + } catch (err) { + console.error(`Invalid JSON format for ${parameter.name}`); + } + } + break; + default: + settings[parameter.name] = value; + } } - } + }); + operationSettings[operation] = settings; + //pipelineSettingsModal.style.display = "none"; }); - operationSettings[operation] = settings; - //pipelineSettingsModal.style.display = "none"; - }); - pipelineSettingsContent.appendChild(saveButton); - + pipelineSettingsContent.appendChild(saveButton); + saveButton.click(); + } //pipelineSettingsModal.style.display = "block"; //pipelineSettingsModal.getElementsByClassName("close")[0].onclick = function() { @@ -466,144 +490,182 @@ document.getElementById('addOperationBtn').addEventListener('click', function() // } //} } + showpipelineSettingsModal(selectedOperation); + updateConfigInDropdown(); + hideOrShowPipelineHeader(); + + + + + + + +}); + +function updateConfigInDropdown() { + let pipelineSelect = document.getElementById('pipelineSelect'); + let selectedOption = pipelineSelect.options[pipelineSelect.selectedIndex]; + + // Get the current configuration as JSON + let pipelineConfigJson = configToJson(); + console.log("pipelineConfigJson", pipelineConfigJson); + if (!pipelineConfigJson) { + console.error("Failed to update configuration: Invalid configuration"); + return; + } + + // Update the value of the selected option with the new configuration + selectedOption.value = pipelineConfigJson; + +} + +var saveBtn = document.getElementById('savePipelineBtn'); + +// Remove any existing event listeners +saveBtn.removeEventListener('click', savePipeline); + +// Add the event listener +saveBtn.addEventListener('click', savePipeline); +console.log("saveBtn", saveBtn) + +function configToJson() { + if (!validatePipeline()) { + return null; // Return null if validation fails + } + + var pipelineName = document.getElementById('pipelineName').value; + let pipelineList = document.getElementById('pipelineList').children; + let pipelineConfig = { + "name": pipelineName, + "pipeline": [], + "_examples": { + "outputDir": "{outputFolder}/{folderName}", + "outputFileName": "{filename}-{pipelineName}-{date}-{time}" + }, + "outputDir": "{outputFolder}", + "outputFileName": "{filename}" + }; + + for (let i = 0; i < pipelineList.length; i++) { + let operationName = pipelineList[i].querySelector('.operationName').textContent; + let parameters = operationSettings[operationName] || {}; + + parameters['fileInput'] = 'automated'; + + pipelineConfig.pipeline.push({ + "operation": operationName, + "parameters": parameters + }); + } + + return JSON.stringify(pipelineConfig, null, 2); +} + + + +function savePipeline() { + let pipelineConfigJson = configToJson(); + if (!pipelineConfigJson) { + console.error("Failed to save pipeline: Invalid configuration"); + return; + } + + let pipelineName = document.getElementById('pipelineName').value; + console.log("Downloading..."); + let a = document.createElement('a'); + a.href = URL.createObjectURL(new Blob([pipelineConfigJson], { type: 'application/json' })); + a.download = pipelineName + '.json'; + a.style.display = 'none'; + + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); +} + + +async function processPipelineConfig(configString) { + console.log("configString", configString); + let pipelineConfig = JSON.parse(configString); + let pipelineList = document.getElementById('pipelineList'); + + while (pipelineList.firstChild) { + pipelineList.removeChild(pipelineList.firstChild); + } + document.getElementById('pipelineName').value = pipelineConfig.name + for (const operationConfig of pipelineConfig.pipeline) { + let operationsDropdown = document.getElementById('operationsDropdown'); + operationsDropdown.value = operationConfig.operation; + operationSettings[operationConfig.operation] = operationConfig.parameters; + + // assuming addOperation is async + await new Promise((resolve) => { + document.getElementById('addOperationBtn').addEventListener('click', resolve, { once: true }); + document.getElementById('addOperationBtn').click(); + }); + + let lastOperation = pipelineList.lastChild; + + Object.keys(operationConfig.parameters).forEach(parameterName => { + let input = document.getElementById(parameterName); + if (input) { + switch (input.type) { + case 'checkbox': + input.checked = operationConfig.parameters[parameterName]; + break; + case 'number': + input.value = operationConfig.parameters[parameterName].toString(); + break; + case 'file': + if (parameterName !== 'fileInput') { + // Create a new file input element + let newInput = document.createElement('input'); + newInput.type = 'file'; + newInput.id = parameterName; + + // Add the new file input to the main page (change the selector according to your needs) + document.querySelector('#main').appendChild(newInput); + } + break; + case 'text': + case 'textarea': + default: + input.value = JSON.stringify(operationConfig.parameters[parameterName]); + } + } + }); + + } +} + + +document.getElementById('uploadPipelineBtn').addEventListener('click', function() { + document.getElementById('uploadPipelineInput').click(); +}); + +document.getElementById('uploadPipelineInput').addEventListener('change', function(e) { + let reader = new FileReader(); + reader.onload = function(event) { + processPipelineConfig(event.target.result); + }; + reader.readAsText(e.target.files[0]); hideOrShowPipelineHeader(); }); - - - - var saveBtn = document.getElementById('savePipelineBtn'); - // Remove any existing event listeners - saveBtn.removeEventListener('click', savePipeline); - - // Add the event listener - saveBtn.addEventListener('click', savePipeline); - console.log("saveBtn", saveBtn) - function savePipeline() { - - if (validatePipeline() === false) { - return; - } - - var pipelineName = document.getElementById('pipelineName').value; - let pipelineList = document.getElementById('pipelineList').children; - let pipelineConfig = { - "name": pipelineName, - "pipeline": [], - "_examples": { - "outputDir": "{outputFolder}/{folderName}", - "outputFileName": "{filename}-{pipelineName}-{date}-{time}" - }, - "outputDir": "{outputFolder}", - "outputFileName": "{filename}" - }; +document.getElementById('pipelineSelect').addEventListener('change', function(e) { + let selectedPipelineJson = e.target.value; // assuming the selected value is the JSON string of the pipeline config + processPipelineConfig(selectedPipelineJson); +}); - for (let i = 0; i < pipelineList.length; i++) { - let operationName = pipelineList[i].querySelector('.operationName').textContent; - let parameters = operationSettings[operationName] || {}; - - parameters['fileInput'] = 'automated'; - - pipelineConfig.pipeline.push({ - "operation": operationName, - "parameters": parameters - }); - } - console.log("Downloading.."); - let a = document.createElement('a'); - a.href = URL.createObjectURL(new Blob([JSON.stringify(pipelineConfig, null, 2)], { - type: 'application/json' - })); - a.download = pipelineName + '.json'; - a.style.display = 'none'; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - } - - async function processPipelineConfig(configString) { - let pipelineConfig = JSON.parse(configString); - let pipelineList = document.getElementById('pipelineList'); - - while (pipelineList.firstChild) { - pipelineList.removeChild(pipelineList.firstChild); - } - document.getElementById('pipelineName').value = pipelineConfig.name - for (const operationConfig of pipelineConfig.pipeline) { - let operationsDropdown = document.getElementById('operationsDropdown'); - operationsDropdown.value = operationConfig.operation; - operationSettings[operationConfig.operation] = operationConfig.parameters; - - // assuming addOperation is async - await new Promise((resolve) => { - document.getElementById('addOperationBtn').addEventListener('click', resolve, { once: true }); - document.getElementById('addOperationBtn').click(); - }); - - let lastOperation = pipelineList.lastChild; - - Object.keys(operationConfig.parameters).forEach(parameterName => { - let input = document.getElementById(parameterName); - if (input) { - switch (input.type) { - case 'checkbox': - input.checked = operationConfig.parameters[parameterName]; - break; - case 'number': - input.value = operationConfig.parameters[parameterName].toString(); - break; - case 'file': - if (parameterName !== 'fileInput') { - // Create a new file input element - let newInput = document.createElement('input'); - newInput.type = 'file'; - newInput.id = parameterName; - - // Add the new file input to the main page (change the selector according to your needs) - document.querySelector('#main').appendChild(newInput); - } - break; - case 'text': - case 'textarea': - default: - input.value = JSON.stringify(operationConfig.parameters[parameterName]); - } - } - }); - - } - } - - - document.getElementById('uploadPipelineBtn').addEventListener('click', function() { - document.getElementById('uploadPipelineInput').click(); - }); - - document.getElementById('uploadPipelineInput').addEventListener('change', function(e) { - let reader = new FileReader(); - reader.onload = function(event) { - processPipelineConfig(event.target.result); - }; - reader.readAsText(e.target.files[0]); - hideOrShowPipelineHeader(); - }); - - document.getElementById('pipelineSelect').addEventListener('change', function(e) { - let selectedPipelineJson = e.target.value; // assuming the selected value is the JSON string of the pipeline config - processPipelineConfig(selectedPipelineJson); - }); - - - function hideOrShowPipelineHeader() { - var pipelineHeader = document.getElementById('pipelineHeader'); - var pipelineList = document.getElementById('pipelineList'); - - if (pipelineList.children.length === 0) { - // Hide the pipeline header if there are no items in the pipeline list - pipelineHeader.style.display = 'none'; - } else { - // Show the pipeline header if there are items in the pipeline list - pipelineHeader.style.display = 'block'; - } +function hideOrShowPipelineHeader() { + var pipelineHeader = document.getElementById('pipelineHeader'); + var pipelineList = document.getElementById('pipelineList'); + + if (pipelineList.children.length === 0) { + // Hide the pipeline header if there are no items in the pipeline list + pipelineHeader.style.display = 'none'; + } else { + // Show the pipeline header if there are items in the pipeline list + pipelineHeader.style.display = 'block'; } +} diff --git a/src/main/resources/templates/pipeline.html b/src/main/resources/templates/pipeline.html index 51caf186..99b37a55 100644 --- a/src/main/resources/templates/pipeline.html +++ b/src/main/resources/templates/pipeline.html @@ -10,23 +10,29 @@ margin-right: 2px; } - .bordered-box { - border: 1px solid #ddd; - padding: 20px; - margin: 20px; - width: 70%; - } - - .center-element { - width: 80%; - text-align: center; - margin: auto; - } - .element-margin { - margin: 10px 0; /* Adjust this value to increase/decrease the margin as needed */ - } +.bordered-box { + border: 1px solid #ddd; + padding: 20px; + margin: 20px; + width: 70%; +} + +.center-element { + width: 80%; + text-align: center; + margin: auto; +} + +.element-margin { + margin: 10px 0; + /* Adjust this value to increase/decrease the margin as needed */ +} + +
@@ -35,154 +41,208 @@

- -

(Alpha) Pipeline Menu (Huge work in progress, very buggy!)

-
-
- - -
-
-
- -
-
-
-
-
- -
-
-
+

+

+
+
+ + - -

Current Limitations

-
    -
  • Cannot have more than one of the same operation
  • -
  • Cannot input additional files via UI
  • -
  • Does not work with multi-input functions yet (like merges)
  • -
  • All files and operations run in serial mode
  • -
- -

How it Works Notes

-
    -
  • Configure the pipeline config file and input files to run files against it
  • -
  • For reuse, download the config file and re-upload it when needed, or place it in /pipeline/defaultWebUIConfigs/ to auto-load in the web UI for all users
  • -
- -

How to use pre-load configs in web UI

-
    -
  • Download config files
  • -
  • For reuse, download the config file and re-upload it when needed, or place it in /pipeline/defaultWebUIConfigs/ to auto-load in the web UI for all users
  • -
- -

Todo

-
    -
  • fix initial config selected not loading
  • -
  • Fix operation adding requering settings to be openned and saved instead of saving defaults
  • -
  • multiInput support
  • -
  • Translation support
  • -
  • offline mode checks and testing
  • -
  • Improve operation config settings UI
  • -
- - -

User Guide for Local Directory Scanning and File Processing

- -

Setting Up Watched Folders:

-

Create a folder where you want your files to be monitored. This is your 'watched folder'.

-

The default directory for this is ./pipeline/watchedFolders/

-

Place any directories you want to be scanned into this folder, this folder should contain multiple folders each for their own tasks and pipelines.

- -

Configuring Processing with JSON Files:

-

In each directory you want processed (e.g ./pipeline/watchedFolders/officePrinter), include a JSON configuration file.

-

This JSON file should specify how you want the files in the directory to be handled (e.g., what operations to perform on them) which can be made, configured and downloaded from Stirling-PDF Pipeline interface.

- -

Automatic Scanning and Processing:

-

The system automatically checks the watched folder every minute for new directories and files to process.

-

When a directory with a valid JSON configuration file is found, it begins processing the files inside as per the configuration.

- -

Processing Steps:

-

Files in each directory are processed according to the instructions in the JSON file.

-

This might involve file conversions, data filtering, renaming files, etc. If the output of a step is a zip, this zip will be automatically unzipped as it passes to next process.

- -

Results and Output:

-

After processing, the results are saved in a specified output location. This could be a different folder or location as defined in the JSON file or the default location ./pipeline/finishedFolders/.

-

Each processed file is named and organized according to the rules set in the JSON configuration.

- -

Completion and Cleanup:

-

Once processing is complete, the original files in the watched folder's directory are removed.

-

You can find the processed files in the designated output location.

- -

Error Handling:

-

If there's an error during processing, the system will not delete the original files, allowing you to check and retry if necessary.

- -

User Interaction:

-

As a user, your main tasks are to set up the watched folders, place directories with files for processing, and create the corresponding JSON configuration files.

-

The system handles the rest, including scanning, processing, and outputting results.

- - - - - +
+
+ +
+
+
+
+
+ + +
+
+ + +

Current Limitations

+
    +
  • Cannot have more than one of the same operation
  • +
  • Cannot input additional files via UI
  • +
  • All files and operations run in serial mode
  • +
+ +

How it Works Notes

+
    +
  • Configure the pipeline config file and input files to run + files against it
  • +
  • For reuse, download the config file and re-upload it when + needed, or place it in /pipeline/defaultWebUIConfigs/ to + auto-load in the web UI for all users
  • +
+ +

How to use pre-load configs in web UI

+
    +
  • Download config files
  • +
  • For reuse, download the config file and re-upload it when + needed, or place it in /pipeline/defaultWebUIConfigs/ to + auto-load in the web UI for all users
  • +
+ +

Todo

+
    +
  • Translation support
  • +
  • Save to browser/Account
  • +
  • offline mode checks and testing
  • +
  • Improve operation config settings UI
  • +
+ + +

User Guide for Local Directory Scanning and File + Processing

+ +

Setting Up Watched Folders:

+

Create a folder where you want your files to be monitored. + This is your 'watched folder'.

+

+ The default directory for this is + ./pipeline/watchedFolders/ +

+

Place any directories you want to be scanned into this + folder, this folder should contain multiple folders each for their + own tasks and pipelines.

+ +

Configuring Processing with JSON Files:

+

+ In each directory you want processed (e.g + ./pipeline/watchedFolders/officePrinter + ), include a JSON configuration file. +

+

This JSON file should specify how you want the files in the + directory to be handled (e.g., what operations to perform on them) + which can be made, configured and downloaded from Stirling-PDF + Pipeline interface.

+ +

Automatic Scanning and Processing:

+

The system automatically checks the watched folder every + minute for new directories and files to process.

+

When a directory with a valid JSON configuration file is + found, it begins processing the files inside as per the + configuration.

+ +

Processing Steps:

+

Files in each directory are processed according to the + instructions in the JSON file.

+

This might involve file conversions, data filtering, + renaming files, etc. If the output of a step is a zip, this zip + will be automatically unzipped as it passes to next process.

+ +

Results and Output:

+

+ After processing, the results are saved in a specified output + location. This could be a different folder or location as defined + in the JSON file or the default location + ./pipeline/finishedFolders/ + . +

+

Each processed file is named and organized according to the + rules set in the JSON configuration.

+ +

Completion and Cleanup:

+

Once processing is complete, the original files in the + watched folder's directory are removed.

+

You can find the processed files in the designated output + location.

+ +

Error Handling:

+

If there's an error during processing, the system will not + delete the original files, allowing you to check and retry if + necessary.

+ +

User Interaction:

+

As a user, your main tasks are to set up the watched + folders, place directories with files for processing, and create + the corresponding JSON configuration files.

+

The system handles the rest, including scanning, processing, + and outputting results.

+ + + + + + + +
diff --git a/test.sh b/test.sh new file mode 100644 index 00000000..cf03796c --- /dev/null +++ b/test.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +# Function to check the health of the service with a timeout of 80 seconds +check_health() { + local service_name=$1 + local compose_file=$2 + local end=$((SECONDS+60)) + + echo -n "Waiting for $service_name to become healthy..." + until [ "$(docker inspect --format='{{json .State.Health.Status}}' "$service_name")" == '"healthy"' ] || [ $SECONDS -ge $end ]; do + sleep 3 + echo -n "." + if [ $SECONDS -ge $end ]; then + echo -e "\n$service_name health check timed out after 80 seconds." + echo "Printing logs for $service_name:" + docker logs "$service_name" + return 1 + fi + done + echo -e "\n$service_name is healthy!" + + return 0 +} + +# Function to test a Docker Compose configuration +test_compose() { + local compose_file=$1 + local service_name=$2 + local status=0 + + echo "Testing $compose_file configuration..." + + # Start up the Docker Compose service + docker-compose -f "$compose_file" up -d + + # Wait for the service to become healthy + if check_health "$service_name" "$compose_file"; then + echo "$service_name test passed." + else + echo "$service_name test failed." + status=1 + fi + + # Perform additional tests if needed + + # Tear down the service + docker-compose -f "$compose_file" down + + return $status +} + +# Keep track of which tests passed and failed +declare -a passed_tests +declare -a failed_tests + +run_tests() { + local test_name=$1 + local compose_file=$2 + + if test_compose "$compose_file" "$test_name"; then + passed_tests+=("$test_name") + else + failed_tests+=("$test_name") + fi +} + +# Main testing routine +main() { + SECONDS=0 + + export DOCKER_ENABLE_SECURITY=false + ./gradlew clean build + + # Building Docker images + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest -f ./Dockerfile . + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest-lite -f ./Dockerfile-lite . + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest-ultra-lite -f ./Dockerfile-ultra-lite . + + # Test each configuration + run_tests "Stirling-PDF-Ultra-Lite" "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" + run_tests "Stirling-PDF-Lite" "./exampleYmlFiles/docker-compose-latest-lite.yml" + run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml" + + export DOCKER_ENABLE_SECURITY=true + ./gradlew clean build + + # Building Docker images with security enabled + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest -f ./Dockerfile . + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest-lite -f ./Dockerfile-lite . + docker build --build-arg VERSION_TAG=alpha -t frooodle/s-pdf:latest-ultra-lite -f ./Dockerfile-ultra-lite . + + # Test each configuration with security + run_tests "Stirling-PDF-Ultra-Lite-Security" "./exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml" + run_tests "Stirling-PDF-Lite-Security" "./exampleYmlFiles/docker-compose-latest-lite-security.yml" + run_tests "Stirling-PDF-Security" "./exampleYmlFiles/docker-compose-latest-security.yml" + + # Report results + echo "All tests completed in $SECONDS seconds." + + + if [ ${#passed_tests[@]} -ne 0 ]; then + echo "Passed tests:" + fi + for test in "${passed_tests[@]}"; do + echo -e "\e[32m$test\e[0m" # Green color for passed tests + done + + if [ ${#failed_tests[@]} -ne 0 ]; then + echo "Failed tests:" + fi + for test in "${failed_tests[@]}"; do + echo -e "\e[31m$test\e[0m" # Red color for failed tests + done + + + + # Check if there are any failed tests and exit with an error code if so + if [ ${#failed_tests[@]} -ne 0 ]; then + echo "Some tests failed." + exit 1 + else + echo "All tests passed successfully." + exit 0 + fi + +} + +main