[![Docker Pulls](https://img.shields.io/docker/pulls/frooodle/s-pdf)](https://hub.docker.com/r/frooodle/s-pdf)
[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/Cn8pWhQRxZ)
@@ -10,25 +10,26 @@
[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
-This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.
+This is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. Originally developed entirely by ChatGPT, this locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements.
-Stirling PDF makes no outbound calls for any record keeping or tracking.
+Stirling PDF does not initiate any outbound calls for record-keeping or tracking purposes.
All files and PDFs exist either exclusively on the client side, reside in server memory only during task execution, or temporarily reside in a file solely for the execution of the task. Any file downloaded by the user will have been deleted from the server by that point.
![stirling-home](images/stirling-home.jpg)
## Features
+
- Dark mode support.
- Custom download options (see [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/images/settings.png) for example)
- Parallel file processing and downloads
- API for integration with external scripts
- Optional Login and Authentication support (see [here](https://github.com/Stirling-Tools/Stirling-PDF/tree/main#login-authentication) for documentation)
-
## **PDF Features**
### **Page Operations**
+
- View and modify PDFs - View multi page PDFs with custom viewing sorting and searching. Plus on page edit features like annotate, draw and adding text and images. (Using PDF.js with Joxit and Liberation.Liberation fonts)
- Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
- Merge multiple PDFs together into a single resultant file.
@@ -45,6 +46,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
- Convert PDF to a single page.
### **Conversion Operations**
+
- Convert PDFs to and from images.
- Convert any common file to PDF (using LibreOffice).
- Convert PDF to Word/Powerpoint/Others (using LibreOffice).
@@ -53,6 +55,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
- Markdown to PDF.
### **Security & Permissions**
+
- Add and remove passwords.
- Change/set PDF Permissions.
- Add watermark(s).
@@ -61,6 +64,7 @@ All files and PDFs exist either exclusively on the client side, reside in server
- Auto-redact text.
### **Other Operations**
+
- Add/Generate/Write signatures.
- Repair PDFs.
- Detect and remove blank pages.
@@ -77,11 +81,11 @@ All files and PDFs exist either exclusively on the client side, reside in server
- Flatten PDFs.
- Get all information on a PDF to view or export as JSON.
-
For a overview of the tasks and the technology each uses please view [Endpoint-groups.md](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
Demo of the app is available [here](https://stirlingpdf.io). username: demo, password: demo
## Technologies used
+
- Spring Boot + Thymeleaf
- [PDFBox](https://github.com/apache/pdfbox/tree/trunk)
- [LibreOffice](https://www.libreoffice.org/discover/libreoffice/) for advanced conversions
@@ -94,9 +98,11 @@ Demo of the app is available [here](https://stirlingpdf.io). username: demo, pas
## How to use
### Locally
+
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md
### Docker / Podman
+
https://hub.docker.com/r/frooodle/s-pdf
Stirling PDF has 2 different versions, a Full version and ultra-Lite version. Depending on the types of features you use you may want a smaller image to save on space.
@@ -106,6 +112,7 @@ For people that don't mind about space optimization just use the latest tag.
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/frooodle/s-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite)
Docker Run
+
```bash
docker run -d \
-p 8080:8080 \
@@ -122,7 +129,9 @@ docker run -d \
-v /location/of/customFiles:/customFiles \
```
+
Docker Compose
+
```yaml
version: '3.3'
services:
@@ -143,54 +152,61 @@ services:
Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".
## Enable OCR/Compression feature
+
Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md
## Supported Languages
-Stirling PDF currently supports 26!
-- English (English) (en_GB)
-- English (US) (en_US)
-- Arabic (العربية) (ar_AR)
-- German (Deutsch) (de_DE)
-- French (Français) (fr_FR)
-- Spanish (Español) (es_ES)
-- Simplified Chinese (简体中文) (zh_CN)
-- Traditional Chinese (繁體中文) (zh_TW)
-- Catalan (Català) (ca_CA)
-- Italian (Italiano) (it_IT)
-- Swedish (Svenska) (sv_SE)
-- Polish (Polski) (pl_PL)
-- Romanian (Română) (ro_RO)
-- Korean (한국어) (ko_KR)
-- Portuguese Brazilian (Português) (pt_BR)
-- Russian (Русский) (ru_RU)
-- Basque (Euskara) (eu_ES)
-- Japanese (日本語) (ja_JP)
-- Dutch (Nederlands) (nl_NL)
-- Greek (el_GR)
-- Turkish (Türkçe) (tr_TR)
-- Indonesia (Bahasa Indonesia) (id_ID)
-- Hindi (हिंदी) (hi_IN)
-- Hungarian (Magyar) (hu_HU)
-- Bulgarian (Български) (bg_BG)
-- Sebian Latin alphabet (Srpski) (sr_LATN_RS)
+Stirling PDF currently supports 27!
+
+| Language | Progress |
+| ------------------------------------------- | -------------------------------------- |
+| English (English) (en_GB) | ![100%](https://geps.dev/progress/100) |
+| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
+| Arabic (العربية) (ar_AR) | ![58%](https://geps.dev/progress/58) |
+| German (Deutsch) (de_DE) | ![98%](https://geps.dev/progress/98) |
+| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) |
+| Spanish (Español) (es_ES) | ![95%](https://geps.dev/progress/95) |
+| Simplified Chinese (简体中文) (zh_CN) | ![99%](https://geps.dev/progress/99) |
+| Traditional Chinese (繁體中文) (zh_TW) | ![99%](https://geps.dev/progress/99) |
+| Catalan (Català) (ca_CA) | ![65%](https://geps.dev/progress/65) |
+| Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) |
+| Swedish (Svenska) (sv_SE) | ![58%](https://geps.dev/progress/58) |
+| Polish (Polski) (pl_PL) | ![60%](https://geps.dev/progress/60) |
+| Romanian (Română) (ro_RO) | ![58%](https://geps.dev/progress/58) |
+| Korean (한국어) (ko_KR) | ![94%](https://geps.dev/progress/94) |
+| Portuguese Brazilian (Português) (pt_BR) | ![74%](https://geps.dev/progress/74) |
+| Russian (Русский) (ru_RU) | ![94%](https://geps.dev/progress/94) |
+| Basque (Euskara) (eu_ES) | ![76%](https://geps.dev/progress/76) |
+| Japanese (日本語) (ja_JP) | ![94%](https://geps.dev/progress/94) |
+| Dutch (Nederlands) (nl_NL) | ![92%](https://geps.dev/progress/92) |
+| Greek (Ελληνικά) (el_GR) | ![92%](https://geps.dev/progress/92) |
+| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) |
+| Indonesia (Bahasa Indonesia) (id_ID) | ![87%](https://geps.dev/progress/87) |
+| Hindi (हिंदी) (hi_IN) | ![88%](https://geps.dev/progress/88) |
+| Hungarian (Magyar) (hu_HU) | ![87%](https://geps.dev/progress/87) |
+| Bulgarian (Български) (bg_BG) | ![82%](https://geps.dev/progress/82) |
+| Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![89%](https://geps.dev/progress/89) |
+| Ukrainian (Українська) (uk_UA) | ![98%](https://geps.dev/progress/98) |
## Contributing (creating issues, translations, fixing bugs, etc.)
Please see our [Contributing Guide](CONTRIBUTING.md)!
## Customisation
+
Stirling PDF allows easy customization of the app.
Includes things like
+
- Custom application name
- Custom slogans, icons, images, and even custom HTML (via file overrides)
-
There are two options for this, either using the generated settings file ``settings.yml``
This file is located in the ``/configs`` directory and follows standard YAML formatting
Environment variables are also supported and would override the settings file
For example in the settings.yml you have
+
```yaml
system:
defaultLocale: 'en-US'
@@ -199,6 +215,7 @@ system:
To have this via an environment variable you would have ``SYSTEM_DEFAULTLOCALE``
The Current list of settings is
+
```yaml
security:
enableLogin: false # set to 'true' to enable login
@@ -221,24 +238,31 @@ endpoints:
metrics:
enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable
```
+
### Extra notes
+
- Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md)
- customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF
### Environment only parameters
+
- ``SYSTEM_ROOTURIPATH`` ie set to ``/pdf-app`` to Set the application's root URI to ``localhost:8080/pdf-app``
- ``SYSTEM_CONNECTIONTIMEOUTMINUTES`` to set custom connection timeout values
- ``DOCKER_ENABLE_SECURITY`` to tell docker to download security jar (required as true for auth login)
- ``INSTALL_BOOK_AND_ADVANCED_HTML_OPS`` to download calibre onto stirling-pdf enabling pdf to/from book and advanced html conversion
## API
+
For those wanting to use Stirling-PDFs backend API to link with their own custom scripting to edit PDFs you can view all existing API documentation
[here](https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation (Or by following the API button in your settings of Stirling-PDF)
## Login authentication
+
![stirling-login](images/login-light.png)
+
### Prerequisites:
+
- User must have the folder ./configs volumed within docker so that it is retained during updates.
- Docker uses must download the security jar version by setting ``DOCKER_ENABLE_SECURITY`` to ``true`` in environment variables.
- Then either enable login via the settings.yml file or via setting ``SECURITY_ENABLE_LOGIN`` to ``true``
@@ -257,6 +281,7 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
## FAQ
### Q1: What are your planned features?
+
- Progress bar/Tracking
- Full custom logic pipelines to combine multiple operations together.
- Folder support with auto scanning to perform operations on
@@ -266,7 +291,9 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
- Fill forms manually or automatically
### Q2: Why is my application downloading .htm files?
+
This is an issue caused commonly by your NGINX configuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
### Q3: Why is my download timing out
+
NGINX has timeout values by default so if you are running Stirling-PDF behind NGINX you may need to set a timeout value such as adding the config ``proxy_read_timeout 3600;``
diff --git a/build.gradle b/build.gradle
index 48ae0eed..d99fbc48 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,7 +12,7 @@ plugins {
import com.github.jk1.license.render.*
group = 'stirling.software'
-version = '0.22.7'
+version = '0.22.8'
sourceCompatibility = '17'
repositories {
diff --git a/chart/stirling-pdf/Chart.yaml b/chart/stirling-pdf/Chart.yaml
index b61368b1..03e59424 100644
--- a/chart/stirling-pdf/Chart.yaml
+++ b/chart/stirling-pdf/Chart.yaml
@@ -1,5 +1,5 @@
apiVersion: v2
-appVersion: 0.22.6
+appVersion: 0.22.8
description: locally hosted web application that allows you to perform various operations
on PDF files
home: https://github.com/Stirling-Tools/Stirling-PDF
diff --git a/scripts/counter_translation.py b/scripts/counter_translation.py
new file mode 100644
index 00000000..c7f57575
--- /dev/null
+++ b/scripts/counter_translation.py
@@ -0,0 +1,122 @@
+"""A script to update language progress status in README.md based on
+properties file comparison.
+
+This script compares default properties file with others in a directory to
+determine language progress.
+It then updates README.md based on provided progress list.
+
+Author: Ludy87
+
+Example:
+ To use this script, simply run it from command line:
+ $ python counter_translation.py
+"""
+import os
+import glob
+import re
+from typing import List, Tuple
+
+
+def write_readme(progress_list: List[Tuple[str, int]]) -> None:
+ """
+ Updates the progress status in the README.md file based
+ on the provided progress list.
+
+ Parameters:
+ progress_list (List[Tuple[str, int]]): A list of tuples containing
+ language and progress percentage.
+
+ Returns:
+ None
+ """
+ with open("README.md", "r", encoding="utf-8") as file:
+ content = file.read()
+
+ lines = content.split("\n")
+ for i, line in enumerate(lines[2:], start=2):
+ for progress in progress_list:
+ language, value = progress
+ if language in line:
+ match = re.search(r"\!\[(\d+(\.\d+)?)%\]\(.*\)", line)
+ if match:
+ lines[i] = line.replace(
+ match.group(0),
+ f"![{value}%](https://geps.dev/progress/{value})",
+ )
+
+ new_content = "\n".join(lines)
+
+ with open("README.md", "w", encoding="utf-8") as file:
+ file.write(new_content)
+
+
+def compare_files(default_file_path, files_directory) -> List[Tuple[str, int]]:
+ """
+ Compares the default properties file with other
+ properties files in the directory.
+
+ Parameters:
+ default_file_path (str): The path to the default properties file.
+ files_directory (str): The directory containing other properties files.
+
+ Returns:
+ List[Tuple[str, int]]: A list of tuples containing
+ language and progress percentage.
+ """
+ file_paths = glob.glob(os.path.join(files_directory, "messages_*.properties"))
+ num_lines = sum(1 for _ in open(default_file_path, encoding="utf-8"))
+
+ result_list = []
+
+ for file_path in file_paths:
+ language = (
+ os.path.basename(file_path)
+ .split("messages_", 1)[1]
+ .split(".properties", 1)[0]
+ )
+
+ fails = 0
+ if "en_GB" in language or "en_US" in language:
+ result_list.append(("en_GB", 100))
+ result_list.append(("en_US", 100))
+ continue
+
+ with open(default_file_path, "r", encoding="utf-8") as default_file, open(
+ file_path, "r", encoding="utf-8"
+ ) as file:
+ for _ in range(5):
+ next(default_file)
+ try:
+ next(file)
+ except StopIteration:
+ fails = num_lines
+
+ for _, (line_default, line_file) in enumerate(
+ zip(default_file, file), start=6
+ ):
+ try:
+ if (
+ line_default.split("=", 1)[1].strip()
+ == line_file.split("=", 1)[1].strip()
+ ):
+ fails += 1
+ except IndexError:
+ pass
+
+ result_list.append(
+ (
+ language,
+ int((num_lines - fails) * 100 / num_lines),
+ )
+ )
+
+ unique_data = list(set(result_list))
+ unique_data.sort(key=lambda x: x[1], reverse=True)
+
+ return unique_data
+
+
+if __name__ == "__main__":
+ directory = os.path.join(os.getcwd(), "src", "main", "resources")
+ reference_file = os.path.join(directory, "messages_en_GB.properties")
+ write_readme(compare_files(reference_file, directory))
diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationFailureHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationFailureHandler.java
index 038e087f..f4f5a37d 100644
--- a/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationFailureHandler.java
+++ b/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationFailureHandler.java
@@ -56,7 +56,7 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
}
private boolean isDemoUser(String username) {
- Optional user = userService.findByUsername(username);
+ Optional user = userService.findByUsernameIgnoreCase(username);
return user.isPresent()
&& user.get().getAuthorities().stream()
.anyMatch(authority -> "ROLE_DEMO_USER".equals(authority.getAuthority()));
diff --git a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java
index b272327a..5936ea3f 100644
--- a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java
+++ b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java
@@ -39,7 +39,7 @@ public class FirstLoginFilter extends OncePerRequestFilter {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.isAuthenticated()) {
- Optional user = userService.findByUsername(authentication.getName());
+ Optional user = userService.findByUsernameIgnoreCase(authentication.getName());
if ("GET".equalsIgnoreCase(method)
&& user.isPresent()
&& user.get().isFirstLogin()
diff --git a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java
index 3b396b15..0d87ca48 100644
--- a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java
+++ b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java
@@ -38,7 +38,7 @@ public class InitialSecuritySetup {
initialUsername, initialPassword, Role.ADMIN.getRoleId(), true);
}
}
- if (!userService.usernameExists(Role.INTERNAL_API_USER.getRoleId())) {
+ if (!userService.usernameExistsIgnoreCase(Role.INTERNAL_API_USER.getRoleId())) {
userService.saveUser(
Role.INTERNAL_API_USER.getRoleId(),
UUID.randomUUID().toString(),
diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java
index 666baa93..83f38bd7 100644
--- a/src/main/java/stirling/software/SPDF/config/security/UserService.java
+++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java
@@ -62,7 +62,7 @@ public class UserService implements UserServiceInterface {
public User addApiKeyToUser(String username) {
User user =
userRepository
- .findByUsername(username)
+ .findByUsernameIgnoreCase(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
user.setApiKey(generateApiKey());
@@ -76,7 +76,7 @@ public class UserService implements UserServiceInterface {
public String getApiKeyForUser(String username) {
User user =
userRepository
- .findByUsername(username)
+ .findByUsernameIgnoreCase(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
return user.getApiKey();
}
@@ -103,7 +103,7 @@ public class UserService implements UserServiceInterface {
}
public boolean validateApiKeyForUser(String username, String apiKey) {
- Optional userOpt = userRepository.findByUsername(username);
+ Optional userOpt = userRepository.findByUsernameIgnoreCase(username);
return userOpt.isPresent() && userOpt.get().getApiKey().equals(apiKey);
}
@@ -136,7 +136,7 @@ public class UserService implements UserServiceInterface {
}
public void deleteUser(String username) {
- Optional userOpt = userRepository.findByUsername(username);
+ Optional userOpt = userRepository.findByUsernameIgnoreCase(username);
if (userOpt.isPresent()) {
for (Authority authority : userOpt.get().getAuthorities()) {
if (authority.getAuthority().equals(Role.INTERNAL_API_USER.getRoleId())) {
@@ -151,12 +151,16 @@ public class UserService implements UserServiceInterface {
return userRepository.findByUsername(username).isPresent();
}
+ public boolean usernameExistsIgnoreCase(String username) {
+ return userRepository.findByUsernameIgnoreCase(username).isPresent();
+ }
+
public boolean hasUsers() {
return userRepository.count() > 0;
}
public void updateUserSettings(String username, Map updates) {
- Optional userOpt = userRepository.findByUsername(username);
+ Optional userOpt = userRepository.findByUsernameIgnoreCase(username);
if (userOpt.isPresent()) {
User user = userOpt.get();
Map settingsMap = user.getSettings();
diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java
index e415aa9d..51efa644 100644
--- a/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java
+++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java
@@ -27,7 +27,9 @@ import io.github.pixee.security.Filenames;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import stirling.software.SPDF.model.PdfMetadata;
import stirling.software.SPDF.model.api.PDFWithPageNums;
+import stirling.software.SPDF.utils.PdfUtils;
import stirling.software.SPDF.utils.WebResponseUtils;
@RestController
@@ -49,6 +51,7 @@ public class SplitPDFController {
// open the pdf document
PDDocument document = Loader.loadPDF(file.getBytes());
+ PdfMetadata metadata = PdfUtils.extractMetadataFromPdf(document);
int totalPages = document.getNumberOfPages();
List pageNumbers = request.getPageNumbersList(document, false);
System.out.println(
@@ -75,6 +78,9 @@ public class SplitPDFController {
}
previousPageNumber = splitPoint + 1;
+ // Transfer metadata to split pdf
+ PdfUtils.setMetadataToPdf(splitDocument, metadata);
+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
splitDocument.save(baos);
diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java
index 598a832d..a7a40a0a 100644
--- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java
+++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java
@@ -43,7 +43,7 @@ public class UserController {
@PreAuthorize("!hasAuthority('ROLE_DEMO_USER')")
@PostMapping("/register")
public String register(@ModelAttribute UsernameAndPass requestModel, Model model) {
- if (userService.usernameExists(requestModel.getUsername())) {
+ if (userService.usernameExistsIgnoreCase(requestModel.getUsername())) {
model.addAttribute("error", "Username already exists");
return "register";
}
@@ -70,7 +70,8 @@ public class UserController {
return new RedirectView("/account?messageType=notAuthenticated");
}
- Optional userOpt = userService.findByUsernameIgnoreCase(principal.getName());
+ // The username MUST be unique when renaming
+ Optional userOpt = userService.findByUsername(principal.getName());
if (userOpt == null || userOpt.isEmpty()) {
return new RedirectView("/account?messageType=userNotFound");
@@ -113,7 +114,7 @@ public class UserController {
return new RedirectView("/change-creds?messageType=notAuthenticated");
}
- Optional userOpt = userService.findByUsername(principal.getName());
+ Optional userOpt = userService.findByUsernameIgnoreCase(principal.getName());
if (userOpt == null || userOpt.isEmpty()) {
return new RedirectView("/change-creds?messageType=userNotFound");
@@ -146,7 +147,7 @@ public class UserController {
return new RedirectView("/account?messageType=notAuthenticated");
}
- Optional userOpt = userService.findByUsername(principal.getName());
+ Optional userOpt = userService.findByUsernameIgnoreCase(principal.getName());
if (userOpt == null || userOpt.isEmpty()) {
return new RedirectView("/account?messageType=userNotFound");
@@ -207,7 +208,7 @@ public class UserController {
return new RedirectView("/addUsers?messageType=usernameExists");
}
}
- if (userService.usernameExists(username)) {
+ if (userService.usernameExistsIgnoreCase(username)) {
return new RedirectView("/addUsers?messageType=usernameExists");
}
try {
@@ -231,7 +232,7 @@ public class UserController {
public RedirectView deleteUser(
@PathVariable(name = "username") String username, Authentication authentication) {
- if (!userService.usernameExists(username)) {
+ if (!userService.usernameExistsIgnoreCase(username)) {
return new RedirectView("/addUsers?messageType=deleteUsernameExists");
}
@@ -239,7 +240,7 @@ public class UserController {
String currentUsername = authentication.getName();
// Check if the provided username matches the current session's username
- if (currentUsername.equals(username)) {
+ if (currentUsername.equalsIgnoreCase(username)) {
return new RedirectView("/addUsers?messageType=deleteCurrentUser");
}
invalidateUserSessions(username);
diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java
new file mode 100644
index 00000000..beafd389
--- /dev/null
+++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java
@@ -0,0 +1,32 @@
+package stirling.software.SPDF.controller.api.converters;
+
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+
+import stirling.software.SPDF.model.api.PDFFile;
+import stirling.software.SPDF.utils.PDFToFile;
+
+@RestController
+@Tag(name = "Convert", description = "Convert APIs")
+@RequestMapping("/api/v1/convert")
+public class ConvertPDFToHtml {
+
+ @PostMapping(consumes = "multipart/form-data", value = "/pdf/html")
+ @Operation(
+ summary = "Convert PDF to HTML",
+ description =
+ "This endpoint converts a PDF file to HTML format. Input:PDF Output:HTML Type:SISO")
+ public ResponseEntity processPdfToHTML(@ModelAttribute PDFFile request)
+ throws Exception {
+ MultipartFile inputFile = request.getFileInput();
+ PDFToFile pdfToFile = new PDFToFile();
+ return pdfToFile.processPdfToHtml(inputFile);
+ }
+}
diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
index 732106f5..9ed00dd8 100644
--- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
+++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java
@@ -9,7 +9,6 @@ import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -143,8 +142,7 @@ public class ExtractImageScansController {
.runCommandWithOutputHandling(command);
// Read the output photos in temp directory
- List tempOutputFiles =
- Files.list(tempDir).sorted().collect(Collectors.toList());
+ List tempOutputFiles = Files.list(tempDir).sorted().toList();
for (Path tempOutputFile : tempOutputFiles) {
byte[] imageBytes = Files.readAllBytes(tempOutputFile);
processedImageBytes.add(imageBytes);
diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java
index d27f510a..c9ffc19d 100644
--- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java
+++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java
@@ -95,7 +95,7 @@ public class AccountWebController {
// Fetch user details from the database
Optional user =
- userRepository.findByUsername(
+ userRepository.findByUsernameIgnoreCase(
username); // Assuming findByUsername method exists
if (!user.isPresent()) {
// Handle error appropriately
@@ -145,7 +145,7 @@ public class AccountWebController {
// Fetch user details from the database
Optional user =
- userRepository.findByUsername(
+ userRepository.findByUsernameIgnoreCase(
username); // Assuming findByUsername method exists
if (!user.isPresent()) {
// Handle error appropriately
diff --git a/src/main/java/stirling/software/SPDF/model/PdfMetadata.java b/src/main/java/stirling/software/SPDF/model/PdfMetadata.java
new file mode 100644
index 00000000..35054bc8
--- /dev/null
+++ b/src/main/java/stirling/software/SPDF/model/PdfMetadata.java
@@ -0,0 +1,19 @@
+package stirling.software.SPDF.model;
+
+import java.util.Calendar;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class PdfMetadata {
+ private String author;
+ private String producer;
+ private String title;
+ private String creator;
+ private String subject;
+ private String keywords;
+ private Calendar creationDate;
+ private Calendar modificationDate;
+}
diff --git a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
index 18e890c4..61b72da6 100644
--- a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
+++ b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java
@@ -88,6 +88,7 @@ public class GeneralUtils {
}
sizeStr = sizeStr.trim().toUpperCase();
+ sizeStr = sizeStr.replace(",", ".").replace(" ", "");
try {
if (sizeStr.endsWith("KB")) {
return (long)
@@ -185,7 +186,7 @@ public class GeneralUtils {
// Insert multiplication between a number and 'n' (e.g., "4n" becomes "4*n")
String withMultiplication = expression.replaceAll("(\\d)n", "$1*n");
// Now replace 'n' with its current value
- return withMultiplication.replaceAll("n", String.valueOf(nValue));
+ return withMultiplication.replace("n", String.valueOf(nValue));
}
private static List handlePart(String part, int totalPages, int offset) {
diff --git a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java
index 3d16f131..24f51c6a 100644
--- a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java
+++ b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java
@@ -6,6 +6,7 @@ import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -19,11 +20,8 @@ import javax.imageio.stream.ImageOutputStream;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
-import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
@@ -39,6 +37,8 @@ import org.springframework.web.multipart.MultipartFile;
import io.github.pixee.security.Filenames;
+import stirling.software.SPDF.model.PdfMetadata;
+
public class PdfUtils {
private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class);
@@ -421,4 +421,28 @@ public class PdfUtils {
logger.info("PDF successfully saved to byte array");
return baos.toByteArray();
}
+
+ public static PdfMetadata extractMetadataFromPdf(PDDocument pdf) {
+ return PdfMetadata.builder()
+ .author(pdf.getDocumentInformation().getAuthor())
+ .producer(pdf.getDocumentInformation().getProducer())
+ .title(pdf.getDocumentInformation().getTitle())
+ .creator(pdf.getDocumentInformation().getCreator())
+ .subject(pdf.getDocumentInformation().getSubject())
+ .keywords(pdf.getDocumentInformation().getKeywords())
+ .creationDate(pdf.getDocumentInformation().getCreationDate())
+ .modificationDate(pdf.getDocumentInformation().getModificationDate())
+ .build();
+ }
+
+ public static void setMetadataToPdf(PDDocument pdf, PdfMetadata pdfMetadata) {
+ pdf.getDocumentInformation().setAuthor(pdfMetadata.getAuthor());
+ pdf.getDocumentInformation().setProducer(pdfMetadata.getProducer());
+ pdf.getDocumentInformation().setTitle(pdfMetadata.getTitle());
+ pdf.getDocumentInformation().setCreator(pdfMetadata.getCreator());
+ pdf.getDocumentInformation().setSubject(pdfMetadata.getSubject());
+ pdf.getDocumentInformation().setKeywords(pdfMetadata.getKeywords());
+ pdf.getDocumentInformation().setCreationDate(pdfMetadata.getCreationDate());
+ pdf.getDocumentInformation().setModificationDate(Calendar.getInstance());
+ }
}
diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties
index e8a0a3d5..8985d647 100644
--- a/src/main/resources/messages_ar_AR.properties
+++ b/src/main/resources/messages_ar_AR.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=حدد زاوية الدوران (بمضاعفات 90 درج
rotate.submit=استدارة
-#merge
+#split-pdfs
split.title=انقسام PDF
split.header=تقسيم PDF
split.desc.1=الأرقام التي تحددها هي رقم الصفحة التي تريد تقسيمها
-split.desc.2=على هذا النحو ، سيؤدي تحديد 1،3،7-8 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:
+split.desc.2=على هذا النحو ، سيؤدي تحديد 1،3،7-9 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:
split.desc.3=المستند رقم 1: الصفحة 1
split.desc.4=المستند رقم 2: الصفحتان 2 و 3
-split.desc.5=المستند رقم 3: الصفحة 4 و 5 و 6
-split.desc.6=المستند رقم 4: الصفحة 7
-split.desc.7=المستند رقم 5: الصفحة 8
-split.desc.8=المستند رقم 6: الصفحتان 9 و 10
+split.desc.5=المستند رقم 3: الصفحة 4 و 5 و 6 و 7
+split.desc.6=المستند رقم 4: الصفحة 8
+split.desc.7=المستند رقم 5: الصفحة 9
+split.desc.8=المستند رقم 6: الصفحة 10
split.splitPages=أدخل الصفحات المراد تقسيمها:
split.submit=Split
diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties
index cd2a6e37..68ab7af5 100644
--- a/src/main/resources/messages_bg_BG.properties
+++ b/src/main/resources/messages_bg_BG.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Изберете ъгъл на въртене (кратно
rotate.submit=Завъртане
-#merge
+#split-pdfs
split.title=Разделяне на PDF
split.header=Разделяне на PDF
split.desc.1=Числата, които избирате, са номера на страницата, на която искате да направите разделяне
-split.desc.2=Така че избирането на 1,3,7-8 ще раздели документ от 10 страници на 6 отделни PDF файла с:
+split.desc.2=Така че избирането на 1,3,7-9 ще раздели документ от 10 страници на 6 отделни PDF файла с:
split.desc.3=Документ #1: Страница 1
split.desc.4=Документ #2: Страница 2 и 3
-split.desc.5=Документ #3: Страница 4, 5 и 6
-split.desc.6=Документ #4: Страница 7
-split.desc.7=Документ #5: Страница 8
-split.desc.8=Документ #6: Страница 9 и 10
+split.desc.5=Документ #3: Страница 4, 5, 6 и 7
+split.desc.6=Документ #4: Страница 8
+split.desc.7=Документ #5: Страница 9
+split.desc.8=Документ #6: Страница 10
split.splitPages=Въведете страници за разделяне:
split.submit=Разделяне
diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties
index 04908713..b73be3d7 100644
--- a/src/main/resources/messages_ca_CA.properties
+++ b/src/main/resources/messages_ca_CA.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Selecciona l'angle de gir (en múltiples de 90 graus):
rotate.submit=Rota
-#merge
+#split-pdfs
split.title=Divideix PDF
split.header=Divideix PDF
split.desc.1=Els números seleccionats són el número de pàgina en què voleu fer la divisió
-split.desc.2=Per tant, seleccionant 1,3,7-8 dividiria un document de 10 pàgines en 6 PDFS separats amb:
+split.desc.2=Per tant, seleccionant 1,3,7-9 dividiria un document de 10 pàgines en 6 PDFS separats amb:
split.desc.3=Document #1: Pàgina 1
split.desc.4=Document #2: Pàgina 2 i 3
-split.desc.5=Document #3: Pàgina 4, 5 i 6
-split.desc.6=Document #4: Pàgina 7
-split.desc.7=Document #5: Pàgina 8
-split.desc.8=Document #6: Pàgina 9 i 10
+split.desc.5=Document #3: Pàgina 4, 5, 6 i 7
+split.desc.6=Document #4: Pàgina 8
+split.desc.7=Document #5: Pàgina 9
+split.desc.8=Document #6: Pàgina 10
split.splitPages=Introdueix pàgines per dividir-les:
split.submit=Divideix
diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties
index 7ee8d179..f5a53881 100644
--- a/src/main/resources/messages_de_DE.properties
+++ b/src/main/resources/messages_de_DE.properties
@@ -57,15 +57,16 @@ usernameExistsMessage=Neuer Benutzername existiert bereits.
invalidUsernameMessage=Ungültiger Benutzername. Der Benutzername darf nur Buchstaben und Zahlen enthalten.
deleteCurrentUserMessage=Der aktuell angemeldete Benutzer kann nicht gelöscht werden.
deleteUsernameExistsMessage=Der Benutzername existiert nicht und kann nicht gelöscht werden.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+error=Fehler
+oops=Hoppla!
+help=Hilfe
+goHomepage=Zur Startseite gehen
+joinDiscord=Unserem Discord-Server beitreten
+seeDockerHub=Docker Hub ansehen
+visitGithub=GitHub-Repository besuchen
+donate=Spenden
+color=Farbe
+sponsor=Sponsor
@@ -77,8 +78,8 @@ pipeline.uploadButton=Benutzerdefinierter Upload
pipeline.configureButton=Konfigurieren
pipeline.defaultOption=Benutzerdefiniert
pipeline.submitButton=Speichern
-pipeline.help=Pipeline Help
-pipeline.scanHelp=Folder Scanning Help
+pipeline.help=Hilfe für Pipeline
+pipeline.scanHelp=Hilfe zum Ordnerscan
######################
# Pipeline Options #
@@ -373,17 +374,17 @@ getPdfInfo.tags=infomation,daten,statistik
home.extractPage.title=Seite(n) extrahieren
home.extractPage.desc=Extrahiert ausgewählte Seiten aus einer PDF
-extractPage.tags=extrahieren
+extractPage.tags=extrahieren,seite
home.PdfToSinglePage.title=PDF zu einer Seite zusammenfassen
home.PdfToSinglePage.desc=Fügt alle PDF-Seiten zu einer einzigen großen Seite zusammen
-PdfToSinglePage.tags=einzelseite
+PdfToSinglePage.tags=einzelseite,zusammenfassen
home.showJS.title=Javascript anzeigen
home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
-showJS.tags=js
+showJS.tags=js,javascript
home.autoRedact.title=Automatisch zensieren/schwärzen
home.autoRedact.desc=Automatisches Zensieren (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
@@ -391,7 +392,7 @@ autoRedact.tags=zensieren,schwärzen
home.tableExtraxt.title=Tabelle extrahieren
home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren
-tableExtraxt.tags=CSV
+tableExtraxt.tags=CSV,tabelle,extrahieren
home.autoSizeSplitPDF.title=Teilen nach Größe/Anzahl
@@ -414,11 +415,11 @@ AddStampRequest.tags=stempeln,bild hinzufügen,bild zentrieren,wasserzeichen,pdf
home.PDFToBook.title=PDF zum Buch
home.PDFToBook.desc=Konvertiert PDF mit Calibre in Buch-/Comic-Formate
-PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+PDFToBook.tags=buch,comic,calibre,convert,manga,amazon,kindle
home.BookToPDF.title=Buch als PDF
home.BookToPDF.desc=Konvertiert Buch-/Comic-Formate mithilfe von Calibre in PDF
-BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+BookToPDF.tags=buch,comic,calibre,convert,manga,amazon,kindle
###########################
@@ -466,7 +467,7 @@ pdfToSinglePage.submit=Zusammenfassen
pageExtracter.title=Seiten extrahieren
pageExtracter.header=Seiten extrahieren
pageExtracter.submit=Extrahieren
-pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
+pageExtracter.placeholder=(z.B. 1,2,8 oder 4,7,12-16 oder 2n-1)
#getPdfInfo
@@ -769,23 +770,23 @@ merge.submit=Zusammenführen
pdfOrganiser.title=Seiten anordnen
pdfOrganiser.header=PDF Seitenorganisation
pdfOrganiser.submit=Seiten anordnen
-pdfOrganiser.mode=Mode
-pdfOrganiser.mode.1=Custom Page Order
-pdfOrganiser.mode.2=Reverse Order
-pdfOrganiser.mode.3=Duplex Sort
-pdfOrganiser.mode.4=Booklet Sort
-pdfOrganiser.mode.5=Side Stitch Booklet Sort
-pdfOrganiser.mode.6=Odd-Even Split
-pdfOrganiser.mode.7=Remove First
-pdfOrganiser.mode.8=Remove Last
-pdfOrganiser.mode.9=Remove First and Last
-pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
+pdfOrganiser.mode=Modus
+pdfOrganiser.mode.1=Benutzerdefinierte Seitenreihenfolge
+pdfOrganiser.mode.2=Umgekehrte Reihenfolge
+pdfOrganiser.mode.3=Duplex-Sortierung
+pdfOrganiser.mode.4=Heftsortierung
+pdfOrganiser.mode.5=Seitenheftungs-Heftsortierung
+pdfOrganiser.mode.6=Ungerade-Gerade-Teilung
+pdfOrganiser.mode.7=Erste entfernen
+pdfOrganiser.mode.8=Letzte entfernen
+pdfOrganiser.mode.9=Erste und letzte entfernen
+pdfOrganiser.placeholder=(z.B. 1,3,2 oder 4-8,2,10-12 oder 2n-1)
#multiTool
multiTool.title=PDF-Multitool
multiTool.header=PDF-Multitool
-multiTool.uploadPrompts=Please Upload PDF
+multiTool.uploadPrompts=Bitte PDF hochladen
#view pdf
viewPdf.title=PDF anzeigen
@@ -796,7 +797,7 @@ pageRemover.title=Seiten entfernen
pageRemover.header=PDF Seiten entfernen
pageRemover.pagesToDelete=Seiten zu entfernen (geben Sie eine Kommagetrennte Liste der Seitenzahlen an):
pageRemover.submit=Seiten löschen
-pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
+pageRemover.placeholder=(z.B. 1,2,6 oder 1-10,15-30)
#rotate
@@ -806,17 +807,17 @@ rotate.selectAngle=Wählen Sie den Winkel (in Vielfachen von 90 Grad):
rotate.submit=Herunterladen
-#merge
+#split-pdfs
split.title=PDF aufteilen
split.header=PDF aufteilen
split.desc.1=Die Nummern, die Sie auswählen, sind die Seitenzahlen, an denen Sie aufteilen möchten.
-split.desc.2=So würde die Auswahl von 1,3,7-8 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit:
+split.desc.2=So würde die Auswahl von 1,3,7-9 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit:
split.desc.3=Dokument #1: Seite 1
split.desc.4=Dokument #2: Seite 2 und 3
-split.desc.5=Dokument #3: Seite 4, 5 und 6
-split.desc.6=Dokument #4: Seite 7
-split.desc.7=Dokument #5: Seite 8
-split.desc.8=Dokument #6: Seite 9 und 10
+split.desc.5=Dokument #3: Seite 4, 5, 6 und 7
+split.desc.6=Dokument #4: Seite 8
+split.desc.7=Dokument #5: Seite 9
+split.desc.8=Dokument #6: Seite 10
split.splitPages=Geben Sie die Seiten an, an denen aufgeteilt werden soll:
split.submit=Aufteilen
@@ -885,7 +886,7 @@ watermark.selectText.8=Wasserzeichen Typ:
watermark.selectText.9=Wasserzeichen-Bild:
watermark.submit=Wasserzeichen hinzufügen
watermark.type.1=Text
-watermark.type.2=Image
+watermark.type.2=Bild
#Change permissions
@@ -1031,15 +1032,15 @@ licenses.license=Lizenz
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=Entschuldigung für das Problem!
+error.needHelp=Brauchst du Hilfe / Ein Problem gefunden?
+error.contactTip=Wenn du weiterhin Probleme hast, zögere nicht, uns um Hilfe zu bitten. Du kannst ein Ticket auf unserer GitHub-Seite einreichen oder uns über Discord kontaktieren:
+error.404.head=404 - Seite nicht gefunden | Ups, wir sind im Code gestolpert!
+error.404.1=Wir können die gesuchte Seite nicht finden.
+error.404.2=Etwas ist schiefgelaufen
+error.github=Ein Ticket auf GitHub einreichen
+error.showStack=Stack-Trace anzeigen
+error.copyStack=Stack-Trace kopieren
+error.githubSubmit=GitHub - Ein Ticket einreichen
+error.discordSubmit=Discord - Unterstützungsbeitrag einreichen
diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties
index 669b3ba2..5168a1a8 100644
--- a/src/main/resources/messages_el_GR.properties
+++ b/src/main/resources/messages_el_GR.properties
@@ -10,18 +10,18 @@ multiPdfDropPrompt=Επιλογή (ή τράβηγμα αρχείου και α
imgPrompt=Επιλογή Εικόνας(Εικόνων)
genericSubmit=Υποβολή
processTimeWarning=Προσοχή: Αυτή η διαδικασία μπορεί να διαρκέσει έως και ένα λεπτό ανάλογα με το μέγεθος του αρχείου
-pageOrderPrompt=Προσαρμοσμένη Σειρά Σελίδας (Προσθέστε μία λίστε απο αριθμούς σελιδών, χωρισμένες με κόμμα ή συναρτήσεις όπως 2n+1) :
-pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
-goToPage=Go
+pageOrderPrompt=Προσαρμοσμένη Σειρά Σελίδας (Προσθέστε μία λίστα απο αριθμούς σελιδών, χωρισμένες με κόμμα ή συναρτήσεις όπως 2n+1) :
+pageSelectionPrompt=Προσαρμοσμένη Επιλογή Σελίδας (Προσθέστε μία λίστα απο αριθμούς σελιδών, χωρισμένες με κόμμα 1,5,6 ή συναρτήσεις όπως 2n+1):
+goToPage=Πήγαινε
true=Αληθές
false=Λανθασμένο
unknown=Άγνωστο
save=Αποθήκευση
-saveToBrowser=Save to Browser
+saveToBrowser=Αποθήκευση στο Browser
close=Κλείσιμο
filesSelected=αρχεία που επιλέχθηκαν
noFavourites=Κανένα αγαπήμενο δεν έχει προστεθεί
-downloadComplete=Download Complete
+downloadComplete=Η Λήψη Ολοκληρώθηκε
bored=Βαριέστε να περιμένετε;
alphabet=Αλφάβητο
downloadPdf=Κατέβασμα του PDF
@@ -45,53 +45,54 @@ red=Κόκκινο
green=Πράσινο
blue=Μπλέ
custom=Προσαρμογή...
-WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
-poweredBy=Powered by
-yes=Yes
-no=No
+WorkInProgess=Εργασία σε εξέλιξη, Ενδέχεται να μην λειτουργεί ή να έχει λάθη, Παρακαλώ αναφέρετε τυχόν προβλήματα!
+poweredBy=Τροφοδοτείται από
+yes=Ναι
+no=Όχι
changedCredsMessage=Τα διαπιστευτήρια έχουν αλλάξει!
notAuthenticatedMessage=Ο χρήστης δεν έχει αυθεντικοποιηθεί.
userNotFoundMessage=Ο χρήστης δεν βρέθηκε.
incorrectPasswordMessage=Ο τρέχων κωδικός πρόσβασης είναι λανθασμένος.
usernameExistsMessage=Το νέο όνομα χρήστη υπάρχει ήδη.
-invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
-deleteCurrentUserMessage=Cannot delete currently logged in user.
-deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+invalidUsernameMessage=Μη έγκυρο όνομα χρήστη, το όνομα χρήστη πρέπει να περιέχει μόνο αλφαβητικούς χαρακτήρες και αριθμούς.
+deleteCurrentUserMessage=Δεν είναι δυνατή η διαγραφή του τρέχοντος συνδεδεμένου χρήστη.
+deleteUsernameExistsMessage=Το όνομα χρήστη δεν υπάρχει και δεν μπορεί να διαγραφεί.
+error=Σφάλμα
+oops=Ωχ!
+help=Βοήθεια
+goHomepage=Πήγαινε στην Αρχική Σελίδα
+joinDiscord=Εγγραφείτε στο Server του Discord μας
+seeDockerHub=Βλέπε το Docker Hub
+visitGithub=Επισκεφθείτε το Αποθετήριο του Github
+donate=Δωρισε
+color=Χρώμα
+sponsor=Yποστηρικτής
###############
# Pipeline #
###############
-pipeline.header=Pipeline Menu (Beta)
+pipeline.header=Μενού Pipeline (Beta)
pipeline.uploadButton=Upload Custom
-pipeline.configureButton=Configure
+pipeline.configureButton=Διαμόρφωσε
pipeline.defaultOption=Custom
-pipeline.submitButton=Submit
-pipeline.help=Pipeline Help
-pipeline.scanHelp=Folder Scanning Help
+pipeline.submitButton=Υποβολή
+pipeline.help=Βοήθεια για το Pipeline
+pipeline.scanHelp=Βοήθεια για Σάρωση Φακέλων
######################
# Pipeline Options #
######################
-pipelineOptions.header=Pipeline Configuration
-pipelineOptions.pipelineNameLabel=Pipeline Name
-pipelineOptions.saveSettings=Save Operation Settings
-pipelineOptions.pipelineNamePrompt=Enter pipeline name here
-pipelineOptions.selectOperation=Select Operation
-pipelineOptions.addOperationButton=Add operation
+pipelineOptions.header=Διαμόρφωση Pipeline
+pipelineOptions.pipelineNameLabel=Όνομα Pipeline
+pipelineOptions.saveSettings=Αποθήκευση Ρυθμίσεων Λειτουργίας
+pipelineOptions.pipelineNamePrompt=Εισαγάγετε το όνομα του pipeline εδώ
+pipelineOptions.selectOperation=Επιλέξτε Λειτουργία
+pipelineOptions.addOperationButton=Προσθήκη λειτουργίας
pipelineOptions.pipelineHeader=Pipeline:
-pipelineOptions.saveButton=Download
-pipelineOptions.validateButton=Validate
+pipelineOptions.saveButton=Λήψη
+pipelineOptions.validateButton=Επικυρώνω
@@ -111,12 +112,12 @@ navbar.settings=Ρυθμίσεις
#############
settings.title=Ρυθμίσεις
settings.update=Υπάρχει διαθέσιμη ενημέρωση
-settings.appVersion=Έκδοση εφαρμογής: App Version:
+settings.appVersion=Έκδοση εφαρμογής:
settings.downloadOption.title=Επιλέξετε την επιλογή λήψης (Για λήψεις μεμονωμένων αρχείων χωρίς zip):
settings.downloadOption.1=Άνοιγμα στο ίδιο παράθυρο
settings.downloadOption.2=Άνοιγμα σε νέο παράθυρο
settings.downloadOption.3=Λήψη αρχείου
-settings.zipThreshold=Zip αρχεία όταν ο αριθμός των ληφθέντων αρχείων είναι πολύ μεγάλος
+settings.zipThreshold=Αρχεία Zip όταν ο αριθμός των ληφθέντων αρχείων είναι πολύ μεγάλος
settings.signOut=Αποσύνδεση
settings.accountSettings=Ρυθμίσεις Λογαριασμού
@@ -124,7 +125,7 @@ settings.accountSettings=Ρυθμίσεις Λογαριασμού
changeCreds.title=Αλλαγή Διαπιστευτηρίων
changeCreds.header=Ενημέρωση των λεπτομερειών του Λογαριασμού σας
-changeCreds.changePassword=You are using default login credentials. Please enter a new password
+changeCreds.changePassword=Χρησιμοποιείτε προεπιλεγμένα διαπιστευτήρια σύνδεσης. Εισαγάγετε έναν νέο κωδικό πρόσβασης
changeCreds.newUsername=Νέο Όνομα Χρήστη
changeCreds.oldPassword=Τρέχων Κωδικός Πρόσβασης
changeCreds.newPassword=Νέος Κωδικός Πρόσβασης
@@ -164,10 +165,10 @@ adminUserSettings.roles=Ρόλοι
adminUserSettings.role=Ρόλος
adminUserSettings.actions=Ενέργειες
adminUserSettings.apiUser=Περιορισμένος Χρήστης για διεπαφή προγραμματισμού εφαρμογών (API User)
-adminUserSettings.extraApiUser=Additional Limited API User
+adminUserSettings.extraApiUser=Πρόσθετος Περιορισμένος Χρήστης για Διεπαφή Προγραμματισμού Εφαρμογών (API User)
adminUserSettings.webOnlyUser=Χρήστης μόνο Ιστού
-adminUserSettings.demoUser=Demo User (No custom settings)
-adminUserSettings.internalApiUser=Internal API User
+adminUserSettings.demoUser=Demo χρήστης (Χωρίς προσαρμοσμένες ρυθμίσεις)
+adminUserSettings.internalApiUser=Εσωτερικός API χρήστης
adminUserSettings.forceChange=Αναγκάστε τον χρήστη να αλλάξει το όνομα χρήστη/κωδικό πρόσβασης κατά τη σύνδεση
adminUserSettings.submit=Αποθήκευση Χρήστη
@@ -175,7 +176,7 @@ adminUserSettings.submit=Αποθήκευση Χρήστη
# HOME-PAGE #
#############
home.desc=Η τοπικά φιλοξενούμενη one-stop-shop σας για όλες τις ανάγκες σας σε PDF.
-home.searchBar=Search for features...
+home.searchBar=Αναζήτηση για χαρακτηριστικά...
home.viewPdf.title=Εμφάνιση PDF
@@ -196,7 +197,7 @@ split.tags=Page operations,divide,Multi Page,cut,server side
home.rotate.title=Περιστροφή
home.rotate.desc=Περιστροφή των PDF σας με εύκολο τρόπο.
-rotate.tags=server side
+rotate.tags=από την πλευρά του server
home.imageToPdf.title=Εικόνα σε PDF
@@ -389,35 +390,35 @@ home.autoRedact.title=Αυτόματο Μαύρισμα Κειμένου
home.autoRedact.desc=Αυτόματη επεξεργασία (Μαύρισμα) κείμενου σε PDF με βάση το κείμενο εισαγωγής
autoRedact.tags=Redact,Hide,black out,black,marker,hidden
-home.tableExtraxt.title=PDF to CSV
-home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
+home.tableExtraxt.title=PDF σε CSV
+home.tableExtraxt.desc=Εξάγει πίνακες από PDF μετατρέποντάς το σε 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
+home.autoSizeSplitPDF.title=Αυτόματη διαίρεση κατά μέγεθος/πλήθος
+home.autoSizeSplitPDF.desc=Διαχωρίστε ένα μόνο PDF σε πολλά έγγραφα με βάση το μέγεθος, τον αριθμό σελίδων ή τον αριθμό εγγράφων
autoSizeSplitPDF.tags=pdf,split,document,organization
-home.overlay-pdfs.title=Overlay PDFs
-home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
+home.overlay-pdfs.title=Επικάλυψη PDFs
+home.overlay-pdfs.desc=Επικαλύπτει αρχεία PDF πάνω σε άλλο 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
+home.split-by-sections.title=Διαχωρισμός PDF ανά ενότητες
+home.split-by-sections.desc=Διαχωρίστε κάθε σελίδα ενός PDF σε μικρότερες οριζόντιες και κάθετες ενότητες
split-by-sections.tags=Section Split, Divide, Customize
-home.AddStampRequest.title=Add Stamp to PDF
-home.AddStampRequest.desc=Add text or add image stamps at set locations
+home.AddStampRequest.title=Προσθήκη σφραγίδας σε PDF
+home.AddStampRequest.desc=Προσθέστε κείμενο ή προσθέστε σφραγίδες εικόνας σε καθορισμένες τοποθεσίες
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
-home.PDFToBook.title=PDF to Book
-home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
+home.PDFToBook.title=PDF σε Book
+home.PDFToBook.desc=Μετατρέπει τις μορφές PDF σε Book/Comic χρησιμοποιώντας calibre
PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
-home.BookToPDF.title=Book to PDF
-home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
+home.BookToPDF.title=Book σε PDF
+home.BookToPDF.desc=Μετατρέπει τις μορφές Books/Comics σε PDF χρησιμοποιώντας calibre
BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
@@ -466,7 +467,7 @@ pdfToSinglePage.submit=Μετατροπή σε Μονή Σελίδα
pageExtracter.title=Εξαγωγή Σελίδων
pageExtracter.header=EΕξαγωγή Σελίδων
pageExtracter.submit=Εξαγωγή
-pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
+pageExtracter.placeholder=(π.χ. 1,2,8 ή 4,7,12-16 ή 2n-1)
#getPdfInfo
@@ -498,37 +499,37 @@ HTMLToPDF.header=HTML σε PDF
HTMLToPDF.help=Δέχεται αρχεία τύπου HTML και τύπου ZIP που περιέχουν html/css/εικόνες κ.λπ. που απαιτούνται
HTMLToPDF.submit=Μετατροπή
HTMLToPDF.credit=Χρησιμοποιεί WeasyPrint
-HTMLToPDF.zoom=Zoom level for displaying the website.
-HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
-HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
-HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
-HTMLToPDF.printBackground=Render the background of websites.
-HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
-HTMLToPDF.cssMediaType=Change the CSS media type of the page.
-HTMLToPDF.none=None
-HTMLToPDF.print=Print
+HTMLToPDF.zoom=Επίπεδο ζουμ για την εμφάνιση του ιστότοπου.
+HTMLToPDF.pageWidth=Το πλάτος της σελίδας σε εκατοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.pageHeight=Το ύψος της σελίδας σε εκατοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.marginTop=Το επάνω περιθώριο της σελίδας σε χιλιοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.marginBottom=Κάτω περιθώριο σελίδας σε χιλιοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.marginLeft=Το αριστερό περιθώριο της σελίδας σε χιλιοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.marginRight=Το δεξί περιθώριο της σελίδας σε χιλιοστά. (Κενό έως προεπιλογή)
+HTMLToPDF.printBackground=Αποδώστε το φόντο των ιστοσελίδων.
+HTMLToPDF.defaultHeader=Ενεργοποίηση προεπιλεγμένης κεφαλίδας (Όνομα και αριθμός σελίδας)
+HTMLToPDF.cssMediaType=Αλλάξτε τον τύπο μέσων (media type )CSS της σελίδας.
+HTMLToPDF.none=Κανένα
+HTMLToPDF.print=Εκτύπωσε
HTMLToPDF.screen=Screen
#AddStampRequest
-AddStampRequest.header=Stamp PDF
-AddStampRequest.title=Stamp PDF
-AddStampRequest.stampType=Stamp Type
-AddStampRequest.stampText=Stamp Text
-AddStampRequest.stampImage=Stamp Image
-AddStampRequest.alphabet=Alphabet
-AddStampRequest.fontSize=Font/Image Size
-AddStampRequest.rotation=Rotation
-AddStampRequest.opacity=Opacity
-AddStampRequest.position=Position
-AddStampRequest.overrideX=Override X Coordinate
-AddStampRequest.overrideY=Override Y Coordinate
-AddStampRequest.customMargin=Custom Margin
-AddStampRequest.customColor=Custom Text Color
-AddStampRequest.submit=Submit
+AddStampRequest.header=Σφραγίδα PDF
+AddStampRequest.title=Σφραγίδα PDF
+AddStampRequest.stampType=Τύπος σφραγίδας
+AddStampRequest.stampText=Κείμενο σφραγίδας
+AddStampRequest.stampImage=Εικόνα σφραγίδας
+AddStampRequest.alphabet=Αλφάβητο
+AddStampRequest.fontSize=Μέγεθος γραμματοσειράς/εικόνας
+AddStampRequest.rotation=Περιστροφή
+AddStampRequest.opacity=Αδιαφάνεια
+AddStampRequest.position=Θέση
+AddStampRequest.overrideX=Override Συντεταγμένης X
+AddStampRequest.overrideY=Override Συντεταγμένης Ψ
+AddStampRequest.customMargin=Προσαρμοσμένο Περιθώριο
+AddStampRequest.customColor=Προσαρμοσμένο χρώμα κειμένου
+AddStampRequest.submit=Υποβολή
#sanitizePDF
@@ -617,11 +618,11 @@ scalePages.submit=Υποβολή
certSign.title=Υπογραφή Πιστοποιητικού
certSign.header=Υπογράψτε ένα αρχείο PDF με το πιστοποιητικό σας (Εργασία σε εξέλιξη)
certSign.selectPDF=Επιλογή αρχείου PDF για υπογραφή:
-certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
+certSign.jksNote=Σημείωση: Εάν ο τύπος πιστοποιητικού σας δεν αναφέρεται παρακάτω, μετατρέψτε το σε αρχείο Java Keystore (.jks) χρησιμοποιώντας το εργαλείο γραμμής εντολών keytool. Στη συνέχεια, επιλέξτε την επιλογή αρχείου .jks παρακάτω.
certSign.selectKey=Επιλέξτε το αρχείο του ιδιωτικού κλειδιού σας (μορφή PKCS#8, μπορεί να είναι .pem ή .der):
certSign.selectCert=Επιλέξτε το αρχείο πιστοποιητικού σας (μορφή X.509, μπορεί να είναι .pem ή .der):
certSign.selectP12=Επιλέξτε το αρχείο PKCS#12 Keystore (.p12 ή .pfx) (Προαιρετικό, εάν παρέχεται, θα πρέπει να περιέχει το ιδιωτικό κλειδί και το πιστοποιητικό σας):
-certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
+certSign.selectJKS=Επιλέξτε το αρχείο Java Keystore (.jks ή .keystore):
certSign.certType=Τύπος Πιστοποιητικού
certSign.password=Εισαγάγετε τον κωδικό του Keystore ή του Ιδιωτικού Κλειδιού (εάν υπάρχει):
certSign.showSig=Εμφάνιση Υπογραφής
@@ -642,9 +643,9 @@ removeBlanks.submit=Αφαίρεση Κενών
#removeAnnotations
-removeAnnotations.title=Remove Annotations
-removeAnnotations.header=Remove Annotations
-removeAnnotations.submit=Remove
+removeAnnotations.title=Κατάργηση σχολιασμών
+removeAnnotations.header=Κατάργηση σχολιασμών
+removeAnnotations.submit=Κατάργηση
#compare
@@ -655,17 +656,17 @@ compare.document.2=Έγγραφο 2
compare.submit=Σύγκριση
#BookToPDF
-BookToPDF.title=Books and Comics to PDF
-BookToPDF.header=Book to PDF
-BookToPDF.credit=Uses Calibre
-BookToPDF.submit=Convert
+BookToPDF.title=Books και Comics σε PDF
+BookToPDF.header=Book σε PDF
+BookToPDF.credit=Χρησιμοποιεί Caliber
+BookToPDF.submit=Μετατροπή
#PDFToBook
-PDFToBook.title=PDF to Book
-PDFToBook.header=PDF to Book
-PDFToBook.selectText.1=Format
-PDFToBook.credit=Uses Calibre
-PDFToBook.submit=Convert
+PDFToBook.title=PDF σε Book
+PDFToBook.header=PDF σε Book
+PDFToBook.selectText.1=Μορφή
+PDFToBook.credit=Χρησιμοποιεί Caliber
+PDFToBook.submit=Μετατροπή
#sign
sign.title=Υπογραφή
@@ -752,7 +753,7 @@ compress.submit=Συμπίεση
#Add image
addImage.title=Προσθήκη Εικόνας
addImage.header=Προσθήκη Εικόνας σε PDF
-addImage.everyPage=Κάθε Σελίδα?
+addImage.everyPage=Κάθε Σελίδα;
addImage.upload=Προσθήκη Εικόνας
addImage.submit=Προσθήκη Εικόνας
@@ -770,53 +771,53 @@ pdfOrganiser.title=Διοργανωτής σελίδας
pdfOrganiser.header=Διοργανωτής σελίδας PDF
pdfOrganiser.submit=Αναδιάταξη σελίδων
pdfOrganiser.mode=Mode
-pdfOrganiser.mode.1=Custom Page Order
-pdfOrganiser.mode.2=Reverse Order
-pdfOrganiser.mode.3=Duplex Sort
-pdfOrganiser.mode.4=Booklet Sort
+pdfOrganiser.mode.1=Προσαρμοσμένη Σειρά Σελίδας
+pdfOrganiser.mode.2=Αντίστροφη Σειρά
+pdfOrganiser.mode.3=Ταξινόμηση Διπλής Όψης (Duplex Sort)
+pdfOrganiser.mode.4=Ταξινόμηση Φυλλαδίου (Booklet Sort)
pdfOrganiser.mode.5=Side Stitch Booklet Sort
-pdfOrganiser.mode.6=Odd-Even Split
-pdfOrganiser.mode.7=Remove First
-pdfOrganiser.mode.8=Remove Last
-pdfOrganiser.mode.9=Remove First and Last
-pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
+pdfOrganiser.mode.6=Διαίρεση Μονού-Ζυγού
+pdfOrganiser.mode.7=Αφαίρεση Πρώτου
+pdfOrganiser.mode.8=Αφαίρεση Τελευταίου
+pdfOrganiser.mode.9=Αφαίρεση Πρώτου και Τελευταίου
+pdfOrganiser.placeholder=(π.χ. 1,3,2 ή 4-8,2,10-12 ή 2n-1)
#multiTool
multiTool.title=PDF Πολυεργαλείο
multiTool.header=PDF Πολυεργαλείο
-multiTool.uploadPrompts=Please Upload PDF
+multiTool.uploadPrompts=Ανεβάστε το PDF
#view pdf
-viewPdf.title=View PDF
-viewPdf.header=View PDF
+viewPdf.title=Προβολή PDF
+viewPdf.header=Προβολή PDF
#pageRemover
pageRemover.title=Αφαιρετής Σελίδων
pageRemover.header=Αφαιρετής Σελίδων PDF
pageRemover.pagesToDelete=Σελίδες προς διαγραφή (Εισαγάγετε μια λίστα με αριθμούς σελίδων διαχωρισμένων με κόμματα):
pageRemover.submit=Αφαίρεση Σελίδων
-pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
+pageRemover.placeholder=(π.χ. 1,2,6 ή 1-10,15-30)
#rotate
rotate.title=Περιστροφή PDF
rotate.header=Περιστροφή PDF
-rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
-rotate.submit=Rotate
+rotate.selectAngle=Επιλέξτε γωνία περιστροφής (σε πολλαπλάσια των 90 μοιρών):
+rotate.submit=Περιστροφή
-#merge
+#split-pdfs
split.title=Διαίρεση PDF
split.header=Διαίρεση PDF
split.desc.1=Οι αριθμοί που επιλέγετε είναι ο αριθμός σελίδας στον οποίο θέλετε να κάνετε διαχωρισμό
-split.desc.2=Ως εκ τούτου, η επιλογή 1,3,7-8 θα χωρίσει ένα έγγραφο 10 σελίδων σε 6 ξεχωριστά αρχεία PDF με:
+split.desc.2=Ως εκ τούτου, η επιλογή 1,3,7-9 θα χωρίσει ένα έγγραφο 10 σελίδων σε 6 ξεχωριστά αρχεία PDF με:
split.desc.3=Έγγραφο #1: Σελίδα 1
split.desc.4=Έγγραφο #2: Σελίδα 2 και 3
-split.desc.5=Έγγραφο #3: Σελίδα 4, 5 κσι 6
-split.desc.6=Έγγραφο #4: Σελίδα 7
-split.desc.7=Έγγραφο #5: Σελίδα 8
-split.desc.8=Έγγραφο #6: Σελίδα 9 και 10
+split.desc.5=Έγγραφο #3: Σελίδα 4, 5, 6 και 7
+split.desc.6=Έγγραφο #4: Σελίδα 8
+split.desc.7=Έγγραφο #5: Σελίδα 9
+split.desc.8=Έγγραφο #6: Σελίδα 10
split.splitPages=Εισαγάγετε σελίδες για διαχωρισμό:
split.submit=Διαίρεση
@@ -884,8 +885,8 @@ watermark.selectText.7=Αδιαφάνεια (Opacity) (0% - 100%):
watermark.selectText.8=Τύπος Υδατογραφήματος:
watermark.selectText.9=Εικόνα Υδατογραφήματος:
watermark.submit=Προσθήκη Υδατογραφήματος
-watermark.type.1=Text
-watermark.type.2=Image
+watermark.type.1=Κείμενο
+watermark.type.2=Εικόνα
#Change permissions
@@ -937,7 +938,7 @@ pdfToPDFA.title=PDF σε PDF/A
pdfToPDFA.header=PDF σε PDF/A
pdfToPDFA.credit=Αυτή η υπηρεσία χρησιμοποιεί OCRmyPDF για PDF/A μετατροπή
pdfToPDFA.submit=Μετατροπή
-pdfToPDFA.tip=Currently does not work for multiple inputs at once
+pdfToPDFA.tip=Προς το παρόν δεν λειτουργεί για πολλαπλές εισόδους ταυτόχρονα
#PDFToWord
@@ -978,68 +979,68 @@ PDFToXML.credit=Αυτή η υπηρεσία χρησιμοποιεί LibreOffic
PDFToXML.submit=Μετατροπή
#PDFToCSV
-PDFToCSV.title=PDF ?? CSV
-PDFToCSV.header=PDF ?? CSV
-PDFToCSV.prompt=Choose page to extract table
-PDFToCSV.submit=?????????
+PDFToCSV.title=PDF σε CSV
+PDFToCSV.header=PDF σε CSV
+PDFToCSV.prompt=Επιλέξτε σελίδα για εξαγωγή πίνακα
+PDFToCSV.submit=Εξαξωγή
#split-by-size-or-count
-split-by-size-or-count.title=Split PDF 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
+split-by-size-or-count.title=Διαχωρίστε το PDF Κατά Μέγεθος ή Μέτρηση
+split-by-size-or-count.header=Διαχωρίστε το PDF Κατά Μέγεθος ή Μέτρηση
+split-by-size-or-count.type.label=Επιλέξτε Τύπος Διαχωρισμού
+split-by-size-or-count.type.size=Ανά Μέγεθος
+split-by-size-or-count.type.pageCount=Ανά αριθμό σελίδων
+split-by-size-or-count.type.docCount=Ανά αριθμό εγγράφων
+split-by-size-or-count.value.label=Εισαγάγετε τιμή
+split-by-size-or-count.value.placeholder=Εισαγάγετε μέγεθος (π.χ. 2MB ή 3KB) ή μέτρηση (π.χ. 5)
+split-by-size-or-count.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.header=Επικάλυψη αρχείων PDF
+overlay-pdfs.baseFile.label=Επιλέξτε Βασικό αρχείο PDF
+overlay-pdfs.overlayFiles.label=Επιλέξτε Επικάλυψη αρχείων PDF
+overlay-pdfs.mode.label=Επιλέξτε Λειτουργία Επικάλυψης
+overlay-pdfs.mode.sequential=Διαδοχική Επικάλυψη
+overlay-pdfs.mode.interleaved=Επικάλυψη με Παρεμβολή
+overlay-pdfs.mode.fixedRepeat=Διορθώθηκε η Επικάλυψη Επανάληψης
+overlay-pdfs.counts.label=Μετρήσεις επικάλυψης (για σταθερή λειτουργία επανάληψης)
+overlay-pdfs.counts.placeholder=Εισαγάγετε μετρήσεις διαχωρισμένες με κόμματα (π.χ. 2,3,1)
+overlay-pdfs.position.label=Επιλέξτε Θέση Επικάλυψης
overlay-pdfs.position.foreground=Foreground
overlay-pdfs.position.background=Background
-overlay-pdfs.submit=Submit
+overlay-pdfs.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
-split-by-sections.merge=Merge Into One PDF
+split-by-sections.title=Διαχωρισμός PDF ανά ενότητες
+split-by-sections.header=Διαχωρίστε το PDF σε Ενότητες
+split-by-sections.horizontal.label=Οριζόντιες Διαιρέσεις
+split-by-sections.vertical.label=Κάθετες Διαιρέσεις
+split-by-sections.horizontal.placeholder=Εισαγάγετε τον αριθμό των οριζόντιων διαιρέσεων
+split-by-sections.vertical.placeholder=Εισαγάγετε τον αριθμό των κάθετων διαιρέσεων
+split-by-sections.submit=Διαχωρισμός PDF
+split-by-sections.merge=Συγχώνευση σε ένα PDF
#licenses
-licenses.nav=Licenses
-licenses.title=3rd Party Licenses
-licenses.header=3rd Party Licenses
+licenses.nav=Άδειες
+licenses.title=3rd Party Άδειες
+licenses.header=3rd Party Άδειες
licenses.module=Module
-licenses.version=Version
-licenses.license=License
+licenses.version=Εκδοχή
+licenses.license=Άδεια
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=Συγγνώμη για το ζήτημα!
+error.needHelp=Χρειάζεστε βοήθεια / Βρήκατε πρόβλημα;
+error.contactTip=Εάν εξακολουθείτε να αντιμετωπίζετε προβλήματα, μη διστάσετε να επικοινωνήσετε μαζί μας για βοήθεια. Μπορείτε να υποβάλετε ένα ticket στη σελίδα μας στο GitHub ή να επικοινωνήσετε μαζί μας μέσω του Discord:
+error.404.head=404 - Η σελίδα δεν βρέθηκε | Oops, we tripped in the code!
+error.404.1=Δεν μπορούμε να βρούμε τη σελίδα που ψάχνετε.
+error.404.2=Κάτι πήγε στραβά
+error.github=Υποβάλετε ένα ticket στο GitHub
+error.showStack=Εμφάνιση Stack Trace
+error.copyStack=Αντιγραφή Stack Trace
+error.githubSubmit=GitHub - Υποβάλετε ένα ticket
+error.discordSubmit=Discord - Υποβάλετε ένα Support post
diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties
index d1f297a0..d35476bd 100644
--- a/src/main/resources/messages_en_GB.properties
+++ b/src/main/resources/messages_en_GB.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
rotate.submit=Rotate
-#merge
+#split-pdfs
split.title=Split PDF
split.header=Split PDF
split.desc.1=The numbers you select are the page number you wish to do a split on
-split.desc.2=As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:
+split.desc.2=As such selecting 1,3,7-9 would split a 10 page document into 6 separate PDFS with:
split.desc.3=Document #1: Page 1
split.desc.4=Document #2: Page 2 and 3
-split.desc.5=Document #3: Page 4, 5 and 6
-split.desc.6=Document #4: Page 7
-split.desc.7=Document #5: Page 8
-split.desc.8=Document #6: Page 9 and 10
+split.desc.5=Document #3: Page 4, 5, 6 and 7
+split.desc.6=Document #4: Page 8
+split.desc.7=Document #5: Page 9
+split.desc.8=Document #6: Page 10
split.splitPages=Enter pages to split on:
split.submit=Split
diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties
index 18a2999e..78e19201 100644
--- a/src/main/resources/messages_en_US.properties
+++ b/src/main/resources/messages_en_US.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
rotate.submit=Rotate
-#merge
+#split-pdfs
split.title=Split PDF
split.header=Split PDF
split.desc.1=The numbers you select are the page number you wish to do a split on
-split.desc.2=As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:
+split.desc.2=As such selecting 1,3,7-9 would split a 10 page document into 6 separate PDFS with:
split.desc.3=Document #1: Page 1
split.desc.4=Document #2: Page 2 and 3
-split.desc.5=Document #3: Page 4, 5 and 6
-split.desc.6=Document #4: Page 7
-split.desc.7=Document #5: Page 8
-split.desc.8=Document #6: Page 9 and 10
+split.desc.5=Document #3: Page 4, 5, 6, 7
+split.desc.6=Document #4: Page 8
+split.desc.7=Document #5: Page 9
+split.desc.8=Document #6: Page 10
split.splitPages=Enter pages to split on:
split.submit=Split
diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties
index 47103c9e..dd779cbc 100644
--- a/src/main/resources/messages_es_ES.properties
+++ b/src/main/resources/messages_es_ES.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Seleccionar ángulo de rotación (en múltiplos de 90 grados)
rotate.submit=Rotar
-#merge
+#split-pdfs
split.title=Dividir PDF
split.header=Dividir PDF
split.desc.1=Los números que seleccione son el número de página en el que desea hacer una división
-split.desc.2=Como tal, seleccionar 1,3,7-8 dividiría un documento de 10 páginas en 6 archivos PDF separados con:
+split.desc.2=Como tal, seleccionar 1,3,7-9 dividiría un documento de 10 páginas en 6 archivos PDF separados con:
split.desc.3=Documento #1: Página 1
split.desc.4=Documento #2: Páginas 2 y 3
-split.desc.5=Documento #3: Páginas 4, 5 y 6
-split.desc.6=Documento #4: Página 7
-split.desc.7=Documento #5: Página 8
-split.desc.8=Documento #6: Páginas 9 y 10
+split.desc.5=Documento #3: Páginas 4, 5, 6 y 7
+split.desc.6=Documento #4: Página 8
+split.desc.7=Documento #5: Página 9
+split.desc.8=Documento #6: Páginas 10
split.splitPages=Introducir las páginas para dividir:
split.submit=Dividir
diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties
index 4c35f491..a2c515b5 100644
--- a/src/main/resources/messages_eu_ES.properties
+++ b/src/main/resources/messages_eu_ES.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Hautatu errotazio-angelua (90 graduko multiploetan):
rotate.submit=Biratu
-#merge
+#split-pdfs
split.title=Zatitu PDFa
split.header=Zatitu PDFa
split.desc.1=Hautatzen dituzun zenbakiak zatiketa egin nahi duzun orrialde-zenbakiak dira
-split.desc.2=Beraz, 1,3,7-8 hautatzean 10 orrialdeko dokumentua zatituko luke 6 PDF fitxategi bereizituetan
+split.desc.2=Beraz, 1,3,7-9 hautatzean 10 orrialdeko dokumentua zatituko luke 6 PDF fitxategi bereizituetan
split.desc.3=#1 Dokumentua: 1. orrialdea
split.desc.4=#2 Dokumentua: 2. eta 3. orrialdeak
-split.desc.5=#3 Dokumentua: 4., 5. eta 6. orrialdeak
-split.desc.6=#4 Dokumentua: 7. orrialdea
-split.desc.7=#5 Dokumentua: 8. orrialdea
-split.desc.8=#6 Dokumentua: 9. eta 10. orrialdeak
+split.desc.5=#3 Dokumentua: 4., 5., 6. eta 7. orrialdeak
+split.desc.6=#4 Dokumentua: 8. orrialdea
+split.desc.7=#5 Dokumentua: 9. orrialdea
+split.desc.8=#6 Dokumentua: 10. orrialdeak
split.splitPages=Sartu orrialdeak zatitzeko:
split.submit=Zatitu
diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties
index d6c38faa..e682f2db 100644
--- a/src/main/resources/messages_fr_FR.properties
+++ b/src/main/resources/messages_fr_FR.properties
@@ -54,18 +54,19 @@ notAuthenticatedMessage=Utilisateur non authentifié.
userNotFoundMessage=Utilisateur non trouvé.
incorrectPasswordMessage=Le mot de passe actuel est incorrect.
usernameExistsMessage=Le nouveau nom d’utilisateur existe déjà.
-invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
-deleteCurrentUserMessage=Cannot delete currently logged in user.
-deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+invalidUsernameMessage=Nom d’utilisateur invalide, le nom d’utilisateur ne peut contenir que des chiffres et des lettres.
+deleteCurrentUserMessage=Impossible de supprimer l’utilisateur actuellement connecté.
+deleteUsernameExistsMessage=Le nom d’utilisateur n’existe pas et ne peut pas être supprimé.
+error=Erreur
+oops=Oups !
+help=Aide
+goHomepage=Aller à la page d’accueil
+joinDiscord=Rejoignez notre serveur Discord
+seeDockerHub=Consulter le Docker Hub
+visitGithub=Visiter le dépôt Github
+donate=Faire un don
+color=Couleur
+sponsor=Sponsor
@@ -124,7 +125,7 @@ settings.accountSettings=Paramètres du compte
changeCreds.title=Modifiez vos identifiants
changeCreds.header=Mettez à jour vos identifiants de connexion
-changeCreds.changePassword=You are using default login credentials. Please enter a new password
+changeCreds.changePassword=Vous utilisez les identifiants de connexion par défaut. Veuillez saisir un nouveau mot de passe
changeCreds.newUsername=Nouveau nom d’utilisateur
changeCreds.oldPassword=Mot de passe actuel
changeCreds.newPassword=Nouveau mot de passe
@@ -159,12 +160,12 @@ adminUserSettings.header=Administration des paramètres des utilisateurs
adminUserSettings.admin=Administateur
adminUserSettings.user=Utilisateur
adminUserSettings.addUser=Ajouter un utilisateur
-adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
+adminUserSettings.usernameInfo=Le nom d’utilisateur ne doit contenir que des lettres et des chiffres, sans espaces ni caractères spéciaux.
adminUserSettings.roles=Rôles
adminUserSettings.role=Rôle
adminUserSettings.actions=Actions
adminUserSettings.apiUser=Utilisateur API limité
-adminUserSettings.extraApiUser=Additional Limited API User
+adminUserSettings.extraApiUser=Utilisateur limité supplémentaire de l’API
adminUserSettings.webOnlyUser=Utilisateur Web uniquement
adminUserSettings.demoUser=Demo User (Paramètres par défaut)
adminUserSettings.internalApiUser=Internal API User
@@ -806,17 +807,17 @@ rotate.selectAngle=Angle de rotation (par multiples de 90 degrés)
rotate.submit=Pivoter
-#merge
+#split-pdfs
split.title=Diviser
split.header=Diviser
split.desc.1=Les numéros que vous sélectionnez sont le numéro de page sur lequel vous souhaitez faire une division
-split.desc.2=Ainsi, la sélection de 1,3,7-8 diviserait un document de 10 pages en 6 PDF distincts avec :
+split.desc.2=Ainsi, la sélection de 1,3,7-9 diviserait un document de 10 pages en 6 PDF distincts avec :
split.desc.3=Document #1: Page 1
split.desc.4=Document #2: Page 2 et 3
-split.desc.5=Document #3: Page 4, 5 et 6
-split.desc.6=Document #4: Page 7
-split.desc.7=Document #5: Page 8
-split.desc.8=Document #6: Page 9 et 10
+split.desc.5=Document #3: Page 4, 5, 6 et 7
+split.desc.6=Document #4: Page 8
+split.desc.7=Document #5: Page 9
+split.desc.8=Document #6: Page 10
split.splitPages=Pages sur lesquelles diviser
split.submit=Diviser
@@ -1019,7 +1020,7 @@ split-by-sections.vertical.label=Divisions verticales
split-by-sections.horizontal.placeholder=Saisir le nombre de divisions horizontales
split-by-sections.vertical.placeholder=Entrer le nombre de divisions verticales
split-by-sections.submit=Diviser le PDF
-split-by-sections.merge=Merge Into One PDF
+split-by-sections.merge=Fusionner en un seul PDF
#licenses
licenses.nav=Licences
@@ -1031,15 +1032,15 @@ licenses.license=Licence
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=Désolé pour ce problème !
+error.needHelp=Besoin d’aide / Vous avez trouvé un problème ?
+error.contactTip=Si vous avez encore des problèmes, n’hésitez pas à nous contacter pour obtenir de l’aide. Vous pouvez soumettre un ticket sur notre page GitHub ou nous contacter via Discord :
+error.404.head=404 - Page non trouvée | oups on s’est foiré !
+error.404.1=Nous ne parvenons pas à trouver la page que vous recherchez.
+error.404.2=Quelque chose n’a pas fonctionné
+error.github=Créer un ticket sur GitHub
+error.showStack=Afficher la Stack Trace
+error.copyStack=Copier la Stack Trace
+error.githubSubmit=GitHub - Créer un ticket
+error.discordSubmit=Discord - Poster un message de demande d’assistance
diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties
index 0ec2e319..9a50fc77 100644
--- a/src/main/resources/messages_hi_IN.properties
+++ b/src/main/resources/messages_hi_IN.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=चुनें घुमाने का कोण (90 ड
rotate.submit=घुमाएं
-#merge
+#split-pdfs
split.title=पीडीएफ को विभाजित करें
split.header=पीडीएफ को विभाजित करें
split.desc.1=जिन नंबरों को आप चुनते हैं, वे पृष्ठ संख्या होती हैं जिन पर आप विभाजन करना चाहते हैं।
-split.desc.2=इसलिए, 1,3,7-8 का चयन करना एक 10 पृष्ठों के दस्तावेज़ को 6 अलग-अलग पीडीएफ में विभाजित करेगा जैसे:
+split.desc.2=इसलिए, 1,3,7-9 का चयन करना एक 10 पृष्ठों के दस्तावेज़ को 6 अलग-अलग पीडीएफ में विभाजित करेगा जैसे:
split.desc.3=दस्तावेज़ #1: पृष्ठ 1
split.desc.4=दस्तावेज़ #2: पृष्ठ 2 और 3
-split.desc.5=दस्तावेज़ #3: पृष्ठ 4, 5 और 6
+split.desc.5=दस्तावेज़ #3: पृष्ठ 4, 5, 6 और 7
split.desc.6=दस्तावेज़ #4: पृष्ठ 7
split.desc.7=दस्तावेज़ #5: पृष्ठ 8
-split.desc.8=दस्तावेज़ #6: पृष्ठ 9 और 10
+split.desc.8=दस्तावेज़ #6: पृष्ठ 10
split.splitPages=विभाजन करने के लिए पृष्ठ दर्ज करें:
split.submit=विभाजित करें
diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties
index e646234c..f8621054 100644
--- a/src/main/resources/messages_hu_HU.properties
+++ b/src/main/resources/messages_hu_HU.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Válassza ki a forgatási szöget (90 fok egész számú töb
rotate.submit=Forgatás
-#merge
+#split-pdfs
split.title=PDF szétválasztás
split.header=PDF szétválasztás
split.desc.1=A kiválasztott számok a szétválasztani kívánt oldalszámok
-split.desc.2=Például az 1,3,7-8 kiválasztása egy 10 oldalas dokumentumot 6 különálló PDF-fé szétválaszt
+split.desc.2=Például az 1,3,7-9 kiválasztása egy 10 oldalas dokumentumot 6 különálló PDF-fé szétválaszt
split.desc.3=Dokumentum #1: Oldal 1
split.desc.4=Dokumentum #2: Oldal 2 és 3
-split.desc.5=Dokumentum #3: Oldal 4, 5 és 6
-split.desc.6=Dokumentum #4: Oldal 7
-split.desc.7=Dokumentum #5: Oldal 8
-split.desc.8=Dokumentum #6: Oldal 9 és 10
+split.desc.5=Dokumentum #3: Oldal 4, 5, 6 és 7
+split.desc.6=Dokumentum #4: Oldal 8
+split.desc.7=Dokumentum #5: Oldal 9
+split.desc.8=Dokumentum #6: Oldal 10
split.splitPages=Adja meg az oldalakat, amelyekre szét akarja választani:
split.submit=Szétválasztás
diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties
index 24b126d1..6286bf9d 100644
--- a/src/main/resources/messages_id_ID.properties
+++ b/src/main/resources/messages_id_ID.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Pilih sudut rotasi (dalam kelipatan 90 derajat):
rotate.submit=Rotasi
-#merge
+#split-pdfs
split.title=Membagi PDF
split.header=Membagi PDF
split.desc.1=Angka yang Anda pilih adalah nomor halaman yang ingin Anda pisahkan
-split.desc.2=Dengan demikian, memilih 1,3,7-8 akan membagi dokumen 10 halaman menjadi 6 PDF terpisah:
+split.desc.2=Dengan demikian, memilih 1,3,7-9 akan membagi dokumen 10 halaman menjadi 6 PDF terpisah:
split.desc.3=Dokumen #1: Halaman 1
split.desc.4=Dokumen #2: Halaman 2 dan 3
-split.desc.5=Dokumen #3: Halaman 4, 5 dan 6
-split.desc.6=Dokumen #4: Halaman 7
-split.desc.7=Dokumen #5: Halaman 8
-split.desc.8=Dokumen #6: Halaman 9 dan 10
+split.desc.5=Dokumen #3: Halaman 4, 5, 6 dan 7
+split.desc.6=Dokumen #4: Halaman 8
+split.desc.7=Dokumen #5: Halaman 9
+split.desc.8=Dokumen #6: Halaman 10
split.splitPages=Masukkan halaman yang akan dipisah:
split.submit=Pisahkan
diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties
index e217324d..a7223018 100644
--- a/src/main/resources/messages_it_IT.properties
+++ b/src/main/resources/messages_it_IT.properties
@@ -66,6 +66,7 @@ seeDockerHub=Vedi DockerHub
visitGithub=Visita il repository Github
donate=Donazione
color=Colore
+sponsor=Sponsor
@@ -79,6 +80,7 @@ pipeline.defaultOption=Personalizzato
pipeline.submitButton=Invia
pipeline.help=Aiuto sulla pipeline
pipeline.scanHelp=Aiuto per la scansione delle cartelle
+
######################
# Pipeline Options #
######################
@@ -127,7 +129,7 @@ changeCreds.changePassword=Stai utilizzando le credenziali di accesso predefinit
changeCreds.newUsername=Nuovo nome utente
changeCreds.oldPassword=Password attuale
changeCreds.newPassword=Nuova Password
-changeCreds.confirmNewPassword=Conferma Nuova Password
+changeCreds.confirmNewPassword=Conferma nuova Password
changeCreds.submit=Invia modifiche
@@ -187,7 +189,7 @@ multiTool.tags=Strumento multiplo,operazione multipla,interfaccia utente,trascin
home.merge.title=Unisci
home.merge.desc=Unisci facilmente più PDF in uno.
-merge.tags=unione,operazioni sulla pagina,back end,lato server
+merge.tags=unione,operazioni sulla pagina,back-end,lato server
home.split.title=Dividi
home.split.desc=Dividi un singolo PDF in più documenti.
@@ -465,7 +467,7 @@ pdfToSinglePage.submit=Converti in pagina singola
pageExtracter.title=Estrai pagine
pageExtracter.header=Estrai pagine
pageExtracter.submit=Estrai
-pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
+pageExtracter.placeholder=(es. 1,2,8 o 4,7,12-16 o 2n-1)
#getPdfInfo
@@ -795,7 +797,7 @@ pageRemover.title=Rimuovi pagine
pageRemover.header=Rimuovi pagine da un PDF
pageRemover.pagesToDelete=Pagine da eliminare (inserisci una lista di numeri separati da virgola):
pageRemover.submit=Rimuovi pagine
-pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
+pageRemover.placeholder=(es. 1,2,6 o 1-10,15-30)
#rotate
@@ -805,17 +807,17 @@ rotate.selectAngle=Scegli angolo di rotazione (in multipli di 90 gradi):
rotate.submit=Ruota
-#merge
+#split-pdfs
split.title=Dividi PDF
split.header=Dividi PDF
split.desc.1=I numeri che scegli sono le pagine a cui desideri dividere il documento
-split.desc.2=Per esempio inserendo 1,3,7-8 separeresti un documento di 10 pagine in 6 diversi PDF con:
+split.desc.2=Per esempio inserendo 1,3,7-9 separeresti un documento di 10 pagine in 6 diversi PDF con:
split.desc.3=Documento #1: Pagina 1
split.desc.4=Documento #2: Pagine 2 e 3
-split.desc.5=Documento #3: Pagine 4, 5 e 6
-split.desc.6=Documento #4: Pagina 7
-split.desc.7=Documento #5: Pagina 8
-split.desc.8=Documento #6: Pagine 9 e 10
+split.desc.5=Documento #3: Pagine 4, 5, 6 e 7
+split.desc.6=Documento #4: Pagina 8
+split.desc.7=Documento #5: Pagina 9
+split.desc.8=Documento #6: Pagine 10
split.splitPages=Inserisci pagine a cui dividere:
split.submit=Dividi
diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties
index 5ab7a324..c29686ab 100644
--- a/src/main/resources/messages_ja_JP.properties
+++ b/src/main/resources/messages_ja_JP.properties
@@ -57,15 +57,16 @@ usernameExistsMessage=新しいユーザー名はすでに存在します。
invalidUsernameMessage=ユーザー名が無効です。ユーザー名にはアルファベットと数字のみを使用してください。
deleteCurrentUserMessage=現在ログインしているユーザーは削除できません。
deleteUsernameExistsMessage=そのユーザー名は存在しないため削除できません。
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+error=エラー
+oops=おっと!
+help=ヘルプ
+goHomepage=ホームページへ移動
+joinDiscord=Discordサーバーに参加する
+seeDockerHub=Docker Hubを見る
+visitGithub=Githubリポジトリを訪問する
+donate=寄付する
+color=色
+sponsor=スポンサー
@@ -806,17 +807,17 @@ rotate.selectAngle=回転角度を選択 (90度の倍数):
rotate.submit=回転
-#merge
+#split-pdfs
split.title=PDFの分割
split.header=PDFの分割
split.desc.1=選択する番号は分割するページ番号です。
-split.desc.2=したがって、1,3,7-8を選択すると、10ページのドキュメントが以下のように6つのPDFに分割されることになります。
+split.desc.2=したがって、1,3,7-9を選択すると、10ページのドキュメントが以下のように6つのPDFに分割されることになります。
split.desc.3=ドキュメント #1: ページ 1
split.desc.4=ドキュメント #2: ページ 2, 3
-split.desc.5=ドキュメント #3: ページ 4, 5, 6
-split.desc.6=ドキュメント #4: ページ 7
-split.desc.7=ドキュメント #5: ページ 8
-split.desc.8=ドキュメント #6: ページ 9, 10
+split.desc.5=ドキュメント #3: ページ 4, 5, 6, 7
+split.desc.6=ドキュメント #4: ページ 8
+split.desc.7=ドキュメント #5: ページ 9
+split.desc.8=ドキュメント #6: ページ 10
split.splitPages=分割するページ番号を入力:
split.submit=分割
@@ -1031,15 +1032,15 @@ licenses.license=ライセンス
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=問題が発生したことをお詫び申し上げます!
+error.needHelp=助けが必要/問題が見つかりましたか?
+error.contactTip=まだ問題が解決していない場合は、お手数ですが、GitHubページでチケットを提出するか、Discordで私たちに連絡してください:
+error.404.head=404 - ページが見つかりません | おっと、コードでつまずきました!
+error.404.1=あなたが探しているページが見つかりません。
+error.404.2=何か問題が発生しました
+error.github=GitHubでチケットを提出
+error.showStack=スタックトレースを表示
+error.copyStack=スタックトレースをコピー
+error.githubSubmit=GitHub - チケットを提出
+error.discordSubmit=Discord - サポート投稿を提出
diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties
index 117f6929..9438da61 100644
--- a/src/main/resources/messages_ko_KR.properties
+++ b/src/main/resources/messages_ko_KR.properties
@@ -57,15 +57,16 @@ usernameExistsMessage=새 사용자명이 이미 존재합니다.
invalidUsernameMessage=사용자 이름이 잘못되었습니다. 사용자 이름에는 알파벳 문자와 숫자만 포함되어야 합니다.
deleteCurrentUserMessage=현재 로그인한 사용자를 삭제할 수 없습니다.
deleteUsernameExistsMessage=사용자 이름이 존재하지 않으며 삭제할 수 없습니다.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+error=오류
+oops=어머나!
+help=도움말
+goHomepage=홈페이지로 이동
+joinDiscord=Discord 서버에 참여하기
+seeDockerHub=Docker Hub에서 확인하기
+visitGithub=GitHub 저장소 방문하기
+donate=기부하기
+color=색상
+sponsor=스폰서
@@ -806,17 +807,17 @@ rotate.selectAngle=회전 각도 선택 (90도의 배수로):
rotate.submit=회전
-#merge
+#split-pdfs
split.title=PDF 분할
split.header=PDF 분할
split.desc.1=입력한 번호는 분할할 페이지의 번호입니다.
-split.desc.2=예를 들어, 1,3,7-8을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
+split.desc.2=예를 들어, 1,3,7-9을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
split.desc.3=문서 #1: 페이지 1
split.desc.4=문서 #2: 페이지 2, 3
-split.desc.5=문서 #3: 페이지 4, 5, 6
-split.desc.6=문서 #4: 페이지 7
-split.desc.7=문서 #5: 페이지 8
-split.desc.8=문서 #6: 페이지 9, 10
+split.desc.5=문서 #3: 페이지 4, 5, 6, 7
+split.desc.6=문서 #4: 페이지 8
+split.desc.7=문서 #5: 페이지 9
+split.desc.8=문서 #6: 페이지 10
split.splitPages=분할할 페이지 입력:
split.submit=분할
@@ -1031,15 +1032,15 @@ licenses.license=라이센스
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=문제를 끼친 점 죄송합니다!
+error.needHelp=도움이 필요하신가요 / 문제가 있으신가요?
+error.contactTip=여전히 문제가 해결되지 않는다면 망설이지 마시고 도움을 요청하십시오. GitHub 페이지에서 티켓을 제출하거나 Discord를 통해 우리에게 연락하실 수 있습니다:
+error.404.head=404 - 페이지를 찾을 수 없습니다 | 이런, 코드에 걸려 넘어졌어요!
+error.404.1=원하시는 페이지를 찾을 수가 없네요.
+error.404.2=문제가 발생했습니다
+error.github=GitHub에서 티켓 제출
+error.showStack=스택 추적 보기
+error.copyStack=스택 추적 복사
+error.githubSubmit=GitHub - 티켓 제출
+error.discordSubmit=Discord - 문의 게시
diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties
index 2aa3c1a7..d2b6fec3 100644
--- a/src/main/resources/messages_nl_NL.properties
+++ b/src/main/resources/messages_nl_NL.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Selecteer rotatiehoek (in veelvouden van 90 graden):
rotate.submit=Roteren
-#merge
+#split-pdfs
split.title=PDF splitsen
split.header=PDF splitsen
split.desc.1=De nummers die je kiest zijn de paginanummers waarop je een splitsing wilt uitvoeren
-split.desc.2=Als zodanig selecteren van 1,3,7-8 zou een 10 pagina's tellend document splitsen in 6 aparte PDF's met:
+split.desc.2=Als zodanig selecteren van 1,3,7-9 zou een 10 pagina's tellend document splitsen in 6 aparte PDF's met:
split.desc.3=Document #1: Pagina 1
split.desc.4=Document #2: Pagina 2 en 3
-split.desc.5=Document #3: Pagina 4, 5 en 6
-split.desc.6=Document #4: Pagina 7
-split.desc.7=Document #5: Pagina 8
-split.desc.8=Document #6: Pagina 9 en 10
+split.desc.5=Document #3: Pagina 4, 5, 6 en 7
+split.desc.6=Document #4: Pagina 8
+split.desc.7=Document #5: Pagina 9
+split.desc.8=Document #6: Pagina 10
split.splitPages=Voer pagina's in om op te splitsen:
split.submit=Splitsen
diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties
index fb736314..b9dffda4 100644
--- a/src/main/resources/messages_pl_PL.properties
+++ b/src/main/resources/messages_pl_PL.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni):
rotate.submit=Obróć
-#merge
+#split-pdfs
split.title=Podziel dokument PDF
split.header=Podziel dokument PDF
split.desc.1=Wybrane numery to numery stron, na których chcesz dokonać podziału
-split.desc.2=Np. taki wybór 1,3,7-8 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z:
+split.desc.2=Np. taki wybór 1,3,7-9 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z:
split.desc.3=Dokument #1: Strona 1
split.desc.4=Dokument #2: Strona 2 i 3
-split.desc.5=Dokument #3: Strona 4, 5 i 6
-split.desc.6=Dokument #4: Strona 7
-split.desc.7=Dokument #5: Strona 8
-split.desc.8=Dokument #6: Strona 9 i 10
+split.desc.5=Dokument #3: Strona 4, 5, 6 i 7
+split.desc.6=Dokument #4: Strona 8
+split.desc.7=Dokument #5: Strona 9
+split.desc.8=Dokument #6: Strona 10
split.splitPages=Wprowadź strony do podziału na:
split.submit=Podziel
diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties
index 8c829d4f..a9845e38 100644
--- a/src/main/resources/messages_pt_BR.properties
+++ b/src/main/resources/messages_pt_BR.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Selecione o ângulo de rotação (múltiplos de 90 graus):
rotate.submit=Girar
-#merge
+#split-pdfs
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.2=Por exemplo, selecionar 1,3,7-9 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.desc.5=Documento Nº3: Páginas 4, 5, 6 e 7
+split.desc.6=Documento Nº4: Página 8
+split.desc.7=Documento Nº5: Página 9
+split.desc.8=Documento Nº6: Páginas 10
split.splitPages=Digite as páginas para a divisão:
split.submit=Dividir
diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties
index b054cc71..03a37c0c 100644
--- a/src/main/resources/messages_pt_PT.properties
+++ b/src/main/resources/messages_pt_PT.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Seleccione o ângulo de rotação (múltiplos de 90 graus):
rotate.submit=Girar
-#merge
+#split-pdfs
split.title=Dividir PDF
split.header=Dividir PDF
split.desc.1=Os números seleccionados correspondem às páginas onde você deseja fazer a divisão.
-split.desc.2=Por exemplo, seleccionar 1,3,7-8 dividirá um documento de 10 páginas em 6 PDFs separados da seguinte forma:
+split.desc.2=Por exemplo, seleccionar 1,3,7-9 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.desc.5=Documento Nº3: Páginas 4, 5, 6 e 7
+split.desc.6=Documento Nº4: Página 8
+split.desc.7=Documento Nº5: Página 9
+split.desc.8=Documento Nº6: Páginas 10
split.splitPages=Digite as páginas para a divisão:
split.submit=Dividir
diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties
index e326eaf1..15e72483 100644
--- a/src/main/resources/messages_ro_RO.properties
+++ b/src/main/resources/messages_ro_RO.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de gr
rotate.submit=Rotește
-#merge
+#split-pdfs
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.2=Prin urmare, selectând 1,3,7-9, 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.desc.5=Documentul #3: Paginile 4, 5, 6 și 7
+split.desc.6=Documentul #4: Pagina 8
+split.desc.7=Documentul #5: Pagina 9
+split.desc.8=Documentul #6: Pagina 10
split.splitPages=Introduceți paginile pe care să le împărțiți:
split.submit=Împarte
diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties
index 00b46a51..d96b2e43 100644
--- a/src/main/resources/messages_ru_RU.properties
+++ b/src/main/resources/messages_ru_RU.properties
@@ -57,15 +57,16 @@ usernameExistsMessage=Новое имя пользователя уже суще
invalidUsernameMessage=Недопустимое имя пользователя, Имя пользователя должно содержать только буквы алфавита и цифры.
deleteCurrentUserMessage=Невозможно удалить пользователя, вошедшего в систему.
deleteUsernameExistsMessage=Имя пользователя не существует и не может быть удалено.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+error=Ошибка
+oops=Ой!
+help=Помощь
+goHomepage=Перейти на главную страницу
+joinDiscord=Присоединиться к нашему серверу Discord
+seeDockerHub=Посмотреть в Docker Hub
+visitGithub=Посетить репозиторий на GitHub
+donate=Пожертвовать
+color=Цвет
+sponsor=Спонсор
@@ -806,17 +807,17 @@ rotate.selectAngle=Выберите угол поворота (кратный 90
rotate.submit=Повернуть
-#merge
+#split-pdfs
split.title=Разделить PDF
split.header=Разделить PDF
split.desc.1=Выбранные вами числа — это номера страниц, на которых вы хотите сделать разделение.
-split.desc.2=Таким образом, выбор 1,3,7-8 разделит 10-страничный документ на 6 отдельных PDF-файлов с:
-split.desc.3=Документ #1: Page 1
-split.desc.4=Документ #2: Page 2 and 3
-split.desc.5=Документ #3: Page 4, 5 and 6
-split.desc.6=Документ #4: Page 7
-split.desc.7=Документ #5: Page 8
-split.desc.8=Документ #6: Page 9 and 10
+split.desc.2=Таким образом, выбор 1,3,7-9 разделит 10-страничный документ на 6 отдельных PDF-файлов с:
+split.desc.3=Документ #1: Страница 1
+split.desc.4=Документ #2: Страница 2 и 3
+split.desc.5=Документ #3: Страница 4, 5, 6 aиnd 7
+split.desc.6=Документ #4: Страница 8
+split.desc.7=Документ #5: Страница 9
+split.desc.8=Документ #6: Страница 10
split.splitPages=Введите страницы для разделения:
split.submit=Разделить
@@ -1031,15 +1032,15 @@ licenses.license=Лицензия
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=Извините за проблему!
+error.needHelp=Нужна помощь / Нашли проблему?
+error.contactTip=Если у вас все еще есть проблемы, не стесняйтесь обращаться к нам за помощью. Вы можете отправить заявку на нашей странице GitHub или связаться с нами через Discord:
+error.404.head=404 - Страница не найдена | Ой, мы запутались в коде!
+error.404.1=Мы не можем найти страницу, которую вы ищете.
+error.404.2=Произошла ошибка
+error.github=Отправить заявку на GitHub
+error.showStack=Показать стек вызовов
+error.copyStack=Скопировать стек вызовов
+error.githubSubmit=GitHub - Отправить заявку
+error.discordSubmit=Discord - Отправить запрос в поддержку
diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties
index a8fc17cb..0c5911b4 100644
--- a/src/main/resources/messages_sr_LATN_RS.properties
+++ b/src/main/resources/messages_sr_LATN_RS.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Izaberite ugao rotacije (u višestrukim od 90 stepeni):
rotate.submit=Rotiraj
-#merge
+#split-pdfs
split.title=Razdvajanje PDF-a
split.header=Razdvajanje PDF-a
split.desc.1=Brojevi koje izaberete predstavljaju brojeve stranica na kojima želite napraviti razdvajanje
-split.desc.2=Na primer, izbor 1,3,7-8 bi razdvojio dokument od 10 stranica u 6 odvojenih PDF-a sa:
+split.desc.2=Na primer, izbor 1,3,7-9 bi razdvojio dokument od 10 stranica u 6 odvojenih PDF-a sa:
split.desc.3=Dokument #1: Stranica 1
split.desc.4=Dokument #2: Stranice 2 i 3
-split.desc.5=Dokument #3: Stranice 4, 5 i 6
-split.desc.6=Dokument #4: Stranica 7
-split.desc.7=Dokument #5: Stranica 8
-split.desc.8=Dokument #6: Stranice 9 i 10
+split.desc.5=Dokument #3: Stranice 4, 5, 6 i 7
+split.desc.6=Dokument #4: Stranica 8
+split.desc.7=Dokument #5: Stranica 9
+split.desc.8=Dokument #6: Stranice 10
split.splitPages=Unesite stranice za razdvajanje:
split.submit=Razdvoji
diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties
index f107edd8..b27577c8 100644
--- a/src/main/resources/messages_sv_SE.properties
+++ b/src/main/resources/messages_sv_SE.properties
@@ -66,6 +66,7 @@ seeDockerHub=See Docker Hub
visitGithub=Visit Github Repository
donate=Donate
color=Color
+sponsor=Sponsor
@@ -806,17 +807,17 @@ rotate.selectAngle=Välj rotationsvinkel (i multipler av 90 grader):
rotate.submit=Rotera
-#merge
+#split-pdfs
split.title=Dela upp PDF
split.header=Dela upp PDF
split.desc.1=Siffrorna du väljer är sidnumret du vill göra en split på
-split.desc.2=Som sådan skulle ett val av 1,3,7-8 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med:
+split.desc.2=Som sådan skulle ett val av 1,3,7-9 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med:
split.desc.3=Dokument #1: Sida 1
split.desc.4=Dokument #2: Sida 2 och 3
-split.desc.5=Dokument #3: Sida 4, 5 och 6
-split.desc.6=Dokument #4: Sida 7
-split.desc.7=Dokument #5: Sida 8
-split.desc.8=Dokument #6: Sida 9 och 10
+split.desc.5=Dokument #3: Sida 4, 5, 6 och 7
+split.desc.6=Dokument #4: Sida 8
+split.desc.7=Dokument #5: Sida 9
+split.desc.8=Dokument #6: Sida 10
split.splitPages=Ange sidor att dela på:
split.submit=Dela
diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties
index 29997bab..1320dcc9 100644
--- a/src/main/resources/messages_tr_TR.properties
+++ b/src/main/resources/messages_tr_TR.properties
@@ -11,17 +11,17 @@ imgPrompt=Resim(leri) seçin
genericSubmit=Gönder
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
-pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
+pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
goToPage=Git
true=Doğru
false=Yanlış
unknown=Bilinmeyen
save=Kaydet
-saveToBrowser=Save to Browser
+saveToBrowser=Tarayıcıya Kaydet
close=Kapat
filesSelected=dosya seçildi
noFavourites=Favori eklenmedi
-downloadComplete=Download Complete
+downloadComplete=İndirme Tamamlandı
bored=Sıkıldınız mı?
alphabet=Alfabe
downloadPdf=PDF İndir
@@ -45,53 +45,54 @@ red=Kırmızı
green=Yeşil
blue=Mavi
custom=Özel
-WorkInProgess=Work in progress, May not work or be buggy, Please report any problems!
-poweredBy=Powered by
-yes=Yes
-no=No
+WorkInProgess=Çalışmalar devam ediyor, Çalışmayabilir veya hatalı olabilir, Lütfen herhangi bir sorunu bildirin!
+poweredBy=Tarafından desteklenmektedir
+yes=Evet
+no=Hayır
changedCredsMessage=Bilgiler değiştirildi!
notAuthenticatedMessage=Kullanıcı doğrulanmadı.
userNotFoundMessage=Kullanıcı bulunamadı.
incorrectPasswordMessage=Mevcut şifre yanlış.
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
-invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers.
-deleteCurrentUserMessage=Cannot delete currently logged in user.
-deleteUsernameExistsMessage=The username does not exist and cannot be deleted.
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+invalidUsernameMessage=Geçersiz kullanıcı adı, Kullanıcı adı yalnızca alfabe karakterleri ve sayılar içermelidir.
+deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor.
+deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez.
+error=Hata
+oops=Tüh!
+help=Yardım
+goHomepage=Anasayfa'ya git
+joinDiscord=Discord sunucumuza katılın
+seeDockerHub=Docker Hub'a bakın
+visitGithub=Github Deposunu Ziyaret Edin
+donate=Bağış Yapın
+color=Renk
+sponsor=Sponsor
###############
# Pipeline #
###############
-pipeline.header=Pipeline Menu (Beta)
-pipeline.uploadButton=Upload Custom
-pipeline.configureButton=Configure
-pipeline.defaultOption=Custom
-pipeline.submitButton=Submit
-pipeline.help=Pipeline Help
-pipeline.scanHelp=Folder Scanning Help
+pipeline.header=Pipeline Menü (Beta)
+pipeline.uploadButton=Upload edin
+pipeline.configureButton=Yapılandır
+pipeline.defaultOption=Özel
+pipeline.submitButton=Gönder
+pipeline.help=Pipeline Yardım
+pipeline.scanHelp=Klasör Tarama Yardımı
######################
# Pipeline Options #
######################
-pipelineOptions.header=Pipeline Configuration
-pipelineOptions.pipelineNameLabel=Pipeline Name
-pipelineOptions.saveSettings=Save Operation Settings
-pipelineOptions.pipelineNamePrompt=Enter pipeline name here
-pipelineOptions.selectOperation=Select Operation
-pipelineOptions.addOperationButton=Add operation
+pipelineOptions.header=Pipeline Yapılandırma
+pipelineOptions.pipelineNameLabel=Pipeline İsim
+pipelineOptions.saveSettings=Ayarları Kaydet
+pipelineOptions.pipelineNamePrompt=Buraya isim girin
+pipelineOptions.selectOperation=İşlem Seçin
+pipelineOptions.addOperationButton=İşlem ekle
pipelineOptions.pipelineHeader=Pipeline:
-pipelineOptions.saveButton=Download
-pipelineOptions.validateButton=Validate
+pipelineOptions.saveButton=İndir
+pipelineOptions.validateButton=Doğrula
@@ -159,15 +160,15 @@ adminUserSettings.header=Yönetici Kullanıcı Kontrol Ayarları
adminUserSettings.admin=Yönetici
adminUserSettings.user=Kullanıcı
adminUserSettings.addUser=Yeni Kullanıcı Ekle
-adminUserSettings.usernameInfo=Username must only contain letters and numbers, no spaces or special characters.
+adminUserSettings.usernameInfo=Kullanıcı adı yalnızca harf ve rakamlardan oluşmalı, boşluk veya özel karakter içermemelidir.
adminUserSettings.roles=Roller
adminUserSettings.role=Rol
adminUserSettings.actions=Eylemler
adminUserSettings.apiUser=Sınırlı API Kullanıcısı
-adminUserSettings.extraApiUser=Additional Limited API User
+adminUserSettings.extraApiUser=Ek Sınırlı API Kullanıcısı
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
-adminUserSettings.demoUser=Demo User (No custom settings)
-adminUserSettings.internalApiUser=Internal API User
+adminUserSettings.demoUser=Demo Kullanıcısı (Özel ayar yok)
+adminUserSettings.internalApiUser=Dahili API Kullanıcısı
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
adminUserSettings.submit=Kullanıcıyı Kaydet
@@ -175,12 +176,12 @@ adminUserSettings.submit=Kullanıcıyı Kaydet
# HOME-PAGE #
#############
home.desc=Yerel olarak barındırılan tüm PDF ihtiyaçlarınız için tek durak noktanız.
-home.searchBar=Search for features...
+home.searchBar=Özellikleri arayın...
-home.viewPdf.title=View PDF
-home.viewPdf.desc=View, annotate, add text or images
-viewPdf.tags=view,read,annotate,text,image
+home.viewPdf.title=PDF Görüntüle
+home.viewPdf.desc=Görüntüleyin, açıklama ekleyin, metin veya resim ekleyin
+viewPdf.tags=görüntüle,oku,açıklama ekle,metin,görüntü
home.multiTool.title=PDF Çoklu Araç
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
@@ -304,9 +305,9 @@ home.removeBlanks.title=Boş Sayfaları Kaldır
home.removeBlanks.desc=Bir belgeden boş sayfaları tespit eder ve kaldırır
removeBlanks.tags=temizle,sadeleştir,içeriksiz,düzenle
-home.removeAnnotations.title=Remove Annotations
-home.removeAnnotations.desc=Removes all comments/annotations from a PDF
-removeAnnotations.tags=comments,highlight,notes,markup,remove
+home.removeAnnotations.title=Ek Açıklamaları Kaldır
+home.removeAnnotations.desc=PDF'deki tüm yorumları/açıklamaları kaldırır
+removeAnnotations.tags=yorumlar,vurgulama,notlar,işaretleme,kaldırma
home.compare.title=Karşılaştır
home.compare.desc=2 PDF Belgesi arasındaki farkları karşılaştırır ve gösterir
@@ -389,36 +390,36 @@ home.autoRedact.title=Otomatik Karartma
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
-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.tableExtraxt.title=PDF'den CSV'ye
+home.tableExtraxt.desc=PDF'den Tabloları çıkarır ve CSV'ye dönüştürür
+tableExtraxt.tags=CSV, Tablo Çıkarma, ayıklama, dönüştürme
-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.autoSizeSplitPDF.title=Boyut/Sayıya Göre Otomatik Bölme
+home.autoSizeSplitPDF.desc=Tek bir PDF'yi boyut, sayfa sayısı veya belge sayısına göre birden fazla belgeye bölün
+autoSizeSplitPDF.tags=pdf,bölme,belge,organizasyon
-home.overlay-pdfs.title=Overlay PDFs
-home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
-overlay-pdfs.tags=Overlay
+home.overlay-pdfs.title=PDF'leri Bindirme
+home.overlay-pdfs.desc=PDF'leri başka bir PDF'nin üzerine bindirir
+overlay-pdfs.tags=Bindirme
-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
+home.split-by-sections.title=PDF'yi Bölümlere Ayırma
+home.split-by-sections.desc=PDF'nin her sayfasını daha küçük yatay ve dikey bölümlere ayırın
+split-by-sections.tags=Bölümlere Ayırma, Bölme, Özelleştirme
-home.AddStampRequest.title=Add Stamp to PDF
-home.AddStampRequest.desc=Add text or add image stamps at set locations
-AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
+home.AddStampRequest.title=PDF'ye Damga Ekleme
+home.AddStampRequest.desc=Belirlenen konumlara metin veya resim damgaları ekleyin
+AddStampRequest.tags=Damga, Görüntü ekle, Görüntüyü ortala, Filigran, PDF, Göm, Özelleştir
-home.PDFToBook.title=PDF to Book
-home.PDFToBook.desc=Converts PDF to Book/Comic formats using calibre
-PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.PDFToBook.title=PDF'den Kitaba
+home.PDFToBook.desc=Calibre kullanarak PDF'yi Kitap/Komik formatlarına dönüştürür
+PDFToBook.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
-home.BookToPDF.title=Book to PDF
-home.BookToPDF.desc=Converts Books/Comics formats to PDF using calibre
-BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+home.BookToPDF.title=Kitaptan PDF'ye
+home.BookToPDF.desc=calibre kullanarak Kitap/Karikatür formatlarını PDF'ye dönüştürür
+BookToPDF.tags=Kitap,Çizgi Roman,Calibre,Dönüştür,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf
###########################
@@ -466,7 +467,7 @@ pdfToSinglePage.submit=Tek Sayfaya Dönüştür
pageExtracter.title=Sayfaları Çıkar
pageExtracter.header=Sayfaları Çıkar
pageExtracter.submit=Çıkar
-pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
+pageExtracter.placeholder=(örneğin 1,2,8 veya 4,7,12-16 ya da 2n-1)
#getPdfInfo
@@ -498,37 +499,37 @@ HTMLToPDF.header=HTML'den PDF'e
HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder
HTMLToPDF.submit=Dönüştür
HTMLToPDF.credit=WeasyPrint Kullanıyor
-HTMLToPDF.zoom=Zoom level for displaying the website.
-HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
-HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
-HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
-HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
-HTMLToPDF.printBackground=Render the background of websites.
-HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
-HTMLToPDF.cssMediaType=Change the CSS media type of the page.
-HTMLToPDF.none=None
-HTMLToPDF.print=Print
-HTMLToPDF.screen=Screen
+HTMLToPDF.zoom=Web sitesini görüntülemek için yakınlaştırma düzeyi.
+HTMLToPDF.pageWidth=Sayfanın santimetre cinsinden genişliği. (Varsayılan olarak boş)
+HTMLToPDF.pageHeight=Sayfanın santimetre cinsinden yüksekliği. (Varsayılan olarak boş)
+HTMLToPDF.marginTop=Sayfanın milimetre cinsinden üst kenar boşluğu. (Varsayılan olarak boş)
+HTMLToPDF.marginBottom=Sayfanın milimetre cinsinden alt kenar boşluğu. (Varsayılan olarak boş)
+HTMLToPDF.marginLeft=Sayfanın milimetre cinsinden sol kenar boşluğu. (Varsayılan olarak boş)
+HTMLToPDF.marginRight=Sayfanın milimetre cinsinden sağ kenar boşluğu. (Varsayılan olarak boş)
+HTMLToPDF.printBackground=Web sitelerinin arka planını oluşturun.
+HTMLToPDF.defaultHeader=Varsayılan Üstbilgiyi Etkinleştir (Ad ve sayfa numarası)
+HTMLToPDF.cssMediaType=Sayfanın CSS ortam türünü değiştirin.
+HTMLToPDF.none=Hiçbiri
+HTMLToPDF.print=Yazdır
+HTMLToPDF.screen=Ekran
#AddStampRequest
-AddStampRequest.header=Stamp PDF
-AddStampRequest.title=Stamp PDF
-AddStampRequest.stampType=Stamp Type
-AddStampRequest.stampText=Stamp Text
-AddStampRequest.stampImage=Stamp Image
-AddStampRequest.alphabet=Alphabet
-AddStampRequest.fontSize=Font/Image Size
-AddStampRequest.rotation=Rotation
-AddStampRequest.opacity=Opacity
-AddStampRequest.position=Position
-AddStampRequest.overrideX=Override X Coordinate
-AddStampRequest.overrideY=Override Y Coordinate
-AddStampRequest.customMargin=Custom Margin
-AddStampRequest.customColor=Custom Text Color
-AddStampRequest.submit=Submit
+AddStampRequest.header=Damga PDF
+AddStampRequest.title=Damga PDF
+AddStampRequest.stampType=Damga Türü
+AddStampRequest.stampText=Damga Metni
+AddStampRequest.stampImage=Damga Resmi
+AddStampRequest.alphabet=Alfabe
+AddStampRequest.fontSize=Yazı Tipi/Görüntü Boyutu
+AddStampRequest.rotation=Döndürme
+AddStampRequest.opacity=Opaklık
+AddStampRequest.position=Konum
+AddStampRequest.overrideX=X Koordinatını geçersiz kıl
+AddStampRequest.overrideY=Y Koordinatını Geçersiz Kıl
+AddStampRequest.customMargin=Özel Kenar Boşluğu
+AddStampRequest.customColor=Özel Metin Rengi
+AddStampRequest.submit=Gönder
#sanitizePDF
@@ -617,11 +618,11 @@ scalePages.submit=Gönder
certSign.title=Sertifika İmzalama
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
-certSign.jksNote=Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.
+certSign.jksNote=Note: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
-certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore):
+certSign.selectJKS=Java Keystore Dosyanızı (.jks veya .keystore) seçin:
certSign.certType=Sertifika Türü
certSign.password=Anahtar Deposu veya Özel Anahtar Şifrenizi Girin (Varsa):
certSign.showSig=İmzayı Göster
@@ -642,9 +643,9 @@ removeBlanks.submit=Boşları Kaldır
#removeAnnotations
-removeAnnotations.title=Remove Annotations
-removeAnnotations.header=Remove Annotations
-removeAnnotations.submit=Remove
+removeAnnotations.title=Ek Açıklamaları Kaldır
+removeAnnotations.header=Ek Açıklamaları Kaldır
+removeAnnotations.submit=Kaldır
#compare
@@ -655,17 +656,17 @@ compare.document.2=Belge 2
compare.submit=Karşılaştır
#BookToPDF
-BookToPDF.title=Books and Comics to PDF
-BookToPDF.header=Book to PDF
-BookToPDF.credit=Uses Calibre
-BookToPDF.submit=Convert
+BookToPDF.title=Kitapları ve Çizgi Romanları PDF'e Dönüştürme
+BookToPDF.header=Kitaptan PDF'ye
+BookToPDF.credit=Kalibre Kullanır
+BookToPDF.submit=Dönüştür
#PDFToBook
-PDFToBook.title=PDF to Book
-PDFToBook.header=PDF to Book
+PDFToBook.title=PDF'den Kitaba
+PDFToBook.header=PDF'den Kitaba
PDFToBook.selectText.1=Format
-PDFToBook.credit=Uses Calibre
-PDFToBook.submit=Convert
+PDFToBook.credit=Kalibre Kullanır
+PDFToBook.submit=Dönüştür
#sign
sign.title=İmzala
@@ -769,34 +770,34 @@ merge.submit=Birleştir
pdfOrganiser.title=Sayfa Organizatörü
pdfOrganiser.header=PDF Sayfa Organizatörü
pdfOrganiser.submit=Sayfaları Yeniden Düzenle
-pdfOrganiser.mode=Mode
-pdfOrganiser.mode.1=Custom Page Order
-pdfOrganiser.mode.2=Reverse Order
-pdfOrganiser.mode.3=Duplex Sort
-pdfOrganiser.mode.4=Booklet Sort
-pdfOrganiser.mode.5=Side Stitch Booklet Sort
-pdfOrganiser.mode.6=Odd-Even Split
-pdfOrganiser.mode.7=Remove First
-pdfOrganiser.mode.8=Remove Last
-pdfOrganiser.mode.9=Remove First and Last
-pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)
+pdfOrganiser.mode=Mod
+pdfOrganiser.mode.1=Özel Sayfa Düzeni
+pdfOrganiser.mode.2=Ters Sıralama
+pdfOrganiser.mode.3=Çift Taraflı Sıralama
+pdfOrganiser.mode.4=Kitapçık Sıralama
+pdfOrganiser.mode.5=Yandan Dikişli Kitapçık Sıralama
+pdfOrganiser.mode.6=Tek-Çift Ayrımı
+pdfOrganiser.mode.7=İlk Önce Kaldır
+pdfOrganiser.mode.8=Sonuncuyu Kaldır
+pdfOrganiser.mode.9=İlk ve Sonu Kaldır
+pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
#multiTool
multiTool.title=PDF Çoklu Araç
multiTool.header=PDF Çoklu Araç
-multiTool.uploadPrompts=Please Upload PDF
+multiTool.uploadPrompts=Lütfen PDF Yükleyin
#view pdf
-viewPdf.title=View PDF
-viewPdf.header=View PDF
+viewPdf.title=PDF Görüntüle
+viewPdf.header=PDF Görüntüle
#pageRemover
pageRemover.title=Sayfa Silici
pageRemover.header=PDF Sayfa silici
pageRemover.pagesToDelete=Silinmesi gereken sayfalar (Virgülle ayrılmış sayfa numaraları listesi girin):
pageRemover.submit=Sayfaları Sil
-pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30)
+pageRemover.placeholder=(örn. 1,2,6 veya 1-10,15-30)
#rotate
@@ -806,17 +807,17 @@ rotate.selectAngle=Döndürme açısını seçin (90 derecenin katları olarak):
rotate.submit=Döndür
-#merge
+#split-pdfs
split.title=PDF Ayır
split.header=PDF Ayır
split.desc.1=Seçtiğiniz numaralar, bir ayrım yapmak istediğiniz sayfa numarasıdır
-split.desc.2=Bu nedenle, 1,3,7-8 seçmek 10 sayfalı bir belgeyi şunlarla 6 ayrı PDF'e böler:
+split.desc.2=Bu nedenle, 1,3,7-9 seçmek 10 sayfalı bir belgeyi şunlarla 6 ayrı PDF'e böler:
split.desc.3=Belge #1: Sayfa 1
split.desc.4=Belge #2: Sayfa 2 ve 3
-split.desc.5=Belge #3: Sayfa 4, 5 ve 6
-split.desc.6=Belge #4: Sayfa 7
-split.desc.7=Belge #5: Sayfa 8
-split.desc.8=Belge #6: Sayfa 9 ve 10
+split.desc.5=Belge #3: Sayfa 4, 5, 6 ve 7
+split.desc.6=Belge #4: Sayfa 8
+split.desc.7=Belge #5: Sayfa 9
+split.desc.8=Belge #6: Sayfa 10
split.splitPages=Ayrılacak sayfaları girin:
split.submit=Ayır
@@ -884,8 +885,8 @@ watermark.selectText.7=Opaklık (0% - 100%):
watermark.selectText.8=Filigran Türü:
watermark.selectText.9=Filigran Resmi:
watermark.submit=Filigran Ekle
-watermark.type.1=Text
-watermark.type.2=Image
+watermark.type.1=Metin
+watermark.type.2=Resim
#Change permissions
@@ -937,7 +938,7 @@ pdfToPDFA.title=PDF'den PDF/A'ya
pdfToPDFA.header=PDF'den PDF/A'ya
pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için OCRmyPDF kullanır
pdfToPDFA.submit=Dönüştür
-pdfToPDFA.tip=Currently does not work for multiple inputs at once
+pdfToPDFA.tip=Şu anda aynı anda birden fazla giriş için çalışmıyor
#PDFToWord
@@ -978,68 +979,68 @@ PDFToXML.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
PDFToXML.submit=Dönüştür
#PDFToCSV
-PDFToCSV.title=PDF to CSV
-PDFToCSV.header=PDF to CSV
-PDFToCSV.prompt=Choose page to extract table
-PDFToCSV.submit=Extract
+PDFToCSV.title=PDF'den CSV'ye
+PDFToCSV.header=PDF'den CSV'ye
+PDFToCSV.prompt=Tabloyu çıkarmak için sayfa seçin
+PDFToCSV.submit=Çıkart
#split-by-size-or-count
-split-by-size-or-count.title=Split PDF 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
+split-by-size-or-count.title=PDF'yi Boyuta veya Sayıya Göre Bölme
+split-by-size-or-count.header=PDF'yi Boyuta veya Sayıya Göre Bölme
+split-by-size-or-count.type.label=Bölme Türünü Seçin
+split-by-size-or-count.type.size=Boyuta Göre
+split-by-size-or-count.type.pageCount=Sayfa Sayısına Göre
+split-by-size-or-count.type.docCount=Belge Sayısına Göre
+split-by-size-or-count.value.label=Değer Girin
+split-by-size-or-count.value.placeholder=Boyutu (örn. 2MB veya 3KB) veya sayıyı (örn. 5) girin
+split-by-size-or-count.submit=Gönder
#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
+overlay-pdfs.header=PDF Dosyalarını Bindirme
+overlay-pdfs.baseFile.label=Temel PDF Dosyasını Seçin
+overlay-pdfs.overlayFiles.label=İkinci PDF Dosyalarını Seçin
+overlay-pdfs.mode.label=Bindirme Modunu Seçin
+overlay-pdfs.mode.sequential=Sıralı Bindirme
+overlay-pdfs.mode.interleaved=Serpiştirilmiş Bindirme
+overlay-pdfs.mode.fixedRepeat=Sabit Tekrar Bindirme
+overlay-pdfs.counts.label=Bindirme Sayıları (Sabit Tekrar Modu için)
+overlay-pdfs.counts.placeholder=Virgülle ayrılmış sayıları girin (örn. 2,3,1)
+overlay-pdfs.position.label=Bindirme Konumunu Seçin
+overlay-pdfs.position.foreground=Ön plan
+overlay-pdfs.position.background=Arka plan
+overlay-pdfs.submit=Gönder
#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
-split-by-sections.merge=Merge Into One PDF
+split-by-sections.title=PDF'yi Bölümlere Ayırma
+split-by-sections.header=PDF'yi Bölümlere Ayırma
+split-by-sections.horizontal.label=Yatay Bölümler
+split-by-sections.vertical.label=Dikey Bölümler
+split-by-sections.horizontal.placeholder=Yatay bölme sayısını girin
+split-by-sections.vertical.placeholder=Dikey bölme sayısını girin
+split-by-sections.submit=PDF'yi Böl
+split-by-sections.merge=Bir PDF'de Birleştirin
#licenses
-licenses.nav=Licenses
-licenses.title=3rd Party Licenses
-licenses.header=3rd Party Licenses
-licenses.module=Module
-licenses.version=Version
-licenses.license=License
+licenses.nav=Lisanslar
+licenses.title=3. Taraf Lisansları
+licenses.header=3. Taraf Lisansları
+licenses.module=Modül
+licenses.version=Versiyon
+licenses.license=Lisans
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=Sorun için özür dileriz!
+error.needHelp=Yardıma mı ihtiyacınız var / Bir sorun mu buldunuz?
+error.contactTip=Hala sorun yaşıyorsanız, yardım için bize ulaşmaktan çekinmeyin. GitHub sayfamızdan bir bilet gönderebilir veya Discord üzerinden bizimle iletişime geçebilirsiniz:
+error.404.head=404 - Sayfa Bulunamadı | Tüh, kodda takıldık!
+error.404.1=Aradığınız sayfayı bulamıyoruz.
+error.404.2=Bir şeyler ters gitti
+error.github=GitHub üzerinden bir hata bildirin
+error.showStack=Yığın İzlemesini Göster
+error.copyStack=Yığın İzini Kopyala
+error.githubSubmit=GitHub - Hata gönderin
+error.discordSubmit=Discord - Destek gönderisi gönderin
diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties
new file mode 100644
index 00000000..e6ca925f
--- /dev/null
+++ b/src/main/resources/messages_uk_UA.properties
@@ -0,0 +1,1046 @@
+###########
+# Generic #
+###########
+# the direction that the language is written (ltr = left to right, rtl = right to left)
+language.direction=ltr
+
+pdfPrompt=Оберіть PDF(и)
+multiPdfPrompt=Оберіть PDFи (2+)
+multiPdfDropPrompt=Оберіть (або перетягніть) всі необхідні PDFи
+imgPrompt=Оберіть зображення(я)
+genericSubmit=Надіслати
+processTimeWarning=Увага: Цей процес може тривати до хвилини в залежності від розміру файлу.
+pageOrderPrompt=Порядок сторінок (введіть список номерів сторінок через кому):
+pageSelectionPrompt=Користувацький вибір сторінки (введіть список номерів сторінок через кому 1,5,6 або функції типу 2n+1) :
+goToPage=Вперед
+true=Правда
+false=Брехня
+unknown=Невідомо
+save=Зберегти
+saveToBrowser=Зберегти в браузері
+close=Закрити
+filesSelected=файлів обрано
+noFavourites=Немає вибраного
+downloadComplete=Завантаження завершено
+bored=Нудно чекати?
+alphabet=Алфавіт
+downloadPdf=Завантажити PDF
+text=Текст
+font=Шрифт
+selectFillter=-- Вибрати --
+pageNum=номер сторінки
+sizes.small=Малий
+sizes.medium=Середній
+sizes.large=Великий
+sizes.x-large=Дуже великий
+error.pdfPassword=Документ PDF захищено паролем, і пароль не був наданий або був невірним
+delete=Видалити
+username=Ім'я користувача
+password=Пароль
+welcome=Ласкаво просимо
+property=Властивість
+black=Чорний
+white=Білий
+red=Червоний
+green=Зелений
+blue=Синій
+custom=Звичай...
+WorkInProgess=Робота триває, може не працювати або глючити, будь ласка, повідомляйте про будь-які проблеми!
+poweredBy=Працює на
+yes=Так
+no=Ні
+changedCredsMessage=Облікові дані змінено!
+notAuthenticatedMessage=Користувач не пройшов перевірку автентичності.
+userNotFoundMessage=Користувача не знайдено.
+incorrectPasswordMessage=Поточний пароль невірний.
+usernameExistsMessage=Нове ім'я користувача вже існує.
+invalidUsernameMessage=Недійсне ім'я користувача, Ім'я користувача повинно містити тільки літери алфавіту та цифри.
+deleteCurrentUserMessage=Неможливо видалити користувача, який увійшов в систему.
+deleteUsernameExistsMessage=Ім'я користувача не існує і не може бути видалено.
+error=Error
+oops=Oops!
+help=Help
+goHomepage=Go to Homepage
+joinDiscord=Join our Discord server
+seeDockerHub=See Docker Hub
+visitGithub=Visit Github Repository
+donate=Donate
+color=Color
+sponsor=Sponsor
+
+
+
+###############
+# Pipeline #
+###############
+pipeline.header=Меню конвеєрної обробки (Бета)
+pipeline.uploadButton=Завантажити Користувацький
+pipeline.configureButton=Налаштування
+pipeline.defaultOption=Користувацький
+pipeline.submitButton=Надіслати
+pipeline.help=Довідка з конвеєрної обробки
+pipeline.scanHelp=Довідка зі сканування папок
+
+######################
+# Pipeline Options #
+######################
+pipelineOptions.header=Налаштування конвеєрної обробки
+pipelineOptions.pipelineNameLabel=Назва конвеєра
+pipelineOptions.saveSettings=Зберегти налаштування операції
+pipelineOptions.pipelineNamePrompt=Введіть назву конвеєра тут
+pipelineOptions.selectOperation=Вибрати операцію
+pipelineOptions.addOperationButton=Додати операцію
+pipelineOptions.pipelineHeader=Конвеєр:
+pipelineOptions.saveButton=Завантажити
+pipelineOptions.validateButton=Перевірити
+
+
+
+
+#############
+# NAVBAR #
+#############
+navbar.convert=Конвертувати
+navbar.security=Безпека
+navbar.other=Інше
+navbar.darkmode=Темний режим
+navbar.pageOps=Операції зі сторінкою
+navbar.settings=Налаштування
+
+#############
+# SETTINGS #
+#############
+settings.title=Налаштування
+settings.update=Доступне оновлення
+settings.appVersion=Версія додатку:
+settings.downloadOption.title=Виберіть варіант завантаження (для завантаження одного файлу без zip):
+settings.downloadOption.1=Відкрити в тому ж вікні
+settings.downloadOption.2=Відкрити в новому вікні
+settings.downloadOption.3=Завантажити файл
+settings.zipThreshold=Zip-файли, коли кількість завантажених файлів перевищує
+settings.signOut=Вийти
+settings.accountSettings=Налаштування акаунта
+
+
+
+changeCreds.title=Змінити облікові дані
+changeCreds.header=Оновіть дані вашого облікового запису
+changeCreds.changePassword=Ви використовуєте заводські облікові дані для входу. Будь ласка, введіть новий пароль
+changeCreds.newUsername=Нове ім'я користувача
+changeCreds.oldPassword=Поточний пароль
+changeCreds.newPassword=Новий пароль
+changeCreds.confirmNewPassword=Підтвердіть новий пароль
+changeCreds.submit=Надіслати зміни
+
+account.title=Налаштування акаунта
+account.accountSettings=Налаштування акаунта
+account.adminSettings=Налаштування адміністратора - Перегляд і додавання користувачів
+account.userControlSettings=Налаштування контролю користувача
+account.changeUsername=Змінити ім'я користувача
+account.newUsername=Нове ім'я користувача
+account.password=Підтвердження пароля
+account.oldPassword=Старий пароль
+account.newPassword=Новий пароль
+account.changePassword=Змінити пароль
+account.confirmNewPassword=Підтвердіть новий пароль
+account.signOut=Вийти
+account.yourApiKey=Ваш API-ключ
+account.syncTitle=Синхронізувати налаштування браузера з обліковим записом
+account.settingsCompare=Порівняння налаштувань:
+account.property=Властивість
+account.webBrowserSettings=Налаштування веб-браузера
+account.syncToBrowser=Синхронізувати обліковий запис -> Браузер
+account.syncToAccount=Синхронізувати обліковий запис <- Браузер
+
+adminUserSettings.title=Налаштування контролю користувача
+adminUserSettings.header=Налаштування контролю користувача адміністратора
+adminUserSettings.admin=Адміністратор
+adminUserSettings.user=Користувач
+adminUserSettings.addUser=Додати нового користувача
+adminUserSettings.usernameInfo=Ім'я користувача має містити тільки літери та цифри, без пробілів та спеціальних символів.
+adminUserSettings.roles=Ролі
+adminUserSettings.role=Роль
+adminUserSettings.actions=Дії
+adminUserSettings.apiUser=Обмежений користувач API
+adminUserSettings.extraApiUser=Додатковий обмежений користувач API
+adminUserSettings.webOnlyUser=Тільки веб-користувач
+adminUserSettings.demoUser=Демо-користувач (без налаштованих параметрів)
+adminUserSettings.internalApiUser=Внутрішній користувач API
+adminUserSettings.forceChange=Примусити користувача змінити пароль при вході в систему
+adminUserSettings.submit=Зберегти користувача
+
+#############
+# HOME-PAGE #
+#############
+home.desc=Ваш локальний універсальний магазин для всіх ваших потреб у PDF.
+home.searchBar=Пошук функцій...
+
+
+home.viewPdf.title=Перегляд PDF
+home.viewPdf.desc=Перегляд, анотація, додавання тексту або зображень
+viewPdf.tags=view,read,annotate,text,image
+
+home.multiTool.title=Мультіінструмент PDF
+home.multiTool.desc=Об'єднання, поворот, зміна порядку та видалення сторінок
+multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
+
+home.merge.title=Об'єднати
+home.merge.desc=Легко об'єднуйте кілька PDF-файлів у один.
+merge.tags=merge,Page operations,Back end,server side
+
+home.split.title=Розділити
+home.split.desc=Розділіть PDF-файли на кілька документів
+split.tags=Page operations,divide,Multi Page,cut,server side
+
+home.rotate.title=Повернути
+home.rotate.desc=Легко повертайте ваші PDF-файли.
+rotate.tags=server side
+
+
+home.imageToPdf.title=Зображення в PDF
+home.imageToPdf.desc=Перетворення зображення (PNG, JPEG, GIF) в PDF.
+imageToPdf.tags=conversion,img,jpg,picture,photo
+
+home.pdfToImage.title=PDF в зображення
+home.pdfToImage.desc=Перетворення PDF в зображення. (PNG, JPEG, GIF)
+pdfToImage.tags=conversion,img,jpg,picture,photo
+
+home.pdfOrganiser.title=Реорганізація
+home.pdfOrganiser.desc=Видалення/перестановка сторінок у будь-якому порядку
+pdfOrganiser.tags=duplex,even,odd,sort,move
+
+
+home.addImage.title=Додати зображення
+home.addImage.desc=Додає зображення у вказане місце в PDF (в розробці)
+addImage.tags=img,jpg,picture,photo
+
+home.watermark.title=Додати водяний знак
+home.watermark.desc=Додайте свій водяний знак до документа PDF.
+watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
+
+home.permissions.title=Змінити дозволи
+home.permissions.desc=Змініть дозволи вашого документа PDF
+permissions.tags=read,write,edit,print
+
+
+home.removePages.title=Видалення
+home.removePages.desc=Видаліть непотрібні сторінки з документа PDF.
+removePages.tags=Remove pages,delete pages
+
+home.addPassword.title=Додати пароль
+home.addPassword.desc=Зашифруйте документ PDF паролем.
+addPassword.tags=secure,security
+
+home.removePassword.title=Видалити пароль
+home.removePassword.desc=Зніміть захист паролем з вашого документа PDF.
+removePassword.tags=secure,Decrypt,security,unpassword,delete password
+
+home.compressPdfs.title=Стиснути
+home.compressPdfs.desc=Стискайте PDF-файли, щоб зменшити їх розмір.
+compressPdfs.tags=squish,small,tiny
+
+
+home.changeMetadata.title=Змінити метадані
+home.changeMetadata.desc=Змінити/видалити/додати метадані з документа PDF
+changeMetadata.tags=Title,author,date,creation,time,publisher,producer,stats
+
+
+home.fileToPDF.title=Конвертувати файл в PDF
+home.fileToPDF.desc=Конвертуйте майже будь-який файл в PDF (DOCX, PNG, XLS, PPT, TXT та інші)
+fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
+
+
+home.ocr.title=OCR/Очищення сканування
+home.ocr.desc=Очищення сканування та виявлення тексту на зображеннях у файлі PDF та повторне додавання його як текст.
+ocr.tags=recognition,text,image,scan,read,identify,detection,editable
+
+
+home.extractImages.title=Витягнути зображення
+home.extractImages.desc=Витягує всі зображення з PDF і зберігає їх у zip
+extractImages.tags=picture,photo,save,archive,zip,capture,grab
+
+home.pdfToPDFA.title=PDF в PDF/A
+home.pdfToPDFA.desc=Перетворення PDF в PDF/A для довготривалого зберігання
+pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
+
+home.PDFToWord.title=PDF в Word
+home.PDFToWord.desc=Перетворення PDF в формати Word (DOC, DOCX та ODT)
+PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
+
+home.PDFToPresentation.title=PDF в презентацію
+home.PDFToPresentation.desc=Перетворення PDF в формати презентацій (PPT, PPTX та ODP)
+PDFToPresentation.tags=slides,show,office,microsoft
+
+home.PDFToText.title=PDF в Text/RTF
+home.PDFToText.desc=Перетворення PDF в текстовий або RTF формат
+PDFToText.tags=richformat,richtextformat,rich text format
+
+home.PDFToHTML.title=PDF в HTML
+home.PDFToHTML.desc=Перетворення PDF в формат HTML
+PDFToHTML.tags=web content,browser friendly
+
+
+home.PDFToXML.title=PDF в XML
+home.PDFToXML.desc=Перетворення PDF в формат XML
+PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
+
+home.ScannerImageSplit.title=Виявлення/розділення відсканованих фотографій
+home.ScannerImageSplit.desc=Розділяє кілька фотографій з фото/PDF
+ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
+
+home.sign.title=Підпис
+home.sign.desc=Додає підпис до PDF за допомогою малюнка, тексту або зображення
+sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
+
+home.flatten.title=Згладжування
+home.flatten.desc=Видалення всіх інтерактивних елементів та форм з PDF
+flatten.tags=static,deactivate,non-interactive,streamline
+
+home.repair.title=Ремонт
+home.repair.desc=Намагається відновити пошкоджений/зламаний PDF
+repair.tags=fix,restore,correction,recover
+
+home.removeBlanks.title=Видалити порожні сторінки
+home.removeBlanks.desc=Виявляє та видаляє порожні сторінки з документа
+removeBlanks.tags=cleanup,streamline,non-content,organize
+
+home.removeAnnotations.title=Видалити анотації
+home.removeAnnotations.desc=Видаляє всі коментарі/анотації з PDF
+removeAnnotations.tags=comments,highlight,notes,markup,remove
+
+home.compare.title=Порівняння
+home.compare.desc=Порівнює та показує різницю між двома PDF-документами
+compare.tags=differentiate,contrast,changes,analysis
+
+home.certSign.title=Підписати сертифікатом
+home.certSign.desc=Підписати PDF сертифікатом/ключем (PEM/P12)
+certSign.tags=authenticate,PEM,P12,official,encrypt
+
+home.pageLayout.title=Об'єднати сторінки
+home.pageLayout.desc=Об'єднання кількох сторінок документа PDF в одну сторінку
+pageLayout.tags=merge,composite,single-view,organize
+
+home.scalePages.title=Змінити розмір/масштаб сторінки
+home.scalePages.desc=Змінити розмір/масштаб сторінки та/або її вмісту.
+scalePages.tags=resize,modify,dimension,adapt
+
+home.pipeline.title=Конвеєр (розширений)
+home.pipeline.desc=Виконуйте кілька дій з PDF-файлами, визначаючи сценарії конвеєрної обробки.
+pipeline.tags=automate,sequence,scripted,batch-process
+
+home.add-page-numbers.title=Додати номера сторінок
+home.add-page-numbers.desc=Додає номера сторінок по всьому документу в заданому місці
+add-page-numbers.tags=paginate,label,organize,index
+
+home.auto-rename.title=Автоматичне перейменування PDF-файлу
+home.auto-rename.desc=Автоматичне перейменування файлу PDF на основі його виявленого заголовку
+auto-rename.tags=auto-detect,header-based,organize,relabel
+
+home.adjust-contrast.title=Налаштування кольорів/контрастності
+home.adjust-contrast.desc=Налаштування контрастності, насиченості та яскравості файлу PDF
+adjust-contrast.tags=color-correction,tune,modify,enhance
+
+home.crop.title=Обрізати PDF-файл
+home.crop.desc=Обрізати PDF-файл, щоб зменшити його розмір (текст залишається!)
+crop.tags=trim,shrink,edit,shape
+
+home.autoSplitPDF.title=Автоматичне розділення сторінок
+home.autoSplitPDF.desc=Автоматичне розділення відсканованого PDF-файлу за допомогою фізичного роздільника відсканованих сторінок QR-коду
+autoSplitPDF.tags=QR-based,separate,scan-segment,organize
+
+home.sanitizePdf.title=Санітарна обробка
+home.sanitizePdf.desc=Видалення скриптів та інших елементів з PDF-файлів
+sanitizePdf.tags=clean,secure,safe,remove-threats
+
+home.URLToPDF.title=URL/сайт у PDF
+home.URLToPDF.desc=Конвертує будь-який http(s)URL у PDF
+URLToPDF.tags=web-capture,save-page,web-to-doc,archive
+
+home.HTMLToPDF.title=HTML у PDF
+home.HTMLToPDF.desc=Конвертує будь-який HTML-файл або zip-файл у PDF.
+HTMLToPDF.tags=markup,web-content,transformation,convert
+
+
+home.MarkdownToPDF.title=Markdown у PDF
+home.MarkdownToPDF.desc=Конвертує будь-який файл Markdown у PDF
+MarkdownToPDF.tags=markup,web-content,transformation,convert
+
+
+home.getPdfInfo.title=Отримати ВСЮ інформацію у форматі PDF
+home.getPdfInfo.desc=Збирає будь-яку можливу інформацію у PDF-файлах.
+getPdfInfo.tags=infomation,data,stats,statistics
+
+
+home.extractPage.title=Видобути сторінку(и)
+home.extractPage.desc=Видобуває обрані сторінки з PDF
+extractPage.tags=extract
+
+
+home.PdfToSinglePage.title=PDF на одну велику сторінку
+home.PdfToSinglePage.desc=Об'єднує всі сторінки PDF в одну велику сторінку.
+PdfToSinglePage.tags=single page
+
+
+home.showJS.title=Показати Javascript
+home.showJS.desc=Шукає та відображає будь-який JS, вбудований у PDF-файл.
+showJS.tags=JS
+
+home.autoRedact.title=Автоматичне редагування
+home.autoRedact.desc=Автоматичне затемнення (чорніння) тексту в PDF на основі вхідного тексту
+autoRedact.tags=Redact,Hide,black out,black,marker,hidden
+
+home.tableExtraxt.title=PDF у CSV
+home.tableExtraxt.desc=Видобуває таблиці з PDF та перетворює їх у CSV
+tableExtraxt.tags=CSV,Table Extraction,extract,convert
+
+
+home.autoSizeSplitPDF.title=Автоматичне розділення за розміром/кількістю
+home.autoSizeSplitPDF.desc=Розділяє один PDF на кілька документів на основі розміру, кількості сторінок або кількості документів
+autoSizeSplitPDF.tags=pdf,split,document,organization
+
+
+home.overlay-pdfs.title=Накладення PDF
+home.overlay-pdfs.desc=Накладення одного PDF поверх іншого PDF
+overlay-pdfs.tags=Overlay
+
+
+home.split-by-sections.title=Розділення PDF за секціями
+home.split-by-sections.desc=Розділення кожної сторінки PDF на менші горизонтальні та вертикальні секції
+split-by-sections.tags=Section Split, Divide, Customize
+
+
+home.AddStampRequest.title=Додати печатку на PDF
+home.AddStampRequest.desc=Додавання текстової або зображення печатки у вказані місця
+AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
+
+
+home.PDFToBook.title=PDF у книгу/комікс
+home.PDFToBook.desc=Конвертує PDF у формат книги/комікса за допомогою calibre
+PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+
+
+home.BookToPDF.title=Книга у PDF
+home.BookToPDF.desc=Конвертує формати книги/комікса у PDF за допомогою calibre
+BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle
+
+###########################
+# #
+# WEB PAGES #
+# #
+###########################
+#login
+login.title=Вхід
+login.header=Вхід
+login.signin=Увійти
+login.rememberme=Запам'ятати мене
+login.invalid=Недійсне ім'я користувача або пароль.
+login.locked=Ваш обліковий запис заблоковано.
+login.signinTitle=Будь ласка, увійдіть
+
+
+#auto-redact
+autoRedact.title=Автоматичне редагування
+autoRedact.header=Автоматичне редагування
+autoRedact.colorLabel=Колір
+autoRedact.textsToRedactLabel=Текст для приховування (кожен рядок окремо)
+autoRedact.textsToRedactPlaceholder=наприклад \nКонфіденційно \nЦілком таємно
+autoRedact.useRegexLabel=Використовувати регулярні вирази
+autoRedact.wholeWordSearchLabel=Пошук цілих слів
+autoRedact.customPaddingLabel=Додаткове заповнення за користувацьким значенням
+autoRedact.convertPDFToImageLabel=Перетворити PDF в зображення PDF (використовується для видалення тексту поза межами)
+autoRedact.submitButton=Надіслати
+
+
+#showJS
+showJS.title=Показати Javascript
+showJS.header=Показати Javascript
+showJS.downloadJS=Завантажити Javascript
+showJS.submit=Показати
+
+
+#pdfToSinglePage
+pdfToSinglePage.title=PDF на одну сторінку
+pdfToSinglePage.header=PDF на одну сторінку
+pdfToSinglePage.submit=Перетворити на одну сторінку
+
+
+#pageExtracter
+pageExtracter.title=Видобути сторінки
+pageExtracter.header=Видобути сторінки
+pageExtracter.submit=Видобути
+pageExtracter.placeholder=(наприклад 1,2,8 або 4,7,12-16 або 2n-1)
+
+
+#getPdfInfo
+getPdfInfo.title=Отримати інформацію в PDF
+getPdfInfo.header=Отримати інформацію в PDF
+getPdfInfo.submit=Отримати інформацію
+getPdfInfo.downloadJson=Завантажити JSON
+
+
+#markdown-to-pdf
+MarkdownToPDF.title=Markdown у PDF
+MarkdownToPDF.header=Markdown у PDF
+MarkdownToPDF.submit=Конвертувати
+MarkdownToPDF.help=Робота в процесі
+MarkdownToPDF.credit=Використовує WeasyPrint
+
+
+
+#url-to-pdf
+URLToPDF.title=URL у PDF
+URLToPDF.header=URL у PDF
+URLToPDF.submit=Конвертувати
+URLToPDF.credit=Використовує WeasyPrint
+
+
+#html-to-pdf
+HTMLToPDF.title=HTML у PDF
+HTMLToPDF.header=HTML у PDF
+HTMLToPDF.help=Приймає файли HTML та ZIP-файли, що містять html/css/зображення тощо.
+HTMLToPDF.submit=Конвертувати
+HTMLToPDF.credit=Використовує WeasyPrint
+HTMLToPDF.zoom=Рівень масштабування для відображення веб-сайту.
+HTMLToPDF.pageWidth=Ширина сторінки в сантиметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.pageHeight=Висота сторінки в сантиметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.marginTop=Верхній відступ сторінки в міліметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.marginBottom=Нижній відступ сторінки в міліметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.marginLeft=Лівий відступ сторінки в міліметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.marginRight=Правий відступ сторінки в міліметрах. (Порожньо - за замовчуванням)
+HTMLToPDF.printBackground=Відтворити фон веб-сайтів.
+HTMLToPDF.defaultHeader=Включити заголовок за замовчуванням (Ім'я та номер сторінки)
+HTMLToPDF.cssMediaType=Змінити тип медіа CSS сторінки.
+HTMLToPDF.none=Немає
+HTMLToPDF.print=Друк
+HTMLToPDF.screen=Екран
+
+
+#AddStampRequest
+AddStampRequest.header=Поставити печатку на PDF
+AddStampRequest.title=Поставити печатку на PDF
+AddStampRequest.stampType=Тип печатки
+AddStampRequest.stampText=Текст печатки
+AddStampRequest.stampImage=Зображення печатки
+AddStampRequest.alphabet=Алфавіт
+AddStampRequest.fontSize=Розмір шрифту/зображення
+AddStampRequest.rotation=Обертання
+AddStampRequest.opacity=Прозорість
+AddStampRequest.position=Позиція
+AddStampRequest.overrideX=Перевизначити координату X
+AddStampRequest.overrideY=Перевизначити координату Y
+AddStampRequest.customMargin=Користувацький відступ
+AddStampRequest.customColor=Користувацький колір тексту
+AddStampRequest.submit=Надіслати
+
+
+#sanitizePDF
+sanitizePDF.title=Дезінфекція PDF
+sanitizePDF.header=Дезінфекція PDF файлу
+sanitizePDF.selectText.1=Видалити JavaScript
+sanitizePDF.selectText.2=Видалити вбудовані файли
+sanitizePDF.selectText.3=Видалити метадані
+sanitizePDF.selectText.4=Видалити посилання
+sanitizePDF.selectText.5=Видалити шрифти
+sanitizePDF.submit=Дезінфекція
+
+
+#addPageNumbers
+addPageNumbers.title=Додати номери сторінок
+addPageNumbers.header=Додати номери сторінок
+addPageNumbers.selectText.1=Виберіть PDF-файл:
+addPageNumbers.selectText.2=Розмір поля
+addPageNumbers.selectText.3=Позиція
+addPageNumbers.selectText.4=Стартовий номер
+addPageNumbers.selectText.5=Сторінки для нумерації
+addPageNumbers.selectText.6=Свій текст
+addPageNumbers.customTextDesc=Користувацький текст
+addPageNumbers.numberPagesDesc=Які сторінки нумерувати, за замовчуванням 'всі', також приймає 1-5 або 2,5,9 тощо.
+addPageNumbers.customNumberDesc=За замовчуванням {n}, також можна використовувати 'Сторінка {n} з {total}', 'Текст-{n}', '{filename}-{n}'
+addPageNumbers.submit=Додати номери сторінок
+
+
+#auto-rename
+auto-rename.title=Автоматичне перейменування
+auto-rename.header=Автоматичне перейменування PDF
+auto-rename.submit=Автоматичне перейменування
+
+
+#adjustContrast
+adjustContrast.title=Налаштування контрастності
+adjustContrast.header=Налаштування контрастності
+adjustContrast.contrast=Контраст:
+adjustContrast.brightness=Яскравість:
+adjustContrast.saturation=Насиченість:
+adjustContrast.download=Завантажити
+
+
+#crop
+crop.title=Обрізати
+crop.header=Обрізати зображення
+crop.submit=Надіслати
+
+
+#autoSplitPDF
+autoSplitPDF.title=Автоматичне розділення PDF
+autoSplitPDF.header=Автоматичне розділення PDF
+autoSplitPDF.description=Друк, вставка, сканування, завантаження і дозвольте нам автоматично розділити ваші документи. Не потребує ручного сортування.
+autoSplitPDF.selectText.1=Друк кількох окремих аркушів (підійде чорно-білий варіант).
+autoSplitPDF.selectText.2=Скануйте всі документи одночасно, вставляючи між ними роздільний аркуш.
+autoSplitPDF.selectText.3=Завантажте один великий відсканований PDF-файл, і нехай Stirling PDF зробить все інше.
+autoSplitPDF.selectText.4=Роздільні сторінки автоматично виявляються і видаляються, забезпечуючи акуратний кінцевий документ.
+autoSplitPDF.formPrompt=Надіслати PDF-файл, що містить роздільні сторінки Stirling-PDF:
+autoSplitPDF.duplexMode=Дуплексний режим (сканування спереду і ззаду)
+autoSplitPDF.dividerDownload1=Завантажити 'Auto Splitter Divider (minimal).pdf'
+autoSplitPDF.dividerDownload2=Завантажити 'Auto Splitter Divider (with instructions).pdf'
+autoSplitPDF.submit=Надіслати
+
+
+#pipeline
+pipeline.title=Пайплайн
+
+
+#pageLayout
+pageLayout.title=Многосторінковий макет
+pageLayout.header=Многосторінковий макет
+pageLayout.pagesPerSheet=Сторінок на одному аркуші:
+pageLayout.addBorder=Додати рамки
+pageLayout.submit=Відправити
+
+#scalePages
+scalePages.title=Відрегулювати масштаб сторінки
+scalePages.header=Відрегулювати масштаб сторінки
+scalePages.pageSize=Розмір сторінки документа.
+scalePages.scaleFactor=Рівень масштабування (обрізки) сторінки.
+scalePages.submit=Відправити
+
+
+#certSign
+certSign.title=Підпис сертифікатом
+certSign.header=Підпишіть PDF своїм сертифікатом (робота в процесі)
+certSign.selectPDF=Виберіть файл PDF для підпису:
+certSign.jksNote=Примітка: Якщо ваш тип сертифіката не зазначений нижче, будь ласка, конвертуйте його в файл сховища Java Keystore (.jks), використовуючи утиліту командного рядка keytool. Потім виберіть опцію файлу .jks нижче.
+certSign.selectKey=Виберіть файл закритого ключа (формат PKCS#8, може бути .pem або .der):
+certSign.selectCert=Виберіть файл сертифіката (формат X.509, може бути .pem або .der):
+certSign.selectP12=Виберіть файл сховища ключів PKCS#12 (.p12 або .pfx) (необов'язково, якщо він наданий, він повинен містити ваш закритий ключ і сертифікат):
+certSign.selectJKS=Виберіть файл сховища Java Keystore (.jks або .keystore):
+certSign.certType=Тип сертифіката
+certSign.password=Введіть пароль до сховища ключів або особистого ключа (якщо є):
+certSign.showSig=Показати підпис
+certSign.reason=Причина
+certSign.location=Місцезнаходження
+certSign.name=Ім'я
+certSign.submit=Підписати PDF
+
+
+#removeBlanks
+removeBlanks.title=Видалити порожні
+removeBlanks.header=Видалити порожні сторінки
+removeBlanks.threshold=Поріг:
+removeBlanks.thresholdDesc=Поріг для визначення того, наскільки білим має бути білий піксель
+removeBlanks.whitePercent=Відсоток білого (%):
+removeBlanks.whitePercentDesc=Загальний відсоток білого на сторінці, для видалення
+removeBlanks.submit=Видалити порожні
+
+
+#removeAnnotations
+removeAnnotations.title=Видалити анотації
+removeAnnotations.header=Видалити анотації
+removeAnnotations.submit=Видалити
+
+
+#compare
+compare.title=Порівняння
+compare.header=Порівняння PDF
+compare.document.1=Документ 1
+compare.document.2=Документ 2
+compare.submit=Порівняти
+
+#BookToPDF
+BookToPDF.title=Книги та комікси в PDF
+BookToPDF.header=Конвертувати книгу в PDF
+BookToPDF.credit=Використовується Calibre
+BookToPDF.submit=Конвертувати
+
+#PDFToBook
+PDFToBook.title=PDF в книгу
+PDFToBook.header=PDF в книгу
+PDFToBook.selectText.1=Формат
+PDFToBook.credit=Використовується Calibre
+PDFToBook.submit=Конвертувати
+
+#sign
+sign.title=Підпис
+sign.header=Підписати PDF
+sign.upload=Завантажити зображення
+sign.draw=Намалювати підпис
+sign.text=Ввід тексту
+sign.clear=Очистити
+sign.add=Додати
+
+
+#repair
+repair.title=Ремонт
+repair.header=Ремонт PDF
+repair.submit=Ремонтувати
+
+
+#flatten
+flatten.title=Згладжування
+flatten.header=Згладжування PDF
+flatten.submit=Згладити
+
+
+#ScannerImageSplit
+ScannerImageSplit.selectText.1=Пороговий кут:
+ScannerImageSplit.selectText.2=Встановлює мінімальний абсолютний кут, необхідний для повороту зображення (за замовчуванням: 10).
+ScannerImageSplit.selectText.3=Толерантність:
+ScannerImageSplit.selectText.4=Визначає діапазон зміни кольору навколо передбачуваного кольору фону (за замовчуванням: 30).
+ScannerImageSplit.selectText.5=Мінімальна площа:
+ScannerImageSplit.selectText.6=Встановлює мінімальний поріг площі для фотографії (за замовчуванням: 10000).
+ScannerImageSplit.selectText.7=Мінімальна площа контуру:
+ScannerImageSplit.selectText.8=Встановлює мінімальний поріг площі контуру для фотографії
+ScannerImageSplit.selectText.9=Розмір рамки:
+ScannerImageSplit.selectText.10=Встановлює розмір додаваної та видаляної рамки, щоб запобігти появі білих рамок на виході (за замовчуванням: 1).
+
+
+#OCR
+ocr.title=OCR/Очищення сканування
+ocr.header=Очищення сканування / OCR (Optical Character Recognition) Розпізнавання тексту
+ocr.selectText.1=Виберіть мови, які повинні бути виявлені у PDF-файлі (перелічені ті, які виявлені на даний момент):
+ocr.selectText.2=Створіть текстовий файл, що містить текст OCR, разом із PDF-файлом, обробленим OCR.
+ocr.selectText.3=Правильні сторінки були відскановані під перекошеним кутом шляхом повороту їх на місце
+ocr.selectText.4=Очистіть сторінку, щоб зменшити шанси, що OCR знайде текст на фоновому шумі. (без зміни виходу)
+ocr.selectText.5=Очистіть сторінку, щоб зменшити шанси, що OCR знайде текст на фоновому шумі, підтримує очищення виводу.
+ocr.selectText.6=Ігнорує сторінки з інтерактивним текстом, розпізнає лише сторінки з зображеннями
+ocr.selectText.7=Примусове розпізнавання символів, буде розпізнавати кожну сторінку, видаляючи всі елементи початкового тексту
+ocr.selectText.8=Звичайний (буде помилка, якщо PDF містить текст)
+ocr.selectText.9=Додаткові налаштування
+ocr.selectText.10=Режим OCR
+ocr.selectText.11=Видалити зображення після OCR (видаляє ВСІ зображення, корисно лише в тому випадку, якщо вони є частиною етапу перетворення)
+ocr.selectText.12=Тип рендеру (розширений)
+ocr.help=Прочитайте цю документацію про те, як використовувати це для інших мов і/або використовувати не в докері.
+ocr.credit=Цей сервіс використовує OCRmyPDF та Tesseract для OCR.
+ocr.submit=Обробка PDF з OCR
+
+
+#extractImages
+extractImages.title=Витягнути зображення
+extractImages.header=Витягнути зображення
+extractImages.selectText=Виберіть формат зображення для перетворення витягнутих зображень у
+extractImages.submit=Витягнути
+
+
+#File to PDF
+fileToPDF.title=Файл у PDF
+fileToPDF.header=Конвертувати будь-який файл у PDF
+fileToPDF.credit=Цей сервіс використовує LibreOffice та Unoconv для перетворення файлів.
+fileToPDF.supportedFileTypes=Підтримувані типи файлів повинні включати нижченаведені, однак повний оновлений список підтримуваних форматів дивіться у документації LibreOffice.
+fileToPDF.submit=Перетворити у PDF
+
+
+#compress
+compress.title=Стиснути
+compress.header=Стиснути PDF
+compress.credit=Ця служба використовує Ghostscript для стиснення/оптимізації PDF.
+compress.selectText.1=Ручний режим - від 1 до 4
+compress.selectText.2=Рівень оптимізації:
+compress.selectText.3=4 (Жахливо для текстових зображень)
+compress.selectText.4=Автоматичний режим - автоматично налаштовує якість для отримання PDF точного розміру
+compress.selectText.5=Очікуваний розмір PDF (наприклад, 25 МБ, 10,8 МБ, 25 КБ)
+compress.submit=Стиснути
+
+
+#Add image
+addImage.title=Додати зображення
+addImage.header=Додати зображення в PDF
+addImage.everyPage=Кожна сторінка?
+addImage.upload=Додати зображення
+addImage.submit=Додати зображення
+
+
+#merge
+merge.title=Об'єднати
+merge.header=Об'єднання кількох PDF-файлів (2+)
+merge.sortByName=Сортування за ім'ям
+merge.sortByDate=Сортування за датою
+merge.submit=Об'єднати
+
+
+#pdfOrganiser
+pdfOrganiser.title=Організатор сторінок
+pdfOrganiser.header=Організатор PDF-сторінок
+pdfOrganiser.submit=Переупорядкувати сторінки
+pdfOrganiser.mode=Режим
+pdfOrganiser.mode.1=Користувацький порядок сторінок
+pdfOrganiser.mode.2=Зворотній порядок
+pdfOrganiser.mode.3=Сортування дуплексом
+pdfOrganiser.mode.4=Сортування брошурою
+pdfOrganiser.mode.5=Сортування брошурою зі степлером з боку
+pdfOrganiser.mode.6=Розділення на парні та непарні сторінки
+pdfOrganiser.mode.7=Видалити першу
+pdfOrganiser.mode.8=Видалити останню
+pdfOrganiser.mode.9=Видалити першу та останню
+pdfOrganiser.placeholder=(наприклад, 1,3,2 або 4-8,2,10-12 або 2n-1)
+
+
+#multiTool
+multiTool.title=Мультіінструмент PDF
+multiTool.header=Мультіінструмент PDF
+multiTool.uploadPrompts=Будь ласка, завантажте PDF
+
+#view pdf
+viewPdf.title=Переглянути PDF
+viewPdf.header=Переглянути PDF
+
+#pageRemover
+pageRemover.title=Видалення сторінок
+pageRemover.header=Видалення сторінок PDF
+pageRemover.pagesToDelete=Сторінки для видалення (введіть список номерів сторінок через кому):
+pageRemover.submit=Видалити сторінки
+pageRemover.placeholder=(наприклад, 1,2,6 або 1-10,15-30)
+
+
+#rotate
+rotate.title=Повернути PDF
+rotate.header=Повернути PDF
+rotate.selectAngle=Виберіть кут повороту (кратний 90 градусам):
+rotate.submit=Повернути
+
+
+#split-pdfs
+split.title=Розділити PDF
+split.header=Розділити PDF
+split.desc.1=Числа, які ви вибрали, це номери сторінок, на яких ви хочете зробити розділ.
+split.desc.2=Таким чином, вибір 1,3,7-8 розділить 10-сторінковий документ на 6 окремих PDF-файлів з:
+split.desc.3=Документ #1: Сторінка 1
+split.desc.4=Документ #2: Сторінки 2 і 3
+split.desc.5=Документ #3: Сторінки 4, 5 і 6
+split.desc.6=Документ #4: Сторінка 7
+split.desc.7=Документ #5: Сторінка 8
+split.desc.8=Документ #6: Сторінки 9 і 10
+split.splitPages=Введіть сторінки для розділення:
+split.submit=Розділити
+
+
+#merge
+imageToPDF.title=Зображення в PDF
+imageToPDF.header=Зображення в PDF
+imageToPDF.submit=Конвертувати
+imageToPDF.selectLabel=Виберіть режим відображення зображення
+imageToPDF.fillPage=Заповнення сторінки
+imageToPDF.fitDocumentToImage=Підігнати документ під зображення
+imageToPDF.maintainAspectRatio=Зберегти пропорції
+imageToPDF.selectText.2=Автоматичний поворот PDF
+imageToPDF.selectText.3=Логіка для кількох файлів (активується лише при роботі з декількома зображеннями)
+imageToPDF.selectText.4=Об'єднати в один PDF
+imageToPDF.selectText.5=Перетворення в окремі PDF-файли
+
+
+#pdfToImage
+pdfToImage.title=PDF в зображення
+pdfToImage.header=PDF в зображення
+pdfToImage.selectText=Формат зображення
+pdfToImage.singleOrMultiple=Тип результату зображення
+pdfToImage.single=Одне велике зображення
+pdfToImage.multi=Декілька зображень
+pdfToImage.colorType=Тип кольору
+pdfToImage.color=Колір
+pdfToImage.grey=Відтінки сірого
+pdfToImage.blackwhite=Чорно-білий (може втратити дані!)
+pdfToImage.submit=Конвертувати
+
+
+#addPassword
+addPassword.title=Додати пароль
+addPassword.header=Додати пароль (зашифрувати)
+addPassword.selectText.1=Оберіть PDF для шифрування
+addPassword.selectText.2=Пароль
+addPassword.selectText.3=Довжина ключа шифрування
+addPassword.selectText.4=Вищі значення сильніші, але нижчі значення мають кращу сумісність.
+addPassword.selectText.5=Дозволи на встановлення
+addPassword.selectText.6=Запобігти збірці документа
+addPassword.selectText.7=Запобігти вилученню контенту
+addPassword.selectText.8=Запобігти вилученню для доступності
+addPassword.selectText.9=Заборонити заповнення форм
+addPassword.selectText.10=Запобігти модифікації
+addPassword.selectText.11=Заборонити модифікацію анотацій
+addPassword.selectText.12=Заборонити друк
+addPassword.selectText.13=Заборонити друк різних форматів
+addPassword.selectText.14=Власницький пароль
+addPassword.selectText.15=Обмежує, що можна робити з документом після його відкриття (не підтримується всіма програмами читання)
+addPassword.selectText.16=Обмежує відкриття самого документа
+addPassword.submit=Шифрувати
+
+
+#watermark
+watermark.title=Додати водяний знак
+watermark.header=Додати водяний знак
+watermark.selectText.1=Виберіть PDF, щоб додати водяний знак:
+watermark.selectText.2=Текст водяного знаку:
+watermark.selectText.3=Розмір шрифту:
+watermark.selectText.4=Обертання (0-360):
+watermark.selectText.5=widthSpacer (проміжок між кожним водяним знаком по горизонталі):
+watermark.selectText.6=heightSpacer (проміжок між кожним водяним знаком по вертикалі):
+watermark.selectText.7=Непрозорість (0% - 100%):
+watermark.selectText.8=Тип водяного знаку:
+watermark.selectText.9=Зображення водяного знаку:
+watermark.submit=Додати водяний знак
+watermark.type.1=Текст
+watermark.type.2=Зображення
+
+
+#Change permissions
+permissions.title=Змінити дозволи
+permissions.header=Змінити дозволи
+permissions.warning=Попередження про те, що ці дозволи не можна змінити, рекомендується встановити їх за допомогою пароля на сторінці додавання пароля.
+permissions.selectText.1=Виберіть PDF, щоб змінити дозволи
+permissions.selectText.2=Дозволи на встановлення
+permissions.selectText.3=Запобігти збірці документа
+permissions.selectText.4=Запобігти вилученню контенту
+permissions.selectText.5=Запобігти вилученню для доступності
+permissions.selectText.6=Заборонити заповнення форм
+permissions.selectText.7=Запобігти модифікації
+permissions.selectText.8=Заборонити модифікацію анотацій
+permissions.selectText.9=Заборонити друк
+permissions.selectText.10=Заборонити друк різних форматів
+permissions.submit=Змінити
+
+
+#remove password
+removePassword.title=Видалити пароль
+removePassword.header=Видалити пароль (Розшифрувати)
+removePassword.selectText.1=Виберіть PDF для розшифрування
+removePassword.selectText.2=Пароль
+removePassword.submit=Видалити
+
+
+#changeMetadata
+changeMetadata.title=Заголовок:
+changeMetadata.header=Змінити метадані
+changeMetadata.selectText.1=Будь ласка, відредагуйте змінні, які ви хочете змінити
+changeMetadata.selectText.2=Видалити всі метадані
+changeMetadata.selectText.3=Показати користувацькі метадані:
+changeMetadata.author=Автор:
+changeMetadata.creationDate=Дата створення (yyyy/MM/dd HH:mm:ss):
+changeMetadata.creator=Створювач:
+changeMetadata.keywords=Ключові слова:
+changeMetadata.modDate=Дата зміни (yyyy/MM/dd HH:mm:ss):
+changeMetadata.producer=Виробник:
+changeMetadata.subject=Тема:
+changeMetadata.trapped=Пастка:
+changeMetadata.selectText.4=Інші метадані:
+changeMetadata.selectText.5=Додати користувацький запис метаданих
+changeMetadata.submit=Змінити
+
+
+#pdfToPDFA
+pdfToPDFA.title=PDF в PDF/A
+pdfToPDFA.header=PDF в PDF/A
+pdfToPDFA.credit=Цей сервіс використовує OCRmyPDF для перетворення у формат PDF/A
+pdfToPDFA.submit=Конвертувати
+pdfToPDFA.tip=Наразі не працює для кількох вхідних файлів одночасно
+
+
+#PDFToWord
+PDFToWord.title=PDF в Word
+PDFToWord.header=PDF в Word
+PDFToWord.selectText.1=Формат вихідного файлу
+PDFToWord.credit=Цей сервіс використовує LibreOffice для перетворення файлів.
+PDFToWord.submit=Конвертувати
+
+
+#PDFToPresentation
+PDFToPresentation.title=PDF в Презентацію
+PDFToPresentation.header=PDF в Презентацію
+PDFToPresentation.selectText.1=Формат вихідного файлу
+PDFToPresentation.credit=Цей сервіс використовує LibreOffice для перетворення файлів.
+PDFToPresentation.submit=Конвертувати
+
+
+#PDFToText
+PDFToText.title=PDF в Text/RTF
+PDFToText.header=PDF в Text/RTF
+PDFToText.selectText.1=Формат вихідного файлу
+PDFToText.credit=Цей сервіс використовує LibreOffice для перетворення файлів.
+PDFToText.submit=Конвертувати
+
+
+#PDFToHTML
+PDFToHTML.title=PDF в HTML
+PDFToHTML.header=PDF в HTML
+PDFToHTML.credit=Цей сервіс використовує pdftohtml для перетворення файлів.
+PDFToHTML.submit=Конвертувати
+
+
+#PDFToXML
+PDFToXML.title=PDF в XML
+PDFToXML.header=PDF в XML
+PDFToXML.credit=Цей сервіс використовує LibreOffice для перетворення файлів.
+PDFToXML.submit=Конвертувати
+
+#PDFToCSV
+PDFToCSV.title=PDF в CSV
+PDFToCSV.header=PDF в CSV
+PDFToCSV.prompt=Виберіть сторінку для витягу таблиці
+PDFToCSV.submit=Конвертувати
+
+#split-by-size-or-count
+split-by-size-or-count.title=Розділити PDF за розміром або кількістю
+split-by-size-or-count.header=Розділити PDF за розміром або кількістю
+split-by-size-or-count.type.label=Виберіть тип розділення
+split-by-size-or-count.type.size=За розміром
+split-by-size-or-count.type.pageCount=За кількістю сторінок
+split-by-size-or-count.type.docCount=За кількістю документів
+split-by-size-or-count.value.label=Введіть значення
+split-by-size-or-count.value.placeholder=Введіть розмір (наприклад, 2MB або 3KB) або кількість (наприклад, 5)
+split-by-size-or-count.submit=Надіслати
+
+
+#overlay-pdfs
+overlay-pdfs.header=Накладення файлів PDF
+overlay-pdfs.baseFile.label=Виберіть основний файл PDF
+overlay-pdfs.overlayFiles.label=Виберіть файл(и) для накладення
+overlay-pdfs.mode.label=Виберіть режим накладення
+overlay-pdfs.mode.sequential=Послідовне накладення
+overlay-pdfs.mode.interleaved=Перехресне накладення
+overlay-pdfs.mode.fixedRepeat=Накладення з фіксованим повторенням
+overlay-pdfs.counts.label=Кількість накладень (для режиму з фіксованим повторенням)
+overlay-pdfs.counts.placeholder=Введіть через кому кількість повторень (наприклад, 2,3,1)
+overlay-pdfs.position.label=Виберіть позицію накладення
+overlay-pdfs.position.foreground=Над основним
+overlay-pdfs.position.background=За основним
+overlay-pdfs.submit=Надіслати
+
+
+#split-by-sections
+split-by-sections.title=Розділити PDF за розділами
+split-by-sections.header=Розділити PDF на секції
+split-by-sections.horizontal.label=Горизонтальні розділи
+split-by-sections.vertical.label=Вертикальні розділи
+split-by-sections.horizontal.placeholder=Введіть кількість горизонтальних розділів
+split-by-sections.vertical.placeholder=Введіть кількість вертикальних розділів
+split-by-sections.submit=Розділити PDF
+split-by-sections.merge=Об'єднати в один PDF
+
+#licenses
+licenses.nav=Ліцензії
+licenses.title=Ліцензії від третіх сторін
+licenses.header=Ліцензії від третіх сторін
+licenses.module=Модуль
+licenses.version=Версія
+licenses.license=Ліцензія
+
+
+# error
+error.sorry=Вибачте за незручності!
+error.needHelp=Потрібна допомога / Знайшли проблему?
+error.contactTip=Якщо у вас досі виникають проблеми, не соромтеся звертатися до нас за допомогою. Ви можете надіслати запит на нашій сторінці GitHub або зв'язатися з нами через Discord:
+error.404.head=404 - Сторінку не знайдено | Ой, ми заплуталися в коді!
+error.404.1=Ми не можемо знайти сторінку, яку ви шукаєте.
+error.404.2=Щось пішло не так
+error.github=Надіслати запит на GitHub
+error.showStack=Показати стек викликів
+error.copyStack=Скопіювати стек викликів
+error.githubSubmit=GitHub - Надіслати запит
+error.discordSubmit=Discord - Надіслати повідомлення підтримки
+
diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties
index 6cd6f757..c3fee992 100644
--- a/src/main/resources/messages_zh_CN.properties
+++ b/src/main/resources/messages_zh_CN.properties
@@ -66,6 +66,7 @@ seeDockerHub=查看Docker Hub
visitGithub=访问Github仓库
donate=捐款
color=颜色
+sponsor=赞助
@@ -806,14 +807,14 @@ rotate.selectAngle=选择旋转角度(以90度的倍数):
rotate.submit=旋转
-#merge
+#split-pdfs
split.title=拆分PDF
split.header=拆分PDF
split.desc.1=选择希望进行分割的页数
-split.desc.2=如选择1,3,7-8将把一个10页的文件分割成6个独立的PDF:
+split.desc.2=如选择1,3,7-9将把一个10页的文件分割成6个独立的PDF:
split.desc.3=文档 #1:第1页
split.desc.4=文档 #2:第2页和第3页
-split.desc.5=文档 #3:第4页、第5页和第6页
+split.desc.5=文档 #3:第4页、第5页、第6页和第7页
split.desc.6=文档 #4:第7页
split.desc.7=文档 #5:第8页
split.desc.8=文档 #6:第9页和第10页
diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties
index d083e423..db9a3c78 100644
--- a/src/main/resources/messages_zh_TW.properties
+++ b/src/main/resources/messages_zh_TW.properties
@@ -57,15 +57,16 @@ usernameExistsMessage=新使用者名稱已存在。
invalidUsernameMessage=使用者名無效,使用者名只能包含字母字元和數位。
deleteCurrentUserMessage=無法刪除目前登錄的使用者。
deleteUsernameExistsMessage=使用者名不存在,無法刪除。
-error=Error
-oops=Oops!
-help=Help
-goHomepage=Go to Homepage
-joinDiscord=Join our Discord server
-seeDockerHub=See Docker Hub
-visitGithub=Visit Github Repository
-donate=Donate
-color=Color
+error=錯誤
+oops=哎呀!
+help=幫助
+goHomepage=前往首頁
+joinDiscord=加入我們的Discord服務器
+seeDockerHub=查看Docker Hub
+visitGithub=訪問Github存儲庫
+donate=捐贈
+color=顏色
+sponsor=贊助
@@ -806,17 +807,17 @@ rotate.selectAngle=選擇旋轉角度(以 90 度的倍數):
rotate.submit=旋轉
-#merge
+#split-pdfs
split.title=分割 PDF
split.header=分割 PDF
split.desc.1=您選擇的數字是您希望進行分割的頁碼
-split.desc.2=因此,選擇 1,3,7-8 將會將一個 10 頁的文件分割為 6 個單獨的 PDF,包括:
+split.desc.2=因此,選擇 1,3,7-9 將會將一個 10 頁的文件分割為 6 個單獨的 PDF,包括:
split.desc.3=文件 #1:頁面 1
split.desc.4=文件 #2:頁面 2 和 3
-split.desc.5=文件 #3:頁面 4、5 和 6
-split.desc.6=文件 #4:頁面 7
-split.desc.7=文件 #5:頁面 8
-split.desc.8=文件 #6:頁面 9 和 10
+split.desc.5=文件 #3:頁面 4、5、6 和 7
+split.desc.6=文件 #4:頁面 8
+split.desc.7=文件 #5:頁面 9
+split.desc.8=文件 #6:頁面 10
split.splitPages=輸入要分割的頁面:
split.submit=分割
@@ -1031,15 +1032,15 @@ licenses.license=許可證
# error
-error.sorry=Sorry for the issue!
-error.needHelp=Need help / Found an issue?
-error.contactTip=If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:
-error.404.head=404 - Page Not Found | Oops, we tripped in the code!
-error.404.1=We can't seem to find the page you're looking for.
-error.404.2=Something went wrong
-error.github=Submit a ticket on GitHub
-error.showStack=Show Stack Trace
-error.copyStack=Copy Stack Trace
-error.githubSubmit=GitHub - Submit a ticket
-error.discordSubmit=Discord - Submit Support post
+error.sorry=對於這個問題,我們感到抱歉!
+error.needHelp=需要幫助/發現了一個問題?
+error.contactTip=如果你仍然遇到問題,請不要猶豫,隨時向我們尋求幫助。你可以在我們的GitHub頁面提交工單,或通過Discord與我們聯繋:
+error.404.head=404 - 找不到頁面 | 哎呀,我們在代碼中走錯了路!
+error.404.1=我們好像找不到你正在尋找的頁面。
+error.404.2=出了點錯誤
+error.github=在GitHub上提交工單
+error.showStack=顯示堆疊追蹤
+error.copyStack=複製堆疊追蹤
+error.githubSubmit=GitHub - 提交工單
+error.discordSubmit=Discord - 提交支援帖子
diff --git a/src/main/resources/static/images/flags/ua.svg b/src/main/resources/static/images/flags/ua.svg
new file mode 100644
index 00000000..a339eb1b
--- /dev/null
+++ b/src/main/resources/static/images/flags/ua.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/main/resources/templates/fragments/languages.html b/src/main/resources/templates/fragments/languages.html
index bb8c0071..57f00e8e 100644
--- a/src/main/resources/templates/fragments/languages.html
+++ b/src/main/resources/templates/fragments/languages.html
@@ -26,4 +26,5 @@
Hungarian हिन्दी Srpski
+ Українська
diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html
index 926f494d..c2a8ec26 100644
--- a/src/main/resources/templates/fragments/navbar.html
+++ b/src/main/resources/templates/fragments/navbar.html
@@ -192,7 +192,7 @@