Compare commits

..

No commits in common. "main" and "v0.45.6" have entirely different histories.

14 changed files with 365 additions and 372 deletions

View File

@ -49,7 +49,7 @@
"java.configuration.updateBuildConfiguration": "interactive",
"java.format.enabled": true,
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.google.version": "1.26.0",
"java.format.settings.google.version": "1.25.2",
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
"java.saveActions.cleanup": true,
"java.cleanup.actions": [

View File

@ -186,7 +186,7 @@ jobs:
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/test:pr-${{ needs.check-comment.outputs.pr_number }}
build-args: VERSION_TAG=alpha
build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
platforms: linux/amd64
- name: Set up SSH

View File

@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.6
rev: v0.9.10
hooks:
- id: ruff
args:
@ -22,7 +22,7 @@ repos:
files: \.(html|css|js|py|md)$
exclude: (.vscode|.devcontainer|src/main/resources|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
- repo: https://github.com/gitleaks/gitleaks
rev: v8.24.3
rev: v8.24.0
hooks:
- id: gitleaks
- repo: https://github.com/pre-commit/pre-commit-hooks

View File

@ -10,7 +10,7 @@
"java.configuration.updateBuildConfiguration": "interactive",
"java.format.enabled": true,
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.google.version": "1.26.0",
"java.format.settings.google.version": "1.25.2",
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
// (DE) Aktiviert Kommentare im Java-Format.
// (EN) Enables comments in Java formatting.

View File

@ -141,7 +141,7 @@ Stirling-PDF currently supports 39 languages!
| Persian (فارسی) (fa_IR) | ![88%](https://geps.dev/progress/88) |
| Polish (Polski) (pl_PL) | ![96%](https://geps.dev/progress/96) |
| Portuguese (Português) (pt_PT) | ![91%](https://geps.dev/progress/91) |
| Portuguese Brazilian (Português) (pt_BR) | ![98%](https://geps.dev/progress/98) |
| Portuguese Brazilian (Português) (pt_BR) | ![94%](https://geps.dev/progress/94) |
| Romanian (Română) (ro_RO) | ![75%](https://geps.dev/progress/75) |
| Russian (Русский) (ru_RU) | ![94%](https://geps.dev/progress/94) |
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![60%](https://geps.dev/progress/60) |
@ -153,7 +153,7 @@ Stirling-PDF currently supports 39 languages!
| Thai (ไทย) (th_TH) | ![80%](https://geps.dev/progress/80) |
| Tibetan (བོད་ཡིག་) (zh_BO) | ![89%](https://geps.dev/progress/89) |
| Traditional Chinese (繁體中文) (zh_TW) | ![99%](https://geps.dev/progress/99) |
| Turkish (Türkçe) (tr_TR) | ![98%](https://geps.dev/progress/98) |
| Turkish (Türkçe) (tr_TR) | ![77%](https://geps.dev/progress/77) |
| Ukrainian (Українська) (uk_UA) | ![97%](https://geps.dev/progress/97) |
| Vietnamese (Tiếng Việt) (vi_VN) | ![74%](https://geps.dev/progress/74) |

View File

@ -365,7 +365,7 @@ spotless {
java {
target project.fileTree('src').include('**/*.java')
googleJavaFormat("1.26.0").aosp().reorderImports(false)
googleJavaFormat("1.25.2").aosp().reorderImports(false)
importOrder("java", "javax", "org", "com", "net", "io", "jakarta", "lombok", "me", "stirling")
toggleOffOn()

View File

@ -208,8 +208,7 @@ public class PipelineDirectoryProcessor {
// Check against allowed extensions
boolean isAllowed =
allowAllFiles
|| inputExtensions.contains(
extension.toLowerCase());
|| inputExtensions.contains(extension);
if (!isAllowed) {
log.info(
"Skipping file with unsupported extension: {} ({})",

View File

@ -112,8 +112,7 @@ public class PipelineProcessor {
for (Resource file : outputFiles) {
boolean hasInputFileType = false;
for (String extension : inputFileTypes) {
if ("ALL".equals(extension)
|| file.getFilename().toLowerCase().endsWith(extension)) {
if ("ALL".equals(extension) || file.getFilename().endsWith(extension)) {
hasInputFileType = true;
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("fileInput", file);
@ -167,9 +166,7 @@ public class PipelineProcessor {
.filter(
file ->
finalinputFileTypes.stream()
.anyMatch(
file.getFilename().toLowerCase()
::endsWith))
.anyMatch(file.getFilename()::endsWith))
.toList();
}
// Check if there are matching files

View File

@ -1094,8 +1094,8 @@ imageToPDF.selectText.5=Convertir en PDF séparés
#pdfToImage
pdfToImage.title=PDF en Image
pdfToImage.header=PDF en Image
pdfToImage.title=Image en PDF
pdfToImage.header=Image en PDF
pdfToImage.selectText=Format d'image
pdfToImage.singleOrMultiple=Type de résultat
pdfToImage.single=Une seule grande image

View File

@ -10,9 +10,9 @@ multiPdfPrompt=Selecione os PDFs (2+)
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados:
imgPrompt=Selecione a(s) Imagem(ns)
genericSubmit=Enviar
uploadLimit=Tamanho máximo do arquivo:
uploadLimitExceededSingular=está acima do limite. Tamanho máximo permitido é
uploadLimitExceededPlural=estão acima do limite. Tamanho máximo permitido é
uploadLimit=Maximum file size:
uploadLimitExceededSingular=is too large. Maximum allowed size is
uploadLimitExceededPlural=are too large. Maximum allowed size is
processTimeWarning=Aviso: Este processo pode levar até um minuto, dependendo do tamanho do arquivo
pageOrderPrompt=Ordem de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula ou funções como 2n+1):
pageSelectionPrompt=Seleção de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula como 1,5,6 ou funções como 2n+1):
@ -86,14 +86,14 @@ loading=Carregando...
addToDoc=Adicionar ao Documento
reset=Reiniciar
apply=Aplicar
noFileSelected=Nenhum arquivo selecionado. Por favo, envie um arquivo.
noFileSelected=No file selected. Please upload one.
legal.privacy=Política de Privacidade
legal.terms=Termos e Condições
legal.accessibility=Acessibilidade
legal.cookie=Política de Cookies
legal.impressum=Informações legais
legal.showCookieBanner=Preferências de Cookies
legal.showCookieBanner=Cookie Preferences
###############
# Pipeline #
@ -237,31 +237,31 @@ adminUserSettings.activeUsers=Usuários Ativos:
adminUserSettings.disabledUsers=Usuários Desabilitados:
adminUserSettings.totalUsers=Total de Usuários:
adminUserSettings.lastRequest=Última solicitação
adminUserSettings.usage=Ver Utilização
adminUserSettings.usage=View Usage
endpointStatistics.title=Estatísticas de Endpoints
endpointStatistics.header=Estatísticas de Endpoints
endpointStatistics.title=Endpoint Statistics
endpointStatistics.header=Endpoint Statistics
endpointStatistics.top10=Top 10
endpointStatistics.top20=Top 20
endpointStatistics.all=Todos
endpointStatistics.refresh=Atualizar
endpointStatistics.includeHomepage=Incluir Página Inicial ('/')
endpointStatistics.includeLoginPage=Incluir Página de Login ('/login')
endpointStatistics.totalEndpoints=Total de Endpoints
endpointStatistics.totalVisits=Total de Visitas
endpointStatistics.showing=Mostrando
endpointStatistics.selectedVisits=Visitas Selecionadas
endpointStatistics.all=All
endpointStatistics.refresh=Refresh
endpointStatistics.includeHomepage=Include Homepage ('/')
endpointStatistics.includeLoginPage=Include Login Page ('/login')
endpointStatistics.totalEndpoints=Total Endpoints
endpointStatistics.totalVisits=Total Visits
endpointStatistics.showing=Showing
endpointStatistics.selectedVisits=Selected Visits
endpointStatistics.endpoint=Endpoint
endpointStatistics.visits=Visitas
endpointStatistics.percentage=Percentagem
endpointStatistics.loading=Carregando...
endpointStatistics.failedToLoad=Falha ao carregar dados do Endpoint. Por favor, tente atualizar.
endpointStatistics.visits=Visits
endpointStatistics.percentage=Percentage
endpointStatistics.loading=Loading...
endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing.
endpointStatistics.home=Home
endpointStatistics.login=Login
endpointStatistics.top=Top
endpointStatistics.numberOfVisits=Número de Visitas
endpointStatistics.visitsTooltip=Visitas: {0} ({1}% do total)
endpointStatistics.retry=Tentar novamente
endpointStatistics.numberOfVisits=Number of Visits
endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total)
endpointStatistics.retry=Retry
database.title=Importar/Exportar banco de dados
database.header=Importar/Exportar banco de dados
@ -739,10 +739,10 @@ sanitizePDF.title=Higienizar
sanitizePDF.header=Higienizar
sanitizePDF.selectText.1=Remover scripts de JavaScript.
sanitizePDF.selectText.2=Remover arquivos embutidos.
sanitizePDF.selectText.3=Remover metadados XMP.
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Remover links.
sanitizePDF.selectText.5=Remover fontes.
sanitizePDF.selectText.6=Remover metadados de informações do documento.
sanitizePDF.selectText.6=Remove Document Info Metadata
sanitizePDF.submit=Higienizar PDF
@ -1408,25 +1408,25 @@ validateSignature.cert.bits=bits
####################
# Cookie banner #
####################
cookieBanner.popUp.title=Como nós utilizamos Cookies:
cookieBanner.popUp.description.1=Nós utilizamos cookies e outras tecnologias para melhorar o Stirling PDF, ajude-nos para que possamos desenvolver novas funcionalidades que você irá amar.
cookieBanner.popUp.description.2=Se você não tiver interesse, clicando em "Não, Obrigado" será habilitado apenas cookies essenciais, para o site funcionar sem problemas.
cookieBanner.popUp.acceptAllBtn=Aceito
cookieBanner.popUp.acceptNecessaryBtn=Não, Obrigado
cookieBanner.popUp.showPreferencesBtn=Gerenciar Preferências
cookieBanner.preferencesModal.title=Central de Preferências de Consentimento
cookieBanner.preferencesModal.acceptAllBtn=Aceitar tudo
cookieBanner.preferencesModal.acceptNecessaryBtn=Rejeitar tudo
cookieBanner.preferencesModal.savePreferencesBtn=Salvar preferências
cookieBanner.preferencesModal.closeIconLabel=Fechar janela
cookieBanner.preferencesModal.serviceCounterLabel=Serviço|Serviços
cookieBanner.preferencesModal.subtitle=Uso de Cookies
cookieBanner.preferencesModal.description.1=Stirling PDF utiliza cookies e tecnologias semelhantes para aprimorar sua experiência e entender como nossas ferramentas são utilizadas. Isso nos ajuda a melhorar o desempenho, desenvolver os recursos de seu interesse e fornecer suporte contínuo aos nossos usuários.
cookieBanner.preferencesModal.description.2=O Stirling PDF não pode e nunca irá rastrear ou acessar o conteúdo dos documentos que você manipula.
cookieBanner.preferencesModal.description.3=Sua privacidade e confiança são prioridades para nós.
cookieBanner.preferencesModal.necessary.title.1=Cookies Estritamente Necessários
cookieBanner.preferencesModal.necessary.title.2=Sempre Ativado
cookieBanner.preferencesModal.necessary.description=Estes cookies são essenciais para o bom funcionamento do site. Eles habilitam recursos básicos como definir suas preferências de privacidade, realizar login e preencher formulários e é por isso que não podem ser desativados.
cookieBanner.preferencesModal.analytics.title=Cookies Analíticos
cookieBanner.preferencesModal.analytics.description=Estes cookies nos ajudam a entender como nossas ferramentas estão sendo utilizadas, para que possamos nos concentrar na construção dos recursos que nossa comunidade mais valoriza. Fique tranquilo: o Stirling PDF não pode e nunca rastreará o conteúdo dos documentos com os quais você manipula.
cookieBanner.popUp.title=How we use Cookies
cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.
cookieBanner.popUp.description.2=If youd rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly.
cookieBanner.popUp.acceptAllBtn=Okay
cookieBanner.popUp.acceptNecessaryBtn=No Thanks
cookieBanner.popUp.showPreferencesBtn=Manage preferences
cookieBanner.preferencesModal.title=Consent Preferences Center
cookieBanner.preferencesModal.acceptAllBtn=Accept all
cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all
cookieBanner.preferencesModal.savePreferencesBtn=Save preferences
cookieBanner.preferencesModal.closeIconLabel=Close modal
cookieBanner.preferencesModal.serviceCounterLabel=Service|Services
cookieBanner.preferencesModal.subtitle=Cookie Usage
cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.
cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use.
cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do.
cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies
cookieBanner.preferencesModal.necessary.title.2=Always Enabled
cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they cant be turned off.
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.

View File

@ -10,9 +10,9 @@ multiPdfPrompt=PDFleri seçin (2+)
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
imgPrompt=Resim(leri) seçin
genericSubmit=Gönder
uploadLimit=Maksimum dosya boyutu:
uploadLimitExceededSingular=çok büyük. İzin verilen maksimum boyut:
uploadLimitExceededPlural=çok büyük. İzin verilen maksimum boyut:
uploadLimit=Maximum file size:
uploadLimitExceededSingular=is too large. Maximum allowed size is
uploadLimitExceededPlural=are too large. Maximum allowed size is
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
@ -80,20 +80,20 @@ color=Renk
sponsor=Bağış
info=Bilgi
pro=Pro
page=Sayfa
pages=Sayfalar
loading=Yükleniyor...
addToDoc=Dökümana Ekle
reset=Sıfırla
apply=Uygula
noFileSelected=Hiçbir dosya seçilmedi. Lütfen bir dosya yükleyin.
page=Page
pages=Pages
loading=Loading...
addToDoc=Add to Document
reset=Reset
apply=Apply
noFileSelected=No file selected. Please upload one.
legal.privacy=Gizlilik Politikası
legal.terms=Şartlar ve koşullar
legal.accessibility=Erişilebilirlik
legal.cookie=Çerez Politikası
legal.impressum=Hakkımızda
legal.showCookieBanner=Çerez Tercihleri
legal.showCookieBanner=Cookie Preferences
###############
# Pipeline #
@ -123,21 +123,21 @@ pipelineOptions.validateButton=Doğrula
########################
# ENTERPRISE EDITION #
########################
enterpriseEdition.button=Pro Sürümüne Yükselt
enterpriseEdition.warning=Bu özellik yalnızca Pro kullanıcılarına sunulmaktadır.
enterpriseEdition.yamlAdvert=Stirling PDF Pro, YAML yapılandırma dosyalarını ve diğer SSO özelliklerini destekler.
enterpriseEdition.ssoAdvert=Daha fazla kullanıcı yönetimi özelliği mi arıyorsunuz? Stirling PDF Pro'ya göz atın
enterpriseEdition.button=Upgrade to Pro
enterpriseEdition.warning=This feature is only available to Pro users.
enterpriseEdition.yamlAdvert=Stirling PDF Pro supports YAML configuration files and other SSO features.
enterpriseEdition.ssoAdvert=Looking for more user management features? Check out Stirling PDF Pro
#################
# Analytics #
#################
analytics.title=Stirling PDFi daha iyi hale getirmek ister misiniz?
analytics.paragraph1=Stirling PDF, ürünü geliştirmemize yardımcı olmak için isteğe bağlı analizleri içerir. Kişisel bilgileri veya dosya içeriklerini asla takip etmiyoruz.
analytics.paragraph2=Stirling PDFin büyümesine destek olmak ve kullanıcılarımızı daha iyi anlayabilmemiz için analizleri etkinleştirmeyi düşünebilirsiniz.
analytics.enable=Analizi Etkinleştir
analytics.disable=Analizi Devre Dışı Bırak
analytics.settings=Analiz ayarlarını config/settings.yml dosyasından değiştirebilirsiniz
analytics.title=Do you want make Stirling PDF better?
analytics.paragraph1=Stirling PDF has opt in analytics to help us improve the product. We do not track any personal information or file contents.
analytics.paragraph2=Please consider enabling analytics to help Stirling-PDF grow and to allow us to understand our users better.
analytics.enable=Enable analytics
analytics.disable=Disable analytics
analytics.settings=You can change the settings for analytics in the config/settings.yml file
#############
@ -237,31 +237,31 @@ adminUserSettings.activeUsers=Aktif Kullanıcılar:
adminUserSettings.disabledUsers=Devre Dışı Kullanıcılar:
adminUserSettings.totalUsers=Toplam Kullanıcılar:
adminUserSettings.lastRequest=Son İstek
adminUserSettings.usage=Kullanımı Görüntüle
adminUserSettings.usage=View Usage
endpointStatistics.title=Endpoint İstatistikleri
endpointStatistics.header=Endpoint İstatistikleri
endpointStatistics.top10=En Çok Kullanılan 10
endpointStatistics.top20=En Çok Kullanılan 20
endpointStatistics.all=Hepsi
endpointStatistics.refresh=Yenile
endpointStatistics.includeHomepage=Ana Sayfayı Dahil Et ('/')
endpointStatistics.includeLoginPage=Giriş Sayfasını Dahil Et ('/login')
endpointStatistics.totalEndpoints=Toplam Uç Nokta
endpointStatistics.totalVisits=Toplam Ziyaret
endpointStatistics.showing=Gösteriliyor
endpointStatistics.selectedVisits=Seçilen Ziyaretler
endpointStatistics.title=Endpoint Statistics
endpointStatistics.header=Endpoint Statistics
endpointStatistics.top10=Top 10
endpointStatistics.top20=Top 20
endpointStatistics.all=All
endpointStatistics.refresh=Refresh
endpointStatistics.includeHomepage=Include Homepage ('/')
endpointStatistics.includeLoginPage=Include Login Page ('/login')
endpointStatistics.totalEndpoints=Total Endpoints
endpointStatistics.totalVisits=Total Visits
endpointStatistics.showing=Showing
endpointStatistics.selectedVisits=Selected Visits
endpointStatistics.endpoint=Endpoint
endpointStatistics.visits=Ziyaret
endpointStatistics.percentage=Yüzde
endpointStatistics.loading=Yükleniyor...
endpointStatistics.failedToLoad=Endpoint verileri yüklenemedi. Lütfen sayfayı yenileyin.
endpointStatistics.home=Ana Sayfa
endpointStatistics.login=Giriş
endpointStatistics.top=En Çok
endpointStatistics.numberOfVisits=Ziyaret Sayısı
endpointStatistics.visitsTooltip=Ziyaret: {0} (toplamın %{1}i)
endpointStatistics.retry=Yeniden Dene
endpointStatistics.visits=Visits
endpointStatistics.percentage=Percentage
endpointStatistics.loading=Loading...
endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing.
endpointStatistics.home=Home
endpointStatistics.login=Login
endpointStatistics.top=Top
endpointStatistics.numberOfVisits=Number of Visits
endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total)
endpointStatistics.retry=Retry
database.title=Veri Tabanını İçe/Dışa Aktar
database.header=Veri Tabanını İçe/Dışa Aktar
@ -276,14 +276,14 @@ database.info_1=Verileri içe aktarırken, yapının doğru olduğundan emin olm
database.info_2=Karşıya yüklerken dosya adı önemli değildir. Daha sonra yedekleme_kullanıcısı_yyyyAAggSdd.sql biçiminde yeniden adlandırılacak ve tutarlı bir adlandırma kuralı sağlanacaktır.
database.submit=Yedeklemeyi İçe Aktar
database.importIntoDatabaseSuccessed=Veri tabanına başarıyla aktarıldı
database.backupCreated=Veritabanı yedeklemesi başarılı
database.backupCreated=Database backup successful
database.fileNotFound=Dosya bulunamadı
database.fileNullOrEmpty=Dosya yok veya boş olmamalıdır
database.failedImportFile=Dosya İçe Aktarılamadı
database.notSupported=Bu işlev, mevcut veritabanı bağlantınız için desteklenmiyor.
database.notSupported=This function is not available for your database connection.
session.expired=Oturumunuzun süresi doldu. Lütfen sayfayı yenileyip tekrar deneyin.
session.refreshPage=Sayfayı Yenile
session.expired=Your session has expired. Please refresh the page and try again.
session.refreshPage=Refresh Page
#############
# HOME-PAGE #
@ -296,14 +296,14 @@ home.viewPdf.title=View/Edit PDF
home.viewPdf.desc=Görüntüleyin, açıklama ekleyin, metin veya resim ekleyin
viewPdf.tags=görüntüle,oku,açıklama ekle,metin,görüntü
home.setFavorites=Favorilere Ekle
home.hideFavorites=Favorileri Gizle
home.showFavorites=Favorileri Göster
home.legacyHomepage=Eski ana sayfa
home.newHomePage=Yeni ana sayfamızı deneyin!
home.alphabetical=Alfabetik
home.globalPopularity=Global Popülerlik
home.sortBy=Sıralama ölçütü:
home.setFavorites=Set Favourites
home.hideFavorites=Hide Favourites
home.showFavorites=Show Favourites
home.legacyHomepage=Old homepage
home.newHomePage=Try our new homepage!
home.alphabetical=Alphabetical
home.globalPopularity=Global Popularity
home.sortBy=Sort by:
home.multiTool.title=PDF Çoklu Araç
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
@ -492,9 +492,9 @@ home.MarkdownToPDF.title=Markdown'dan PDF'e
home.MarkdownToPDF.desc=Herhangi bir Markdown dosyasını PDF'e dönüştürür
MarkdownToPDF.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür
home.PDFToMarkdown.title=PDF'den Markdown'a
home.PDFToMarkdown.desc=Herhangi bir PDF'yi Markdown formatına dönüştürür
PDFToMarkdown.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür,md
home.PDFToMarkdown.title=PDF to Markdown
home.PDFToMarkdown.desc=Converts any PDF to Markdown
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
home.getPdfInfo.title=PDF Hakkında TÜM Bilgiyi Al
home.getPdfInfo.desc=PDF'ler hakkında mümkün olan her türlü bilgiyi toplar
@ -519,9 +519,9 @@ home.autoRedact.title=Otomatik Karartma
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
autoRedact.tags=Karart,Gizle,karartma,siyah,markör,gizli
home.redact.title=Manuel Sansürleme
home.redact.desc=Seçilen metinler, çizilen şekiller ve/veya belirli sayfalar üzerinden PDF'yi sansürler
redact.tags=Sansürle,Gizle,karart,karartma,işaretleyici,gizli,manuel
home.redact.title=Manual Redaction
home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s)
redact.tags=Redact,Hide,black out,black,marker,hidden,manual
home.tableExtraxt.title=PDF'den CSV'ye
home.tableExtraxt.desc=PDF'den Tabloları çıkarır ve CSV'ye dönüştürür
@ -551,32 +551,32 @@ home.removeImagePdf.desc=Dosya boyutunu küçültmek için PDF'den resmi kaldır
removeImagePdf.tags=Resmi Kaldır,Sayfa İşlemleri,Arka uç,sunucu tarafı
home.splitPdfByChapters.title=PDF'yi Bölümlere Göre Böl
home.splitPdfByChapters.desc=PDF'yi bölüm yapısına göre birden fazla dosyaya ayırın.
splitPdfByChapters.tags=böl, bölümler, yer imleri, düzenle
home.splitPdfByChapters.title=Split PDF by Chapters
home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure.
splitPdfByChapters.tags=split,chapters,bookmarks,organize
home.validateSignature.title=PDF İmzasını Doğrula
home.validateSignature.desc=PDF belgelerindeki dijital imzaları ve sertifikaları doğrulayın
validateSignature.tags=imza, doğrula, geçerlilik kontrolü, pdf, sertifika, dijital imza, İmzayı Doğrula, Sertifikayı Doğrula
home.validateSignature.title=Validate PDF Signature
home.validateSignature.desc=Verify digital signatures and certificates in PDF documents
validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate
#replace-invert-color
replace-color.title=Renk Değiştir-Tersine Çevir
replace-color.header=PDF Renklerini Değiştir veya Tersine Çevir
home.replaceColorPdf.title=Renkleri Değiştir ve Tersine Çevir
home.replaceColorPdf.desc=PDF'deki metin ve arka plan renklerini değiştirin ve PDF'nin tüm renklerini tersine çevirerek dosya boyutunu azaltın
replaceColorPdf.tags=Renk Değiştir, Sayfa işlemleri, Arka yüz, Sunucu tarafı
replace-color.selectText.1=Renk Değiştir veya Tersine Çevirme Seçenekleri
replace-color.selectText.2=Varsayılan (Yüksek kontrastlı varsayılan renkler)
replace-color.selectText.3=Özel (Kişiselleştirilmiş renkler)
replace-color.selectText.4=Tümü Tersine Çevir (Tüm renkleri tersine çevir)
replace-color.selectText.5=Yüksek kontrastlı renk seçenekleri
replace-color.selectText.6=Siyah arka plan üzerine beyaz metin
replace-color.selectText.7=Beyaz arka plan üzerine siyah metin
replace-color.selectText.8=Siyah arka plan üzerine sarı metin
replace-color.selectText.9=Siyah arka plan üzerine yeşil metin
replace-color.selectText.10=Metin Rengini Seç
replace-color.selectText.11=Arka Plan Rengini Seç
replace-color.submit=Değiştir
replace-color.title=Replace-Invert-Color
replace-color.header=Replace-Invert Color PDF
home.replaceColorPdf.title=Replace and Invert Color
home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size
replaceColorPdf.tags=Replace Color,Page operations,Back end,server side
replace-color.selectText.1=Replace or Invert color Options
replace-color.selectText.2=Default(Default high contrast colors)
replace-color.selectText.3=Custom(Customized colors)
replace-color.selectText.4=Full-Invert(Invert all colors)
replace-color.selectText.5=High contrast color options
replace-color.selectText.6=white text on black background
replace-color.selectText.7=Black text on white background
replace-color.selectText.8=Yellow text on black background
replace-color.selectText.9=Green text on black background
replace-color.selectText.10=Choose text Color
replace-color.selectText.11=Choose background Color
replace-color.submit=Replace
@ -602,11 +602,11 @@ login.oauth2invalidRequest=Geçersiz İstek
login.oauth2AccessDenied=Erişim Reddedildi
login.oauth2InvalidTokenResponse=Geçersiz Belirteç Yanıtı
login.oauth2InvalidIdToken=Geçersiz Kimlik Belirteci
login.relyingPartyRegistrationNotFound=Bağlı taraf kaydı bulunamadı
login.relyingPartyRegistrationNotFound=No relying party registration found
login.userIsDisabled=Kullanıcı devre dışı bırakıldı, şu anda bu kullanıcı adıyla giriş engellendi. Lütfen yöneticiyle iletişime geçin.
login.alreadyLoggedIn=Zaten şu cihazlarda oturum açılmış:
login.alreadyLoggedIn2=Lütfen bu cihazlardan çıkış yaparak tekrar deneyin.
login.toManySessions=Çok fazla aktif oturumunuz var
login.alreadyLoggedIn=You are already logged in to
login.alreadyLoggedIn2=devices. Please log out of the devices and try again.
login.toManySessions=You have too many active sessions
#auto-redact
autoRedact.title=Otomatik Karartma
@ -621,31 +621,31 @@ autoRedact.convertPDFToImageLabel=PDF'i PDF-Görüntü'ye dönüştür (Kutunun
autoRedact.submitButton=Gönder
#redact
redact.title=Manuel Sansürleme
redact.header=Manuel Sansürleme
redact.submit=Sansürle
redact.textBasedRedaction=Metin Tabanlı Sansürleme
redact.pageBasedRedaction=Sayfa Tabanlı Sansürleme
redact.convertPDFToImageLabel=PDF'yi Görsel PDF'ye Dönüştür (Kutunun arkasındaki metni kaldırmak için kullanılır)
redact.pageRedactionNumbers.title=Sayfalar
redact.pageRedactionNumbers.placeholder=(örneğin: 1,2,8 veya 4,7,12-16 ya da 2n-1)
redact.redactionColor.title=Sansür Rengi
redact.export=Dışa Aktar
redact.upload=Yükle
redact.boxRedaction=Kutu Çizerek Sansürleme
redact.zoom=Yakınlaştırma
redact.zoomIn=Yakınlaştır
redact.zoomOut=Uzaklaştır
redact.nextPage=Sonraki Sayfa
redact.previousPage=Önceki Sayfa
redact.toggleSidebar=Kenar Çubuğunu Aç/Kapat
redact.showThumbnails=Küçük Resimleri Göster
redact.showDocumentOutline=Belge Anahatlarını Göster (tüm öğeleri genişletmek/daraltmak için çift tıklayın)
redact.showAttatchments=Ekleri Göster
redact.showLayers=Katmanları Göster (tüm katmanları varsayılana döndürmek için çift tıklayın)
redact.colourPicker=Renk Seçici
redact.findCurrentOutlineItem=Geçerli Anahat Öğesini Bul
redact.applyChanges=Değişiklikleri Uygula
redact.title=Manual Redaction
redact.header=Manual Redaction
redact.submit=Redact
redact.textBasedRedaction=Text based Redaction
redact.pageBasedRedaction=Page-based Redaction
redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box)
redact.pageRedactionNumbers.title=Pages
redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
redact.redactionColor.title=Redaction Color
redact.export=Export
redact.upload=Upload
redact.boxRedaction=Box draw redaction
redact.zoom=Zoom
redact.zoomIn=Zoom in
redact.zoomOut=Zoom out
redact.nextPage=Next Page
redact.previousPage=Previous Page
redact.toggleSidebar=Toggle Sidebar
redact.showThumbnails=Show Thumbnails
redact.showDocumentOutline=Show Document Outline (double-click to expand/collapse all items)
redact.showAttatchments=Show Attachments
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
redact.colourPicker=Colour Picker
redact.findCurrentOutlineItem=Find current outline item
redact.applyChanges=Apply Changes
#showJS
showJS.title=Javascript'i Göster
@ -739,10 +739,10 @@ sanitizePDF.title=PDF'i Temizle
sanitizePDF.header=PDF dosyasını temizle
sanitizePDF.selectText.1=JavaScript işlemlerini kaldır
sanitizePDF.selectText.2=Gömülü dosyaları kaldır
sanitizePDF.selectText.3=XMP meta verisini kaldır
sanitizePDF.selectText.3=Remove XMP metadata
sanitizePDF.selectText.4=Linkleri kaldır
sanitizePDF.selectText.5=Fontları kaldır
sanitizePDF.selectText.6=Belge Bilgisi Meta Verisini Kaldır
sanitizePDF.selectText.6=Remove Document Info Metadata
sanitizePDF.submit=PDF'i Temizle
@ -821,7 +821,7 @@ scalePages.submit=Gönder
certSign.title=Sertifika İmzalama
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
certSign.jksNote=Not: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
certSign.jksNote=Note: Sertifika türünüz aşağıda listelenmemişse, lütfen keytool komut satırı aracını kullanarak sertifikanızı bir Java Keystore (.jks) dosyasına dönüştürün. Ardından, aşağıdaki .jks dosyası seçeneğini seçin.
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
@ -867,9 +867,9 @@ compare.highlightColor.2=Vurgu Rengi 2:
compare.document.1=Belge 1
compare.document.2=Belge 2
compare.submit=Karşılaştır
compare.complex.message=Verilen belgelerden biri veya her ikisi büyük dosyalar olduğundan karşılaştırma doğruluğu azalabilir
compare.large.file.message=Verilen belgelerden biri veya her ikisi işlenemeyecek kadar büyük
compare.no.text.message=Seçilen PDF'lerden biri veya her ikisinde metin içeriği yok. Lütfen karşılaştırma için metin içeren PDF'ler seçin.
compare.complex.message=One or both of the provided documents are large files, accuracy of comparison may be reduced
compare.large.file.message=One or Both of the provided documents are too large to process
compare.no.text.message=One or both of the selected PDFs have no text content. Please choose PDFs with text for comparison.
#sign
sign.title=İmzala
@ -879,20 +879,20 @@ sign.draw=İmza Çiz
sign.text=Metin Girişi
sign.clear=Temizle
sign.add=Ekle
sign.saved=Kaydedilmiş İmzalar
sign.save=İmzayı Kaydet
sign.personalSigs=Kişisel İmzalar
sign.sharedSigs=Paylaşılan İmzalar
sign.noSavedSigs=Kayıtlı imza bulunamadı
sign.addToAll=Tüm sayfalara ekle
sign.delete=Sil
sign.first=İlk sayfa
sign.last=Son sayfa
sign.next=Sonraki sayfa
sign.previous=Önceki sayfa
sign.maintainRatio=Oranı korumayı değiştir
sign.undo=Geri Al
sign.redo=Yinele
sign.saved=Saved Signatures
sign.save=Save Signature
sign.personalSigs=Personal Signatures
sign.sharedSigs=Shared Signatures
sign.noSavedSigs=No saved signatures found
sign.addToAll=Add to all pages
sign.delete=Delete
sign.first=First page
sign.last=Last page
sign.next=Next page
sign.previous=Previous page
sign.maintainRatio=Toggle maintain aspect ratio
sign.undo=Undo
sign.redo=Redo
#repair
repair.title=Onar
@ -1003,7 +1003,7 @@ pdfOrganiser.mode.7=İlk Önce Kaldır
pdfOrganiser.mode.8=Sonuncuyu Kaldır
pdfOrganiser.mode.9=İlk ve Sonu Kaldır
pdfOrganiser.mode.10=Tek-Çift Birleştirme
pdfOrganiser.mode.11=Tüm sayfaları çoğalt
pdfOrganiser.mode.11=Duplicate all pages
pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
@ -1011,39 +1011,39 @@ pdfOrganiser.placeholder=(örn. 1,3,2 veya 4-8,2,10-12 veya 2n-1)
multiTool.title=PDF Çoklu Araç
multiTool.header=PDF Çoklu Araç
multiTool.uploadPrompts=Dosya Adı
multiTool.selectAll=Tümünü Seç
multiTool.deselectAll=Seçimi Kaldır
multiTool.selectPages=Sayfa Seç
multiTool.selectedPages=Seçilen Sayfalar
multiTool.page=Sayfa
multiTool.deleteSelected=Seçilenleri Sil
multiTool.downloadAll=Dışa Aktar
multiTool.downloadSelected=Seçilenleri Dışa Aktar
multiTool.selectAll=Select All
multiTool.deselectAll=Deselect All
multiTool.selectPages=Page Select
multiTool.selectedPages=Selected Pages
multiTool.page=Page
multiTool.deleteSelected=Delete Selected
multiTool.downloadAll=Export
multiTool.downloadSelected=Export Selected
multiTool.insertPageBreak=Sayfa Sonu Ekle
multiTool.addFile=Dosya Ekle
multiTool.rotateLeft=Sola Döndür
multiTool.rotateRight=Sağa Döndür
multiTool.split=Böl
multiTool.moveLeft=Sola Taşı
multiTool.moveRight=Sağa Taşı
multiTool.delete=Sil
multiTool.dragDropMessage=Sayfa(lar) Seçildi
multiTool.undo=Geri Al
multiTool.redo=Yinele
multiTool.insertPageBreak=Insert Page Break
multiTool.addFile=Add File
multiTool.rotateLeft=Rotate Left
multiTool.rotateRight=Rotate Right
multiTool.split=Split
multiTool.moveLeft=Move Left
multiTool.moveRight=Move Right
multiTool.delete=Delete
multiTool.dragDropMessage=Page(s) Selected
multiTool.undo=Undo
multiTool.redo=Redo
#decrypt
decrypt.passwordPrompt=Bu dosya parola korumalı. Lütfen parolayı girin:
decrypt.cancelled=PDF için işlem iptal edildi: {0}
decrypt.noPassword=Şifrelenmiş PDF için parola girilmedi: {0}
decrypt.invalidPassword=Lütfen doğru parolayla tekrar deneyin.
decrypt.invalidPasswordHeader=PDF için yanlış parola veya desteklenmeyen şifreleme: {0}
decrypt.unexpectedError=Dosya işlenirken bir hata oluştu. Lütfen tekrar deneyin.
decrypt.serverError=Şifre çözme sırasında sunucu hatası: {0}
decrypt.success=Dosyanın şifresi başarıyla çözüldü.
decrypt.passwordPrompt=This file is password-protected. Please enter the password:
decrypt.cancelled=Operation cancelled for PDF: {0}
decrypt.noPassword=No password provided for encrypted PDF: {0}
decrypt.invalidPassword=Please try again with the correct password.
decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0}
decrypt.unexpectedError=There was an error processing the file. Please try again.
decrypt.serverError=Server error while decrypting: {0}
decrypt.success=File decrypted successfully.
#multiTool-advert
multiTool-advert.message=Bu özellik <a href="{0}">çoklu araçlar sayfamızda</a> da mevcuttur. Sayfa sayfa gelişmiş arayüz ve ek özellikler için göz atın!
multiTool-advert.message=This feature is also available in our <a href="{0}">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features!
#view pdf
viewPdf.title=View/Edit PDF
@ -1306,21 +1306,21 @@ licenses.license=Lisans
survey.nav=Anket
survey.title=Stirling-PDF Anketi
survey.description=Stirling-PDF'te izleme yok, bu yüzden Stirling-PDF'i iyileştirmek için kullanıcılarımızdan geri bildirim almak istiyoruz!
survey.changes=Stirling-PDF son ankete göre değişti! Daha fazla bilgi için blog yazımıza göz atın:
survey.changes2=Bu değişikliklerle birlikte ücretli kurumsal destek ve fon alıyoruz
survey.changes=Stirling-PDF has changed since the last survey! To find out more please check our blog post here:
survey.changes2=With these changes we are getting paid business support and funding
survey.please=Lütfen anketimize katılmayı düşünün!
survey.disabled=(Anket açılır penceresi sonraki güncellemelerde devre dışı bırakılacak ancak sayfanın alt kısmında yer alacaktır)
survey.button=Ankete Katıl
survey.dontShowAgain=Tekrar gösterme
survey.meeting.1=Eğer Stirling PDF'i iş yerinizde kullanıyorsanız, sizinle görüşmek isteriz. 15 dakikalık bir kullanıcı keşif oturumu karşılığında teknik destek sunuyoruz.
survey.meeting.2=Bu fırsat sayesinde:
survey.meeting.3=Kurulum, entegrasyonlar veya sorun giderme konularında yardım alabilirsiniz
survey.meeting.4=Performans, uç durumlar ve eksik özellikler hakkında doğrudan geri bildirim sağlayabilirsiniz
survey.meeting.5=Stirling PDFi gerçek dünya kurumsal kullanımı için daha iyi hale getirmemize yardımcı olabilirsiniz
survey.meeting.6=İlgileniyorsanız, ekibimizden doğrudan zaman ayırabilirsiniz. (Yalnızca İngilizce)
survey.meeting.7=Kullanım senaryolarınızı dinlemeyi ve Stirling PDFi daha da iyi hale getirmeyi sabırsızlıkla bekliyoruz!
survey.meeting.notInterested=Kurumsal kullanıcı değilseniz ve/veya görüşmeye ilgi duymuyorsanız
survey.meeting.button=Görüşme Planla
survey.meeting.1=If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session.
survey.meeting.2=This is a chance to:
survey.meeting.3=Get help with deployment, integrations, or troubleshooting
survey.meeting.4=Provide direct feedback on performance, edge cases, and feature gaps
survey.meeting.5=Help us refine Stirling PDF for real-world enterprise use
survey.meeting.6=If you're interested, you can book time with our team directly. (English speaking only)
survey.meeting.7=Looking forward to digging into your use cases and making Stirling PDF even better!
survey.meeting.notInterested=Not a business and/or interested in a meeting?
survey.meeting.button=Book meeting
#error
error.sorry=Sorun için özür dileriz!
@ -1343,90 +1343,90 @@ removeImage.removeImage=Resmi kaldır
removeImage.submit=Resmi kaldır
splitByChapters.title=PDF'yi Bölümlere Ayır
splitByChapters.header=PDF'yi Bölümlere Ayır
splitByChapters.bookmarkLevel=Yer imi Seviyesi
splitByChapters.includeMetadata=Meta Veriyi Dahil Et
splitByChapters.allowDuplicates=Yinelenen Yer İmlerine İzin Ver
splitByChapters.desc.1=Bu araç, bir PDF dosyasını bölüm yapısına göre birden fazla PDF'ye böler.
splitByChapters.desc.2=Bölme için kullanılacak yer imi seviyesini seçin (0 en üst seviye, 1 ikinci seviye vb.).
splitByChapters.desc.3=Meta Veriyi Dahil Et: İşaretlenirse, orijinal PDF'nin meta verisi her bir bölünmüş PDF'ye dahil edilir.
splitByChapters.desc.4=Yinelenen Yer İmlerine İzin Ver: İşaretlenirse, aynı sayfadaki birden fazla yer imi ayrı PDF'ler oluşturabilir.
splitByChapters.submit=PDF'yi Ayır
splitByChapters.title=Split PDF by Chapters
splitByChapters.header=Split PDF by Chapters
splitByChapters.bookmarkLevel=Bookmark Level
splitByChapters.includeMetadata=Include Metadata
splitByChapters.allowDuplicates=Allow Duplicates
splitByChapters.desc.1=This tool splits a PDF file into multiple PDFs based on its chapter structure.
splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitting (0 for top-level, 1 for second-level, etc.).
splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF.
splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs.
splitByChapters.submit=Split PDF
#File Chooser
fileChooser.click=Seç
fileChooser.or=veya
fileChooser.dragAndDrop=Sürükle & Bırak
fileChooser.dragAndDropPDF=PDF dosyasını Sürükle & Bırak
fileChooser.dragAndDropImage=Görsel dosyasını Sürükle & Bırak
fileChooser.hoveredDragAndDrop=Dosya(lar)ı buraya sürükleyip bırakın
fileChooser.extractPDF=PDF Çıkarılıyor...
fileChooser.click=Click
fileChooser.or=or
fileChooser.dragAndDrop=Drag & Drop
fileChooser.dragAndDropPDF=Drag & Drop PDF file
fileChooser.dragAndDropImage=Drag & Drop Image file
fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here
fileChooser.extractPDF=Extracting...
#release notes
releases.footer=Sürümler
releases.title=Sürüm Notları
releases.header=Sürüm Notları
releases.current.version=Mevcut Sürüm
releases.note=Sürüm notları yalnızca İngilizce dilinde mevcuttur
releases.footer=Releases
releases.title=Release Notes
releases.header=Release Notes
releases.current.version=Current Release
releases.note=Release notes are only available in English
#Validate Signature
validateSignature.title=PDF İmzalarını Doğrula
validateSignature.header=Dijital İmzaları Doğrula
validateSignature.selectPDF=İmzalanmış PDF dosyasını seçin
validateSignature.submit=İmzaları Doğrula
validateSignature.results=Doğrulama Sonuçları
validateSignature.status=Durum
validateSignature.signer=İmzalayan
validateSignature.date=Tarih
validateSignature.reason=Gerekçe
validateSignature.location=Konum
validateSignature.noSignatures=Bu belgede dijital imza bulunamadı
validateSignature.status.valid=Geçerli
validateSignature.status.invalid=Geçersiz
validateSignature.chain.invalid=Sertifika zinciri doğrulaması başarısız - imzalayanın kimliği doğrulanamıyor
validateSignature.trust.invalid=Sertifika güvenilir mağazada değil - kaynak doğrulanamıyor
validateSignature.cert.expired=Sertifika süresi dolmuş
validateSignature.cert.revoked=Sertifika iptal edilmiş
validateSignature.signature.info=İmza Bilgisi
validateSignature.signature=İmza
validateSignature.signature.mathValid=İmza matematiksel olarak geçerli, ANCAK:
validateSignature.selectCustomCert=Özel Sertifika Dosyası X.509 (İsteğe Bağlı)
validateSignature.cert.info=Sertifika Detayları
validateSignature.cert.issuer=Veren
validateSignature.cert.subject=Konu
validateSignature.cert.serialNumber=Seri Numarası
validateSignature.cert.validFrom=Geçerlilik Başlangıcı
validateSignature.cert.validUntil=Geçerlilik Bitişi
validateSignature.cert.algorithm=Algoritma
validateSignature.cert.keySize=Anahtar Boyutu
validateSignature.cert.version=Sürüm
validateSignature.cert.keyUsage=Anahtar Kullanımı
validateSignature.cert.selfSigned=Kendi Kendine İmzalı
validateSignature.title=Validate PDF Signatures
validateSignature.header=Validate Digital Signatures
validateSignature.selectPDF=Select signed PDF file
validateSignature.submit=Validate Signatures
validateSignature.results=Validation Results
validateSignature.status=Status
validateSignature.signer=Signer
validateSignature.date=Date
validateSignature.reason=Reason
validateSignature.location=Location
validateSignature.noSignatures=No digital signatures found in this document
validateSignature.status.valid=Valid
validateSignature.status.invalid=Invalid
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified
validateSignature.cert.expired=Certificate has expired
validateSignature.cert.revoked=Certificate has been revoked
validateSignature.signature.info=Signature Information
validateSignature.signature=Signature
validateSignature.signature.mathValid=Signature is mathematically valid BUT:
validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional)
validateSignature.cert.info=Certificate Details
validateSignature.cert.issuer=Issuer
validateSignature.cert.subject=Subject
validateSignature.cert.serialNumber=Serial Number
validateSignature.cert.validFrom=Valid From
validateSignature.cert.validUntil=Valid Until
validateSignature.cert.algorithm=Algorithm
validateSignature.cert.keySize=Key Size
validateSignature.cert.version=Version
validateSignature.cert.keyUsage=Key Usage
validateSignature.cert.selfSigned=Self-Signed
validateSignature.cert.bits=bits
####################
# Cookie banner #
####################
cookieBanner.popUp.title=Çerezleri Nasıl Kullanıyoruz
cookieBanner.popUp.description.1=Stirling PDFyi sizin için daha iyi çalıştırmak için çerezler ve diğer teknolojileri kullanıyoruz — araçlarımızı geliştirmemize ve seveceğiniz özellikler oluşturmamıza yardımcı oluyorlar.
cookieBanner.popUp.description.2=İstemiyorsanız, Hayır Teşekkürler butonuna tıklayarak yalnızca temel, gerekli çerezleri etkinleştirebilirsiniz.
cookieBanner.popUp.acceptAllBtn=Tamam
cookieBanner.popUp.acceptNecessaryBtn=Hayır Teşekkürler
cookieBanner.popUp.showPreferencesBtn=Tercihleri Yönet
cookieBanner.preferencesModal.title=Onay Tercih Merkezi
cookieBanner.preferencesModal.acceptAllBtn=Tümünü Kabul Et
cookieBanner.preferencesModal.acceptNecessaryBtn=Tümünü Reddet
cookieBanner.preferencesModal.savePreferencesBtn=Tercihleri Kaydet
cookieBanner.preferencesModal.closeIconLabel=Kapat
cookieBanner.preferencesModal.serviceCounterLabel=Hizmet|Hizmetler
cookieBanner.preferencesModal.subtitle=Çerez Kullanımı
cookieBanner.preferencesModal.description.1=Stirling PDF, deneyiminizi geliştirmek ve araçlarımızın nasıl kullanıldığını anlamak için çerezler ve benzeri teknolojiler kullanır. Bu, performansı iyileştirmemize, önemsediğiniz özellikleri geliştirmemize ve kullanıcılarımıza sürekli destek sağlamamıza yardımcı olur.
cookieBanner.preferencesModal.description.2=Stirling PDF, kullandığınız belgelerin içeriğini asla takip edemez veya erişemez.
cookieBanner.preferencesModal.description.3=Gizliliğiniz ve güveniniz bizim için en önemli şeydir.
cookieBanner.preferencesModal.necessary.title.1=Kesinlikle Gerekli Çerezler
cookieBanner.preferencesModal.necessary.title.2=Her Zaman Etkin
cookieBanner.preferencesModal.necessary.description=Bu çerezler, web sitesinin düzgün çalışabilmesi için gereklidir. Gizlilik tercihlerinizi ayarlama, giriş yapma ve form doldurma gibi temel işlevleri mümkün kılarlar — bu nedenle devre dışı bırakılamazlar.
cookieBanner.preferencesModal.analytics.title=Analitik
cookieBanner.preferencesModal.analytics.description=Bu çerezler, araçlarımızın nasıl kullanıldığını anlamamıza yardımcı olur, böylece topluluğumuzun en çok değer verdiği özellikleri geliştirmeye odaklanabiliriz. İçiniz rahat olsun — Stirling PDF, belgelerinizin içeriğini asla takip etmez ve etmeyecektir.
cookieBanner.popUp.title=How we use Cookies
cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.
cookieBanner.popUp.description.2=If youd rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly.
cookieBanner.popUp.acceptAllBtn=Okay
cookieBanner.popUp.acceptNecessaryBtn=No Thanks
cookieBanner.popUp.showPreferencesBtn=Manage preferences
cookieBanner.preferencesModal.title=Consent Preferences Center
cookieBanner.preferencesModal.acceptAllBtn=Accept all
cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all
cookieBanner.preferencesModal.savePreferencesBtn=Save preferences
cookieBanner.preferencesModal.closeIconLabel=Close modal
cookieBanner.preferencesModal.serviceCounterLabel=Service|Services
cookieBanner.preferencesModal.subtitle=Cookie Usage
cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.
cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use.
cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do.
cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies
cookieBanner.preferencesModal.necessary.title.2=Always Enabled
cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they cant be turned off.
cookieBanner.preferencesModal.analytics.title=Analytics
cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with.

View File

@ -10,9 +10,9 @@ multiPdfPrompt=選擇多個 PDF 檔案
multiPdfDropPrompt=選擇(或拖放)所有需要的 PDF 檔案
imgPrompt=選擇圖片
genericSubmit=送出
uploadLimit=檔案大小上限:
uploadLimitExceededSingular=太大。允許的最大檔案大小為
uploadLimitExceededPlural=太大。允許的最大檔案大小為
uploadLimit=Maximum file size:
uploadLimitExceededSingular=is too large. Maximum allowed size is
uploadLimitExceededPlural=are too large. Maximum allowed size is
processTimeWarning=警告:此過程可能長達一分鐘,具體取決於檔案大小
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1
pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函式的清單):
@ -237,30 +237,30 @@ adminUserSettings.activeUsers=使用中的使用者:
adminUserSettings.disabledUsers=已停用的使用者:
adminUserSettings.totalUsers=使用者總數:
adminUserSettings.lastRequest=最後請求時間
adminUserSettings.usage=檢視使用情況
adminUserSettings.usage=查看使用方式
endpointStatistics.title=端點統計
endpointStatistics.header=端點統計
endpointStatistics.top10=前 10
endpointStatistics.top20=前 20
endpointStatistics.all=全部
endpointStatistics.refresh=重新整理
endpointStatistics.includeHomepage=包含頁 ('/')
endpointStatistics.title=端點統計資料
endpointStatistics.header=端點統計資料
endpointStatistics.top10=前 10
endpointStatistics.top20=前 20
endpointStatistics.all=選擇全部
endpointStatistics.refresh=重新載入
endpointStatistics.includeHomepage=包含頁 ('/')
endpointStatistics.includeLoginPage=包含登入頁面 ('/login')
endpointStatistics.totalEndpoints=端點總數
endpointStatistics.totalVisits=造訪次數
endpointStatistics.totalEndpoints=全部端點
endpointStatistics.totalVisits=瀏覽次數
endpointStatistics.showing=顯示中
endpointStatistics.selectedVisits=選取的造訪次數
endpointStatistics.selectedVisits=所選瀏覽次數
endpointStatistics.endpoint=端點
endpointStatistics.visits=訪次數
endpointStatistics.visits=次數
endpointStatistics.percentage=百分比
endpointStatistics.loading=載入中...
endpointStatistics.failedToLoad=無法載入端點資料。請嘗試重新整理
endpointStatistics.home=
endpointStatistics.failedToLoad=無法載入端點。請嘗試重新載入
endpointStatistics.home=
endpointStatistics.login=登入
endpointStatistics.top=
endpointStatistics.numberOfVisits=造訪次數
endpointStatistics.visitsTooltip=造訪次數:{0}(總數的 {1}%
endpointStatistics.top=最多瀏覽
endpointStatistics.numberOfVisits=瀏覽次數
endpointStatistics.visitsTooltip=瀏覽次數: {0} ({1}% of total)
endpointStatistics.retry=重試
database.title=資料庫匯入/匯出
@ -891,7 +891,7 @@ sign.last=最後一頁
sign.next=下一頁
sign.previous=上一頁
sign.maintainRatio=切換維持長寬比
sign.undo=
sign.undo=
sign.redo=重做
#repair
@ -1319,7 +1319,7 @@ survey.meeting.4=針對效能、特殊案例和缺少的功能提供直接意見
survey.meeting.5=協助我們改良 Stirling PDF 以符合實際企業使用需求
survey.meeting.6=如果您有興趣,可以直接預約時間與我們的團隊交流。(僅提供英語服務)
survey.meeting.7=期待深入了解您的使用情境,讓 Stirling PDF 變得更好!
survey.meeting.notInterested=不是企業使用者或對會議不感興趣?
survey.meeting.notInterested=不是企業用戶或對會議不感興趣?
survey.meeting.button=預約會議
#error
@ -1418,11 +1418,11 @@ cookieBanner.preferencesModal.title=喜好設定中心
cookieBanner.preferencesModal.acceptAllBtn=全部接受
cookieBanner.preferencesModal.acceptNecessaryBtn=全部拒絕
cookieBanner.preferencesModal.savePreferencesBtn=儲存設定
cookieBanner.preferencesModal.closeIconLabel=關閉視窗
cookieBanner.preferencesModal.closeIconLabel=Close modal
cookieBanner.preferencesModal.serviceCounterLabel=服務|服務
cookieBanner.preferencesModal.subtitle=Cookies 的用途
cookieBanner.preferencesModal.description.1=Stirling PDF 使用 Cookies 與其他相似技術去改善您的體驗和分析您如何使用我們的工具。這有助於我們改善效能、開發您注目的功能,和提供使用者協助。
cookieBanner.preferencesModal.description.2=Stirling PDF 不能——且永遠不會——追蹤或存取您的文件。
cookieBanner.preferencesModal.description.2=Stirling PDF 不會——且永遠——追蹤或存取您的文件。
cookieBanner.preferencesModal.description.3=您的隱私和信任是我們的核心理念。
cookieBanner.preferencesModal.necessary.title.1=必要的 Cookies
cookieBanner.preferencesModal.necessary.title.2=永遠開啟

View File

@ -544,17 +544,21 @@ const DraggableUtils = {
angle: rotateAngle, // Store rotation
};
const pageRotation = page.getRotation();
// Auxiliary variables
let widthAdjusted = page.getWidth();
let heightAdjusted = page.getHeight();
const rotation = page.getRotation();
// Normalize page rotation angle
let normalizedAngle = pageRotation.angle % 360;
let normalizedAngle = rotation.angle % 360;
if (normalizedAngle < 0) {
normalizedAngle += 360;
}
// Determine the viewed page dimensions based on the normalized rotation angle
let viewedPageWidth = (normalizedAngle === 90 || normalizedAngle === 270) ? page.getHeight() : page.getWidth();
let viewedPageHeight = (normalizedAngle === 90 || normalizedAngle === 270) ? page.getWidth() : page.getHeight();
// Adjust page dimensions for rotated pages
if (normalizedAngle === 90 || normalizedAngle === 270) {
[widthAdjusted, heightAdjusted] = [heightAdjusted, widthAdjusted];
}
const draggablePositionRelative = {
x: draggablePositionPixels.x / offsetWidth,
@ -565,58 +569,51 @@ const DraggableUtils = {
};
const draggablePositionPdf = {
x: draggablePositionRelative.x * viewedPageWidth,
y: draggablePositionRelative.y * viewedPageHeight,
width: draggablePositionRelative.width * viewedPageWidth,
height: draggablePositionRelative.height * viewedPageHeight,
x: draggablePositionRelative.x * widthAdjusted,
y: draggablePositionRelative.y * heightAdjusted,
width: draggablePositionRelative.width * widthAdjusted,
height: draggablePositionRelative.height * heightAdjusted,
};
// Calculate position based on normalized page rotation
let x = draggablePositionPdf.x;
let y = viewedPageHeight - draggablePositionPdf.y - draggablePositionPdf.height;
let y = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height;
let originx = x + draggablePositionPdf.width / 2;
let originy = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height / 2;
if (normalizedAngle === 90) {
x = draggablePositionPdf.y;
x = draggablePositionPdf.y + draggablePositionPdf.height;
y = draggablePositionPdf.x;
} else if (normalizedAngle === 180) {
x = viewedPageWidth - draggablePositionPdf.x - draggablePositionPdf.width;
y = draggablePositionPdf.y;
x = widthAdjusted - draggablePositionPdf.x;
y = draggablePositionPdf.y + draggablePositionPdf.height;
} else if (normalizedAngle === 270) {
x = viewedPageHeight - draggablePositionPdf.y - draggablePositionPdf.height;
y = viewedPageWidth - draggablePositionPdf.x - draggablePositionPdf.width;
x = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height;
y = widthAdjusted - draggablePositionPdf.x;
}
// Convert rotation angle to radians
let pageRotationInRadians = PDFLib.degreesToRadians(normalizedAngle);
const rotationInRadians = pageRotationInRadians - draggablePositionPixels.angle;
// Calculate the center of the image
const imageCenterX = x + draggablePositionPdf.width / 2;
const imageCenterY = y + draggablePositionPdf.height / 2;
// Apply transformations to rotate the image about its center
// let angle = draggablePositionPixels.angle % 360;
// if (angle < 0) angle += 360; // Normalize to positive angle
const radians = -draggablePositionPixels.angle; // Convert angle to radians
page.pushOperators(
PDFLib.pushGraphicsState(),
PDFLib.concatTransformationMatrix(1, 0, 0, 1, imageCenterX, imageCenterY), // Translate to center
PDFLib.concatTransformationMatrix(1, 0, 0, 1, originx, originy),
PDFLib.concatTransformationMatrix(
Math.cos(rotationInRadians),
Math.sin(rotationInRadians),
-Math.sin(rotationInRadians),
Math.cos(rotationInRadians),
Math.cos(radians),
Math.sin(radians),
-Math.sin(radians),
Math.cos(radians),
0,
0
), // Rotate
PDFLib.concatTransformationMatrix(1, 0, 0, 1, -imageCenterX, -imageCenterY) // Translate back
),
PDFLib.concatTransformationMatrix(1, 0, 0, 1, -1 * originx, -1 * originy)
);
page.drawImage(pdfImageObject, {
x: x,
y: y,
width: draggablePositionPdf.width,
height: draggablePositionPdf.height,
});
// Restore the graphics state
page.pushOperators(PDFLib.popGraphicsState());
}
}

View File

@ -170,7 +170,7 @@ function setupFileInput(chooser) {
inputContainer.querySelector('#fileInputText').innerHTML = window.fileInput.loading;
async function checkZipFile() {
const hasZipFiles = allFiles.some(file => ((typeof(file.type) != undefined) && zipTypes.includes(file.type)));
const hasZipFiles = allFiles.some(file => file.type && zipTypes.includes(file.type));
// Only change to extractPDF message if we actually have zip files
if (hasZipFiles) {