From 560936e182575c824ae3783103659ae206abc80f Mon Sep 17 00:00:00 2001 From: Ludy Date: Tue, 23 Jul 2024 17:57:21 +0200 Subject: [PATCH 01/50] remove new lines and obsolete spaces (#1585) --- src/main/resources/messages_ar_AR.properties | 1 - src/main/resources/messages_bg_BG.properties | 1 - src/main/resources/messages_ca_CA.properties | 1 - src/main/resources/messages_cs_CZ.properties | 1 - src/main/resources/messages_de_DE.properties | 1 - src/main/resources/messages_el_GR.properties | 1 - src/main/resources/messages_en_GB.properties | 9 ++++----- src/main/resources/messages_en_US.properties | 5 ++--- src/main/resources/messages_es_ES.properties | 1 - src/main/resources/messages_eu_ES.properties | 1 - src/main/resources/messages_fr_FR.properties | 1 - src/main/resources/messages_hi_IN.properties | 1 - src/main/resources/messages_hr_HR.properties | 1 - src/main/resources/messages_hu_HU.properties | 1 - src/main/resources/messages_id_ID.properties | 1 - src/main/resources/messages_it_IT.properties | 1 - src/main/resources/messages_ja_JP.properties | 1 - src/main/resources/messages_ko_KR.properties | 1 - src/main/resources/messages_nl_NL.properties | 1 - src/main/resources/messages_no_NB.properties | 1 - src/main/resources/messages_pl_PL.properties | 1 - src/main/resources/messages_pt_BR.properties | 1 - src/main/resources/messages_pt_PT.properties | 1 - src/main/resources/messages_ro_RO.properties | 1 - src/main/resources/messages_ru_RU.properties | 1 - src/main/resources/messages_sk_SK.properties | 1 - src/main/resources/messages_sr_LATN_RS.properties | 1 - src/main/resources/messages_sv_SE.properties | 1 - src/main/resources/messages_th_TH.properties | 5 ++--- src/main/resources/messages_tr_TR.properties | 5 ++--- src/main/resources/messages_uk_UA.properties | 1 - src/main/resources/messages_zh_CN.properties | 1 - src/main/resources/messages_zh_TW.properties | 1 - 33 files changed, 10 insertions(+), 43 deletions(-) diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index f97377d81c0..30fb5715b57 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 0895f5f997d..2207379ca48 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -1124,4 +1124,3 @@ error.showStack=Покажи проследяване на стека error.copyStack=Копиране на проследяване на стека error.githubSubmit=GitHub - Изпратете запитване error.discordSubmit=Discord - Изпратете запитване за поддръжка - diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 4a37930dbfd..f641fa52669 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index 36634d3ab6a..7f274dbb05c 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -1124,4 +1124,3 @@ error.showStack=Zobrazit stopu zásobníku error.copyStack=Kopírovat stopu zásobníku error.githubSubmit=GitHub - Odeslat požadavek error.discordSubmit=Discord - Odeslat příspěvek podpory - diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index b135d5101d9..decbd9b0ccd 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -1124,4 +1124,3 @@ 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 7db7e27428a..6f32362d2f9 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -1124,4 +1124,3 @@ 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 7add06f62aa..79067b5489b 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -140,7 +140,7 @@ settings.cacheInputs.help=Enable to store previously used inputs for future runs changeCreds.title=Change Credentials changeCreds.header=Update Your Account Details -changeCreds.changePassword=You are using default login credentials. Please enter a new password +changeCreds.changePassword=You are using default login credentials. Please enter a new password changeCreds.newUsername=New Username changeCreds.oldPassword=Current Password changeCreds.newPassword=New Password @@ -706,8 +706,8 @@ removeAnnotations.submit=Remove #compare compare.title=Compare compare.header=Compare PDFs -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Highlight Color 1: +compare.highlightColor.2=Highlight Color 2: compare.document.1=Document 1 compare.document.2=Document 2 compare.submit=Compare @@ -744,7 +744,7 @@ repair.submit=Repair #flatten flatten.title=Flatten flatten.header=Flatten PDF -flatten.flattenOnlyForms=Flatten only forms +flatten.flattenOnlyForms=Flatten only forms flatten.submit=Flatten @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 5f20e450c60..1f38bf8c016 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -706,8 +706,8 @@ removeAnnotations.submit=Remove #compare compare.title=Compare compare.header=Compare PDFs -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Highlight Color 1: +compare.highlightColor.2=Highlight Color 2: compare.document.1=Document 1 compare.document.2=Document 2 compare.submit=Compare @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index daf1172fcb3..38c8f9158d7 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -1124,4 +1124,3 @@ error.showStack=Mostrar seguimiento de pila error.copyStack=Mostrar seguimiento de pila error.githubSubmit=GitHub - Enviar un ticket error.discordSubmit=Discord - Enviar mensaje de soporte - diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 29dcc44b45d..65dff466697 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 62731ae6b5b..d7bae3ea089 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -1124,4 +1124,3 @@ 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 000e2779167..4938f49a10b 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index 9901e13f8a0..c50613d699f 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -1124,4 +1124,3 @@ error.showStack=Prikaži Stack Trace error.copyStack=Kopiraj Stack Trace error.githubSubmit=GitHub - Pošaljite ticket error.discordSubmit=Discord - Pošalji objavu podrške - diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index b9b77e5fcf5..3967db38517 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 38d4dee4364..d31712bdf01 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index dca16d027a4..48effe89819 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -1124,4 +1124,3 @@ error.showStack=Mostra traccia dello stack error.copyStack=Copia traccia dello stack error.githubSubmit=GitHub: invia un ticket error.discordSubmit=Discord: invia post di supporto - diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 2ac0cf762e7..3f39dcd34a8 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -1124,4 +1124,3 @@ 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 b86dca72fc3..cae46d9b527 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -1124,4 +1124,3 @@ 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 ed20467883a..6c43a399dfc 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -1124,4 +1124,3 @@ error.showStack=Geeft tracering weer error.copyStack=Kopieer tracering error.githubSubmit=GitHub - Dien een ticket in error.discordSubmit=Discord - Maak een support post - diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 584cabf1d2f..dcf4334238f 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -1124,4 +1124,3 @@ error.showStack=Vis stakksporing error.copyStack=Kopier stakksporing error.githubSubmit=GitHub - Send inn en billett error.discordSubmit=Discord - Send inn støtteinnlegg - diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 63dd95e3a06..17e4cb7b1c7 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -1124,4 +1124,3 @@ error.showStack=Pokaż Stack Trace error.copyStack=Kopiuj Stack Trace error.githubSubmit=GitHub - wyślij zgłoszenie error.discordSubmit=Discord - wyślij posta z prośbą o pomoc - diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index bf87d427f76..4e82820fb83 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index a0df21cdfac..12fc44b46dd 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 1786a47d97a..b49f8d7e258 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index d632969f47d..ad7c4df19c9 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -1124,4 +1124,3 @@ error.showStack=Показать стек вызовов error.copyStack=Скопировать стек вызовов error.githubSubmit=GitHub - Отправить заявку error.discordSubmit=Discord - Отправить запрос в поддержку - diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index f6f0cc1cd3a..94f2d1dff23 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -1124,4 +1124,3 @@ error.showStack=Zobraziť sledovanie zásobníka error.copyStack=Kopírovať sledovanie zásobníka error.githubSubmit=GitHub - Podajte tiket error.discordSubmit=Discord - Podajte príspevok na podporu - diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index c20ac0d493c..fe6f2ec7910 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index c67574c67b7..fc8fb437e64 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -1124,4 +1124,3 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post - diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index a40ac9395b9..8c24d449c94 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -706,8 +706,8 @@ removeAnnotations.submit=ลบ #compare compare.title=เปรียบเทียบ compare.header=เปรียบเทียบ PDF -compare.highlightColor.1=สีเน้น 1: -compare.highlightColor.2=สีเน้น 2: +compare.highlightColor.1=สีเน้น 1: +compare.highlightColor.2=สีเน้น 2: compare.document.1=เอกสาร 1 compare.document.2=เอกสาร 2 compare.submit=เปรียบเทียบ @@ -1124,4 +1124,3 @@ error.showStack=แสดง Stack Trace error.copyStack=คัดลอก Stack Trace error.githubSubmit=GitHub - ส่งตั๋ว error.discordSubmit=Discord - ส่งโพสต์การสนับสนุน - diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 13c87f3ffda..5a082bc3f71 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -706,8 +706,8 @@ removeAnnotations.submit=Kaldır #compare compare.title=Karşılaştır compare.header=PDF'leri Karşılaştır -compare.highlightColor.1=Vurgu Rengi 1: -compare.highlightColor.2=Vurgu Rengi 2: +compare.highlightColor.1=Vurgu Rengi 1: +compare.highlightColor.2=Vurgu Rengi 2: compare.document.1=Belge 1 compare.document.2=Belge 2 compare.submit=Karşılaştır @@ -1124,4 +1124,3 @@ 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 index 2f68967e86a..9bd25283b74 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -1124,4 +1124,3 @@ 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 f24f092e306..e10b1beeb09 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -1124,4 +1124,3 @@ error.showStack=显示堆栈跟踪 error.copyStack=复制堆栈跟踪 error.githubSubmit=GitHub - 提交工单 error.discordSubmit=Discord - 提交支持帖子 - diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 6a4b3ac0916..65f41fe2ceb 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -1124,4 +1124,3 @@ error.showStack=顯示堆疊追蹤 error.copyStack=複製堆疊追蹤 error.githubSubmit=GitHub - 提交工單 error.discordSubmit=Discord - 提交支援帖子 - From 072090d41b6d3dec83b36bb4e0a11ea7f46b196c Mon Sep 17 00:00:00 2001 From: Clara Bujeda <95882405+CBujeda@users.noreply.github.com> Date: Tue, 23 Jul 2024 19:51:46 +0200 Subject: [PATCH 02/50] Update of what was missing in messages_es_ES.properties (#1586) I have translated what was missing from translating so everything would be translated. --- src/main/resources/messages_es_ES.properties | 114 +++++++++---------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 38c8f9158d7..d3724753a7a 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -60,11 +60,11 @@ deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actua deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse. downgradeCurrentUserMessage=No se puede degradar el rol del usuario actual downgradeCurrentUserLongMessage=No se puede degradar el rol del usuario actual. Por lo tanto, el usuario actual no se mostrará. -userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user. -userAlreadyExistsWebMessage=The user already exists as an web user. +userAlreadyExistsOAuthMessage=La usuario ya existe como usuario de OAuth2. +userAlreadyExistsWebMessage=El usuario ya existe como usuario web. error=Error oops=Ups! -help=Help +help=Ayuda goHomepage=Ir a la página principal joinDiscord=Únase a nuestro servidor Discord seeDockerHub=Ver Docker Hub @@ -86,7 +86,7 @@ pipeline.defaultOption=Personalizar pipeline.submitButton=Enviar pipeline.help=Ayuda de Canalización pipeline.scanHelp=Ayuda de escaneado de carpetas -pipeline.deletePrompt=Are you sure you want to delete pipeline +pipeline.deletePrompt=¿Estás segura de que quieres eliminar la canalización? ###################### # Pipeline Options # @@ -107,18 +107,18 @@ pipelineOptions.validateButton=Validar ############# # NAVBAR # ############# -navbar.favorite=Favorites +navbar.favorite=Favoritos navbar.darkmode=Modo oscuro -navbar.language=Languages +navbar.language=Idiomas navbar.settings=Configuración -navbar.allTools=Tools -navbar.multiTool=Multi Tools +navbar.allTools=Herramientas +navbar.multiTool=Multi herramientas navbar.sections.organize=Organize -navbar.sections.convertTo=Convert to PDF -navbar.sections.convertFrom=Convert from PDF -navbar.sections.security=Sign & Security -navbar.sections.advance=Advanced -navbar.sections.edit=View & Edit +navbar.sections.convertTo=Convertir a PDF +navbar.sections.convertFrom=Convertir desde PDF +navbar.sections.security=Señalización y seguridad +navbar.sections.advance=Avanzado +navbar.sections.edit=Ver y Editar ############# # SETTINGS # @@ -175,8 +175,8 @@ adminUserSettings.header=Configuración de control de usuario administrador adminUserSettings.admin=Administrador adminUserSettings.user=Usuario adminUserSettings.addUser=Añadir Nuevo Usuario -adminUserSettings.deleteUser=Delete User -adminUserSettings.confirmDeleteUser=Should the user be deleted? +adminUserSettings.deleteUser=Eliminar Usuario +adminUserSettings.confirmDeleteUser=¿Se debe eliminar al usuario? adminUserSettings.usernameInfo=El nombre de usuario solo puede contener letras, números y los siguientes caracteres especiales @._+- o debe ser una dirección de correo electrónico válida. adminUserSettings.roles=Roles adminUserSettings.role=Rol @@ -189,24 +189,24 @@ adminUserSettings.internalApiUser=Usuario interno de API adminUserSettings.forceChange=Forzar usuario a cambiar usuario/contraseña en el acceso adminUserSettings.submit=Guardar Usuario adminUserSettings.changeUserRole=Cambiar rol de usuario -adminUserSettings.authenticated=Authenticated - - -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +adminUserSettings.authenticated=Autenticado + + +database.title=Base de Datos Importar/Exportar +database.header=Base de Datos Importar/Exportar +database.fileName=Nombre de Archivo +database.creationDate=Fecha de creación +database.fileSize=Tamaño de archivo +database.deleteBackupFile=Eliminar archivo de copia de seguridad +database.importBackupFile=Importar archivo de copia de seguridad +database.downloadBackupFile=Descargar archivo de copia de seguridad +database.info_1=Al importar datos, es fundamental garantizar la estructura correcta. Si no está seguro de lo que está haciendo, busque consejo y apoyo de un profesional. Un error en la estructura puede causar un mal funcionamiento de la aplicación, incluyendo la imposibilidad total de ejecutar la aplicación. +database.info_2=El nombre del archivo no importa al cargarlo. Posteriormente se le cambiará el nombre para que siga el formato backup_user_yyyyMMddHHmm.sql, lo que garantiza una convención de nomenclatura coherente. +database.submit=Importar Backup +database.importIntoDatabaseSuccessed=Importación a la base de datos ha sido exitosa +database.fileNotFound=Archivo no encontrado +database.fileNullOrEmpty=El archivo no debe ser nulo o vacío. +database.failedImportFile=Archivo de importación fallido ############# # HOME-PAGE # @@ -353,8 +353,8 @@ home.certSign.title=Firmar con certificado home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) certSign.tags=autentificar,PEM,P12,oficial,encriptar -home.removeCertSign.title=Remove Certificate Sign -home.removeCertSign.desc=Remove certificate signature from PDF +home.removeCertSign.title=Quitar signo de certificado +home.removeCertSign.desc=Eliminar firma de certificado de PDF removeCertSign.tags=authenticate,PEM,P12,official,decrypt home.pageLayout.title=Diseño de varias páginas @@ -476,13 +476,13 @@ login.invalid=Nombre de usuario o contraseña erróneos. login.locked=Su cuenta se ha bloqueado. login.signinTitle=Por favor, inicie sesión login.ssoSignIn=Iniciar sesión a través del inicio de sesión único -login.oauth2AutoCreateDisabled=Usuario DE creación automática de OAUTH2 DESACTIVADO -login.oauth2RequestNotFound=Authorization request not found -login.oauth2InvalidUserInfoResponse=Invalid User Info Response +login.oauth2AutoCreateDisabled=Usuario de creación automática de OAUTH2 DESACTIVADO +login.oauth2RequestNotFound=Solicitud de autorización no encontrada +login.oauth2InvalidUserInfoResponse=Respuesta de información de usuario no válida login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied -login.oauth2InvalidTokenResponse=Invalid Token Response -login.oauth2InvalidIdToken=Invalid Id Token +login.oauth2InvalidTokenResponse=Respuesta de token no válida +login.oauth2InvalidIdToken=Token de identificación no válido #auto-redact @@ -681,10 +681,10 @@ certSign.submit=Firmar PDF #removeCertSign -removeCertSign.title=Remove Certificate Signature -removeCertSign.header=Remove the digital certificate from the PDF -removeCertSign.selectPDF=Select a PDF file: -removeCertSign.submit=Remove Signature +removeCertSign.title=Eliminar firma del certificado +removeCertSign.header=Quitar el certificado digital del PDF +removeCertSign.selectPDF=Seleccione un archivo PDF: +removeCertSign.submit=Eliminar firma #removeBlanks @@ -706,8 +706,8 @@ removeAnnotations.submit=Eliminar #compare compare.title=Comparar compare.header=Comparar archivos PDF -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Color resaltado 1: +compare.highlightColor.2=Color resaltado 2: compare.document.1=Documento 1 compare.document.2=Documento 2 compare.submit=Comparar @@ -744,7 +744,7 @@ repair.submit=Reparar #flatten flatten.title=Aplanar flatten.header=Acoplar archivos PDF -flatten.flattenOnlyForms=Flatten only forms +flatten.flattenOnlyForms=Aplanar sólo formularios flatten.submit=Aplanar @@ -792,7 +792,7 @@ extractImages.submit=Extraer fileToPDF.title=Archivo a PDF fileToPDF.header=Convertir cualquier archivo a PDF fileToPDF.credit=Este servicio usa LibreOffice y Unoconv para la conversión de archivos -fileToPDF.supportedFileTypesInfo=Supported File types +fileToPDF.supportedFileTypesInfo=Tipos de archivos admitidos fileToPDF.supportedFileTypes=Los tipos de archivo soportados deben incluir los indicados a continuación; sin embargo, para una completa y acutualizada lista de formatos soportados, por favor consulte la documentación de LibreOffice fileToPDF.submit=Convertir a PDF @@ -1000,8 +1000,8 @@ pdfToPDFA.header=PDF a PDF/A pdfToPDFA.credit=Este servicio usa OCRmyPDF para la conversión a PDF/A pdfToPDFA.submit=Convertir pdfToPDFA.tip=Actualmente no funciona para múltiples entrada a la vez -pdfToPDFA.outputFormat=Output format -pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step. +pdfToPDFA.outputFormat=Formato de salida +pdfToPDFA.pdfWithDigitalSignature=El PDF contiene una firma digital. Esto se eliminará en el siguiente paso. #PDFToWord @@ -1103,13 +1103,13 @@ licenses.version=Versión licenses.license=Licencia #survey -survey.nav=Survey -survey.title=Stirling-PDF Survey -survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF! -survey.please=Please consider taking our survey! -survey.disabled=(Survey popup will be disabled in following updates but available at foot of page) -survey.button=Take Survey -survey.dontShowAgain=Don't show again +survey.nav=Encuesta +survey.title=Encuesta Stirling-PDF +survey.description=Stirling-PDF no tiene seguimiento, por lo que queremos escuchar a nuestros usuarios para mejorar Stirling-PDF. +survey.please=¡Considere realizar nuestra encuesta! +survey.disabled=(La ventana emergente de la encuesta se desactivará en las siguientes actualizaciones, pero estará disponible al pie de la página.) +survey.button=Realizar encuesta +survey.dontShowAgain=No volver a mostrar #error From bfe38c71e8fbc639b8b0e4aa092dd4ba9e08b91f Mon Sep 17 00:00:00 2001 From: albanobattistella <34811668+albanobattistella@users.noreply.github.com> Date: Tue, 23 Jul 2024 21:18:00 +0200 Subject: [PATCH 03/50] Update messages_it_IT.properties (#1588) --- src/main/resources/messages_it_IT.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 48effe89819..bcc78d5a46a 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -706,8 +706,8 @@ removeAnnotations.submit=Rimuovi #compare compare.title=Compara compare.header=Compara PDF -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Evidenzia colore 1: +compare.highlightColor.2=Evidenzia colore 2: compare.document.1=Documento 1 compare.document.2=Documento 2 compare.submit=Compara From e07f73dce73952b5a7aa4f474a8c78d92b15bc53 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste WITTNER <44366963+jbwittner@users.noreply.github.com> Date: Wed, 24 Jul 2024 22:58:04 +0200 Subject: [PATCH 04/50] [Helm][K8S] Add rootPath helm (#1593) * Update of values.yaml to use a new variable to manage the application rootpath * Use rootPath of values in deployment to manage rootPath and probes --- chart/stirling-pdf/templates/deployment.yaml | 8 +++++--- chart/stirling-pdf/values.yaml | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/chart/stirling-pdf/templates/deployment.yaml b/chart/stirling-pdf/templates/deployment.yaml index 290a56c9174..d91e8097788 100644 --- a/chart/stirling-pdf/templates/deployment.yaml +++ b/chart/stirling-pdf/templates/deployment.yaml @@ -62,8 +62,10 @@ spec: imagePullPolicy: {{ .Values.image.pullPolicy }} securityContext: {{- toYaml .Values.containerSecurityContext | nindent 10 }} -{{- if .Values.envs }} env: + - name: SYSTEM_ROOTURIPATH + value: {{ .Values.rootPath}} +{{- if .Values.envs }} {{ toYaml .Values.envs | indent 8 }} {{- end }} {{- if .Values.extraArgs }} @@ -75,13 +77,13 @@ spec: containerPort: 8080 livenessProbe: httpGet: - path: / + path: {{ .Values.rootPath}} port: http {{ toYaml .Values.probes.livenessHttpGetConfig | indent 12 }} {{ toYaml .Values.probes.liveness | indent 10 }} readinessProbe: httpGet: - path: / + path: {{ .Values.rootPath}} port: http {{ toYaml .Values.probes.readinessHttpGetConfig | indent 12 }} {{ toYaml .Values.probes.readiness | indent 10 }} diff --git a/chart/stirling-pdf/values.yaml b/chart/stirling-pdf/values.yaml index e9e00c3e8c7..3e3e560cc19 100644 --- a/chart/stirling-pdf/values.yaml +++ b/chart/stirling-pdf/values.yaml @@ -15,6 +15,9 @@ secret: commonLabels: {} # team_name: dev +# rootpath for the application +rootPath: / + envs: [] # - name: UI_APP_NAME # value: "Stirling PDF" @@ -24,8 +27,6 @@ envs: [] # value: "Stirling PDF" # - name: ALLOW_GOOGLE_VISIBILITY # value: "true" -# - name: APP_ROOT_PATH -# value: "/" # - name: APP_LOCALE # value: "en_GB" From 07f85ea8b4685f12f80c68541c6dfc00f337e6ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 13:00:54 +0100 Subject: [PATCH 05/50] :memo: Update README: Translation Progress Table (#1587) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26bd1275864..3f3640e4386 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ Stirling PDF currently supports 33! | Arabic (العربية) (ar_AR) | ![45%](https://geps.dev/progress/45) | | German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | | French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | -| Spanish (Español) (es_ES) | ![92%](https://geps.dev/progress/92) | +| Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | | Simplified Chinese (简体中文) (zh_CN) | ![98%](https://geps.dev/progress/98) | | Traditional Chinese (繁體中文) (zh_TW) | ![96%](https://geps.dev/progress/96) | | Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | From 281047f42a469b5a6a1ecb69cfd0fc07b821242b Mon Sep 17 00:00:00 2001 From: Son Tran Lam Date: Fri, 26 Jul 2024 20:01:17 +0800 Subject: [PATCH 06/50] Translate to Vietnamese (#1591) * Translate to Vietnamese * Add translation for Vietnamese * - Remove invalid properties and duplicated values. - Add blank lines to align with the original format of en_GB file * fix eof * add empty lines to align with the template format. The number of line is equal with the reference en_GB file now * change some translations to be more natural and easier to understand --- scripts/ignore_translation.toml | 5 + src/main/resources/messages_vi_VN.properties | 1126 +++++++++++++++++ src/main/resources/static/images/flags/vn.svg | 11 + .../templates/fragments/languages.html | 1 + 4 files changed, 1143 insertions(+) create mode 100644 src/main/resources/messages_vi_VN.properties create mode 100644 src/main/resources/static/images/flags/vn.svg diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index d230b3f4746..9b88b096fa5 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -239,3 +239,8 @@ ignore = [ ignore = [ 'language.direction', ] + +[vi_VN] +ignore = [ + 'language.direction', +] diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties new file mode 100644 index 00000000000..eda2787249f --- /dev/null +++ b/src/main/resources/messages_vi_VN.properties @@ -0,0 +1,1126 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Chọn (các) tệp PDF +multiPdfPrompt=Chọn các tệp PDF (2+) +multiPdfDropPrompt=Chọn (hoặc kéo và thả) tất cả các tệp PDF bạn cần +imgPrompt=Chọn (các) hình ảnh +genericSubmit=Gửi +processTimeWarning=Cảnh báo: Quá trình này có thể mất đến một phút tùy thuộc vào kích thước tệp +pageOrderPrompt=Thứ tự trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy hoặc Các hàm như 2n+1) : +pageSelectionPrompt=Lựa chọn trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy 1,5,6 hoặc Các hàm như 2n+1) : +goToPage=Đi đến +true=Đúng +false=Sai +unknown=Không xác định +save=Lưu +saveToBrowser=Lưu vào trình duyệt +close=Đóng +filesSelected=tệp đã chọn +noFavourites=Không có mục yêu thích nào được thêm +downloadComplete=Tải xuống hoàn tất +bored=Chán phải chờ đợi? +alphabet=Bảng chữ cái +downloadPdf=Tải xuống PDF +text=Văn bản +font=Phông chữ +selectFillter=-- Chọn -- +pageNum=Số trang +sizes.small=Nhỏ +sizes.medium=Trung bình +sizes.large=Lớn +sizes.x-large=Rất lớn +error.pdfPassword=Tài liệu PDF được bảo vệ bằng mật khẩu và mật khẩu không được cung cấp hoặc không chính xác +delete=Xóa +username=Tên người dùng +password=Mật khẩu +welcome=Chào mừng +property=Thuộc tính +black=Đen +white=Trắng +red=Đỏ +green=Xanh lá +blue=Xanh dương +custom=Tùy chỉnh... +WorkInProgess=Đang trong quá trình phát triển, Có thể không hoạt động hoặc có lỗi, Vui lòng báo cáo mọi vấn đề! +poweredBy=Được hỗ trợ bởi +yes=Có +no=Không +changedCredsMessage=Thông tin đăng nhập đã thay đổi! +notAuthenticatedMessage=Người dùng chưa được xác thực. +userNotFoundMessage=Không tìm thấy người dùng. +incorrectPasswordMessage=Mật khẩu hiện tại không chính xác. +usernameExistsMessage=Tên người dùng mới đã tồn tại. +invalidUsernameMessage=Tên người dùng không hợp lệ, tên người dùng chỉ có thể chứa chữ cái, số và các ký tự đặc biệt sau @._+- hoặc phải là một địa chỉ email hợp lệ. +confirmPasswordErrorMessage=Mật khẩu mới và Xác nhận mật khẩu mới phải khớp nhau. +deleteCurrentUserMessage=Không thể xóa người dùng đang đăng nhập. +deleteUsernameExistsMessage=Tên người dùng không tồn tại và không thể bị xóa. +downgradeCurrentUserMessage=Không thể hạ cấp vai trò của người dùng hiện tại +downgradeCurrentUserLongMessage=Không thể hạ cấp vai trò của người dùng hiện tại. Do đó, người dùng hiện tại sẽ không được hiển thị. +userAlreadyExistsOAuthMessage=Người dùng đã tồn tại dưới dạng người dùng OAuth2. +userAlreadyExistsWebMessage=Người dùng đã tồn tại dưới dạng người dùng web. +error=Lỗi +oops=Rất tiếc! +help=Trợ giúp +goHomepage=Đi đến Trang chủ +joinDiscord=Tham gia máy chủ Discord của chúng tôi +seeDockerHub=Xem Docker Hub +visitGithub=Truy cập kho lưu trữ Github +donate=Ủng hộ +color=Màu sắc +sponsor=Nhà tài trợ +info=Thông tin + + + +############### +# Pipeline # +############### +pipeline.header=Menu Pipeline (Beta) +pipeline.uploadButton=Tải lên tùy chỉnh +pipeline.configureButton=Cấu hình +pipeline.defaultOption=Tùy chỉnh +pipeline.submitButton=Gửi +pipeline.help=Trợ giúp Pipeline +pipeline.scanHelp=Trợ giúp quét thư mục +pipeline.deletePrompt=Bạn có chắc chắn muốn xóa pipeline + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Cấu hình Pipeline +pipelineOptions.pipelineNameLabel=Tên Pipeline +pipelineOptions.saveSettings=Lưu cài đặt thao tác +pipelineOptions.pipelineNamePrompt=Nhập tên pipeline tại đây +pipelineOptions.selectOperation=Chọn thao tác +pipelineOptions.addOperationButton=Thêm thao tác +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Tải xuống +pipelineOptions.validateButton=Xác thực + + + + +############# +# NAVBAR # +############# +navbar.favorite=Yêu thích +navbar.darkmode=Chế độ tối +navbar.language=Ngôn ngữ +navbar.settings=Cài đặt +navbar.allTools=Công cụ +navbar.multiTool=Đa công cụ +navbar.sections.organize=Sắp xếp +navbar.sections.convertTo=Chuyển đổi sang PDF +navbar.sections.convertFrom=Chuyển đổi từ PDF +navbar.sections.security=Ký & Bảo mật +navbar.sections.advance=Nâng cao +navbar.sections.edit=Xem & Chỉnh sửa + +############# +# SETTINGS # +############# +settings.title=Cài đặt +settings.update=Có bản cập nhật +settings.updateAvailable={0} là phiên bản hiện tại đã cài đặt. Một phiên bản mới ({1}) đã có sẵn. +settings.appVersion=Phiên bản ứng dụng: +settings.downloadOption.title=Chọn tùy chọn tải xuống (Đối với tải xuống tệp đơn không nén): +settings.downloadOption.1=Mở trong cùng cửa sổ +settings.downloadOption.2=Mở trong cửa sổ mới +settings.downloadOption.3=Tải xuống tệp +settings.zipThreshold=Nén tệp khi số lượng tệp tải xuống vượt quá +settings.signOut=Đăng xuất +settings.accountSettings=Cài đặt tài khoản +settings.bored.help=Bật trò chơi ẩn +settings.cacheInputs.name=Lưu đầu vào biểu mẫu +settings.cacheInputs.help=Bật để lưu trữ các đầu vào đã sử dụng trước đó cho các lần chạy trong tương lai + +changeCreds.title=Thay đổi thông tin đăng nhập +changeCreds.header=Cập nhật thông tin tài khoản của bạn +changeCreds.changePassword=Bạn đang sử dụng thông tin đăng nhập mặc định. Vui lòng nhập mật khẩu mới +changeCreds.newUsername=Tên người dùng mới +changeCreds.oldPassword=Mật khẩu hiện tại +changeCreds.newPassword=Mật khẩu mới +changeCreds.confirmNewPassword=Xác nhận mật khẩu mới +changeCreds.submit=Gửi thay đổi + + + +account.title=Cài đặt tài khoản +account.accountSettings=Cài đặt tài khoản +account.adminSettings=Cài đặt quản trị - Xem và thêm người dùng +account.userControlSettings=Cài đặt kiểm soát người dùng +account.changeUsername=Thay đổi tên người dùng +account.newUsername=Tên người dùng mới +account.password=Mật khẩu xác nhận +account.oldPassword=Mật khẩu cũ +account.newPassword=Mật khẩu mới +account.changePassword=Thay đổi mật khẩu +account.confirmNewPassword=Xác nhận mật khẩu mới +account.signOut=Đăng xuất +account.yourApiKey=Khóa API của bạn +account.syncTitle=Đồng bộ hóa cài đặt trình duyệt với tài khoản +account.settingsCompare=So sánh cài đặt: +account.property=Thuộc tính +account.webBrowserSettings=Cài đặt trình duyệt web +account.syncToBrowser=Đồng bộ hóa Tài khoản -> Trình duyệt +account.syncToAccount=Đồng bộ hóa Tài khoản <- Trình duyệt + + +adminUserSettings.title=Cài đặt kiểm soát người dùng +adminUserSettings.header=Cài đặt kiểm soát người dùng quản trị +adminUserSettings.admin=Quản trị viên +adminUserSettings.user=Người dùng +adminUserSettings.addUser=Thêm người dùng mới +adminUserSettings.deleteUser=Xóa người dùng +adminUserSettings.confirmDeleteUser=Bạn có muốn xóa người dùng không? +adminUserSettings.usernameInfo=Tên người dùng chỉ có thể chứa chữ cái, số và các ký tự đặc biệt sau @._+- hoặc phải là một địa chỉ email hợp lệ. +adminUserSettings.roles=Vai trò +adminUserSettings.role=Vai trò +adminUserSettings.actions=Hành động +adminUserSettings.apiUser=Người dùng API giới hạn +adminUserSettings.extraApiUser=Người dùng API giới hạn bổ sung +adminUserSettings.webOnlyUser=Chỉ người dùng web +adminUserSettings.demoUser=Người dùng demo (Không có cài đặt tùy chỉnh) +adminUserSettings.internalApiUser=Người dùng API nội bộ +adminUserSettings.forceChange=Buộc người dùng thay đổi mật khẩu khi đăng nhập +adminUserSettings.submit=Lưu người dùng +adminUserSettings.changeUserRole=Thay đổi vai trò của người dùng +adminUserSettings.authenticated=Đã xác thực + + +database.title=Nhập/Xuất cơ sở dữ liệu +database.header=Nhập/Xuất cơ sở dữ liệu +database.fileName=Tên tệp +database.creationDate=Ngày tạo +database.fileSize=Kích thước tệp +database.deleteBackupFile=Xóa tệp sao lưu +database.importBackupFile=Nhập tệp sao lưu +database.downloadBackupFile=Tải xuống tệp sao lưu +database.info_1=Khi nhập dữ liệu, điều quan trọng là phải đảm bảo cấu trúc chính xác. Nếu bạn không chắc chắn về những gì bạn đang làm, hãy tìm kiếm lời khuyên và hỗ trợ từ một chuyên gia. Lỗi trong cấu trúc có thể gây ra sự cố ứng dụng, thậm chí là không thể chạy ứng dụng hoàn toàn. +database.info_2=Tên tệp không quan trọng khi tải lên. Nó sẽ được đổi tên sau đó để tuân theo định dạng backup_user_yyyyMMddHHmm.sql, đảm bảo quy ước đặt tên nhất quán. +database.submit=Nhập bản sao lưu +database.importIntoDatabaseSuccessed=Nhập vào cơ sở dữ liệu thành công +database.fileNotFound=Không tìm thấy tệp +database.fileNullOrEmpty=Tệp không được để trống hoặc rỗng +database.failedImportFile=Không thể nhập tệp + +############# +# HOME-PAGE # +############# +home.desc=Giải pháp toàn diện cho mọi nhu cầu về PDF ngay trên máy của bạn +home.searchBar=Tìm kiếm tính năng... + + +home.viewPdf.title=Xem PDF +home.viewPdf.desc=Xem, chú thích, thêm văn bản hoặc hình ảnh +viewPdf.tags=xem,đọc,chú thích,văn bản,hình ảnh + +home.multiTool.title=Đa công cụ PDF +home.multiTool.desc=Ghép nối, Xoay, Sắp xếp lại và Xóa trang +multiTool.tags=Đa công cụ,Đa thao tác,Giao diện người dùng,nhấp kéo,phía trước,phía máy khách,tương tác,có thể tương tác,di chuyển + +home.merge.title=Ghép nối +home.merge.desc=Dễ dàng ghép nối nhiều PDF thành một. +merge.tags=ghép nối,Thao tác trang,Phía sau,phía máy chủ + +home.split.title=Tách +home.split.desc=Tách PDF thành nhiều tài liệu +split.tags=Thao tác trang,chia,Nhiều trang,cắt,phía máy chủ + +home.rotate.title=Xoay +home.rotate.desc=Dễ dàng xoay PDF của bạn. +rotate.tags=phía máy chủ + + +home.imageToPdf.title=Hình ảnh sang PDF +home.imageToPdf.desc=Chuyển đổi hình ảnh (PNG, JPEG, GIF) sang PDF. +imageToPdf.tags=chuyển đổi,img,jpg,hình ảnh,ảnh + +home.pdfToImage.title=PDF sang Hình ảnh +home.pdfToImage.desc=Chuyển đổi PDF sang hình ảnh. (PNG, JPEG, GIF) +pdfToImage.tags=chuyển đổi,img,jpg,hình ảnh,ảnh + +home.pdfOrganiser.title=Sắp xếp +home.pdfOrganiser.desc=Xóa/Sắp xếp lại trang theo bất kỳ thứ tự nào +pdfOrganiser.tags=duplex,chẵn,lẻ,sắp xếp,di chuyển + + +home.addImage.title=Thêm hình ảnh +home.addImage.desc=Thêm hình ảnh vào vị trí cố định trên PDF +addImage.tags=img,jpg,hình ảnh,ảnh + +home.watermark.title=Thêm hình mờ +home.watermark.desc=Thêm hình mờ tùy chỉnh vào tài liệu PDF của bạn. +watermark.tags=Văn bản,lặp lại,nhãn,riêng,bản quyền,thương hiệu,img,jpg,hình ảnh,ảnh + +home.permissions.title=Thay đổi quyền +home.permissions.desc=Thay đổi quyền của tài liệu PDF của bạn +permissions.tags=đọc,viết,chỉnh sửa,in + + +home.removePages.title=Xóa +home.removePages.desc=Xóa các trang không mong muốn khỏi tài liệu PDF của bạn. +removePages.tags=Xóa trang,xóa trang + +home.addPassword.title=Thêm mật khẩu +home.addPassword.desc=Mã hóa tài liệu PDF của bạn bằng mật khẩu. +addPassword.tags=bảo mật,an toàn + +home.removePassword.title=Xóa mật khẩu +home.removePassword.desc=Xóa bảo vệ mật khẩu khỏi tài liệu PDF của bạn. +removePassword.tags=bảo mật,Giải mã,an toàn,bỏ mật khẩu,xóa mật khẩu + +home.compressPdfs.title=Nén +home.compressPdfs.desc=Nén PDF để giảm kích thước tệp. +compressPdfs.tags=ép,nhỏ,nhỏ gọn + + +home.changeMetadata.title=Thay đổi Metadata +home.changeMetadata.desc=Thay đổi/Xóa/Thêm metadata từ tài liệu PDF +changeMetadata.tags=Tiêu đề,tác giả,ngày,tạo,thời gian,nhà xuất bản,nhà sản xuất,thống kê + +home.fileToPDF.title=Chuyển đổi tệp sang PDF +home.fileToPDF.desc=Chuyển đổi hầu hết mọi tệp sang PDF (DOCX, PNG, XLS, PPT, TXT và nhiều hơn nữa) +fileToPDF.tags=chuyển đổi,định dạng,tài liệu,hình ảnh,slide,văn bản,chuyển đổi,văn phòng,tài liệu,word,excel,powerpoint + +home.ocr.title=OCR / Dọn dẹp bản quét +home.ocr.desc=Dọn dẹp bản quét và phát hiện văn bản từ hình ảnh trong PDF và thêm lại dưới dạng văn bản. +ocr.tags=nhận dạng,văn bản,hình ảnh,quét,đọc,nhận dạng,phát hiện,có thể chỉnh sửa + + +home.extractImages.title=Trích xuất hình ảnh +home.extractImages.desc=Trích xuất tất cả hình ảnh từ PDF và lưu chúng vào tệp zip +extractImages.tags=hình ảnh,ảnh,lưu,lưu trữ,zip,chụp,lấy + +home.pdfToPDFA.title=PDF sang PDF/A +home.pdfToPDFA.desc=Chuyển đổi PDF sang PDF/A để lưu trữ lâu dài +pdfToPDFA.tags=lưu trữ,dài hạn,tiêu chuẩn,chuyển đổi,lưu trữ,bảo quản + +home.PDFToWord.title=PDF sang Word +home.PDFToWord.desc=Chuyển đổi PDF sang các định dạng Word (DOC, DOCX và ODT) +PDFToWord.tags=doc,docx,odt,word,chuyển đổi,định dạng,chuyển đổi,văn phòng,microsoft,tệp doc + +home.PDFToPresentation.title=PDF sang Bài thuyết trình +home.PDFToPresentation.desc=Chuyển đổi PDF sang các định dạng Bài thuyết trình (PPT, PPTX và ODP) +PDFToPresentation.tags=slides,trình chiếu,văn phòng,microsoft + +home.PDFToText.title=PDF sang RTF (Văn bản) +home.PDFToText.desc=Chuyển đổi PDF sang định dạng Văn bản hoặc RTF +PDFToText.tags=định dạng phong phú,định dạng văn bản phong phú,định dạng văn bản phong phú + +home.PDFToHTML.title=PDF sang HTML +home.PDFToHTML.desc=Chuyển đổi PDF sang định dạng HTML +PDFToHTML.tags=nội dung web,thân thiện với trình duyệt + + +home.PDFToXML.title=PDF sang XML +home.PDFToXML.desc=Chuyển đổi PDF sang định dạng XML +PDFToXML.tags=trích xuất dữ liệu,nội dung có cấu trúc,tương tác,chuyển đổi,chuyển + +home.ScannerImageSplit.title=Phát hiện/Tách ảnh quét +home.ScannerImageSplit.desc=Tách nhiều ảnh từ trong một ảnh/PDF +ScannerImageSplit.tags=tách,tự động phát hiện,quét,nhiều ảnh,sắp xếp + +home.sign.title=Ký +home.sign.desc=Thêm chữ ký vào PDF bằng cách vẽ, văn bản hoặc hình ảnh +sign.tags=ủy quyền,ký tắt,chữ ký vẽ,ký văn bản,chữ ký hình ảnh + +home.flatten.title=Làm phẳng +home.flatten.desc=Xóa tất cả các phần tử tương tác và biểu mẫu từ PDF +flatten.tags=tĩnh,vô hiệu hóa,không tương tác,tinh giản + +home.repair.title=Sửa chữa +home.repair.desc=Cố gắng sửa chữa PDF bị hỏng/lỗi +repair.tags=sửa,khôi phục,sửa chữa,phục hồi + +home.removeBlanks.title=Xóa trang trống +home.removeBlanks.desc=Phát hiện và xóa các trang trống khỏi tài liệu +removeBlanks.tags=dọn dẹp,tinh giản,không nội dung,sắp xếp + +home.removeAnnotations.title=Xóa chú thích +home.removeAnnotations.desc=Xóa tất cả các bình luận/chú thích khỏi PDF +removeAnnotations.tags=bình luận,đánh dấu,ghi chú,đánh dấu,xóa + +home.compare.title=So sánh +home.compare.desc=So sánh và hiển thị sự khác biệt giữa 2 tài liệu PDF +compare.tags=phân biệt,đối chiếu,thay đổi,phân tích + +home.certSign.title=Ký bằng chứng chỉ +home.certSign.desc=Ký PDF bằng Chứng chỉ/Khóa (PEM/P12) +certSign.tags=xác thực,PEM,P12,chính thức,mã hóa + +home.removeCertSign.title=Xóa chữ ký chứng chỉ +home.removeCertSign.desc=Xóa chữ ký chứng chỉ khỏi PDF +removeCertSign.tags=xác thực,PEM,P12,chính thức,giải mã + +home.pageLayout.title=Bố cục nhiều trang +home.pageLayout.desc=Ghép nhiều trang của tài liệu PDF thành một trang duy nhất +pageLayout.tags=ghép,tổng hợp,xem đơn,sắp xếp + +home.scalePages.title=Điều chỉnh kích thước/tỷ lệ trang +home.scalePages.desc=Thay đổi kích thước/tỷ lệ của trang và/hoặc nội dung của nó. +scalePages.tags=điều chỉnh kích thước,sửa đổi,kích thước,điều chỉnh + +home.pipeline.title=Pipeline (Nâng cao) +home.pipeline.desc=Chạy nhiều thao tác trên PDF bằng cách định nghĩa các tập lệnh pipeline +pipeline.tags=tự động hóa,chuỗi,kịch bản,xử lý hàng loạt + +home.add-page-numbers.title=Thêm số trang +home.add-page-numbers.desc=Thêm số trang xuyên suốt tài liệu ở vị trí cố định +add-page-numbers.tags=đánh số trang,gắn nhãn,sắp xếp,chỉ mục + +home.auto-rename.title=Tự động đổi tên tệp PDF +home.auto-rename.desc=Tự động đổi tên tệp PDF dựa trên tiêu đề được phát hiện +auto-rename.tags=tự động phát hiện,dựa trên tiêu đề,sắp xếp,đổi nhãn + +home.adjust-contrast.title=Điều chỉnh màu sắc/tương phản +home.adjust-contrast.desc=Điều chỉnh độ tương phản, độ bão hòa và độ sáng của PDF +adjust-contrast.tags=hiệu chỉnh màu sắc,điều chỉnh,sửa đổi,nâng cao + +home.crop.title=Cắt PDF +home.crop.desc=Cắt PDF để giảm kích thước (giữ nguyên văn bản!) +crop.tags=cắt tỉa,thu nhỏ,chỉnh sửa,định hình + +home.autoSplitPDF.title=Tự động tách trang +home.autoSplitPDF.desc=Tự động tách PDF đã quét với mã QR tách trang quét vật lý +autoSplitPDF.tags=Dựa trên QR,tách,phân đoạn quét,sắp xếp + +home.sanitizePdf.title=Làm sạch +home.sanitizePdf.desc=Xóa các tập lệnh và phần tử khác khỏi các tệp PDF +sanitizePdf.tags=làm sạch,bảo mật,an toàn,loại bỏ mối đe dọa + +home.URLToPDF.title=URL/Trang web sang PDF +home.URLToPDF.desc=Chuyển đổi bất kỳ URL http(s) nào thành PDF +URLToPDF.tags=chụp web,lưu trang,web sang tài liệu,lưu trữ + +home.HTMLToPDF.title=HTML sang PDF +home.HTMLToPDF.desc=Chuyển đổi bất kỳ tệp HTML hoặc zip nào thành PDF +HTMLToPDF.tags=đánh dấu,nội dung web,chuyển đổi,chuyển + + +home.MarkdownToPDF.title=Markdown sang PDF +home.MarkdownToPDF.desc=Chuyển đổi bất kỳ tệp Markdown nào thành PDF +MarkdownToPDF.tags=đánh dấu,nội dung web,chuyển đổi,chuyển + + +home.getPdfInfo.title=Lấy TẤT CẢ thông tin về PDF +home.getPdfInfo.desc=Lấy bất kỳ và tất cả thông tin có thể về PDF +getPdfInfo.tags=thông tin,dữ liệu,số liệu thống kê,thống kê + + +home.extractPage.title=Trích xuất (các) trang +home.extractPage.desc=Trích xuất các trang được chọn từ PDF +extractPage.tags=trích xuất + + +home.PdfToSinglePage.title=PDF sang một trang lớn +home.PdfToSinglePage.desc=Ghép tất cả các trang PDF thành một trang lớn duy nhất +PdfToSinglePage.tags=trang đơn + + +home.showJS.title=Hiển thị Javascript +home.showJS.desc=Tìm kiếm và hiển thị bất kỳ JS nào được chèn vào PDF +showJS.tags=JS + +home.autoRedact.title=Tự động biên tập +home.autoRedact.desc=Tự động biên tập (Che đen) văn bản trong PDF dựa trên văn bản đầu vào +autoRedact.tags=Biên tập,Ẩn,che đen,đen,bút đánh dấu,ẩn + +home.tableExtraxt.title=PDF sang CSV +home.tableExtraxt.desc=Trích xuất bảng từ PDF chuyển đổi thành CSV +tableExtraxt.tags=CSV,Trích xuất bảng,trích xuất,chuyển đổi + + +home.autoSizeSplitPDF.title=Tự động chia theo kích thước/số lượng +home.autoSizeSplitPDF.desc=Chia một tệp PDF thành nhiều tài liệu dựa trên kích thước, số trang hoặc số lượng tài liệu +autoSizeSplitPDF.tags=pdf,chia,tài liệu,tổ chức + + +home.overlay-pdfs.title=Chồng lớp PDF +home.overlay-pdfs.desc=Chồng lớp PDF lên trên PDF khác +overlay-pdfs.tags=Chồng lớp + +home.split-by-sections.title=Chia PDF theo phần +home.split-by-sections.desc=Chia mỗi trang của PDF thành các phần nhỏ hơn theo chiều ngang và dọc +split-by-sections.tags=Chia phần,Phân chia,Tùy chỉnh + +home.AddStampRequest.title=Thêm dấu vào PDF +home.AddStampRequest.desc=Thêm văn bản hoặc hình ảnh dấu tại vị trí cố định +AddStampRequest.tags=Dấu,Thêm hình ảnh,căn giữa hình ảnh,Hình mờ,PDF,Nhúng,Tùy chỉnh + + +home.PDFToBook.title=PDF sang sách +home.PDFToBook.desc=Chuyển đổi PDF sang định dạng sách/truyện tranh bằng calibre +PDFToBook.tags=Sách,Truyện tranh,Calibre,Chuyển đổi,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf + +home.BookToPDF.title=Sách sang PDF +home.BookToPDF.desc=Chuyển đổi định dạng sách/truyện tranh sang PDF bằng calibre +BookToPDF.tags=Sách,Truyện tranh,Calibre,Chuyển đổi,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Đăng nhập +login.header=Đăng nhập +login.signin=Đăng nhập +login.rememberme=Ghi nhớ tôi +login.invalid=Tên đăng nhập hoặc mật khẩu không hợp lệ. +login.locked=Tài khoản của bạn đã bị khóa. +login.signinTitle=Vui lòng đăng nhập +login.ssoSignIn=Đăng nhập qua Single Sign-on +login.oauth2AutoCreateDisabled=Tự động tạo người dùng OAUTH2 bị vô hiệu hóa +login.oauth2RequestNotFound=Không tìm thấy yêu cầu ủy quyền +login.oauth2InvalidUserInfoResponse=Phản hồi thông tin người dùng không hợp lệ +login.oauth2invalidRequest=Yêu cầu không hợp lệ +login.oauth2AccessDenied=Truy cập bị từ chối +login.oauth2InvalidTokenResponse=Phản hồi token không hợp lệ +login.oauth2InvalidIdToken=Id Token không hợp lệ + + +#auto-redact +autoRedact.title=Tự động biên tập +autoRedact.header=Tự động biên tập +autoRedact.colorLabel=Màu sắc +autoRedact.textsToRedactLabel=Văn bản cần biên tập (mỗi dòng một từ) +autoRedact.textsToRedactPlaceholder=ví dụ: \nMật \nTối mật +autoRedact.useRegexLabel=Sử dụng Regex +autoRedact.wholeWordSearchLabel=Tìm kiếm toàn bộ từ +autoRedact.customPaddingLabel=Đệm thêm tùy chỉnh +autoRedact.convertPDFToImageLabel=Chuyển đổi PDF thành PDF-Hình ảnh (Dùng để xóa văn bản phía sau ô) +autoRedact.submitButton=Gửi + + +#showJS +showJS.title=Hiển thị Javascript +showJS.header=Hiển thị Javascript +showJS.downloadJS=Tải xuống Javascript +showJS.submit=Hiển thị + + +#pdfToSinglePage +pdfToSinglePage.title=PDF thành một trang +pdfToSinglePage.header=PDF thành một trang +pdfToSinglePage.submit=Chuyển đổi thành một trang + + +#pageExtracter +pageExtracter.title=Trích xuất trang +pageExtracter.header=Trích xuất trang +pageExtracter.submit=Trích xuất +pageExtracter.placeholder=(ví dụ: 1,2,8 hoặc 4,7,12-16 hoặc 2n-1) + + +#getPdfInfo +getPdfInfo.title=Lấy thông tin PDF +getPdfInfo.header=Lấy thông tin PDF +getPdfInfo.submit=Lấy thông tin +getPdfInfo.downloadJson=Tải xuống JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown sang PDF +MarkdownToPDF.header=Markdown sang PDF +MarkdownToPDF.submit=Chuyển đổi +MarkdownToPDF.help=Đang trong quá trình phát triển +MarkdownToPDF.credit=Sử dụng WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL sang PDF +URLToPDF.header=URL sang PDF +URLToPDF.submit=Chuyển đổi +URLToPDF.credit=Sử dụng WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML sang PDF +HTMLToPDF.header=HTML sang PDF +HTMLToPDF.help=Chấp nhận tệp HTML và ZIP chứa html/css/hình ảnh cần thiết +HTMLToPDF.submit=Chuyển đổi +HTMLToPDF.credit=Sử dụng WeasyPrint +HTMLToPDF.zoom=Mức độ phóng to để hiển thị trang web. +HTMLToPDF.pageWidth=Chiều rộng trang tính bằng cm. (Để trống để mặc định) +HTMLToPDF.pageHeight=Chiều cao trang tính bằng cm. (Để trống để mặc định) +HTMLToPDF.marginTop=Lề trên của trang tính bằng mm. (Để trống để mặc định) +HTMLToPDF.marginBottom=Lề dưới của trang tính bằng mm. (Để trống để mặc định) +HTMLToPDF.marginLeft=Lề trái của trang tính bằng mm. (Để trống để mặc định) +HTMLToPDF.marginRight=Lề phải của trang tính bằng mm. (Để trống để mặc định) +HTMLToPDF.printBackground=Hiển thị nền của trang web. +HTMLToPDF.defaultHeader=Bật tiêu đề mặc định (Tên và số trang) +HTMLToPDF.cssMediaType=Thay đổi loại phương tiện CSS của trang. +HTMLToPDF.none=Không +HTMLToPDF.print=In +HTMLToPDF.screen=Màn hình + + +#AddStampRequest +AddStampRequest.header=Đóng dấu PDF +AddStampRequest.title=Đóng dấu PDF +AddStampRequest.stampType=Loại dấu +AddStampRequest.stampText=Văn bản dấu +AddStampRequest.stampImage=Hình ảnh dấu +AddStampRequest.alphabet=Bảng chữ cái +AddStampRequest.fontSize=Cỡ chữ/Kích thước hình ảnh +AddStampRequest.rotation=Xoay +AddStampRequest.opacity=Độ mờ +AddStampRequest.position=Vị trí +AddStampRequest.overrideX=Ghi đè tọa độ X +AddStampRequest.overrideY=Ghi đè tọa độ Y +AddStampRequest.customMargin=Lề tùy chỉnh +AddStampRequest.customColor=Màu văn bản tùy chỉnh +AddStampRequest.submit=Gửi + + +#sanitizePDF +sanitizePDF.title=Làm sạch PDF +sanitizePDF.header=Làm sạch tệp PDF +sanitizePDF.selectText.1=Xóa các hành động JavaScript +sanitizePDF.selectText.2=Xóa các tệp nhúng +sanitizePDF.selectText.3=Xóa metadata +sanitizePDF.selectText.4=Xóa liên kết +sanitizePDF.selectText.5=Xóa phông chữ +sanitizePDF.submit=Làm sạch PDF + + +#addPageNumbers +addPageNumbers.title=Thêm số trang +addPageNumbers.header=Thêm số trang +addPageNumbers.selectText.1=Chọn tệp PDF: +addPageNumbers.selectText.2=Kích thước lề +addPageNumbers.selectText.3=Vị trí +addPageNumbers.selectText.4=Số bắt đầu +addPageNumbers.selectText.5=Trang cần đánh số +addPageNumbers.selectText.6=Văn bản tùy chỉnh +addPageNumbers.customTextDesc=Văn bản tùy chỉnh +addPageNumbers.numberPagesDesc=Những trang cần đánh số, mặc định là 'all', cũng chấp nhận 1-5 hoặc 2,5,9 v.v. +addPageNumbers.customNumberDesc=Mặc định là {n}, cũng chấp nhận 'Trang {n} / {total}', 'Văn bản-{n}', '{filename}-{n} +addPageNumbers.submit=Thêm số trang + + +#auto-rename +auto-rename.title=Tự động đổi tên +auto-rename.header=Tự động đổi tên PDF +auto-rename.submit=Tự động đổi tên + + +#adjustContrast +adjustContrast.title=Điều chỉnh độ tương phản +adjustContrast.header=Điều chỉnh độ tương phản +adjustContrast.contrast=Độ tương phản: +adjustContrast.brightness=Độ sáng: +adjustContrast.saturation=Độ bão hòa: +adjustContrast.download=Tải xuống + + +#crop +crop.title=Cắt cúp +crop.header=Cắt cúp PDF +crop.submit=Gửi + + +#autoSplitPDF +autoSplitPDF.title=Tự động chia PDF +autoSplitPDF.header=Tự động chia PDF +autoSplitPDF.description=In, chèn, quét, tải lên và để chúng tôi tự động tách tài liệu của bạn. Không cần sắp xếp thủ công. +autoSplitPDF.selectText.1=In một số trang phân cách từ bên dưới (Đen trắng là được). +autoSplitPDF.selectText.2=Quét tất cả tài liệu của bạn cùng một lúc bằng cách chèn trang phân cách giữa chúng. +autoSplitPDF.selectText.3=Tải lên tệp PDF quét lớn duy nhất và để Stirling PDF xử lý phần còn lại. +autoSplitPDF.selectText.4=Các trang phân cách được tự động phát hiện và xóa, đảm bảo tài liệu cuối cùng gọn gàng. +autoSplitPDF.formPrompt=Gửi PDF chứa trang phân cách Stirling-PDF: +autoSplitPDF.duplexMode=Chế độ hai mặt (Quét mặt trước và sau) +autoSplitPDF.dividerDownload1=Tải xuống 'Trang phân cách tự động (tối giản).pdf' +autoSplitPDF.dividerDownload2=Tải xuống 'Trang phân cách tự động (có hướng dẫn).pdf' +autoSplitPDF.submit=Gửi + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Bố cục nhiều trang +pageLayout.header=Bố cục nhiều trang +pageLayout.pagesPerSheet=Số trang trên một tờ: +pageLayout.addBorder=Thêm viền +pageLayout.submit=Gửi + + +#scalePages +scalePages.title=Điều chỉnh tỷ lệ trang +scalePages.header=Điều chỉnh tỷ lệ trang +scalePages.pageSize=Kích thước của một trang trong tài liệu. +scalePages.scaleFactor=Mức độ phóng to (cắt cúp) của một trang. +scalePages.submit=Gửi + + +#certSign +certSign.title=Ký bằng chứng chỉ +certSign.header=Ký PDF bằng chứng chỉ của bạn (Đang trong quá trình phát triển) +certSign.selectPDF=Chọn tệp PDF để ký: +certSign.jksNote=Lưu ý: Nếu loại chứng chỉ của bạn không được liệt kê bên dưới, vui lòng chuyển đổi nó thành tệp Java Keystore (.jks) bằng công cụ dòng lệnh keytool. Sau đó, chọn tùy chọn tệp .jks bên dưới. +certSign.selectKey=Chọn tệp khóa riêng của bạn (định dạng PKCS#8, có thể là .pem hoặc .der): +certSign.selectCert=Chọn tệp chứng chỉ của bạn (định dạng X.509, có thể là .pem hoặc .der): +certSign.selectP12=Chọn tệp Keystore PKCS#12 của bạn (.p12 hoặc .pfx) (Tùy chọn, nếu cung cấp, nó phải chứa khóa riêng và chứng chỉ của bạn): +certSign.selectJKS=Chọn tệp Java Keystore của bạn (.jks hoặc .keystore): +certSign.certType=Loại chứng chỉ +certSign.password=Nhập mật khẩu Keystore hoặc Private Key của bạn (Nếu có): +certSign.showSig=Hiển thị chữ ký +certSign.reason=Lý do +certSign.location=Vị trí +certSign.name=Tên +certSign.submit=Ký PDF + + +#removeCertSign +removeCertSign.title=Xóa chữ ký chứng chỉ +removeCertSign.header=Xóa chứng chỉ số khỏi PDF +removeCertSign.selectPDF=Chọn một tệp PDF: +removeCertSign.submit=Xóa chữ ký + + +#removeBlanks +removeBlanks.title=Xóa trang trắng +removeBlanks.header=Xóa trang trắng +removeBlanks.threshold=Ngưỡng độ trắng của pixel: +removeBlanks.thresholdDesc=Ngưỡng để xác định mức độ trắng của một pixel để được coi là 'Trắng'. 0 = Đen, 255 trắng tinh khiết. +removeBlanks.whitePercent=Phần trăm trắng (%): +removeBlanks.whitePercentDesc=Phần trăm của trang phải là pixel 'trắng' để bị xóa +removeBlanks.submit=Xóa trang trắng + + +#removeAnnotations +removeAnnotations.title=Xóa chú thích +removeAnnotations.header=Xóa chú thích +removeAnnotations.submit=Xóa + + +#compare +compare.title=So sánh +compare.header=So sánh PDF +compare.highlightColor.1=Màu đánh dấu 1: +compare.highlightColor.2=Màu đánh dấu 2: +compare.document.1=Tài liệu 1 +compare.document.2=Tài liệu 2 +compare.submit=So sánh + +#BookToPDF +BookToPDF.title=Sách và truyện tranh sang PDF +BookToPDF.header=Sách sang PDF +BookToPDF.credit=Sử dụng Calibre +BookToPDF.submit=Chuyển đổi + +#PDFToBook +PDFToBook.title=PDF sang sách +PDFToBook.header=PDF sang sách +PDFToBook.selectText.1=Định dạng +PDFToBook.credit=Sử dụng Calibre +PDFToBook.submit=Chuyển đổi + +#sign +sign.title=Ký +sign.header=Ký PDF +sign.upload=Tải lên hình ảnh +sign.draw=Vẽ chữ ký +sign.text=Nhập văn bản +sign.clear=Xóa +sign.add=Thêm + + +#repair +repair.title=Sửa chữa +repair.header=Sửa chữa PDF +repair.submit=Sửa chữa + + +#flatten +flatten.title=Làm phẳng +flatten.header=Làm phẳng PDF +flatten.flattenOnlyForms=Chỉ làm phẳng biểu mẫu +flatten.submit=Làm phẳng + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Ngưỡng góc: +ScannerImageSplit.selectText.2=Đặt góc tuyệt đối tối thiểu cần thiết để xoay hình ảnh (mặc định: 10). +ScannerImageSplit.selectText.3=Dung sai: +ScannerImageSplit.selectText.4=Xác định phạm vi biến đổi màu sắc xung quanh màu nền ước tính (mặc định: 30). +ScannerImageSplit.selectText.5=Diện tích tối thiểu: +ScannerImageSplit.selectText.6=Đặt ngưỡng diện tích tối thiểu cho một ảnh (mặc định: 10000). +ScannerImageSplit.selectText.7=Diện tích đường viền tối thiểu: +ScannerImageSplit.selectText.8=Đặt ngưỡng diện tích đường viền tối thiểu cho một ảnh +ScannerImageSplit.selectText.9=Kích thước viền: +ScannerImageSplit.selectText.10=Đặt kích thước của viền được thêm vào và loại bỏ để ngăn chặn viền trắng trong đầu ra (mặc định: 1). + + +#OCR +ocr.title=OCR / Làm sạch bản Scan +ocr.header=Làm sạch các bản Scan / OCR (Nhận dạng ký tự quang học) +ocr.selectText.1=Chọn ngôn ngữ cần được phát hiện trong PDF (Những ngôn ngữ được liệt kê là những ngôn ngữ hiện đang được phát hiện): +ocr.selectText.2=Tạo tệp văn bản chứa văn bản OCR cùng với PDF đã được OCR +ocr.selectText.3=Sửa các trang đã được scan ở góc nghiêng bằng cách xoay chúng trở lại vị trí +ocr.selectText.4=Làm sạch trang để giảm khả năng OCR sẽ tìm thấy văn bản trong nhiễu nền. (Không thay đổi đầu ra) +ocr.selectText.5=Làm sạch trang để giảm khả năng OCR sẽ tìm thấy văn bản trong nhiễu nền, duy trì làm sạch trong đầu ra. +ocr.selectText.6=Bỏ qua các trang có văn bản tương tác, chỉ OCR các trang là hình ảnh +ocr.selectText.7=Bắt buộc OCR, sẽ OCR mọi trang và xóa tất cả các phần tử văn bản gốc +ocr.selectText.8=Bình thường (Sẽ báo lỗi nếu PDF chứa văn bản) +ocr.selectText.9=Cài đặt bổ sung +ocr.selectText.10=Chế độ OCR +ocr.selectText.11=Xóa hình ảnh sau khi OCR (Xóa TẤT CẢ hình ảnh, chỉ hữu ích nếu là một phần của bước chuyển đổi) +ocr.selectText.12=Loại hiển thị (Nâng cao) +ocr.help=Vui lòng đọc tài liệu này về cách sử dụng cho các ngôn ngữ khác và/hoặc sử dụng không trong docker +ocr.credit=Dịch vụ này sử dụng OCRmyPDF và Tesseract cho OCR. +ocr.submit=Xử lý PDF với OCR + + +#extractImages +extractImages.title=Trích xuất hình ảnh +extractImages.header=Trích xuất hình ảnh +extractImages.selectText=Chọn định dạng hình ảnh để chuyển đổi hình ảnh đã trích xuất +extractImages.submit=Trích xuất + + +#File to PDF +fileToPDF.title=Tệp sang PDF +fileToPDF.header=Chuyển đổi bất kỳ tệp nào sang PDF +fileToPDF.credit=Dịch vụ này sử dụng LibreOffice và Unoconv để chuyển đổi tệp. +fileToPDF.supportedFileTypesInfo=Các loại tệp được hỗ trợ +fileToPDF.supportedFileTypes=Các loại tệp được hỗ trợ nên bao gồm các loại dưới đây, tuy nhiên để có danh sách đầy đủ và cập nhật các định dạng được hỗ trợ, vui lòng tham khảo tài liệu LibreOffice +fileToPDF.submit=Chuyển đổi sang PDF + + +#compress +compress.title=Nén +compress.header=Nén PDF +compress.credit=Dịch vụ này sử dụng Ghostscript để Nén/Tối ưu hóa PDF. +compress.selectText.1=Chế độ thủ công - Từ 1 đến 4 +compress.selectText.2=Mức độ tối ưu hóa: +compress.selectText.3=4 (Tệ cho hình ảnh văn bản) +compress.selectText.4=Chế độ tự động - Tự động điều chỉnh chất lượng để đạt được kích thước PDF chính xác +compress.selectText.5=Kích thước PDF mong muốn (ví dụ: 25MB, 10.8MB, 25KB) +compress.submit=Nén + + +#Add image +addImage.title=Thêm hình ảnh +addImage.header=Thêm hình ảnh vào PDF +addImage.everyPage=Mọi trang? +addImage.upload=Thêm hình ảnh +addImage.submit=Thêm hình ảnh + + +#merge +merge.title=Trộn +merge.header=Trộn nhiều PDF (2+) +merge.sortByName=Sắp xếp theo tên +merge.sortByDate=Sắp xếp theo ngày +merge.removeCertSign=Xóa chữ ký số trong tệp đã trộn? +merge.submit=Trộn + + +#pdfOrganiser +pdfOrganiser.title=Sắp xếp trang +pdfOrganiser.header=Sắp xếp trang PDF +pdfOrganiser.submit=Sắp xếp lại trang +pdfOrganiser.mode=Chế độ +pdfOrganiser.mode.1=Thứ tự trang tùy chỉnh +pdfOrganiser.mode.2=Đảo ngược thứ tự +pdfOrganiser.mode.3=Sắp xếp hai mặt +pdfOrganiser.mode.4=Sắp xếp sách nhỏ +pdfOrganiser.mode.5=Sắp xếp sách nhỏ đóng gáy bên +pdfOrganiser.mode.6=Tách lẻ-chẵn +pdfOrganiser.mode.7=Xóa trang đầu +pdfOrganiser.mode.8=Xóa trang cuối +pdfOrganiser.mode.9=Xóa trang đầu và cuối +pdfOrganiser.mode.10=Trộn lẻ-chẵn +pdfOrganiser.placeholder=(ví dụ: 1,3,2 hoặc 4-8,2,10-12 hoặc 2n-1) + + +#multiTool +multiTool.title=Công cụ đa năng PDF +multiTool.header=Công cụ đa năng PDF +multiTool.uploadPrompts=Tên tệp + +#view pdf +viewPdf.title=Xem PDF +viewPdf.header=Xem PDF + +#pageRemover +pageRemover.title=Xóa trang +pageRemover.header=Xóa trang PDF +pageRemover.pagesToDelete=Các trang cần xóa (Nhập danh sách số trang được phân cách bằng dấu phẩy) : +pageRemover.submit=Xóa trang +pageRemover.placeholder=(ví dụ: 1,2,6 hoặc 1-10,15-30) + + +#rotate +rotate.title=Xoay PDF +rotate.header=Xoay PDF +rotate.selectAngle=Chọn góc xoay (theo bội số của 90 độ): +rotate.submit=Xoay + + +#split-pdfs +split.title=Chia PDF +split.header=Chia PDF +split.desc.1=Các số bạn chọn là số trang bạn muốn thực hiện chia +split.desc.2=Như vậy, việc chọn 1,3,7-9 sẽ chia một tài liệu 10 trang thành 6 PDF riêng biệt với: +split.desc.3=Tài liệu #1: Trang 1 +split.desc.4=Tài liệu #2: Trang 2 và 3 +split.desc.5=Tài liệu #3: Trang 4, 5, 6 và 7 +split.desc.6=Tài liệu #4: Trang 8 +split.desc.7=Tài liệu #5: Trang 9 +split.desc.8=Tài liệu #6: Trang 10 +split.splitPages=Nhập các trang cần chia: +split.submit=Chia + + +#merge +imageToPDF.title=Hình ảnh sang PDF +imageToPDF.header=Hình ảnh sang PDF +imageToPDF.submit=Chuyển đổi +imageToPDF.selectLabel=Tùy chọn điều chỉnh hình ảnh +imageToPDF.fillPage=Lấp đầy trang +imageToPDF.fitDocumentToImage=Điều chỉnh trang theo hình ảnh +imageToPDF.maintainAspectRatio=Giữ tỷ lệ khung hình +imageToPDF.selectText.2=Tự động xoay PDF +imageToPDF.selectText.3=Logic đa tệp (Chỉ được bật khi làm việc với nhiều hình ảnh) +imageToPDF.selectText.4=Trộn thành một PDF duy nhất +imageToPDF.selectText.5=Chuyển đổi thành các PDF riêng biệt + + +#pdfToImage +pdfToImage.title=PDF sang hình ảnh +pdfToImage.header=PDF sang hình ảnh +pdfToImage.selectText=Định dạng hình ảnh +pdfToImage.singleOrMultiple=Loại kết quả trang sang hình ảnh +pdfToImage.single=Một hình ảnh lớn kết hợp tất cả các trang +pdfToImage.multi=Nhiều hình ảnh, mỗi trang một hình ảnh +pdfToImage.colorType=Loại màu +pdfToImage.color=Màu +pdfToImage.grey=Thang độ xám +pdfToImage.blackwhite=Đen trắng (Có thể mất dữ liệu!) +pdfToImage.submit=Chuyển đổi + + +#addPassword +addPassword.title=Thêm mật khẩu +addPassword.header=Thêm mật khẩu (Mã hóa) +addPassword.selectText.1=Chọn PDF để mã hóa +addPassword.selectText.2=Mật khẩu người dùng +addPassword.selectText.3=Độ dài khóa mã hóa +addPassword.selectText.4=Giá trị cao hơn thì mạnh hơn, nhưng giá trị thấp hơn có tính tương thích tốt hơn. +addPassword.selectText.5=Quyền cần đặt (Khuyến nghị sử dụng cùng với mật khẩu chủ sở hữu) +addPassword.selectText.6=Ngăn chặn lắp ráp tài liệu +addPassword.selectText.7=Ngăn chặn trích xuất nội dung +addPassword.selectText.8=Ngăn chặn trích xuất để truy cập +addPassword.selectText.9=Ngăn chặn điền vào biểu mẫu +addPassword.selectText.10=Ngăn chặn sửa đổi +addPassword.selectText.11=Ngăn chặn sửa đổi chú thích +addPassword.selectText.12=Ngăn chặn in +addPassword.selectText.13=Ngăn chặn in các định dạng khác nhau +addPassword.selectText.14=Mật khẩu chủ sở hữu +addPassword.selectText.15=Hạn chế những gì có thể làm với tài liệu sau khi mở (Không được hỗ trợ bởi tất cả các trình đọc) +addPassword.selectText.16=Hạn chế việc mở tài liệu +addPassword.submit=Mã hóa + + +#watermark +watermark.title=Thêm hình mờ +watermark.header=Thêm hình mờ +watermark.selectText.1=Chọn PDF để thêm hình mờ: +watermark.selectText.2=Văn bản hình mờ: +watermark.selectText.3=Cỡ chữ: +watermark.selectText.4=Xoay (0-360): +watermark.selectText.5=Khoảng cách ngang (Khoảng cách giữa mỗi hình mờ theo chiều ngang): +watermark.selectText.6=Khoảng cách dọc (Khoảng cách giữa mỗi hình mờ theo chiều dọc): +watermark.selectText.7=Độ mờ (0% - 100%): +watermark.selectText.8=Loại hình mờ: +watermark.selectText.9=Hình ảnh hình mờ: +watermark.submit=Thêm hình mờ +watermark.type.1=Văn bản +watermark.type.2=Hình ảnh + + +#Change permissions +permissions.title=Thay đổi quyền +permissions.header=Thay đổi quyền +permissions.warning=Cảnh báo để các quyền này không thể thay đổi, bạn nên đặt chúng với mật khẩu thông qua trang thêm mật khẩu +permissions.selectText.1=Chọn PDF để thay đổi quyền +permissions.selectText.2=Quyền cần đặt +permissions.selectText.3=Ngăn chặn lắp ráp tài liệu +permissions.selectText.4=Ngăn chặn trích xuất nội dung +permissions.selectText.5=Ngăn chặn trích xuất để truy cập +permissions.selectText.6=Ngăn chặn điền vào biểu mẫu +permissions.selectText.7=Ngăn chặn sửa đổi +permissions.selectText.8=Ngăn chặn sửa đổi chú thích +permissions.selectText.9=Ngăn chặn in +permissions.selectText.10=Ngăn chặn in các định dạng khác nhau +permissions.submit=Thay đổi + + +#remove password +removePassword.title=Xóa mật khẩu +removePassword.header=Xóa mật khẩu (Giải mã) +removePassword.selectText.1=Chọn PDF để giải mã +removePassword.selectText.2=Mật khẩu +removePassword.submit=Xóa + + +#changeMetadata +changeMetadata.title=Thay đổi metadata +changeMetadata.header=Thay đổi metadata +changeMetadata.selectText.1=Vui lòng chỉnh sửa các biến bạn muốn thay đổi +changeMetadata.selectText.2=Xóa tất cả metadata +changeMetadata.selectText.3=Hiển thị metadata tùy chỉnh: +changeMetadata.author=Tác giả: +changeMetadata.creationDate=Ngày tạo (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Người tạo: +changeMetadata.keywords=Từ khóa: +changeMetadata.modDate=Ngày sửa đổi (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Nhà sản xuất: +changeMetadata.subject=Chủ đề: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Metadata khác: +changeMetadata.selectText.5=Thêm mục metadata tùy chỉnh +changeMetadata.submit=Thay đổi + + +#pdfToPDFA +pdfToPDFA.title=PDF sang PDF/A +pdfToPDFA.header=PDF sang PDF/A +pdfToPDFA.credit=Dịch vụ này sử dụng OCRmyPDF để chuyển đổi PDF/A +pdfToPDFA.submit=Chuyển đổi +pdfToPDFA.tip=Hiện tại không hoạt động với nhiều đầu vào cùng lúc +pdfToPDFA.outputFormat=Định dạng đầu ra +pdfToPDFA.pdfWithDigitalSignature=PDF chứa chữ ký số. Điều này sẽ bị xóa trong bước tiếp theo. + + +#PDFToWord +PDFToWord.title=PDF sang Word +PDFToWord.header=PDF sang Word +PDFToWord.selectText.1=Định dạng tệp đầu ra +PDFToWord.credit=Dịch vụ này sử dụng LibreOffice để chuyển đổi tệp. +PDFToWord.submit=Chuyển đổi + + +#PDFToPresentation +PDFToPresentation.title=PDF sang bài thuyết trình +PDFToPresentation.header=PDF sang bài thuyết trình +PDFToPresentation.selectText.1=Định dạng tệp đầu ra +PDFToPresentation.credit=Dịch vụ này sử dụng LibreOffice để chuyển đổi tệp. +PDFToPresentation.submit=Chuyển đổi + + +#PDFToText +PDFToText.title=PDF sang RTF (Văn bản) +PDFToText.header=PDF sang RTF (Văn bản) +PDFToText.selectText.1=Định dạng tệp đầu ra +PDFToText.credit=Dịch vụ này sử dụng LibreOffice để chuyển đổi tệp. +PDFToText.submit=Chuyển đổi + + +#PDFToHTML +PDFToHTML.title=PDF sang HTML +PDFToHTML.header=PDF sang HTML +PDFToHTML.credit=Dịch vụ này sử dụng pdftohtml để chuyển đổi tệp. +PDFToHTML.submit=Chuyển đổi + + +#PDFToXML +PDFToXML.title=PDF sang XML +PDFToXML.header=PDF sang XML +PDFToXML.credit=Dịch vụ này sử dụng LibreOffice để chuyển đổi tệp. +PDFToXML.submit=Chuyển đổi + +#PDFToCSV +PDFToCSV.title=PDF sang CSV +PDFToCSV.header=PDF sang CSV +PDFToCSV.prompt=Chọn trang để trích xuất bảng +PDFToCSV.submit=Trích xuất + +#split-by-size-or-count +split-by-size-or-count.title=Chia PDF theo kích thước hoặc số lượng +split-by-size-or-count.header=Chia PDF theo kích thước hoặc số lượng +split-by-size-or-count.type.label=Chọn loại chia +split-by-size-or-count.type.size=Theo kích thước +split-by-size-or-count.type.pageCount=Theo số trang +split-by-size-or-count.type.docCount=Theo số tài liệu +split-by-size-or-count.value.label=Nhập giá trị +split-by-size-or-count.value.placeholder=Nhập kích thước (ví dụ: 2MB hoặc 3KB) hoặc số lượng (ví dụ: 5) +split-by-size-or-count.submit=Gửi + + +#overlay-pdfs +overlay-pdfs.header=Chồng lớp tệp PDF +overlay-pdfs.baseFile.label=Chọn tệp PDF nền +overlay-pdfs.overlayFiles.label=Chọn các tệp PDF chồng lớp +overlay-pdfs.mode.label=Chọn chế độ chồng lớp +overlay-pdfs.mode.sequential=Chồng lớp tuần tự +overlay-pdfs.mode.interleaved=Chồng lớp xen kẽ +overlay-pdfs.mode.fixedRepeat=Chồng lớp lặp lại cố định +overlay-pdfs.counts.label=Số lần chồng lớp (cho chế độ lặp lại cố định) +overlay-pdfs.counts.placeholder=Nhập số lần chồng lớp, phân cách bằng dấu phẩy (ví dụ: 2,3,1) +overlay-pdfs.position.label=Chọn vị trí chồng lớp +overlay-pdfs.position.foreground=Nền trước +overlay-pdfs.position.background=Nền sau +overlay-pdfs.submit=Gửi + + +#split-by-sections +split-by-sections.title=Chia PDF theo phần +split-by-sections.header=Chia PDF thành các phần +split-by-sections.horizontal.label=Phân chia theo chiều ngang +split-by-sections.vertical.label=Phân chia theo chiều dọc +split-by-sections.horizontal.placeholder=Nhập số lượng phân chia theo chiều ngang +split-by-sections.vertical.placeholder=Nhập số lượng phân chia theo chiều dọc +split-by-sections.submit=Chia PDF +split-by-sections.merge=Trộn thành một PDF + + +#printFile +printFile.title=In tệp +printFile.header=In tệp vào máy in +printFile.selectText.1=Chọn tệp để in +printFile.selectText.2=Nhập tên máy in +printFile.submit=In + + +#licenses +licenses.nav=Giấy phép +licenses.title=Giấy phép bên thứ 3 +licenses.header=Giấy phép bên thứ 3 +licenses.module=Module +licenses.version=Phiên bản +licenses.license=Giấy phép + +#survey +survey.nav=Khảo sát +survey.title=Khảo sát Stirling-PDF +survey.description=Stirling-PDF không có cài đặt theo dõi nên chúng tôi muốn nghe từ người dùng để cải thiện Stirling-PDF! +survey.please=Vui lòng cân nhắc tham gia khảo sát của chúng tôi! +survey.disabled=(Cửa sổ popup khảo sát sẽ bị vô hiệu hóa trong các bản cập nhật tiếp theo nhưng vẫn tìm thấy ở cuối trang) +survey.button=Tham gia khảo sát +survey.dontShowAgain=Không hiển thị lại + + +#error +error.sorry=Xin lỗi vì sự cố! +error.needHelp=Cần trợ giúp / Phát hiện sự cố? +error.contactTip=Nếu bạn vẫn gặp khó khăn, đừng ngần ngại liên hệ với chúng tôi để được trợ giúp. Bạn có thể gửi ticket trên trang GitHub của chúng tôi hoặc liên hệ qua Discord: +error.404.head=404 - Không tìm thấy trang | Ồ, có vẻ như chúng tôi đã vấp phải lỗi trong mã nguồn! +error.404.1=Chúng tôi không thể tìm thấy trang bạn đang tìm kiếm. +error.404.2=Đã xảy ra lỗi +error.github=Gửi ticket trên GitHub +error.showStack=Hiển thị Stack Trace +error.copyStack=Sao chép Stack Trace +error.githubSubmit=GitHub - Gửi ticket +error.discordSubmit=Discord - Gửi bài đăng hỗ trợ diff --git a/src/main/resources/static/images/flags/vn.svg b/src/main/resources/static/images/flags/vn.svg new file mode 100644 index 00000000000..7e4bac8f4ac --- /dev/null +++ b/src/main/resources/static/images/flags/vn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/main/resources/templates/fragments/languages.html b/src/main/resources/templates/fragments/languages.html index def990dfd3c..264a0f8be9c 100644 --- a/src/main/resources/templates/fragments/languages.html +++ b/src/main/resources/templates/fragments/languages.html @@ -32,4 +32,5 @@ icon Hrvatski icon Norsk icon ไทย + icon Tiếng Việt From 3e7889cee8a9e3c435b897ef2f12f6fc1a9391b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 13:06:48 +0100 Subject: [PATCH 07/50] :memo: Update README: Translation Progress Table (#1597) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- scripts/ignore_translation.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index 9b88b096fa5..71be4a2ad45 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -230,17 +230,17 @@ ignore = [ 'language.direction', ] -[zh_CN] +[vi_VN] ignore = [ 'language.direction', ] -[zh_TW] +[zh_CN] ignore = [ 'language.direction', ] -[vi_VN] +[zh_TW] ignore = [ - 'language.direction', + 'language.direction', ] From 7c5077006d050c34bab7509f88454c80565a2c6e Mon Sep 17 00:00:00 2001 From: an-777 <131597737+an-777@users.noreply.github.com> Date: Fri, 26 Jul 2024 20:19:20 +0800 Subject: [PATCH 08/50] Update messages_zh_TW.properties: Translate English sentence to Traditional Chinese (#1596) * Update messages_zh_TW.properties * fix eof --- src/main/resources/messages_zh_TW.properties | 90 ++++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 65f41fe2ceb..c95659b85f3 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -9,7 +9,7 @@ multiPdfPrompt=選擇多個 PDF 檔案 multiPdfDropPrompt=選擇(或拖放)所有需要的 PDF 檔案 imgPrompt=選擇圖片 genericSubmit=送出 -processTimeWarning=警告:此過程可能需要長達一分鐘,具體取決於檔案大小 +processTimeWarning=警告:此過程可能長達一分鐘,具體取決於檔案大小 pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1): pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函數的清單): goToPage=前往 @@ -66,7 +66,7 @@ error=錯誤 oops=哎呀! help=幫助 goHomepage=前往首頁 -joinDiscord=加入我們的 Discord 服務器 +joinDiscord=加入我們的 Discord 伺服器 seeDockerHub=查看 Docker Hub visitGithub=訪問 GitHub 存儲庫 donate=捐贈 @@ -108,7 +108,7 @@ pipelineOptions.validateButton=驗證 # NAVBAR # ############# navbar.favorite=我的最愛 -navbar.darkmode=暗黑模式 +navbar.darkmode=深色模式 navbar.language=語言 navbar.settings=設定 navbar.allTools=工具 @@ -125,7 +125,7 @@ navbar.sections.edit=檢視與編輯 ############# settings.title=設定 settings.update=有更新可用 -settings.updateAvailable=當前版本為 {0}。歡迎您更新至最新版 ({1})。。 +settings.updateAvailable=當前版本為 {0}。歡迎你更新至最新版 ({1})。。 settings.appVersion=應用版本: settings.downloadOption.title=選擇下載選項(對於單一檔案非壓縮下載): settings.downloadOption.1=在同一視窗中開啟 @@ -139,8 +139,8 @@ settings.cacheInputs.name=輸入檔案下載 settings.cacheInputs.help=開啟記住先前的輸入,做為日後使用 changeCreds.title=變更憑證 -changeCreds.header=更新您的帳戶詳細資訊 -changeCreds.changePassword=您使用的是預設登錄認證。請輸入新密碼 +changeCreds.header=更新你的帳戶詳細資訊 +changeCreds.changePassword=你使用的是預設登錄認證。請輸入新密碼 changeCreds.newUsername=新使用者名稱 changeCreds.oldPassword=目前密碼 changeCreds.newPassword=新密碼 @@ -161,7 +161,7 @@ account.newPassword=新密碼 account.changePassword=修改密碼 account.confirmNewPassword=確認新密碼 account.signOut=登出 -account.yourApiKey=您的 API 金鑰 +account.yourApiKey=你的 API 金鑰 account.syncTitle=將瀏覽器設定與帳戶同步 account.settingsCompare=設定比較: account.property=屬性 @@ -192,26 +192,26 @@ adminUserSettings.changeUserRole=更改使用者身份 adminUserSettings.authenticated=已驗證 -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +database.title=資料庫匯入/匯出 +database.header=資料庫匯入/匯出 +database.fileName=檔案名稱 +database.creationDate=建立日期 +database.fileSize=檔案大小 +database.deleteBackupFile=刪除備份檔案 +database.importBackupFile=匯入備份檔案 +database.downloadBackupFile=下載備份檔案 +database.info_1=在匯入資料時,確保正確的結構是至關重要的。如果你不確定自己在做什麼,請尋求專業人士的建議和支持。結構錯誤可能會導致應用程式故障,甚至完全無法運行。 +database.info_2=上傳時檔案名稱無關緊要。上傳後將重新命名為 backup_user_yyyyMMddHHmm.sql 格式,以確保命名規範一致。 +database.submit=匯入備份 +database.importIntoDatabaseSuccessed=成功匯入資料庫 +database.fileNotFound=檔案未找到 +database.fileNullOrEmpty=檔案不能為空或空白 +database.failedImportFile=匯入檔案失敗 ############# # HOME-PAGE # ############# -home.desc=您的本地主機一站式 PDF 需求解決方案。 +home.desc=你的本地主機一站式 PDF 需求解決方案。 home.searchBar=搜尋功能... @@ -232,7 +232,7 @@ home.split.desc=將 PDF 分割為多個文件 split.tags=頁面操作,劃分,多頁,剪下,伺服器端 home.rotate.title=旋轉 -home.rotate.desc=輕鬆旋轉您的 PDF。 +home.rotate.desc=輕鬆旋轉你的 PDF。 rotate.tags=伺服器端 @@ -254,24 +254,24 @@ home.addImage.desc=在 PDF 的指定位置新增圖片 addImage.tags=img,jpg,圖片,照片 home.watermark.title=新增浮水印 -home.watermark.desc=在您的 PDF 檔案中新增自訂浮水印。 +home.watermark.desc=在你的 PDF 檔案中新增自訂浮水印。 watermark.tags=文字,重複,標籤,自有,版權,商標,img,jpg,圖片,照片 home.permissions.title=修改權限 -home.permissions.desc=修改您的 PDF 檔案權限 +home.permissions.desc=修改你的 PDF 檔案權限 permissions.tags=讀取,寫入,編輯,列印 home.removePages.title=移除 -home.removePages.desc=從您的 PDF 檔案中刪除不需要的頁面。 +home.removePages.desc=從你的 PDF 檔案中刪除不需要的頁面。 removePages.tags=移除頁面,刪除頁面 home.addPassword.title=新增密碼 -home.addPassword.desc=用密碼加密您的 PDF 檔案。 +home.addPassword.desc=用密碼加密你的 PDF 檔案。 addPassword.tags=安全,安全性 home.removePassword.title=移除密碼 -home.removePassword.desc=從您的 PDF 檔案中移除密碼保護。 +home.removePassword.desc=從你的 PDF 檔案中移除密碼保護。 removePassword.tags=安全,解密,安全性,取消密碼,刪除密碼 home.compressPdfs.title=壓縮 @@ -473,7 +473,7 @@ login.header=登入 login.signin=登入 login.rememberme=記住我 login.invalid=使用者名稱或密碼無效。 -login.locked=您的帳戶已被鎖定。 +login.locked=你的帳戶已被鎖定。 login.signinTitle=請登入 login.ssoSignIn=透過織網單一簽入 login.oauth2AutoCreateDisabled=OAuth 2.0 自動建立使用者已停用 @@ -664,15 +664,15 @@ scalePages.submit=送出 #certSign certSign.title=憑證簽章 -certSign.header=使用您的憑證簽章(進行中) +certSign.header=使用你的憑證簽章(進行中) certSign.selectPDF=選擇要簽章的 PDF 檔案: -certSign.jksNote=注意:如果您的證書類型未在下面列出,請使用 keytool 命令行工具將其轉換為 Java Keystore (.jks) 檔。 然後,選擇下面的 .jks 文件選項。 -certSign.selectKey=選擇您的私鑰文件(PKCS#8 格式,可能是 .pem 或 .der): -certSign.selectCert=選擇您的憑證文件(X.509 格式,可能是 .pem 或 .der): -certSign.selectP12=選擇您的 PKCS#12 金鑰庫文件(.p12 或 .pfx)(可選,如果提供,它應包含您的私鑰和憑證): +certSign.jksNote=注意:如果你的證書類型未在下面列出,請使用 keytool 命令行工具將其轉換為 Java Keystore (.jks) 檔。 然後,選擇下面的 .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.password=輸入你的金鑰庫或私鑰密碼(如果有): certSign.showSig=顯示簽章 certSign.reason=原因 certSign.location=位置 @@ -871,7 +871,7 @@ rotate.submit=旋轉 #split-pdfs split.title=分割 PDF split.header=分割 PDF -split.desc.1=您選擇的數字是您希望進行分割的頁碼 +split.desc.1=你選擇的數字是你希望進行分割的頁碼 split.desc.2=因此,選擇 1,3,7-9 將會將一個 10 頁的文件分割為 6 個單獨的 PDF,包括: split.desc.3=文件 #1:頁面 1 split.desc.4=文件 #2:頁面 2 和 3 @@ -978,7 +978,7 @@ removePassword.submit=移除 #changeMetadata changeMetadata.title=標題: changeMetadata.header=變更中繼資料 -changeMetadata.selectText.1=請編輯您希望變更的變數 +changeMetadata.selectText.1=請編輯你希望變更的變數 changeMetadata.selectText.2=刪除所有中繼資料 changeMetadata.selectText.3=顯示自訂中繼資料: changeMetadata.author=作者: @@ -1103,13 +1103,13 @@ licenses.version=版本 licenses.license=許可證 #survey -survey.nav=Survey -survey.title=Stirling-PDF Survey -survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF! -survey.please=Please consider taking our survey! -survey.disabled=(Survey popup will be disabled in following updates but available at foot of page) -survey.button=Take Survey -survey.dontShowAgain=Don't show again +survey.nav=問卷調查 +survey.title=Stirling-PDF 問卷調查 +survey.description=Stirling-PDF 沒有追蹤功能,所以我們希望聽取用戶的意見來改進 Stirling-PDF! +survey.please=請考慮參加我們的問卷調查! +survey.disabled=(問卷調查彈出窗口將在後續更新中停用,但仍可在頁腳處使用) +survey.button=參加問卷調查 +survey.dontShowAgain=不要再次顯示 #error From c1126e57bd742f2e22635d63501f4fd8d4f4616e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 16:01:23 +0100 Subject: [PATCH 09/50] :memo: Update README: Translation Progress Table (#1598) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f3640e4386..7368dc2a6d8 100644 --- a/README.md +++ b/README.md @@ -176,7 +176,7 @@ Stirling PDF currently supports 33! | French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | | Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | | Simplified Chinese (简体中文) (zh_CN) | ![98%](https://geps.dev/progress/98) | -| Traditional Chinese (繁體中文) (zh_TW) | ![96%](https://geps.dev/progress/96) | +| Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | | Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | | Swedish (Svenska) (sv_SE) | ![39%](https://geps.dev/progress/39) | From 543b96c033301110f17d43f210b9158907d400f5 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sat, 27 Jul 2024 09:37:22 +0200 Subject: [PATCH 10/50] Add: Vietnam to the table (#1600) * Add: Vietnam to the table * Update labeler-config.yml --- .github/labeler-config.yml | 3 ++- README.md | 5 +++-- scripts/ignore_translation.toml | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index da9e5e3f946..376ee372f4d 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -1,6 +1,7 @@ Translation: - changed-files: - any-glob-to-any-file: 'src/main/resources/messages_*_*.properties' + - any-glob-to-any-file: 'scripts/ignore_translation.toml' Front End: - changed-files: @@ -45,4 +46,4 @@ Docker: Test: - changed-files: - any-glob-to-any-file: 'cucumber/**/*' - - any-glob-to-any-file: 'test*' \ No newline at end of file + - any-glob-to-any-file: 'test*' diff --git a/README.md b/README.md index 7368dc2a6d8..847c88def8d 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR ## Supported Languages -Stirling PDF currently supports 33! +Stirling PDF currently supports 34! | Language | Progress | | ------------------------------------------- | -------------------------------------- | @@ -202,6 +202,7 @@ Stirling PDF currently supports 33! | Croatian (Hrvatski) (hr_HR) | ![95%](https://geps.dev/progress/95) | | Norwegian (Norsk) (no_NB) | ![96%](https://geps.dev/progress/96) | | Thai (ไทย) (th_TH) | ![100%](https://geps.dev/progress/100) | +| Vietnamese (Tiếng Việt) (vi_VN) | ![99%](https://geps.dev/progress/99) | ## Contributing (creating issues, translations, fixing bugs, etc.) @@ -213,7 +214,7 @@ Stirling PDF allows easy customization of the app. Includes things like - Custom application name -- Custom slogans, icons, HTML, images CSS etc (via file overrides) +- Custom slogans, icons, HTML, images CSS etc (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 diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index 71be4a2ad45..aabd537d3ec 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -233,6 +233,9 @@ ignore = [ [vi_VN] ignore = [ 'language.direction', + 'pipeline.title', + 'pipelineOptions.pipelineHeader', + 'showJS.tags', ] [zh_CN] From 47de0f84db18ee8784471250fd7690d5b061a2eb Mon Sep 17 00:00:00 2001 From: DeH40 Date: Sat, 27 Jul 2024 16:11:16 +0800 Subject: [PATCH 11/50] Update messages_zh_CN.properties (#1599) Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- src/main/resources/messages_zh_CN.properties | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index e10b1beeb09..28af7518e6a 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -192,21 +192,21 @@ adminUserSettings.changeUserRole=更改用户角色 adminUserSettings.authenticated=已验证 -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +database.title=数据库 导入/导出 +database.header=数据库 导入/导出 +database.fileName=文件名 +database.creationDate=创建时间 +database.fileSize=文件大小 +database.deleteBackupFile=删除备份文件 +database.importBackupFile=导入备份文件 +database.downloadBackupFile=下载备份文件 +database.info_1=导入数据时,确保结构正确至关重要。如果您不确定自己在做什么,请寻求专业人士的建议和支持。结构错误会导致应用程序故障,甚至完全无法运行应用程序。 +database.info_2=上传文件时,文件名并不重要。上传后,文件名将重命名为 backup_user_yyyyMMddHHmm.sql,以确保命名规范的一致性。 +database.submit=导入备份 +database.importIntoDatabaseSuccessed=导入数据库成功 +database.fileNotFound=未找到文件 +database.fileNullOrEmpty=文件不能为空 +database.failedImportFile=导入文件失败 ############# # HOME-PAGE # From c899f605a9205f8845d9caa818c53a0d451a1a62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 09:11:41 +0100 Subject: [PATCH 12/50] :memo: Update README: Translation Progress Table (#1601) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 847c88def8d..c95b8b8377c 100644 --- a/README.md +++ b/README.md @@ -175,7 +175,7 @@ Stirling PDF currently supports 34! | German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | | French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | | Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | -| Simplified Chinese (简体中文) (zh_CN) | ![98%](https://geps.dev/progress/98) | +| Simplified Chinese (简体中文) (zh_CN) | ![99%](https://geps.dev/progress/99) | | Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | | Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | From 065f53e5771e8f70bf836143c47eb3f944570314 Mon Sep 17 00:00:00 2001 From: Ludy Date: Wed, 31 Jul 2024 19:49:52 +0200 Subject: [PATCH 13/50] Optimize Editor and Git Ignore Settings for Improved Consistency and Security (#1611) --- .github/labels.yml | 4 +++- .gitignore | 47 ++++++++++++++++++++++++++++++++------ .vscode/settings.json | 53 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.github/labels.yml b/.github/labels.yml index c7f239730ab..1d717e6f85e 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -88,4 +88,6 @@ description: "API-related issues or pull requests" - name: "Test" color: "FF9E1F" - description: "Testing-related issues or pull requests" \ No newline at end of file + description: "Testing-related issues or pull requests" +- name: "Stale" + color: "000000" diff --git a/.gitignore b/.gitignore index 1a241d6f6dd..ba9d755d98d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ - - ### Eclipse ### .metadata bin/ @@ -22,7 +20,6 @@ customFiles/ configs/ watchedFolders/ - # Gradle .gradle .lock @@ -119,12 +116,48 @@ watchedFolders/ *.db /build -/.vscode -/.idea +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*.pyo + +# Virtual environments +.env* +.venv* +env*/ +venv*/ +ENV/ +env.bak/ +venv.bak/ + +# VS Code +/.vscode/**/* +!/.vscode/settings.json + +# IntelliJ IDEA +.idea/ +*.iml +out/ # Ignore Mac DS_Store files .DS_Store **/.DS_Store -#cucumber -/cucumber/reports/** \ No newline at end of file +# cucumber +/cucumber/reports/** + +# Certs +*.p12 +*.pem +*.crt +*.cer +*.der +*.key +*.csr + +# cache +.ruff_cache +.mypy_cache +.pytest_cache +.ipynb_checkpoints + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..b0d31dae998 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,53 @@ +{ + "java.compile.nullAnalysis.mode": "automatic", + "files.eol": "auto", + "java.configuration.updateBuildConfiguration": "interactive", + "black-formatter.args": ["--line-length", "127"], + "flake8.args": ["--max-line-length", "127"], + "pylint.args": ["max-line-length", "127"], + "[java]": { + "editor.tabSize": 4, + "editor.detectIndentation": false, + "editor.rulers": [127] + }, + "[python]": { + "editor.tabSize": 2, + "editor.detectIndentation": false, + "editor.rulers": [127] + }, + "[gradle-build]": { + "editor.tabSize": 4, + "editor.detectIndentation": false, + "editor.rulers": [127] + }, + "[gradle]": { + "editor.tabSize": 4, + "editor.detectIndentation": false, + "editor.rulers": [127] + }, + "[html]": { + "editor.tabSize": 2, + "editor.rulers": [127], + "files.trimFinalNewlines": false, + "files.insertFinalNewline": false + }, + "[javascript]": { + "editor.tabSize": 2, + "editor.rulers": [127] + }, + "[yaml]": { + "files.trimFinalNewlines": false, + "files.insertFinalNewline": false + }, + "diffEditor.maxComputationTime": 0, + "editor.wordSegmenterLocales": null, + "editor.guides.bracketPairs": "active", + "editor.guides.bracketPairsHorizontal": "active", + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, + "editor.indentSize": "tabSize", + "editor.stickyScroll.enabled": false, + "editor.minimap.enabled": false, + "editor.formatOnSave": true +} From 0dfb4d77c059f8f994c471352cd27426462c8b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aindri=C3=BA=20Mac=20Giolla=20Eoin?= Date: Wed, 31 Jul 2024 19:17:01 +0100 Subject: [PATCH 14/50] Added Irish Language (#1607) Adding Irish Language --- scripts/ignore_translation.toml | 6 + src/main/resources/messages_ga_IE.properties | 1126 +++++++++++++++++ src/main/resources/static/images/flags/ie.svg | 7 + .../templates/fragments/languages.html | 1 + 4 files changed, 1140 insertions(+) create mode 100644 src/main/resources/messages_ga_IE.properties create mode 100644 src/main/resources/static/images/flags/ie.svg diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index aabd537d3ec..06a1addb253 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -43,6 +43,12 @@ ignore = [ 'watermark.type.1', ] + +[ga_IE] +ignore = [ + 'language.direction', +] + [el_GR] ignore = [ 'language.direction', diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties new file mode 100644 index 00000000000..08993244fd9 --- /dev/null +++ b/src/main/resources/messages_ga_IE.properties @@ -0,0 +1,1126 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Roghnaigh PDF(s) +multiPdfPrompt=Roghnaigh PDFs (2+) +multiPdfDropPrompt=Roghnaigh (nó tarraing & scaoil) gach PDF atá uait +imgPrompt=Roghnaigh Íomhá(í) +genericSubmit=Cuir isteach +processTimeWarning=Rabhadh: Féadfaidh an próiseas seo suas le nóiméad a ghlacadh ag brath ar mhéid an chomhaid +pageOrderPrompt=Ordú Leathanach Saincheaptha (Iontráil liosta uimhreacha leathanaigh nó Feidhmeanna ar nós 2n+1 le camóga deighilte): +pageSelectionPrompt=Roghnú Leathanach Saincheaptha (Iontráil liosta leathanach scartha le camóg d'uimhreacha 1,5,6 nó Feidhmeanna ar nós 2n+1): +goToPage=Téigh +true=Fíor +false=Bréagach +unknown=Anaithnid +save=Sábháil +saveToBrowser=Sábháil go Brabhsálaí +close=Dún +filesSelected=comhaid roghnaithe +noFavourites=Níor cuireadh aon cheanáin leis +downloadComplete=Íosluchtaigh Críochnaithe +bored=Leamh Ag Feitheamh? +alphabet=Aibítir +downloadPdf=Íoslódáil PDF +text=Téacs +font=Cló +selectFillter=-- Roghnaigh -- +pageNum=Uimhir an Leathanaigh +sizes.small=Beaga +sizes.medium=Mheán +sizes.large=Mór +sizes.x-large=X-Mór +error.pdfPassword=Tá pasfhocal ar an Doiciméad PDF agus níor soláthraíodh an pasfhocal nó bhí sé mícheart +delete=Scrios +username=Ainm úsáideora +password=Pasfhocal +welcome=Fáilte +property=Maoin +black=Dubh +white=Bán +red=Dearg +green=Glas +blue=Gorm +custom=Saincheaptha... +WorkInProgess=Obair idir lámha, B’fhéidir nach n-oibreoidh sí nó nach mbeidh bugaí ann, Tuairiscigh aon fhadhbanna le do thoil! +poweredBy=Cumhachtaithe ag +yes=Tá +no=Níl +changedCredsMessage=Dintiúir athraithe! +notAuthenticatedMessage=Úsáideoir gan fíordheimhniú. +userNotFoundMessage=Úsáideoir gan aimsiú. +incorrectPasswordMessage=Tá an pasfhocal reatha mícheart. +usernameExistsMessage=Tá Ainm Úsáideora Nua ann cheana féin. +invalidUsernameMessage=Ainm úsáideora neamhbhailí, ní féidir ach litreacha, uimhreacha agus na carachtair speisialta seo a leanas @._+- a bheith san ainm úsáideora nó ní mór gur seoladh ríomhphoist bailí é. +confirmPasswordErrorMessage=Ní mór Pasfhocal Nua agus Deimhnigh Pasfhocal Nua a bheith ag teacht leis. +deleteCurrentUserMessage=Ní féidir an t-úsáideoir atá logáilte isteach faoi láthair a scriosadh. +deleteUsernameExistsMessage=Níl an t-ainm úsáideora ann agus ní féidir é a scriosadh. +downgradeCurrentUserMessage=Ní féidir ról an úsáideora reatha a íosghrádú +downgradeCurrentUserLongMessage=Ní féidir ról an úsáideora reatha a íosghrádú. Mar sin, ní thaispeánfar an t-úsáideoir reatha. +userAlreadyExistsOAuthMessage=Tá an t-úsáideoir ann cheana mar úsáideoir OAuth2. +userAlreadyExistsWebMessage=Tá an t-úsáideoir ann cheana féin mar úsáideoir gréasáin. +error=Earráid +oops=Úps! +help=Cabhrú +goHomepage=Téigh go Leathanach Baile +joinDiscord=Cláraigh lenár bhfreastalaí Discord +seeDockerHub=Féach Docker Hub +visitGithub=Tabhair cuairt ar Github Stór +donate=Síntiúis +color=Dath +sponsor=Urraitheoir +info=Eolas + + + +############### +# Pipeline # +############### +pipeline.header=Roghchlár Píblíne (Beta) +pipeline.uploadButton=Uaslódáil Saincheaptha +pipeline.configureButton=Cumraigh +pipeline.defaultOption=Saincheaptha +pipeline.submitButton=Cuir isteach +pipeline.help=Cabhair Píblíne +pipeline.scanHelp=Cabhair Scanadh Fillteán +pipeline.deletePrompt=An bhfuil tú cinnte gur mhaith leat píblíne a scriosadh + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Cumraíocht Píblíne +pipelineOptions.pipelineNameLabel=Ainm Píblíne +pipelineOptions.saveSettings=Sábháil Socruithe Oibriúcháin +pipelineOptions.pipelineNamePrompt=Cuir isteach ainm na píblíne anseo +pipelineOptions.selectOperation=Roghnaigh Oibríocht +pipelineOptions.addOperationButton=Cuir oibríocht leis +pipelineOptions.pipelineHeader=Píblíne: +pipelineOptions.saveButton=Íosluchtaigh +pipelineOptions.validateButton=Bailíochtaigh + + + + +############# +# NAVBAR # +############# +navbar.favorite=Ceanáin +navbar.darkmode=Mód Dorcha +navbar.language=Teangacha +navbar.settings=Socruithe +navbar.allTools=Uirlisí +navbar.multiTool=Uirlisí Il +navbar.sections.organize=Eagraigh +navbar.sections.convertTo=Tiontaigh go PDF +navbar.sections.convertFrom=Tiontaigh ó PDF +navbar.sections.security=Comhartha & Slándáil +navbar.sections.advance=Casta +navbar.sections.edit=Féach ar & Cuir in Eagar + +############# +# SETTINGS # +############# +settings.title=Socruithe +settings.update=Nuashonrú ar fáil +settings.updateAvailable=Is é {0} an leagan suiteáilte reatha. Tá leagan nua ({1}) ar fáil. +settings.appVersion=Leagan Aipe: +settings.downloadOption.title=Roghnaigh rogha íoslódála (Le haghaidh íoslódálacha comhad amháin seachas zip): +settings.downloadOption.1=Oscail sa bhfuinneog chéanna +settings.downloadOption.2=Oscail i bhfuinneog nua +settings.downloadOption.3=Íoslódáil an comhad +settings.zipThreshold=Comhaid zip nuair a sháraíonn líon na gcomhad íoslódála +settings.signOut=Logáil Amach +settings.accountSettings=Socruithe cuntas +settings.bored.help=Cumasaíonn sé cluiche uibheacha Cásca +settings.cacheInputs.name=Sábháil ionchuir fhoirm +settings.cacheInputs.help=Cumasaigh ionchuir a úsáideadh roimhe seo a stóráil le haghaidh ritheanna amach anseo + +changeCreds.title=Athraigh Dintiúir +changeCreds.header=Nuashonraigh Sonraí do Chuntais +changeCreds.changePassword=Tá dintiúir réamhshocraithe logáil isteach á úsáid agat. Cuir isteach pasfhocal nua le do thoil +changeCreds.newUsername=Ainm Úsáideora Nua +changeCreds.oldPassword=Pasfhocal reatha +changeCreds.newPassword=Focal Faire Nua +changeCreds.confirmNewPassword=Deimhnigh Pasfhocal Nua +changeCreds.submit=Cuir Athruithe isteach + + + +account.title=Socruithe cuntas +account.accountSettings=Socruithe cuntas +account.adminSettings=Socruithe Riaracháin - Féach ar agus Cuir Úsáideoirí Leis +account.userControlSettings=Socruithe Rialaithe Úsáideora +account.changeUsername=Athraigh Ainm Úsáideora +account.newUsername=Ainm Úsáideora Nua +account.password=Pasfhocal Deimhnithe +account.oldPassword=Sean Pasfhocal +account.newPassword=Focal Faire Nua +account.changePassword=Athraigh do phasfhocal +account.confirmNewPassword=Deimhnigh Pasfhocal Nua +account.signOut=Logáil Amach +account.yourApiKey=D'Eochair API +account.syncTitle=Sioncronaigh socruithe brabhsálaí leis an gCuntas +account.settingsCompare=Comparáid Socruithe: +account.property=Maoin +account.webBrowserSettings=Socrú Brabhsálaí Gréasáin +account.syncToBrowser=Cuntas Sync -> Brabhsálaí +account.syncToAccount=Cuntas Sioncronaigh <- Brabhsálaí + + +adminUserSettings.title=Socruithe Rialaithe Úsáideora +adminUserSettings.header=Socruithe Rialaithe Úsáideoir Riaracháin +adminUserSettings.admin=Riarachán +adminUserSettings.user=Úsáideoir +adminUserSettings.addUser=Cuir Úsáideoir Nua leis +adminUserSettings.deleteUser=Scrios Úsáideoir +adminUserSettings.confirmDeleteUser=Ar cheart an t-úsáideoir a scriosadh? +adminUserSettings.usernameInfo=Ní féidir ach litreacha, uimhreacha agus na carachtair speisialta seo a leanas @._+- a bheith san ainm úsáideora nó ní mór gur seoladh ríomhphoist bailí é. +adminUserSettings.roles=Róil +adminUserSettings.role=Ról +adminUserSettings.actions=Gníomhartha +adminUserSettings.apiUser=Úsáideoir API Teoranta +adminUserSettings.extraApiUser=Úsáideoir API Teoranta breise +adminUserSettings.webOnlyUser=Úsáideoir Gréasáin Amháin +adminUserSettings.demoUser=Úsáideoir Taispeána (Gan socruithe saincheaptha) +adminUserSettings.internalApiUser=Úsáideoir API Inmheánach +adminUserSettings.forceChange=Cuir iallach ar an úsáideoir pasfhocal a athrú ar logáil isteach +adminUserSettings.submit=Sábháil Úsáideoir +adminUserSettings.changeUserRole=Athraigh Ról an Úsáideora +adminUserSettings.authenticated=Fíordheimhnithe + + +database.title=Iompórtáil / Easpórtáil Bunachar Sonraí +database.header=Iompórtáil / Easpórtáil Bunachar Sonraí +database.fileName=Ainm comhaid +database.creationDate=Dáta Cruthaithe +database.fileSize=Méid an Chomhaid +database.deleteBackupFile=Scrios Comhad Cúltaca +database.importBackupFile=Iompórtáil Comhad Cúltaca +database.downloadBackupFile=Íoslódáil an comhad cúltaca +database.info_1=Agus sonraí á n-allmhairiú, tá sé ríthábhachtach an struchtúr ceart a chinntiú. Mura bhfuil tú cinnte faoina bhfuil ar siúl agat, iarr comhairle agus tacaíocht ó ghairmí. Féadfaidh earráid sa struchtúr a bheith ina chúis le mífheidhmeanna iarratais, suas go dtí agus lena n-áirítear an neamhábaltacht iomlán an t-iarratas a rith. +database.info_2=Ní hionann ainm an chomhaid agus é á uaslódáil. Déanfar é a athainmniú ina dhiaidh sin chun an fhormáid backup_user_yyyyMMddHHmm.sql a leanúint, ag cinntiú go bhfuil coinbhinsiún ainmniúcháin comhsheasmhach ann. +database.submit=Iompórtáil Cúltaca +database.importIntoDatabaseSuccessed=D'éirigh leis an allmhairiú isteach sa bhunachar sonraí +database.fileNotFound=Comhad gan aimsiú +database.fileNullOrEmpty=Níor cheart go mbeadh an comhad ar neamhní nó folamh +database.failedImportFile=Theip ar iompórtáil an chomhaid + +############# +# HOME-PAGE # +############# +home.desc=Do shiopa ilfhreastail arna óstáil go háitiúil do do riachtanais PDF go léir. +home.searchBar=Cuardaigh gnéithe... + + +home.viewPdf.title=Féach PDF +home.viewPdf.desc=Féach ar, nótáil, cuir téacs nó íomhánna leis +viewPdf.tags=amharc, léamh, anótáil, téacs, íomhá + +home.multiTool.title=Il-uirlis PDF +home.multiTool.desc=Cumaisc, Rothlaigh, Atheagraigh, agus Bain leathanaigh +multiTool.tags=Il-Uirlis, Iloibríocht, Chomhéadain, cliceáil tarraing, ceann tosaigh, taobh an chliaint, idirghníomhach, intractable, bog + +home.merge.title=Cumaisc +home.merge.desc=Go héasca chumasadh go leor PDFanna isteach i gceann amháin. +merge.tags=chumasadh,Oibríochtaí Leathanaigh,Cúl-deireadh,taobh freastalaí + +home.split.title=Scoilt +home.split.desc=Scoilt comhaid PDF isteach i ndoiciméid iolracha +split.tags=Oibríochtaí leathanach, roinnt, Leathanach Il, gearrtha, taobh freastalaí + +home.rotate.title=Rothlaigh +home.rotate.desc=Rothlaigh do PDFs go héasca. +rotate.tags=taobh freastalaí + + +home.imageToPdf.title=Íomhá go PDF +home.imageToPdf.desc=Tiontaigh íomhá (PNG, JPEG, GIF) go PDF. +imageToPdf.tags=comhshó, img, jpg, pictiúr, grianghraf + +home.pdfToImage.title=PDF go íomhá +home.pdfToImage.desc=Tiontaigh PDF a íomhá. (PNG, JPEG, GIF) +pdfToImage.tags=comhshó, img, jpg, pictiúr, grianghraf + +home.pdfOrganiser.title=Eagraigh +home.pdfOrganiser.desc=Bain/Atheagraigh na leathanaigh in ord ar bith +pdfOrganiser.tags=déphléacsacha, cothrom, corr, sórtáil, bogadh + + +home.addImage.title=Cuir íomhá leis +home.addImage.desc=Cuireann sé íomhá ar shuíomh socraithe ar an PDF +addImage.tags=img, jpg, pictiúr, grianghraf + +home.watermark.title=Cuir Uisce leis +home.watermark.desc=Cuir comhartha uisce saincheaptha le do dhoiciméad PDF. +watermark.tags=Téacs, athrá, lipéad, úinéireacht, cóipcheart, trádmharc, img, jpg, pictiúr, grianghraf + +home.permissions.title=Athrú Ceadanna +home.permissions.desc=Athraigh ceadanna do dhoiciméad PDF +permissions.tags=léamh, scríobh, cuir in eagar, priontáil + + +home.removePages.title=Bain +home.removePages.desc=Scrios leathanaigh nach dteastaíonn ó do dhoiciméad PDF. +removePages.tags=Bain leathanaigh, scrios leathanaigh + +home.addPassword.title=Cuir Pasfhocal leis +home.addPassword.desc=Criptigh do dhoiciméad PDF le focal faire. +addPassword.tags=slán, slándáil + +home.removePassword.title=Bain Pasfhocal +home.removePassword.desc=Bain cosaint phasfhocal ó do dhoiciméad PDF. +removePassword.tags=slán, Díchriptiú, slándáil, Unpassword, scrios pasfhocal + +home.compressPdfs.title=Comhbhrúigh +home.compressPdfs.desc=Comhbhrúigh PDFanna chun a méid comhaid a laghdú. +compressPdfs.tags=squish, beag, beag bídeach + + +home.changeMetadata.title=Athraigh Meiteashonraí +home.changeMetadata.desc=Athraigh/Bain/Cuir meiteashonraí ó dhoiciméad PDF +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats + +home.fileToPDF.title=Comhad a thiontú go PDF +home.fileToPDF.desc=Tiontaigh beagnach aon chomhad go PDF (DOCX, PNG, XLS, PPT, TXT agus go leor eile) +fileToPDF.tags=claochlú, formáid, doiciméad, pictiúr, sleamhnán, téacs, comhshó, oifig, docs, focal, excel, powerpoint + +home.ocr.title=Scananna OCR / Glanta +home.ocr.desc=Scanann glantachán agus aimsíonn sé téacs ó íomhánna laistigh de PDF agus cuireann sé isteach arís é mar théacs. +ocr.tags=aithint, téacs, íomhá, scanadh, léamh, a aithint, a bhrath, in eagar + + +home.extractImages.title=Sliocht Íomhánna +home.extractImages.desc=Sliochtann sé gach íomhá ó PDF agus sábhálann sé iad a zip +extractImages.tags=pictiúr, grianghraf, shábháil, cartlann, zip, gabháil, grab + +home.pdfToPDFA.title=PDF go PDF/A +home.pdfToPDFA.desc=Tiontaigh PDF go PDF/A le haghaidh stórála fadtéarmach +pdfToPDFA.tags=cartlann, fadtéarmach, caighdeánach, comhshó, stóráil, caomhnú + +home.PDFToWord.title=PDF a thiontú go Word +home.PDFToWord.desc=Tiontaigh PDF go formáidí Word (DOC, DOCX agus ODT) +PDFToWord.tags=doc, docx, odt, focal, claochlú, formáid, comhshó, oifig, microsoft, docfile + +home.PDFToPresentation.title=PDF a chur i láthair +home.PDFToPresentation.desc=Tiontaigh PDF go formáidí Léirithe (PPT, PPTX agus ODP) +PDFToPresentation.tags=sleamhnáin, seó, oifig, microsoft + +home.PDFToText.title=PDF go RTF (Téacs) +home.PDFToText.desc=Tiontaigh PDF go Téacs nó formáid RTF +PDFToText.tags=richformat, richtextformat, formáid téacs saibhir + +home.PDFToHTML.title=PDF go HTML +home.PDFToHTML.desc=Tiontaigh HTML i bhformáid PDF +PDFToHTML.tags=ábhar gréasáin, cairdiúil don bhrabhsálaí + + +home.PDFToXML.title=PDF go XML +home.PDFToXML.desc=Tiontaigh PDF i bhformáid XML +PDFToXML.tags=asbhaint sonraí, ábhar struchtúrtha, idirghabhála, claochlú, thiontú + +home.ScannerImageSplit.title=Braith / Scoilt grianghraif Scanta +home.ScannerImageSplit.desc=Scoilteann sé grianghraif iolracha ó laistigh de ghrianghraf/PDF +ScannerImageSplit.tags=ar leithligh, a bhrath go huathoibríoch, scanadh, il-grianghraf, eagrú + +home.sign.title=Comhartha +home.sign.desc=Cuireann síniú le PDF trí líníocht, téacs nó íomhá +sign.tags=údarú, tosaigh, síniú tarraingthe, comhartha téacs, íomhá-shíniú + +home.flatten.title=Comhcheangail +home.flatten.desc=Bain gach eilimint agus foirm idirghníomhach as PDF +flatten.tags=statach, díghníomhachtú, neamh-idirghníomhach, sruthlíniú + +home.repair.title=Deisiúchán +home.repair.desc=Déanann sé iarracht PDF truaillithe/briste a dheisiú +repair.tags=deisiú, athchóiriú, ceartú, aisghabháil + +home.removeBlanks.title=Bain leathanaigh Bhána +home.removeBlanks.desc=Aimsíonn agus baintear leathanaigh bhána de dhoiciméad +removeBlanks.tags=glanta, sruthlíniú, neamhábhar, eagrú + +home.removeAnnotations.title=Bain Anótálacha +home.removeAnnotations.desc=Baintear gach trácht/nóta de PDF +removeAnnotations.tags=tuairimí, aibhsiú, nótaí, marcáil, bain + +home.compare.title=Déan comparáid idir +home.compare.desc=Déanann sé na difríochtaí idir 2 Dhoiciméad PDF a chur i gcomparáid agus a thaispeáint +compare.tags=idirdhealú, codarsnacht, athruithe, anailís + +home.certSign.title=Sínigh le Deimhniú +home.certSign.desc=Síníonn sé PDF le Deimhniú/Eochair (PEM/P12) +certSign.tags=fíordheimhnigh, PEM, P12, oifigiúil, criptigh + +home.removeCertSign.title=Bain Comhartha Teastais +home.removeCertSign.desc=Bain síniú teastas ó PDF +removeCertSign.tags=fíordheimhnigh, PEM, P12, oifigiúil, dhíchriptiú + +home.pageLayout.title=Leagan Amach Illeathanaigh +home.pageLayout.desc=Cumaisc leathanaigh iolracha de dhoiciméad PDF isteach i leathanach amháin +pageLayout.tags=chumasc, ilchodach, aon-amharc, a eagrú + +home.scalePages.title=Coigeartaigh méid/scála an leathanaigh +home.scalePages.desc=Athraigh méid/scála leathanaigh agus/nó a bhfuil ann. +scalePages.tags=athraigh, modhnaigh, toise, cuir in oiriúint + +home.pipeline.title=Píblíne (Ardleibhéal) +home.pipeline.desc=Rith gníomhartha iolracha ar PDFanna trí scripteanna píblíne a shainiú +pipeline.tags=uathoibriú, seicheamh, scriptithe, baisc-phróiseas + +home.add-page-numbers.title=Cuir Uimhreacha Leathanaigh leis +home.add-page-numbers.desc=Cuir uimhreacha Leathanach leis an doiciméad i suíomh socraithe +add-page-numbers.tags=leathanach, lipéad, eagraigh, innéacs + +home.auto-rename.title=Comhad PDF a athainmniú go huathoibríoch +home.auto-rename.desc=Athainmníonn Auto comhad PDF bunaithe ar a cheanntásc braite +auto-rename.tags=auto-bhrath, ceanntásc-bhunaithe, a eagrú, a athlipéadú + +home.adjust-contrast.title=Coigeartaigh Dathanna/Codarsnacht +home.adjust-contrast.desc=Coigeartaigh Codarsnacht, Sáithiú agus Gile PDF +adjust-contrast.tags=dath-cheartú, tune, a mhodhnú, a fheabhsú + +home.crop.title=PDF a ghearradh +home.crop.desc=Bearr PDF chun a mhéid a laghdú (coimeádann an téacs!) +crop.tags=Baile Átha Troim, Laghdaigh, Cuir in eagar, Cruth + +home.autoSplitPDF.title=Leathanaigh Scoilte Uathoibríoch +home.autoSplitPDF.desc=Auto Scoilt PDF Scanta le Cód QR scoilteoir leathanach scanadh fisiciúil +autoSplitPDF.tags=QR-bhunaithe, ar leith, scanadh-deighleog, eagrú + +home.sanitizePdf.title=Sláintíocht +home.sanitizePdf.desc=Bain scripteanna agus gnéithe eile ó chomhaid PDF +sanitizePdf.tags=glan, slán, sábháilte, bain bagairtí + +home.URLToPDF.title=URL / Láithreán Gréasáin go PDF +home.URLToPDF.desc=Tiontaíonn aon http(s) URL go PDF +URLToPDF.tags=gréasán a ghabháil, a shábháil-leathanach, gréasán-go-doc, cartlann + +home.HTMLToPDF.title=HTML go PDF +home.HTMLToPDF.desc=Tiontaíonn aon chomhad HTML nó zip go PDF +HTMLToPDF.tags=marcáil, ábhar gréasáin, claochlú, tiontú + + +home.MarkdownToPDF.title=Marcáil síos go PDF +home.MarkdownToPDF.desc=Tiontaíonn aon chomhad Markdown go PDF +MarkdownToPDF.tags=marcáil, ábhar gréasáin, claochlú, tiontú + + +home.getPdfInfo.title=Faigh GACH Eolas ar PDF +home.getPdfInfo.desc=Grab aon fhaisnéis agus is féidir ar PDFs +getPdfInfo.tags=faisnéis, sonraí, staitisticí, staitisticí + + +home.extractPage.title=Sliocht leathanach(eacha) +home.extractPage.desc=Sleachta roghnaigh leathanaigh ó PDF +extractPage.tags=sliocht + + +home.PdfToSinglePage.title=PDF go leathanach mór amháin +home.PdfToSinglePage.desc=Cumasc gach leathanach PDF isteach i leathanach mór amháin +PdfToSinglePage.tags=leathanach amháin + + +home.showJS.title=Taispeáin Javascript +home.showJS.desc=Déanann sé cuardach agus taispeáint ar aon JS a instealladh isteach i PDF +showJS.tags=JS + +home.autoRedact.title=Auto Redact +home.autoRedact.desc=Auto Redacts (Blacks out) téacs i PDF bunaithe ar an téacs ionchuir +autoRedact.tags=Dearg, Folaigh, dubh amach, dubh, marcóir, i bhfolach + +home.tableExtraxt.title=Ó CSV go PDF +home.tableExtraxt.desc=Sleachta Táblaí ó PDF agus é a thiontú go CSV +tableExtraxt.tags=CSV, Eastóscadh Tábla, sliocht, tiontú + + +home.autoSizeSplitPDF.title=Auto Scoilte de réir Méid/Comhaireamh +home.autoSizeSplitPDF.desc=Scoilt PDF amháin i ndoiciméid iolracha bunaithe ar mhéid, líon na leathanach, nó comhaireamh doiciméad +autoSizeSplitPDF.tags=pdf, scoilt, doiciméad, eagraíocht + + +home.overlay-pdfs.title=Forleagan PDF +home.overlay-pdfs.desc=Forleagain PDF ar bharr PDF eile +overlay-pdfs.tags=Forleagan + +home.split-by-sections.title=Scoilt PDF de réir ailt +home.split-by-sections.desc=Roinn gach leathanach de PDF i gcodanna cothrománacha agus ingearacha níos lú +split-by-sections.tags=Roinn Scoilt, Roinn, Saincheap + +home.AddStampRequest.title=Cuir Stampa go PDF +home.AddStampRequest.desc=Cuir téacs leis nó cuir stampaí íomhá leis ag láithreacha socraithe +AddStampRequest.tags=Stampa, Cuir íomhá, íomhá lár, Uisce, PDF, Leabú, Saincheap + + +home.PDFToBook.title=PDF go Leabhar +home.PDFToBook.desc=Tiontaíonn sé PDF go formáidí Leabhar/Comic ag baint úsáide as calibre +PDFToBook.tags=Leabhar, Comic, Calibre, Tiontaigh, manga, amazon, kindle, epub, mobi, azw3, docx, rtf, txt, html, lit, fb2, pdb, lrf + +home.BookToPDF.title=Leabhar a thiontú go PDF +home.BookToPDF.desc=Tiontaíonn sé formáidí Leabhair/Comics go PDF ag baint úsáide as calibre +BookToPDF.tags=Leabhar, Comic, Calibre, Tiontaigh, manga, amazon, kindle, epub, mobi, azw3, docx, rtf, txt, html, lit, fb2, pdb, lrf + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Sínigh isteach +login.header=Sínigh isteach +login.signin=Sínigh isteach +login.rememberme=Cuimhnigh orm +login.invalid=Ainm úsáideora nó pasfhocal neamhbhailí. +login.locked=Tá do chuntas glasáilte. +login.signinTitle=Sínigh isteach le do thoil +login.ssoSignIn=Logáil isteach trí Chlárú Aonair +login.oauth2AutoCreateDisabled=OAUTH2 Uath-Chruthaigh Úsáideoir faoi Mhíchumas +login.oauth2RequestNotFound=Níor aimsíodh iarratas údaraithe +login.oauth2InvalidUserInfoResponse=Freagra Neamhbhailí Faisnéise Úsáideora +login.oauth2invalidRequest=Iarratas Neamhbhailí +login.oauth2AccessDenied=Rochtain Diúltaithe +login.oauth2InvalidTokenResponse=Freagra Comhartha Neamhbhailí +login.oauth2InvalidIdToken=Comhartha Aitheantais Neamhbhailí + + +#auto-redact +autoRedact.title=Auto Redact +autoRedact.header=Auto Redact +autoRedact.colorLabel=Dath +autoRedact.textsToRedactLabel=Téacs go Deighilt (línescartha) +autoRedact.textsToRedactPlaceholder=e.g. \nRúnda \nTrí-rúnda +autoRedact.useRegexLabel=Bain úsáid as Regex +autoRedact.wholeWordSearchLabel=Cuardach Focal Iomlán +autoRedact.customPaddingLabel=Stuáil Breise Saincheaptha +autoRedact.convertPDFToImageLabel=Tiontaigh PDF go PDF-Image (Úsáidte chun téacs a bhaint taobh thiar den bhosca) +autoRedact.submitButton=Cuir isteach + + +#showJS +showJS.title=Taispeáin Javascript +showJS.header=Taispeáin Javascript +showJS.downloadJS=Íosluchtaigh leabhar javascript +showJS.submit=Taispeáin + + +#pdfToSinglePage +pdfToSinglePage.title=PDF go leathanach amháin +pdfToSinglePage.header=PDF go leathanach amháin +pdfToSinglePage.submit=Tiontaigh go Leathanach Aonair + + +#pageExtracter +pageExtracter.title=Leathanaigh Sliocht +pageExtracter.header=Leathanaigh Sliocht +pageExtracter.submit=Sliocht +pageExtracter.placeholder=(m.sh. 1,2,8 nó 4,7,12-16 nó 2n-1) + + +#getPdfInfo +getPdfInfo.title=Faigh eolas ar PDF +getPdfInfo.header=Faigh eolas ar PDF +getPdfInfo.submit=Faigh Eolas +getPdfInfo.downloadJson=Íosluchtaigh ceol JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Marcáil síos go PDF +MarkdownToPDF.header=Marcáil síos go PDF +MarkdownToPDF.submit=Tiontaigh +MarkdownToPDF.help=Obair idir lámha +MarkdownToPDF.credit=Úsáideann WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL go PDF +URLToPDF.header=URL go PDF +URLToPDF.submit=Tiontaigh +URLToPDF.credit=Úsáideann WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML go PDF +HTMLToPDF.header=HTML go PDF +HTMLToPDF.help=Glacann sé le comhaid HTML agus ZIPs ina bhfuil html/css/íomhánna srl riachtanach +HTMLToPDF.submit=Tiontaigh +HTMLToPDF.credit=Úsáideann WeasyPrint +HTMLToPDF.zoom=Leibhéal súmáil chun an suíomh Gréasáin a thaispeáint. +HTMLToPDF.pageWidth=Leithead an leathanaigh i ceintiméadar. (Bán go réamhshocrú) +HTMLToPDF.pageHeight=Airde an leathanaigh i ceintiméadar. (Bán go réamhshocrú) +HTMLToPDF.marginTop=Imeall barr an leathanaigh i milliméadair. (Bán go réamhshocrú) +HTMLToPDF.marginBottom=Imeall bun an leathanaigh i milliméadair. (Bán go réamhshocrú) +HTMLToPDF.marginLeft=Imeall clé an leathanaigh i milliméadair. (Bán go réamhshocrú) +HTMLToPDF.marginRight=Imeall ceart an leathanaigh i milliméadair. (Bán go réamhshocrú) +HTMLToPDF.printBackground=Íosluchtaigh cúlra do láithreáin ghréasáin. +HTMLToPDF.defaultHeader=Cumasaigh Ceanntásc Réamhshocraithe (Ainm agus uimhir an leathanaigh) +HTMLToPDF.cssMediaType=Athraigh cineál meáin CSS an leathanaigh. +HTMLToPDF.none=Dada +HTMLToPDF.print=Priontáil +HTMLToPDF.screen=Scáileán + + +#AddStampRequest +AddStampRequest.header=Stampa PDF +AddStampRequest.title=Stampa PDF +AddStampRequest.stampType=Cineál Stampa +AddStampRequest.stampText=Téacs Stampa +AddStampRequest.stampImage=Íomhá Stampa +AddStampRequest.alphabet=Aibítir +AddStampRequest.fontSize=Cló/Méid na hÍomhá +AddStampRequest.rotation=Rothlú +AddStampRequest.opacity=Teimhneacht +AddStampRequest.position=Post +AddStampRequest.overrideX=Sáraigh X Comhordanáid +AddStampRequest.overrideY=Sáraigh Y Comhordanáid +AddStampRequest.customMargin=Imeall an Chustaim +AddStampRequest.customColor=Dath Téacs Saincheaptha +AddStampRequest.submit=Cuir isteach + + +#sanitizePDF +sanitizePDF.title=PDF sláintíocht +sanitizePDF.header=Glanadh comhad PDF +sanitizePDF.selectText.1=Bain gníomhartha JavaScript +sanitizePDF.selectText.2=Bain comhaid leabaithe +sanitizePDF.selectText.3=Bain meiteashonraí +sanitizePDF.selectText.4=Bain naisc +sanitizePDF.selectText.5=Bain clónna +sanitizePDF.submit=PDF sláintíocht + + +#addPageNumbers +addPageNumbers.title=Cuir Uimhreacha Leathanaigh leis +addPageNumbers.header=Cuir Uimhreacha Leathanaigh leis +addPageNumbers.selectText.1=Roghnaigh comhad PDF: +addPageNumbers.selectText.2=Méid Imeall +addPageNumbers.selectText.3=Post +addPageNumbers.selectText.4=Uimhir Tosaigh +addPageNumbers.selectText.5=Leathanaigh go hUimhir +addPageNumbers.selectText.6=Téacs Saincheaptha +addPageNumbers.customTextDesc=Téacs Saincheaptha +addPageNumbers.numberPagesDesc=Cé na leathanaigh le huimhriú, réamhshocraithe 'gach duine', a ghlacann freisin 1-5 nó 2,5,9 etc +addPageNumbers.customNumberDesc=Réamhshocrú go {n}, glacann sé freisin le 'Leathanach {n} de {total}', 'Text-{n}', '{filename}-{n} +addPageNumbers.submit=Cuir Uimhreacha Leathanaigh leis + + +#auto-rename +auto-rename.title=Athainmnigh Uathainm +auto-rename.header=Auto Athainmnigh PDF +auto-rename.submit=Athainmnigh Uathainm + + +#adjustContrast +adjustContrast.title=Coigeartaigh Codarsnacht +adjustContrast.header=Coigeartaigh Codarsnacht +adjustContrast.contrast=Codarsnacht: +adjustContrast.brightness=Gile: +adjustContrast.saturation=Sáithiú: +adjustContrast.download=Íosluchtaigh + + +#crop +crop.title=Barraí +crop.header=PDF a ghearradh +crop.submit=Cuir isteach + + +#autoSplitPDF +autoSplitPDF.title=Auto Scoilt PDF +autoSplitPDF.header=Auto Scoilt PDF +autoSplitPDF.description=Priontáil, Ionsáigh, Scan, uaslódáil, agus lig dúinn do dhoiciméid a scaradh go huathoibríoch. Níl gá le sórtáil obair láimhe. +autoSplitPDF.selectText.1=Priontáil roinnt bileoga roinnteoirí thíos (tá dubh agus bán go breá). +autoSplitPDF.selectText.2=Scan do dhoiciméid go léir ag an am céanna tríd an leathán roinnteora a chur isteach eatarthu. +autoSplitPDF.selectText.3=Uaslódáil an comhad PDF mór scanta amháin agus lig do Stirling PDF an chuid eile a láimhseáil. +autoSplitPDF.selectText.4=Déantar leathanaigh roinnteoirí a bhrath agus a bhaint go huathoibríoch, rud a ráthaíonn doiciméad deiridh néata. +autoSplitPDF.formPrompt=Cuir PDF isteach ina bhfuil roinnteoirí Leathanaigh Stirling-PDF: +autoSplitPDF.duplexMode=Mód Duplex (scanadh tosaigh agus cúil) +autoSplitPDF.dividerDownload1=Íoslódáil 'Auto Scoilteoir Roinnteoir (íosmhéid).pdf' +autoSplitPDF.dividerDownload2=Íoslódáil 'Auto Splitter Divider (le treoracha).pdf' +autoSplitPDF.submit=Cuir isteach + + +#pipeline +pipeline.title=Píblíne + + +#pageLayout +pageLayout.title=Leagan Amach Illeathanaigh +pageLayout.header=Leagan Amach Illeathanaigh +pageLayout.pagesPerSheet=Leathanaigh in aghaidh na bileoige: +pageLayout.addBorder=Cuir Teorainneacha leis +pageLayout.submit=Cuir isteach + + +#scalePages +scalePages.title=Coigeartaigh scála an leathanaigh +scalePages.header=Coigeartaigh scála an leathanaigh +scalePages.pageSize=Méid leathanach den doiciméad. +scalePages.scaleFactor=Leibhéal súmáil (barr) de leathanach. +scalePages.submit=Cuir isteach + + +#certSign +certSign.title=Síniú Teastais +certSign.header=Sínigh PDF le do theastas (Obair ar siúl) +certSign.selectPDF=Roghnaigh Comhad PDF le síniú: +certSign.jksNote=Nóta: Mura bhfuil do chineál teastais liostaithe thíos, le do thoil é a thiontú go comhad Java Keystore (.jks) ag baint úsáide as an uirlis líne ordaithe keytool. Ansin, roghnaigh an rogha comhad .jks thíos. +certSign.selectKey=Roghnaigh Do Chomhad Eochracha Príobháidí (Formáid PKCS#8, b'fhéidir .pem nó .der): +certSign.selectCert=Roghnaigh Do Chomhad Teastais (formáid X.509, d'fhéadfadh sé a bheith .pem nó .der): +certSign.selectP12=Roghnaigh Do Chomhad Siopa Eochracha PKCS#12 (.p12 nó .pfx) (Roghnach, Má chuirtear ar fáil é, ba cheart go mbeadh d'eochair phríobháideach agus teastas ann): +certSign.selectJKS=Roghnaigh Do Chomhad Keystore Java (.jks nó .keystore): +certSign.certType=Cineál Teastais +certSign.password=Cuir isteach do Phasfhocal Stórais Eochracha nó Eochracha Príobháidí (más ann dó): +certSign.showSig=Taispeáin Síniú +certSign.reason=Cúis +certSign.location=Suíomh +certSign.name=Ainm +certSign.submit=Sínigh PDF + + +#removeCertSign +removeCertSign.title=Bain Síniú Teastais +removeCertSign.header=Bain an deimhniú digiteach ó PDF +removeCertSign.selectPDF=Roghnaigh comhad PDF: +removeCertSign.submit=Bain Síniú + + +#removeBlanks +removeBlanks.title=Bain Bearnaí +removeBlanks.header=Bain Leathanaigh Bhána +removeBlanks.threshold=Tairseach Bánachta picteilíní: +removeBlanks.thresholdDesc=An tairseach chun a chinneadh cé chomh bán is gá picteilín bán a bheith le rangú mar 'Bán'. 0 +removeBlanks.whitePercent=Céatadán Bán (%): +removeBlanks.whitePercentDesc=Céatadán an leathanaigh a chaithfidh picteilíní 'bán' a bheith ann lena bhaint +removeBlanks.submit=Bain Bearnaí + + +#removeAnnotations +removeAnnotations.title=Bain Anótálacha +removeAnnotations.header=Bain Anótálacha +removeAnnotations.submit=Bain + + +#compare +compare.title=Déan comparáid idir +compare.header=Déan comparáid idir comhaid PDF +compare.highlightColor.1=Dath Aibhsithe 1: +compare.highlightColor.2=Dath Aibhsithe 2: +compare.document.1=Doiciméad 1 +compare.document.2=Doiciméad 2 +compare.submit=Déan comparáid idir + +#BookToPDF +BookToPDF.title=Leabhair agus comics a PDF +BookToPDF.header=Leabhar a thiontú go PDF +BookToPDF.credit=Úsáideann Calibre +BookToPDF.submit=Tiontaigh + +#PDFToBook +PDFToBook.title=PDF go Leabhar +PDFToBook.header=PDF go Leabhar +PDFToBook.selectText.1=Formáid +PDFToBook.credit=Úsáideann Calibre +PDFToBook.submit=Tiontaigh + +#sign +sign.title=Comhartha +sign.header=Sínigh comhaid PDF +sign.upload=Uaslódáil Íomhá +sign.draw=Tarraing Síniú +sign.text=Ionchur Téacs +sign.clear=Glan +sign.add=Cuir + + +#repair +repair.title=Deisiúchán +repair.header=PDF a dheisiú +repair.submit=Deisiúchán + + +#flatten +flatten.title=Flatten +flatten.header=PDF cothromú +flatten.flattenOnlyForms=Flatten foirmeacha amháin +flatten.submit=Flatten + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Tairseach Uillinn: +ScannerImageSplit.selectText.2=Socraíonn sé an uillinn iomlán íosta a theastaíonn chun an íomhá a rothlú (réamhshocraithe: 10). +ScannerImageSplit.selectText.3=Caoinfhulaingt: +ScannerImageSplit.selectText.4=Cinneann an raon éagsúlachta dath timpeall an dath cúlra measta (réamhshocraithe: 30). +ScannerImageSplit.selectText.5=Achar Íosta: +ScannerImageSplit.selectText.6=Socraíonn sé an tairseach achair íosta le haghaidh grianghraf (réamhshocraithe: 10000). +ScannerImageSplit.selectText.7=Íos-Limistéar Comhrianta: +ScannerImageSplit.selectText.8=Socraíonn sé an tairseach íosta achar comhrianta le haghaidh grianghraf +ScannerImageSplit.selectText.9=Méid na Teorann: +ScannerImageSplit.selectText.10=Socraíonn sé méid na teorann a chuirtear leis agus a bhaintear chun teorainneacha bán a chosc san aschur (réamhshocraithe: 1). + + +#OCR +ocr.title=OCR / Glanta Scan +ocr.header=Scananna Glanta / OCR (Aithint Optúil Carachtair) +ocr.selectText.1=Roghnaigh teangacha atá le brath laistigh den PDF (Is iad na cinn a liostaítear na cinn a aimsítear faoi láthair): +ocr.selectText.2=Comhad téacs a tháirgeadh ina bhfuil téacs OCR taobh leis an PDF a cuireadh le OCR +ocr.selectText.3=Scanadh leathanaigh chearta ag uillinn sceabhach trína rothlú ar ais ina n-áit +ocr.selectText.4=Glan an leathanach ionas gur lú an seans go bhfaighidh OCR téacs i torann cúlra. (Gan athrú aschuir) +ocr.selectText.5=Glan an leathanach ionas gur lú an seans go bhfaighidh OCR téacs le torann cúlra, go gcoimeádann sé glantachán san aschur. +ocr.selectText.6=Déanann sé neamhaird ar leathanaigh a bhfuil téacs idirghníomhach orthu, agus ar leathanaigh OCR amháin ar íomhánna iad +ocr.selectText.7=Fórsa OCR, bainfidh OCR Gach leathanach ag baint na buneilimintí téacs uile +ocr.selectText.8=Gnáth (Tharla earráid má tá téacs sa PDF) +ocr.selectText.9=Socruithe Breise +ocr.selectText.10=Mód OCR +ocr.selectText.11=Bain íomhánna tar éis OCR (Bain GACH íomhá, ní úsáideach ach amháin má tá siad mar chuid den chéim tiontaithe) +ocr.selectText.12=Cineál Rindreála (Ardleibhéal) +ocr.help=Léigh le do thoil an doiciméadú seo ar conas é seo a úsáid do theangacha eile agus/nó úsáid nach bhfuil i ndugairí +ocr.credit=Úsáideann an tseirbhís seo OCRmyPDF agus Tesseract le haghaidh OCR. +ocr.submit=Próiseáil PDF le OCR + + +#extractImages +extractImages.title=Sliocht Íomhánna +extractImages.header=Sliocht Íomhánna +extractImages.selectText=Roghnaigh formáid íomhá chun íomhánna bainte a thiontú go +extractImages.submit=Sliocht + + +#File to PDF +fileToPDF.title=Comhad go PDF +fileToPDF.header=Tiontaigh aon chomhad go PDF +fileToPDF.credit=Úsáideann an tseirbhís seo LibreOffice agus Unoconv chun comhaid a thiontú. +fileToPDF.supportedFileTypesInfo=Cineálacha Comhaid Tacaithe +fileToPDF.supportedFileTypes=Ba cheart go n-áireofaí na cineálacha comhaid a dtacaítear leo thíos, áfach, le haghaidh liosta nuashonraithe iomlán de na formáidí a dtacaítear leo, féach le do thoil ar dhoiciméadú LibreOffice +fileToPDF.submit=Tiontaigh go PDF + + +#compress +compress.title=Comhbhrúigh +compress.header=Comhbhrúigh PDF +compress.credit=Úsáideann an tseirbhís seo Ghostscript le haghaidh Comhbhrú/Optimization PDF. +compress.selectText.1=Mód Láimhe - Ó 1 go 4 +compress.selectText.2=Leibhéal optamaithe: +compress.selectText.3=4 (Uafásach le haghaidh íomhánna téacs) +compress.selectText.4=Mód uathoibríoch - Coigeartaíonn Auto cáilíocht chun PDF a fháil go dtí an méid cruinn +compress.selectText.5=Méid PDF a bhfuiltear ag súil leis (m.sh. 25MB, 10.8MB, 25KB) +compress.submit=Comhbhrúigh + + +#Add image +addImage.title=Cuir Íomhá leis +addImage.header=Cuir íomhá i bhformáid PDF +addImage.everyPage=Gach Leathanach? +addImage.upload=Cuir íomhá leis +addImage.submit=Cuir íomhá leis + + +#merge +merge.title=Cumaisc +merge.header=Cumaisc PDFanna iolracha (2+) +merge.sortByName=Sórtáil de réir ainm +merge.sortByDate=Sórtáil de réir dáta +merge.removeCertSign=Bain síniú digiteach sa chomhad cumaiscthe? +merge.submit=Cumaisc + + +#pdfOrganiser +pdfOrganiser.title=Eagraigh Leathanach +pdfOrganiser.header=Eagraí leathanach PDF +pdfOrganiser.submit=Athshocrú Leathanaigh +pdfOrganiser.mode=Mód +pdfOrganiser.mode.1=Ordú Leathanach Saincheaptha +pdfOrganiser.mode.2=Ordú Droim ar Ais +pdfOrganiser.mode.3=Sórtáil Duplex +pdfOrganiser.mode.4=Sórtáil Leabhrán +pdfOrganiser.mode.5=Sórtáil Leabhrán Stitch Taobh +pdfOrganiser.mode.6=Scoilt Corr-Fiú +pdfOrganiser.mode.7=Bain Ar dtús +pdfOrganiser.mode.8=Bain Last +pdfOrganiser.mode.9=Bain An Chéad agus an Deireadh +pdfOrganiser.mode.10=Corr-Fiú Cumaisc +pdfOrganiser.placeholder=(m.sh. 1,3,2 nó 4-8,2,10-12 nó 2n-1) + + +#multiTool +multiTool.title=Il-uirlis PDF +multiTool.header=Il-uirlis PDF +multiTool.uploadPrompts=Ainm comhaid + +#view pdf +viewPdf.title=Féach PDF +viewPdf.header=Féach PDF + +#pageRemover +pageRemover.title=Bainteoir Leathanach +pageRemover.header=PDF leathanach remover +pageRemover.pagesToDelete=Leathanaigh le scriosadh (Cuir isteach liosta uimhreacha leathanaigh atá deighilte le camóga): : +pageRemover.submit=Scrios Leathanaigh +pageRemover.placeholder=(m.sh. 1,2,6 nó 1-10,15-30) + + +#rotate +rotate.title=Rothlaigh PDF +rotate.header=Rothlaigh PDF +rotate.selectAngle=Roghnaigh uillinn rothlaithe (i iolraí de 90 céim): +rotate.submit=Rothlaigh + + +#split-pdfs +split.title=Scoilt PDF +split.header=Scoilt PDF +split.desc.1=Is iad na huimhreacha a roghnaíonn tú an uimhir leathanaigh ar mian leat scoilt a dhéanamh air +split.desc.2=Dá bhrí sin, dá roghnófaí 1,3,7-9, roinnfí doiciméad 10 leathanach ina 6 PDF ar leith le: +split.desc.3=Doiciméad #1: Leathanach 1 +split.desc.4=Doiciméad #2: Leathanach 2 agus 3 +split.desc.5=Doiciméad #3: Leathanach 4, 5, 6 agus 7 +split.desc.6=Doiciméad #4: Leathanach 8 +split.desc.7=Doiciméad #5: Leathanach 9 +split.desc.8=Doiciméad #6: Leathanach 10 +split.splitPages=Iontráil leathanaigh le scoilt ar: +split.submit=Scoilt + + +#merge +imageToPDF.title=Íomhá go PDF +imageToPDF.header=Íomhá go PDF +imageToPDF.submit=Tiontaigh +imageToPDF.selectLabel=Roghanna Oiriúnú Íomhá +imageToPDF.fillPage=Líon Leathanach +imageToPDF.fitDocumentToImage=Fit Leathanach don Íomhá +imageToPDF.maintainAspectRatio=Cóimheasa Gnéis a chothabháil +imageToPDF.selectText.2=PDF rothlú uathoibríoch +imageToPDF.selectText.3=Loighic ilchomhad (cumasaithe ach amháin má oibríonn tú le híomhánna iolracha) +imageToPDF.selectText.4=Chumasadh go PDF amháin +imageToPDF.selectText.5=Tiontaigh go PDF ar leith + + +#pdfToImage +pdfToImage.title=PDF go íomhá +pdfToImage.header=PDF go íomhá +pdfToImage.selectText=Formáid Íomhá +pdfToImage.singleOrMultiple=Cineál toraidh Leathanach go hÍomhá +pdfToImage.single=Mhór Aonair a Chomhcheanglaíonn gach leathanach +pdfToImage.multi=Ilíomhánna, íomhá amháin in aghaidh an leathanaigh +pdfToImage.colorType=Cineál dath +pdfToImage.color=Dath +pdfToImage.grey=Scála Liath +pdfToImage.blackwhite=Dubh agus Bán (D’fhéadfadh sonraí a chailleadh!) +pdfToImage.submit=Tiontaigh + + +#addPassword +addPassword.title=Cuir Pasfhocal leis +addPassword.header=Cuir pasfhocal leis (Criptigh) +addPassword.selectText.1=Roghnaigh PDF le criptiú +addPassword.selectText.2=Pasfhocal Úsáideora +addPassword.selectText.3=Fad Eochracha Criptithe +addPassword.selectText.4=Tá luachanna níos airde níos láidre, ach tá comhoiriúnacht níos fearr ag luachanna níos ísle. +addPassword.selectText.5=Ceadanna le socrú (Moltar iad a úsáid in éineacht le pasfhocal an Úinéara) +addPassword.selectText.6=Cosc a chur le chéile doiciméad +addPassword.selectText.7=Cosc a chur ar eastóscadh ábhar +addPassword.selectText.8=Cosc a chur ar eastóscadh le haghaidh inrochtaineachta +addPassword.selectText.9=Cosc ar fhoirm a líonadh +addPassword.selectText.10=Cosc a chur ar mhodhnú +addPassword.selectText.11=Cosc a chur ar mhodhnú anótála +addPassword.selectText.12=Cosc a chur ar phriontáil +addPassword.selectText.13=Cosc a chur ar phriontáil bhformáidí éagsúla +addPassword.selectText.14=Pasfhocal Úinéir +addPassword.selectText.15=Cuireann sé srian lenar féidir a dhéanamh leis an doiciméad nuair a osclaítear é (Ní thacaíonn gach léitheoir leis) +addPassword.selectText.16=Cuireann sé srian le hoscailt an doiciméid féin +addPassword.submit=Criptigh + + +#watermark +watermark.title=Cuir Uisce leis +watermark.header=Cuir Uisce leis +watermark.selectText.1=Roghnaigh PDF chun comhartha uisce a chur leis: +watermark.selectText.2=Téacs Comhartha Uisce: +watermark.selectText.3=Méid cló: +watermark.selectText.4=Rothlú (0-360): +watermark.selectText.5=widthSpacer (Spás idir gach comhartha uisce go cothrománach): +watermark.selectText.6=spásaire airde (Spás idir gach comhartha uisce go hingearach): +watermark.selectText.7=Teimhneacht (0% - 100%): +watermark.selectText.8=Cineál Comhartha Uisce: +watermark.selectText.9=Íomhá Comhartha Uisce: +watermark.submit=Cuir Uisce leis +watermark.type.1=Téacs +watermark.type.2=Íomha + + +#Change permissions +permissions.title=Athrú Ceadanna +permissions.header=Athrú Ceadanna +permissions.warning=Má thugtar rabhadh nach féidir na ceadanna seo a athrú, moltar pasfhocal a shocrú dóibh trí leathanach an bhreiseáin phasfhocal +permissions.selectText.1=Roghnaigh PDF chun ceadanna a athrú +permissions.selectText.2=Ceadanna a shocrú +permissions.selectText.3=Cosc a chur le chéile doiciméad +permissions.selectText.4=Cosc a chur ar eastóscadh ábhar +permissions.selectText.5=Cosc a chur ar eastóscadh le haghaidh inrochtaineachta +permissions.selectText.6=Cosc ar fhoirm a líonadh +permissions.selectText.7=Cosc a chur ar mhodhnú +permissions.selectText.8=Cosc a chur ar mhodhnú anótála +permissions.selectText.9=Cosc a chur ar phriontáil +permissions.selectText.10=Cosc a chur ar phriontáil bhformáidí éagsúla +permissions.submit=Athrú + + +#remove password +removePassword.title=Bain pasfhocal +removePassword.header=Bain pasfhocal (Díchriptigh) +removePassword.selectText.1=Roghnaigh PDF le Díchriptiú +removePassword.selectText.2=Pasfhocal +removePassword.submit=Bain + + +#changeMetadata +changeMetadata.title=Athraigh Meiteashonraí +changeMetadata.header=Athraigh Meiteashonraí +changeMetadata.selectText.1=Cuir na hathróga is mian leat a athrú in eagar +changeMetadata.selectText.2=Scrios na meiteashonraí go léir +changeMetadata.selectText.3=Taispeáin Meiteashonraí Saincheaptha: +changeMetadata.author=Údar: +changeMetadata.creationDate=Dáta Cruthaithe (bbbb/MM/ll HH:mm:ss): +changeMetadata.creator=Cruthaitheoir: +changeMetadata.keywords=Eochairfhocail: +changeMetadata.modDate=Dáta Mionathraithe (bbbb/MM/ll HH:mm:ss): +changeMetadata.producer=léiritheoir: +changeMetadata.subject=Ábhar: +changeMetadata.trapped=Gafa: +changeMetadata.selectText.4=Meiteashonraí Eile: +changeMetadata.selectText.5=Cuir Iontráil Meiteashonraí Saincheaptha leis +changeMetadata.submit=Athrú + + +#pdfToPDFA +pdfToPDFA.title=PDF Go PDF/A +pdfToPDFA.header=PDF Go PDF/A +pdfToPDFA.credit=Úsáideann an tseirbhís seo OCRmyPDF chun PDF/A a thiontú +pdfToPDFA.submit=Tiontaigh +pdfToPDFA.tip=Faoi láthair ní oibríonn sé le haghaidh ionchuir iolracha ag an am céanna +pdfToPDFA.outputFormat=Formáid aschuir +pdfToPDFA.pdfWithDigitalSignature=Tá síniú digiteach ar an PDF. Bainfear é seo sa chéad chéim eile. + + +#PDFToWord +PDFToWord.title=PDF a thiontú go word +PDFToWord.header=PDF a thiontú go word +PDFToWord.selectText.1=Formáid comhaid aschuir +PDFToWord.credit=Úsáideann an tseirbhís seo LibreOffice chun comhaid a thiontú. +PDFToWord.submit=Tiontaigh + + +#PDFToPresentation +PDFToPresentation.title=PDF a chur i láthair +PDFToPresentation.header=PDF a chur i láthair +PDFToPresentation.selectText.1=Formáid comhaid aschuir +PDFToPresentation.credit=Úsáideann an tseirbhís seo LibreOffice chun comhaid a thiontú. +PDFToPresentation.submit=Tiontaigh + + +#PDFToText +PDFToText.title=PDF go RTF (Téacs) +PDFToText.header=PDF go RTF (Téacs) +PDFToText.selectText.1=Formáid comhaid aschuir +PDFToText.credit=Úsáideann an tseirbhís seo LibreOffice chun comhaid a thiontú. +PDFToText.submit=Tiontaigh + + +#PDFToHTML +PDFToHTML.title=Ó HTML go PDF +PDFToHTML.header=Ó HTML go PDF +PDFToHTML.credit=Úsáideann an tseirbhís seo PDF go html chun comhaid a thiontú. +PDFToHTML.submit=Tiontaigh + + +#PDFToXML +PDFToXML.title=Ó XML go PDF +PDFToXML.header=Ó XML go PDF +PDFToXML.credit=Úsáideann an tseirbhís seo LibreOffice chun comhaid a thiontú. +PDFToXML.submit=Tiontaigh + +#PDFToCSV +PDFToCSV.title=Ó CSV go PDF +PDFToCSV.header=Ó CSV go PDF +PDFToCSV.prompt=Roghnaigh leathanach chun tábla a bhaint as +PDFToCSV.submit=Sliocht + +#split-by-size-or-count +split-by-size-or-count.title=Scoilt PDF de réir Méid nó Comhairimh +split-by-size-or-count.header=Scoilt PDF de réir Méid nó Comhairimh +split-by-size-or-count.type.label=Roghnaigh Cineál Scoilt +split-by-size-or-count.type.size=De réir Méid +split-by-size-or-count.type.pageCount=De réir Comhaireamh Leathanaigh +split-by-size-or-count.type.docCount=De réir Líon na nDoiciméad +split-by-size-or-count.value.label=Cuir isteach Luach +split-by-size-or-count.value.placeholder=Cuir isteach méid (m.sh., 2MB nó 3KB) nó comhaireamh (m.sh., 5) +split-by-size-or-count.submit=Cuir isteach + + +#overlay-pdfs +overlay-pdfs.header=Forleagan comhaid PDF +overlay-pdfs.baseFile.label=Roghnaigh Bonn Comhad PDF +overlay-pdfs.overlayFiles.label=Roghnaigh Forleagan Comhaid PDF +overlay-pdfs.mode.label=Roghnaigh Mód Forleagan +overlay-pdfs.mode.sequential=Forleagan Seicheamhach +overlay-pdfs.mode.interleaved=Forleagan Interleaved +overlay-pdfs.mode.fixedRepeat=Forleagan Athdhéanta Seasta +overlay-pdfs.counts.label=Áireamh Forleagan (do Mhód Athdhéanta Seasta) +overlay-pdfs.counts.placeholder=Cuir isteach comhairimh scartha le camóga (m.sh., 2,3,1) +overlay-pdfs.position.label=Roghnaigh Post Forleagan +overlay-pdfs.position.foreground=Tulra +overlay-pdfs.position.background=Cúlra +overlay-pdfs.submit=Cuir isteach + + +#split-by-sections +split-by-sections.title=Scoilt PDF de réir ailt +split-by-sections.header=Scoilt PDF i gcodanna +split-by-sections.horizontal.label=Rannáin Chothrománacha +split-by-sections.vertical.label=Rannáin Ingearach +split-by-sections.horizontal.placeholder=Cuir isteach líon na rannán cothrománach +split-by-sections.vertical.placeholder=Cuir isteach líon na rannáin ingearacha +split-by-sections.submit=Scoilt PDF +split-by-sections.merge=Chumasadh i gceann PDF + + +#printFile +printFile.title=Priontáil Comhad +printFile.header=Priontáil an Comhad go Printéir +printFile.selectText.1=Roghnaigh Comhad le Priontáil +printFile.selectText.2=Cuir isteach Ainm an Phrintéara +printFile.submit=Priontáil + + +#licenses +licenses.nav=Ceadúnais +licenses.title=Ceadúnais 3ú Páirtí +licenses.header=Ceadúnais 3ú Páirtí +licenses.module=Modúl +licenses.version=Leagan +licenses.license=Ceadúnas + +#survey +survey.nav=Suirbhé +survey.title=Suirbhé Stirling-PDF +survey.description=Níl aon rian ar Stirling-PDF agus mar sin ba mhaith linn cloisteáil ónár n-úsáideoirí chun feabhas a chur ar Stirling-PDF! +survey.please=Smaoinigh ar ár suirbhé a dhéanamh le do thoil! +survey.disabled=(Díchumasófar aníos an tsuirbhé sna nuashonruithe seo a leanas ach beidh siad ar fáil ag bun an leathanaigh) +survey.button=Tóg Suirbhé +survey.dontShowAgain=Ná taispeáin arís + + +#error +error.sorry=Gabh mo leithscéal as an gceist! +error.needHelp=Cabhair uait / Ar aimsíodh fadhb? +error.contactTip=Má tá trioblóid agat fós, ná bíodh leisce ort teagmháil a dhéanamh linn le haghaidh cabhrach. Is féidir leat ticéad a chur isteach ar ár leathanach GitHub nó déan teagmháil linn trí Discord: +error.404.head=404 - Leathanach Gan Aimsiú | Úps, thuislíomar sa chód! +error.404.1=Is cosúil nach féidir linn teacht ar an leathanach atá uait. +error.404.2=Chuaigh rud eigin mícheart +error.github=Cuir ticéad isteach ar GitHub +error.showStack=Taispeáin Stack Trace +error.copyStack=Cóipeáil Stack Trace +error.githubSubmit=GitHub - Cuir ticéad isteach +error.discordSubmit=Discord - Cuir post Tacaíochta diff --git a/src/main/resources/static/images/flags/ie.svg b/src/main/resources/static/images/flags/ie.svg new file mode 100644 index 00000000000..049be14de14 --- /dev/null +++ b/src/main/resources/static/images/flags/ie.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/main/resources/templates/fragments/languages.html b/src/main/resources/templates/fragments/languages.html index 264a0f8be9c..e5babada84a 100644 --- a/src/main/resources/templates/fragments/languages.html +++ b/src/main/resources/templates/fragments/languages.html @@ -11,6 +11,7 @@ icon Español icon Français icon Indonesia + icon Irish icon Italiano icon Nederlands icon Polski From d8087d8c55aa7102b20842f287f97485f35b76ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:25:37 +0100 Subject: [PATCH 15/50] :memo: Update README: Translation Progress Table (#1613) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- scripts/ignore_translation.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index 06a1addb253..0479527e8f4 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -43,12 +43,6 @@ ignore = [ 'watermark.type.1', ] - -[ga_IE] -ignore = [ - 'language.direction', -] - [el_GR] ignore = [ 'language.direction', @@ -93,6 +87,11 @@ ignore = [ 'watermark.type.2', ] +[ga_IE] +ignore = [ + 'language.direction', +] + [hi_IN] ignore = [ 'language.direction', From 9ff2cb63d076d47d715f0ff4a25bbffe6a7528d0 Mon Sep 17 00:00:00 2001 From: congyuluo <78986434+congyuluo@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:25:48 -0700 Subject: [PATCH 16/50] Refactored Identifiers (#1609) --- .../stirling/software/SPDF/SPdfApplication.java | 8 ++++---- .../software/SPDF/config/CleanUrlInterceptor.java | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index fb682998c8f..f49fe300024 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -79,13 +79,13 @@ public static void main(String[] args) throws IOException, InterruptedException // custom javs settings file if (Files.exists(Paths.get("configs/custom_settings.yml"))) { - String existing = propertyFiles.getOrDefault("spring.config.additional-location", ""); - if (!existing.isEmpty()) { - existing += ","; + String existingLocation = propertyFiles.getOrDefault("spring.config.additional-location", ""); + if (!existingLocation.isEmpty()) { + existingLocation += ","; } propertyFiles.put( "spring.config.additional-location", - existing + "file:configs/custom_settings.yml"); + existingLocation + "file:configs/custom_settings.yml"); } else { logger.warn("Custom configuration file 'configs/custom_settings.yml' does not exist."); } diff --git a/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java b/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java index 8c1ed05f2a3..0fb1e26fc99 100644 --- a/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java +++ b/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java @@ -32,25 +32,25 @@ public boolean preHandle( String queryString = request.getQueryString(); if (queryString != null && !queryString.isEmpty()) { String requestURI = request.getRequestURI(); - Map parameters = new HashMap<>(); + Map allowedParameters = new HashMap<>(); // Keep only the allowed parameters String[] queryParameters = queryString.split("&"); for (String param : queryParameters) { - String[] keyValue = param.split("="); - if (keyValue.length != 2) { + String[] keyValuePair = param.split("="); + if (keyValuePair.length != 2) { continue; } - if (ALLOWED_PARAMS.contains(keyValue[0])) { - parameters.put(keyValue[0], keyValue[1]); + if (ALLOWED_PARAMS.contains(keyValuePair[0])) { + allowedParameters.put(keyValuePair[0], keyValuePair[1]); } } // If there are any parameters that are not allowed - if (parameters.size() != queryParameters.length) { + if (allowedParameters.size() != queryParameters.length) { // Construct new query string StringBuilder newQueryString = new StringBuilder(); - for (Map.Entry entry : parameters.entrySet()) { + for (Map.Entry entry : allowedParameters.entrySet()) { if (newQueryString.length() > 0) { newQueryString.append("&"); } From 3df0474ed20ae36c8c456d8b90251fcadcd7e631 Mon Sep 17 00:00:00 2001 From: LizardWizardGB <135264545+LizardWizardGB@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:25:57 +0200 Subject: [PATCH 17/50] Danish language (#1606) * Update languages.html Added an entry for "Danish". * Update languages.html filename of flag was wrong. * Danish flag svg * Create messages_da_DK.properties Initial commit of danish translation. * Update messages_da_DK.properties * Update messages_da_DK.properties --- src/main/resources/messages_da_DK.properties | 1126 +++++++++++++++++ src/main/resources/static/images/flags/dk.svg | 5 + .../templates/fragments/languages.html | 1 + 3 files changed, 1132 insertions(+) create mode 100644 src/main/resources/messages_da_DK.properties create mode 100644 src/main/resources/static/images/flags/dk.svg diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties new file mode 100644 index 00000000000..b89e26efbcd --- /dev/null +++ b/src/main/resources/messages_da_DK.properties @@ -0,0 +1,1126 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Vælg PDF-fil(er) +multiPdfPrompt=Vælg PDF-filerne (2+) +multiPdfDropPrompt=Vælg (eller drag & drop) alle PDF-filerne du skal bruge +imgPrompt=Vælg Billede(r) +genericSubmit=Indsend +processTimeWarning=Advarsel: Denne proces kan tage op til et helt minut, alt efter størrelsen på filen +pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) : +pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) : +goToPage=Gå +true=Sandt +false=Falsk +unknown=Ukendt +save=Gem +saveToBrowser=Save to Browser +close=Luk +filesSelected=Filer valgt +noFavourites=Ingen favoritter tilføjet +downloadComplete=Download fuldført +bored=Træt af at vente? +alphabet=Alfabet +downloadPdf=Download PDF +text=Tekst +font=Font +selectFillter=-- Vælg -- +pageNum=Sidenummer +sizes.small=Lille +sizes.medium=Mellem +sizes.large=Stor +sizes.x-large=X-Stor +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect +delete=Slet +username=Brugernavn +password=Adgangskode +welcome=Velkommen +property=Property +black=Sort +white=Hvis +red=Rød +green=Græn +blue=Blå +custom=Custom... +WorkInProgess=Work in progress, May not work or be buggy, Please report any problems! +poweredBy=Powered by +yes=Ja +no=Nej +changedCredsMessage=Credentials changed! +notAuthenticatedMessage=Bruger ikke autoriseret. +userNotFoundMessage=Bruger ikke fundet. +incorrectPasswordMessage=Nuværende adgangskode er forkert. +usernameExistsMessage=Nyt brugernavn findes allerede. +invalidUsernameMessage=Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address. +confirmPasswordErrorMessage=New Password and Confirm New Password must match. +deleteCurrentUserMessage=Cannot delete currently logged in user. +deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Cannot downgrade current user's role +downgradeCurrentUserLongMessage=Cannot downgrade current user's role. Hence, current user will not be shown. +userAlreadyExistsOAuthMessage=The user already exists as an OAuth2 user. +userAlreadyExistsWebMessage=The user already exists as an web user. +error=Fejl +oops=Ups! +help=Hjælp +goHomepage=Gå til hovedsiden +joinDiscord=Join our Discord server +seeDockerHub=Se Docker Hub +visitGithub=Besøg Github Repository +donate=Donér +color=Farve +sponsor=Sponsor +info=Info + + + +############### +# 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.deletePrompt=Are you sure you want to delete pipeline + +###################### +# 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.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Download +pipelineOptions.validateButton=Validate + + + + +############# +# NAVBAR # +############# +navbar.favorite=Favorites +navbar.darkmode=Dark Mode +navbar.language=Languages +navbar.settings=Settings +navbar.allTools=Tools +navbar.multiTool=Multi Tools +navbar.sections.organize=Organize +navbar.sections.convertTo=Convert to PDF +navbar.sections.convertFrom=Convert from PDF +navbar.sections.security=Sign & Security +navbar.sections.advance=Advanced +navbar.sections.edit=View & Edit + +############# +# SETTINGS # +############# +settings.title=Settings +settings.update=Update available +settings.updateAvailable={0} is the current installed version. A new version ({1}) is available. +settings.appVersion=App Version: +settings.downloadOption.title=Choose download option (For single file non zip downloads): +settings.downloadOption.1=Open in same window +settings.downloadOption.2=Open in new window +settings.downloadOption.3=Download file +settings.zipThreshold=Zip files when the number of downloaded files exceeds +settings.signOut=Sign Out +settings.accountSettings=Account Settings +settings.bored.help=Enables easter egg game +settings.cacheInputs.name=Save form inputs +settings.cacheInputs.help=Enable to store previously used inputs for future runs + +changeCreds.title=Change Credentials +changeCreds.header=Update Your Account Details +changeCreds.changePassword=You are using default login credentials. Please enter a new password +changeCreds.newUsername=New Username +changeCreds.oldPassword=Current Password +changeCreds.newPassword=New Password +changeCreds.confirmNewPassword=Confirm New Password +changeCreds.submit=Submit Changes + + + +account.title=Account Settings +account.accountSettings=Account Settings +account.adminSettings=Admin Settings - View and Add Users +account.userControlSettings=User Control Settings +account.changeUsername=Change Username +account.newUsername=New Username +account.password=Confirmation Password +account.oldPassword=Old password +account.newPassword=New Password +account.changePassword=Change Password +account.confirmNewPassword=Confirm New Password +account.signOut=Sign Out +account.yourApiKey=Your API Key +account.syncTitle=Sync browser settings with Account +account.settingsCompare=Settings Comparison: +account.property=Property +account.webBrowserSettings=Web Browser Setting +account.syncToBrowser=Sync Account -> Browser +account.syncToAccount=Sync Account <- Browser + + +adminUserSettings.title=User Control Settings +adminUserSettings.header=Admin User Control Settings +adminUserSettings.admin=Admin +adminUserSettings.user=User +adminUserSettings.addUser=Add New User +adminUserSettings.deleteUser=Delete User +adminUserSettings.confirmDeleteUser=Should the user be deleted? +adminUserSettings.usernameInfo=Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address. +adminUserSettings.roles=Roles +adminUserSettings.role=Role +adminUserSettings.actions=Actions +adminUserSettings.apiUser=Limited API User +adminUserSettings.extraApiUser=Additional Limited API User +adminUserSettings.webOnlyUser=Web Only User +adminUserSettings.demoUser=Demo User (No custom settings) +adminUserSettings.internalApiUser=Internal API User +adminUserSettings.forceChange=Force user to change password on login +adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Change User's Role +adminUserSettings.authenticated=Authenticated + + +database.title=Database Import/Export +database.header=Database Import/Export +database.fileName=File Name +database.creationDate=Creation Date +database.fileSize=File Size +database.deleteBackupFile=Delete Backup File +database.importBackupFile=Import Backup File +database.downloadBackupFile=Download Backup File +database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. +database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. +database.submit=Import Backup +database.importIntoDatabaseSuccessed=Import into database successed +database.fileNotFound=File not found +database.fileNullOrEmpty=File must not be null or empty +database.failedImportFile=Failed to import file + +############# +# HOME-PAGE # +############# +home.desc=Your locally hosted one-stop-shop for all your PDF needs. +home.searchBar=Search for features... + + +home.viewPdf.title=View PDF +home.viewPdf.desc=View, annotate, add text or images +viewPdf.tags=view,read,annotate,text,image + +home.multiTool.title=PDF Multi Tool +home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move + +home.merge.title=Merge +home.merge.desc=Easily merge multiple PDFs into one. +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Split +home.split.desc=Split PDFs into multiple documents +split.tags=Page operations,divide,Multi Page,cut,server side + +home.rotate.title=Rotate +home.rotate.desc=Easily rotate your PDFs. +rotate.tags=server side + + +home.imageToPdf.title=Image to PDF +home.imageToPdf.desc=Convert a image (PNG, JPEG, GIF) to PDF. +imageToPdf.tags=conversion,img,jpg,picture,photo + +home.pdfToImage.title=PDF to Image +home.pdfToImage.desc=Convert a PDF to a image. (PNG, JPEG, GIF) +pdfToImage.tags=conversion,img,jpg,picture,photo + +home.pdfOrganiser.title=Organise +home.pdfOrganiser.desc=Remove/Rearrange pages in any order +pdfOrganiser.tags=duplex,even,odd,sort,move + + +home.addImage.title=Add image +home.addImage.desc=Adds a image onto a set location on the PDF +addImage.tags=img,jpg,picture,photo + +home.watermark.title=Add Watermark +home.watermark.desc=Add a custom watermark to your PDF document. +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo + +home.permissions.title=Change Permissions +home.permissions.desc=Change the permissions of your PDF document +permissions.tags=read,write,edit,print + + +home.removePages.title=Remove +home.removePages.desc=Delete unwanted pages from your PDF document. +removePages.tags=Remove pages,delete pages + +home.addPassword.title=Add Password +home.addPassword.desc=Encrypt your PDF document with a password. +addPassword.tags=secure,security + +home.removePassword.title=Remove Password +home.removePassword.desc=Remove password protection from your PDF document. +removePassword.tags=secure,Decrypt,security,unpassword,delete password + +home.compressPdfs.title=Compress +home.compressPdfs.desc=Compress PDFs to reduce their file size. +compressPdfs.tags=squish,small,tiny + + +home.changeMetadata.title=Change Metadata +home.changeMetadata.desc=Change/Remove/Add metadata from a PDF document +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats + +home.fileToPDF.title=Convert file to PDF +home.fileToPDF.desc=Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more) +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint + +home.ocr.title=OCR / Cleanup scans +home.ocr.desc=Cleanup scans and detects text from images within a PDF and re-adds it as text. +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + + +home.extractImages.title=Extract Images +home.extractImages.desc=Extracts all images from a PDF and saves them to zip +extractImages.tags=picture,photo,save,archive,zip,capture,grab + +home.pdfToPDFA.title=PDF to PDF/A +home.pdfToPDFA.desc=Convert PDF to PDF/A for long-term storage +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation + +home.PDFToWord.title=PDF to Word +home.PDFToWord.desc=Convert PDF to Word formats (DOC, DOCX and ODT) +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile + +home.PDFToPresentation.title=PDF to Presentation +home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP) +PDFToPresentation.tags=slides,show,office,microsoft + +home.PDFToText.title=PDF to RTF (Text) +home.PDFToText.desc=Convert PDF to Text or RTF format +PDFToText.tags=richformat,richtextformat,rich text format + +home.PDFToHTML.title=PDF to HTML +home.PDFToHTML.desc=Convert PDF to HTML format +PDFToHTML.tags=web content,browser friendly + + +home.PDFToXML.title=PDF to XML +home.PDFToXML.desc=Convert PDF to XML format +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert + +home.ScannerImageSplit.title=Detect/Split Scanned photos +home.ScannerImageSplit.desc=Splits multiple photos from within a photo/PDF +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize + +home.sign.title=Sign +home.sign.desc=Adds signature to PDF by drawing, text or image +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature + +home.flatten.title=Flatten +home.flatten.desc=Remove all interactive elements and forms from a PDF +flatten.tags=static,deactivate,non-interactive,streamline + +home.repair.title=Repair +home.repair.desc=Tries to repair a corrupt/broken PDF +repair.tags=fix,restore,correction,recover + +home.removeBlanks.title=Remove Blank pages +home.removeBlanks.desc=Detects and removes blank pages from a document +removeBlanks.tags=cleanup,streamline,non-content,organize + +home.removeAnnotations.title=Remove Annotations +home.removeAnnotations.desc=Removes all comments/annotations from a PDF +removeAnnotations.tags=comments,highlight,notes,markup,remove + +home.compare.title=Compare +home.compare.desc=Compares and shows the differences between 2 PDF Documents +compare.tags=differentiate,contrast,changes,analysis + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +certSign.tags=authenticate,PEM,P12,official,encrypt + +home.removeCertSign.title=Remove Certificate Sign +home.removeCertSign.desc=Remove certificate signature from PDF +removeCertSign.tags=authenticate,PEM,P12,official,decrypt + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +pageLayout.tags=merge,composite,single-view,organize + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of a page and/or its contents. +scalePages.tags=resize,modify,dimension,adapt + +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +pipeline.tags=automate,sequence,scripted,batch-process + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +add-page-numbers.tags=paginate,label,organize,index + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header +auto-rename.tags=auto-detect,header-based,organize,relabel + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +adjust-contrast.tags=color-correction,tune,modify,enhance + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) +crop.tags=trim,shrink,edit,shape + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +autoSplitPDF.tags=QR-based,separate,scan-segment,organize + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files +sanitizePdf.tags=clean,secure,safe,remove-threats + +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert + + +home.MarkdownToPDF.title=Markdown to PDF +home.MarkdownToPDF.desc=Converts any Markdown file to PDF +MarkdownToPDF.tags=markup,web-content,transformation,convert + + +home.getPdfInfo.title=Get ALL Info on PDF +home.getPdfInfo.desc=Grabs any and all information possible on PDFs +getPdfInfo.tags=infomation,data,stats,statistics + + +home.extractPage.title=Extract page(s) +home.extractPage.desc=Extracts select pages from PDF +extractPage.tags=extract + + +home.PdfToSinglePage.title=PDF to Single Large Page +home.PdfToSinglePage.desc=Merges all PDF pages into one large single page +PdfToSinglePage.tags=single page + + +home.showJS.title=Show Javascript +home.showJS.desc=Searches and displays any JS injected into a PDF +showJS.tags=JS + +home.autoRedact.title=Auto Redact +home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text +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 +tableExtraxt.tags=CSV,Table Extraction,extract,convert + + +home.autoSizeSplitPDF.title=Auto Split by Size/Count +home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count +autoSizeSplitPDF.tags=pdf,split,document,organization + + +home.overlay-pdfs.title=Overlay PDFs +home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF +overlay-pdfs.tags=Overlay + +home.split-by-sections.title=Split PDF by Sections +home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections +split-by-sections.tags=Section Split, Divide, Customize + +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.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,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,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Sign in +login.header=Sign in +login.signin=Sign in +login.rememberme=Remember me +login.invalid=Invalid username or password. +login.locked=Your account has been locked. +login.signinTitle=Please sign in +login.ssoSignIn=Login via Single Sign-on +login.oauth2AutoCreateDisabled=OAUTH2 Auto-Create User Disabled +login.oauth2RequestNotFound=Authorization request not found +login.oauth2InvalidUserInfoResponse=Invalid User Info Response +login.oauth2invalidRequest=Invalid Request +login.oauth2AccessDenied=Access Denied +login.oauth2InvalidTokenResponse=Invalid Token Response +login.oauth2InvalidIdToken=Invalid Id Token + + +#auto-redact +autoRedact.title=Auto Redact +autoRedact.header=Auto Redact +autoRedact.colorLabel=Colour +autoRedact.textsToRedactLabel=Text to Redact (line-separated) +autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret +autoRedact.useRegexLabel=Use Regex +autoRedact.wholeWordSearchLabel=Whole Word Search +autoRedact.customPaddingLabel=Custom Extra Padding +autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +autoRedact.submitButton=Submit + + +#showJS +showJS.title=Show Javascript +showJS.header=Show Javascript +showJS.downloadJS=Download Javascript +showJS.submit=Show + + +#pdfToSinglePage +pdfToSinglePage.title=PDF To Single Page +pdfToSinglePage.header=PDF To Single Page +pdfToSinglePage.submit=Convert To Single Page + + +#pageExtracter +pageExtracter.title=Extract Pages +pageExtracter.header=Extract Pages +pageExtracter.submit=Extract +pageExtracter.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) + + +#getPdfInfo +getPdfInfo.title=Get Info on PDF +getPdfInfo.header=Get Info on PDF +getPdfInfo.submit=Get Info +getPdfInfo.downloadJson=Download JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown To PDF +MarkdownToPDF.header=Markdown To PDF +MarkdownToPDF.submit=Convert +MarkdownToPDF.help=Work in progress +MarkdownToPDF.credit=Uses WeasyPrint + + + +#url-to-pdf +URLToPDF.title=URL To PDF +URLToPDF.header=URL To PDF +URLToPDF.submit=Convert +URLToPDF.credit=Uses WeasyPrint + + +#html-to-pdf +HTMLToPDF.title=HTML To PDF +HTMLToPDF.header=HTML To PDF +HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required +HTMLToPDF.submit=Convert +HTMLToPDF.credit=Uses WeasyPrint +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 + + +#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 + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.customTextDesc=Custom Text +addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc +addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop PDF +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.addBorder=Add Borders +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Certificate Signing +certSign.header=Sign a PDF with your certificate (Work in progress) +certSign.selectPDF=Select a PDF File for Signing: +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.selectKey=Select Your Private Key File (PKCS#8 format, could be .pem or .der): +certSign.selectCert=Select Your Certificate File (X.509 format, could be .pem or .der): +certSign.selectP12=Select Your PKCS#12 Keystore File (.p12 or .pfx) (Optional, If provided, it should contain your private key and certificate): +certSign.selectJKS=Select Your Java Keystore File (.jks or .keystore): +certSign.certType=Certificate Type +certSign.password=Enter Your Keystore or Private Key Password (If Any): +certSign.showSig=Show Signature +certSign.reason=Reason +certSign.location=Location +certSign.name=Name +certSign.submit=Sign PDF + + +#removeCertSign +removeCertSign.title=Remove Certificate Signature +removeCertSign.header=Remove the digital certificate from the PDF +removeCertSign.selectPDF=Select a PDF file: +removeCertSign.submit=Remove Signature + + +#removeBlanks +removeBlanks.title=Remove Blanks +removeBlanks.header=Remove Blank Pages +removeBlanks.threshold=Pixel Whiteness Threshold: +removeBlanks.thresholdDesc=Threshold for determining how white a white pixel must be to be classed as 'White'. 0 = Black, 255 pure white. +removeBlanks.whitePercent=White Percent (%): +removeBlanks.whitePercentDesc=Percent of page that must be 'white' pixels to be removed +removeBlanks.submit=Remove Blanks + + +#removeAnnotations +removeAnnotations.title=Remove Annotations +removeAnnotations.header=Remove Annotations +removeAnnotations.submit=Remove + + +#compare +compare.title=Compare +compare.header=Compare PDFs +compare.highlightColor.1=Highlight Color 1: +compare.highlightColor.2=Highlight Color 2: +compare.document.1=Document 1 +compare.document.2=Document 2 +compare.submit=Compare + +#BookToPDF +BookToPDF.title=Books and Comics to PDF +BookToPDF.header=Book to PDF +BookToPDF.credit=Uses Calibre +BookToPDF.submit=Convert + +#PDFToBook +PDFToBook.title=PDF to Book +PDFToBook.header=PDF to Book +PDFToBook.selectText.1=Format +PDFToBook.credit=Uses Calibre +PDFToBook.submit=Convert + +#sign +sign.title=Sign +sign.header=Sign PDFs +sign.upload=Upload Image +sign.draw=Draw Signature +sign.text=Text Input +sign.clear=Clear +sign.add=Add + + +#repair +repair.title=Repair +repair.header=Repair PDFs +repair.submit=Repair + + +#flatten +flatten.title=Flatten +flatten.header=Flatten PDF +flatten.flattenOnlyForms=Flatten only forms +flatten.submit=Flatten + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Angle Threshold: +ScannerImageSplit.selectText.2=Sets the minimum absolute angle required for the image to be rotated (default: 10). +ScannerImageSplit.selectText.3=Tolerance: +ScannerImageSplit.selectText.4=Determines the range of color variation around the estimated background color (default: 30). +ScannerImageSplit.selectText.5=Minimum Area: +ScannerImageSplit.selectText.6=Sets the minimum area threshold for a photo (default: 10000). +ScannerImageSplit.selectText.7=Minimum Contour Area: +ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a photo +ScannerImageSplit.selectText.9=Border Size: +ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1). + + +#OCR +ocr.title=OCR / Scan Cleanup +ocr.header=Cleanup Scans / OCR (Optical Character Recognition) +ocr.selectText.1=Select languages that are to be detected within the PDF (Ones listed are the ones currently detected): +ocr.selectText.2=Produce text file containing OCR text alongside the OCR'ed PDF +ocr.selectText.3=Correct pages were scanned at a skewed angle by rotating them back into place +ocr.selectText.4=Clean page so its less likely that OCR will find text in background noise. (No output change) +ocr.selectText.5=Clean page so its less likely that OCR will find text in background noise, maintains cleanup in output. +ocr.selectText.6=Ignores pages that have interactive text on them, only OCRs pages that are images +ocr.selectText.7=Force OCR, will OCR Every page removing all original text elements +ocr.selectText.8=Normal (Will error if PDF contains text) +ocr.selectText.9=Additional Settings +ocr.selectText.10=OCR Mode +ocr.selectText.11=Remove images after OCR (Removes ALL images, only useful if part of conversion step) +ocr.selectText.12=Render Type (Advanced) +ocr.help=Please read this documentation on how to use this for other languages and/or use not in docker +ocr.credit=This service uses OCRmyPDF and Tesseract for OCR. +ocr.submit=Process PDF with OCR + + +#extractImages +extractImages.title=Extract Images +extractImages.header=Extract Images +extractImages.selectText=Select image format to convert extracted images to +extractImages.submit=Extract + + +#File to PDF +fileToPDF.title=File to PDF +fileToPDF.header=Convert any file to PDF +fileToPDF.credit=This service uses LibreOffice and Unoconv for file conversion. +fileToPDF.supportedFileTypesInfo=Supported File types +fileToPDF.supportedFileTypes=Supported file types should include the below however for a full updated list of supported formats, please refer to the LibreOffice documentation +fileToPDF.submit=Convert to PDF + + +#compress +compress.title=Compress +compress.header=Compress PDF +compress.credit=This service uses Ghostscript for PDF Compress/Optimisation. +compress.selectText.1=Manual Mode - From 1 to 4 +compress.selectText.2=Optimization level: +compress.selectText.3=4 (Terrible for text images) +compress.selectText.4=Auto mode - Auto adjusts quality to get PDF to exact size +compress.selectText.5=Expected PDF Size (e.g. 25MB, 10.8MB, 25KB) +compress.submit=Compress + + +#Add image +addImage.title=Add Image +addImage.header=Add image to PDF +addImage.everyPage=Every Page? +addImage.upload=Add image +addImage.submit=Add image + + +#merge +merge.title=Merge +merge.header=Merge multiple PDFs (2+) +merge.sortByName=Sort by name +merge.sortByDate=Sort by date +merge.removeCertSign=Remove digital signature in the merged file? +merge.submit=Merge + + +#pdfOrganiser +pdfOrganiser.title=Page Organiser +pdfOrganiser.header=PDF Page Organiser +pdfOrganiser.submit=Rearrange Pages +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.mode.10=Odd-Even Merge +pdfOrganiser.placeholder=(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1) + + +#multiTool +multiTool.title=PDF Multi Tool +multiTool.header=PDF Multi Tool +multiTool.uploadPrompts=File Name + +#view pdf +viewPdf.title=View PDF +viewPdf.header=View PDF + +#pageRemover +pageRemover.title=Page Remover +pageRemover.header=PDF Page remover +pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) : +pageRemover.submit=Delete Pages +pageRemover.placeholder=(e.g. 1,2,6 or 1-10,15-30) + + +#rotate +rotate.title=Rotate PDF +rotate.header=Rotate PDF +rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): +rotate.submit=Rotate + + +#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-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, 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 + + +#merge +imageToPDF.title=Image to PDF +imageToPDF.header=Image to PDF +imageToPDF.submit=Convert +imageToPDF.selectLabel=Image Fit Options +imageToPDF.fillPage=Fill Page +imageToPDF.fitDocumentToImage=Fit Page to Image +imageToPDF.maintainAspectRatio=Maintain Aspect Ratios +imageToPDF.selectText.2=Auto rotate PDF +imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images) +imageToPDF.selectText.4=Merge into single PDF +imageToPDF.selectText.5=Convert to separate PDFs + + +#pdfToImage +pdfToImage.title=PDF to Image +pdfToImage.header=PDF to Image +pdfToImage.selectText=Image Format +pdfToImage.singleOrMultiple=Page to Image result type +pdfToImage.single=Single Big Image Combing all pages +pdfToImage.multi=Multiple Images, one image per page +pdfToImage.colorType=Colour type +pdfToImage.color=Colour +pdfToImage.grey=Greyscale +pdfToImage.blackwhite=Black and White (May lose data!) +pdfToImage.submit=Convert + + +#addPassword +addPassword.title=Add Password +addPassword.header=Add password (Encrypt) +addPassword.selectText.1=Select PDF to encrypt +addPassword.selectText.2=User Password +addPassword.selectText.3=Encryption Key Length +addPassword.selectText.4=Higher values are stronger, but lower values have better compatibility. +addPassword.selectText.5=Permissions to set (Recommended to be used along with Owner password) +addPassword.selectText.6=Prevent assembly of document +addPassword.selectText.7=Prevent content extraction +addPassword.selectText.8=Prevent extraction for accessibility +addPassword.selectText.9=Prevent filling in form +addPassword.selectText.10=Prevent modification +addPassword.selectText.11=Prevent annotation modification +addPassword.selectText.12=Prevent printing +addPassword.selectText.13=Prevent printing different formats +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Encrypt + + +#watermark +watermark.title=Add Watermark +watermark.header=Add Watermark +watermark.selectText.1=Select PDF to add watermark to: +watermark.selectText.2=Watermark Text: +watermark.selectText.3=Font Size: +watermark.selectText.4=Rotation (0-360): +watermark.selectText.5=widthSpacer (Space between each watermark horizontally): +watermark.selectText.6=heightSpacer (Space between each watermark vertically): +watermark.selectText.7=Opacity (0% - 100%): +watermark.selectText.8=Watermark Type: +watermark.selectText.9=Watermark Image: +watermark.submit=Add Watermark +watermark.type.1=Text +watermark.type.2=Image + + +#Change permissions +permissions.title=Change Permissions +permissions.header=Change Permissions +permissions.warning=Warning to have these permissions be unchangeable it is recommended to set them with a password via the add-password page +permissions.selectText.1=Select PDF to change permissions +permissions.selectText.2=Permissions to set +permissions.selectText.3=Prevent assembly of document +permissions.selectText.4=Prevent content extraction +permissions.selectText.5=Prevent extraction for accessibility +permissions.selectText.6=Prevent filling in form +permissions.selectText.7=Prevent modification +permissions.selectText.8=Prevent annotation modification +permissions.selectText.9=Prevent printing +permissions.selectText.10=Prevent printing different formats +permissions.submit=Change + + +#remove password +removePassword.title=Remove password +removePassword.header=Remove password (Decrypt) +removePassword.selectText.1=Select PDF to Decrypt +removePassword.selectText.2=Password +removePassword.submit=Remove + + +#changeMetadata +changeMetadata.title=Change Metadata +changeMetadata.header=Change Metadata +changeMetadata.selectText.1=Please edit the variables you wish to change +changeMetadata.selectText.2=Delete all metadata +changeMetadata.selectText.3=Show Custom Metadata: +changeMetadata.author=Author: +changeMetadata.creationDate=Creation Date (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Creator: +changeMetadata.keywords=Keywords: +changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Producer: +changeMetadata.subject=Subject: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Other Metadata: +changeMetadata.selectText.5=Add Custom Metadata Entry +changeMetadata.submit=Change + + +#pdfToPDFA +pdfToPDFA.title=PDF To PDF/A +pdfToPDFA.header=PDF To PDF/A +pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion +pdfToPDFA.submit=Convert +pdfToPDFA.tip=Currently does not work for multiple inputs at once +pdfToPDFA.outputFormat=Output format +pdfToPDFA.pdfWithDigitalSignature=The PDF contains a digital signature. This will be removed in the next step. + + +#PDFToWord +PDFToWord.title=PDF to Word +PDFToWord.header=PDF to Word +PDFToWord.selectText.1=Output file format +PDFToWord.credit=This service uses LibreOffice for file conversion. +PDFToWord.submit=Convert + + +#PDFToPresentation +PDFToPresentation.title=PDF to Presentation +PDFToPresentation.header=PDF to Presentation +PDFToPresentation.selectText.1=Output file format +PDFToPresentation.credit=This service uses LibreOffice for file conversion. +PDFToPresentation.submit=Convert + + +#PDFToText +PDFToText.title=PDF to RTF (Text) +PDFToText.header=PDF to RTF (Text) +PDFToText.selectText.1=Output file format +PDFToText.credit=This service uses LibreOffice for file conversion. +PDFToText.submit=Convert + + +#PDFToHTML +PDFToHTML.title=PDF to HTML +PDFToHTML.header=PDF to HTML +PDFToHTML.credit=This service uses pdftohtml for file conversion. +PDFToHTML.submit=Convert + + +#PDFToXML +PDFToXML.title=PDF to XML +PDFToXML.header=PDF to XML +PDFToXML.credit=This service uses LibreOffice for file conversion. +PDFToXML.submit=Convert + +#PDFToCSV +PDFToCSV.title=PDF to CSV +PDFToCSV.header=PDF to CSV +PDFToCSV.prompt=Choose page to extract table +PDFToCSV.submit=Extract + +#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 + + +#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=Antal overlejringer (for Fixed Repeat Mode) +overlay-pdfs.counts.placeholder=Indtast kommaseparerede tællinger (f.eks. 2,3,1) +overlay-pdfs.position.label=Vælg overlejringsposition +overlay-pdfs.position.foreground=Forgrund +overlay-pdfs.position.background=Baggrund +overlay-pdfs.submit=Indsend + + +#split-by-sections +split-by-sections.title=Del PDF i Sektioner +split-by-sections.header=Del PDF ind i Sektioner +split-by-sections.horizontal.label=Horisontal Deling +split-by-sections.vertical.label=Vertikal Deling +split-by-sections.horizontal.placeholder=Indtast antal horisontale delinger +split-by-sections.vertical.placeholder=Indtast antal af vertikale delinger +split-by-sections.submit=Del PDF +split-by-sections.merge=Slå sammen til én PDF + + +#printFile +printFile.title=Udskriv Fil +printFile.header=Udskriv Fil til Printer +printFile.selectText.1=Vælg Fil som skal Udskrives +printFile.selectText.2=Indtast printernavn +printFile.submit=Udskriv + + +#licenses +licenses.nav=Licenser +licenses.title=Trejdepartslicenser +licenses.header=Trejdepartslicenser +licenses.module=Modul +licenses.version=Version +licenses.license=License + +#survey +survey.nav=Survey +survey.title=Stirling-PDF Survey +survey.description=Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF! +survey.please=Please consider taking our survey! +survey.disabled=(Survey popup will be disabled in following updates but available at foot of page) +survey.button=Take Survey +survey.dontShowAgain=Don't show again + + +#error +error.sorry=Beklager fejlen! +error.needHelp=Brug for hjælp / Fundet et problem? +error.contactTip=Hvis du stadig har problemer, skal du endelig tage kontakt til os, for at få hjælp. Du kan oprette en ticket på vores Github-side eller tage kontakt til os via Discord: +error.404.head=404 - Siden ikke fundet | Ups, vi er viklet helt ind i kode! +error.404.1=Vi kan ikke finde siden du leder efter. +error.404.2=Noget gik galt +error.github=Indsend en ticket på GitHub +error.showStack=Vis Stack Trace +error.copyStack=Kopier Stack Trace +error.githubSubmit=GitHub - Indsend en ticket +error.discordSubmit=Discord - Indsend Support post diff --git a/src/main/resources/static/images/flags/dk.svg b/src/main/resources/static/images/flags/dk.svg new file mode 100644 index 00000000000..563277f81d9 --- /dev/null +++ b/src/main/resources/static/images/flags/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/templates/fragments/languages.html b/src/main/resources/templates/fragments/languages.html index e5babada84a..e625adf782a 100644 --- a/src/main/resources/templates/fragments/languages.html +++ b/src/main/resources/templates/fragments/languages.html @@ -4,6 +4,7 @@ icon Català icon 简体中文 icon 繁體中文 + icon Dansk icon Deutsch icon English (GB) icon English (US) From 39cbb5e7d98a08ae24ada51f398c2962b832a864 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 1 Aug 2024 00:10:12 +0100 Subject: [PATCH 18/50] :memo: Update README: Translation Progress Table (#1615) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- scripts/ignore_translation.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index 0479527e8f4..0a9512c26da 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -25,6 +25,11 @@ ignore = [ 'text', ] +[da_DK] +ignore = [ + 'language.direction', +] + [de_DE] ignore = [ 'AddStampRequest.alphabet', From c54c18b2475346f9e0eacf09b982b9e85a8a2943 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sat, 3 Aug 2024 11:16:26 +0200 Subject: [PATCH 19/50] Add: Irish and Danish to the table (#1622) --- README.md | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index c95b8b8377c..5c477cccdcb 100644 --- a/README.md +++ b/README.md @@ -165,43 +165,45 @@ Please view https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR ## Supported Languages -Stirling PDF currently supports 34! +Stirling PDF currently supports 38! | Language | Progress | | ------------------------------------------- | -------------------------------------- | +| Arabic (العربية) (ar_AR) | ![45%](https://geps.dev/progress/45) | +| Basque (Euskara) (eu_ES) | ![62%](https://geps.dev/progress/62) | +| Bulgarian (Български) (bg_BG) | ![94%](https://geps.dev/progress/94) | +| Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | +| Croatian (Hrvatski) (hr_HR) | ![95%](https://geps.dev/progress/95) | +| Czech (Česky) (cs_CZ) | ![90%](https://geps.dev/progress/90) | +| Danish (Dansk) (da_DK) | ![10%](https://geps.dev/progress/10) | +| Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| Arabic (العربية) (ar_AR) | ![45%](https://geps.dev/progress/45) | -| German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | | French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | -| Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | -| Simplified Chinese (简体中文) (zh_CN) | ![99%](https://geps.dev/progress/99) | -| Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | -| Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | +| German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | +| Greek (Ελληνικά) (el_GR) | ![82%](https://geps.dev/progress/82) | +| Hindi (हिंदी) (hi_IN) | ![77%](https://geps.dev/progress/77) | +| Hungarian (Magyar) (hu_HU) | ![76%](https://geps.dev/progress/76) | +| Indonesia (Bahasa Indonesia) (id_ID) | ![76%](https://geps.dev/progress/76) | +| Irish (Gaeilge) (ga_IE) | ![99%](https://geps.dev/progress/99) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Swedish (Svenska) (sv_SE) | ![39%](https://geps.dev/progress/39) | -| Polish (Polski) (pl_PL) | ![90%](https://geps.dev/progress/90) | -| Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) | +| Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | -| Portuguese Brazilian (Português) (pt_BR) | ![60%](https://geps.dev/progress/60) | +| Norwegian (Norsk) (no_NB) | ![96%](https://geps.dev/progress/96) | +| Polish (Polski) (pl_PL) | ![90%](https://geps.dev/progress/90) | | Portuguese (Português) (pt_PT) | ![78%](https://geps.dev/progress/78) | +| Portuguese Brazilian (Português) (pt_BR) | ![60%](https://geps.dev/progress/60) | +| Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) | | Russian (Русский) (ru_RU) | ![84%](https://geps.dev/progress/84) | -| Basque (Euskara) (eu_ES) | ![62%](https://geps.dev/progress/62) | -| Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | -| Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) | -| Greek (Ελληνικά) (el_GR) | ![82%](https://geps.dev/progress/82) | -| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | -| Indonesia (Bahasa Indonesia) (id_ID) | ![76%](https://geps.dev/progress/76) | -| Hindi (हिंदी) (hi_IN) | ![77%](https://geps.dev/progress/77) | -| Hungarian (Magyar) (hu_HU) | ![76%](https://geps.dev/progress/76) | -| Bulgarian (Български) (bg_BG) | ![94%](https://geps.dev/progress/94) | | Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![78%](https://geps.dev/progress/78) | -| Ukrainian (Українська) (uk_UA) | ![90%](https://geps.dev/progress/90) | +| Simplified Chinese (简体中文) (zh_CN) | ![99%](https://geps.dev/progress/99) | | Slovakian (Slovensky) (sk_SK) | ![92%](https://geps.dev/progress/92) | -| Czech (Česky) (cs_CZ) | ![90%](https://geps.dev/progress/90) | -| Croatian (Hrvatski) (hr_HR) | ![95%](https://geps.dev/progress/95) | -| Norwegian (Norsk) (no_NB) | ![96%](https://geps.dev/progress/96) | +| Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | +| Swedish (Svenska) (sv_SE) | ![39%](https://geps.dev/progress/39) | | Thai (ไทย) (th_TH) | ![100%](https://geps.dev/progress/100) | +| Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | +| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | +| Ukrainian (Українська) (uk_UA) | ![90%](https://geps.dev/progress/90) | | Vietnamese (Tiếng Việt) (vi_VN) | ![99%](https://geps.dev/progress/99) | ## Contributing (creating issues, translations, fixing bugs, etc.) From 191e79da18eee10b75246084cee6245455962ccb Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sat, 3 Aug 2024 10:29:34 +0100 Subject: [PATCH 20/50] Update test.yml (#1623) * Update test.yml * Update SPdfApplication.java --- .github/workflows/test.yml | 4 ++-- src/main/java/stirling/software/SPDF/SPdfApplication.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0852bcf98bd..c4a4ff31d48 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,8 +29,8 @@ jobs: - name: Install Docker Compose run: | - sudo curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - # sudo chmod +x /usr/local/bin/docker-compose + sudo curl -SL "https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose - name: Set up Python uses: actions/setup-python@v4 diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index f49fe300024..3b4ea174063 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -45,7 +45,6 @@ public void init() { // Check if the BROWSER_OPEN environment variable is set to true String browserOpenEnv = env.getProperty("BROWSER_OPEN"); boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); - if (browserOpen) { try { String url = "http://localhost:" + getNonStaticPort(); From ea6d4a293e3b4d103a310f947c8c906d943b1912 Mon Sep 17 00:00:00 2001 From: Manohar Mannam Date: Sat, 3 Aug 2024 15:00:53 +0530 Subject: [PATCH 21/50] blank pages returns removed pages for verification #1574 (#1619) separated blank and non-blank pages and created unified ZIP archive Co-authored-by: mannam <101550345+ManoharMannam@users.noreply.github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .../api/misc/BlankPageController.java | 82 ++++++++++++------- 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java index 59fc0be7894..4c050355363 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java @@ -1,12 +1,12 @@ package stirling.software.SPDF.controller.api.misc; import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; @@ -17,6 +17,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -50,31 +51,31 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR int threshold = request.getThreshold(); float whitePercent = request.getWhitePercent(); - PDDocument document = null; - try { - document = Loader.loadPDF(inputFile.getBytes()); + try (PDDocument document = Loader.loadPDF(inputFile.getBytes())) { PDPageTree pages = document.getDocumentCatalog().getPages(); PDFTextStripper textStripper = new PDFTextStripper(); - List pagesToKeepIndex = new ArrayList<>(); + List nonBlankPages = new ArrayList<>(); + List blankPages = new ArrayList<>(); int pageIndex = 0; + PDFRenderer pdfRenderer = new PDFRenderer(document); pdfRenderer.setSubsamplingAllowed(true); for (PDPage page : pages) { - logger.info("checking page " + pageIndex); + logger.info("checking page {}", pageIndex); textStripper.setStartPage(pageIndex + 1); textStripper.setEndPage(pageIndex + 1); String pageText = textStripper.getText(document); boolean hasText = !pageText.trim().isEmpty(); - Boolean blank = true; + boolean blank = true; if (hasText) { - logger.info("page " + pageIndex + " has text, not blank"); + logger.info("page {} has text, not blank", pageIndex); blank = false; } else { boolean hasImages = PdfUtils.hasImagesOnPage(page); if (hasImages) { - logger.info("page " + pageIndex + " has image, running blank detection"); + logger.info("page {} has image, running blank detection", pageIndex); // Render image and save as temp file BufferedImage image = pdfRenderer.renderImageWithDPI(pageIndex, 30); blank = isBlankImage(image, threshold, whitePercent, threshold); @@ -82,34 +83,57 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR } if (blank) { - logger.info("Skipping, Image was blank for page #" + pageIndex); + logger.info("Skipping, Image was blank for page #{}", pageIndex); + blankPages.add(page); } else { - logger.info("page " + pageIndex + " has image which is not blank"); - pagesToKeepIndex.add(pageIndex); + logger.info("page {} has image which is not blank", pageIndex); + nonBlankPages.add(page); } pageIndex++; } - // Remove pages not present in pagesToKeepIndex - List pageIndices = - IntStream.range(0, pages.getCount()).boxed().collect(Collectors.toList()); - Collections.reverse(pageIndices); // Reverse to prevent index shifting during removal - for (Integer i : pageIndices) { - if (!pagesToKeepIndex.contains(i)) { - pages.remove(i); - } - } - return WebResponseUtils.pdfDocToWebResponse( - document, + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ZipOutputStream zos = new ZipOutputStream(baos); + + String filename = Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_blanksRemoved.pdf"); + .replaceFirst("[.][^.]+$", ""); + + if (!nonBlankPages.isEmpty()) { + createZipEntry(zos, nonBlankPages, filename + "_nonBlankPages.pdf"); + } else { + createZipEntry(zos, blankPages, filename + "_allBlankPages.pdf"); + } + + if (!nonBlankPages.isEmpty() && !blankPages.isEmpty()) { + createZipEntry(zos, blankPages, filename + "_blankPages.pdf"); + } + + zos.close(); + + logger.info("Returning ZIP file: {}", filename + "_processed.zip"); + return WebResponseUtils.boasToWebResponse( + baos, filename + "_processed.zip", MediaType.APPLICATION_OCTET_STREAM); + } catch (IOException e) { logger.error("exception", e); return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); - } finally { - if (document != null) document.close(); + } + } + + public void createZipEntry(ZipOutputStream zos, List pages, String entryName) + throws IOException { + try (PDDocument document = new PDDocument()) { + + for (PDPage page : pages) { + document.addPage(page); + } + + ZipEntry zipEntry = new ZipEntry(entryName); + zos.putNextEntry(zipEntry); + document.save(zos); + zos.closeEntry(); } } From 0ed4c16dc003954434ef7954cb96d1d9e1312cdc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 10:33:57 +0100 Subject: [PATCH 22/50] Bump io.spring.dependency-management from 1.1.5 to 1.1.6 (#1579) Bumps [io.spring.dependency-management](https://github.com/spring-gradle-plugins/dependency-management-plugin) from 1.1.5 to 1.1.6. - [Release notes](https://github.com/spring-gradle-plugins/dependency-management-plugin/releases) - [Commits](https://github.com/spring-gradle-plugins/dependency-management-plugin/compare/v1.1.5...v1.1.6) --- updated-dependencies: - dependency-name: io.spring.dependency-management dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0dde7af550f..1d15af47bbe 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id "java" id "org.springframework.boot" version "3.3.0" - id "io.spring.dependency-management" version "1.1.5" + id "io.spring.dependency-management" version "1.1.6" id "org.springdoc.openapi-gradle-plugin" version "1.8.0" id "io.swagger.swaggerhub" version "1.3.2" id "edu.sc.seis.launch4j" version "3.0.5" From 0f60974a57a9d44621d132c7cba5a3c037d78257 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sat, 3 Aug 2024 10:44:17 +0100 Subject: [PATCH 23/50] Update examples.feature (#1624) --- cucumber/features/examples.feature | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cucumber/features/examples.feature b/cucumber/features/examples.feature index c6477466fd7..5c5d9da762b 100644 --- a/cucumber/features/examples.feature +++ b/cucumber/features/examples.feature @@ -92,10 +92,10 @@ Feature: API Validation | threshold | 90 | | whitePercent | 99.9 | When I send the API request to the endpoint "/api/v1/misc/remove-blanks" - Then the response content type should be "application/pdf" + Then the response content type should be "application/octet-stream" + And the response file should have extension ".zip" + And the response ZIP should contain 2 files And the response file should have size greater than 0 - And the response PDF should contain 0 pages - And the response status code should be 200 @positive @flatten Scenario: Flatten PDF @@ -127,4 +127,4 @@ Feature: API Validation And the response PDF metadata should include "Title" as "Sample Title" And the response status code should be 200 - \ No newline at end of file + From e6793bd04a0650d42a4590515877645ca6cf9813 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sat, 3 Aug 2024 13:52:50 +0200 Subject: [PATCH 24/50] Fix: fail JUnit test (#1625) --- .../SPDF/{utils => }/SPdfApplicationTest.java | 39 +++++++++++++++++-- .../software/SPDF/utils/FileToPdfTest.java | 2 +- 2 files changed, 36 insertions(+), 5 deletions(-) rename src/test/java/stirling/software/SPDF/{utils => }/SPdfApplicationTest.java (52%) diff --git a/src/test/java/stirling/software/SPDF/utils/SPdfApplicationTest.java b/src/test/java/stirling/software/SPDF/SPdfApplicationTest.java similarity index 52% rename from src/test/java/stirling/software/SPDF/utils/SPdfApplicationTest.java rename to src/test/java/stirling/software/SPDF/SPdfApplicationTest.java index f9229b64d4e..350aef7450a 100644 --- a/src/test/java/stirling/software/SPDF/utils/SPdfApplicationTest.java +++ b/src/test/java/stirling/software/SPDF/SPdfApplicationTest.java @@ -1,10 +1,11 @@ -package stirling.software.SPDF.utils; +package stirling.software.SPDF; import static org.junit.jupiter.api.Assertions.*; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,7 +15,6 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.core.env.Environment; -import stirling.software.SPDF.SPdfApplication; import stirling.software.SPDF.model.ApplicationProperties; @ExtendWith(MockitoExtension.class) @@ -43,12 +43,43 @@ public void testSetServerPortStatic() { @Test public void testMainApplicationStartup() throws IOException, InterruptedException { + // Setup mock environment for the main method + Path configPath = Path.of("test/configs"); + Path settingsPath = Paths.get("test/configs/settings.yml"); + Path customSettingsPath = Paths.get("test/configs/custom_settings.yml"); + Path staticPath = Path.of("test/customFiles/static/"); + Path templatesPath = Path.of("test/customFiles/templates/"); + + // Ensure the files do not exist for the test + if (Files.exists(settingsPath)) { + Files.delete(settingsPath); + } + if (Files.exists(customSettingsPath)) { + Files.delete(customSettingsPath); + } + if (Files.exists(staticPath)) { + Files.delete(staticPath); + } + if (Files.exists(templatesPath)) { + Files.delete(templatesPath); + } + + // Ensure the directories are created for testing + Files.createDirectories(configPath); + Files.createDirectories(staticPath); + Files.createDirectories(templatesPath); + + Files.createFile(settingsPath); + Files.createFile(customSettingsPath); + // Run the main method SPdfApplication.main(new String[]{}); // Verify that the directories were created - assertTrue(Files.exists(Path.of("customFiles/static/"))); - assertTrue(Files.exists(Path.of("customFiles/templates/"))); + assertTrue(Files.exists(settingsPath)); + assertTrue(Files.exists(customSettingsPath)); + assertTrue(Files.exists(staticPath)); + assertTrue(Files.exists(templatesPath)); } @Test diff --git a/src/test/java/stirling/software/SPDF/utils/FileToPdfTest.java b/src/test/java/stirling/software/SPDF/utils/FileToPdfTest.java index 66c1953988a..585f677bc93 100644 --- a/src/test/java/stirling/software/SPDF/utils/FileToPdfTest.java +++ b/src/test/java/stirling/software/SPDF/utils/FileToPdfTest.java @@ -13,7 +13,7 @@ public class FileToPdfTest { @Test public void testConvertHtmlToPdf() { HTMLToPdfRequest request = new HTMLToPdfRequest(); - byte[] fileBytes = new byte[10]; // Sample file bytes + byte[] fileBytes = new byte[0]; // Sample file bytes String fileName = "test.html"; // Sample file name boolean htmlFormatsInstalled = true; // Sample boolean value From 950a0c4b2184ae8136398851428cb8d7d418bcd2 Mon Sep 17 00:00:00 2001 From: Ludy Date: Sat, 3 Aug 2024 14:18:51 +0200 Subject: [PATCH 25/50] Bump org.springframework.boot from 3.3.0 to 3.3.2 & Gradle 8 compatibility (#1626) Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .github/labeler-config.yml | 2 +- build.gradle | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index 376ee372f4d..d96a2a192c2 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -46,4 +46,4 @@ Docker: Test: - changed-files: - any-glob-to-any-file: 'cucumber/**/*' - - any-glob-to-any-file: 'test*' + - any-glob-to-any-file: 'src/test**/*' diff --git a/build.gradle b/build.gradle index 1d15af47bbe..c4787869dd6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "org.springframework.boot" version "3.3.0" + id "org.springframework.boot" version "3.3.2" id "io.spring.dependency-management" version "1.1.6" id "org.springdoc.openapi-gradle-plugin" version "1.8.0" id "io.swagger.swaggerhub" version "1.3.2" @@ -18,8 +18,10 @@ ext { group = "stirling.software" version = "0.26.2" -// 17 is lowest but we support and recommend 21 -sourceCompatibility = "17" +java { + // 17 is lowest but we support and recommend 21 + sourceCompatibility = JavaVersion.VERSION_17 +} repositories { mavenCentral() @@ -106,7 +108,7 @@ dependencies { // implementation "org.yaml:snakeyaml:2.2" implementation 'com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4' - + // Exclude Tomcat and include Jetty implementation("org.springframework.boot:spring-boot-starter-web:$springBootVersion") { exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" @@ -196,7 +198,7 @@ compileJava { options.compilerArgs << "-parameters" } -task writeVersion { +task writeVersion { def propsFile = file("src/main/resources/version.properties") def props = new Properties() props.setProperty("version", version) @@ -226,6 +228,6 @@ tasks.named("test") { useJUnitPlatform() } -task printVersion { +task printVersion { println project.version } From 510f39ad410f2e632758a65bbe46266fdeeef424 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sat, 3 Aug 2024 13:47:47 +0100 Subject: [PATCH 26/50] Update examples.feature --- cucumber/features/examples.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cucumber/features/examples.feature b/cucumber/features/examples.feature index 5c5d9da762b..6252b76a618 100644 --- a/cucumber/features/examples.feature +++ b/cucumber/features/examples.feature @@ -94,7 +94,7 @@ Feature: API Validation When I send the API request to the endpoint "/api/v1/misc/remove-blanks" Then the response content type should be "application/octet-stream" And the response file should have extension ".zip" - And the response ZIP should contain 2 files + And the response ZIP should contain 1 files And the response file should have size greater than 0 @positive @flatten From d00e7fe958ac4c8fe315fa4891b7a46d16dbb8c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 13:47:59 +0100 Subject: [PATCH 27/50] Update 3rd Party Licenses (#1627) Signed-off-by: GitHub Action Co-authored-by: GitHub Action --- .../resources/static/3rdPartyLicenses.json | 138 +++++++++--------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 4a96a99dc01..44c9bbdbe1c 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -24,56 +24,56 @@ { "moduleName": "com.fasterxml.jackson.core:jackson-annotations", "moduleUrl": "https://github.com/FasterXML/jackson", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.core:jackson-core", "moduleUrl": "https://github.com/FasterXML/jackson-core", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.core:jackson-databind", "moduleUrl": "https://github.com/FasterXML/jackson", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml", "moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson:jackson-bom", "moduleUrl": "https://github.com/FasterXML/jackson-bom", - "moduleVersion": "2.17.1", + "moduleVersion": "2.17.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -279,7 +279,7 @@ { "moduleName": "io.micrometer:micrometer-commons", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.0", + "moduleVersion": "1.13.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -293,14 +293,14 @@ { "moduleName": "io.micrometer:micrometer-jakarta9", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.0", + "moduleVersion": "1.13.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.micrometer:micrometer-observation", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.0", + "moduleVersion": "1.13.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -424,7 +424,7 @@ }, { "moduleName": "net.bytebuddy:byte-buddy", - "moduleVersion": "1.14.16", + "moduleVersion": "1.14.18", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -513,7 +513,7 @@ { "moduleName": "org.apache.tomcat.embed:tomcat-embed-el", "moduleUrl": "https://tomcat.apache.org/", - "moduleVersion": "10.1.24", + "moduleVersion": "10.1.26", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -533,7 +533,7 @@ { "moduleName": "org.aspectj:aspectjweaver", "moduleUrl": "https://www.eclipse.org/aspectj/", - "moduleVersion": "1.9.22", + "moduleVersion": "1.9.22.1", "moduleLicense": "Eclipse Public License - v 2.0", "moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt" }, @@ -587,182 +587,182 @@ { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-alpn-client", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-client", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-ee", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-http", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-io", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-plus", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-security", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-server", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-session", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-util", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-xml", "moduleUrl": "https://eclipse.dev/jetty/", - "moduleVersion": "12.0.9", + "moduleVersion": "12.0.11", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, @@ -878,28 +878,28 @@ { "moduleName": "org.springframework.boot:spring-boot", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -913,7 +913,7 @@ { "moduleName": "org.springframework.boot:spring-boot-starter", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -927,7 +927,7 @@ { "moduleName": "org.springframework.boot:spring-boot-starter-aop", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -941,7 +941,7 @@ { "moduleName": "org.springframework.boot:spring-boot-starter-jdbc", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -955,14 +955,14 @@ { "moduleName": "org.springframework.boot:spring-boot-starter-json", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-logging", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, @@ -997,140 +997,140 @@ { "moduleName": "org.springframework.data:spring-data-commons", "moduleUrl": "https://spring.io/projects/spring-data", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.data:spring-data-jpa", "moduleUrl": "https://projects.spring.io/spring-data-jpa", - "moduleVersion": "3.3.0", + "moduleVersion": "3.3.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-config", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-core", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-crypto", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-client", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-core", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-jose", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-web", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.0", + "moduleVersion": "6.3.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-aop", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-aspects", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-beans", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-context", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-core", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-expression", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jcl", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jdbc", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-orm", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-tx", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-web", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.8", + "moduleVersion": "6.1.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, From 7db7192d9526ad8dafdad8d4e1e0c2fa4bed8c0a Mon Sep 17 00:00:00 2001 From: Mateusz Tylec <79941376+mateusztylec@users.noreply.github.com> Date: Sun, 4 Aug 2024 22:26:55 +0200 Subject: [PATCH 28/50] Update polish translation (#1631) --- src/main/resources/messages_pl_PL.properties | 179 +++++++------------ 1 file changed, 67 insertions(+), 112 deletions(-) diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 17e4cb7b1c7..d00d61ba8b4 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -38,13 +38,13 @@ delete=usuń username=nazwa użytkownika password=hasło welcome=Witaj -property=własnośc +property=własność black=czarny white=biały red=czerwony green=zielony blue=niebieski -custom=Własny +custom=Własny... WorkInProgess=Praca w toku, proszę zgłaszać błędy! poweredBy=Zasilany yes=tak @@ -93,7 +93,7 @@ pipeline.deletePrompt=Na pewno chcesz skasować automatyzacje ###################### pipelineOptions.header=Konfiguracja automatyzacji pipelineOptions.pipelineNameLabel=Nazwa automatyzacji -pipelineOptions.saveSettings=Zapisz automatyzacje +pipelineOptions.saveSettings=Zapisz ustawienia operacji pipelineOptions.pipelineNamePrompt=Podaj nazwę automatyzacji pipelineOptions.selectOperation=Wybierz operację pipelineOptions.addOperationButton=Dodaj operację @@ -125,7 +125,7 @@ navbar.sections.edit=Podgląd i edycja ############# settings.title=Ustawienia settings.update=Dostępna aktualizacja -settings.updateAvailable=Wersja {0} jest obecenia zainstalowana , dostępna jest nowa wersja({1}). +settings.updateAvailable=Wersja {0} jest obecenia zainstalowana, dostępna jest nowa wersja ({1}). settings.appVersion=Wersja aplikacji: settings.downloadOption.title=Wybierz opcję pobierania (w przypadku pobierania pojedynczych plików innych niż ZIP): settings.downloadOption.1=Otwórz w tym samym oknie @@ -152,7 +152,7 @@ changeCreds.submit=Zapisz zmiany account.title=Ustawienia konta account.accountSettings=Ustawienia konta account.adminSettings=Admin - kontrola kont -account.userControlSettings=Kontrola praw uzytkownika +account.userControlSettings=Kontrola praw użytkownika account.changeUsername=Zmień nazwę użytkownika account.newUsername=Nowa nazwa użytkownika account.password=Potwierdź hasło @@ -172,41 +172,41 @@ account.syncToAccount=Wczytaj dane konta z przeglądarki adminUserSettings.title=Ustawienia konta użytkownika adminUserSettings.header=Ustawienia praw administratora -adminUserSettings.admin=administrator -adminUserSettings.user=użytkownik -adminUserSettings.addUser=dodaj nowego użytkownika -adminUserSettings.deleteUser=usuń użytkownika -adminUserSettings.confirmDeleteUser=Czy na pewno usunąć użytkownika ? +adminUserSettings.admin=Administrator +adminUserSettings.user=Użytkownik +adminUserSettings.addUser=Dodaj nowego użytkownika +adminUserSettings.deleteUser=Usuń użytkownika +adminUserSettings.confirmDeleteUser=Czy na pewno usunąć użytkownika? adminUserSettings.usernameInfo=Niewłaściwa nazwa użytkownika - musi zawierać litery, cyfry i @._+- LUB być adresem email. adminUserSettings.roles=Role adminUserSettings.role=Rola adminUserSettings.actions=Akcje adminUserSettings.apiUser=Ograniczony Użytkownik API adminUserSettings.extraApiUser=Dodatkowy ograniczony Użytkownik API -adminUserSettings.webOnlyUser=Uzytkownik tylko WEB +adminUserSettings.webOnlyUser=Użytkownik tylko WEB adminUserSettings.demoUser=Użytkownik DEMO -adminUserSettings.internalApiUser=Wenętrzny użytkownik API +adminUserSettings.internalApiUser=Wewnętrzny użytkownik API adminUserSettings.forceChange=Wymuś zmianę hasło po zalogowaniu adminUserSettings.submit=Zapisz użytkownika adminUserSettings.changeUserRole=Zmień rolę użytkownika adminUserSettings.authenticated=Zalogowany -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +database.title=Import/Eksport bazy danych +database.header=Import/Eksport bazy danych +database.fileName=Nazwa pliku +database.creationDate=Data utworzenia +database.fileSize=Rozmiar pliku +database.deleteBackupFile=Usuń plik kopii zapasowej +database.importBackupFile=Importuj plik kopii zapasowej +database.downloadBackupFile=Pobierz plik kopii zapasowej +database.info_1=Podczas importowania danych, ważne jest, aby upewnić się, że struktura jest poprawna. Jeśli nie jesteś pewien, co robisz, skontaktuj się z profesjonalistą. Błąd w strukturze może spowodować awarie aplikacji, aż do całkowitej niemożności jej uruchomienia. +database.info_2=Nazwa pliku nie ma znaczenia podczas przesyłania. Zostanie on później przemianowany, aby przestrzegać formatu backup_user_yyyyMMddHHmm.sql, zapewniając spójną konwencję nazewnictwa. +database.submit=Importuj kopię zapasową +database.importIntoDatabaseSuccessed=Import do bazy danych zakończony sukcesem +database.fileNotFound=Plik nie znaleziony +database.fileNullOrEmpty=Plik nie może być pusty +database.failedImportFile=Nie udało się zaimportować pliku ############# # HOME-PAGE # @@ -214,10 +214,9 @@ database.failedImportFile=Failed Import File home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF. home.searchBar=Szukaj opcji ... - home.viewPdf.title=Podejrzyj PDF -home.viewPdf.desc=View, annotate, add text or images -viewPdf.tags=view,read,annotate,text,image +home.viewPdf.desc=Wyświetl, adnotuj, dodaj tekst lub obrazy +viewPdf.tags=wyświetl,czytaj,adnotuj,tekst,obraz home.multiTool.title=Multi narzędzie PDF home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony @@ -235,7 +234,6 @@ home.rotate.title=Obróć home.rotate.desc=Łatwo obracaj dokumenty PDF. rotate.tags=server side - home.imageToPdf.title=Obraz na PDF home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF. imageToPdf.tags=conversion,img,jpg,picture,photo @@ -248,9 +246,8 @@ home.pdfOrganiser.title=Uporządkuj home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności pdfOrganiser.tags=duplex,even,odd,sort,move - home.addImage.title=Dodaj obraz -home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie) +home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF addImage.tags=img,jpg,picture,photo home.watermark.title=Dodaj znak wodny @@ -261,7 +258,6 @@ home.permissions.title=Zmień uprawnienia home.permissions.desc=Zmień uprawnienia dokumentu PDF permissions.tags=read,write,edit,print - home.removePages.title=Usuń home.removePages.desc=Usuń niechciane strony z dokumentu PDF. removePages.tags=Remove pages,delete pages @@ -278,10 +274,9 @@ home.compressPdfs.title=Kompresuj home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar. compressPdfs.tags=squish,small,tiny - home.changeMetadata.title=Zmień metadane home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF -changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats +changeMetadata.tags=Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Konwertuj plik do PDF home.fileToPDF.desc=Konwertuj dowolny plik do dokumentu PDF (DOCX, PNG, XLS, PPT, TXT i więcej) @@ -291,7 +286,6 @@ home.ocr.title=OCR / Zamiana na tekst home.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst. ocr.tags=recognition,text,image,scan,read,identify,detection,editable - home.extractImages.title=Wyodrębnij obrazy home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie extractImages.tags=picture,photo,save,archive,zip,capture,grab @@ -304,7 +298,7 @@ home.PDFToWord.title=PDF na Word home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT) PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile -home.PDFToPresentation.title=PDF na Prezentację +home.PDFToPresentation.title=PDF na Prezentację home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP) PDFToPresentation.tags=slides,show,office,microsoft @@ -316,7 +310,6 @@ home.PDFToHTML.title=PDF na HTML home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML PDFToHTML.tags=web content,browser friendly - home.PDFToXML.title=PDF na XML home.PDFToXML.desc=Konwertuj dokument PDF na format XML PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert @@ -326,7 +319,7 @@ home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Podpis -home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu +home.sign.desc=Dodaje podpis do dokumentu PDF za pomocą rysunku, tekstu lub obrazu sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Spłaszcz @@ -370,7 +363,7 @@ home.pipeline.desc=Wykonaj wiele akcji na dokumentach PDF, tworząc automatyzacj pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Dodaj numery stron -home.add-page-numbers.desc=Dodaj numbery strony w dokumencie PDF w podanej lokacji +home.add-page-numbers.desc=Dodaj numery strony w dokumencie PDF w podanej lokalizacji add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Automatycznie zmień nazwę PDF @@ -382,7 +375,7 @@ home.adjust-contrast.desc=Zmień kolor/nasycenie/jasność w dokumencie PDF adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Przytnij PDF -home.crop.desc=Przytnij dokument PDF w celu zmiejszenia rozmiaru +home.crop.desc=Przytnij dokument PDF w celu zmniejszenia rozmiaru crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Automatycznie podziel strony @@ -390,7 +383,7 @@ home.autoSplitPDF.desc=Automatycznie podziel dokument na strony autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Dezynfekcja -home.sanitizePdf.desc=Usuń skrupt i inne elementy z dokumentu PDF +home.sanitizePdf.desc=Usuń skrypt i inne elementy z dokumentu PDF sanitizePdf.tags=clean,secure,safe,remove-threats home.URLToPDF.title=Strona WWW do PDFa @@ -401,45 +394,38 @@ home.HTMLToPDF.title=HTML do PDF home.HTMLToPDF.desc=Zapisuje podany plik HTML/ZIP do PDF HTMLToPDF.tags=markup,web-content,transformation,convert - home.MarkdownToPDF.title=Markdown do PDF home.MarkdownToPDF.desc=Zapisuje dokument Markdown do PDF MarkdownToPDF.tags=markup,web-content,transformation,convert - home.getPdfInfo.title=Pobierz informacje o pliku PDF home.getPdfInfo.desc=Pobiera wszelkie informacje o pliku PDF getPdfInfo.tags=infomation,data,stats,statistics - home.extractPage.title=Wyciągnij stronę z PDF home.extractPage.desc=Wyciąga stronę z dokumentu PDF extractPage.tags=extract - home.PdfToSinglePage.title=PDF do jednej strony home.PdfToSinglePage.desc=Łączy wszystkie strony PDFa w jedną wielką stronę PDF PdfToSinglePage.tags=single page - home.showJS.title=Pokaż kod JavaScript home.showJS.desc=Znajduje i pokazuje załączony kod JS w dokumencie PDF showJS.tags=JS home.autoRedact.title=Zaciemnij -home.autoRedact.desc=Zaciemnia dokument PDF bazująć na podanej wartości +home.autoRedact.desc=Zaciemnia dokument PDF bazując na podanej wartości autoRedact.tags=Redact,Hide,black out,black,marker,hidden home.tableExtraxt.title=PDF do CSV -home.tableExtraxt.desc=Konwertuje table z PDF do pliku CSV +home.tableExtraxt.desc=Konwertuje tabele z PDF do pliku CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert - home.autoSizeSplitPDF.title=Podziel (Rozmiar/Ilość stron) -home.autoSizeSplitPDF.desc=Rozdziela dokument PDF na wiele dokumentów bazujać na podanym rozmiarze, ilości stron bądź ilości dokumentów +home.autoSizeSplitPDF.desc=Rozdziela dokument PDF na wiele dokumentów bazując na podanym rozmiarze, ilości stron bądź ilości dokumentów autoSizeSplitPDF.tags=pdf,split,document,organization - home.overlay-pdfs.title=Nałóż PDFa home.overlay-pdfs.desc=Nakłada dokumenty PDF na siebie overlay-pdfs.tags=Overlay @@ -449,10 +435,9 @@ home.split-by-sections.desc=Podziel strony PDF w mniejsze sekcje split-by-sections.tags=Section Split, Divide, Customize home.AddStampRequest.title=Dodaj pieczęć -home.AddStampRequest.desc=Dodaj pieczęć tesktową/obrazową w wyznaczonej lokalizacji dokumentu +home.AddStampRequest.desc=Dodaj pieczęć tekstową/obrazową w wyznaczonej lokalizacji dokumentu AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize - home.PDFToBook.title=PDF do eBooka home.PDFToBook.desc=Zapisuje dokument PDF w formacie eBooka za pomocą Calibre PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle @@ -481,9 +466,8 @@ login.oauth2RequestNotFound=Błąd logowania OAuth2 login.oauth2InvalidUserInfoResponse=Niewłaściwe dane logowania login.oauth2invalidRequest=Nieprawidłowe żądanie login.oauth2AccessDenied=Brak dostępu -login.oauth2InvalidTokenResponse=Nieprawidłowy odpowiedź na token -login.oauth2InvalidIdToken=Nieprawidłowa wartośc tokenu - +login.oauth2InvalidTokenResponse=Nieprawidłowa odpowiedź na token +login.oauth2InvalidIdToken=Nieprawidłowa wartość tokenu #auto-redact autoRedact.title=Automatyczne zaciemnienie @@ -497,34 +481,29 @@ autoRedact.customPaddingLabel=Dodatkowe wypełnienie autoRedact.convertPDFToImageLabel=Przerób PDF na PDF-obrazowy (usuwa tekst w tle) autoRedact.submitButton=Wyślij - #showJS showJS.title=Pokaż Javascript showJS.header=Pokaż Javascript showJS.downloadJS=Pobierz Javascript showJS.submit=Pokaż - #pdfToSinglePage pdfToSinglePage.title=PDF do pojedyńczej strony pdfToSinglePage.header=PDF do pojedyńczej strony pdfToSinglePage.submit=Zapisz dokument jako PDF z jedną stroną - #pageExtracter pageExtracter.title=Wyciągnij stronę pageExtracter.header=Wyciągnij stronę pageExtracter.submit=Wyciągnij pageExtracter.placeholder=(przykład 1,2,8 lub 2n-1) - #getPdfInfo getPdfInfo.title=Pobierz informacje o pliku PDF getPdfInfo.header=Pobierz informacje o pliku PDF getPdfInfo.submit=Pobierz informacje getPdfInfo.downloadJson=Pobierz JSON z zawartością - #markdown-to-pdf MarkdownToPDF.title=Markdown do PDF MarkdownToPDF.header=Markdown do PDF @@ -532,15 +511,12 @@ MarkdownToPDF.submit=Konwertuj MarkdownToPDF.help=Prace trwają MarkdownToPDF.credit=Użyj WeasyPrint - - #url-to-pdf URLToPDF.title=URL do PDF URLToPDF.header=URL do PDF URLToPDF.submit=Konwertuj URLToPDF.credit=Użyj WeasyPrint - #html-to-pdf HTMLToPDF.title=HTML do PDF HTMLToPDF.header=HTML do PDF @@ -561,7 +537,6 @@ HTMLToPDF.none=Żaden HTMLToPDF.print=Drukuj HTMLToPDF.screen=Ekran - #AddStampRequest AddStampRequest.header=Pieczęć PDF AddStampRequest.title=Pieczęć PDF @@ -569,7 +544,7 @@ AddStampRequest.stampType=Typ pieczęci AddStampRequest.stampText=Tekst w pieczęci AddStampRequest.stampImage=Obraz w pieczęci AddStampRequest.alphabet=Alfabet -AddStampRequest.fontSize=Rozmiar Czcionki/Obrazu +AddStampRequest.fontSize=Rozmiar czcionki/obrazu AddStampRequest.rotation=Obrót AddStampRequest.opacity=Przeźroczystość AddStampRequest.position=Pozycja @@ -579,18 +554,16 @@ AddStampRequest.customMargin=Własny margines AddStampRequest.customColor=Własny kolor tekstu AddStampRequest.submit=Wyślij - #sanitizePDF sanitizePDF.title=Dezynfekuj PDF sanitizePDF.header=Dezynfekuj dokument PDF sanitizePDF.selectText.1=Usuń elementy JavaScript -sanitizePDF.selectText.2=Usuń załącznone pliki +sanitizePDF.selectText.2=Usuń załączone pliki sanitizePDF.selectText.3=Usuń metadane sanitizePDF.selectText.4=Usuń linki sanitizePDF.selectText.5=Usuń czcionki sanitizePDF.submit=Dezynfekuj PDF - #addPageNumbers addPageNumbers.title=Dodaj numerację stron addPageNumbers.header=Dodaj numerację stron @@ -601,51 +574,45 @@ addPageNumbers.selectText.4=Numer początkowy addPageNumbers.selectText.5=Ilość stron do ponumerowania addPageNumbers.selectText.6=Tekst własny addPageNumbers.customTextDesc=Tekst własny -addPageNumbers.numberPagesDesc=Strony do numeracji, wszystkie (all),1-5, 2,5,9 +addPageNumbers.numberPagesDesc=Strony do numeracji, wszystkie (all), 1-5, 2, 5, 9 addPageNumbers.customNumberDesc=Domyślnie do {n}, również akceptuje 'Strona {n} z {total},Teskt-{n},'{filename}-{n} addPageNumbers.submit=Dodaj numerację stron - #auto-rename -auto-rename.title=Automatczna zmiana nazwy -auto-rename.header=Automatczna zmiana nazwy dokumentu PDF -auto-rename.submit=Automatczna zmiana nazwy - +auto-rename.title=Automatyczna zmiana nazwy +auto-rename.header=Automatyczna zmiana nazwy dokumentu PDF +auto-rename.submit=Automatyczna zmiana nazwy #adjustContrast adjustContrast.title=Dopasuj kontrast adjustContrast.header=Dopasuj kontrast -adjustContrast.contrast=kontrast: -adjustContrast.brightness=jasność: -adjustContrast.saturation=nasycenie: +adjustContrast.contrast=Kontrast: +adjustContrast.brightness=Jasność: +adjustContrast.saturation=Nasycenie: adjustContrast.download=Pobierz - #crop crop.title=Przytnij crop.header=Przytnij dokument PDF crop.submit=Wyślij - #autoSplitPDF autoSplitPDF.title=Automatycznie podziel PDF autoSplitPDF.header=Automatycznie podziel PDF -autoSplitPDF.description=Drukuj, wstaw, skanuj, wyślij i pozwól nam automatycznie posortować dokumenty. +autoSplitPDF.description=Drukuj, wstaw, skanuj, wyślij i pozwól nam automatycznie posortować dokumenty. Bez ręcznego sortowania. autoSplitPDF.selectText.1=Wydrukuj strony separacji z poniższych wzorów - (mogą być czarno-białe) autoSplitPDF.selectText.2=Skanuj wszystkie swoje dokumenty na raz, wstawiając stronę separator między nie. -autoSplitPDF.selectText.3=Wyślij pojedyńczy duży plik PDF zawierający skan i pozwól Stirling zająć się resztą. -autoSplitPDF.selectText.4=Strony separacji sa automatycznie wykrywane i usuwane, gwarantując ładny finalny dokument. +autoSplitPDF.selectText.3=Wyślij pojedynczy duży plik PDF zawierający skan i pozwól Stirling PDF zająć się resztą. +autoSplitPDF.selectText.4=Strony separacji są automatycznie wykrywane i usuwane, gwarantując ładny finalny dokument. autoSplitPDF.formPrompt=Wyślij dokument PDF zawierający strony podziału z Stirling PDF. autoSplitPDF.duplexMode=Skanowanie dwustronne autoSplitPDF.dividerDownload1=Pobierz 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Pobierz 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Wyślij - #pipeline pipeline.title=Automatyzacja - #pageLayout pageLayout.title=Układ wielu stron pageLayout.header=Układ wielu stron @@ -653,7 +620,6 @@ pageLayout.pagesPerSheet=Stron na jednym arkuszu: pageLayout.addBorder=Dodaj granicę pageLayout.submit=Wykonaj - #scalePages scalePages.title=Dopasuj rozmiar stron scalePages.header=Dopasuj rozmiar stron @@ -661,16 +627,15 @@ scalePages.pageSize=Rozmiar stron dokumentu: scalePages.scaleFactor=Poziom powiększenia (przycięcia) stron: scalePages.submit=Wykonaj - #certSign certSign.title=Podpisywanie certyfikatem certSign.header=Podpisz dokument PDF certyfikatem prywatnym (moduł w budowie) certSign.selectPDF=Wybierz dokument PDF do podpisania: -certSign.jksNote=Notka: jeśli twój typ certyfikatu nie jest widoczny na liście , skonwertuj go do formatu Java Keystore (.jks) używając polecenia keytool. Następnie wybierz plik .JKS poniżej z listy. +certSign.jksNote=Notka: jeśli twój typ certyfikatu nie jest widoczny na liście, skonwertuj go do formatu Java Keystore (.jks) używając polecenia keytool. Następnie wybierz plik .JKS poniżej z listy. certSign.selectKey=Wybierz plik klucza prywatnego (format PKCS#8, może to być .pem lub .der): certSign.selectCert=Wybierz plik certyfikatu (format X.509, może to być .pem lub .der): certSign.selectP12=Wybierz plik magazynu kluczy PKCS#12 (.p12 lub .pfx) (opcjonalnie, jeśli jest podany, powinien zawierać klucz prywatny i certyfikat): -certSign.selectJKS=Wybierz plik Java Keystore(.jks lub .keystore): +certSign.selectJKS=Wybierz plik Java Keystore (.jks lub .keystore): certSign.certType=Typ certyfikatu certSign.password=Wprowadź hasło do magazynu kluczy lub klucza prywatnego (jeśli istnieje): certSign.showSig=Wyświetl podpis @@ -679,14 +644,12 @@ certSign.location=Lokalizacja certSign.name=Nazwa certSign.submit=Podpisz PDF - #removeCertSign removeCertSign.title=Usuń podpis cyfrowy removeCertSign.header=Usuń podpis cyfrowy z dokumentu PDF removeCertSign.selectPDF=Wskaż plik PDF: removeCertSign.submit=Usuń podpis cyfrowy - #removeBlanks removeBlanks.title=Usuń puste removeBlanks.header=Usuń puste strony @@ -792,7 +755,7 @@ extractImages.submit=Wyodrębnij fileToPDF.title=Plik na PDF fileToPDF.header=Konwertuj dowolny plik na dokument PDF fileToPDF.credit=Ta usługa używa LibreOffice i Unoconv do konwersji plików. -fileToPDF.supportedFileTypesInfo=Supported File types +fileToPDF.supportedFileTypesInfo=Obsługiwane typy plików fileToPDF.supportedFileTypes=Obsługiwane typy plików powinny być zgodne z poniższymi, jednak pełną zaktualizowaną listę obsługiwanych formatów można znaleźć w dokumentacji LibreOffice fileToPDF.submit=Konwertuj na PDF @@ -803,7 +766,7 @@ compress.header=Kompresuj PDF compress.credit=Ta usługa używa Ghostscript do kompresji/optymalizacji PDF. compress.selectText.1=Tryb ręczny - Od 1 do 4 compress.selectText.2=Poziom optymalizacji: -compress.selectText.3=4 (Straszne dla obrazów tekstowych) +compress.selectText.3=4 (Duże dla obrazów tekstowych) compress.selectText.4=Tryb automatyczny - Automatycznie dostosowuje jakość, aby uzyskać dokładny rozmiar pliku PDF compress.selectText.5=Oczekiwany rozmiar pliku PDF (np. 25 MB, 10,8 MB, 25 KB) compress.submit=Kompresuj @@ -820,12 +783,11 @@ addImage.submit=Dodaj obraz #merge merge.title=Połącz merge.header=Połącz wiele dokumentów PDF (2+) -merge.sortByName=Sort by name -merge.sortByDate=Sort by date -merge.removeCertSign=Remove digital signature in the merged file? +merge.sortByName=Sortuj po nazwie +merge.sortByDate=Sortuj po dacie +merge.removeCertSign=Usuń podpis cyfrowy w scalonym pliku? merge.submit=Połącz - #pdfOrganiser pdfOrganiser.title=Kolejność stron pdfOrganiser.header=Kolejność stron PDF @@ -834,7 +796,7 @@ pdfOrganiser.mode=Tryb pdfOrganiser.mode.1=Własna kolejność stron pdfOrganiser.mode.2=Odwrotny pdfOrganiser.mode.3=Dwustronny -pdfOrganiser.mode.4=Ksiązki +pdfOrganiser.mode.4=Książki pdfOrganiser.mode.5=Spiętej książki pdfOrganiser.mode.6=Rozdziel parzyste-nieparzyste pdfOrganiser.mode.7=Usuń pierwszą @@ -843,7 +805,6 @@ pdfOrganiser.mode.9=Usuń pierwszą i ostatnią pdfOrganiser.mode.10=Połącz parzyste i nieparzyste pdfOrganiser.placeholder=(przykład 1,3,2 lub 4-8,2,10-12 lub 2n-1) - #multiTool multiTool.title=Multi narzędzie PDF multiTool.header=Multi narzędzie PDF @@ -860,14 +821,12 @@ pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron pageRemover.submit=Usuń strony pageRemover.placeholder=(przykład 1,3,2 lub 4-8,2,10-12) - #rotate rotate.title=Obróć dokument PDF rotate.header=Obróć dokument PDF rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni): rotate.submit=Obróć - #split-pdfs split.title=Podziel dokument PDF split.header=Podziel dokument PDF @@ -882,8 +841,7 @@ split.desc.8=Dokument #6: Strona 10 split.splitPages=Wprowadź strony do podziału na: split.submit=Podziel - -#merge +#imageToPDF imageToPDF.title=Obraz na PDF imageToPDF.header=Obraz na PDF imageToPDF.submit=Konwertuj @@ -896,7 +854,6 @@ imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy imageToPDF.selectText.4=Połącz w jeden dokument PDF imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF - #pdfToImage pdfToImage.title=PDF na Obraz pdfToImage.header=PDF na Obraz @@ -910,13 +867,12 @@ pdfToImage.grey=Odcień szarości pdfToImage.blackwhite=Czarno-biały (może spowodować utratę danych!) pdfToImage.submit=Konwertuj - #addPassword addPassword.title=Dodaj hasło addPassword.header=Dodaj hasło (zaszyfruj) addPassword.selectText.1=Wybierz plik PDF do zaszyfrowania addPassword.selectText.2=Hasło -addPassword.selectText.3=Długość hasła +addPassword.selectText.3=Długość klucza szyfrowania addPassword.selectText.4=Wyższe wartości są silniejsze, ale niższe wartości zapewniają lepszą kompatybilność. addPassword.selectText.5=Uprawnienia do zmian addPassword.selectText.6=Zablokuj zmiany w dokumencie @@ -928,11 +884,10 @@ addPassword.selectText.11=Zablokuj modyfikacje adnotacji addPassword.selectText.12=Zablokuj drukowanie addPassword.selectText.13=Zablokuj drukowanie różnych formatów addPassword.selectText.14=Hasło właściciela -addPassword.selectText.15=Ogranicza akcje które można wykonać na dokumencie, kiedy jest otwarty (nie wspierany przez wszystkie przeglądarki) +addPassword.selectText.15=Ogranicza akcje, które można wykonać na dokumencie, kiedy jest otwarty (nie wspierany przez wszystkie przeglądarki) addPassword.selectText.16=Ogranicza otwarcie dokumentu addPassword.submit=Zablokuj - #watermark watermark.title=Dodaj znak wodny watermark.header=Dodaj znak wodny @@ -1045,7 +1000,7 @@ PDFToXML.submit=Konwertuj PDFToCSV.title=PDF na CSV PDFToCSV.header=PDF na CSV PDFToCSV.prompt=Choose page to extract table -PDFToCSV.submit=Wyci?g +PDFToCSV.submit=Zatwierdź #split-by-size-or-count split-by-size-or-count.title=Podziel PDF przez ilość stron bądź rozmiar @@ -1100,7 +1055,7 @@ licenses.title=Licencje stron trzecich licenses.header=Licencje stron trzecich licenses.module=Moduł licenses.version=Wersja -licenses.license=Licencha +licenses.license=Licencja #survey survey.nav=Ankieta From ce70796fffe0edd3c1bddeb7f5d581f14255b261 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 09:10:14 +0100 Subject: [PATCH 29/50] Bump org.mockito:mockito-inline from 3.12.4 to 5.2.0 (#1635) Bumps [org.mockito:mockito-inline](https://github.com/mockito/mockito) from 3.12.4 to 5.2.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](https://github.com/mockito/mockito/compare/v3.12.4...v5.2.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-inline dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c4787869dd6..07abc000ea5 100644 --- a/build.gradle +++ b/build.gradle @@ -187,7 +187,7 @@ dependencies { compileOnly "org.projectlombok:lombok:1.18.32" annotationProcessor "org.projectlombok:lombok:1.18.32" - testImplementation 'org.mockito:mockito-inline:3.12.4' + testImplementation 'org.mockito:mockito-inline:5.2.0' } tasks.withType(JavaCompile).configureEach { From ec537c6fde17bc7328afc6dba59d2d8686f4b00b Mon Sep 17 00:00:00 2001 From: mylk13 Date: Tue, 6 Aug 2024 10:11:52 +0200 Subject: [PATCH 30/50] Add a checkbox to WatermarkController to convert the pdf to pdf-image (#1633) * Add a checkbox to WatermarkController to convert the pdf to pdf-image * 381: Fix messages_en_GB --------- Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .../api/security/RedactController.java | 25 +++---------------- .../api/security/WatermarkController.java | 8 ++++++ .../api/security/AddWatermarkRequest.java | 3 +++ .../software/SPDF/utils/PdfUtils.java | 24 ++++++++++++++++++ src/main/resources/messages_en_GB.properties | 1 + src/main/resources/messages_en_US.properties | 1 + .../templates/security/add-watermark.html | 4 +++ 7 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index 8a2a67c0a8f..b3eec2b11e2 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -1,21 +1,14 @@ package stirling.software.SPDF.controller.api.security; import java.awt.Color; -import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; -import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode; import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory; -import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.apache.pdfbox.rendering.ImageType; -import org.apache.pdfbox.rendering.PDFRenderer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; @@ -32,6 +25,7 @@ import stirling.software.SPDF.model.PDFText; import stirling.software.SPDF.model.api.security.RedactPdfRequest; import stirling.software.SPDF.pdf.TextFinder; +import stirling.software.SPDF.utils.PdfUtils; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @@ -81,22 +75,9 @@ public ResponseEntity redactPdf(@ModelAttribute RedactPdfRequest request } if (convertPDFToImage) { - PDDocument imageDocument = new PDDocument(); - PDFRenderer pdfRenderer = new PDFRenderer(document); - pdfRenderer.setSubsamplingAllowed(true); - for (int page = 0; page < document.getNumberOfPages(); ++page) { - BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); - PDPage newPage = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight())); - imageDocument.addPage(newPage); - PDImageXObject pdImage = LosslessFactory.createFromImage(imageDocument, bim); - PDPageContentStream contentStream = - new PDPageContentStream( - imageDocument, newPage, AppendMode.APPEND, true, true); - contentStream.drawImage(pdImage, 0, 0); - contentStream.close(); - } + PDDocument convertedPdf = PdfUtils.convertPdfToPdfImage(document); document.close(); - document = imageDocument; + document = convertedPdf; } ByteArrayOutputStream baos = new ByteArrayOutputStream(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java index 2133ae2673c..0b36cd5e02b 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java @@ -36,6 +36,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import stirling.software.SPDF.model.api.security.AddWatermarkRequest; +import stirling.software.SPDF.utils.PdfUtils; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @@ -60,6 +61,7 @@ public ResponseEntity addWatermark(@ModelAttribute AddWatermarkRequest r float opacity = request.getOpacity(); int widthSpacer = request.getWidthSpacer(); int heightSpacer = request.getHeightSpacer(); + boolean convertPdfToImage = request.isConvertPDFToImage(); // Load the input PDF PDDocument document = Loader.loadPDF(pdfFile.getBytes()); @@ -104,6 +106,12 @@ public ResponseEntity addWatermark(@ModelAttribute AddWatermarkRequest r contentStream.close(); } + if (convertPdfToImage) { + PDDocument convertedPdf = PdfUtils.convertPdfToPdfImage(document); + document.close(); + document = convertedPdf; + } + return WebResponseUtils.pdfDocToWebResponse( document, Filenames.toSimpleFileName(pdfFile.getOriginalFilename()) diff --git a/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java index 861568bf8e8..1f080fd2a83 100644 --- a/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java @@ -44,4 +44,7 @@ public class AddWatermarkRequest extends PDFFile { @Schema(description = "The height spacer between watermark elements", example = "50") private int heightSpacer; + + @Schema(description = "Convert the redacted PDF to an image", defaultValue = "false") + private boolean convertPDFToImage; } diff --git a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java index 91cbb5cd410..c1589902958 100644 --- a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java @@ -341,6 +341,30 @@ public static byte[] convertFromPdf( } } + /** + * Converts a given Pdf file to PDF-Image. + * + * @param document to be converted. Note: the caller is responsible for closing the document + * @return converted document to PDF-Image + * @throws IOException if conversion fails + */ + public static PDDocument convertPdfToPdfImage(PDDocument document) throws IOException { + PDDocument imageDocument = new PDDocument(); + PDFRenderer pdfRenderer = new PDFRenderer(document); + pdfRenderer.setSubsamplingAllowed(true); + for (int page = 0; page < document.getNumberOfPages(); ++page) { + BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); + PDPage newPage = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight())); + imageDocument.addPage(newPage); + PDImageXObject pdImage = LosslessFactory.createFromImage(imageDocument, bim); + PDPageContentStream contentStream = + new PDPageContentStream(imageDocument, newPage, AppendMode.APPEND, true, true); + contentStream.drawImage(pdImage, 0, 0); + contentStream.close(); + } + return imageDocument; + } + private static BufferedImage prepareImageForPdfToImage( int maxWidth, int height, String imageType) { BufferedImage combined; diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 79067b5489b..f6f77624b8f 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Add Watermark watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 1f38bf8c016..b90bef09006 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Add Watermark watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/templates/security/add-watermark.html b/src/main/resources/templates/security/add-watermark.html index 71c323746d7..2b78709f247 100644 --- a/src/main/resources/templates/security/add-watermark.html +++ b/src/main/resources/templates/security/add-watermark.html @@ -104,6 +104,10 @@ +
+ + +
From dff53310a7debbecab42313faeb3f2b4e05862e9 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com.> Date: Tue, 6 Aug 2024 10:50:47 +0100 Subject: [PATCH 31/50] lang --- src/main/resources/messages_ar_AR.properties | 1 + src/main/resources/messages_bg_BG.properties | 1 + src/main/resources/messages_ca_CA.properties | 1 + src/main/resources/messages_cs_CZ.properties | 1 + src/main/resources/messages_da_DK.properties | 3 +- src/main/resources/messages_de_DE.properties | 1 + src/main/resources/messages_el_GR.properties | 1 + src/main/resources/messages_es_ES.properties | 1 + src/main/resources/messages_eu_ES.properties | 1 + src/main/resources/messages_fr_FR.properties | 1 + src/main/resources/messages_ga_IE.properties | 5 +- src/main/resources/messages_hi_IN.properties | 1 + src/main/resources/messages_hr_HR.properties | 1 + src/main/resources/messages_hu_HU.properties | 1 + src/main/resources/messages_id_ID.properties | 1 + src/main/resources/messages_it_IT.properties | 1 + src/main/resources/messages_ja_JP.properties | 1 + src/main/resources/messages_ko_KR.properties | 1 + src/main/resources/messages_nl_NL.properties | 1 + src/main/resources/messages_no_NB.properties | 1 + src/main/resources/messages_pl_PL.properties | 48 ++++++++++++++++++- src/main/resources/messages_pt_BR.properties | 1 + src/main/resources/messages_pt_PT.properties | 1 + src/main/resources/messages_ro_RO.properties | 1 + src/main/resources/messages_ru_RU.properties | 1 + src/main/resources/messages_sk_SK.properties | 1 + .../resources/messages_sr_LATN_RS.properties | 1 + src/main/resources/messages_sv_SE.properties | 1 + src/main/resources/messages_th_TH.properties | 1 + src/main/resources/messages_tr_TR.properties | 1 + src/main/resources/messages_uk_UA.properties | 1 + src/main/resources/messages_vi_VN.properties | 3 +- src/main/resources/messages_zh_CN.properties | 5 +- src/main/resources/messages_zh_TW.properties | 1 + 34 files changed, 86 insertions(+), 7 deletions(-) diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 30fb5715b57..3e194292670 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائي watermark.selectText.7=التعتيم (0٪ - 100٪): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=إضافة علامة مائية watermark.type.1=نص watermark.type.2=صورة diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 2207379ca48..43349364d65 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -945,6 +945,7 @@ watermark.selectText.6=дължинаSpacer (Разстояние между в watermark.selectText.7=Непрозрачност (0% - 100%): watermark.selectText.8=Тип воден знак: watermark.selectText.9=Изображение за воден знак: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Добавяне на воден знак watermark.type.1=Текст watermark.type.2=Изображение diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index f641fa52669..8c400bfdbf8 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -945,6 +945,7 @@ watermark.selectText.6=separació d'alçada (Espai vertical entre cada Marca d'A watermark.selectText.7=Opacitat (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Afegir Marca d'Aigua watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index 7f274dbb05c..6ca4cbf089b 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Výška mezery (Mezera mezi každým vodoznakem svisle): watermark.selectText.7=Průhlednost (0% - 100%): watermark.selectText.8=Typ vodoznaku: watermark.selectText.9=Obrázek vodoznaku: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Přidat vodoznak watermark.type.1=Text watermark.type.2=Obrázek diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index b89e26efbcd..a56596ddf8f 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Vælg PDF-fil(er) @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Add Watermark watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index decbd9b0ccd..3a75642d4ed 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -945,6 +945,7 @@ watermark.selectText.6=höheSpacer (vertikaler Abstand zwischen den einzelnen Wa watermark.selectText.7=Deckkraft (0% - 100 %): watermark.selectText.8=Wasserzeichen Typ: watermark.selectText.9=Wasserzeichen-Bild: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Wasserzeichen hinzufügen watermark.type.1=Text watermark.type.2=Bild diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index 6f32362d2f9..b6db871fde6 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Κενό μεταξύ κάθε υδατογ watermark.selectText.7=Αδιαφάνεια (Opacity) (0% - 100%): watermark.selectText.8=Τύπος Υδατογραφήματος: watermark.selectText.9=Εικόνα Υδατογραφήματος: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Προσθήκη Υδατογραφήματος watermark.type.1=Κείμενο watermark.type.2=Εικόνα diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index d3724753a7a..58e38223c89 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Alto (Espacio entre cada marca de agua verticalmente): watermark.selectText.7=Opacidad (0% - 100%): watermark.selectText.8=Tipo de marca de agua: watermark.selectText.9=Imagen de marca de agua: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Añadir marca de agua watermark.type.1=Texto watermark.type.2=Imagen diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 65dff466697..57d808c1a3b 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Altuera (ur-marka bakoitzaren arteko espazioa bertikalean watermark.selectText.7=Opakutasuna (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Gehitu ur-marka watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index d7bae3ea089..8f6ff4de1ef 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (espace entre chaque filigrane verticalement watermark.selectText.7=Opacité (de 0% à 100%) watermark.selectText.8=Type de filigrane watermark.selectText.9=Image du filigrane +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Ajouter un filigrane watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index 08993244fd9..9a2b9cc438c 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Roghnaigh PDF(s) @@ -691,7 +691,7 @@ removeCertSign.submit=Bain Síniú removeBlanks.title=Bain Bearnaí removeBlanks.header=Bain Leathanaigh Bhána removeBlanks.threshold=Tairseach Bánachta picteilíní: -removeBlanks.thresholdDesc=An tairseach chun a chinneadh cé chomh bán is gá picteilín bán a bheith le rangú mar 'Bán'. 0 +removeBlanks.thresholdDesc=An tairseach chun a chinneadh cé chomh bán is gá picteilín bán a bheith le rangú mar 'Bán'. 0 removeBlanks.whitePercent=Céatadán Bán (%): removeBlanks.whitePercentDesc=Céatadán an leathanaigh a chaithfidh picteilíní 'bán' a bheith ann lena bhaint removeBlanks.submit=Bain Bearnaí @@ -945,6 +945,7 @@ watermark.selectText.6=spásaire airde (Spás idir gach comhartha uisce go hinge watermark.selectText.7=Teimhneacht (0% - 100%): watermark.selectText.8=Cineál Comhartha Uisce: watermark.selectText.9=Íomhá Comhartha Uisce: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Cuir Uisce leis watermark.type.1=Téacs watermark.type.2=Íomha diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 4938f49a10b..9b954bf1cf9 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -945,6 +945,7 @@ watermark.selectText.6=ऊंचाई स्पेसर (प्रत्ये watermark.selectText.7=अपारदर्शिता (0% - 100%): watermark.selectText.8=वॉटरमार्क प्रकार: watermark.selectText.9=वॉटरमार्क छवि: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=वॉटरमार्क जोड़ें watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index c50613d699f..b546a88f528 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Visina razmaka (Razmak između svakog vodenog žiga okomi watermark.selectText.7=Neprozirnost (0% - 100%): watermark.selectText.8=Vrsta vodenog žiga: watermark.selectText.9=Slika vodenog žiga: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Dodaj vodeni žig watermark.type.1=Tekst watermark.type.2=Slika diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 3967db38517..57f33ce374a 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Hely a vízjelek között függőlegesen): watermark.selectText.7=Átlátszóság (0% - 100%): watermark.selectText.8=Vízjel típusa: watermark.selectText.9=Vízjel képe: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Vízjel hozzáadása watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index d31712bdf01..d29749dcda5 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Spasi diantara setiap watermark vertikal): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Tipe Watermark: watermark.selectText.9=Gambar Watermark: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Tambahkan Watermark watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index bcc78d5a46a..505664762d6 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -945,6 +945,7 @@ watermark.selectText.6=spazio verticale (tra ogni filigrana): watermark.selectText.7=Opacità (0% - 100%): watermark.selectText.8=Tipo di filigrana: watermark.selectText.9=Immagine filigrana: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Aggiungi Filigrana watermark.type.1=Testo watermark.type.2=Immagine diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 3f39dcd34a8..e2380980a20 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -945,6 +945,7 @@ watermark.selectText.6=高さスペース (各透かし間の垂直方向のス watermark.selectText.7=不透明度 (0% - 100%): watermark.selectText.8=透かしの種類: watermark.selectText.9=透かしの画像: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=透かしを追加 watermark.type.1=テキスト watermark.type.2=画像 diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index cae46d9b527..a0ccfb0a895 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간): watermark.selectText.7=투명도 (0% - 100%): watermark.selectText.8=워터마크 유형: watermark.selectText.9=워터마크 이미지: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=워터마크 추가 watermark.type.1=텍스트 watermark.type.2=이미지 diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index 6c43a399dfc..c2c8271a15e 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -945,6 +945,7 @@ watermark.selectText.6=hoogteSpacer (Ruimte tussen elk watermerk verticaal): watermark.selectText.7=Transparantie (0% - 100%): watermark.selectText.8=Type watermerk: watermark.selectText.9=Watermerk afbeelding: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Watermerk toevoegen watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index dcf4334238f..5f92614ed4b 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Høydeavstand (Avstand mellom hvert vannmerke vertikalt): watermark.selectText.7=Opasitet (0% - 100%): watermark.selectText.8=Vannmerketype: watermark.selectText.9=Vannmerkebilde: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Legg til vannmerke watermark.type.1=Tekst watermark.type.2=Bilde diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index d00d61ba8b4..858aabc8f51 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -214,6 +214,7 @@ database.failedImportFile=Nie udało się zaimportować pliku home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF. home.searchBar=Szukaj opcji ... + home.viewPdf.title=Podejrzyj PDF home.viewPdf.desc=Wyświetl, adnotuj, dodaj tekst lub obrazy viewPdf.tags=wyświetl,czytaj,adnotuj,tekst,obraz @@ -234,6 +235,7 @@ home.rotate.title=Obróć home.rotate.desc=Łatwo obracaj dokumenty PDF. rotate.tags=server side + home.imageToPdf.title=Obraz na PDF home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF. imageToPdf.tags=conversion,img,jpg,picture,photo @@ -246,6 +248,7 @@ home.pdfOrganiser.title=Uporządkuj home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Dodaj obraz home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF addImage.tags=img,jpg,picture,photo @@ -258,6 +261,7 @@ home.permissions.title=Zmień uprawnienia home.permissions.desc=Zmień uprawnienia dokumentu PDF permissions.tags=read,write,edit,print + home.removePages.title=Usuń home.removePages.desc=Usuń niechciane strony z dokumentu PDF. removePages.tags=Remove pages,delete pages @@ -274,6 +278,7 @@ home.compressPdfs.title=Kompresuj home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar. compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Zmień metadane home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF changeMetadata.tags=Title,author,date,creation,time,publisher,producer,stats @@ -286,6 +291,7 @@ home.ocr.title=OCR / Zamiana na tekst home.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst. ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Wyodrębnij obrazy home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie extractImages.tags=picture,photo,save,archive,zip,capture,grab @@ -310,6 +316,7 @@ home.PDFToHTML.title=PDF na HTML home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF na XML home.PDFToXML.desc=Konwertuj dokument PDF na format XML PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert @@ -394,22 +401,27 @@ home.HTMLToPDF.title=HTML do PDF home.HTMLToPDF.desc=Zapisuje podany plik HTML/ZIP do PDF HTMLToPDF.tags=markup,web-content,transformation,convert + home.MarkdownToPDF.title=Markdown do PDF home.MarkdownToPDF.desc=Zapisuje dokument Markdown do PDF MarkdownToPDF.tags=markup,web-content,transformation,convert + home.getPdfInfo.title=Pobierz informacje o pliku PDF home.getPdfInfo.desc=Pobiera wszelkie informacje o pliku PDF getPdfInfo.tags=infomation,data,stats,statistics + home.extractPage.title=Wyciągnij stronę z PDF home.extractPage.desc=Wyciąga stronę z dokumentu PDF extractPage.tags=extract + home.PdfToSinglePage.title=PDF do jednej strony home.PdfToSinglePage.desc=Łączy wszystkie strony PDFa w jedną wielką stronę PDF PdfToSinglePage.tags=single page + home.showJS.title=Pokaż kod JavaScript home.showJS.desc=Znajduje i pokazuje załączony kod JS w dokumencie PDF showJS.tags=JS @@ -422,10 +434,12 @@ home.tableExtraxt.title=PDF do CSV home.tableExtraxt.desc=Konwertuje tabele z PDF do pliku CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert + home.autoSizeSplitPDF.title=Podziel (Rozmiar/Ilość stron) home.autoSizeSplitPDF.desc=Rozdziela dokument PDF na wiele dokumentów bazując na podanym rozmiarze, ilości stron bądź ilości dokumentów autoSizeSplitPDF.tags=pdf,split,document,organization + home.overlay-pdfs.title=Nałóż PDFa home.overlay-pdfs.desc=Nakłada dokumenty PDF na siebie overlay-pdfs.tags=Overlay @@ -438,6 +452,7 @@ home.AddStampRequest.title=Dodaj pieczęć home.AddStampRequest.desc=Dodaj pieczęć tekstową/obrazową w wyznaczonej lokalizacji dokumentu AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize + home.PDFToBook.title=PDF do eBooka home.PDFToBook.desc=Zapisuje dokument PDF w formacie eBooka za pomocą Calibre PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle @@ -469,6 +484,7 @@ login.oauth2AccessDenied=Brak dostępu login.oauth2InvalidTokenResponse=Nieprawidłowa odpowiedź na token login.oauth2InvalidIdToken=Nieprawidłowa wartość tokenu + #auto-redact autoRedact.title=Automatyczne zaciemnienie autoRedact.header=Automatyczne zaciemnienie @@ -481,29 +497,34 @@ autoRedact.customPaddingLabel=Dodatkowe wypełnienie autoRedact.convertPDFToImageLabel=Przerób PDF na PDF-obrazowy (usuwa tekst w tle) autoRedact.submitButton=Wyślij + #showJS showJS.title=Pokaż Javascript showJS.header=Pokaż Javascript showJS.downloadJS=Pobierz Javascript showJS.submit=Pokaż + #pdfToSinglePage pdfToSinglePage.title=PDF do pojedyńczej strony pdfToSinglePage.header=PDF do pojedyńczej strony pdfToSinglePage.submit=Zapisz dokument jako PDF z jedną stroną + #pageExtracter pageExtracter.title=Wyciągnij stronę pageExtracter.header=Wyciągnij stronę pageExtracter.submit=Wyciągnij pageExtracter.placeholder=(przykład 1,2,8 lub 2n-1) + #getPdfInfo getPdfInfo.title=Pobierz informacje o pliku PDF getPdfInfo.header=Pobierz informacje o pliku PDF getPdfInfo.submit=Pobierz informacje getPdfInfo.downloadJson=Pobierz JSON z zawartością + #markdown-to-pdf MarkdownToPDF.title=Markdown do PDF MarkdownToPDF.header=Markdown do PDF @@ -511,12 +532,15 @@ MarkdownToPDF.submit=Konwertuj MarkdownToPDF.help=Prace trwają MarkdownToPDF.credit=Użyj WeasyPrint + + #url-to-pdf URLToPDF.title=URL do PDF URLToPDF.header=URL do PDF URLToPDF.submit=Konwertuj URLToPDF.credit=Użyj WeasyPrint + #html-to-pdf HTMLToPDF.title=HTML do PDF HTMLToPDF.header=HTML do PDF @@ -537,6 +561,7 @@ HTMLToPDF.none=Żaden HTMLToPDF.print=Drukuj HTMLToPDF.screen=Ekran + #AddStampRequest AddStampRequest.header=Pieczęć PDF AddStampRequest.title=Pieczęć PDF @@ -554,6 +579,7 @@ AddStampRequest.customMargin=Własny margines AddStampRequest.customColor=Własny kolor tekstu AddStampRequest.submit=Wyślij + #sanitizePDF sanitizePDF.title=Dezynfekuj PDF sanitizePDF.header=Dezynfekuj dokument PDF @@ -564,6 +590,7 @@ sanitizePDF.selectText.4=Usuń linki sanitizePDF.selectText.5=Usuń czcionki sanitizePDF.submit=Dezynfekuj PDF + #addPageNumbers addPageNumbers.title=Dodaj numerację stron addPageNumbers.header=Dodaj numerację stron @@ -578,11 +605,13 @@ addPageNumbers.numberPagesDesc=Strony do numeracji, wszystkie (all), 1-5, 2, 5, addPageNumbers.customNumberDesc=Domyślnie do {n}, również akceptuje 'Strona {n} z {total},Teskt-{n},'{filename}-{n} addPageNumbers.submit=Dodaj numerację stron + #auto-rename auto-rename.title=Automatyczna zmiana nazwy auto-rename.header=Automatyczna zmiana nazwy dokumentu PDF auto-rename.submit=Automatyczna zmiana nazwy + #adjustContrast adjustContrast.title=Dopasuj kontrast adjustContrast.header=Dopasuj kontrast @@ -591,11 +620,13 @@ adjustContrast.brightness=Jasność: adjustContrast.saturation=Nasycenie: adjustContrast.download=Pobierz + #crop crop.title=Przytnij crop.header=Przytnij dokument PDF crop.submit=Wyślij + #autoSplitPDF autoSplitPDF.title=Automatycznie podziel PDF autoSplitPDF.header=Automatycznie podziel PDF @@ -610,9 +641,11 @@ autoSplitPDF.dividerDownload1=Pobierz 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Pobierz 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Wyślij + #pipeline pipeline.title=Automatyzacja + #pageLayout pageLayout.title=Układ wielu stron pageLayout.header=Układ wielu stron @@ -620,6 +653,7 @@ pageLayout.pagesPerSheet=Stron na jednym arkuszu: pageLayout.addBorder=Dodaj granicę pageLayout.submit=Wykonaj + #scalePages scalePages.title=Dopasuj rozmiar stron scalePages.header=Dopasuj rozmiar stron @@ -627,6 +661,7 @@ scalePages.pageSize=Rozmiar stron dokumentu: scalePages.scaleFactor=Poziom powiększenia (przycięcia) stron: scalePages.submit=Wykonaj + #certSign certSign.title=Podpisywanie certyfikatem certSign.header=Podpisz dokument PDF certyfikatem prywatnym (moduł w budowie) @@ -644,12 +679,14 @@ certSign.location=Lokalizacja certSign.name=Nazwa certSign.submit=Podpisz PDF + #removeCertSign removeCertSign.title=Usuń podpis cyfrowy removeCertSign.header=Usuń podpis cyfrowy z dokumentu PDF removeCertSign.selectPDF=Wskaż plik PDF: removeCertSign.submit=Usuń podpis cyfrowy + #removeBlanks removeBlanks.title=Usuń puste removeBlanks.header=Usuń puste strony @@ -788,6 +825,7 @@ merge.sortByDate=Sortuj po dacie merge.removeCertSign=Usuń podpis cyfrowy w scalonym pliku? merge.submit=Połącz + #pdfOrganiser pdfOrganiser.title=Kolejność stron pdfOrganiser.header=Kolejność stron PDF @@ -805,6 +843,7 @@ pdfOrganiser.mode.9=Usuń pierwszą i ostatnią pdfOrganiser.mode.10=Połącz parzyste i nieparzyste pdfOrganiser.placeholder=(przykład 1,3,2 lub 4-8,2,10-12 lub 2n-1) + #multiTool multiTool.title=Multi narzędzie PDF multiTool.header=Multi narzędzie PDF @@ -821,12 +860,14 @@ pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron pageRemover.submit=Usuń strony pageRemover.placeholder=(przykład 1,3,2 lub 4-8,2,10-12) + #rotate rotate.title=Obróć dokument PDF rotate.header=Obróć dokument PDF rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni): rotate.submit=Obróć + #split-pdfs split.title=Podziel dokument PDF split.header=Podziel dokument PDF @@ -841,7 +882,8 @@ split.desc.8=Dokument #6: Strona 10 split.splitPages=Wprowadź strony do podziału na: split.submit=Podziel -#imageToPDF + +#merge imageToPDF.title=Obraz na PDF imageToPDF.header=Obraz na PDF imageToPDF.submit=Konwertuj @@ -854,6 +896,7 @@ imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy imageToPDF.selectText.4=Połącz w jeden dokument PDF imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF + #pdfToImage pdfToImage.title=PDF na Obraz pdfToImage.header=PDF na Obraz @@ -867,6 +910,7 @@ pdfToImage.grey=Odcień szarości pdfToImage.blackwhite=Czarno-biały (może spowodować utratę danych!) pdfToImage.submit=Konwertuj + #addPassword addPassword.title=Dodaj hasło addPassword.header=Dodaj hasło (zaszyfruj) @@ -888,6 +932,7 @@ addPassword.selectText.15=Ogranicza akcje, które można wykonać na dokumencie, addPassword.selectText.16=Ogranicza otwarcie dokumentu addPassword.submit=Zablokuj + #watermark watermark.title=Dodaj znak wodny watermark.header=Dodaj znak wodny @@ -900,6 +945,7 @@ watermark.selectText.6=Odstęp w pionie (odstęp między każdym znakiem wodnym watermark.selectText.7=Nieprzezroczystość (0% - 100%): watermark.selectText.8=Typ znaku wodnego: watermark.selectText.9=Obraz znaku wodnego: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Dodaj znak wodny watermark.type.1=Tekst watermark.type.2=Obraz diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 4e82820fb83..21c148b9834 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Espaçamento Vertical (heightSpacer) watermark.selectText.7=Opacidade (0% - 100%) watermark.selectText.8=Tipo de Marca d'Água watermark.selectText.9=Imagem da Marca d'Água +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Adicionar Marca d'Água watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 12fc44b46dd..88e898b89fc 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Espaçamento Vertical (heightSpacer) watermark.selectText.7=Opacidade (0% - 100%) watermark.selectText.8=Tipo de Marca d'Água watermark.selectText.9=Imagem da Marca d'Água +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Adicionar Marca d'Água watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index b49f8d7e258..ac41ceab096 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (Spațiu între fiecare filigran pe vertical watermark.selectText.7=Opacitate (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Adăugați Filigran watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index ad7c4df19c9..524a7c178ff 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (пробел между каждым вод watermark.selectText.7=Непрозрачность (0% - 100%): watermark.selectText.8=Тип водяного знака: watermark.selectText.9=Изображение водяного знака: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Добавить водяной знак watermark.type.1=Текст watermark.type.2=Изображение diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 94f2d1dff23..5150180978b 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Výška medzery (Medzera medzi jednotlivými vodotlačami watermark.selectText.7=Priehľadnosť (0% - 100%): watermark.selectText.8=Typ vodotlače: watermark.selectText.9=Obrázok vodotlače: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Pridať vodotlač watermark.type.1=Text watermark.type.2=Obrázok diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index fe6f2ec7910..3b76b2fb064 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -945,6 +945,7 @@ watermark.selectText.6=Visina razmaka (Razmak između svakog vodenog žiga verti watermark.selectText.7=Opačitost (0% - 100%): watermark.selectText.8=Tip vodenog žiga: watermark.selectText.9=Slika vodenog žiga: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Dodaj vodeni žig watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index fc8fb437e64..ac49563cc66 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (mellanrum mellan varje vattenstämpel verti watermark.selectText.7=Opacitet (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Lägg till vattenstämpel watermark.type.1=Text watermark.type.2=Image diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 8c24d449c94..9fff7851468 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -945,6 +945,7 @@ watermark.selectText.6=ตัวเว้นระยะความสูง ( watermark.selectText.7=ความทึบ (0% - 100%): watermark.selectText.8=ประเภทลายน้ำ: watermark.selectText.9=ภาพลายน้ำ: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=เพิ่มลายน้ำ watermark.type.1=ข้อความ watermark.type.2=ภาพ diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 5a082bc3f71..c0460a5a523 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -945,6 +945,7 @@ watermark.selectText.6=yükseklikBoşluk (Dikeyde her filigran arasında boşluk watermark.selectText.7=Opaklık (0% - 100%): watermark.selectText.8=Filigran Türü: watermark.selectText.9=Filigran Resmi: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Filigran Ekle watermark.type.1=Metin watermark.type.2=Resim diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 9bd25283b74..8cf3c19ca39 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer (проміжок між кожним вод watermark.selectText.7=Непрозорість (0% - 100%): watermark.selectText.8=Тип водяного знаку: watermark.selectText.9=Зображення водяного знаку: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Додати водяний знак watermark.type.1=Текст watermark.type.2=Зображення diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index eda2787249f..bbf096af94a 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Chọn (các) tệp PDF @@ -945,6 +945,7 @@ watermark.selectText.6=Khoảng cách dọc (Khoảng cách giữa mỗi hình m watermark.selectText.7=Độ mờ (0% - 100%): watermark.selectText.8=Loại hình mờ: watermark.selectText.9=Hình ảnh hình mờ: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=Thêm hình mờ watermark.type.1=Văn bản watermark.type.2=Hình ảnh diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 28af7518e6a..bea1a70c5fa 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -192,8 +192,8 @@ adminUserSettings.changeUserRole=更改用户角色 adminUserSettings.authenticated=已验证 -database.title=数据库 导入/导出 -database.header=数据库 导入/导出 +database.title=数据库 导入/导出 +database.header=数据库 导入/导出 database.fileName=文件名 database.creationDate=创建时间 database.fileSize=文件大小 @@ -945,6 +945,7 @@ watermark.selectText.6=垂直间距(每个水印之间的垂直距离): watermark.selectText.7=透明度(0% - 100%): watermark.selectText.8=水印类型: watermark.selectText.9=水印图片: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=添加水印 watermark.type.1=文字 watermark.type.2=图片 diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index c95659b85f3..145e75bffb7 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -945,6 +945,7 @@ watermark.selectText.6=heightSpacer(每個浮水印之間的垂直間距): watermark.selectText.7=不透明度(0% - 100%): watermark.selectText.8=浮水印類型: watermark.selectText.9=浮水印影像: +watermark.selectText.10=Convert PDF to PDF-Image watermark.submit=新增浮水印 watermark.type.1=文字 watermark.type.2=圖片 From c09fc1541f891b97c3fdf05319069e85e3fa8d94 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 10:51:50 +0100 Subject: [PATCH 32/50] :memo: Update README: Translation Progress Table (#1636) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5c477cccdcb..6cc2a899e2d 100644 --- a/README.md +++ b/README.md @@ -179,8 +179,8 @@ Stirling PDF currently supports 38! | Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | -| German (Deutsch) (de_DE) | ![100%](https://geps.dev/progress/100) | +| French (Français) (fr_FR) | ![93%](https://geps.dev/progress/93) | +| German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) | | Greek (Ελληνικά) (el_GR) | ![82%](https://geps.dev/progress/82) | | Hindi (हिंदी) (hi_IN) | ![77%](https://geps.dev/progress/77) | | Hungarian (Magyar) (hu_HU) | ![76%](https://geps.dev/progress/76) | @@ -190,9 +190,9 @@ Stirling PDF currently supports 38! | Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | | Norwegian (Norsk) (no_NB) | ![96%](https://geps.dev/progress/96) | -| Polish (Polski) (pl_PL) | ![90%](https://geps.dev/progress/90) | +| Polish (Polski) (pl_PL) | ![93%](https://geps.dev/progress/93) | | Portuguese (Português) (pt_PT) | ![78%](https://geps.dev/progress/78) | -| Portuguese Brazilian (Português) (pt_BR) | ![60%](https://geps.dev/progress/60) | +| Portuguese Brazilian (Português) (pt_BR) | ![59%](https://geps.dev/progress/59) | | Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) | | Russian (Русский) (ru_RU) | ![84%](https://geps.dev/progress/84) | | Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![78%](https://geps.dev/progress/78) | @@ -200,7 +200,7 @@ Stirling PDF currently supports 38! | Slovakian (Slovensky) (sk_SK) | ![92%](https://geps.dev/progress/92) | | Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | | Swedish (Svenska) (sv_SE) | ![39%](https://geps.dev/progress/39) | -| Thai (ไทย) (th_TH) | ![100%](https://geps.dev/progress/100) | +| Thai (ไทย) (th_TH) | ![99%](https://geps.dev/progress/99) | | Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | | Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | | Ukrainian (Українська) (uk_UA) | ![90%](https://geps.dev/progress/90) | From f35cbc43105e2c344d867ea8ad82f12a300e1002 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Tue, 6 Aug 2024 10:57:18 +0100 Subject: [PATCH 33/50] enhancement auto have label --- .github/ISSUE_TEMPLATE/2-feature.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml index 48af11e0f29..810f3fcd8c7 100644 --- a/.github/ISSUE_TEMPLATE/2-feature.yml +++ b/.github/ISSUE_TEMPLATE/2-feature.yml @@ -1,6 +1,8 @@ name: Feature Request description: Submit a new feature request. title: "[Feature Request]: " +labels: + - enhancement body: - type: markdown attributes: From 96b080528bb5f3b1a6646a8fa4cfe92f19d6757b Mon Sep 17 00:00:00 2001 From: arsvendg <106372750+arsvendg@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:44:44 +0200 Subject: [PATCH 34/50] Changes norwegian translation (#1639) * Minor correction * Endringer oversettelser * Changes norwegian translation --- src/main/resources/messages_no_NB.properties | 36 ++++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 5f92614ed4b..717eb8a5e84 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -192,21 +192,21 @@ adminUserSettings.changeUserRole=Endre Brukerens Rolle adminUserSettings.authenticated=Autentisert -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +database.title=Database Import/Eksport +database.header=Database Import/Eksport +database.fileName=Fil navn +database.creationDate=Opprettelsesdato +database.fileSize=Filstørrelse +database.deleteBackupFile=Slett sikkerhetskopifil +database.importBackupFile=Importer sikkerhetskopifil +database.downloadBackupFile=Last ned sikkerhetskopifil +database.info_1=Når du importerer data, er det avgjørende å sikre riktig struktur. Hvis du er usikker på hva du gjør, bør du søke råd og støtte fra en profesjonell. En feil i strukturen kan føre til applikasjonsfeil, inkludert fullstendig manglende evne til å kjøre applikasjonen. +database.info_2=Filnavnet spiller ingen rolle ved opplasting. Det vil bli omdøpt etterpå for å følge formatet backup_user_yyyyMMddHHmm.sql, for å sikre en konsekvent navnekonvensjon. +database.submit=Importer sikkerhetskopi +database.importIntoDatabaseSuccessed=Import til database vellykket +database.fileNotFound=Fil ikke funnet +database.fileNullOrEmpty=Fil må ikke være tom eller null +database.failedImportFile=Import av fil mislyktes ############# # HOME-PAGE # @@ -706,8 +706,8 @@ removeAnnotations.submit=Fjern #compare compare.title=Sammenlign compare.header=Sammenlign PDF-er -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Uthevingsfarge 1: +compare.highlightColor.2=Uthevingsfarge 2: compare.document.1=Dokument 1 compare.document.2=Dokument 2 compare.submit=Sammenlign @@ -945,7 +945,7 @@ watermark.selectText.6=Høydeavstand (Avstand mellom hvert vannmerke vertikalt): watermark.selectText.7=Opasitet (0% - 100%): watermark.selectText.8=Vannmerketype: watermark.selectText.9=Vannmerkebilde: -watermark.selectText.10=Convert PDF to PDF-Image +watermark.selectText.10=Konverter PDF til PDF-Bilde watermark.submit=Legg til vannmerke watermark.type.1=Tekst watermark.type.2=Bilde From e50391a44a3b36557c3602b0c6c018a639f3eae8 Mon Sep 17 00:00:00 2001 From: HimaGirija <68319906+HimaGirija99@users.noreply.github.com> Date: Thu, 8 Aug 2024 02:46:57 +0530 Subject: [PATCH 35/50] Added multithreaded feature for image extraction (#1641) Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- .../api/misc/ExtractImagesController.java | 194 +++++++++++------- 1 file changed, 121 insertions(+), 73 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java index 3931e2dfbc1..7fe27a0337c 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java @@ -1,19 +1,8 @@ package stirling.software.SPDF.controller.api.misc; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import java.util.zip.Deflater; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import javax.imageio.ImageIO; - +import io.github.pixee.security.Filenames; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.pdfbox.Loader; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; @@ -28,14 +17,25 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; - -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.api.PDFWithImageFormatRequest; import stirling.software.SPDF.utils.WebResponseUtils; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.zip.Deflater; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + @RestController @RequestMapping("/api/v1/misc") @Tag(name = "Misc", description = "Miscellaneous APIs") @@ -47,16 +47,19 @@ public class ExtractImagesController { @Operation( summary = "Extract images from a PDF file", description = - "This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input:PDF Output:IMAGE/ZIP Type:SIMO") + "This endpoint extracts images from a given PDF file and returns them in a zip file. Users can specify the output image format. Input: PDF Output: IMAGE/ZIP Type: SIMO") public ResponseEntity extractImages(@ModelAttribute PDFWithImageFormatRequest request) - throws IOException { + throws IOException, InterruptedException, ExecutionException { MultipartFile file = request.getFileInput(); String format = request.getFormat(); System.out.println( - System.currentTimeMillis() + "file=" + file.getName() + ", format=" + format); + System.currentTimeMillis() + " file=" + file.getName() + ", format=" + format); PDDocument document = Loader.loadPDF(file.getBytes()); + // Determine if multithreading should be used based on PDF size or number of pages + boolean useMultithreading = shouldUseMultithreading(file, document); + // Create ByteArrayOutputStream to write zip file to byte array ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -66,76 +69,121 @@ public ResponseEntity extractImages(@ModelAttribute PDFWithImageFormatRe // Set compression level zos.setLevel(Deflater.BEST_COMPRESSION); - int imageIndex = 1; String filename = Filenames.toSimpleFileName(file.getOriginalFilename()) .replaceFirst("[.][^.]+$", ""); - int pageNum = 0; Set processedImages = new HashSet<>(); - // Iterate over each page - for (PDPage page : document.getPages()) { - ++pageNum; - // Extract images from page - for (COSName name : page.getResources().getXObjectNames()) { - if (page.getResources().isImageXObject(name)) { - PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name); - int imageHash = image.hashCode(); + + if (useMultithreading) { + // Executor service to handle multithreading + ExecutorService executor = + Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + Set> futures = new HashSet<>(); + + // Iterate over each page + for (int pgNum = 0; pgNum < document.getPages().getCount(); pgNum++) { + PDPage page = document.getPage(pgNum); + int pageNum = document.getPages().indexOf(page) + 1; + // Submit a task for processing each page + Future future = + executor.submit( + () -> { + extractImagesFromPage( + page, format, filename, pageNum, processedImages, zos); + return null; + }); + + futures.add(future); + } + + // Wait for all tasks to complete + for (Future future : futures) { + future.get(); + } + + // Close executor service + executor.shutdown(); + } else { + // Single-threaded extraction + for (int pgNum = 0; pgNum < document.getPages().getCount(); pgNum++) { + PDPage page = document.getPage(pgNum); + extractImagesFromPage(page, format, filename, pgNum + 1, processedImages, zos); + } + } + + // Close PDDocument and ZipOutputStream + document.close(); + zos.close(); + + // Create ByteArrayResource from byte array + byte[] zipContents = baos.toByteArray(); + + return WebResponseUtils.boasToWebResponse( + baos, filename + "_extracted-images.zip", MediaType.APPLICATION_OCTET_STREAM); + } + + private boolean shouldUseMultithreading(MultipartFile file, PDDocument document) { + // Criteria: Use multithreading if file size > 10MB or number of pages > 20 + long fileSizeInMB = file.getSize() / (1024 * 1024); + int numberOfPages = document.getPages().getCount(); + return fileSizeInMB > 10 || numberOfPages > 20; + } + + private void extractImagesFromPage( + PDPage page, + String format, + String filename, + int pageNum, + Set processedImages, + ZipOutputStream zos) + throws IOException { + for (COSName name : page.getResources().getXObjectNames()) { + if (page.getResources().isImageXObject(name)) { + PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name); + int imageHash = image.hashCode(); + synchronized (processedImages) { if (processedImages.contains(imageHash)) { continue; // Skip already processed images } processedImages.add(imageHash); + } - // Convert image to desired format - RenderedImage renderedImage = image.getImage(); - BufferedImage bufferedImage = null; - if ("png".equalsIgnoreCase(format)) { - bufferedImage = - new BufferedImage( - renderedImage.getWidth(), - renderedImage.getHeight(), - BufferedImage.TYPE_INT_ARGB); - } else if ("jpeg".equalsIgnoreCase(format) || "jpg".equalsIgnoreCase(format)) { - bufferedImage = - new BufferedImage( - renderedImage.getWidth(), - renderedImage.getHeight(), - BufferedImage.TYPE_INT_RGB); - } else if ("gif".equalsIgnoreCase(format)) { - bufferedImage = - new BufferedImage( - renderedImage.getWidth(), - renderedImage.getHeight(), - BufferedImage.TYPE_BYTE_INDEXED); - } + RenderedImage renderedImage = image.getImage(); - // Write image to zip file - String imageName = - filename + "_" + imageIndex + " (Page " + pageNum + ")." + format; - ZipEntry zipEntry = new ZipEntry(imageName); - zos.putNextEntry(zipEntry); + // Convert to standard RGB colorspace if needed + BufferedImage bufferedImage = convertToRGB(renderedImage, format); - Graphics2D g = bufferedImage.createGraphics(); - g.drawImage((Image) renderedImage, 0, 0, null); - g.dispose(); - // Write image bytes to zip file + // Write image to zip file + String imageName = filename + "_" + imageHash + " (Page " + pageNum + ")." + format; + synchronized (zos) { + zos.putNextEntry(new ZipEntry(imageName)); ByteArrayOutputStream imageBaos = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, format, imageBaos); zos.write(imageBaos.toByteArray()); - zos.closeEntry(); - imageIndex++; } } } + } - // Close ZipOutputStream and PDDocument - zos.close(); - document.close(); - - // Create ByteArrayResource from byte array - byte[] zipContents = baos.toByteArray(); + private BufferedImage convertToRGB(RenderedImage renderedImage, String format) { + int width = renderedImage.getWidth(); + int height = renderedImage.getHeight(); + BufferedImage rgbImage; + + if ("png".equalsIgnoreCase(format)) { + rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + } else if ("jpeg".equalsIgnoreCase(format) || "jpg".equalsIgnoreCase(format)) { + rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + } else if ("gif".equalsIgnoreCase(format)) { + rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_INDEXED); + } else { + rgbImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + } - return WebResponseUtils.boasToWebResponse( - baos, filename + "_extracted-images.zip", MediaType.APPLICATION_OCTET_STREAM); + Graphics2D g = rgbImage.createGraphics(); + g.drawImage((Image) renderedImage, 0, 0, null); + g.dispose(); + return rgbImage; } } From bc3574576830925e5f016492a8ed71edffad0358 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 22:19:08 +0100 Subject: [PATCH 36/50] :memo: Update README: Translation Progress Table (#1640) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cc2a899e2d..f09b64c86e4 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ Stirling PDF currently supports 38! | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | | Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | -| Norwegian (Norsk) (no_NB) | ![96%](https://geps.dev/progress/96) | +| Norwegian (Norsk) (no_NB) | ![98%](https://geps.dev/progress/98) | | Polish (Polski) (pl_PL) | ![93%](https://geps.dev/progress/93) | | Portuguese (Português) (pt_PT) | ![78%](https://geps.dev/progress/78) | | Portuguese Brazilian (Português) (pt_BR) | ![59%](https://geps.dev/progress/59) | From d0bf385d696ff5d01852b602bd93366f1d3e1349 Mon Sep 17 00:00:00 2001 From: PingLin8888 <88387490+PingLin8888@users.noreply.github.com> Date: Thu, 8 Aug 2024 20:38:36 +0100 Subject: [PATCH 37/50] Issue1632 remove images (#1645) * Implemented PdfImageRemovalService.java and PdfImageRemovalController.java. Image can be removed testing using Postman, but the file size doesn't change. * Fix removal logic in service file to decrease file size. * Implement "Remove Image" feature on the website Updated the front-end code to integrate the "Remove Image" feature. The new functionality is now fully operational on the website, allowing users to remove images as expected. * Add comments to PdfImageRemovalController and PdfImageRemovalService. * Change the google material icon in navbar, homepage and remove-image-pdf.html. --- .../SPDF/config/EndpointConfiguration.java | 2 + .../api/PdfImageRemovalController.java | 82 +++++++++++++++++++ .../controller/web/GeneralWebController.java | 7 ++ .../SPDF/service/PdfImageRemovalService.java | 43 ++++++++++ src/main/resources/messages_en_GB.properties | 11 +++ src/main/resources/messages_en_US.properties | 11 +++ src/main/resources/static/css/removeImage.css | 22 +++++ .../resources/templates/fragments/navbar.html | 3 + src/main/resources/templates/home.html | 3 + .../resources/templates/remove-image-pdf.html | 36 ++++++++ 10 files changed, 220 insertions(+) create mode 100644 src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java create mode 100644 src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java create mode 100644 src/main/resources/static/css/removeImage.css create mode 100644 src/main/resources/templates/remove-image-pdf.html diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index 43180753617..303de37fb4a 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -137,6 +137,7 @@ public void init() { addEndpointToGroup("Other", "auto-rename"); addEndpointToGroup("Other", "get-info-on-pdf"); addEndpointToGroup("Other", "show-javascript"); + addEndpointToGroup("Other", "remove-image-pdf"); // CLI addEndpointToGroup("CLI", "compress-pdf"); @@ -221,6 +222,7 @@ public void init() { addEndpointToGroup("Java", "split-pdf-by-sections"); addEndpointToGroup("Java", REMOVE_BLANKS); addEndpointToGroup("Java", "pdf-to-text"); + addEndpointToGroup("Java", "remove-image-pdf"); // Javascript addEndpointToGroup("Javascript", "pdf-organizer"); diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java new file mode 100644 index 00000000000..a3b9e93c5ad --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java @@ -0,0 +1,82 @@ +package stirling.software.SPDF.controller.api; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; + +import stirling.software.SPDF.model.api.PDFFile; +import stirling.software.SPDF.service.PdfImageRemovalService; +import stirling.software.SPDF.utils.WebResponseUtils; + + +/** + * Controller class for handling PDF image removal requests. + * Provides an endpoint to remove images from a PDF file to reduce its size. + */ +@RestController +@RequestMapping("/api/v1/general") +public class PdfImageRemovalController { + + // Service for removing images from PDFs + @Autowired private PdfImageRemovalService pdfImageRemovalService; + + /** + * Constructor for dependency injection of PdfImageRemovalService. + * + * @param pdfImageRemovalService The service used for removing images from PDFs. + */ + public PdfImageRemovalController(PdfImageRemovalService pdfImageRemovalService) { + this.pdfImageRemovalService = pdfImageRemovalService; + } + + /** + * Endpoint to remove images from a PDF file. + * + * This method processes the uploaded PDF file, removes all images, and returns + * the modified PDF file with a new name indicating that images were removed. + * + * @param file The PDF file with images to be removed. + * @return ResponseEntity containing the modified PDF file as byte array with appropriate content type and filename. + * @throws IOException If an error occurs while processing the PDF file. + */ + @PostMapping(consumes = "multipart/form-data", value = "/remove-image-pdf") + @Operation( + summary = "Remove images from file to reduce the file size.", + description = + "This endpoint remove images from file to reduce the file size.Input:PDF Output:PDF Type:MISO") + public ResponseEntity removeImages(@ModelAttribute PDFFile file) throws IOException { + + MultipartFile pdf = file.getFileInput(); + + // Convert the MultipartFile to a byte array + byte[] pdfBytes = pdf.getBytes(); + + // Load the PDF document from the byte array + PDDocument document = Loader.loadPDF(pdfBytes); + + // Remove images from the PDF document using the service + PDDocument modifiedDocument = pdfImageRemovalService.removeImagesFromPdf(document); + + // Create a ByteArrayOutputStream to hold the modified PDF data + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + // Save the modified PDF document to the output stream + modifiedDocument.save(outputStream); + modifiedDocument.close(); + + // Generate a new filename for the modified PDF + String mergedFileName = + pdf.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_removed_images.pdf"; + + // Convert the byte array to a web response and return it + return WebResponseUtils.bytesToWebResponse(outputStream.toByteArray(), mergedFileName); + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index bb730dc9db0..93ad5f342e0 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -310,4 +310,11 @@ public String autoSPlitPDFForm(Model model) { model.addAttribute("currentPage", "auto-split-pdf"); return "auto-split-pdf"; } + + @GetMapping("/remove-image-pdf") + @Hidden + public String removeImagePdfForm(Model model) { + model.addAttribute("currentPage", "remove-image-pdf"); + return "remove-image-pdf"; + } } diff --git a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java new file mode 100644 index 00000000000..052d9977756 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java @@ -0,0 +1,43 @@ +package stirling.software.SPDF.service; + +import java.io.IOException; + +import org.apache.pdfbox.cos.COSName; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.graphics.PDXObject; +import org.springframework.stereotype.Service; + +/** + * Service class responsible for removing image objects from a PDF document. + */ +@Service +public class PdfImageRemovalService { + + /** + * Removes all image objects from the provided PDF document. + * + * This method iterates over each page in the document and removes any + * image XObjects found in the page's resources. + * + * @param document The PDF document from which images will be removed. + * @return The modified PDF document with images removed. + * @throws IOException If an error occurs while processing the PDF document. + */ + public PDDocument removeImagesFromPdf(PDDocument document) throws IOException { + // Iterate over each page in the PDF document + for (PDPage page : document.getPages()) { + PDResources resources = page.getResources(); + // Iterate over all XObject names in the page's resources + for (COSName name : resources.getXObjectNames()) { + // Check if the XObject is an image + if (resources.isImageXObject(name)) { + // Remove the image XObject by setting it to null + resources.put(name, (PDXObject) null); + } + } + } + return document; + } +} diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index f6f77624b8f..e072dc64fe4 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -461,6 +461,10 @@ 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,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image \ No newline at end of file diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index b90bef09006..bd31c0b032c 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/static/css/removeImage.css b/src/main/resources/static/css/removeImage.css new file mode 100644 index 00000000000..4f2be4034dc --- /dev/null +++ b/src/main/resources/static/css/removeImage.css @@ -0,0 +1,22 @@ +.filename { + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: 10px; +} + +.arrows { + flex-shrink: 0; + display: flex; + justify-content: flex-end; +} +.arrows .btn { + margin: 0 3px; +} + +.move-up span, +.move-down span { + font-weight: bold; + font-size: 1.2em; +} diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index 39bd805124e..955fb3e63f5 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -195,6 +195,9 @@
+
+
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index d2846a2418e..30c295a514f 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -229,6 +229,9 @@
+
+
diff --git a/src/main/resources/templates/remove-image-pdf.html b/src/main/resources/templates/remove-image-pdf.html new file mode 100644 index 00000000000..6849bd599e2 --- /dev/null +++ b/src/main/resources/templates/remove-image-pdf.html @@ -0,0 +1,36 @@ + + + + + + + + + +
+
+ +

+
+
+
+
+ remove_selection + +
+
+
+ +
+ +
+
+
+
+
+ +
+ + From d65a637a46d0114316cce1fa7ef10464228c864c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 20:49:56 +0100 Subject: [PATCH 38/50] Bump alpine from 3.20.0 to 3.20.1 (#1505) * Bump alpine from 3.20.0 to 3.20.1 Bumps alpine from 3.20.0 to 3.20.1. --- updated-dependencies: - dependency-name: alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update Dockerfile * Update Dockerfile-fat * Update Dockerfile-ultra-lite --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- Dockerfile | 2 +- Dockerfile-fat | 2 +- Dockerfile-ultra-lite | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6aab1d8bfcc..3e257f1dff9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Main stage -FROM alpine:3.20.0 +FROM alpine:3.20.2 # Copy necessary files COPY scripts /scripts diff --git a/Dockerfile-fat b/Dockerfile-fat index 53f1c1fc456..94d3d73b104 100644 --- a/Dockerfile-fat +++ b/Dockerfile-fat @@ -12,7 +12,7 @@ RUN DOCKER_ENABLE_SECURITY=true \ ./gradlew clean build # Main stage -FROM alpine:3.20.0 +FROM alpine:3.20.2 # Copy necessary files COPY scripts /scripts diff --git a/Dockerfile-ultra-lite b/Dockerfile-ultra-lite index e3718497d7f..1b2ee76f07f 100644 --- a/Dockerfile-ultra-lite +++ b/Dockerfile-ultra-lite @@ -1,5 +1,5 @@ # use alpine -FROM alpine:3.20.0 +FROM alpine:3.20.2 ARG VERSION_TAG From a3374745f849a6ac2ae7d9b1a9c4780119fec0e9 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com.> Date: Thu, 8 Aug 2024 21:13:59 +0100 Subject: [PATCH 39/50] formatting --- Dockerfile | 4 +- Dockerfile-fat | 4 +- build.gradle | 2 +- .../software/SPDF/SPdfApplication.java | 3 +- .../api/PdfImageRemovalController.java | 12 +++--- .../api/misc/ExtractImagesController.java | 41 ++++++++++--------- .../SPDF/service/PdfImageRemovalService.java | 8 ++-- 7 files changed, 38 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3e257f1dff9..44031ba708b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,8 +45,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # CV py3-opencv \ # python3/pip - python3 && \ - wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \ + python3 \ + py3-pip && \ # uno unoconv and HTML pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \ mv /usr/share/tessdata /usr/share/tessdata-original && \ diff --git a/Dockerfile-fat b/Dockerfile-fat index 94d3d73b104..c31fe348c4a 100644 --- a/Dockerfile-fat +++ b/Dockerfile-fat @@ -61,8 +61,8 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # CV py3-opencv \ # python3/pip - python3 && \ - wget https://bootstrap.pypa.io/get-pip.py -qO - | python3 - --break-system-packages --no-cache-dir --upgrade && \ + python3 \ + py3-pip && \ # uno unoconv and HTML pip install --break-system-packages --no-cache-dir --upgrade unoconv WeasyPrint && \ mv /usr/share/tessdata /usr/share/tessdata-original && \ diff --git a/build.gradle b/build.gradle index 07abc000ea5..12780703cc6 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ ext { } group = "stirling.software" -version = "0.26.2" +version = "0.27.0" java { // 17 is lowest but we support and recommend 21 diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index 3b4ea174063..3410b950095 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -78,7 +78,8 @@ public static void main(String[] args) throws IOException, InterruptedException // custom javs settings file if (Files.exists(Paths.get("configs/custom_settings.yml"))) { - String existingLocation = propertyFiles.getOrDefault("spring.config.additional-location", ""); + String existingLocation = + propertyFiles.getOrDefault("spring.config.additional-location", ""); if (!existingLocation.isEmpty()) { existingLocation += ","; } diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java index a3b9e93c5ad..d56b7d2d204 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java @@ -16,10 +16,9 @@ import stirling.software.SPDF.service.PdfImageRemovalService; import stirling.software.SPDF.utils.WebResponseUtils; - /** - * Controller class for handling PDF image removal requests. - * Provides an endpoint to remove images from a PDF file to reduce its size. + * Controller class for handling PDF image removal requests. Provides an endpoint to remove images + * from a PDF file to reduce its size. */ @RestController @RequestMapping("/api/v1/general") @@ -40,11 +39,12 @@ public PdfImageRemovalController(PdfImageRemovalService pdfImageRemovalService) /** * Endpoint to remove images from a PDF file. * - * This method processes the uploaded PDF file, removes all images, and returns - * the modified PDF file with a new name indicating that images were removed. + *

This method processes the uploaded PDF file, removes all images, and returns the modified + * PDF file with a new name indicating that images were removed. * * @param file The PDF file with images to be removed. - * @return ResponseEntity containing the modified PDF file as byte array with appropriate content type and filename. + * @return ResponseEntity containing the modified PDF file as byte array with appropriate + * content type and filename. * @throws IOException If an error occurs while processing the PDF file. */ @PostMapping(consumes = "multipart/form-data", value = "/remove-image-pdf") diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java index 7fe27a0337c..dcbc00aa250 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java @@ -1,8 +1,22 @@ package stirling.software.SPDF.controller.api.misc; -import io.github.pixee.security.Filenames; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.zip.Deflater; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import javax.imageio.ImageIO; + import org.apache.pdfbox.Loader; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; @@ -17,25 +31,14 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; + +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.api.PDFWithImageFormatRequest; import stirling.software.SPDF.utils.WebResponseUtils; -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.zip.Deflater; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - @RestController @RequestMapping("/api/v1/misc") @Tag(name = "Misc", description = "Miscellaneous APIs") diff --git a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java index 052d9977756..985d1f48d4c 100644 --- a/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java +++ b/src/main/java/stirling/software/SPDF/service/PdfImageRemovalService.java @@ -9,17 +9,15 @@ import org.apache.pdfbox.pdmodel.graphics.PDXObject; import org.springframework.stereotype.Service; -/** - * Service class responsible for removing image objects from a PDF document. - */ +/** Service class responsible for removing image objects from a PDF document. */ @Service public class PdfImageRemovalService { /** * Removes all image objects from the provided PDF document. * - * This method iterates over each page in the document and removes any - * image XObjects found in the page's resources. + * This method iterates over each page in the document and removes any image XObjects found + * in the page's resources. * * @param document The PDF document from which images will be removed. * @return The modified PDF document with images removed. From 6d8d0bad56cbc2e597a6e5f0f68e83322c58fb95 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com.> Date: Thu, 8 Aug 2024 21:15:41 +0100 Subject: [PATCH 40/50] langs --- src/main/resources/messages_ar_AR.properties | 11 +++++++++++ src/main/resources/messages_bg_BG.properties | 11 +++++++++++ src/main/resources/messages_ca_CA.properties | 11 +++++++++++ src/main/resources/messages_cs_CZ.properties | 11 +++++++++++ src/main/resources/messages_da_DK.properties | 11 +++++++++++ src/main/resources/messages_de_DE.properties | 11 +++++++++++ src/main/resources/messages_el_GR.properties | 11 +++++++++++ src/main/resources/messages_es_ES.properties | 11 +++++++++++ src/main/resources/messages_eu_ES.properties | 11 +++++++++++ src/main/resources/messages_fr_FR.properties | 11 +++++++++++ src/main/resources/messages_ga_IE.properties | 11 +++++++++++ src/main/resources/messages_hi_IN.properties | 11 +++++++++++ src/main/resources/messages_hr_HR.properties | 11 +++++++++++ src/main/resources/messages_hu_HU.properties | 11 +++++++++++ src/main/resources/messages_id_ID.properties | 11 +++++++++++ src/main/resources/messages_it_IT.properties | 11 +++++++++++ src/main/resources/messages_ja_JP.properties | 11 +++++++++++ src/main/resources/messages_ko_KR.properties | 11 +++++++++++ src/main/resources/messages_nl_NL.properties | 11 +++++++++++ src/main/resources/messages_no_NB.properties | 11 +++++++++++ src/main/resources/messages_pl_PL.properties | 11 +++++++++++ src/main/resources/messages_pt_BR.properties | 11 +++++++++++ src/main/resources/messages_pt_PT.properties | 11 +++++++++++ src/main/resources/messages_ro_RO.properties | 11 +++++++++++ src/main/resources/messages_ru_RU.properties | 11 +++++++++++ src/main/resources/messages_sk_SK.properties | 11 +++++++++++ src/main/resources/messages_sr_LATN_RS.properties | 11 +++++++++++ src/main/resources/messages_sv_SE.properties | 11 +++++++++++ src/main/resources/messages_th_TH.properties | 11 +++++++++++ src/main/resources/messages_tr_TR.properties | 11 +++++++++++ src/main/resources/messages_uk_UA.properties | 11 +++++++++++ src/main/resources/messages_vi_VN.properties | 11 +++++++++++ src/main/resources/messages_zh_CN.properties | 11 +++++++++++ src/main/resources/messages_zh_TW.properties | 11 +++++++++++ 34 files changed, 374 insertions(+) diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 3e194292670..88ec9539d46 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 43349364d65..ce8bcc5e6f1 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Книга към PDF home.BookToPDF.desc=Преобразува формати на книги/комикси в PDF с помощта на calibre BookToPDF.tags=Книга,комикс,calibre,конвертиране,манга,Amazon,Kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Покажи проследяване на стека error.copyStack=Копиране на проследяване на стека error.githubSubmit=GitHub - Изпратете запитване error.discordSubmit=Discord - Изпратете запитване за поддръжка + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 8c400bfdbf8..3d52a609c6f 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index 6ca4cbf089b..490de1f73f7 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Kniha na PDF home.BookToPDF.desc=Převádí formáty knih/komiksů do PDF pomocí calibre BookToPDF.tags=Kniha,Komiks,Calibre,Konvertovat,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Zobrazit stopu zásobníku error.copyStack=Kopírovat stopu zásobníku error.githubSubmit=GitHub - Odeslat požadavek error.discordSubmit=Discord - Odeslat příspěvek podpory + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index a56596ddf8f..d445e4ef5ef 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -461,6 +461,10 @@ 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,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Vis Stack Trace error.copyStack=Kopier Stack Trace error.githubSubmit=GitHub - Indsend en ticket error.discordSubmit=Discord - Indsend Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 3a75642d4ed..d3f085cc767 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Buch als PDF home.BookToPDF.desc=Konvertiert Buch-/Comic-Formate mithilfe von Calibre in PDF BookToPDF.tags=buch,comic,calibre,convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Stack-Trace anzeigen error.copyStack=Stack-Trace kopieren error.githubSubmit=GitHub - Ein Ticket einreichen error.discordSubmit=Discord - Unterstützungsbeitrag einreichen + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index b6db871fde6..22faef0ee75 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Book σε PDF home.BookToPDF.desc=Μετατρέπει τις μορφές Books/Comics σε PDF χρησιμοποιώντας calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Εμφάνιση Stack Trace error.copyStack=Αντιγραφή Stack Trace error.githubSubmit=GitHub - Υποβάλετε ένα ticket error.discordSubmit=Discord - Υποβάλετε ένα Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 58e38223c89..30fd1194cba 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Libro a PDF home.BookToPDF.desc=Convierte formatos de Libro/Cómic a PDF usando Calibre BookToPDF.tags=Libro,Cómic,Calibre,Convertir,manga,Amazon,Kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Mostrar seguimiento de pila error.copyStack=Mostrar seguimiento de pila error.githubSubmit=GitHub - Enviar un ticket error.discordSubmit=Discord - Enviar mensaje de soporte + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 57d808c1a3b..c87a03cd0be 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 8f6ff4de1ef..ff1994784b4 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=eBook vers PDF home.BookToPDF.desc=Convertit les formats de livres/bandes dessinées en PDF à l'aide de calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ 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 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index 9a2b9cc438c..b2422077ee9 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Leabhar a thiontú go PDF home.BookToPDF.desc=Tiontaíonn sé formáidí Leabhair/Comics go PDF ag baint úsáide as calibre BookToPDF.tags=Leabhar, Comic, Calibre, Tiontaigh, manga, amazon, kindle, epub, mobi, azw3, docx, rtf, txt, html, lit, fb2, pdb, lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Taispeáin Stack Trace error.copyStack=Cóipeáil Stack Trace error.githubSubmit=GitHub - Cuir ticéad isteach error.discordSubmit=Discord - Cuir post Tacaíochta + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 9b954bf1cf9..88082fa3734 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index b546a88f528..76bf2d27d68 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Book u PDF home.BookToPDF.desc=Pretvara format knjige/stripa u PDF format pomoću calibre BookToPDF.tags=Knjiga,Strip,Calibre,Pretvori,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Prikaži Stack Trace error.copyStack=Kopiraj Stack Trace error.githubSubmit=GitHub - Pošaljite ticket error.discordSubmit=Discord - Pošalji objavu podrške + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 57f33ce374a..a032a9eacc8 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index d29749dcda5..f081c1e3f7e 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 505664762d6..56ef2a8374a 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Libro in PDF home.BookToPDF.desc=Converte i formati di libri/fumetti in PDF utilizzando Calibre BookToPDF.tags=Libro,fumetto,calibre,conversione,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Mostra traccia dello stack error.copyStack=Copia traccia dello stack error.githubSubmit=GitHub: invia un ticket error.discordSubmit=Discord: invia post di supporto + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index e2380980a20..3ba7ed9ca62 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=PDFを書籍に変換 home.BookToPDF.desc=calibreを使用してPDFを書籍/コミック形式に変換します BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=スタックトレースを表示 error.copyStack=スタックトレースをコピー error.githubSubmit=GitHub - チケットを提出 error.discordSubmit=Discord - サポート投稿を提出 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index a0ccfb0a895..a382f9d3416 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=책을 PDF로 home.BookToPDF.desc=구경을 사용하여 책/만화 형식을 PDF로 변환 BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=스택 추적 보기 error.copyStack=스택 추적 복사 error.githubSubmit=GitHub - 티켓 제출 error.discordSubmit=Discord - 문의 게시 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index c2c8271a15e..30396fdae4f 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Boek naar PDF home.BookToPDF.desc=Converteert boek-/stripformaat naar PDF met gebruik van Calibre BookToPDF.tags=Boek,Strip,Comic,Calibre,Converteren,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Geeft tracering weer error.copyStack=Kopieer tracering error.githubSubmit=GitHub - Dien een ticket in error.discordSubmit=Discord - Maak een support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 717eb8a5e84..41f1870a043 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Bok til PDF home.BookToPDF.desc=Konverter bøker/tegneserier til PDF ved hjelp av calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Vis stakksporing error.copyStack=Kopier stakksporing error.githubSubmit=GitHub - Send inn en billett error.discordSubmit=Discord - Send inn støtteinnlegg + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 858aabc8f51..55ce74f9424 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=eBook do PDF home.BookToPDF.desc=Zapisuje ebooka do PDF za pomocą Calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Pokaż Stack Trace error.copyStack=Kopiuj Stack Trace error.githubSubmit=GitHub - wyślij zgłoszenie error.discordSubmit=Discord - wyślij posta z prośbą o pomoc + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 21c148b9834..da82be3e07f 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 88e898b89fc..512ba30036b 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index ac41ceab096..421efcfd0ce 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 524a7c178ff..2f42ced2526 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Книга в PDF home.BookToPDF.desc=Конвертирует форматы книги/комикса в PDF с помощью calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Показать стек вызовов error.copyStack=Скопировать стек вызовов error.githubSubmit=GitHub - Отправить заявку error.discordSubmit=Discord - Отправить запрос в поддержку + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 5150180978b..43ce8c672fb 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Kniha do PDF home.BookToPDF.desc=Konvertuje formáty kníh/komiksov do PDF pomocou Calibre BookToPDF.tags=kniha, komiks, Calibre, konvertovať, manga, amazon, kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Zobraziť sledovanie zásobníka error.copyStack=Kopírovať sledovanie zásobníka error.githubSubmit=GitHub - Podajte tiket error.discordSubmit=Discord - Podajte príspevok na podporu + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index 3b76b2fb064..6147c20b5e4 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index ac49563cc66..3fe4c0e9508 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -461,6 +461,10 @@ 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.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Show Stack Trace error.copyStack=Copy Stack Trace error.githubSubmit=GitHub - Submit a ticket error.discordSubmit=Discord - Submit Support post + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 9fff7851468..c38234e1849 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=หนังสือเป็น PDF home.BookToPDF.desc=แปลงรูปแบบหนังสือ/การ์ตูนเป็น PDF โดยใช้ Calibre BookToPDF.tags=หนังสือ, การ์ตูน, Calibre, แปลง, มังงะ, amazon, kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=แสดง Stack Trace error.copyStack=คัดลอก Stack Trace error.githubSubmit=GitHub - ส่งตั๋ว error.discordSubmit=Discord - ส่งโพสต์การสนับสนุน + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index c0460a5a523..6a03d547977 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -461,6 +461,10 @@ 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 +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ 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 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 8cf3c19ca39..6e60119500b 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Книга у PDF home.BookToPDF.desc=Конвертує формати книги/комікса у PDF за допомогою calibre BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Показати стек викликів error.copyStack=Скопіювати стек викликів error.githubSubmit=GitHub - Надіслати запит error.discordSubmit=Discord - Надіслати повідомлення підтримки + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index bbf096af94a..b62344887fe 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=Sách sang PDF home.BookToPDF.desc=Chuyển đổi định dạng sách/truyện tranh sang PDF bằng calibre BookToPDF.tags=Sách,Truyện tranh,Calibre,Chuyển đổi,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=Hiển thị Stack Trace error.copyStack=Sao chép Stack Trace error.githubSubmit=GitHub - Gửi ticket error.discordSubmit=Discord - Gửi bài đăng hỗ trợ + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index bea1a70c5fa..690c8e05864 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=电子书转PDF home.BookToPDF.desc=使用Calibre将电子书/漫画转换成PDF BookToPDF.tags=电子书、漫画、Calibre、转换、日本漫画、亚马逊、kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=显示堆栈跟踪 error.copyStack=复制堆栈跟踪 error.githubSubmit=GitHub - 提交工单 error.discordSubmit=Discord - 提交支持帖子 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 145e75bffb7..b2e9acea6f4 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -461,6 +461,10 @@ home.BookToPDF.title=電子書轉 PDF home.BookToPDF.desc=使用 calibre 將書籍/漫畫格式轉換為 PDF BookToPDF.tags=電子書,漫畫,Calibre,轉換,日本漫畫,亞馬遜,kindle +home.removeImagePdf.title=Remove image +home.removeImagePdf.desc=Remove image from PDF to reduce file size +removeImagePdf.tags=Remove Image,Page operations,Back end,server side + ########################### # # @@ -1125,3 +1129,10 @@ error.showStack=顯示堆疊追蹤 error.copyStack=複製堆疊追蹤 error.githubSubmit=GitHub - 提交工單 error.discordSubmit=Discord - 提交支援帖子 + + +#remove-image +removeImage.title=Remove image +removeImage.header=Remove image +removeImage.removeImage=Remove image +removeImage.submit=Remove image From 39423c247c90168068ee323fd77b3a798a9ca176 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:17:08 +0100 Subject: [PATCH 41/50] :floppy_disk: Update Version (#1646) :floppy_disk: Sync Versions > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- chart/stirling-pdf/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chart/stirling-pdf/Chart.yaml b/chart/stirling-pdf/Chart.yaml index 9b633ddb5bc..2a21f9c5d8f 100644 --- a/chart/stirling-pdf/Chart.yaml +++ b/chart/stirling-pdf/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 0.26.2 +appVersion: 0.27.0 description: locally hosted web application that allows you to perform various operations on PDF files home: https://github.com/Stirling-Tools/Stirling-PDF From 00a0670954c7df0496a0b98d17635cf3bfaf5340 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:17:18 +0100 Subject: [PATCH 42/50] :memo: Update README: Translation Progress Table (#1647) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index f09b64c86e4..4a56ed1a068 100644 --- a/README.md +++ b/README.md @@ -170,41 +170,41 @@ Stirling PDF currently supports 38! | Language | Progress | | ------------------------------------------- | -------------------------------------- | | Arabic (العربية) (ar_AR) | ![45%](https://geps.dev/progress/45) | -| Basque (Euskara) (eu_ES) | ![62%](https://geps.dev/progress/62) | +| Basque (Euskara) (eu_ES) | ![61%](https://geps.dev/progress/61) | | Bulgarian (Български) (bg_BG) | ![94%](https://geps.dev/progress/94) | | Catalan (Català) (ca_CA) | ![48%](https://geps.dev/progress/48) | -| Croatian (Hrvatski) (hr_HR) | ![95%](https://geps.dev/progress/95) | -| Czech (Česky) (cs_CZ) | ![90%](https://geps.dev/progress/90) | -| Danish (Dansk) (da_DK) | ![10%](https://geps.dev/progress/10) | -| Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) | +| Croatian (Hrvatski) (hr_HR) | ![94%](https://geps.dev/progress/94) | +| Czech (Česky) (cs_CZ) | ![89%](https://geps.dev/progress/89) | +| Danish (Dansk) (da_DK) | ![9%](https://geps.dev/progress/9) | +| Dutch (Nederlands) (nl_NL) | ![95%](https://geps.dev/progress/95) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | | French (Français) (fr_FR) | ![93%](https://geps.dev/progress/93) | | German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) | -| Greek (Ελληνικά) (el_GR) | ![82%](https://geps.dev/progress/82) | -| Hindi (हिंदी) (hi_IN) | ![77%](https://geps.dev/progress/77) | -| Hungarian (Magyar) (hu_HU) | ![76%](https://geps.dev/progress/76) | +| Greek (Ελληνικά) (el_GR) | ![81%](https://geps.dev/progress/81) | +| Hindi (हिंदी) (hi_IN) | ![76%](https://geps.dev/progress/76) | +| Hungarian (Magyar) (hu_HU) | ![75%](https://geps.dev/progress/75) | | Indonesia (Bahasa Indonesia) (id_ID) | ![76%](https://geps.dev/progress/76) | -| Irish (Gaeilge) (ga_IE) | ![99%](https://geps.dev/progress/99) | -| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Japanese (日本語) (ja_JP) | ![90%](https://geps.dev/progress/90) | +| Irish (Gaeilge) (ga_IE) | ![98%](https://geps.dev/progress/98) | +| Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) | +| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | -| Norwegian (Norsk) (no_NB) | ![98%](https://geps.dev/progress/98) | -| Polish (Polski) (pl_PL) | ![93%](https://geps.dev/progress/93) | +| Norwegian (Norsk) (no_NB) | ![97%](https://geps.dev/progress/97) | +| Polish (Polski) (pl_PL) | ![92%](https://geps.dev/progress/92) | | Portuguese (Português) (pt_PT) | ![78%](https://geps.dev/progress/78) | | Portuguese Brazilian (Português) (pt_BR) | ![59%](https://geps.dev/progress/59) | -| Romanian (Română) (ro_RO) | ![39%](https://geps.dev/progress/39) | -| Russian (Русский) (ru_RU) | ![84%](https://geps.dev/progress/84) | +| Romanian (Română) (ro_RO) | ![38%](https://geps.dev/progress/38) | +| Russian (Русский) (ru_RU) | ![83%](https://geps.dev/progress/83) | | Sebian Latin alphabet (Srpski) (sr_LATN_RS) | ![78%](https://geps.dev/progress/78) | -| Simplified Chinese (简体中文) (zh_CN) | ![99%](https://geps.dev/progress/99) | -| Slovakian (Slovensky) (sk_SK) | ![92%](https://geps.dev/progress/92) | -| Spanish (Español) (es_ES) | ![98%](https://geps.dev/progress/98) | +| Simplified Chinese (简体中文) (zh_CN) | ![98%](https://geps.dev/progress/98) | +| Slovakian (Slovensky) (sk_SK) | ![91%](https://geps.dev/progress/91) | +| Spanish (Español) (es_ES) | ![97%](https://geps.dev/progress/97) | | Swedish (Svenska) (sv_SE) | ![39%](https://geps.dev/progress/39) | | Thai (ไทย) (th_TH) | ![99%](https://geps.dev/progress/99) | -| Traditional Chinese (繁體中文) (zh_TW) | ![98%](https://geps.dev/progress/98) | -| Turkish (Türkçe) (tr_TR) | ![99%](https://geps.dev/progress/99) | -| Ukrainian (Українська) (uk_UA) | ![90%](https://geps.dev/progress/90) | -| Vietnamese (Tiếng Việt) (vi_VN) | ![99%](https://geps.dev/progress/99) | +| Traditional Chinese (繁體中文) (zh_TW) | ![97%](https://geps.dev/progress/97) | +| Turkish (Türkçe) (tr_TR) | ![98%](https://geps.dev/progress/98) | +| Ukrainian (Українська) (uk_UA) | ![89%](https://geps.dev/progress/89) | +| Vietnamese (Tiếng Việt) (vi_VN) | ![98%](https://geps.dev/progress/98) | ## Contributing (creating issues, translations, fixing bugs, etc.) From 771b312ee8b443e29833f1cc8dab7897f407b96f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:33:14 +0100 Subject: [PATCH 43/50] Bump com.twelvemonkeys.imageio:imageio-tiff from 3.10.1 to 3.11.0 (#1503) * Bump com.twelvemonkeys.imageio:imageio-tiff from 3.10.1 to 3.11.0 Bumps com.twelvemonkeys.imageio:imageio-tiff from 3.10.1 to 3.11.0. --- updated-dependencies: - dependency-name: com.twelvemonkeys.imageio:imageio-tiff dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update build.gradle --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 12780703cc6..8bf7f15d039 100644 --- a/build.gradle +++ b/build.gradle @@ -134,8 +134,8 @@ dependencies { implementation "org.apache.xmlgraphics:batik-all:1.17" // TwelveMonkeys - implementation "com.twelvemonkeys.imageio:imageio-batik:3.10.1" - implementation "com.twelvemonkeys.imageio:imageio-bmp:3.10.1" + implementation "com.twelvemonkeys.imageio:imageio-batik:3.11.0" + implementation "com.twelvemonkeys.imageio:imageio-bmp:3.11.0" // implementation "com.twelvemonkeys.imageio:imageio-hdr:3.10.1" // implementation "com.twelvemonkeys.imageio:imageio-icns:3.10.1" // implementation "com.twelvemonkeys.imageio:imageio-iff:3.10.1" @@ -147,8 +147,8 @@ dependencies { // implementation "com.twelvemonkeys.imageio:imageio-sgi:3.10.1" // implementation "com.twelvemonkeys.imageio:imageio-tga:3.10.1" // implementation "com.twelvemonkeys.imageio:imageio-thumbsdb:3.10.1" - implementation "com.twelvemonkeys.imageio:imageio-tiff:3.10.1" - implementation "com.twelvemonkeys.imageio:imageio-webp:3.10.1" + implementation "com.twelvemonkeys.imageio:imageio-tiff:3.11.0" + implementation "com.twelvemonkeys.imageio:imageio-webp:3.11.0" // implementation "com.twelvemonkeys.imageio:imageio-xwd:3.10.1" implementation "commons-io:commons-io:2.16.1" From 148feda83f2392054ef18180b13ee31ed7e71a2a Mon Sep 17 00:00:00 2001 From: Diallo Date: Thu, 8 Aug 2024 22:35:15 +0200 Subject: [PATCH 44/50] Bug fix UI crash when url is unrechable (#1642) * feat: Add URL reachability check in ConvertWebsiteToPDF * Add tests for URL reachability in ConvertWebsiteToPdfTest * test: Update URL in ConvertWebsiteToPdfTest for testing --- .../api/converters/ConvertWebsiteToPDF.java | 6 +++ .../software/SPDF/utils/GeneralUtils.java | 42 +++++++++++++------ .../converters/ConvertWebsiteToPdfTest.java | 41 ++++++++++++++++++ 3 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index 8bce1b226a5..026690fd654 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -39,6 +39,12 @@ public ResponseEntity urlToPdf(@ModelAttribute UrlToPdfRequest request) if (!URL.matches("^https?://.*") || !GeneralUtils.isValidURL(URL)) { throw new IllegalArgumentException("Invalid URL format provided."); } + + // validate the URL is reachable + if (!GeneralUtils.isURLReachable(URL)) { + throw new IllegalArgumentException("URL is not reachable, please provide a valid URL."); + } + Path tempOutputFile = null; byte[] pdfBytes; try { diff --git a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java index ae86d8c11ac..aa5f3aea9d2 100644 --- a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java @@ -13,6 +13,8 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.List; +import java.net.URL; +import java.net.HttpURLConnection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,6 +73,21 @@ public static boolean isValidURL(String urlStr) { } catch (MalformedURLException e) { return false; } + + } + + public static boolean isURLReachable(String urlStr) { + try { + URL url = new URL(urlStr); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("HEAD"); + int responseCode = connection.getResponseCode(); + return (200 <= responseCode && responseCode <= 399); + } catch (MalformedURLException e) { + return false; + } catch (IOException e) { + return false; + } } public static File multipartToFile(MultipartFile multipart) throws IOException { @@ -95,19 +112,16 @@ public static Long convertSizeToBytes(String sizeStr) { sizeStr = sizeStr.replace(",", ".").replace(" ", ""); try { if (sizeStr.endsWith("KB")) { - return (long) - (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); } else if (sizeStr.endsWith("MB")) { - return (long) - (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) - * 1024 - * 1024); + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) + * 1024 + * 1024); } else if (sizeStr.endsWith("GB")) { - return (long) - (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) - * 1024 - * 1024 - * 1024); + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) + * 1024 + * 1024 + * 1024); } else if (sizeStr.endsWith("B")) { return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1)); } else { @@ -170,13 +184,15 @@ public static List evaluateNFunc(String expression, int maxValue) { int n = 0; while (true) { - // Replace 'n' with the current value of n, correctly handling numbers before 'n' + // Replace 'n' with the current value of n, correctly handling numbers before + // 'n' String sanitizedExpression = insertMultiplicationBeforeN(expression, n); Double result = evaluator.evaluate(sanitizedExpression); // Check if the result is null or not within bounds if (result == null || result <= 0 || result.intValue() > maxValue) { - if (n != 0) break; + if (n != 0) + break; } else { results.add(result.intValue()); } diff --git a/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java b/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java new file mode 100644 index 00000000000..0e63b99f7f1 --- /dev/null +++ b/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java @@ -0,0 +1,41 @@ +package stirling.software.SPDF.controller.api.converters; + +import org.junit.jupiter.api.Test; +import org.springframework.http.ResponseEntity; + +import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; +import static org.junit.jupiter.api.Assertions.*; + +public class ConvertWebsiteToPdfTest { + @Test + public void test_exemption_is_thrown_when_invalid_url_format_provided() { + + String invalid_format_Url = "invalid-url"; + // Arrange + ConvertWebsiteToPDF convertWebsiteToPDF = new ConvertWebsiteToPDF(); + UrlToPdfRequest request = new UrlToPdfRequest(); + request.setUrlInput(invalid_format_Url); + // Act + IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class, () -> { + convertWebsiteToPDF.urlToPdf(request); + }); + // Assert + assertEquals("Invalid URL format provided.", thrown.getMessage()); + } + + @Test + public void test_exemption_is_thrown_when_url_is_not_reachable() { + + String unreachable_Url = "https://www.googleeeexyz.com"; + // Arrange + ConvertWebsiteToPDF convertWebsiteToPDF = new ConvertWebsiteToPDF(); + UrlToPdfRequest request = new UrlToPdfRequest(); + request.setUrlInput(unreachable_Url); + // Act + IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class, () -> { + convertWebsiteToPDF.urlToPdf(request); + }); + // Assert + assertEquals("URL is not reachable, please provide a valid URL.", thrown.getMessage()); + } +} From 4ad716f28174518dc2745ac2982e57bc22ef7ce4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:41:40 +0100 Subject: [PATCH 45/50] Update 3rd Party Licenses (#1648) Signed-off-by: GitHub Action Co-authored-by: GitHub Action --- src/main/resources/static/3rdPartyLicenses.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 44c9bbdbe1c..568c163b43b 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -194,13 +194,13 @@ }, { "moduleName": "com.twelvemonkeys.imageio:imageio-batik", - "moduleVersion": "3.10.1", + "moduleVersion": "3.11.0", "moduleLicense": "The BSD License", "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" }, { "moduleName": "com.twelvemonkeys.imageio:imageio-bmp", - "moduleVersion": "3.10.1", + "moduleVersion": "3.11.0", "moduleLicense": "The BSD License", "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" }, @@ -224,13 +224,13 @@ }, { "moduleName": "com.twelvemonkeys.imageio:imageio-tiff", - "moduleVersion": "3.10.1", + "moduleVersion": "3.11.0", "moduleLicense": "The BSD License", "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" }, { "moduleName": "com.twelvemonkeys.imageio:imageio-webp", - "moduleVersion": "3.10.1", + "moduleVersion": "3.11.0", "moduleLicense": "The BSD License", "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" }, From 908b4091550d9e8ce1d32ad6569892b7a3b60e2e Mon Sep 17 00:00:00 2001 From: albanobattistella <34811668+albanobattistella@users.noreply.github.com> Date: Thu, 8 Aug 2024 23:06:13 +0200 Subject: [PATCH 46/50] Update messages_it_IT.properties (#1649) --- src/main/resources/messages_it_IT.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 56ef2a8374a..0f7e5161778 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -1132,7 +1132,7 @@ error.discordSubmit=Discord: invia post di supporto #remove-image -removeImage.title=Remove image -removeImage.header=Remove image -removeImage.removeImage=Remove image -removeImage.submit=Remove image +removeImage.title=Rimuovere immagine +removeImage.header=Rimuovi immagine +removeImage.removeImage=Rimuovi immagine +removeImage.submit=Rimuovi immagine From 8dbbacb09e458946a13d9acadbaf83e29b210b7a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:29:02 +0100 Subject: [PATCH 47/50] :memo: Update README: Translation Progress Table (#1651) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a56ed1a068..fb79c9108c2 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ Stirling PDF currently supports 38! | Hungarian (Magyar) (hu_HU) | ![75%](https://geps.dev/progress/75) | | Indonesia (Bahasa Indonesia) (id_ID) | ![76%](https://geps.dev/progress/76) | | Irish (Gaeilge) (ga_IE) | ![98%](https://geps.dev/progress/98) | -| Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) | +| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | | Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | | Norwegian (Norsk) (no_NB) | ![97%](https://geps.dev/progress/97) | From 6649ffd7a0c257da4b1a6958a453ae2981eeacb9 Mon Sep 17 00:00:00 2001 From: tkymmm <136296842+tkymmm@users.noreply.github.com> Date: Fri, 9 Aug 2024 15:39:35 +0900 Subject: [PATCH 48/50] Updated Japanese translation (#1654) * Update messages_ja_JP.properties Updated Japanese translation * Update messages_ja_JP.properties Updated Japanese translation --- src/main/resources/messages_ja_JP.properties | 44 ++++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 3ba7ed9ca62..8ef8dcc8df3 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -107,7 +107,7 @@ pipelineOptions.validateButton=検証 ############# # NAVBAR # ############# -navbar.favorite=Favorites +navbar.favorite=お気に入り navbar.darkmode=ダークモード navbar.language=言語 navbar.settings=設定 @@ -192,21 +192,21 @@ adminUserSettings.changeUserRole=ユーザーの役割を変更する adminUserSettings.authenticated=認証済 -database.title=Database Import/Export -database.header=Database Import/Export -database.fileName=File Name -database.creationDate=Creation Date -database.fileSize=File Size -database.deleteBackupFile=Delete Backup File -database.importBackupFile=Import Backup File -database.downloadBackupFile=Download Backup File -database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. -database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. -database.submit=Import Backup -database.importIntoDatabaseSuccessed=Import into database successed -database.fileNotFound=File not Found -database.fileNullOrEmpty=File must not be null or empty -database.failedImportFile=Failed Import File +database.title=データベースのインポート/エクスポート +database.header=データベースのインポート/エクスポート +database.fileName=ファイル名 +database.creationDate=作成日 +database.fileSize=ファイルサイズ +database.deleteBackupFile=バックアップファイルの削除 +database.importBackupFile=バックアップファイルをインポート +database.downloadBackupFile=バックアップファイルをダウンロード +database.info_1=データをインポートする際には、正しい構造を確保することが極めて重要です。不明な点がある場合は、専門家のアドバイスやサポートを受けてください。構造上のエラーは、アプリケーションの誤動作を引き起こす可能性があります。 +database.info_2=ファイル名はアップロード時には関係ありません。アップロード後にbackup_user_yyyyMMddHHmm.sqlという形式にリネームされ、一貫した命名規則が保証されます。 +database.submit=バックアップをインポート +database.importIntoDatabaseSuccessed=データベースへのインポートに成功 +database.fileNotFound=ファイルが見つかりません +database.fileNullOrEmpty=ファイルは null または空であってはなりません +database.failedImportFile=ファイルのインポートに失敗 ############# # HOME-PAGE # @@ -461,8 +461,8 @@ home.BookToPDF.title=PDFを書籍に変換 home.BookToPDF.desc=calibreを使用してPDFを書籍/コミック形式に変換します BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle -home.removeImagePdf.title=Remove image -home.removeImagePdf.desc=Remove image from PDF to reduce file size +home.removeImagePdf.title=画像の削除 +home.removeImagePdf.desc=PDFから画像を削除してファイルサイズを小さくします removeImagePdf.tags=Remove Image,Page operations,Back end,server side @@ -1132,7 +1132,7 @@ error.discordSubmit=Discord - サポート投稿を提出 #remove-image -removeImage.title=Remove image -removeImage.header=Remove image -removeImage.removeImage=Remove image -removeImage.submit=Remove image +removeImage.title=画像の削除 +removeImage.header=画像の削除 +removeImage.removeImage=画像の削除 +removeImage.submit=画像を削除 From f165439d2614f321e897e64829c1e6073e09e28e Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Fri, 9 Aug 2024 08:57:29 +0100 Subject: [PATCH 49/50] Update remove-pages.html #1656 --- src/main/resources/templates/remove-pages.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/remove-pages.html b/src/main/resources/templates/remove-pages.html index 84471ef295c..3fcf7f6bb24 100644 --- a/src/main/resources/templates/remove-pages.html +++ b/src/main/resources/templates/remove-pages.html @@ -21,7 +21,7 @@

-
+
@@ -37,4 +37,4 @@ }); - \ No newline at end of file + From 68c387086ce000d353791a260ea208693a3c9b02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 9 Aug 2024 08:58:31 +0100 Subject: [PATCH 50/50] :memo: Update README: Translation Progress Table (#1655) :memo: Sync README > Made via sync_files.yml Co-authored-by: GitHub Action action@github.com --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb79c9108c2..4e8874547a8 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,7 @@ Stirling PDF currently supports 38! | Indonesia (Bahasa Indonesia) (id_ID) | ![76%](https://geps.dev/progress/76) | | Irish (Gaeilge) (ga_IE) | ![98%](https://geps.dev/progress/98) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) | +| Japanese (日本語) (ja_JP) | ![92%](https://geps.dev/progress/92) | | Korean (한국어) (ko_KR) | ![84%](https://geps.dev/progress/84) | | Norwegian (Norsk) (no_NB) | ![97%](https://geps.dev/progress/97) | | Polish (Polski) (pl_PL) | ![92%](https://geps.dev/progress/92) |