mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-08-04 05:17:24 +02:00
Compare commits
No commits in common. "master" and "v6.0.227" have entirely different histories.
27
.gitattributes
vendored
27
.gitattributes
vendored
@ -1,24 +1,23 @@
|
||||
# Force Unix line endings for most file formats (except binary files)
|
||||
*.config text eol=lf
|
||||
*.css text eol=lf
|
||||
*.example text eol=lf
|
||||
*.ftl text eol=lf
|
||||
*.html text eol=lf
|
||||
*.js text eol=lf
|
||||
*.json text eol=lf
|
||||
*.link text eol=lf
|
||||
*.jsm text eol=lf
|
||||
*.css text eol=lf
|
||||
*.html text eol=lf
|
||||
*.md text eol=lf
|
||||
*.mjs text eol=lf
|
||||
*.mts text eol=lf
|
||||
*.njk text eol=lf
|
||||
*.py text eol=lf
|
||||
*.svg text eol=lf
|
||||
*.ts text eol=lf
|
||||
*.txt text eol=lf
|
||||
*.ftl text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.json text eol=lf
|
||||
*.config text eol=lf
|
||||
*.inc text eol=lf
|
||||
*.manifest text eol=lf
|
||||
*.rdf text eol=lf
|
||||
*.jade text eol=lf
|
||||
*.coffee text eol=lf
|
||||
|
||||
# PDF files shall not modify CRLF line endings
|
||||
*.pdf -crlf
|
||||
|
||||
# Linguist language overrides
|
||||
*.js linguist-language=JavaScript
|
||||
*.jsm linguist-language=JavaScript
|
||||
*.inc linguist-language=XML
|
||||
|
||||
8
.github/fluent_linter_requirements.txt
vendored
8
.github/fluent_linter_requirements.txt
vendored
@ -1,7 +1 @@
|
||||
# The requirements below can be regenerated with the following one-liner:
|
||||
# `python3 -m venv venv; source venv/bin/activate; pip install -q moz-fluent-linter; pip freeze; deactivate; rm -rf venv`
|
||||
fluent.syntax==0.19.0
|
||||
moz-fluent-linter==0.4.10
|
||||
PyYAML==6.0.3
|
||||
six==1.17.0
|
||||
typing_extensions==4.16.0
|
||||
moz-fluent-linter==0.4.*
|
||||
|
||||
4
.github/font_tests_requirements.txt
vendored
4
.github/font_tests_requirements.txt
vendored
@ -1,3 +1 @@
|
||||
# The requirements below can be regenerated with the following one-liner:
|
||||
# `python3 -m venv venv; source venv/bin/activate; pip install -q fonttools; pip freeze; deactivate; rm -rf venv`
|
||||
fonttools==4.63.0
|
||||
fonttools==4.*
|
||||
|
||||
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@ -16,13 +16,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
@ -31,7 +31,7 @@ jobs:
|
||||
run: npm ci
|
||||
|
||||
- name: Restore cached PDF files
|
||||
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
@ -46,14 +46,14 @@ jobs:
|
||||
run: npx gulp unittestcli --coverage --coverage-output build/coverage/unitcli
|
||||
|
||||
- name: Save cached PDF files
|
||||
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Upload results to Codecov
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
8
.github/workflows/codeql.yml
vendored
8
.github/workflows/codeql.yml
vendored
@ -18,19 +18,19 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@e0647621c2984b5ed2f768cb892365bf2a616ad1 # v4.37.2
|
||||
uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
queries: security-and-quality
|
||||
|
||||
- name: Autobuild CodeQL
|
||||
uses: github/codeql-action/autobuild@e0647621c2984b5ed2f768cb892365bf2a616ad1 # v4.37.2
|
||||
uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
|
||||
|
||||
- name: Perform CodeQL analysis
|
||||
uses: github/codeql-action/analyze@e0647621c2984b5ed2f768cb892365bf2a616ad1 # v4.37.2
|
||||
uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
|
||||
|
||||
101
.github/workflows/coverage_browser_tests.yml
vendored
101
.github/workflows/coverage_browser_tests.yml
vendored
@ -1,101 +0,0 @@
|
||||
name: Coverage (Browser tests)
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'src/**'
|
||||
- 'test/images/**'
|
||||
- 'test/pdfs/**'
|
||||
- 'test/resources/**'
|
||||
- 'test/*.css'
|
||||
- 'test/driver.js'
|
||||
- 'test/test.mjs'
|
||||
- 'test/test_manifest.json'
|
||||
- 'test/test_slave.html'
|
||||
- 'web/**'
|
||||
- '.github/workflows/coverage_browser_tests.yml'
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'src/**'
|
||||
- 'test/images/**'
|
||||
- 'test/pdfs/**'
|
||||
- 'test/resources/**'
|
||||
- 'test/*.css'
|
||||
- 'test/driver.js'
|
||||
- 'test/test.mjs'
|
||||
- 'test/test_manifest.json'
|
||||
- 'test/test_slave.html'
|
||||
- 'web/**'
|
||||
- '.github/workflows/coverage_browser_tests.yml'
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: ${{ matrix.os }} / firefox
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [lts/*]
|
||||
os: [ubuntu-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
environment: code-coverage
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Restore cached PDF files
|
||||
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
restore-keys: |
|
||||
cached-pdf-files-
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Run browser tests with code coverage
|
||||
run: npx gulp botbrowsertest --headless -j$(nproc) --coverage --coverage-output build/coverage/browser --noChrome
|
||||
|
||||
- name: Save cached PDF files
|
||||
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Upload results to Codecov
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
files: ./build/coverage/browser/lcov.info
|
||||
flags: browsertest
|
||||
name: codecov-umbrella
|
||||
disable_search: true
|
||||
disable_telem: true
|
||||
verbose: true
|
||||
6
.github/workflows/fluent_linter.yml
vendored
6
.github/workflows/fluent_linter.yml
vendored
@ -4,7 +4,6 @@ on:
|
||||
paths:
|
||||
- 'l10n/en-US/**.ftl'
|
||||
- '.github/fluent_linter_config.yml'
|
||||
- '.github/fluent_linter_requirements.txt'
|
||||
- '.github/workflows/fluent_linter.yml'
|
||||
branches:
|
||||
- master
|
||||
@ -12,7 +11,6 @@ on:
|
||||
paths:
|
||||
- 'l10n/en-US/**.ftl'
|
||||
- '.github/fluent_linter_config.yml'
|
||||
- '.github/fluent_linter_requirements.txt'
|
||||
- '.github/workflows/fluent_linter.yml'
|
||||
branches:
|
||||
- master
|
||||
@ -27,12 +25,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Python 3.14
|
||||
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
||||
with:
|
||||
python-version: '3.14'
|
||||
cache: 'pip'
|
||||
|
||||
14
.github/workflows/font_tests.yml
vendored
14
.github/workflows/font_tests.yml
vendored
@ -3,24 +3,18 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/font/**'
|
||||
- '.github/font_tests_requirements.txt'
|
||||
- '.github/workflows/font_tests.yml'
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/font/**'
|
||||
- '.github/font_tests_requirements.txt'
|
||||
- '.github/workflows/font_tests.yml'
|
||||
branches:
|
||||
- master
|
||||
@ -49,13 +43,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
@ -64,7 +58,7 @@ jobs:
|
||||
run: npm ci
|
||||
|
||||
- name: Use Python 3.14
|
||||
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.0.2
|
||||
with:
|
||||
python-version: '3.14'
|
||||
cache: 'pip'
|
||||
@ -77,7 +71,7 @@ jobs:
|
||||
run: npx gulp fonttest --headless --coverage --coverage-output build/coverage/font ${{ matrix.skip }}
|
||||
|
||||
- name: Upload results to Codecov
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
16
.github/workflows/integration_tests.yml
vendored
16
.github/workflows/integration_tests.yml
vendored
@ -3,8 +3,7 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'external/builder/**'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/integration/**'
|
||||
@ -15,8 +14,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'external/builder/**'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/integration/**'
|
||||
@ -49,13 +47,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
@ -64,7 +62,7 @@ jobs:
|
||||
run: npm ci
|
||||
|
||||
- name: Restore cached PDF files
|
||||
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
@ -89,14 +87,14 @@ jobs:
|
||||
run: xvfb-run -a --server-args="-screen 0, 1920x1080x24" npx gulp integrationtest --coverage --coverage-output build/coverage/integration ${{ matrix.skip }}
|
||||
|
||||
- name: Save cached PDF files
|
||||
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Upload results to Codecov
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
4
.github/workflows/lint.yml
vendored
4
.github/workflows/lint.yml
vendored
@ -15,13 +15,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
2
.github/workflows/notify-pdf-sync.yml
vendored
2
.github/workflows/notify-pdf-sync.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
4
.github/workflows/prefs_tests.yml
vendored
4
.github/workflows/prefs_tests.yml
vendored
@ -15,13 +15,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
185
.github/workflows/publish_coverage_index.yml
vendored
185
.github/workflows/publish_coverage_index.yml
vendored
@ -1,185 +0,0 @@
|
||||
name: Publish per-test coverage index
|
||||
# Builds the per-test coverage index (which ref test exercises which source
|
||||
# line/function) and publishes it to the gh-pages branch of mozilla/pdf.js.refs,
|
||||
# where it's served at:
|
||||
# https://mozilla.github.io/pdf.js.refs/per-test-index.json
|
||||
# The index can then be queried with `npx gulp coverage_search`.
|
||||
#
|
||||
# This only runs when something is merged into master (push event); the build is
|
||||
# heavy (a full browser test run), so it's deliberately kept off pull requests.
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'src/**'
|
||||
- 'test/images/**'
|
||||
- 'test/pdfs/**'
|
||||
- 'test/resources/**'
|
||||
- 'test/*.css'
|
||||
- 'test/driver.js'
|
||||
- 'test/test.mjs'
|
||||
- 'test/test_manifest.json'
|
||||
- 'test/test_slave.html'
|
||||
- 'web/**'
|
||||
- '.github/workflows/publish_coverage_index.yml'
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
concurrency:
|
||||
group: publish-coverage-index-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
if: github.ref == 'refs/heads/master'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
environment: sync_pdfs
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [lts/*]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Restore cached PDF files
|
||||
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
restore-keys: |
|
||||
cached-pdf-files-
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Build the per-test coverage index
|
||||
run: npx gulp botbrowsertest --headless -j$(nproc) --coverage-per-test --coverage-output build/coverage/browser --noChrome
|
||||
|
||||
- name: Save cached PDF files
|
||||
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Check current master
|
||||
id: current-master
|
||||
run: |
|
||||
set -euo pipefail
|
||||
git fetch --no-tags --depth=1 origin master:refs/remotes/origin/master
|
||||
current_master="$(git rev-parse refs/remotes/origin/master)"
|
||||
if [ "$GITHUB_SHA" = "$current_master" ]; then
|
||||
echo "current=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "::notice::Skipping publish because ${GITHUB_SHA} is no longer origin/master (${current_master})"
|
||||
echo "current=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Generate app token for pdf.js.refs
|
||||
if: steps.current-master.outputs.current == 'true'
|
||||
id: refs-token
|
||||
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
||||
with:
|
||||
client-id: ${{ secrets.CLIENT_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
owner: mozilla
|
||||
repositories: pdf.js.refs
|
||||
# Least privilege: the token only needs to push to gh-pages.
|
||||
permission-contents: write
|
||||
|
||||
- name: Publish per-test coverage index
|
||||
if: steps.current-master.outputs.current == 'true'
|
||||
env:
|
||||
GH_TOKEN: ${{ steps.refs-token.outputs.token }}
|
||||
INDEX_FILE: build/coverage/browser/per-test-index.json
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [ ! -f "$INDEX_FILE" ]; then
|
||||
# A successful per-test run always writes the index; test.mjs only
|
||||
# skips it when no per-test coverage was collected at all, so a
|
||||
# missing file here means a broken build, not "nothing to publish".
|
||||
echo "::error::Per-test coverage index not found at $INDEX_FILE"
|
||||
exit 1
|
||||
fi
|
||||
repo_url="https://github.com/mozilla/pdf.js.refs.git"
|
||||
# Authenticate with a short-lived header rather than embedding the
|
||||
# token in the remote URL, so it never persists in .git/config.
|
||||
auth_header="Authorization: basic $(printf 'x-access-token:%s' "$GH_TOKEN" | base64 | tr -d '\n')"
|
||||
git_refs() { git -c http.extraheader="$auth_header" "$@"; }
|
||||
stage_index() {
|
||||
cp "$GITHUB_WORKSPACE/$INDEX_FILE" per-test-index.json
|
||||
git add per-test-index.json
|
||||
}
|
||||
commit_index() {
|
||||
git \
|
||||
-c user.name="github-actions[bot]" \
|
||||
-c user.email="41898282+github-actions[bot]@users.noreply.github.com" \
|
||||
commit -q -m "Update per-test coverage index for ${GITHUB_SHA}"
|
||||
}
|
||||
work="$(mktemp -d)"
|
||||
# Does gh-pages already exist? Probe explicitly so a transient network
|
||||
# error isn't mistaken for "first run" (the orphan path below discards
|
||||
# whatever else the branch holds).
|
||||
ls_status=0
|
||||
git_refs ls-remote --exit-code --heads "$repo_url" gh-pages >/dev/null 2>&1 || ls_status=$?
|
||||
case "$ls_status" in
|
||||
0)
|
||||
# Reuse gh-pages, keeping any other files it holds.
|
||||
git_refs clone --depth=1 --branch gh-pages "$repo_url" "$work"
|
||||
cd "$work"
|
||||
;;
|
||||
2)
|
||||
# First run: start a fresh orphan branch without cloning history.
|
||||
git init -q "$work"
|
||||
cd "$work"
|
||||
git remote add origin "$repo_url"
|
||||
git checkout -q --orphan gh-pages
|
||||
;;
|
||||
*)
|
||||
echo "::error::Could not query gh-pages on pdf.js.refs (git ls-remote exit ${ls_status})"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
stage_index
|
||||
if git diff --cached --quiet; then
|
||||
echo "No changes to publish"
|
||||
exit 0
|
||||
fi
|
||||
commit_index
|
||||
# Retry against a concurrent update to gh-pages: re-sync onto the new
|
||||
# tip, re-apply our index (latest build wins), and push again.
|
||||
for attempt in 1 2 3; do
|
||||
if git_refs push origin gh-pages; then
|
||||
exit 0
|
||||
fi
|
||||
if [ "$attempt" -eq 3 ]; then
|
||||
echo "::error::Failed to push the per-test coverage index after ${attempt} attempts"
|
||||
exit 1
|
||||
fi
|
||||
echo "gh-pages advanced during the run; re-syncing and retrying (attempt ${attempt})"
|
||||
git_refs fetch --depth=1 origin gh-pages
|
||||
git reset --hard FETCH_HEAD
|
||||
stage_index
|
||||
if git diff --cached --quiet; then
|
||||
echo "No changes after re-sync"
|
||||
exit 0
|
||||
fi
|
||||
commit_index
|
||||
done
|
||||
4
.github/workflows/publish_release.yml
vendored
4
.github/workflows/publish_release.yml
vendored
@ -17,13 +17,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
10
.github/workflows/publish_website.yml
vendored
10
.github/workflows/publish_website.yml
vendored
@ -6,12 +6,6 @@ on:
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
# Allow only one concurrent deployment, without cancelling in-progress runs, so
|
||||
# that an in-flight Pages deployment is allowed to finish before the next starts.
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
@ -23,13 +17,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
4
.github/workflows/types_tests.yml
vendored
4
.github/workflows/types_tests.yml
vendored
@ -15,13 +15,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
16
.github/workflows/unit_tests.yml
vendored
16
.github/workflows/unit_tests.yml
vendored
@ -3,8 +3,7 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'external/builder/**'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/unit/**'
|
||||
@ -15,8 +14,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'gulpfile.mjs'
|
||||
- 'external/**'
|
||||
- 'package-lock.json'
|
||||
- 'external/builder/**'
|
||||
- 'src/**'
|
||||
- 'test/test.mjs'
|
||||
- 'test/unit/**'
|
||||
@ -49,13 +47,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
@ -64,7 +62,7 @@ jobs:
|
||||
run: npm ci
|
||||
|
||||
- name: Restore cached PDF files
|
||||
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
@ -76,14 +74,14 @@ jobs:
|
||||
run: npx gulp unittest --headless --coverage --coverage-output build/coverage/unit ${{ matrix.skip }}
|
||||
|
||||
- name: Save cached PDF files
|
||||
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: test/pdfs/*.pdf
|
||||
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
||||
enableCrossOsArchive: true
|
||||
|
||||
- name: Upload results to Codecov
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
4
.github/workflows/update_locales.yml
vendored
4
.github/workflows/update_locales.yml
vendored
@ -23,13 +23,13 @@ jobs:
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js LTS
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||
with:
|
||||
node-version: lts/*
|
||||
cache: 'npm'
|
||||
|
||||
@ -1,13 +1,9 @@
|
||||
{
|
||||
"chrome": {
|
||||
"skipDownload": true,
|
||||
"version": "stable"
|
||||
},
|
||||
"chrome-headless-shell": {
|
||||
"skipDownload": true
|
||||
"skipDownload": false
|
||||
},
|
||||
"firefox": {
|
||||
"skipDownload": true,
|
||||
"skipDownload": false,
|
||||
"version": "nightly"
|
||||
}
|
||||
}
|
||||
|
||||
84
README.md
84
README.md
@ -46,7 +46,7 @@ directory `build/chromium`.
|
||||
|
||||
### PDF debugger
|
||||
|
||||
Browse the internal structure of a PDF document with https://mozilla.github.io/pdf.js/internal-viewer/web/debugger.html
|
||||
Browser the internal structure of a PDF document with https://mozilla.github.io/pdf.js/internal-viewer/web/debugger.html
|
||||
|
||||
## Getting the Code
|
||||
|
||||
@ -91,88 +91,6 @@ This will generate `pdf.js` and `pdf.worker.js` in the `build/generic/build/` di
|
||||
Both scripts are needed but only `pdf.js` needs to be included since `pdf.worker.js` will
|
||||
be loaded by `pdf.js`. The PDF.js files are large and should be minified for production.
|
||||
|
||||
## Code coverage
|
||||
|
||||
We track how much of the code is exercised by the test suite on
|
||||
[Codecov](https://codecov.io/gh/mozilla/pdf.js) (see the badge at the top of this
|
||||
file).
|
||||
|
||||
### How it is collected
|
||||
|
||||
When coverage is enabled, the build instruments the bundled code with
|
||||
[`babel-plugin-istanbul`](https://github.com/istanbuljs/babel-plugin-istanbul),
|
||||
which adds counters that record every line, branch and function that runs:
|
||||
|
||||
+ For browser-based tests (unit, integration and reference tests) the
|
||||
instrumented code runs in the browser, fills a global `window.__coverage__`
|
||||
object, and the test runner collects it from each browser session, merges the
|
||||
results, and writes the report.
|
||||
+ For the Node-based unit tests (`unittestcli`) the raw data is written to
|
||||
`build/tmp/unittestcli-coverage.json` and turned into a report afterwards.
|
||||
|
||||
### Collecting coverage locally
|
||||
|
||||
Add the `--coverage` flag to any of the test tasks, for example:
|
||||
|
||||
$ npx gulp unittest --coverage # browser unit tests
|
||||
$ npx gulp unittestcli --coverage # Node unit tests
|
||||
$ npx gulp integrationtest --coverage # Puppeteer integration tests
|
||||
$ npx gulp botbrowsertest --coverage # reference tests
|
||||
|
||||
The following options control the output:
|
||||
|
||||
| Option | Description | Default |
|
||||
| --- | --- | --- |
|
||||
| `--coverage` | Enable coverage collection. | off |
|
||||
| `--coverage-output <dir>` | Directory where the report is written. | `build/coverage` |
|
||||
| `--coverage-formats <list>` | Comma-separated list of formats: `info`, `html`, `json`, `text`, `cobertura`, `clover`. | `info` |
|
||||
| `--coverage-per-test` | Also build a per-test index (see below). | off |
|
||||
|
||||
By default the report is written to `build/coverage` in the `info` format, i.e.
|
||||
an [LCOV](https://github.com/linux-test-project/lcov) `lcov.info` file (the same
|
||||
format that is uploaded to Codecov). Use `--coverage-formats html` to get a
|
||||
browsable HTML report instead, or pass several formats at once, e.g.
|
||||
`--coverage-formats info,html`.
|
||||
|
||||
### Finding which tests cover a given line
|
||||
|
||||
`coverage_search` lists the ref tests that exercised a specific source line or
|
||||
function. It uses the per-test index (`per-test-index.json`) that is rebuilt on
|
||||
every push to `master` and published to the
|
||||
[`pdf.js.refs`](https://github.com/mozilla/pdf.js.refs/tree/gh-pages)
|
||||
repository. The index is downloaded on demand, cached locally, and only
|
||||
re-downloaded when it has changed, so no local coverage build is required:
|
||||
|
||||
$ npx gulp coverage_search --code="canvas.js::205"
|
||||
$ npx gulp coverage_search --code="canvas.js::drawImageAtIntegerCoords"
|
||||
|
||||
To run — or regenerate the reference images for — only the ref tests that touch
|
||||
a given line or function, pass the same `--code` option to a browser test or
|
||||
`makeref` task:
|
||||
|
||||
$ npx gulp browsertest --code="canvas.js::205"
|
||||
$ npx gulp makeref --code="canvas.js::205"
|
||||
|
||||
Pass `--no-download` to reuse the locally cached index without contacting the
|
||||
network. The index can also be built and queried locally (the CI job that
|
||||
publishes it builds it the same way):
|
||||
|
||||
$ npx gulp botbrowsertest --coverage-per-test
|
||||
$ npx gulp coverage_search --code="canvas.js::205" \
|
||||
--index=build/coverage/per-test-index.json --no-download
|
||||
|
||||
### Continuous integration
|
||||
|
||||
On every push and pull request three GitHub Actions workflows collect coverage
|
||||
and upload it to Codecov, each tagged with its own Codecov *flag* so the test
|
||||
types can be told apart:
|
||||
|
||||
| Workflow | Task | Codecov flag |
|
||||
| --- | --- | --- |
|
||||
| `unit_tests.yml` | `unittest` | `unittest` |
|
||||
| `integration_tests.yml` | `integrationtest` | `integrationtest` |
|
||||
| `coverage_browser_tests.yml` | `botbrowsertest` | `browsertest` |
|
||||
|
||||
## Using PDF.js in a web application
|
||||
|
||||
To use PDF.js in a web application you can choose to use a pre-built version of the library
|
||||
|
||||
@ -178,11 +178,6 @@ export default [
|
||||
"unicorn/prefer-dom-node-remove": "error",
|
||||
"unicorn/prefer-import-meta-properties": "error",
|
||||
"unicorn/prefer-includes": "error",
|
||||
"unicorn/logical-assignment-operators": [
|
||||
"error",
|
||||
"always",
|
||||
{ enforceForIfStatements: true },
|
||||
],
|
||||
"unicorn/prefer-logical-operator-over-ternary": "error",
|
||||
"unicorn/prefer-modern-dom-apis": "error",
|
||||
"unicorn/prefer-modern-math-apis": "error",
|
||||
|
||||
@ -48,7 +48,7 @@ const jpegData = jpegImage.getData({
|
||||
//
|
||||
const imageData = jpegCtx.createImageData(width, height);
|
||||
const imageBytes = imageData.data;
|
||||
for (let j = 0, k = 0, jj = width * height * 4; j < jj;) {
|
||||
for (let j = 0, k = 0, jj = width * height * 4; j < jj; ) {
|
||||
imageBytes[j++] = jpegData[k++];
|
||||
imageBytes[j++] = jpegData[k++];
|
||||
imageBytes[j++] = jpegData[k++];
|
||||
|
||||
@ -192,7 +192,7 @@ function renderDefaultZoomValue(shortDescription) {
|
||||
document.getElementById("settings-boxes").append(wrapper);
|
||||
|
||||
function renderPreference(value) {
|
||||
value ||= "auto";
|
||||
value = value || "auto";
|
||||
select.value = value;
|
||||
var customOption = select.querySelector("option.custom-zoom");
|
||||
if (select.selectedIndex === -1 && value) {
|
||||
|
||||
@ -150,7 +150,7 @@ limitations under the License.
|
||||
*/
|
||||
function didUpdateSinceLastCheck() {
|
||||
var chromeVersion = /Chrome\/(\d+)\./.exec(navigator.userAgent);
|
||||
chromeVersion &&= chromeVersion[1];
|
||||
chromeVersion = chromeVersion && chromeVersion[1];
|
||||
if (!chromeVersion || localStorage.telemetryLastVersion === chromeVersion) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -319,16 +319,6 @@ function babelPluginStripSrcPath() {
|
||||
};
|
||||
}
|
||||
|
||||
function babelPluginAddHeaderComment(babel, { header }) {
|
||||
return {
|
||||
visitor: {
|
||||
Program(path) {
|
||||
path.addComment("leading", header);
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function preprocessPDFJSCode(ctx, content) {
|
||||
return transformSync(content, {
|
||||
configFile: false,
|
||||
@ -337,7 +327,6 @@ function preprocessPDFJSCode(ctx, content) {
|
||||
}
|
||||
|
||||
export {
|
||||
babelPluginAddHeaderComment,
|
||||
babelPluginPDFJSPreprocessor,
|
||||
babelPluginStripSrcPath,
|
||||
preprocessPDFJSCode,
|
||||
|
||||
23
external/builder/builder.mjs
vendored
23
external/builder/builder.mjs
vendored
@ -73,7 +73,10 @@ function preprocess(inFilename, outFilename, defines) {
|
||||
const out = [];
|
||||
let i = 0;
|
||||
function readLine() {
|
||||
return i < totalLines ? lines[i++] : null;
|
||||
if (i < totalLines) {
|
||||
return lines[i++];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
const writeLine =
|
||||
typeof outFilename === "function"
|
||||
@ -110,9 +113,16 @@ function preprocess(inFilename, outFilename, defines) {
|
||||
const realPath = fs.realpathSync(inFilename);
|
||||
const dir = path.dirname(realPath);
|
||||
try {
|
||||
const fullpath = file.startsWith("$ROOT/")
|
||||
? path.join(__dirname, "../..", file.substring("$ROOT/".length))
|
||||
: path.join(dir, file);
|
||||
let fullpath;
|
||||
if (file.indexOf("$ROOT/") === 0) {
|
||||
fullpath = path.join(
|
||||
__dirname,
|
||||
"../..",
|
||||
file.substring("$ROOT/".length)
|
||||
);
|
||||
} else {
|
||||
fullpath = path.join(dir, file);
|
||||
}
|
||||
preprocess(fullpath, writeLine, defines);
|
||||
} catch (e) {
|
||||
if (e.code === "ENOENT") {
|
||||
@ -124,7 +134,10 @@ function preprocess(inFilename, outFilename, defines) {
|
||||
function expand(line) {
|
||||
line = line.replaceAll(/__\w+__/g, function (variable) {
|
||||
variable = variable.substring(2, variable.length - 2);
|
||||
return variable in defines ? defines[variable] : "";
|
||||
if (variable in defines) {
|
||||
return defines[variable];
|
||||
}
|
||||
return "";
|
||||
});
|
||||
writeLine(line);
|
||||
}
|
||||
|
||||
159
external/ccov/coverage_search.mjs
vendored
159
external/ccov/coverage_search.mjs
vendored
@ -20,46 +20,26 @@ import path from "path";
|
||||
const __dirname = import.meta.dirname;
|
||||
const PROJECT_ROOT = path.join(__dirname, "../..");
|
||||
|
||||
// The per-test coverage index (which ref test exercises which source
|
||||
// line/function) is rebuilt on every push to master and published to the
|
||||
// gh-pages branch of the pdf.js.refs repository.
|
||||
const PER_TEST_INDEX_URL =
|
||||
"https://raw.githubusercontent.com/mozilla/pdf.js.refs/gh-pages/per-test-index.json";
|
||||
|
||||
let values;
|
||||
try {
|
||||
({ values } = parseArgs({
|
||||
const { values } = parseArgs({
|
||||
args: process.argv.slice(2),
|
||||
options: {
|
||||
code: { type: "string" },
|
||||
index: { type: "string", default: "build/per-test-index.json" },
|
||||
"no-download": { type: "boolean", default: false },
|
||||
"coverage-dir": { type: "string", default: "build/coverage" },
|
||||
help: { type: "boolean", short: "h", default: false },
|
||||
},
|
||||
}));
|
||||
} catch (error) {
|
||||
// parseArgs is strict, so an unknown/renamed option (e.g. the removed
|
||||
// --coverage-dir) would otherwise abort with an uncaught stack trace.
|
||||
console.error(`Error: ${error.message}`);
|
||||
console.error("Run with --help to see the available options.");
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
if (values.help || !values.code) {
|
||||
console.log(
|
||||
"Usage: coverage_search.mjs --code=<file>::<line|function> [--index=<path>] [--no-download]\n\n" +
|
||||
"Usage: coverage_search.mjs --code=<file>::<line|function> [--coverage-dir=<path>]\n\n" +
|
||||
" --code Source file and line number or function name to search for.\n" +
|
||||
" Examples:\n" +
|
||||
" --code=canvas.js::205\n" +
|
||||
" --code=canvas.js::drawImageAtIntegerCoords\n" +
|
||||
" --index Where to cache or read the per-test index.\n" +
|
||||
" [build/per-test-index.json]\n" +
|
||||
" --no-download Don't contact the network; use the cached index as-is.\n\n" +
|
||||
" --coverage-dir Coverage directory containing per-test-index.json [build/coverage]\n\n" +
|
||||
"Prints to stdout the IDs of tests whose coverage includes the given line or\n" +
|
||||
"function (one ID per line).\n\n" +
|
||||
"The index is downloaded from the pdf.js.refs repository and cached locally;\n" +
|
||||
"it is only re-downloaded when the published file has changed.\n" +
|
||||
`Source: ${PER_TEST_INDEX_URL}`
|
||||
"function (one ID per line).\n" +
|
||||
"Run browsertest with --coverage-per-test first to generate the index."
|
||||
);
|
||||
process.exit(values.help ? 0 : 1);
|
||||
}
|
||||
@ -78,129 +58,18 @@ const isLine = /^\d+$/.test(location);
|
||||
const lineNum = isLine ? parseInt(location, 10) : null;
|
||||
const funcName = isLine ? null : location;
|
||||
|
||||
const indexPath = path.isAbsolute(values.index)
|
||||
? values.index
|
||||
: path.join(PROJECT_ROOT, values.index);
|
||||
// The ETag of the cached copy is stored alongside it, so the next run can ask
|
||||
// the server (via If-None-Match) to only re-send the file when it has changed.
|
||||
const etagPath = `${indexPath}.etag`;
|
||||
|
||||
// Refreshes the locally cached index from the published copy, downloading it
|
||||
// only when it has changed since the last run. When the network is unavailable
|
||||
// a previously cached copy is reused if present.
|
||||
async function refreshIndex() {
|
||||
if (values["no-download"]) {
|
||||
return; // Freshness check disabled; the read below validates existence.
|
||||
}
|
||||
|
||||
const hasCached = fs.existsSync(indexPath);
|
||||
|
||||
// On any download failure, fall back to a previously cached copy when one
|
||||
// exists; otherwise there's nothing to search, so fail.
|
||||
const fallbackOrFail = reason => {
|
||||
if (hasCached) {
|
||||
console.error(
|
||||
`Warning: couldn't refresh per-test index (${reason}); using the cached copy.`
|
||||
);
|
||||
return;
|
||||
}
|
||||
console.error(`Error: couldn't download per-test index (${reason}).`);
|
||||
process.exit(1);
|
||||
};
|
||||
|
||||
const headers = new Headers();
|
||||
if (hasCached && fs.existsSync(etagPath)) {
|
||||
const etag = fs.readFileSync(etagPath, "utf8").trim();
|
||||
// Only forward a syntactically valid HTTP ETag (RFC 7232), so the cached
|
||||
// file's contents can't be used to inject arbitrary data into the request.
|
||||
if (/^(?:W\/)?"[\x21\x23-\x7e]*"$/.test(etag)) {
|
||||
headers.set("If-None-Match", etag);
|
||||
}
|
||||
}
|
||||
|
||||
let response;
|
||||
try {
|
||||
console.log(`Fetching per-test index from ${PER_TEST_INDEX_URL} ...`);
|
||||
response = await fetch(PER_TEST_INDEX_URL, { headers });
|
||||
} catch (error) {
|
||||
fallbackOrFail(error.message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (response.status === 304) {
|
||||
console.log("Per-test index is up to date.");
|
||||
return;
|
||||
}
|
||||
if (!response.ok) {
|
||||
fallbackOrFail(`HTTP ${response.status}`);
|
||||
return;
|
||||
}
|
||||
|
||||
let text;
|
||||
try {
|
||||
text = await response.text();
|
||||
} catch (error) {
|
||||
fallbackOrFail(error.message);
|
||||
return;
|
||||
}
|
||||
|
||||
// Parse the payload before caching it, and cache the re-serialized result
|
||||
// rather than the raw response body: only well-formed JSON produced by our
|
||||
// own JSON.stringify is ever written to disk.
|
||||
let serialized;
|
||||
try {
|
||||
serialized = JSON.stringify(JSON.parse(text));
|
||||
} catch {
|
||||
fallbackOrFail("the downloaded index is not valid JSON");
|
||||
return;
|
||||
}
|
||||
|
||||
// Write to a temporary file and rename it into place.
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(indexPath), { recursive: true });
|
||||
const tmpPath = `${indexPath}.${process.pid}.tmp`;
|
||||
fs.writeFileSync(tmpPath, serialized);
|
||||
fs.renameSync(tmpPath, indexPath);
|
||||
|
||||
const etag = response.headers.get("etag");
|
||||
if (etag) {
|
||||
fs.writeFileSync(etagPath, etag);
|
||||
} else {
|
||||
fs.rmSync(etagPath, { force: true });
|
||||
}
|
||||
} catch (error) {
|
||||
// A write failure (disk full, read-only dir, ...) shouldn't be fatal when
|
||||
// a usable cached copy already exists.
|
||||
fallbackOrFail(error.message);
|
||||
return;
|
||||
}
|
||||
console.log(`Per-test index updated (${serialized.length} bytes).`);
|
||||
}
|
||||
|
||||
await refreshIndex();
|
||||
const coverageDir = path.isAbsolute(values["coverage-dir"])
|
||||
? values["coverage-dir"]
|
||||
: path.join(PROJECT_ROOT, values["coverage-dir"]);
|
||||
|
||||
const indexPath = path.join(coverageDir, "per-test-index.json");
|
||||
if (!fs.existsSync(indexPath)) {
|
||||
console.error(`Error: per-test index not found: ${indexPath}`);
|
||||
console.error(
|
||||
"Build it locally (gulp botbrowsertest --coverage-per-test) or omit " +
|
||||
"--no-download to fetch it from the pdf.js.refs repository."
|
||||
);
|
||||
console.error(`Error: index file not found: ${indexPath}`);
|
||||
console.error("Run browsertest with --coverage-per-test first.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
let ids, files;
|
||||
try {
|
||||
({ ids, files } = JSON.parse(fs.readFileSync(indexPath, "utf8")));
|
||||
} catch (error) {
|
||||
console.error(
|
||||
`Error: couldn't read per-test index at ${indexPath}: ${error.message}`
|
||||
);
|
||||
console.error(
|
||||
"The cached index may be corrupt; delete it and re-run without " +
|
||||
"--no-download to refetch it."
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
const { ids, files } = JSON.parse(fs.readFileSync(indexPath, "utf8"));
|
||||
|
||||
// Find the file entry whose path matches fileName.
|
||||
let fileEntry = null;
|
||||
|
||||
2
external/cmapscompress/compress.mjs
vendored
2
external/cmapscompress/compress.mjs
vendored
@ -386,7 +386,7 @@ function writeNumber(n) {
|
||||
if (buffer > 0) {
|
||||
s = writeByte((buffer & 0x7f) | (s.length > 0 ? 0x80 : 0)) + s;
|
||||
}
|
||||
while (s.startsWith("80")) {
|
||||
while (s.indexOf("80") === 0) {
|
||||
s = s.substring(2);
|
||||
}
|
||||
return s;
|
||||
|
||||
45
external/qcms/qcms.js
vendored
45
external/qcms/qcms.js
vendored
@ -1,5 +1,5 @@
|
||||
/* THIS FILE IS GENERATED - DO NOT EDIT */
|
||||
import { copy_result } from './qcms_utils.js';
|
||||
import { copy_result, copy_rgb, make_cssRGB } from './qcms_utils.js';
|
||||
|
||||
|
||||
/**
|
||||
@ -25,20 +25,16 @@ export const Intent = Object.freeze({
|
||||
});
|
||||
|
||||
/**
|
||||
* Converts `src` and hands the result to `copy_result`, laid out as RGB, or as
|
||||
* RGBA with an opaque alpha when `add_alpha` is set.
|
||||
*
|
||||
* # Safety
|
||||
*
|
||||
* This function is called directly from JavaScript.
|
||||
* @param {number} transformer
|
||||
* @param {Uint8Array} src
|
||||
* @param {boolean} add_alpha
|
||||
*/
|
||||
export function qcms_convert_array(transformer, src, add_alpha) {
|
||||
export function qcms_convert_array(transformer, src) {
|
||||
const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);
|
||||
const len0 = WASM_VECTOR_LEN;
|
||||
wasm.qcms_convert_array(transformer, ptr0, len0, add_alpha);
|
||||
wasm.qcms_convert_array(transformer, ptr0, len0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -50,11 +46,10 @@ export function qcms_convert_array(transformer, src, add_alpha) {
|
||||
* @param {number} src2
|
||||
* @param {number} src3
|
||||
* @param {number} src4
|
||||
* @returns {number}
|
||||
* @param {boolean} css
|
||||
*/
|
||||
export function qcms_convert_four(transformer, src1, src2, src3, src4) {
|
||||
const ret = wasm.qcms_convert_four(transformer, src1, src2, src3, src4);
|
||||
return ret >>> 0;
|
||||
export function qcms_convert_four(transformer, src1, src2, src3, src4, css) {
|
||||
wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,11 +58,10 @@ export function qcms_convert_four(transformer, src1, src2, src3, src4) {
|
||||
* This function is called directly from JavaScript.
|
||||
* @param {number} transformer
|
||||
* @param {number} src
|
||||
* @returns {number}
|
||||
* @param {boolean} css
|
||||
*/
|
||||
export function qcms_convert_one(transformer, src) {
|
||||
const ret = wasm.qcms_convert_one(transformer, src);
|
||||
return ret >>> 0;
|
||||
export function qcms_convert_one(transformer, src, css) {
|
||||
wasm.qcms_convert_one(transformer, src, css);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -78,11 +72,10 @@ export function qcms_convert_one(transformer, src) {
|
||||
* @param {number} src1
|
||||
* @param {number} src2
|
||||
* @param {number} src3
|
||||
* @returns {number}
|
||||
* @param {boolean} css
|
||||
*/
|
||||
export function qcms_convert_three(transformer, src1, src2, src3) {
|
||||
const ret = wasm.qcms_convert_three(transformer, src1, src2, src3);
|
||||
return ret >>> 0;
|
||||
export function qcms_convert_three(transformer, src1, src2, src3, css) {
|
||||
wasm.qcms_convert_three(transformer, src1, src2, src3, css);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -113,12 +106,18 @@ export function qcms_transformer_from_memory(mem, in_type, intent) {
|
||||
function __wbg_get_imports() {
|
||||
const import0 = {
|
||||
__proto__: null,
|
||||
__wbg___wbindgen_throw_344f42d3211c4765: function(arg0, arg1) {
|
||||
__wbg___wbindgen_throw_6b64449b9b9ed33c: function(arg0, arg1) {
|
||||
throw new Error(getStringFromWasm0(arg0, arg1));
|
||||
},
|
||||
__wbg_copy_result_0d15f3bf9d9012ae: function(arg0, arg1) {
|
||||
copy_result(arg0 >>> 0, arg1 >>> 0);
|
||||
},
|
||||
__wbg_copy_rgb_0106d9d9464fce43: function(arg0) {
|
||||
copy_rgb(arg0 >>> 0);
|
||||
},
|
||||
__wbg_make_cssRGB_8e24b34f71f5363e: function(arg0) {
|
||||
make_cssRGB(arg0 >>> 0);
|
||||
},
|
||||
__wbindgen_init_externref_table: function() {
|
||||
const table = wasm.__wbindgen_externrefs;
|
||||
const offset = table.grow(4);
|
||||
@ -136,7 +135,8 @@ function __wbg_get_imports() {
|
||||
}
|
||||
|
||||
function getStringFromWasm0(ptr, len) {
|
||||
return decodeText(ptr >>> 0, len);
|
||||
ptr = ptr >>> 0;
|
||||
return decodeText(ptr, len);
|
||||
}
|
||||
|
||||
let cachedUint8ArrayMemory0 = null;
|
||||
@ -170,9 +170,8 @@ function decodeText(ptr, len) {
|
||||
|
||||
let WASM_VECTOR_LEN = 0;
|
||||
|
||||
let wasmModule, wasmInstance, wasm;
|
||||
let wasmModule, wasm;
|
||||
function __wbg_finalize_init(instance, module) {
|
||||
wasmInstance = instance;
|
||||
wasm = instance.exports;
|
||||
wasmModule = module;
|
||||
cachedUint8ArrayMemory0 = null;
|
||||
|
||||
BIN
external/qcms/qcms_bg.wasm
vendored
BIN
external/qcms/qcms_bg.wasm
vendored
Binary file not shown.
68
external/qcms/qcms_utils.js
vendored
68
external/qcms/qcms_utils.js
vendored
@ -13,28 +13,22 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// Alpha lives in the high byte of a pixel on a little-endian host and in the
|
||||
// low byte on a big-endian one.
|
||||
const ALPHA_MASK =
|
||||
new Uint8Array(new Uint32Array([1]).buffer)[0] === 1 ? 0xff000000 : 0x000000ff;
|
||||
const RGB_MASK = ~ALPHA_MASK;
|
||||
|
||||
class QCMS {
|
||||
static #memoryArray = null;
|
||||
|
||||
static _memory = null;
|
||||
|
||||
// Where the next `qcms_convert_array` result should land.
|
||||
static _mustAddAlpha = false;
|
||||
|
||||
static _destBuffer = null;
|
||||
|
||||
static _destOffset = 0;
|
||||
|
||||
// Set when the destination is RGBA and its alpha channel already holds
|
||||
// something worth keeping, which is the case whenever the image has an
|
||||
// /SMask: `fillOpacity` has run by then. The Wasm side does not know about
|
||||
// that, so it always fills alpha in, and the bytes are merged here instead of
|
||||
// copied wholesale.
|
||||
static _keepAlpha = false;
|
||||
static _destLength = 0;
|
||||
|
||||
static _cssColor = "";
|
||||
|
||||
static _makeHexColor = null;
|
||||
|
||||
static get _memoryArray() {
|
||||
const array = this.#memoryArray;
|
||||
@ -48,31 +42,43 @@ class QCMS {
|
||||
function copy_result(ptr, len) {
|
||||
// This function is called from the wasm module (it's an external
|
||||
// "C" function). Its goal is to copy the result from the wasm memory
|
||||
// to the destination buffer without any intermediate copies. The wasm side
|
||||
// has already laid the result out the way the caller asked for it, so this is
|
||||
// one bulk copy unless the destination's alpha has to survive.
|
||||
const { _destBuffer, _destOffset, _keepAlpha, _memoryArray } = QCMS;
|
||||
if (!_keepAlpha) {
|
||||
// to the destination buffer without any intermediate copies.
|
||||
const { _mustAddAlpha, _destBuffer, _destOffset, _destLength, _memoryArray } =
|
||||
QCMS;
|
||||
if (len === _destLength) {
|
||||
_destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);
|
||||
return;
|
||||
}
|
||||
const count = len >> 2;
|
||||
const destStart = _destBuffer.byteOffset + _destOffset;
|
||||
if (((destStart | ptr) & 3) === 0) {
|
||||
// Both sides are pixel-aligned, so RGB can be merged a whole pixel at a
|
||||
// time. `len` is a multiple of 4 here: the wasm side wrote RGBA.
|
||||
const dest32 = new Uint32Array(_destBuffer.buffer, destStart, count);
|
||||
const src32 = new Uint32Array(QCMS._memory.buffer, ptr, count);
|
||||
for (let i = 0; i < count; i++) {
|
||||
dest32[i] = (dest32[i] & ALPHA_MASK) | (src32[i] & RGB_MASK);
|
||||
if (_mustAddAlpha) {
|
||||
for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) {
|
||||
_destBuffer[j] = _memoryArray[i];
|
||||
_destBuffer[j + 1] = _memoryArray[i + 1];
|
||||
_destBuffer[j + 2] = _memoryArray[i + 2];
|
||||
_destBuffer[j + 3] = 255;
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 4, j += 4) {
|
||||
} else {
|
||||
for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) {
|
||||
_destBuffer[j] = _memoryArray[i];
|
||||
_destBuffer[j + 1] = _memoryArray[i + 1];
|
||||
_destBuffer[j + 2] = _memoryArray[i + 2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export { copy_result, QCMS };
|
||||
function copy_rgb(ptr) {
|
||||
const { _destBuffer, _destOffset, _memoryArray } = QCMS;
|
||||
_destBuffer[_destOffset] = _memoryArray[ptr];
|
||||
_destBuffer[_destOffset + 1] = _memoryArray[ptr + 1];
|
||||
_destBuffer[_destOffset + 2] = _memoryArray[ptr + 2];
|
||||
}
|
||||
|
||||
function make_cssRGB(ptr) {
|
||||
const { _memoryArray } = QCMS;
|
||||
QCMS._cssColor = QCMS._makeHexColor(
|
||||
_memoryArray[ptr],
|
||||
_memoryArray[ptr + 1],
|
||||
_memoryArray[ptr + 2]
|
||||
);
|
||||
}
|
||||
|
||||
export { copy_result, copy_rgb, make_cssRGB, QCMS };
|
||||
|
||||
20
external/quickjs/quickjs-eval.js
vendored
20
external/quickjs/quickjs-eval.js
vendored
@ -2,15 +2,15 @@
|
||||
async function QuickJS(moduleArg={}){var moduleRtn;var e=moduleArg,aa=import.meta.url,h="",m;try{h=(new URL(".",aa)).href}catch{}m=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);};var q=console.error.bind(console),r,t=!1,u,v,w,x=!1;function y(){var a=z.buffer;A=new Int8Array(a);new Int16Array(a);B=new Uint8Array(a);new Uint16Array(a);C=new Int32Array(a);D=new Uint32Array(a);new Float32Array(a);new Float64Array(a);new BigInt64Array(a);new BigUint64Array(a)}
|
||||
function E(a){e.onAbort?.(a);a=`Aborted(${a})`;q(a);t=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");w?.(a);throw a;}var F;async function ba(a){if(!r)try{var b=await m(a);return new Uint8Array(b)}catch{}if(a==F&&r)a=new Uint8Array(r);else throw"both async and sync fetching of the wasm failed";return a}async function ca(a,b){try{var c=await ba(a);return await WebAssembly.instantiate(c,b)}catch(d){q(`failed to asynchronously prepare wasm: ${d}`),E(d)}}
|
||||
async function da(a){var b=F;if(!r)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){q(`wasm streaming compile failed: ${d}`),q("falling back to ArrayBuffer instantiation")}return ca(b,a)}class G{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}
|
||||
var C,A,D,B,H=a=>{for(;a.length>0;)a.shift()(e)},I=[],J=[],ea=()=>{var a=e.preRun.shift();J.push(a)},K=!0,L=0,fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],M={},N=a=>{if(!(a instanceof G||a=="unwind"))throw a;},O=a=>{u=a;K||L>0||(e.onExit?.(a),t=!0);throw new G(a);},ia=a=>{if(!t)try{a()}catch(b){N(b)}finally{if(!(K||L>0))try{u=a=u,O(a)}catch(b){N(b)}}},P=(a,b,c)=>{var d=B;if(c>0){c=b+c-1;for(var g=0;g<a.length;++g){var f=a.codePointAt(g);if(f<=127){if(b>=
|
||||
c)break;d[b++]=f}else if(f<=2047){if(b+1>=c)break;d[b++]=192|f>>6;d[b++]=128|f&63}else if(f<=65535){if(b+2>=c)break;d[b++]=224|f>>12;d[b++]=128|f>>6&63;d[b++]=128|f&63}else{if(b+3>=c)break;d[b++]=240|f>>18;d[b++]=128|f>>12&63;d[b++]=128|f>>6&63;d[b++]=128|f&63;g++}}d[b]=0}},ja=new TextDecoder,Q=a=>{if(a){for(var b=a,c=B,d=b+void 0;c[b]&&!(b>=d);)++b;a=ja.decode(B.subarray(a,b))}else a="";return a},R=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);d<=127?b++:d<=2047?b+=2:d>=55296&&d<=57343?
|
||||
(b+=4,++c):b+=3}return b},T=a=>{var b=R(a)+1,c=S(b);c&&P(a,c,b);return c};function U(){}var la=(a,b,c,d)=>{var g={string:k=>{var n=0;if(k!==null&&k!==void 0&&k!==0){n=R(k)+1;var X=V(n);P(k,X,n);n=X}return n},array:k=>{var n=V(k.length);A.set(k,n);return n}};a=e["_"+a];var f=[],p=0;if(d)for(var l=0;l<d.length;l++){var Y=g[c[l]];Y?(p===0&&(p=W()),f[l]=Y(d[l])):f[l]=d[l]}c=a(...f);return c=function(k){p!==0&&ka(p);return b==="string"?Q(k):b==="boolean"?!!k:k}(c)};
|
||||
U=(a,b,c)=>{a=Q(a);b=b!==null?JSON.parse(Q(b)):[];try{let d=e.externalCall(a,b);return d?T(d):null}catch(d){return e.HEAPU8[c]=1,T(d.message)}};e.noExitRuntime&&(K=e.noExitRuntime);e.printErr&&(q=e.printErr);e.wasmBinary&&(r=e.wasmBinary);if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.shift()();e.ccall=la;e.cwrap=(a,b,c,d)=>{var g=!c||c.every(f=>f==="number"||f==="boolean");return b!=="string"&&g&&!d?e["_"+a]:(...f)=>la(a,b,c,f,d)};
|
||||
var C,A,D,B,H=a=>{for(;0<a.length;)a.shift()(e)},I=[],J=[],ea=()=>{var a=e.preRun.shift();J.push(a)},K=!0,L=0,fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],M={},N=a=>{if(!(a instanceof G||"unwind"==a))throw a;},O=a=>{u=a;K||0<L||(e.onExit?.(a),t=!0);throw new G(a);},ia=a=>{if(!t)try{a()}catch(b){N(b)}finally{if(!(K||0<L))try{u=a=u,O(a)}catch(b){N(b)}}},P=(a,b,c)=>{var d=B;if(0<c){c=b+c-1;for(var g=0;g<a.length;++g){var f=a.codePointAt(g);if(127>=f){if(b>=
|
||||
c)break;d[b++]=f}else if(2047>=f){if(b+1>=c)break;d[b++]=192|f>>6;d[b++]=128|f&63}else if(65535>=f){if(b+2>=c)break;d[b++]=224|f>>12;d[b++]=128|f>>6&63;d[b++]=128|f&63}else{if(b+3>=c)break;d[b++]=240|f>>18;d[b++]=128|f>>12&63;d[b++]=128|f>>6&63;d[b++]=128|f&63;g++}}d[b]=0}},ja=new TextDecoder,Q=a=>{if(a){for(var b=a,c=B,d=b+void 0;c[b]&&!(b>=d);)++b;a=ja.decode(B.subarray(a,b))}else a="";return a},R=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=
|
||||
d?(b+=4,++c):b+=3}return b},T=a=>{var b=R(a)+1,c=S(b);c&&P(a,c,b);return c};function U(){}var la=(a,b,c,d)=>{var g={string:k=>{var n=0;if(null!==k&&void 0!==k&&0!==k){n=R(k)+1;var X=V(n);P(k,X,n);n=X}return n},array:k=>{var n=V(k.length);A.set(k,n);return n}};a=e["_"+a];var f=[],p=0;if(d)for(var l=0;l<d.length;l++){var Y=g[c[l]];Y?(0===p&&(p=W()),f[l]=Y(d[l])):f[l]=d[l]}c=a(...f);return c=function(k){0!==p&&ka(p);return"string"===b?Q(k):"boolean"===b?!!k:k}(c)};
|
||||
U=(a,b,c)=>{a=Q(a);b=null!==b?JSON.parse(Q(b)):[];try{const d=e.externalCall(a,b);return d?T(d):null}catch(d){return e.HEAPU8[c]=1,T(d.message)}};e.noExitRuntime&&(K=e.noExitRuntime);e.printErr&&(q=e.printErr);e.wasmBinary&&(r=e.wasmBinary);if(e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.shift()();e.ccall=la;e.cwrap=(a,b,c,d)=>{var g=!c||c.every(f=>"number"===f||"boolean"===f);return"string"!==b&&g&&!d?e["_"+a]:(...f)=>la(a,b,c,f,d)};
|
||||
e.stringToNewUTF8=T;
|
||||
var S,ma,ka,V,W,z,na={e:()=>E(""),a:()=>{K=!1;L=0},b:function(a,b){a=a<-9007199254740992||a>9007199254740992?NaN:Number(a);a=new Date(a*1E3);C[b>>2]=a.getSeconds();C[b+4>>2]=a.getMinutes();C[b+8>>2]=a.getHours();C[b+12>>2]=a.getDate();C[b+16>>2]=a.getMonth();C[b+20>>2]=a.getFullYear()-1900;C[b+24>>2]=a.getDay();var c=a.getFullYear();C[b+28>>2]=(c%4!==0||c%100===0&&c%400!==0?ha:fa)[a.getMonth()]+a.getDate()-1|0;C[b+36>>2]=-(a.getTimezoneOffset()*60);c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();
|
||||
var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();C[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},i:(a,b)=>{M[a]&&(clearTimeout(M[a].id),delete M[a]);if(!b)return 0;var c=setTimeout(()=>{delete M[a];ia(()=>ma(a,performance.now()))},b);M[a]={id:c,A:b};return 0},c:(a,b,c,d)=>{var g=(new Date).getFullYear(),f=(new Date(g,0,1)).getTimezoneOffset();g=(new Date(g,6,1)).getTimezoneOffset();D[a>>2]=Math.max(f,g)*60;C[b>>2]=Number(f!=g);b=p=>{var l=Math.abs(p);return`UTC${p>=0?"-":"+"}${String(Math.floor(l/
|
||||
60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};a=b(f);b=b(g);g<f?(P(a,c,17),P(b,d,17)):(P(a,d,17),P(b,c,17))},g:U,f:function(a,b){a=Q(a);try{var c=window.JSON.parse(a)}catch(d){c=a}b!==0?window.alert(a):window.console.log("DUMP",c)},d:()=>Date.now(),j:a=>{var b=B.length;a>>>=0;if(a>2147483648)return!1;for(var c=1;c<=4;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,Math.ceil(Math.max(a,d)/65536)*65536)-z.buffer.byteLength+65535)/65536|0;try{z.grow(d);y();var g=1;
|
||||
break a}catch(f){}g=void 0}if(g)return!0}return!1},m:function(a){a=Q(a);window.console.log(a)},h:function(a){a=Q(a);return Date.parse(a)},l:function(a,b,c,d){a=Q(a);b=Q(b);c=Q(c);c=`Quickjs -- ${a}: ${b}\n${c}`;d!==0?window.alert(c):window.console.error(c)},k:O},Z;
|
||||
Z=await (async function(){function a(c){c=Z=c.exports;e._evalInSandbox=c.p;e._nukeSandbox=c.q;e._init=c.r;e._commFun=c.s;e._dumpMemoryUse=c.t;S=c.u;e._free=c.v;ma=c.w;ka=c.x;V=c.y;W=c.z;z=c.n;y();return Z}var b={a:na};if(e.instantiateWasm)return new Promise(c=>{e.instantiateWasm(b,(d,g)=>{c(a(d,g))})});F??=e.locateFile?e.locateFile?e.locateFile("quickjs-eval.wasm",h):h+"quickjs-eval.wasm":(new URL("quickjs-eval.wasm",import.meta.url)).href;return function(c){return a(c.instance)}(await da(b))}());
|
||||
(function(){function a(){e.calledRun=!0;if(!t){x=!0;Z.o();v?.(e);e.onRuntimeInitialized?.();if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();I.push(b)}H(I)}}if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)ea();H(J);e.setStatus?(e.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>e.setStatus(""),1);a()},1)):a()})();x?moduleRtn=e:moduleRtn=new Promise((a,b)=>{v=a;w=b});
|
||||
var S,ma,ka,V,W,z,na={e:()=>E(""),a:()=>{K=!1;L=0},b:function(a,b){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a);a=new Date(1E3*a);C[b>>2]=a.getSeconds();C[b+4>>2]=a.getMinutes();C[b+8>>2]=a.getHours();C[b+12>>2]=a.getDate();C[b+16>>2]=a.getMonth();C[b+20>>2]=a.getFullYear()-1900;C[b+24>>2]=a.getDay();var c=a.getFullYear();C[b+28>>2]=(0!==c%4||0===c%100&&0!==c%400?ha:fa)[a.getMonth()]+a.getDate()-1|0;C[b+36>>2]=-(60*a.getTimezoneOffset());c=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();
|
||||
var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();C[b+32>>2]=(c!=d&&a.getTimezoneOffset()==Math.min(d,c))|0},i:(a,b)=>{M[a]&&(clearTimeout(M[a].id),delete M[a]);if(!b)return 0;var c=setTimeout(()=>{delete M[a];ia(()=>ma(a,performance.now()))},b);M[a]={id:c,A:b};return 0},c:(a,b,c,d)=>{var g=(new Date).getFullYear(),f=(new Date(g,0,1)).getTimezoneOffset();g=(new Date(g,6,1)).getTimezoneOffset();D[a>>2]=60*Math.max(f,g);C[b>>2]=Number(f!=g);b=p=>{var l=Math.abs(p);return`UTC${0<=p?"-":"+"}${String(Math.floor(l/
|
||||
60)).padStart(2,"0")}${String(l%60).padStart(2,"0")}`};a=b(f);b=b(g);g<f?(P(a,c,17),P(b,d,17)):(P(a,d,17),P(b,c,17))},g:U,f:function(a,b){a=Q(a);let c;try{c=window.JSON.parse(a)}catch(d){c=a}0!==b?window.alert(a):window.console.log("DUMP",c)},d:()=>Date.now(),j:a=>{var b=B.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-z.buffer.byteLength+65535)/65536|0;try{z.grow(d);y();var g=
|
||||
1;break a}catch(f){}g=void 0}if(g)return!0}return!1},m:function(a){a=Q(a);window.console.log(a)},h:function(a){a=Q(a);return Date.parse(a)},l:function(a,b,c,d){a=Q(a);b=Q(b);c=Q(c);c=`Quickjs -- ${a}: ${b}\n${c}`;0!==d?window.alert(c):window.console.error(c)},k:O},Z;
|
||||
Z=await (async function(){function a(c){c=Z=c.exports;e._evalInSandbox=c.p;e._nukeSandbox=c.q;e._init=c.r;e._commFun=c.s;e._dumpMemoryUse=c.t;S=c.u;e._free=c.v;ma=c.w;ka=c.x;V=c.y;W=c.z;z=c.n;y();return Z}var b={a:na};if(e.instantiateWasm)return new Promise(c=>{e.instantiateWasm(b,(d,g)=>{c(a(d,g))})});F??=e.locateFile?e.locateFile?e.locateFile("quickjs-eval.wasm",h):h+"quickjs-eval.wasm":(new URL("quickjs-eval.wasm",import.meta.url)).href;return a((await da(b)).instance)}());
|
||||
(function(){function a(){e.calledRun=!0;if(!t){x=!0;Z.o();v?.(e);e.onRuntimeInitialized?.();if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;){var b=e.postRun.shift();I.push(b)}H(I)}}if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)ea();H(J);e.setStatus?(e.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>e.setStatus(""),1);a()},1)):a()})();x?moduleRtn=e:moduleRtn=new Promise((a,b)=>{v=a;w=b});
|
||||
;return moduleRtn}export default QuickJS;
|
||||
|
||||
BIN
external/quickjs/quickjs-eval.wasm
vendored
BIN
external/quickjs/quickjs-eval.wasm
vendored
Binary file not shown.
332
gulpfile.mjs
332
gulpfile.mjs
@ -13,9 +13,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import * as babel from "@babel/core";
|
||||
import {
|
||||
babelPluginAddHeaderComment,
|
||||
babelPluginPDFJSPreprocessor,
|
||||
babelPluginStripSrcPath,
|
||||
preprocessPDFJSCode,
|
||||
@ -26,6 +24,7 @@ import {
|
||||
} from "./external/ccov/coverage_format.mjs";
|
||||
import { exec, execSync, spawn, spawnSync } from "child_process";
|
||||
import autoprefixer from "autoprefixer";
|
||||
import babel from "@babel/core";
|
||||
import { buildPrefsSchema } from "./external/chromium/prefs.mjs";
|
||||
import crypto from "crypto";
|
||||
import { finished } from "stream/promises";
|
||||
@ -105,11 +104,11 @@ const AUTOPREFIXER_CONFIG = {
|
||||
// Default Babel targets used for generic, components, minified-pre
|
||||
const BABEL_TARGETS = ENV_TARGETS.join(", ");
|
||||
|
||||
const BABEL_COREJS_OPTS = Object.freeze({
|
||||
method: "usage-global",
|
||||
version: "3.49.0",
|
||||
const BABEL_PRESET_ENV_OPTS = Object.freeze({
|
||||
corejs: "3.49.0",
|
||||
exclude: ["web.structured-clone"],
|
||||
shippedProposals: true,
|
||||
useBuiltIns: "usage",
|
||||
});
|
||||
|
||||
const DEFINES = Object.freeze({
|
||||
@ -226,8 +225,6 @@ function createWebpackAlias(defines) {
|
||||
"web-print_service": "",
|
||||
"web-secondary_toolbar": "web/secondary_toolbar.js",
|
||||
"web-signature_manager": "web/signature_manager.js",
|
||||
"web-digital_signature_properties_manager":
|
||||
"web/digital_signature_properties_manager.js",
|
||||
"web-toolbar": "web/toolbar.js",
|
||||
"web-views_manager": "web/views_manager.js",
|
||||
};
|
||||
@ -328,7 +325,9 @@ function createWebpackConfig(
|
||||
/node_modules[\\/]core-js/,
|
||||
];
|
||||
|
||||
const babelPresets = skipBabel ? undefined : ["@babel/preset-env"];
|
||||
const babelPresets = skipBabel
|
||||
? undefined
|
||||
: [["@babel/preset-env", BABEL_PRESET_ENV_OPTS]];
|
||||
const babelPlugins = [
|
||||
[
|
||||
babelPluginPDFJSPreprocessor,
|
||||
@ -338,9 +337,6 @@ function createWebpackConfig(
|
||||
},
|
||||
],
|
||||
];
|
||||
if (!skipBabel) {
|
||||
babelPlugins.push(["babel-plugin-polyfill-corejs3", BABEL_COREJS_OPTS]);
|
||||
}
|
||||
if (bundleDefines.COVERAGE) {
|
||||
babelPlugins.push("babel-plugin-istanbul");
|
||||
}
|
||||
@ -793,18 +789,36 @@ function runTests(testsName, { bot = false } = {}) {
|
||||
args.push("--coveragePerTest");
|
||||
}
|
||||
|
||||
if (testsName === "browser") {
|
||||
let shouldRun;
|
||||
try {
|
||||
shouldRun = applyCodeTestFilter(args);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
const codeArg = testsName === "browser" ? getArgValue("--code") : null;
|
||||
if (codeArg) {
|
||||
const coverageDir =
|
||||
getArgValue("--coverage-output") || BUILD_DIR + "coverage";
|
||||
const result = spawnSync(
|
||||
"node",
|
||||
[
|
||||
path.join(__dirname, "external/ccov/coverage_search.mjs"),
|
||||
`--code=${codeArg}`,
|
||||
`--coverage-dir=${coverageDir}`,
|
||||
],
|
||||
{ encoding: "utf8" }
|
||||
);
|
||||
if (result.status !== 0) {
|
||||
reject(new Error(result.stderr?.trim() || "coverage_search failed"));
|
||||
return;
|
||||
}
|
||||
if (!shouldRun) {
|
||||
const testIds = result.stdout.trim().split("\n").filter(Boolean);
|
||||
if (testIds.length === 0) {
|
||||
console.log(`\n### No tests found covering "${codeArg}"`);
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
console.log(
|
||||
`\n### Found ${testIds.length} test(s) covering "${codeArg}":\n` +
|
||||
testIds.map(id => ` ${id}`).join("\n")
|
||||
);
|
||||
for (const id of testIds) {
|
||||
args.push(`-t=${id}`);
|
||||
}
|
||||
}
|
||||
|
||||
const testProcess = startNode(args, { cwd: TEST_DIR, stdio: "inherit" });
|
||||
@ -870,136 +884,6 @@ function collectArgs(options, args) {
|
||||
}
|
||||
}
|
||||
|
||||
// Builds the coverage_search command line. By default the published index is
|
||||
// downloaded; an explicit --index=<path> selects a local index instead, used
|
||||
// read-only so it's never overwritten by the published copy.
|
||||
function getCoverageSearchArgs(codeArg) {
|
||||
const searchArgs = [
|
||||
path.join(__dirname, "external/ccov/coverage_search.mjs"),
|
||||
`--code=${codeArg}`,
|
||||
];
|
||||
const indexArg = getArgValue("--index");
|
||||
if (indexArg === "") {
|
||||
// An explicit but empty value (e.g. an unset shell variable expanding to
|
||||
// `--index=`) almost certainly isn't intended; fail loudly rather than
|
||||
// silently falling back to the downloaded index.
|
||||
throw new Error("--index was given without a value");
|
||||
}
|
||||
if (indexArg) {
|
||||
searchArgs.push(`--index=${indexArg}`, "--no-download");
|
||||
} else if (process.argv.includes("--no-download")) {
|
||||
searchArgs.push("--no-download");
|
||||
}
|
||||
return searchArgs;
|
||||
}
|
||||
|
||||
// Returns the set of test IDs defined in the local ref-test manifest, or null
|
||||
// when it can't be read. Used to drop coverage-derived IDs that don't exist on
|
||||
// this branch (e.g. a test renamed since the published index was built), which
|
||||
// would otherwise make test.mjs reject the entire run.
|
||||
function readManifestTestIds() {
|
||||
try {
|
||||
const manifestFile = process.env.PDF_TEST || "test_manifest.json";
|
||||
const manifest = JSON.parse(
|
||||
fs.readFileSync(path.join(__dirname, TEST_DIR, manifestFile), "utf8")
|
||||
);
|
||||
return new Set(manifest.map(entry => entry.id));
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// For a --code=<file>::<line|function> argument, runs coverage_search to find
|
||||
// the ref tests that exercise that location and returns their IDs (an empty
|
||||
// array when none match locally). Returns null when --code wasn't given; throws
|
||||
// when the search itself fails.
|
||||
function resolveCodeTestIds() {
|
||||
const codeArg = getArgValue("--code");
|
||||
if (!codeArg) {
|
||||
return null;
|
||||
}
|
||||
// Inherit stderr so the index download progress is visible; stdout is
|
||||
// captured because it carries the matching test IDs.
|
||||
const result = spawnSync("node", getCoverageSearchArgs(codeArg), {
|
||||
encoding: "utf8",
|
||||
stdio: ["ignore", "pipe", "inherit"],
|
||||
});
|
||||
if (result.status !== 0) {
|
||||
// status is null when the child couldn't be spawned or was killed by a
|
||||
// signal; surface the real cause instead of a generic message.
|
||||
throw new Error(
|
||||
result.error
|
||||
? `coverage_search failed: ${result.error.message}`
|
||||
: `coverage_search failed (exit code ${result.status})`
|
||||
);
|
||||
}
|
||||
let testIds = result.stdout.trim().split("\n").filter(Boolean);
|
||||
|
||||
// The published index is built from master, so some covering tests may not
|
||||
// exist on this branch. Drop them (with a note) rather than letting test.mjs
|
||||
// reject the whole run — and silently exit 0 — on the first unknown ID.
|
||||
const knownIds = readManifestTestIds();
|
||||
if (knownIds) {
|
||||
const missing = testIds.filter(id => !knownIds.has(id));
|
||||
if (missing.length) {
|
||||
console.log(
|
||||
`\n### Ignoring ${missing.length} covered test(s) not in the manifest:\n` +
|
||||
missing.map(id => ` ${id}`).join("\n")
|
||||
);
|
||||
testIds = testIds.filter(id => knownIds.has(id));
|
||||
}
|
||||
}
|
||||
|
||||
if (testIds.length === 0) {
|
||||
console.log(`\n### No tests found covering "${codeArg}"`);
|
||||
} else {
|
||||
console.log(
|
||||
`\n### Found ${testIds.length} test(s) covering "${codeArg}":\n` +
|
||||
testIds.map(id => ` ${id}`).join("\n")
|
||||
);
|
||||
}
|
||||
return testIds;
|
||||
}
|
||||
|
||||
function appendTestFilters(args, testIds) {
|
||||
const existingIds = new Set();
|
||||
|
||||
// collectArgs always normalizes filters to the space-separated
|
||||
// `-t <id>` / `--testfilter <id>` form, so that's the only shape to read.
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
if (args[i] === "-t" || args[i] === "--testfilter") {
|
||||
if (i + 1 < args.length) {
|
||||
existingIds.add(args[++i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const id of testIds) {
|
||||
if (!existingIds.has(id)) {
|
||||
// Pass the id as a separate argument: node's parseArgs parses the short
|
||||
// form `-t=<id>` as the literal value "=<id>", which matches no test and
|
||||
// aborts the run with "Unrecognized test IDs".
|
||||
args.push("-t", id);
|
||||
existingIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Applies the --code coverage filter to `args`. Returns false when the run
|
||||
// should be skipped (--code was given but resolved to no runnable tests), and
|
||||
// true otherwise (no --code, or matching tests were appended). Throws when the
|
||||
// coverage search itself fails.
|
||||
function applyCodeTestFilter(args) {
|
||||
const codeTestIds = resolveCodeTestIds();
|
||||
if (codeTestIds === null) {
|
||||
return true; // No --code argument; run normally.
|
||||
}
|
||||
if (codeTestIds.length === 0) {
|
||||
return false; // Nothing (runnable) covers the requested location.
|
||||
}
|
||||
appendTestFilters(args, codeTestIds);
|
||||
return true;
|
||||
}
|
||||
|
||||
function makeRef(done, bot) {
|
||||
console.log("\n### Creating reference images");
|
||||
|
||||
@ -1048,18 +932,6 @@ function makeRef(done, bot) {
|
||||
args
|
||||
);
|
||||
|
||||
let shouldRun;
|
||||
try {
|
||||
shouldRun = applyCodeTestFilter(args);
|
||||
} catch (error) {
|
||||
done(error);
|
||||
return;
|
||||
}
|
||||
if (!shouldRun) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
|
||||
const testProcess = startNode(args, { cwd: TEST_DIR, stdio: "inherit" });
|
||||
testProcess.on("close", function (code) {
|
||||
if (code !== 0) {
|
||||
@ -1070,33 +942,34 @@ function makeRef(done, bot) {
|
||||
});
|
||||
}
|
||||
|
||||
// Prints the IDs of tests that exercised a given source file location, using
|
||||
// the per-test coverage index published to the pdf.js.refs repository. The
|
||||
// index is downloaded on demand, cached locally, and only re-downloaded when
|
||||
// it has changed. Run with --code=<file>::<line|function>, e.g.
|
||||
// --code=canvas.js::205 (add --no-download to reuse the cached index offline).
|
||||
// Queries the per-test coverage index built by --coverage-per-test and prints
|
||||
// the IDs of tests that exercised a given source file location. Run with
|
||||
// --code=<file>::<line|function>, e.g. --code=canvas.js::205
|
||||
gulp.task("coverage_search", function (done) {
|
||||
const codeArg = getArgValue("--code");
|
||||
if (!codeArg) {
|
||||
done(new Error('Missing --code argument, e.g. --code="canvas.js::205"'));
|
||||
return;
|
||||
}
|
||||
let searchArgs;
|
||||
try {
|
||||
searchArgs = getCoverageSearchArgs(codeArg);
|
||||
} catch (error) {
|
||||
done(error);
|
||||
return;
|
||||
}
|
||||
const result = spawnSync("node", searchArgs, { stdio: "inherit" });
|
||||
if (result.status !== 0) {
|
||||
done(
|
||||
new Error(
|
||||
result.error
|
||||
? `coverage_search failed: ${result.error.message}`
|
||||
: `coverage_search failed (exit code ${result.status})`
|
||||
)
|
||||
const coverageDir =
|
||||
getArgValue("--coverage-output") || BUILD_DIR + "coverage";
|
||||
const result = spawnSync(
|
||||
"node",
|
||||
[
|
||||
path.join(__dirname, "external/ccov/coverage_search.mjs"),
|
||||
`--code=${codeArg}`,
|
||||
`--coverage-dir=${coverageDir}`,
|
||||
],
|
||||
{ encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }
|
||||
);
|
||||
if (result.stderr) {
|
||||
process.stderr.write(result.stderr);
|
||||
}
|
||||
if (result.stdout) {
|
||||
process.stdout.write(result.stdout);
|
||||
}
|
||||
if (result.status !== 0) {
|
||||
done(new Error("coverage_search failed"));
|
||||
return;
|
||||
}
|
||||
done();
|
||||
@ -1157,7 +1030,10 @@ function createBuildNumber(done) {
|
||||
const version = config.versionPrefix + buildNumber;
|
||||
|
||||
exec('git log --format="%h" -n 1', function (err2, stdout2, stderr2) {
|
||||
const buildCommit = !err2 ? stdout2.replace("\n", "") : "";
|
||||
let buildCommit = "";
|
||||
if (!err2) {
|
||||
buildCommit = stdout2.replace("\n", "");
|
||||
}
|
||||
|
||||
createStringSource(
|
||||
"version.json",
|
||||
@ -1810,9 +1686,9 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) {
|
||||
const licenseHeader = fs
|
||||
.readFileSync("./src/license_header.js")
|
||||
.toString()
|
||||
.trim()
|
||||
.replace(/^\/\*/, "")
|
||||
.replace(/\*\/$/, "");
|
||||
.split("\n")
|
||||
.slice(1, -2)
|
||||
.map(line => line.replace(/^\s*\*\s?/, ""));
|
||||
|
||||
const ctx = {
|
||||
rootPath: __dirname,
|
||||
@ -1852,9 +1728,6 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) {
|
||||
[babelPluginPDFJSPreprocessor, ctx],
|
||||
[babelPluginStripSrcPath],
|
||||
];
|
||||
if (!skipBabel) {
|
||||
plugins.push(["babel-plugin-polyfill-corejs3", BABEL_COREJS_OPTS]);
|
||||
}
|
||||
if (enableCoverage) {
|
||||
plugins.push([
|
||||
"babel-plugin-istanbul",
|
||||
@ -1864,16 +1737,28 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) {
|
||||
},
|
||||
]);
|
||||
}
|
||||
plugins.push([babelPluginAddHeaderComment, { header: licenseHeader }]);
|
||||
plugins.push([
|
||||
"add-header-comment",
|
||||
{
|
||||
header: licenseHeader,
|
||||
},
|
||||
]);
|
||||
|
||||
const result = babel.transformSync(file.contents.toString(), {
|
||||
const result = babel.transform(file.contents.toString(), {
|
||||
...(enableCoverage && {
|
||||
filename: file.path,
|
||||
babelrc: false,
|
||||
configFile: false,
|
||||
}),
|
||||
sourceType: "module",
|
||||
presets: skipBabel ? undefined : ["@babel/preset-env"],
|
||||
presets: skipBabel
|
||||
? undefined
|
||||
: [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{ ...BABEL_PRESET_ENV_OPTS, loose: false, modules: false },
|
||||
],
|
||||
],
|
||||
plugins,
|
||||
targets: BABEL_TARGETS,
|
||||
sourceMaps: enableSourceMaps,
|
||||
@ -2514,71 +2399,6 @@ gulp.task("lint-chmod", function (done) {
|
||||
done();
|
||||
});
|
||||
|
||||
gulp.task("lint-bom", async function () {
|
||||
console.log("\n### Checking for UTF-8 byte order marks");
|
||||
|
||||
// Cover untracked-but-not-ignored files too, so a BOM in a freshly created
|
||||
// file is caught before `git add`.
|
||||
const files = execSync("git ls-files -coz --exclude-standard", {
|
||||
encoding: "utf8",
|
||||
maxBuffer: 1 << 28,
|
||||
})
|
||||
.split("\0")
|
||||
.filter(Boolean);
|
||||
|
||||
// Only the first three bytes matter: a leading EF BB BF is a UTF-8 BOM.
|
||||
async function hasBOM(file) {
|
||||
let handle;
|
||||
try {
|
||||
handle = await fs.promises.open(file, "r");
|
||||
} catch {
|
||||
return false; // Directory, broken symlink, removed file, etc.
|
||||
}
|
||||
try {
|
||||
const { bytesRead, buffer } = await handle.read(Buffer.alloc(3), 0, 3, 0);
|
||||
return (
|
||||
bytesRead === 3 &&
|
||||
buffer[0] === 0xef &&
|
||||
buffer[1] === 0xbb &&
|
||||
buffer[2] === 0xbf
|
||||
);
|
||||
} finally {
|
||||
await handle.close();
|
||||
}
|
||||
}
|
||||
|
||||
// Don't exhaust file descriptors.
|
||||
const offenders = [];
|
||||
for (let i = 0; i < files.length; i += 256) {
|
||||
const chunk = files.slice(i, i + 256);
|
||||
const flags = await Promise.all(chunk.map(hasBOM));
|
||||
chunk.forEach((file, j) => flags[j] && offenders.push(file));
|
||||
}
|
||||
offenders.sort();
|
||||
|
||||
if (offenders.length === 0) {
|
||||
console.log("files checked, no errors found");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!process.argv.includes("--fix")) {
|
||||
for (const file of offenders) {
|
||||
console.log(` Unexpected byte order mark: ${file}`);
|
||||
}
|
||||
throw new Error("BOM check failed (run `gulp lint-bom --fix` to clear).");
|
||||
}
|
||||
|
||||
// Strip the BOM on disk and let the user stage the change.
|
||||
await Promise.all(
|
||||
offenders.map(async file => {
|
||||
const content = await fs.promises.readFile(file);
|
||||
await fs.promises.writeFile(file, content.subarray(3));
|
||||
console.log(` removed byte order mark: ${file}`);
|
||||
})
|
||||
);
|
||||
console.log(`done: ${offenders.length} file(s) updated`);
|
||||
});
|
||||
|
||||
gulp.task("lint", function (done) {
|
||||
console.log("\n### Linting JS/CSS/JSON/SVG/HTML files");
|
||||
|
||||
@ -2643,7 +2463,7 @@ gulp.task("lint", function (done) {
|
||||
return;
|
||||
}
|
||||
|
||||
gulp.series("lint-licenses", "lint-chmod", "lint-bom")(done);
|
||||
gulp.series("lint-licenses", "lint-chmod")(done);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -153,19 +153,6 @@ pdfjs-document-properties-linearized = العرض السريع عبر الوِب
|
||||
pdfjs-document-properties-linearized-yes = نعم
|
||||
pdfjs-document-properties-linearized-no = لا
|
||||
pdfjs-document-properties-close-button = أغلق
|
||||
pdfjs-digital-signature-properties-view-certificate = اعرض الشهادة
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = السبب: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = الطابع الزمني: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
|
||||
## Print
|
||||
|
||||
@ -777,49 +764,6 @@ pdfjs-views-manager-waiting-for-file = يرفع ملف…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = أدِر الصفحات
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = خصائص التوقيع الرقمي
|
||||
.aria-label = خصائص التوقيع الرقمي
|
||||
pdfjs-digital-signature-properties-button-label = خصائص التوقيع الرقمي
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = وقِّع المستند بتوقيع رقمي صالح
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = الحالة: تحققَ من التوقيع
|
||||
pdfjs-digital-signature-properties-status-invalid = الحالة: التوقيع غير صالح
|
||||
pdfjs-digital-signature-properties-status-unknown = الحالة: تعذّر التحقق (غير مدعوم)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = الشهادة: موثوقة ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = الشهادة: غير متوفرة
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = الشهادة: غير موثوقة
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = الشهادة: جهة إصدار مجهولة ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = الشهادة: موقعّة ذاتيًا ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = الشهادة: جهة إصدار مجهولة ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = الشهادة: منتهية الصلاحية
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = الشهادة: منتهية الصلاحية ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = الشهادة: مُلغاة
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,28 +153,6 @@ pdfjs-document-properties-linearized = Хуткі прагляд у Інтэрн
|
||||
pdfjs-document-properties-linearized-yes = Так
|
||||
pdfjs-document-properties-linearized-no = Не
|
||||
pdfjs-document-properties-close-button = Закрыць
|
||||
pdfjs-digital-signature-properties-view-certificate = Паказаць сертыфікат
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Прычына: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Адзнака часу: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Дадатковы подпіс ({ $count })
|
||||
[few] Дадатковыя подпісы ({ $count })
|
||||
*[many] Дадатковыя подпісы ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -762,79 +740,6 @@ pdfjs-views-manager-waiting-for-file = Зацягваецца файл…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Кіраванне старонкамі
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Уласцівасці лічбавага подпісу
|
||||
.aria-label = Уласцівасці лічбавага подпісу
|
||||
pdfjs-digital-signature-properties-button-label = Уласцівасці лічбавага подпісу
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Дакумент быў падпісаны сапраўдным лічбавым подпісам
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Дакумент падпісаны, але { $count } лічбавы подпіс не ўдалося праверыць
|
||||
[few] Дакумент падпісаны, але { $count } лічбавыя подпісы не ўдалося праверыць
|
||||
*[many] Дакумент падпісаны, але { $count } лічбавых подпісаў не ўдалося праверыць
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Дакумент падпісаны { $count } недавераным сертыфікатам
|
||||
[few] Дакумент падпісаны { $count } недаверанымі сертыфікатамі
|
||||
*[many] Дакумент падпісаны { $count } недаверанымі сертыфікатамі
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Дакумент падпісаны { $count } пратэрмінаваным сертыфікатам
|
||||
[few] Дакумент падпісаны { $count } пратэрмінаванымі сертыфікатамі
|
||||
*[many] Дакумент падпісаны { $count } пратэрмінаванымі сертыфікатамі
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Дакумент мае { $count } нядзейсны лічбавы подпіс
|
||||
[few] Дакумент мае { $count } нядзейсныя лічбавыя подпісы
|
||||
*[many] Дакумент мае { $count } нядзейсных лічбавых подпісаў
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Дакумент падпісаны { $count } адкліканым сертыфікатам
|
||||
[few] Дакумент падпісаны { $count } адкліканымі сертыфікатамі
|
||||
*[many] Дакумент падпісаны { $count } адкліканымі сертыфікатамі
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Статус: Подпіс правераны
|
||||
pdfjs-digital-signature-properties-status-invalid = Статус: Подпіс нядзейсны
|
||||
pdfjs-digital-signature-properties-status-unknown = Статус: Немагчыма праверыць (не падтрымліваецца)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Сертыфікат: Давераны ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Сертыфікат: Недаступны
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Сертыфікат: Недавераны
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Сертыфікат: Невядомы выдавец ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Сертыфікат: Самападпісаны ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Сертыфікат: Недавераны выдавец ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Сертыфікат: Пратэрмінаваны
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Сертыфікат: Пратэрмінаваны ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Сертыфікат: Адкліканы
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -386,16 +386,3 @@ pdfjs-editor-new-alt-text-not-now-button = Не сега
|
||||
## Image alt-text settings
|
||||
|
||||
pdfjs-editor-alt-text-settings-delete-model-button = Изтриване
|
||||
|
||||
## Controls
|
||||
|
||||
pdfjs-editor-add-signature-image-upload-error-description = Проверете мрежовата си връзка или опитайте с друго изображение.
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-expired = Сертификат: с изтекъл срок на валидност
|
||||
|
||||
@ -5,194 +5,18 @@
|
||||
|
||||
## Main toolbar buttons (tooltips and alt text for images)
|
||||
|
||||
pdfjs-previous-button =
|
||||
.title = بلگه دیندایی
|
||||
pdfjs-previous-button-label = دیندایی
|
||||
pdfjs-next-button =
|
||||
.title = بلگه نیایی
|
||||
pdfjs-next-button-label = بئڌی
|
||||
# .title: Tooltip for the pageNumber input.
|
||||
pdfjs-page-input =
|
||||
.title = بلگه
|
||||
# Variables:
|
||||
# $pagesCount (Number) - the total number of pages in the document
|
||||
# This string follows an input field with the number of the page currently displayed.
|
||||
pdfjs-of-pages = ز { $pagesCount }
|
||||
# Variables:
|
||||
# $pageNumber (Number) - the currently visible page
|
||||
# $pagesCount (Number) - the total number of pages in the document
|
||||
pdfjs-page-of-pages = ({ $pageNumber } ز { $pagesCount })
|
||||
pdfjs-zoom-out-button =
|
||||
.title = کۊچیر نمایی
|
||||
pdfjs-zoom-out-button-label = کۊچیر نمایی
|
||||
pdfjs-zoom-in-button =
|
||||
.title = گپ نمایی
|
||||
pdfjs-zoom-in-button-label = گپ نمایی
|
||||
pdfjs-zoom-select =
|
||||
.title = زۊم کردن
|
||||
pdfjs-open-file-button =
|
||||
.title = گۊشیڌن فایل
|
||||
pdfjs-open-file-button-label = گۊشیڌن
|
||||
pdfjs-print-button =
|
||||
.title = چاپ
|
||||
pdfjs-print-button-label = چاپ
|
||||
pdfjs-save-button =
|
||||
.title = زفت
|
||||
pdfjs-save-button-label = زفت
|
||||
# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).
|
||||
pdfjs-download-button =
|
||||
.title = دانلود
|
||||
# Used in Firefox for Android as a label for the download button (“download” is a verb).
|
||||
# Length of the translation matters since we are in a mobile context, with limited screen estate.
|
||||
pdfjs-download-button-label = دانلود
|
||||
pdfjs-bookmark-button-label = بلگه هیم سکویی
|
||||
|
||||
## Secondary toolbar and context menu
|
||||
|
||||
pdfjs-tools-button =
|
||||
.title = ٱوزارا
|
||||
pdfjs-tools-button-label = ٱوزارا
|
||||
pdfjs-first-page-button =
|
||||
.title = رئڌن و بلگه نیایی
|
||||
pdfjs-first-page-button-label = رئڌن و بلگه نیایی
|
||||
pdfjs-last-page-button =
|
||||
.title = رئڌن و بلگه دیندایی
|
||||
pdfjs-last-page-button-label = رئڌن و بلگه دیندایی
|
||||
pdfjs-page-rotate-cw-button =
|
||||
.title = لر خردن ساعتگرد
|
||||
pdfjs-page-rotate-cw-button-label = لر خردن ساعتگرد
|
||||
pdfjs-page-rotate-ccw-button =
|
||||
.title = لر خردن پاد ساعتگرد
|
||||
pdfjs-page-rotate-ccw-button-label = لر خردن پاد ساعتگرد
|
||||
pdfjs-cursor-text-select-tool-button =
|
||||
.title = فعال کردن ٱوزار پسند هؽل
|
||||
pdfjs-cursor-text-select-tool-button-label = ٱوزار پسند هؽل
|
||||
pdfjs-cursor-hand-tool-button =
|
||||
.title = فعال کردن ٱوزار دست
|
||||
pdfjs-cursor-hand-tool-button-label = ٱوزار دست
|
||||
pdfjs-scroll-page-button =
|
||||
.title = و کار گرؽڌن اسکرۊل بلگه
|
||||
pdfjs-scroll-page-button-label = اسکرۊل بلگه
|
||||
pdfjs-scroll-vertical-button =
|
||||
.title = و کار گرؽڌن اسکرۊل عمۊدی
|
||||
pdfjs-scroll-vertical-button-label = اسکرۊل عمۊدی
|
||||
pdfjs-scroll-horizontal-button =
|
||||
.title = و کار گرؽڌن اسکرۊل اوفوقی
|
||||
pdfjs-scroll-horizontal-button-label = اسکرۊل اوفوقی
|
||||
pdfjs-scroll-wrapped-button =
|
||||
.title = و کار گرؽڌن اسکرۊل پؽچسته
|
||||
pdfjs-scroll-wrapped-button-label = اسکرۊل پؽچسته
|
||||
|
||||
## Document properties dialog
|
||||
|
||||
pdfjs-document-properties-button =
|
||||
.title = خۊسۊسیات سند…
|
||||
pdfjs-document-properties-button-label = خۊسۊسیات سند…
|
||||
pdfjs-document-properties-file-name = نوم فایل:
|
||||
pdfjs-document-properties-file-size = هندا فایل:
|
||||
pdfjs-document-properties-title = عونوان:
|
||||
pdfjs-document-properties-author = هؽل کوݩ:
|
||||
pdfjs-document-properties-subject = سرتال:
|
||||
pdfjs-document-properties-creation-date = تاریخ وورکل وابیڌن:
|
||||
pdfjs-document-properties-modification-date = تاریخ آلشتکاری:
|
||||
# Variables:
|
||||
# $dateObj (Date) - the creation/modification date and time of the PDF file
|
||||
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
pdfjs-document-properties-creator = وورکل کون:
|
||||
pdfjs-document-properties-producer = وورکل کون PDF:
|
||||
pdfjs-document-properties-version = نوسخه PDF:
|
||||
pdfjs-document-properties-page-count = تئداد بلگه یل:
|
||||
pdfjs-document-properties-page-size = هندا بلگه:
|
||||
pdfjs-document-properties-page-size-unit-inches = اینچ
|
||||
pdfjs-document-properties-page-size-unit-millimeters = میلی متر
|
||||
pdfjs-document-properties-page-size-orientation-portrait = portrait
|
||||
pdfjs-document-properties-page-size-orientation-landscape = landscape
|
||||
pdfjs-document-properties-page-size-name-a-three = A3
|
||||
pdfjs-document-properties-page-size-name-a-four = A4
|
||||
pdfjs-document-properties-page-size-name-letter = نامه
|
||||
pdfjs-document-properties-page-size-name-legal = هۊقۊقی
|
||||
|
||||
## Variables:
|
||||
## $width (Number) - the width of the (current) page
|
||||
## $height (Number) - the height of the (current) page
|
||||
## $unit (String) - the unit of measurement of the (current) page
|
||||
## $name (String) - the name of the (current) page
|
||||
## $orientation (String) - the orientation of the (current) page
|
||||
|
||||
pdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })
|
||||
pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })
|
||||
|
||||
##
|
||||
|
||||
# The linearization status of the document; usually called "Fast Web View" in
|
||||
# English locales of Adobe software.
|
||||
pdfjs-document-properties-linearized = نیشتن زل وب:
|
||||
pdfjs-document-properties-linearized-yes = هری
|
||||
pdfjs-document-properties-linearized-no = ن
|
||||
pdfjs-document-properties-close-button = بستن
|
||||
|
||||
## Print
|
||||
|
||||
pdfjs-print-progress-message = ٱماڌه کردن سند سی چاپ کردن…
|
||||
# Variables:
|
||||
# $progress (Number) - percent value
|
||||
pdfjs-print-progress-percent = { $progress }%
|
||||
pdfjs-print-progress-close-button = لقو
|
||||
|
||||
## Tooltips and alt text for side panel toolbar buttons
|
||||
|
||||
pdfjs-toggle-sidebar-button =
|
||||
.title = آلشت هالت نوار کلی
|
||||
pdfjs-toggle-sidebar-button-label = آلشت هالت نوار کلی
|
||||
pdfjs-document-outline-button-label = تئر سند
|
||||
pdfjs-attachments-button =
|
||||
.title = نشووݩ داڌن پیوستا
|
||||
pdfjs-attachments-button-label = پیوستا
|
||||
pdfjs-layers-button-label = لایه یل
|
||||
pdfjs-thumbs-button =
|
||||
.title = نشووݩ داڌن شؽواتا کۊچیر
|
||||
pdfjs-thumbs-button-label = شؽواتا کۊچیر
|
||||
pdfjs-findbar-button =
|
||||
.title = جوستن من سند
|
||||
pdfjs-findbar-button-label = جوستن
|
||||
pdfjs-additional-layers = لایه یل ازافه
|
||||
|
||||
## Thumbnails panel item (tooltip and alt text for images)
|
||||
|
||||
# Variables:
|
||||
# $page (Number) - the page number
|
||||
pdfjs-thumb-page-title =
|
||||
.title = بلگه { $page }
|
||||
|
||||
## Find panel button title and messages
|
||||
|
||||
pdfjs-find-previous-button-label = دیندایی
|
||||
pdfjs-find-next-button-label = بئڌی
|
||||
pdfjs-find-highlight-checkbox = هایلایت کردن پوی
|
||||
|
||||
## Predefined zoom values
|
||||
|
||||
pdfjs-page-scale-width = پئنا بلگه
|
||||
pdfjs-page-scale-fit = هندا کردن بلگه
|
||||
pdfjs-page-scale-auto = زۊم کردن خوتکار
|
||||
pdfjs-page-scale-actual = هندا واقعی
|
||||
# Variables:
|
||||
# $scale (Number) - percent value for page scale
|
||||
pdfjs-page-scale-percent = { $scale }%
|
||||
|
||||
## PDF page
|
||||
|
||||
# Variables:
|
||||
# $page (Number) - the page number
|
||||
pdfjs-page-landmark =
|
||||
.aria-label = بلگه { $page }
|
||||
|
||||
## Annotations
|
||||
|
||||
# Variables:
|
||||
# $dateObj (Date) - the modification date and time of the annotation
|
||||
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
|
||||
## Password
|
||||
|
||||
pdfjs-password-ok-button = خا
|
||||
@ -200,12 +24,6 @@ pdfjs-password-cancel-button = لقو
|
||||
|
||||
## Editing
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = هؽل
|
||||
pdfjs-editor-free-text-button-label = هؽل
|
||||
pdfjs-editor-ink-button =
|
||||
.title = کشیڌن
|
||||
pdfjs-editor-ink-button-label = کشیڌن
|
||||
pdfjs-editor-stamp-button =
|
||||
.title = ٱووردن یا آلشت شؽواتا
|
||||
pdfjs-editor-stamp-button-label = ٱووردن یا آلشت شؽواتا
|
||||
@ -217,14 +35,6 @@ pdfjs-editor-stamp-editor =
|
||||
|
||||
##
|
||||
|
||||
# Editor Parameters
|
||||
pdfjs-editor-free-text-color-input = رنگ
|
||||
pdfjs-editor-free-text-size-input = هندا
|
||||
pdfjs-editor-ink-color-input = رنگ
|
||||
pdfjs-editor-ink-thickness-input = کۊلۊفتی
|
||||
pdfjs-editor-ink-opacity-input = کر بیڌن
|
||||
# This refers to the thickness of the line used for free highlighting (not bound to text)
|
||||
pdfjs-editor-free-highlight-thickness-input = کۊلۊفتی
|
||||
# .default-content is used as a placeholder in an empty text editor.
|
||||
pdfjs-free-text2 =
|
||||
.aria-label = آلشتگر هؽل
|
||||
@ -234,55 +44,15 @@ pdfjs-editor-comments-sidebar-no-comments-link = قلوه دووسته بۊین
|
||||
## Alt-text dialog
|
||||
|
||||
pdfjs-editor-alt-text-cancel-button = لقو
|
||||
pdfjs-editor-alt-text-save-button = زفت
|
||||
|
||||
## Color picker
|
||||
|
||||
pdfjs-editor-colorpicker-yellow =
|
||||
.title = هیل
|
||||
pdfjs-editor-colorpicker-green =
|
||||
.title = ساوز
|
||||
pdfjs-editor-colorpicker-blue =
|
||||
.title = کوۊ
|
||||
pdfjs-editor-colorpicker-pink =
|
||||
.title = آل
|
||||
pdfjs-editor-colorpicker-red =
|
||||
.title = سوئر
|
||||
|
||||
## Show all highlights
|
||||
## This is a toggle button to show/hide all the highlights.
|
||||
|
||||
pdfjs-editor-highlight-show-all-button-label = نشووݩ داڌن پوی
|
||||
pdfjs-editor-highlight-show-all-button =
|
||||
.title = نشووݩ داڌن پوی
|
||||
|
||||
## New alt-text dialog
|
||||
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
|
||||
|
||||
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = قلوه دووسته بۊین
|
||||
pdfjs-editor-new-alt-text-not-now-button = سکو ن
|
||||
pdfjs-editor-new-alt-text-error-close-button = بستن
|
||||
|
||||
## "Annotations removed" bar
|
||||
|
||||
pdfjs-editor-undo-bar-undo-button-label = وورگندن
|
||||
pdfjs-editor-undo-bar-close-button =
|
||||
.title = بستن
|
||||
pdfjs-editor-undo-bar-close-button-label = بستن
|
||||
|
||||
## Tab panels
|
||||
|
||||
pdfjs-editor-add-signature-draw-thickness-range-label = کۊلۊفتی
|
||||
|
||||
## Controls
|
||||
|
||||
pdfjs-editor-add-signature-error-close-button = بستن
|
||||
|
||||
## Dialog buttons
|
||||
|
||||
pdfjs-editor-add-signature-cancel-button = لقو
|
||||
pdfjs-editor-add-signature-add-button = ٱووردن
|
||||
pdfjs-editor-edit-signature-update-button = ورۊ رسۊوی
|
||||
|
||||
## Comment popup
|
||||
|
||||
@ -294,32 +64,4 @@ pdfjs-editor-edit-comment-popup-button =
|
||||
|
||||
# An existing comment is edited
|
||||
pdfjs-editor-edit-comment-dialog-title-when-editing = آلشت منشڌ
|
||||
pdfjs-editor-edit-comment-dialog-save-button-when-editing = ورۊ رسۊوی
|
||||
pdfjs-editor-edit-comment-dialog-save-button-when-adding = ٱووردن
|
||||
pdfjs-editor-edit-comment-dialog-text-input =
|
||||
.placeholder = ناهاڌن پا هؽل کردن…
|
||||
pdfjs-editor-edit-comment-dialog-cancel-button = لقو
|
||||
|
||||
## The view manager is a sidebar displaying different views:
|
||||
## - thumbnails;
|
||||
## - outline;
|
||||
## - attachments;
|
||||
## - layers.
|
||||
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||
|
||||
pdfjs-views-manager-sidebar =
|
||||
.aria-label = نوار کلی
|
||||
pdfjs-views-manager-layers-option-label = لایه یل
|
||||
pdfjs-views-manager-pages-status-action-button-label = دؽوۉداری
|
||||
pdfjs-views-manager-pages-status-copy-button-label = لف گیری
|
||||
pdfjs-views-manager-pages-status-cut-button-label = بۊریڌن
|
||||
pdfjs-views-manager-pages-status-delete-button-label = پاک کردن
|
||||
pdfjs-views-manager-status-undo-button-label = وورگندن
|
||||
pdfjs-views-manager-status-done-button-label = ٱنجوم وابی
|
||||
pdfjs-views-manager-status-close-button =
|
||||
.title = بستن
|
||||
pdfjs-views-manager-status-close-button-label = بستن
|
||||
pdfjs-views-manager-paste-button-label = جا وندن
|
||||
# Badge used to promote a new feature in the UI, keep it as short as possible.
|
||||
# It's spelled uppercase for English, but it can be translated as usual.
|
||||
pdfjs-new-badge-content = نۊ
|
||||
|
||||
@ -153,29 +153,6 @@ pdfjs-document-properties-linearized = Rychlé zobrazování z webu:
|
||||
pdfjs-document-properties-linearized-yes = Ano
|
||||
pdfjs-document-properties-linearized-no = Ne
|
||||
pdfjs-document-properties-close-button = Zavřít
|
||||
pdfjs-digital-signature-properties-view-certificate = Zobrazit certifikát
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Důvod: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Časové razítko: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Podpis ({ $count })
|
||||
[few] Podpisy ({ $count })
|
||||
[many] Podpisy ({ $count })
|
||||
*[other] Podpisy ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -771,84 +748,6 @@ pdfjs-views-manager-waiting-for-file = Nahrávání souboru…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Spravovat strany
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Vlastnosti digitálního podpisu
|
||||
.aria-label = Vlastnosti digitálního podpisu
|
||||
pdfjs-digital-signature-properties-button-label = Vlastnosti digitálního podpisu
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument byl podepsán platným digitálním podpisem
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument je podepsán, ale { $count } elektronický podpis se nepodařilo ověřit
|
||||
[few] Dokument je podepsán, ale { $count } elektronické podpisy se nepodařilo ověřit
|
||||
[many] Dokument je podepsán, ale { $count } elektronických podpisů se nepodařilo ověřit
|
||||
*[other] Dokument je podepsán, ale { $count } elektronických podpisů se nepodařilo ověřit
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument podepsaný { $count } certifikátem, který není důvěryhodný
|
||||
[few] Dokument podepsaný { $count } certifikáty, které nejsou důvěryhodné
|
||||
[many] Dokument podepsaný { $count } certifikáty, které nejsou důvěryhodné
|
||||
*[other] Dokument podepsaný { $count } certifikáty, které nejsou důvěryhodné
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument je podepsaný { $count } prošlým certifikátem
|
||||
[few] Dokument je podepsaný { $count } prošlými certifikáty
|
||||
[many] Dokument je podepsaný { $count } prošlými certifikáty
|
||||
*[other] Dokument je podepsaný { $count } prošlými certifikáty
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument má { $count } neplatný elektronický podpis
|
||||
[few] Dokument má { $count } neplatné elektronické podpisy
|
||||
[many] Dokument má { $count } neplatných elektronických podpisů
|
||||
*[other] Dokument má { $count } neplatných elektronických podpisů
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument je podepsaný { $count } zneplatněným certifikátem
|
||||
[few] Dokument je podepsaný { $count } zneplatněnými certifikáty
|
||||
[many] Dokument je podepsaný { $count } zneplatněnými certifikáty
|
||||
*[other] Dokument je podepsaný { $count } zneplatněnými certifikáty
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stav: Podpis ověřen
|
||||
pdfjs-digital-signature-properties-status-invalid = Stav: Podpis je neplatný
|
||||
pdfjs-digital-signature-properties-status-unknown = Stav: Nelze ověřit (nepodporováno)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certifikát: Důvěryhodný ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certifikát: nedostupný
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certifikát: nedůvěryhodný
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certifikát: Neznámý vydavatel ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certifikát: Self-signed ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certifikát: Nedůvěryhodný vydavatel ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certifikát: vypršel
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certifikát: Vypršel ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certifikát: zneplatněn
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,31 +153,6 @@ pdfjs-document-properties-linearized = Golwg Gwe Cyflym:
|
||||
pdfjs-document-properties-linearized-yes = Iawn
|
||||
pdfjs-document-properties-linearized-no = Na
|
||||
pdfjs-document-properties-close-button = Cau
|
||||
pdfjs-digital-signature-properties-view-certificate = Gweld tystysgrif
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Rheswm: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Stamp amser: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[zero] Is-lofnodion ( { $count } )
|
||||
[one] Is-lofnodion ( { $count } )
|
||||
[two] Is-lofnodion ( { $count } )
|
||||
[few] Is-lofnodion ( { $count } )
|
||||
[many] Is-lofnodion ( { $count } )
|
||||
*[other] Is-lofnodion ( { $count } )
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -789,94 +764,6 @@ pdfjs-views-manager-waiting-for-file = Yn llwytho ffeil i fyny…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Rheoli tudalennau
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Priodweddau llofnod digidol
|
||||
.aria-label = Priodweddau llofnod digidol
|
||||
pdfjs-digital-signature-properties-button-label = Priodweddau llofnod digidol
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Llofnodwyd y ddogfen gyda llofnod digidol dilys
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[zero] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
[one] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
[two] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
[few] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
[many] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
*[other] Llofnodwyd y ddogfen ond doedd dim modd dilysu { $count } llofnod digidol
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[zero] Dogfen wedi'i llofnodi â { $count } thystysgrif does dim modd ymddiried ynddyn nhw
|
||||
[one] Dogfen wedi'i llofnodi â { $count } thystysgrif does dim modd ymddiried ynddi
|
||||
[two] Dogfen wedi'i llofnodi â { $count } thystysgrifau does dim modd ymddiried ynddyn nhw
|
||||
[few] Dogfen wedi'i llofnodi â { $count } thystysgrifau does dim modd ymddiried ynddyn nhw
|
||||
[many] Dogfen wedi'i llofnodi â { $count } thystysgrifau does dim modd ymddiried ynddyn nhw
|
||||
*[other] Dogfen wedi'i llofnodi â { $count } thystysgrifau does dim modd ymddiried ynddyn nhw
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[zero] Dogfen wedi'i llofnodi gyda { $count } tystysgrifau sydd wedi dod i ben
|
||||
[one] Dogfen wedi'i llofnodi gydag { $count } dystysgrif sydd wedi dod i ben
|
||||
[two] Dogfen wedi'i llofnodi gyda { $count } dystysgrif sydd wedi dod i ben
|
||||
[few] Dogfen wedi'i llofnodi gyda { $count } tystysgrif sydd wedi dod i ben
|
||||
[many] Dogfen wedi'i llofnodi gyda { $count } thystysgrif sydd wedi dod i ben
|
||||
*[other] Dogfen wedi'i llofnodi gyda { $count } tystysgrif sydd wedi dod i ben
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[zero] Mae gan y ddogfen { $count } llofnodion digidol annilys
|
||||
[one] Mae gan y ddogfen { $count } llofnod digidol annilys
|
||||
[two] Mae gan y ddogfen { $count } llofnod digidol annilys
|
||||
[few] Mae gan y ddogfen { $count } llofnod digidol annilys
|
||||
[many] Mae gan y ddogfen { $count } llofnod digidol annilys
|
||||
*[other] Mae gan y ddogfen { $count } llofnod digidol annilys
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[zero] Dogfen wedi'i llofnodi gyda { $count } tystysgrifau wedi'u dirymu
|
||||
[one] Dogfen wedi'i llofnodi gyda { $count } tystysgrif wedi'u dirymu
|
||||
[two] Dogfen wedi'i llofnodi gyda { $count } tystysgrif wedi'u dirymu
|
||||
[few] Dogfen wedi'i llofnodi gyda { $count } tystysgrif wedi'u dirymu
|
||||
[many] Dogfen wedi'i llofnodi gyda { $count } thystysgrif wedi'u dirymu
|
||||
*[other] Dogfen wedi'i llofnodi gyda { $count } tystysgrif wedi'u dirymu
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Statws: Llofnod wedi'i ddilysu
|
||||
pdfjs-digital-signature-properties-status-invalid = Statws: Llofnod annilys
|
||||
pdfjs-digital-signature-properties-status-unknown = Statws: Methu dilysu (heb ei gefnogi)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Tystysgrif: Wedi ymddiried ( { $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Tystysgrif: Ddim ar gael
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Tystysgrif: Dim ymddiriedaeth
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Tystysgrif: Cyhoeddwr anhysbys ( { $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Tystysgrif: Hunan-lofnod ( { $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Tystysgrif: Cyhoeddwr heb ymddiriedaeth ( { $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Tystysgrif: Wedi dod i ben
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Tystysgrif: Wedi dod i ben ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Tystysgrif: Wedi'i ddirymu
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -660,10 +660,7 @@ pdfjs-views-manager-view-selector-button =
|
||||
pdfjs-views-manager-view-selector-button-label = Visninger
|
||||
pdfjs-views-manager-pages-title = Sider
|
||||
pdfjs-views-manager-attachments-title = Vedhæftede filer
|
||||
pdfjs-views-manager-layers-title1 = Lag
|
||||
.title = Lag (dobbeltklik for at nulstille alle lag til standard-tilstanden)
|
||||
pdfjs-views-manager-pages-option-label = Sider
|
||||
pdfjs-views-manager-outlines-option-label = Dokument-disposition
|
||||
pdfjs-views-manager-attachments-option-label = Vedhæftede filer
|
||||
pdfjs-views-manager-layers-option-label = Lag
|
||||
pdfjs-views-manager-add-file-button =
|
||||
@ -681,7 +678,6 @@ pdfjs-views-manager-pages-status-action-button-label = Håndter
|
||||
pdfjs-views-manager-pages-status-copy-button-label = Kopier
|
||||
pdfjs-views-manager-pages-status-cut-button-label = Klip
|
||||
pdfjs-views-manager-pages-status-delete-button-label = Slet
|
||||
pdfjs-views-manager-pages-status-export-selected-button-label = Eksporter valgte…
|
||||
# Variables:
|
||||
# $count (Number) - the number of selected pages to be cut.
|
||||
pdfjs-views-manager-status-undo-cut-label =
|
||||
@ -703,8 +699,6 @@ pdfjs-views-manager-pages-status-undo-delete-label =
|
||||
[one] 1 side slettet
|
||||
*[other] { $count } sider slettet
|
||||
}
|
||||
pdfjs-views-manager-pages-status-waiting-ready-label = Gør din fil klar…
|
||||
pdfjs-views-manager-pages-status-waiting-uploading-label = Uploader fil…
|
||||
pdfjs-views-manager-status-undo-button-label = Fortryd
|
||||
pdfjs-views-manager-status-done-button-label = Færdig
|
||||
pdfjs-views-manager-status-close-button =
|
||||
@ -717,10 +711,6 @@ pdfjs-views-manager-paste-button-before =
|
||||
# $page (Number) - the page number after which the paste button is.
|
||||
pdfjs-views-manager-paste-button-after =
|
||||
.title = Indsæt efter side { $page }
|
||||
# Badge used to promote a new feature in the UI, keep it as short as possible.
|
||||
# It's spelled uppercase for English, but it can be translated as usual.
|
||||
pdfjs-new-badge-content = NY
|
||||
pdfjs-views-manager-waiting-for-file = Uploader fil…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Håndter sider
|
||||
|
||||
|
||||
@ -67,8 +67,8 @@ pdfjs-page-rotate-cw-button =
|
||||
.title = Im Uhrzeigersinn drehen
|
||||
pdfjs-page-rotate-cw-button-label = Im Uhrzeigersinn drehen
|
||||
pdfjs-page-rotate-ccw-button =
|
||||
.title = Gegen den Uhrzeigersinn drehen
|
||||
pdfjs-page-rotate-ccw-button-label = Gegen den Uhrzeigersinn drehen
|
||||
.title = Gegen Uhrzeigersinn drehen
|
||||
pdfjs-page-rotate-ccw-button-label = Gegen Uhrzeigersinn drehen
|
||||
pdfjs-cursor-text-select-tool-button =
|
||||
.title = Textauswahl-Werkzeug aktivieren
|
||||
pdfjs-cursor-text-select-tool-button-label = Textauswahl-Werkzeug
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Schnelle Webanzeige:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nein
|
||||
pdfjs-document-properties-close-button = Schließen
|
||||
pdfjs-digital-signature-properties-view-certificate = Zertifikat ansehen
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Grund: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Zeitstempel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] ({ $count }) Untersignatur
|
||||
*[other] ({ $count }) Untersignaturen
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -299,7 +278,7 @@ pdfjs-rendering-error = Beim Darstellen der Seite trat ein Fehler auf.
|
||||
# (32000-1:2008 Table 169 – Annotation types).
|
||||
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
|
||||
pdfjs-text-annotation-type =
|
||||
.alt = [{ $type } Anmerkung]
|
||||
.alt = [Anlage: { $type }]
|
||||
# Variables:
|
||||
# $dateObj (Date) - the modification date and time of the annotation
|
||||
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
@ -626,7 +605,7 @@ pdfjs-editor-add-signature-save-checkbox = Unterschrift speichern
|
||||
pdfjs-editor-add-signature-save-warning-message = Sie haben die Grenze von 5 gespeicherten Unterschriften erreicht. Entfernen Sie eine, um weitere zu speichern.
|
||||
pdfjs-editor-add-signature-image-upload-error-title = Grafik konnte nicht hochgeladen werden
|
||||
pdfjs-editor-add-signature-image-upload-error-description = Überprüfen Sie Ihre Netzwerkverbindung, oder versuchen Sie es mit einer anderen Grafik.
|
||||
pdfjs-editor-add-signature-image-no-data-error-title = Kann Grafik nicht in eine Unterschrift umwandeln
|
||||
pdfjs-editor-add-signature-image-no-data-error-title = Kann Grafik nicht in eine Signatur umwandeln
|
||||
pdfjs-editor-add-signature-image-no-data-error-description = Bitte versuchen Sie, eine andere Grafik hochzuladen.
|
||||
pdfjs-editor-add-signature-error-close-button = Schließen
|
||||
|
||||
@ -730,9 +709,9 @@ pdfjs-views-manager-pages-status-undo-delete-label =
|
||||
}
|
||||
pdfjs-views-manager-pages-status-waiting-ready-label = Ihre Datei wird vorbereitet…
|
||||
pdfjs-views-manager-pages-status-waiting-uploading-label = Datei wird hochgeladen…
|
||||
pdfjs-views-manager-status-warning-cut-label = Ausschneiden nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-warning-cut-label = Ausschneiden war nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-warning-copy-label = Kopieren nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-warning-delete-label = Löschen nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-warning-delete-label = Löschen war nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-warning-save-label = Speichern nicht möglich. Aktualisieren Sie die Seite und versuchen Sie es erneut.
|
||||
pdfjs-views-manager-status-undo-button-label = Rückgängig
|
||||
pdfjs-views-manager-status-done-button-label = Fertig
|
||||
@ -753,79 +732,11 @@ pdfjs-views-manager-waiting-for-file = Datei wird hochgeladen…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Seiten verwalten
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Eigenschaften digitaler Signatur
|
||||
.aria-label = Eigenschaften digitaler Signatur
|
||||
pdfjs-digital-signature-properties-button-label = Eigenschaften digitaler Signatur
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument wurde mit einer gültigen digitalen Signatur signiert
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument signiert, aber { $count } digitale Signatur konnte nicht verifiziert werden
|
||||
*[other] Dokument signiert, aber { $count } digitale Signaturen konnten nicht verifiziert werden
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument mit { $count } Zertifikat signiert, das nicht vertrauenswürdig ist
|
||||
*[other] Dokument mit { $count } Zertifikaten signiert, die nicht vertrauenswürdig sind
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument mit { $count } abgelaufenen Zertifikat signiert
|
||||
*[other] Dokument mit { $count } abgelaufenen Zertifikaten signiert
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument hat { $count } ungültige digitale Signatur
|
||||
*[other] Dokument hat { $count } ungültige digitale Signaturen
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument mit { $count } gesperrten Zertifikat signiert
|
||||
*[other] Dokument mit { $count } gesperrten Zertifikaten signiert
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatur überprüft
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signatur ungültig
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Verifizieren nicht möglich (nicht unterstützt)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Zertifikat: Vertrauenswürdig ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Zertifikat: Nicht verfügbar
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Zertifikat: Nicht vertrauenswürdig
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Zertifikat: Unbekannter Aussteller ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Zertifikat: Selbstsigniert ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Zertifikat: Nicht vertrauenswürdiger Aussteller ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Zertifikat: Abgelaufen
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Zertifikat: Abgelaufen ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Zertifikat: Widerrufen
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
.title = Gespeicherte Unterschrift entfernen
|
||||
pdfjs-editor-delete-signature-button-label1 = Gespeicherte Unterschrift entfernen
|
||||
.title = Gespeicherte Signatur entfernen
|
||||
pdfjs-editor-delete-signature-button-label1 = Gespeicherte Signatur entfernen
|
||||
|
||||
## Editor toolbar
|
||||
|
||||
|
||||
@ -153,29 +153,6 @@ pdfjs-document-properties-linearized = Fast Web View:
|
||||
pdfjs-document-properties-linearized-yes = Jo
|
||||
pdfjs-document-properties-linearized-no = Ně
|
||||
pdfjs-document-properties-close-button = Zacyniś
|
||||
pdfjs-digital-signature-properties-view-certificate = Certifikat pokazaś
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Pśicyna: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Casowy kołk: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] { $count } pódsignatura
|
||||
[two] { $count } pódsignaturje
|
||||
[few] { $count } pódsignatury
|
||||
*[other] { $count } pódsignaturow
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -771,84 +748,6 @@ pdfjs-views-manager-waiting-for-file = Dataja se nagrawa…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Boki zastojaś
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Kakosći digitalneje signatury
|
||||
.aria-label = Kakosći digitalneje signatury
|
||||
pdfjs-digital-signature-properties-button-label = Kakosći digitalneje signatury
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument jo se signěrował z płaśiweju digitalneju signaturu
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument jo se signěrował, ale { $count } digitalna signatura njedajo se wobkšuśiś
|
||||
[two] Dokument jo se signěrował, ale { $count } digitalnej signaturje njedajotej se wobkšuśiś
|
||||
[few] Dokument jo se signěrował, ale { $count } digitalne signatury njedaju se wobkšuśiś
|
||||
*[other] Dokument jo se signěrował, ale { $count } digitalnych signaturow njedajo se wobkšuśiś
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument jo z { $count } certifikatom signěrowany, kótaryž njejo dowěry gódny
|
||||
[two] Dokument jo z { $count } certifikatoma signěrowany, kótarejž njejstej dowěry gódnej
|
||||
[few] Dokument jo z { $count } certifikatami signěrowany, kótarež njejsu dowěry gódne
|
||||
*[other] Dokument jo z { $count } certifikatami signěrowany, kótarež njejsu dowěry gódne
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument jo z { $count } spadnjonym certifikatom signěrowany
|
||||
[two] Dokument jo z { $count } spadnjonyma certifikatoma signěrowany
|
||||
[few] Dokument jo z { $count } spadnjonymi certifikatami signěrowany
|
||||
*[other] Dokument jo z { $count } spadnjonymi certifikatami signěrowany
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument ma { $count } njepłaśiwu digitalnu signaturu
|
||||
[two] Dokument ma { $count } njepłaśiwej digitalnej signaturje
|
||||
[few] Dokument ma { $count } njepłaśiwe digitalne signatury
|
||||
*[other] Dokument ma { $count } njepłaśiwych digitalnych signaturow
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument jo z { $count } wótwołanym certifikatom signěrowany
|
||||
[two] Dokument jo z { $count } wótwołanyma certifikatoma signěrowany
|
||||
[few] Dokument jo z { $count } wótwołanymi certifikatami signěrowany
|
||||
*[other] Dokument jo z { $count } wótwołanymi certifikatami signěrowany
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatura jo wobkšuśona
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signatura jo njepłaśiwa
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Njedajo se wobkšuśiś (njepódpěra se)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certifikat: Dowěry gódny ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certifikat: Nic k dispoziciji
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certifikat: Dowěry njegódny
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certifikat: Njeznaty wudawaŕ ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certifikat: Samsigněrowany ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certifikat: Dowěry njegódny wudawaŕ ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certifikat: Spadnjony
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certifikat: Spadnjony ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certifikat: Wótwołany
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Ταχεία προβολή ιστού:
|
||||
pdfjs-document-properties-linearized-yes = Ναι
|
||||
pdfjs-document-properties-linearized-no = Όχι
|
||||
pdfjs-document-properties-close-button = Κλείσιμο
|
||||
pdfjs-digital-signature-properties-view-certificate = Προβολή πιστοποιητικού
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Αιτία: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Χρονοσήμανση: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Δευτερεύουσα υπογραφή ({ $count })
|
||||
*[other] Δευτερεύουσες υπογραφές ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Μεταφόρτωση αρχείου…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Διαχείριση σελίδων
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Ιδιότητες ψηφιακής υπογραφής
|
||||
.aria-label = Ιδιότητες ψηφιακής υπογραφής
|
||||
pdfjs-digital-signature-properties-button-label = Ιδιότητες ψηφιακής υπογραφής
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Το έγγραφο έχει υπογραφεί με έγκυρη ψηφιακή υπογραφή
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Το έγγραφο έχει υπογραφεί, αλλά δεν ήταν δυνατή η επαλήθευση { $count } ψηφιακής υπογραφής
|
||||
*[other] Το έγγραφο έχει υπογραφεί, αλλά δεν ήταν δυνατή η επαλήθευση { $count } ψηφιακών υπογραφών
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Το έγγραφο έχει υπογραφεί με { $count } πιστοποιητικό που δεν είναι αξιόπιστο
|
||||
*[other] Το έγγραφο έχει υπογραφεί με { $count } πιστοποιητικά που δεν είναι αξιόπιστα
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Το έγγραφο έχει υπογραφεί με { $count } ληγμένο πιστοποιητικό
|
||||
*[other] Το έγγραφο έχει υπογραφεί με { $count } ληγμένα πιστοποιητικά
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Το έγγραφο διαθέτει { $count } μη έγκυρη ψηφιακή υπογραφή
|
||||
*[other] Το έγγραφο διαθέτει { $count } μη έγκυρες ψηφιακές υπογραφές
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Το έγγραφο έχει υπογραφεί με { $count } ανακληθέν πιστοποιητικό
|
||||
*[other] Το έγγραφο έχει υπογραφεί με { $count } ανακληθέντα πιστοποιητικά
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Κατάσταση: Επαληθευμένη υπογραφή
|
||||
pdfjs-digital-signature-properties-status-invalid = Κατάσταση: Μη έγκυρη υπογραφή
|
||||
pdfjs-digital-signature-properties-status-unknown = Κατάσταση: Αδυναμία επαλήθευσης (δεν υποστηρίζεται)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Πιστοποιητικό: Έμπιστο ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Πιστοποιητικό: Μη διαθέσιμο
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Πιστοποιητικό: Μη αξιόπιστο
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Πιστοποιητικό: Άγνωστος εκδότης ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Πιστοποιητικό: Αυτοϋπογεγραμμένο ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Πιστοποιητικό: Μη αξιόπιστος εκδότης ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Πιστοποιητικό: Έχει λήξει
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Πιστοποιητικό: Έχει λήξει ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Πιστοποιητικό: Έχει ανακληθεί
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Fast Web View:
|
||||
pdfjs-document-properties-linearized-yes = Yes
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Close
|
||||
pdfjs-digital-signature-properties-view-certificate = View certificate
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Reason: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Timestamp: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Sub-signature ({ $count })
|
||||
*[other] Sub-signatures ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Uploading file…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Manage pages
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Digital signature properties
|
||||
.aria-label = Digital signature properties
|
||||
pdfjs-digital-signature-properties-button-label = Digital signature properties
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Document was signed with a valid digital signature
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Document signed but { $count } digital signature could not be verified
|
||||
*[other] Document signed but { $count } digital signatures could not be verified
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } certificate that is not trusted
|
||||
*[other] Document signed with { $count } certificates that are not trusted
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } expired certificate
|
||||
*[other] Document signed with { $count } expired certificates
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Document has { $count } invalid digital signature
|
||||
*[other] Document has { $count } invalid digital signatures
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } revoked certificate
|
||||
*[other] Document signed with { $count } revoked certificates
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signature verified
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signature invalid
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Unable to verify (unsupported)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificate: Trusted ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificate: Unavailable
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificate: Untrusted
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificate: Unknown issuer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificate: Self-signed ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificate: Untrusted issuer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificate: Expired
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificate: Expired ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificate: Revoked
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -785,96 +785,3 @@ pdfjs-views-manager-paste-button-after =
|
||||
pdfjs-new-badge-content = NEW
|
||||
|
||||
pdfjs-views-manager-waiting-for-file = Uploading file…
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Digital signature properties
|
||||
.aria-label = Digital signature properties
|
||||
pdfjs-digital-signature-properties-button-label = Digital signature properties
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Document was signed with a valid digital signature
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Document signed but { $count } digital signature could not be verified
|
||||
*[other] Document signed but { $count } digital signatures could not be verified
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } certificate that is not trusted
|
||||
*[other] Document signed with { $count } certificates that are not trusted
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } expired certificate
|
||||
*[other] Document signed with { $count } expired certificates
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Document has { $count } invalid digital signature
|
||||
*[other] Document has { $count } invalid digital signatures
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Document signed with { $count } revoked certificate
|
||||
*[other] Document signed with { $count } revoked certificates
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signature verified
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signature invalid
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Unable to verify (unsupported)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificate: Trusted ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificate: Unavailable
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificate: Untrusted
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificate: Unknown issuer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificate: Self-signed ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificate: Untrusted issuer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificate: Expired
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificate: Expired ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificate: Revoked
|
||||
|
||||
##
|
||||
|
||||
pdfjs-digital-signature-properties-view-certificate = View certificate
|
||||
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Reason: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Timestamp: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Sub-signature ({ $count })
|
||||
*[other] Sub-signatures ({ $count })
|
||||
}
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Rapida tekstaĵa vido:
|
||||
pdfjs-document-properties-linearized-yes = Jes
|
||||
pdfjs-document-properties-linearized-no = Ne
|
||||
pdfjs-document-properties-close-button = Fermi
|
||||
pdfjs-digital-signature-properties-view-certificate = Vidi atestilon
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Kialo: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tempindiko: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Duaranga subskribo ({ $count })
|
||||
*[other] Duarangaj subskriboj ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Dosiero alŝutata…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Administri paĝojn
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Atributoj de cifereca subskribo
|
||||
.aria-label = Atributoj de cifereca subskribo
|
||||
pdfjs-digital-signature-properties-button-label = Atributoj de cifereca subskribo
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = La dokumento estis subskribita de valida cifereca subskribo
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokumento subskribita, tamen { $count } cifereca subskribo ne povis esti kontrolita
|
||||
*[other] Dokumento subskribita, tamen { $count } ciferecaj subskriboj ne povis esti kontrolita
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokumento subskribita de { $count } nefidata atestilo
|
||||
*[other] Dokumento subskribita de { $count } nefidataj atestiloj
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokumento subskribita de { $count } senvalidiĝinta atestilo
|
||||
*[other] Dokumento subskribita de { $count } senvalidiĝintaj atestiloj
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] La dokumento havas { $count } nevalidan ciferecan subskribon
|
||||
*[other] La dokumento havas { $count } nevalidajn ciferecajn subskribojn
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokumento subskribita de { $count } senvalidigita atestilo
|
||||
*[other] Dokumento subskribita de { $count } senvalidigitaj atestiloj
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stato: Subskribo kontrolita
|
||||
pdfjs-digital-signature-properties-status-invalid = Stato: Subskribo nevalida
|
||||
pdfjs-digital-signature-properties-status-unknown = Stato: Ne eblas kontroli (nesubtenata)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Atestilo: Fidata ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Atestilo: Nedisponebla
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Atestilo: Ne fidata
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Atestilo: Nekonata eldoninto ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Atestilo: Memsubskribita ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Atestilo: Nefidata eldoninto ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Atestilo: Senvalidiĝinta
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Atestilo: Senvalidiĝinta ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Atestilo: Senvalidigita
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Vista rápida de la Web:
|
||||
pdfjs-document-properties-linearized-yes = Sí
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Cerrar
|
||||
pdfjs-digital-signature-properties-view-certificate = Ver certificado
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Razón: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Fecha: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Subfirma ({ $count })
|
||||
*[other] Subfirmas ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Subiendo archivo…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Administrar páginas
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Propiedades de firma digital
|
||||
.aria-label = Propiedades de firma digital
|
||||
pdfjs-digital-signature-properties-button-label = Propiedades de firma digital
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = El documento fue firmado con una firma digital válida
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Documento firmado pero { $count } firma digital no pudo ser verificada
|
||||
*[other] Documento firmado pero { $count } firmas digitales no pudieron ser verificadas
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado que no es confiable
|
||||
*[other] Documento firmado con { $count } certificados que no son confiables
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado expirado
|
||||
*[other] Documento firmado con { $count } certificado expirado
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] El documento tiene { $count } firmas digital inválida
|
||||
*[other] El documento tiene { $count } firmas digitales inválidas
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado revocado
|
||||
*[other] Documento firmado con { $count } certificados revocados
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Estado: Firma verificada
|
||||
pdfjs-digital-signature-properties-status-invalid = Estado: Firma inválida
|
||||
pdfjs-digital-signature-properties-status-unknown = Estado: No se puede verificar (no soportada)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificado: Confiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificado: No disponible
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificado: No confiable
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificado: Emisor desconocido ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificado: Autofirmado ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificado: Emisor no confiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificado: Vencido
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificado: Vencido ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificado: Revocado
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Vista rápida en Web:
|
||||
pdfjs-document-properties-linearized-yes = Sí
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Cerrar
|
||||
pdfjs-digital-signature-properties-view-certificate = Ver certificado
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Motivo: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Marca de tiempo: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Subfirma ({ $count })
|
||||
*[other] Subfirmas ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Subiendo archivo…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gestionar páginas
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Propiedades de firma digital
|
||||
.aria-label = Propiedades de firma digital
|
||||
pdfjs-digital-signature-properties-button-label = Propiedades de firma digital
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = El documento fue firmado con una firma digital válida
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Documento firmado, pero no se pudo verificar la firma digital
|
||||
*[other] Documento firmado, pero no se pudieron verificar las { $count } firmas digitales
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado que no es de confianza
|
||||
*[other] Documento firmado con { $count } certificados que no son de confianza
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado expirado
|
||||
*[other] Documento firmado con { $count } certificados expirados
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] El documento tiene { $count } firma digital no válida
|
||||
*[other] El documento tiene { $count } firmas digitales no válidas
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Documento firmado con { $count } certificado revocado
|
||||
*[other] Documento firmado con { $count } certificados revocados
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Estado: Firma verificada
|
||||
pdfjs-digital-signature-properties-status-invalid = Estado: Firma inválida
|
||||
pdfjs-digital-signature-properties-status-unknown = Estado: No se puede verificar (no compatible)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificado: Confiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificado: No disponible
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificado: No confiable
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificado: Emisor desconocido ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificado: Autofirmado ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificado: Emisor no confiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificado: Expirado
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificado: Expirado ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificado: Revocado
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,7 +153,6 @@ pdfjs-document-properties-linearized = Vista rápida de la web:
|
||||
pdfjs-document-properties-linearized-yes = Sí
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Cerrar
|
||||
pdfjs-digital-signature-properties-view-certificate = Ver certificado
|
||||
|
||||
## Print
|
||||
|
||||
@ -162,8 +161,8 @@ pdfjs-print-progress-message = Preparando documento para impresión…
|
||||
# $progress (Number) - percent value
|
||||
pdfjs-print-progress-percent = { $progress }%
|
||||
pdfjs-print-progress-close-button = Cancelar
|
||||
pdfjs-printing-not-supported = Advertencia: La impresión no está completamente soportada por este navegador.
|
||||
pdfjs-printing-not-ready = Advertencia: El PDF no cargó completamente para impresión.
|
||||
pdfjs-printing-not-supported = Advertencia: La impresión no esta completamente soportada por este navegador.
|
||||
pdfjs-printing-not-ready = Advertencia: El PDF no cargo completamente para impresión.
|
||||
|
||||
## Tooltips and alt text for side panel toolbar buttons
|
||||
|
||||
@ -266,7 +265,7 @@ pdfjs-page-landmark =
|
||||
## Loading indicator messages
|
||||
|
||||
pdfjs-loading-error = Un error ocurrió al cargar el PDF.
|
||||
pdfjs-invalid-file-error = Archivo PDF inválido o dañado.
|
||||
pdfjs-invalid-file-error = Archivo PDF invalido o dañado.
|
||||
pdfjs-missing-file-error = Archivo PDF no encontrado.
|
||||
pdfjs-unexpected-response-error = Respuesta inesperada del servidor.
|
||||
pdfjs-rendering-error = Un error ocurrió al renderizar la página.
|
||||
@ -361,7 +360,7 @@ pdfjs-editor-remove-signature-button =
|
||||
pdfjs-editor-free-text-color-input = Color
|
||||
pdfjs-editor-free-text-size-input = Tamaño
|
||||
pdfjs-editor-ink-color-input = Color
|
||||
pdfjs-editor-ink-thickness-input = Grosor
|
||||
pdfjs-editor-ink-thickness-input = Grossor
|
||||
pdfjs-editor-ink-opacity-input = Opacidad
|
||||
pdfjs-editor-stamp-add-image-button =
|
||||
.title = Agregar imagen
|
||||
@ -581,7 +580,7 @@ pdfjs-editor-add-signature-type-input =
|
||||
.aria-label = Escribe tu firma
|
||||
.placeholder = Escribe tu firma
|
||||
pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma
|
||||
pdfjs-editor-add-signature-draw-thickness-range-label = Grosor
|
||||
pdfjs-editor-add-signature-draw-thickness-range-label = Grossor
|
||||
# Variables:
|
||||
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
|
||||
pdfjs-editor-add-signature-draw-thickness-range =
|
||||
@ -698,15 +697,15 @@ pdfjs-views-manager-status-undo-cut-label =
|
||||
# $count (Number) - the number of selected pages to be copied.
|
||||
pdfjs-views-manager-pages-status-undo-copy-label =
|
||||
{ $count ->
|
||||
[one] 1 página copiada
|
||||
*[other] { $count } páginas copiadas
|
||||
[one] 1 pagina copiada
|
||||
*[other] { $count } paginas copiadas
|
||||
}
|
||||
# Variables:
|
||||
# $count (Number) - the number of selected pages to be deleted.
|
||||
pdfjs-views-manager-pages-status-undo-delete-label =
|
||||
{ $count ->
|
||||
[one] 1 página eliminada
|
||||
*[other] { $count } páginas eliminadas
|
||||
[one] 1 pagina eliminada
|
||||
*[other] { $count } paginas eliminadas
|
||||
}
|
||||
pdfjs-views-manager-pages-status-waiting-ready-label = Preparando tu archivo…
|
||||
pdfjs-views-manager-pages-status-waiting-uploading-label = Subiendo archivo…
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Webeko ikuspegi bizkorra:
|
||||
pdfjs-document-properties-linearized-yes = Bai
|
||||
pdfjs-document-properties-linearized-no = Ez
|
||||
pdfjs-document-properties-close-button = Itxi
|
||||
pdfjs-digital-signature-properties-view-certificate = Ikusi ziurtagiria
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Arrazoia: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Denbora-marka: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Azpi-sinadura ({ $count })
|
||||
*[other] Azpi-sinadurak ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -422,11 +401,11 @@ pdfjs-editor-comments-sidebar-no-comments-link = Argibide gehiago
|
||||
|
||||
## Alt-text dialog
|
||||
|
||||
pdfjs-editor-alt-text-button-label = Ordezko testua
|
||||
pdfjs-editor-alt-text-button-label = Testu alternatiboa
|
||||
pdfjs-editor-alt-text-edit-button =
|
||||
.aria-label = Editatu ordezko testua
|
||||
.aria-label = Editatu testu alternatiboa
|
||||
pdfjs-editor-alt-text-dialog-label = Aukeratu aukera
|
||||
pdfjs-editor-alt-text-dialog-description = Ordezko testuak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen.
|
||||
pdfjs-editor-alt-text-dialog-description = Testu alternatiboak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen.
|
||||
pdfjs-editor-alt-text-add-description-label = Gehitu azalpena
|
||||
pdfjs-editor-alt-text-add-description-description = Saiatu idazten gaia, ezarpena edo ekintzak deskribatzen dituen esaldi 1 edo 2.
|
||||
pdfjs-editor-alt-text-mark-decorative-label = Markatu apaingarri gisa
|
||||
@ -439,7 +418,7 @@ pdfjs-editor-alt-text-textarea =
|
||||
.placeholder = Adibidez, "gizon gaztea mahaian eserita dago bazkaltzeko"
|
||||
# Alternative text (alt text) helps when people can't see the image.
|
||||
pdfjs-editor-alt-text-button =
|
||||
.aria-label = Ordezko testua
|
||||
.aria-label = Testu alternatiboa
|
||||
|
||||
## Editor resizers
|
||||
## This is used in an aria label to help to understand the role of the resizer.
|
||||
@ -491,38 +470,38 @@ pdfjs-editor-highlight-show-all-button =
|
||||
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
|
||||
|
||||
# Modal header positioned above a text box where users can edit the alt text.
|
||||
pdfjs-editor-new-alt-text-dialog-edit-label = Editatu ordezko testua (irudiaren azalpena)
|
||||
pdfjs-editor-new-alt-text-dialog-edit-label = Editatu testu alternatiboa (irudiaren azalpena)
|
||||
# Modal header positioned above a text box where users can add the alt text.
|
||||
pdfjs-editor-new-alt-text-dialog-add-label = Gehitu ordezko testua (irudiaren azalpena)
|
||||
pdfjs-editor-new-alt-text-dialog-add-label = Gehitu testu alternatiboa (irudiaren azalpena)
|
||||
pdfjs-editor-new-alt-text-textarea =
|
||||
.placeholder = Idatzi zure azalpena hemen…
|
||||
# This text refers to the alt text box above this description. It offers a definition of alt text.
|
||||
pdfjs-editor-new-alt-text-description = Azalpen laburra irudia ikusi ezin duen jendearentzat edo irudia kargatu ezin denerako.
|
||||
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
|
||||
pdfjs-editor-new-alt-text-disclaimer1 = Ordezko testu hau automatikoki sortu da eta okerra izan liteke.
|
||||
pdfjs-editor-new-alt-text-disclaimer1 = Testu alternatibo hau automatikoki sortu da eta okerra izan liteke.
|
||||
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Argibide gehiago
|
||||
pdfjs-editor-new-alt-text-create-automatically-button-label = Sortu ordezko testua automatikoki
|
||||
pdfjs-editor-new-alt-text-create-automatically-button-label = Sortu testu alternatiboa automatikoki
|
||||
pdfjs-editor-new-alt-text-not-now-button = Une honetan ez
|
||||
pdfjs-editor-new-alt-text-error-title = Ezin da ordezko testua automatikoki sortu
|
||||
pdfjs-editor-new-alt-text-error-description = Idatzi zure ordezko testu propioa edo saiatu berriro geroago.
|
||||
pdfjs-editor-new-alt-text-error-title = Ezin da testu alternatiboa automatikoki sortu
|
||||
pdfjs-editor-new-alt-text-error-description = Idatzi zure testu alternatibo propioa edo saiatu berriro geroago.
|
||||
pdfjs-editor-new-alt-text-error-close-button = Itxi
|
||||
# Variables:
|
||||
# $totalSize (Number) - the total size (in MB) of the AI model.
|
||||
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
|
||||
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Ordezko testuaren AA modeloa deskargatzen ({ $downloadedSize }/{ $totalSize } MB)
|
||||
.aria-valuetext = Ordezko testuaren AA modeloa deskargatzen ({ $downloadedSize }/{ $totalSize } MB)
|
||||
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Testu alternatiboaren AA modeloa deskargatzen ({ $downloadedSize }/{ $totalSize } MB)
|
||||
.aria-valuetext = Testu alternatiboaren AA modeloa deskargatzen ({ $downloadedSize }/{ $totalSize } MB)
|
||||
# This is a button that users can click to edit the alt text they have already added.
|
||||
pdfjs-editor-new-alt-text-added-button =
|
||||
.aria-label = Ordezko testua gehituta
|
||||
pdfjs-editor-new-alt-text-added-button-label = Ordezko testua gehituta
|
||||
.aria-label = Testu alternatiboa gehituta
|
||||
pdfjs-editor-new-alt-text-added-button-label = Testu alternatiboa gehituta
|
||||
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
|
||||
pdfjs-editor-new-alt-text-missing-button =
|
||||
.aria-label = Ordezko testua falta da
|
||||
pdfjs-editor-new-alt-text-missing-button-label = Ordezko testua falta da
|
||||
.aria-label = Testu alternatiboa falta da
|
||||
pdfjs-editor-new-alt-text-missing-button-label = Testu alternatiboa falta da
|
||||
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
|
||||
pdfjs-editor-new-alt-text-to-review-button =
|
||||
.aria-label = Berrikusi ordezko testua
|
||||
pdfjs-editor-new-alt-text-to-review-button-label = Berrikusi ordezko testua
|
||||
.aria-label = Berrikusi testu alternatiboa
|
||||
pdfjs-editor-new-alt-text-to-review-button-label = Berrikusi testu alternatiboa
|
||||
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
|
||||
# Variables:
|
||||
# $generatedAltText (String) - the generated alt-text.
|
||||
@ -531,22 +510,22 @@ pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatikoki sort
|
||||
## Image alt-text settings
|
||||
|
||||
pdfjs-image-alt-text-settings-button =
|
||||
.title = Irudien ordezko testuaren ezarpenak
|
||||
pdfjs-image-alt-text-settings-button-label = Irudien ordezko testuaren ezarpenak
|
||||
pdfjs-editor-alt-text-settings-dialog-label = Irudien ordezko testuaren ezarpenak
|
||||
pdfjs-editor-alt-text-settings-automatic-title = Ordezko testu automatikoa
|
||||
pdfjs-editor-alt-text-settings-create-model-button-label = Sortu ordezko testua automatikoki
|
||||
.title = Irudiaren testu alternatiboaren ezarpenak
|
||||
pdfjs-image-alt-text-settings-button-label = Irudiaren testu alternatiboaren ezarpenak
|
||||
pdfjs-editor-alt-text-settings-dialog-label = Irudiaren testu alternatiboaren ezarpenak
|
||||
pdfjs-editor-alt-text-settings-automatic-title = Testu alternatibo automatikoa
|
||||
pdfjs-editor-alt-text-settings-create-model-button-label = Sortu testu alternatiboa automatikoki
|
||||
pdfjs-editor-alt-text-settings-create-model-description = Azalpenak iradokitzen ditu irudia ikusi ezin duen jendearentzat edo irudia kargatu ezin denerako.
|
||||
# Variables:
|
||||
# $totalSize (Number) - the total size (in MB) of the AI model.
|
||||
pdfjs-editor-alt-text-settings-download-model-label = Ordezko testuaren AA modeloa ({ $totalSize } MB)
|
||||
pdfjs-editor-alt-text-settings-ai-model-description = Zure gailuan modu lokalean exekutatzen da eta zure datuak pribatu mantentzen dira. Ordezko testu automatikorako beharrezkoa.
|
||||
pdfjs-editor-alt-text-settings-download-model-label = Testu alternatiboaren AA modeloa ({ $totalSize } MB)
|
||||
pdfjs-editor-alt-text-settings-ai-model-description = Zure gailuan modu lokalean exekutatzen da eta zure datuak pribatu mantentzen dira. Testu alternatibo automatikorako beharrezkoa.
|
||||
pdfjs-editor-alt-text-settings-delete-model-button = Ezabatu
|
||||
pdfjs-editor-alt-text-settings-download-model-button = Deskargatu
|
||||
pdfjs-editor-alt-text-settings-downloading-model-button = Deskargatzen…
|
||||
pdfjs-editor-alt-text-settings-editor-title = Ordezko testuaren editorea
|
||||
pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi ordezko testua irudi bat gehitzean berehala
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudi guztiek ordezko testua dutela ziurtatzen laguntzen dizu.
|
||||
pdfjs-editor-alt-text-settings-editor-title = Testu alternatiboaren editorea
|
||||
pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alternatiboa irudi bat gehitzean berehala
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu.
|
||||
pdfjs-editor-alt-text-settings-close-button = Itxi
|
||||
|
||||
## Accessibility labels (announced by screen readers) for objects added to the editor.
|
||||
@ -584,7 +563,7 @@ pdfjs-editor-undo-bar-close-button-label = Itxi
|
||||
pdfjs-editor-add-signature-dialog-label =
|
||||
Leiho modal honek PDF dokumentu batera gehitzeko sinadurak
|
||||
sortzea ahalbidetzen dio erabiltzaileari. Erabiltzaileak izena edita
|
||||
dezake (ordezko testu modura ere erabiltzen dena) eta sinadura
|
||||
dezake (testu alternatibo modura ere erabiltzen dena) eta sinadura
|
||||
gordetzeko aukera du gehiagotan erabili ahal izateko.
|
||||
pdfjs-editor-add-signature-dialog-title = Gehitu sinadura
|
||||
|
||||
@ -619,9 +598,9 @@ pdfjs-editor-add-signature-image-browse-link =
|
||||
|
||||
## Controls
|
||||
|
||||
pdfjs-editor-add-signature-description-label = Azalpena (ordezko testua)
|
||||
pdfjs-editor-add-signature-description-label = Azalpena (testu alternatiboa)
|
||||
pdfjs-editor-add-signature-description-input =
|
||||
.title = Azalpena (ordezko testua)
|
||||
.title = Azalpena (testu alternatiboa)
|
||||
pdfjs-editor-add-signature-description-default-when-drawing = Sinadura
|
||||
pdfjs-editor-add-signature-clear-button-label = Garbitu sinadura
|
||||
pdfjs-editor-add-signature-clear-button =
|
||||
@ -757,74 +736,6 @@ pdfjs-views-manager-waiting-for-file = Fitxategia igotzen…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Kudeatu orriak
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Sinadura digitalaren propietateak
|
||||
.aria-label = Sinadura digitalaren propietateak
|
||||
pdfjs-digital-signature-properties-button-label = Sinadura digitalaren propietateak
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokumentua baliozko sinadura digitalarekin sinatuta dago
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokumentua sinatuta dago baina sinadura digital bat ezin izan da egiaztatu
|
||||
*[other] Dokumentua sinatuta dago baina { $count } sinadura digital ezin izan dira egiaztatu
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Document ziurtagiri fidagaitz batekin sinatuta dago
|
||||
*[other] Document { $count } ziurtagiri fidagaitzekin sinatuta dago
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokumentua iraungitako ziurtagiri batekin sinatuta dago
|
||||
*[other] Dokumentua iraungitako { $count } ziurtagirirekin sinatuta dago
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokumentuak sinadura digital baliogabe bat du
|
||||
*[other] Dokumentuak { $count } sinadura digital baliogabe ditu
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokumentua baliogabetutako ziurtagiri batekin sinatuta dago
|
||||
*[other] Dokumentua baliogabetutako { $count } ziurtagirirekin sinatuta dago
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Egoera: sinadura egiaztatuta
|
||||
pdfjs-digital-signature-properties-status-invalid = Egoera: sinadura baliogabea
|
||||
pdfjs-digital-signature-properties-status-unknown = Egoera: ezin da egiaztatu (euskarririk ez)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Ziurtagiria: fidagarria ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Ziurtagiria: ez dago erabilgarri
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Ziurtagiria: fidagaitza
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Ziurtagiria: jaulkitzaile ezezaguna ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Ziurtagiria: bere buruak sinatutakoa ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Ziurtagiria: jaulkitzaile fidagaitza ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Ziurtagiria: iraungita
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Ziurtagiria: iraungita ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Ziurtagiria: baliogabetuta
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Nopea web-katselu:
|
||||
pdfjs-document-properties-linearized-yes = Kyllä
|
||||
pdfjs-document-properties-linearized-no = Ei
|
||||
pdfjs-document-properties-close-button = Sulje
|
||||
pdfjs-digital-signature-properties-view-certificate = Näytä varmenne
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Syy: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Aikaleima: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Aliallekirjoitus ({ $count })
|
||||
*[other] Aliallekirjoitukset ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Lähetetään tiedostoa…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Hallitse sivuja
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Digitaalisen allekirjoituksen ominaisuudet
|
||||
.aria-label = Digitaalisen allekirjoituksen ominaisuudet
|
||||
pdfjs-digital-signature-properties-button-label = Digitaalisen allekirjoituksen ominaisuudet
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Asiakirja allekirjoitettiin kelvollisella digitaalisella allekirjoituksella
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Asiakirja allekirjoitettu, mutta { $count } digitaalista allekirjoitusta ei voitu vahvistaa
|
||||
*[other] Asiakirja allekirjoitettu, mutta { $count } digitaalista allekirjoitusta ei voitu vahvistaa
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Asiakirja on allekirjoitettu { $count } varmenteella, johon ei luoteta
|
||||
*[other] Asiakirja on allekirjoitettu { $count } varmenteella, joihin ei luoteta
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Asiakirja allekirjoitettu { $count } vanhentuneella varmenteella
|
||||
*[other] Asiakirja allekirjoitettu { $count } vanhentuneella varmenteella
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Asiakirjassa on { $count } virheellinen digitaalinen allekirjoitus
|
||||
*[other] Asiakirjassa on { $count } virheellistä digitaalista allekirjoitusta
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Asiakirja allekirjoitettu { $count } kumotulla varmenteella
|
||||
*[other] Asiakirja allekirjoitettu { $count } kumotulla varmenteella
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Tila: Allekirjoitus vahvistettu
|
||||
pdfjs-digital-signature-properties-status-invalid = Tila: Allekirjoitus virheellinen
|
||||
pdfjs-digital-signature-properties-status-unknown = Tila: Vahvistus epäonnistui (ei tuettu)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Varmenne: Luotettu ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Varmenne: Ei saatavilla
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Varmenne: Ei-luotettu
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Varmenne: Tuntematon myöntäjä ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Varmenne: Itse allekirjoitettu ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Varmenne: Ei-luotettu myöntäjä ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Varmenne: Vanhentunut
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Varmenne: Vanhentunut ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Varmenne: Kumottu
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Affichage rapide des pages web :
|
||||
pdfjs-document-properties-linearized-yes = Oui
|
||||
pdfjs-document-properties-linearized-no = Non
|
||||
pdfjs-document-properties-close-button = Fermer
|
||||
pdfjs-digital-signature-properties-view-certificate = Afficher le certificat
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Raison : { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Horodatage : { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Sous-signature ({ $count })
|
||||
*[other] Sous-signatures ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -257,7 +236,7 @@ pdfjs-find-match-count = Occurrence { $current } sur { $total }
|
||||
# $limit (Number) - the maximum number of matches
|
||||
pdfjs-find-match-count-limit =
|
||||
{ $limit ->
|
||||
[1] Plus d’une occurrence
|
||||
[one] Plus d’{ $limit } occurrence
|
||||
*[other] Plus de { $limit } occurrences
|
||||
}
|
||||
pdfjs-find-not-found = Expression non trouvée
|
||||
@ -749,74 +728,6 @@ pdfjs-views-manager-waiting-for-file = Envoi du fichier…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gérer les pages
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Propriétés de la signature numérique
|
||||
.aria-label = Propriétés de la signature numérique
|
||||
pdfjs-digital-signature-properties-button-label = Propriétés de la signature numérique
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Le document a été signé avec une signature numérique valide
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Document signé mais { $count } signature numérique n’a pas pu être vérifiée
|
||||
*[other] Document signé mais { $count } signatures numériques n’ont pas pu être vérifiées
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[1] Document signé avec un certificat non digne de confiance
|
||||
*[other] Document signé avec { $count } certificats non dignes de confiance
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[1] Document signé avec un certificat expiré
|
||||
*[other] Document signé avec { $count } certificats expirés
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[1] Le document contient une signature numérique non valide
|
||||
*[other] Le document contient { $count } signatures numériques non valides
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[1] Document signé avec un certificat révoqué
|
||||
*[other] Document signé avec { $count } certificats révoqués
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = État : signature vérifiée
|
||||
pdfjs-digital-signature-properties-status-invalid = État : signature invalide
|
||||
pdfjs-digital-signature-properties-status-unknown = État : impossible à vérifier (non pris en charge)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificat : fiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificat : indisponible
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificat : non fiable
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificat : émetteur inconnu ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificat : auto-signé ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificat : émetteur non fiable ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificat : expiré
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificat : expiré ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificat : révoqué
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Flugge webwerjefte:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nee
|
||||
pdfjs-document-properties-close-button = Slute
|
||||
pdfjs-digital-signature-properties-view-certificate = Sertifikaat besjen
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Reden: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tiidstimpel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Undertekening ({ $count })
|
||||
*[other] Undertekeningen ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Bestân oplade…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Siden beheare
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Eigenskippen fan digitale hantekening
|
||||
.aria-label = Eigenskippen fan digitale hantekening
|
||||
pdfjs-digital-signature-properties-button-label = Eigenskippen fan digitale hantekening
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokumint is ûndertekene mei in jildige digitale hantekening
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokumint ûndertekene, mar { $count } digitale hantekening koe net ferifiearre wurde
|
||||
*[other] Dokumint ûndertekene, mar { $count } digitale hantekeningen koene net ferifiearre wurde
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokumint ûndertekene mei { $count } sertifikaat dat net fertroud wurdt
|
||||
*[other] Dokumint ûndertekene mei { $count } sertifikaten dy’t net fertroud wurde
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokumint ûndertekene mei { $count } ferrûne sertifikaat
|
||||
*[other] Dokumint ûndertekene mei { $count } ferrûne sertifikaten
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokumint hat { $count } ûnjildige digitale hantekening
|
||||
*[other] Dokumint hat { $count } ûnjildige digitale hantekeningen
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokumint ûndertekene mei { $count } ynlutsen sertifikaat
|
||||
*[other] Dokumint ûndertekene mei { $count } ynlutsen sertifikaten
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: hantekening ferifiearre
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: hantekening ûnjildich
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: kin net ferifiearje wurde (net stipe)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Sertifikaat: fertroud ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Sertifikaat: net beskikber
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Sertifikaat: net fertroud
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Sertifikaat: Unbekende útjouwer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Sertifikaat: selsûndertekene ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Sertifikaat: net-fertroude útjouwer ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Sertifikaat: ferrûn
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Sertifikaat: ferrûn ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Sertifikaat: ynlutsen
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Ñanduti jahecha pya’e:
|
||||
pdfjs-document-properties-linearized-yes = Añete
|
||||
pdfjs-document-properties-linearized-no = Ahániri
|
||||
pdfjs-document-properties-close-button = Mboty
|
||||
pdfjs-digital-signature-properties-view-certificate = Mboajapyre jehecha
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Mba’ére: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Ára: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Mboheraguapy’i ({ $count })
|
||||
*[other] Mboheraguapy’ieta ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -581,7 +560,6 @@ pdfjs-editor-undo-bar-close-button-label = Mboty
|
||||
|
||||
## Add a signature dialog
|
||||
|
||||
pdfjs-editor-add-signature-dialog-label = Ko modal omoneĩ poruhárape omoheñóivo mboheraguapy ombojuaju hag̃ua PDF rehe. Upe poruhára ombosako’ikuaa téra (oikóva avei moñe’ẽrã mokõihávarõ) ha, ejaposérõ, eñongatu mboheraguapy eiporujey hag̃ua.
|
||||
pdfjs-editor-add-signature-dialog-title = Embojuaju teraguapy
|
||||
|
||||
## Tab names
|
||||
@ -753,49 +731,6 @@ pdfjs-views-manager-waiting-for-file = Ehupihína marandurenda…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Eñangareko kuotiarogue
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Firma digital oguerekóva
|
||||
.aria-label = Firma digital oguerekóva
|
||||
pdfjs-digital-signature-properties-button-label = Firma digital oguerekóva
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Pe kuatia oñemboheraguapy firma digital oikóvape
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Heko: Mboheraguapy hechajeypyre
|
||||
pdfjs-digital-signature-properties-status-invalid = Heko: Mboheraguapy oiko’ỹva
|
||||
pdfjs-digital-signature-properties-status-unknown = Heko: Ndojehechajeykuaái (ndojokupytýi)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Mboajapyre: Jeroviaha ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Mboajapyre: Oĩ’ỹva
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Mboajapyre: Jerovia’ỹha
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Mboajapyre: Guenohẽha jekuaa’ỹva ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Mboajapyre: Heraguapejeheguíva { $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Mboajapyre: Guenohẽha jerovia’ỹha ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Mboajapyre: Oikove’ỹmava
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Mboajapyre: Oikove’ỹmava ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Mboajapyre: Mbojevypyre
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = תצוגת דף מהירה:
|
||||
pdfjs-document-properties-linearized-yes = כן
|
||||
pdfjs-document-properties-linearized-no = לא
|
||||
pdfjs-document-properties-close-button = סגירה
|
||||
pdfjs-digital-signature-properties-view-certificate = הצגת אישור
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = סיבה: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = חותמת זמן: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] חתימת משנה ({ $count })
|
||||
*[other] חתימות משנה ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = בתהליך העלאת הקובץ…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = ניהול עמודים
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = מאפייני חתימה דיגיטלית
|
||||
.aria-label = מאפייני חתימה דיגיטלית
|
||||
pdfjs-digital-signature-properties-button-label = מאפייני חתימה דיגיטלית
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = המסמך נחתם בחתימה דיגיטלית תקפה
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] המסמך חתום אך לא ניתן היה לאמת חתימה דיגיטלית אחת
|
||||
*[other] המסמך חתום אך לא ניתן היה לאמת { $count } חתימות דיגיטליות
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] המסמך חתום עם אישור אחד שאינו מהימן
|
||||
*[other] המסמך חתום עם { $count } אישורים שאינם מהימנים
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] המסמך חתום עם אישור אחד שפג תוקפו
|
||||
*[other] המסמך חתום עם { $count } אישורים שפג תוקפם
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] למסמך יש חתימה דיגיטלית אחת שאינה תקינה
|
||||
*[other] למסמך יש { $count } חתימות דיגיטליות שאינן תקינות
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] המסמך חתום עם אישור אחד שנשלל
|
||||
*[other] המסמך חתום עם { $count } אישורים שנשללו
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = מצב: החתימה מאומתת
|
||||
pdfjs-digital-signature-properties-status-invalid = מצב: החתימה לא תקינה
|
||||
pdfjs-digital-signature-properties-status-unknown = מצב: לא ניתן לאמת (לא נתמך)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = אישור אבטחה: מהימן ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = אישור אבטחה: לא זמין
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = אישור אבטחה: לא מהימן
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = אישור אבטחה: מנפיק לא ידוע ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = אישור אבטחה: נחתם עצמית ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = אישור אבטחה: מנפיק לא מהימן ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = אישור אבטחה: פג תוקפו
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = אישור אבטחה: פג תוקפו ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = אישור אבטחה: נשלל
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,29 +153,6 @@ pdfjs-document-properties-linearized = Fast Web View:
|
||||
pdfjs-document-properties-linearized-yes = Haj
|
||||
pdfjs-document-properties-linearized-no = Ně
|
||||
pdfjs-document-properties-close-button = Začinić
|
||||
pdfjs-digital-signature-properties-view-certificate = Certifikat pokazać
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Přičina: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Časowy kołk: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] { $count } podsignatura
|
||||
[two] { $count } podsignaturje
|
||||
[few] { $count } podsignatury
|
||||
*[other] { $count } podsignaturow
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -771,84 +748,6 @@ pdfjs-views-manager-waiting-for-file = Dataja so nahrawa…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Strony rjadować
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Kajkosće digitalneje signatury
|
||||
.aria-label = Kajkosće digitalneje signatury
|
||||
pdfjs-digital-signature-properties-button-label = Kajkosće digitalneje signatury
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument je so z płaćiwej digitalnej signaturu signował
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument je so signował, ale { $count } digitalna signatura njeda so wobkrućić
|
||||
[two] Dokument je so signował, ale { $count } digitalnej signaturje njedatej so wobkrućić
|
||||
[few] Dokument je so signował, ale { $count } digitalne signatury njedachu so wobkrućić
|
||||
*[other] Dokument je so signował, ale { $count } digitalnych signaturow njeda so wobkrućić
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument je z { $count } certifikatom signowany, kotryž dowěry hódny njeje
|
||||
[two] Dokument je z { $count } certifikatomaj signowany, kotrejž dowěry hódnej njejstej
|
||||
[few] Dokument je z { $count } certifikatami signowany, kotrež dowěry hódne njejsu
|
||||
*[other] Dokument je z { $count } certifikatami signowany, kotrež dowěry hódne njejsu
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument je z { $count } spadnjenym certifikatom signowany
|
||||
[two] Dokument je z { $count } spadnjenymaj certifikatomaj signowany
|
||||
[few] Dokument je z { $count } spadnjenymi certifikatami signowany
|
||||
*[other] Dokument je z { $count } spadnjenymi certifikatami signowany
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument ma { $count } njepłaćiwu digitalnu signaturu
|
||||
[two] Dokument ma { $count } njepłaćiwej digitalnej signaturje
|
||||
[few] Dokument ma { $count } njepłaćiwe digitalne signatury
|
||||
*[other] Dokument ma { $count } njepłaćiwych digitalnych signaturow
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument je z { $count } wotwołanym certifikatom signowany
|
||||
[two] Dokument je z { $count } wotwołanymaj certifikatomaj signowany
|
||||
[few] Dokument je z { $count } wotwołanymi certifikatami signowany
|
||||
*[other] Dokument je z { $count } wotwołanymi certifikatami signowany
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatura je wobkrućena
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signatura je njepłaćiwa
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Njeda so wobkrućić (njepodpěruje so)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certifikat: Dowěry hódny ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certifikat: Nic k dispoziciji
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certifikat: Dowěry njehódny
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certifikat: Njeznaty wudawar ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certifikat: Samsignowany ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certifikat: Dowěry njehódny wudawar ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certifikat: Spadnjeny
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certifikat: Spadnjeny ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certifikat: Wotwołany
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Gyors webes nézet:
|
||||
pdfjs-document-properties-linearized-yes = Igen
|
||||
pdfjs-document-properties-linearized-no = Nem
|
||||
pdfjs-document-properties-close-button = Bezárás
|
||||
pdfjs-digital-signature-properties-view-certificate = Tanúsítvány megtekintése
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Ok: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Időbélyeg: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Részaláírás ({ $count })
|
||||
*[other] Részaláírások ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Fájl feltöltése…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Oldalak kezelése
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Digitális aláírás tulajdonságai
|
||||
.aria-label = Digitális aláírás tulajdonságai
|
||||
pdfjs-digital-signature-properties-button-label = Digitális aláírás tulajdonságai
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = A dokumentum érvényes digitális aláírással lett aláírva
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] A dokumentum alá van írva, de { $count } digitális aláírás nem ellenőrizhető
|
||||
*[other] A dokumentum alá van írva, de { $count } digitális aláírás nem ellenőrizhető
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] A dokumentum { $count } nem megbízható tanúsítvánnyal van aláírva
|
||||
*[other] A dokumentum { $count } nem megbízható tanúsítvánnyal van aláírva
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] A dokumentum { $count } lejárt tanúsítvánnyal van aláírva
|
||||
*[other] A dokumentum { $count } lejárt tanúsítvánnyal van aláírva
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] A dokumentum { $count } érvénytelen aláírással rendelkezik
|
||||
*[other] A dokumentum { $count } érvénytelen aláírással rendelkezik
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] A dokumentum { $count } visszavont tanúsítvánnyal van aláírva
|
||||
*[other] A dokumentum { $count } visszavont tanúsítvánnyal van aláírva
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Állapot: az aláírás ellenőrizve
|
||||
pdfjs-digital-signature-properties-status-invalid = Állapot: az aláírás érvénytelen
|
||||
pdfjs-digital-signature-properties-status-unknown = Állapot: nem ellenőrizhető (nem támogatott)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Tanúsítvány: megbízható ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Tanúsítvány: nem érhető el
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Tanúsítvány: nem megbízható
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Tanúsítvány: ismeretlen kibocsátó ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Tanúsítvány: önaláírt ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Tanúsítvány: nem megbízható kibocsátó ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Tanúsítvány: lejárt
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Tanúsítvány: lejárt ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Tanúsítvány: visszavonva
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,15 +153,6 @@ pdfjs-document-properties-linearized = Արագ վեբ դիտում․
|
||||
pdfjs-document-properties-linearized-yes = Այո
|
||||
pdfjs-document-properties-linearized-no = Ոչ
|
||||
pdfjs-document-properties-close-button = Փակել
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Պատճառը՝ { $reason }
|
||||
|
||||
## Print
|
||||
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Vista web rapide:
|
||||
pdfjs-document-properties-linearized-yes = Si
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Clauder
|
||||
pdfjs-digital-signature-properties-view-certificate = Vider le certificato
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Ration: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Data e hora: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Firma secundari ({ $count })
|
||||
*[other] Firmas secundari ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Cargante file…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gerer paginas
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Proprietates del firma digital
|
||||
.aria-label = Proprietates del firma digital
|
||||
pdfjs-digital-signature-properties-button-label = Proprietates del firma digital
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Le documento era firmate con un firma digital valide
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Documento firmate ma { $count } firma digital non poteva esser verificate
|
||||
*[other] Documento firmate ma { $count } firmas digital non poteva esser verificate
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Documento firmate con { $count } certificato que non es de fiducia
|
||||
*[other] Documento firmate con { $count } certificatos que non es de fiducia
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Documento firmate con { $count } certificato expirate
|
||||
*[other] Documento firmate con { $count } certificatos expirate
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Le documento ha { $count } firma digital non valide
|
||||
*[other] Le documento ha { $count } firmas digital non valide
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Documento firmate con { $count } certificato revocate
|
||||
*[other] Documento firmate con { $count } certificatos revocate
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stato: firma verificate
|
||||
pdfjs-digital-signature-properties-status-invalid = Stato: firma non valide
|
||||
pdfjs-digital-signature-properties-status-unknown = Stato: impossibile verificar (non supportate)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificato: de fiducia ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificato: indisponibile
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificato: non de confidentia
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificato: emissor incognite ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificato: auto-firmate ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificato: emissor non de confidentia ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificato: expirate
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificato: expirate ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificato: revocate
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Visualizzazione web veloce:
|
||||
pdfjs-document-properties-linearized-yes = Sì
|
||||
pdfjs-document-properties-linearized-no = No
|
||||
pdfjs-document-properties-close-button = Chiudi
|
||||
pdfjs-digital-signature-properties-view-certificate = Visualizza certificato
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Motivo: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Data e ora: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Firma secondaria ({ $count })
|
||||
*[other] Firme secondarie ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -261,7 +240,7 @@ pdfjs-find-match-count =
|
||||
# $limit (Number) - the maximum number of matches
|
||||
pdfjs-find-match-count-limit =
|
||||
{ $limit ->
|
||||
[one] Più di { $limit } corrispondenza
|
||||
[one] Più di una { $limit } corrispondenza
|
||||
*[other] Più di { $limit } corrispondenze
|
||||
}
|
||||
pdfjs-find-not-found = Testo non trovato
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Caricamento file…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gestisci pagine
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Proprietà firma digitale
|
||||
.aria-label = Proprietà firma digitale
|
||||
pdfjs-digital-signature-properties-button-label = Proprietà firma digitale
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Il documento è stato firmato con una firma digitale valida
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Il documento è stato firmato ma non è stato possibile verificare { $count } firma digitale
|
||||
*[other] Il documento è stato firmato ma non è stato possibile verificare { $count } firme digitali
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Documento firmato con { $count } certificato non attendibile
|
||||
*[other] Documento firmato con { $count } certificati non attendibili
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Documento firmato con { $count } certificato scaduto
|
||||
*[other] Documento firmato con { $count } certificati scaduti
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Il documento contiene { $count } firma digitale non valida
|
||||
*[other] Il documento contiene { $count } firme digitali non valide
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Documento firmato con { $count } certificato revocato
|
||||
*[other] Documento firmato con { $count } certificati revocati
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stato: firma verificata
|
||||
pdfjs-digital-signature-properties-status-invalid = Stato: firma non valida
|
||||
pdfjs-digital-signature-properties-status-unknown = Stato: impossibile verificare (non supportato)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificato: affidabile ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificato: non disponibile
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificato: non attendibile
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificato: emittente sconosciuto ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificato: autofirmato ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificato: emittente non attendibile ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificato: scaduto
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificato: scaduto ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificato: revocato
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,23 +153,6 @@ pdfjs-document-properties-linearized = ウェブ表示用に最適化:
|
||||
pdfjs-document-properties-linearized-yes = はい
|
||||
pdfjs-document-properties-linearized-no = いいえ
|
||||
pdfjs-document-properties-close-button = 閉じる
|
||||
pdfjs-digital-signature-properties-view-certificate = 証明書を表示
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = 理由: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = タイムスタンプ: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures = サブ署名 ({ $count } 筆)
|
||||
|
||||
## Print
|
||||
|
||||
@ -717,54 +700,6 @@ pdfjs-views-manager-waiting-for-file = ファイルをアップロードして
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = ページを管理
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = デジタル署名のプロパティ
|
||||
.aria-label = デジタル署名のプロパティ
|
||||
pdfjs-digital-signature-properties-button-label = デジタル署名のプロパティ
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = 文書は検証されたデジタル署名で署名されています
|
||||
pdfjs-digital-signature-properties-banner-unknown = 文書は署名されていますが、{ $count } 筆のデジタル署名が検証できません
|
||||
pdfjs-digital-signature-properties-banner-untrusted = 文書は { $count } 筆の信頼できないデジタル署名で署名されています
|
||||
pdfjs-digital-signature-properties-banner-expired = 文書は { $count } 枚の有効期限が切れた証明書で署名されています
|
||||
pdfjs-digital-signature-properties-banner-invalid = 文書には { $count } 筆の不正なデジタル署名があります
|
||||
pdfjs-digital-signature-properties-banner-revoked = 文書は { $count } 枚の破棄された証明書で署名されています
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = 状態: 検証された証明書
|
||||
pdfjs-digital-signature-properties-status-invalid = 状態: 不正な証明書
|
||||
pdfjs-digital-signature-properties-status-unknown = 状態: 検証不可 (未サポート)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = 証明書: 信頼されている ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = 証明書: 利用不可
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = 証明書: 信頼できない
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = 証明書: 発行者不明 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = 証明書: 自己署名 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = 証明書: 信頼できない発行者 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = 証明書: 有効期限切れ
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = 証明書: 有効期限切れ ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = 証明書: 破棄
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = მსუბუქი ვებჩვე
|
||||
pdfjs-document-properties-linearized-yes = დიახ
|
||||
pdfjs-document-properties-linearized-no = არა
|
||||
pdfjs-document-properties-close-button = დახურვა
|
||||
pdfjs-digital-signature-properties-view-certificate = სერტიფიკატის ნახვა
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = მიზეზი: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = დროის ნიშნული: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] ქვეხელმოწერები ({ $count })
|
||||
*[other] ქვეხელმოწერები ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = ფაილი აიტვირთე
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = გვერდების მართვა
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = ციფრული ხელმოწერის პარამეტრები
|
||||
.aria-label = ციფრული ხელმოწერის პარამეტრები
|
||||
pdfjs-digital-signature-properties-button-label = ციფრული ხელმოწერის პარამეტრები
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = დოკუმენტი ხელმოწერილია მართებული ციფრული ხელმოწერით
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] დოკუმენტი ხელმოწერილია, მაგრამ { $count } ციფრული ხელმოწერა ვერ დამოწმდა
|
||||
*[other] დოკუმენტი ხელმოწერილია, მაგრამ { $count } ციფრული ხელმოწერა ვერ დამოწმდა
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] დოკუმენტი ხელმოწერილია { $count } არასანდო სერტიფიკატით
|
||||
*[other] დოკუმენტი ხელმოწერილია { $count } არასანდო სერტიფიკატით
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] დოკუმენტი ხელმოწერილია { $count } ვადაგასული სერტიფიკატით
|
||||
*[other] დოკუმენტი ხელმოწერილია { $count } ვადაგასული სერტიფიკატით
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] დოკუმენტი ხელმოწერილია { $count } უმართებულო ციფრული სერტიფიკატით
|
||||
*[other] დოკუმენტი ხელმოწერილია { $count } უმართებულო ციფრული სერტიფიკატით
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] დოკუმენტი ხელმოწერილია { $count } ძალადაკარგული სერტიფიკატით
|
||||
*[other] დოკუმენტი ხელმოწერილია { $count } ძალადაკარგული სერტიფიკატით
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = მდგომარეობა: ხელმოწერა დამოწმებულია
|
||||
pdfjs-digital-signature-properties-status-invalid = მდგომარეობა: ხელმოწერა უმართებულოა
|
||||
pdfjs-digital-signature-properties-status-unknown = მდგომარეობა: ვერ მოწმდება (მხარდაუჭერელია)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = სერტიფიკატი: სანდოა ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = სერტიფიკატი: მიუწვდომელია
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = სერტიფიკატი: არასანდოა
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = სერტიფიკატი: უცნობი გამცემი ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = სერტიფიკატი: თვითხელმოწერით ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = სერტიფიკატი: არასანდო გამცემი ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = სერტიფიკატი: ვადაგასული
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = სერტიფიკატი: ვადაგასული ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = სერტიფიკატი: ძალადაკარგულია
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -125,7 +125,7 @@ pdfjs-document-properties-creator = Yerna-t:
|
||||
pdfjs-document-properties-producer = Afecku n uselket PDF:
|
||||
pdfjs-document-properties-version = Lqem PDF:
|
||||
pdfjs-document-properties-page-count = Amḍan n yisebtar:
|
||||
pdfjs-document-properties-page-size = Teɣzi n usebter:
|
||||
pdfjs-document-properties-page-size = Tuγzi n usebter:
|
||||
pdfjs-document-properties-page-size-unit-inches = deg
|
||||
pdfjs-document-properties-page-size-unit-millimeters = mm
|
||||
pdfjs-document-properties-page-size-orientation-portrait = s teɣzi
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Жылдам Web көрінісі:
|
||||
pdfjs-document-properties-linearized-yes = Иә
|
||||
pdfjs-document-properties-linearized-no = Жоқ
|
||||
pdfjs-document-properties-close-button = Жабу
|
||||
pdfjs-digital-signature-properties-view-certificate = Сертификатты қарау
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Себебі: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Күн мен уақыт белгісі: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Ішкі қолтаңба ({ $count })
|
||||
*[other] Ішкі қолтаңбалар ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Файл жүктеп салынуда…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Беттерді басқару
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Цифрлық қолтаңба қасиеттері
|
||||
.aria-label = Цифрлық қолтаңба қасиеттері
|
||||
pdfjs-digital-signature-properties-button-label = Цифрлық қолтаңба қасиеттері
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Құжатқа жарамды цифрлық қолтаңбамен қол қойылған
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Құжатқа қол қойылған, бірақ { $count } цифрлық қолтаңбаны тексеру мүмкін болмады
|
||||
*[other] Құжатқа қол қойылған, бірақ { $count } цифрлық қолтаңбаны тексеру мүмкін болмады
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Құжатқа сенімсіз { $count } сертификатпен қол қойылған
|
||||
*[other] Құжатқа сенімсіз { $count } сертификатпен қол қойылған
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Құжатқа мерзімі өткен { $count } сертификатпен қол қойылған
|
||||
*[other] Құжатқа мерзімі өткен { $count } сертификатпен қол қойылған
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Құжатта { $count } жарамсыз цифрлық қолтаңба бар
|
||||
*[other] Құжатта { $count } жарамсыз цифрлық қолтаңба бар
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Құжатқа қайтарылған { $count } сертификатпен қол қойылған
|
||||
*[other] Құжатқа қайтарылған { $count } сертификатпен қол қойылған
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Қалып-күй: Қолтаңба тексерілді
|
||||
pdfjs-digital-signature-properties-status-invalid = Қалып-күй: Қолтаңба жарамсыз
|
||||
pdfjs-digital-signature-properties-status-unknown = Қалып-күй: Тексеру мүмкін емес (қолдау көрсетілмейді)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Сертификат: Сенімді ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Сертификат: Қолжетімсіз
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Сертификат: Сенімсіз
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Сертификат: Белгісіз шығарушы ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Сертификат: Өздігінен қол қойылған ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Сертификат: Сенімсіз шығарушы ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Сертификат: Мерзімі өткен
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Сертификат: Мерзімі өткен ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Сертификат: Қайтарылған
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,23 +153,6 @@ pdfjs-document-properties-linearized = 빠른 웹 보기:
|
||||
pdfjs-document-properties-linearized-yes = 예
|
||||
pdfjs-document-properties-linearized-no = 아니요
|
||||
pdfjs-document-properties-close-button = 닫기
|
||||
pdfjs-digital-signature-properties-view-certificate = 인증서 보기
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = 이유: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = 타임스탬프: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures = 하위 서명 ({ $count }개)
|
||||
|
||||
## Print
|
||||
|
||||
@ -586,7 +569,7 @@ pdfjs-editor-add-signature-draw-thickness-range-label = 두께
|
||||
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
|
||||
pdfjs-editor-add-signature-draw-thickness-range =
|
||||
.title = 그리기 두께: { $thickness }
|
||||
pdfjs-editor-add-signature-image-placeholder = 이미지 파일을 여기에 끌어다 놓으세요
|
||||
pdfjs-editor-add-signature-image-placeholder = 이미지 파일을 여기에 끌어서 놓으세요
|
||||
pdfjs-editor-add-signature-image-browse-link =
|
||||
{ PLATFORM() ->
|
||||
[macos] 또는 이미지 파일 찾아보기
|
||||
@ -682,7 +665,7 @@ pdfjs-views-manager-pages-status-action-button-label = 관리
|
||||
pdfjs-views-manager-pages-status-copy-button-label = 복사
|
||||
pdfjs-views-manager-pages-status-cut-button-label = 잘라내기
|
||||
pdfjs-views-manager-pages-status-delete-button-label = 삭제
|
||||
pdfjs-views-manager-pages-status-export-selected-button-label = 선택한 페이지 내보내기…
|
||||
pdfjs-views-manager-pages-status-export-selected-button-label = 선택 페이지 내보내기…
|
||||
# Variables:
|
||||
# $count (Number) - the number of selected pages to be cut.
|
||||
pdfjs-views-manager-status-undo-cut-label = { $count }개 페이지 잘림
|
||||
@ -717,54 +700,6 @@ pdfjs-views-manager-waiting-for-file = 파일 업로드 중…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = 페이지 관리
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = 디지털 서명 속성
|
||||
.aria-label = 디지털 서명 속성
|
||||
pdfjs-digital-signature-properties-button-label = 디지털 서명 속성
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = 유효한 디지털 서명으로 문서에 서명되었습니다
|
||||
pdfjs-digital-signature-properties-banner-unknown = 문서에 서명되었지만 { $count }개의 디지털 서명을 확인할 수 없음
|
||||
pdfjs-digital-signature-properties-banner-untrusted = 신뢰할 수 없는 { $count }개의 인증서로 서명된 문서
|
||||
pdfjs-digital-signature-properties-banner-expired = { $count }개의 만료된 인증서로 서명된 문서
|
||||
pdfjs-digital-signature-properties-banner-invalid = 문서에 잘못된 { $count }개의 디지털 서명이 있음
|
||||
pdfjs-digital-signature-properties-banner-revoked = 폐기된 인증서 { $count }개로 서명된 문서
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = 상태: 서명 확인됨
|
||||
pdfjs-digital-signature-properties-status-invalid = 상태: 유효하지 않은 서명
|
||||
pdfjs-digital-signature-properties-status-unknown = 상태: 확인할 수 없음 (지원되지 않음)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = 인증서: 신뢰할 수 있음 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = 인증서: 사용할 수 없음
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = 인증서: 신뢰할 수 없음
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = 인증서: 알 수 없는 발급자 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = 인증서: 자체 서명 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = 인증서: 신뢰할 수 없는 발급자 ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = 인증서: 만료됨
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = 인증서: 만료됨 ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = 인증서: 폐기됨
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -479,21 +479,6 @@ pdfjs-editor-add-signature-cancel-button = റദ്ദാക്കുക
|
||||
pdfjs-editor-add-signature-add-button = ചേൎക്കുക
|
||||
pdfjs-editor-edit-signature-update-button = പുതുക്കുക
|
||||
|
||||
## Edit a comment dialog
|
||||
|
||||
pdfjs-editor-edit-comment-dialog-cancel-button = റദ്ദാക്കുക
|
||||
|
||||
## The view manager is a sidebar displaying different views:
|
||||
## - thumbnails;
|
||||
## - outline;
|
||||
## - attachments;
|
||||
## - layers.
|
||||
## The thumbnails view is used to edit the pdf: remove/insert pages, ...
|
||||
|
||||
pdfjs-views-manager-status-close-button =
|
||||
.title = അടയ്ക്കുക
|
||||
pdfjs-views-manager-status-close-button-label = അടയ്ക്കുക
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Hurtig nettvisning:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nei
|
||||
pdfjs-document-properties-close-button = Lukk
|
||||
pdfjs-digital-signature-properties-view-certificate = Vis sertifikat
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Grunn: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tidsstempel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Undersignatur ({ $count })
|
||||
*[other] Undersignaturer ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Laster opp filen …
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Behandle sider
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Egenskaper for digital signatur
|
||||
.aria-label = Egenskaper for digital signatur
|
||||
pdfjs-digital-signature-properties-button-label = Egenskaper for digital signatur
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokumentet ble signert med en gyldig digital signatur
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert, men { $count } digital signatur kunne ikke verifiseres
|
||||
*[other] Dokumentet er signert, men { $count } digitale signaturer kunne ikke verifiseres
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } sertifikat som ikke er klarert
|
||||
*[other] Dokumentet er signert med { $count } sertifikater som ikke er klarert
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } utløpt sertifikat
|
||||
*[other] Dokumentet er signert med { $count } utløpte sertifikater
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokumentet har { $count } ugyldig digital signatur
|
||||
*[other] Dokumentet har { $count } ugyldige digitale signaturer
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } tilbakekalt sertifikat
|
||||
*[other] Dokumentet er signert med { $count } tilbakekalte sertifikater
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatur bekreftet
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signatur ugyldig
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Kan ikke bekrefte (støttes ikke)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Sertifikat: Klarert ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Sertifikat: Utilgjengelig
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Sertifikat: Ikke klarert
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Sertifikat: Ukjent utsteder ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Sertifikat: Selvsignert ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Sertifikat: Ikke klarert utsteder ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Sertifikat: Utløpt
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Sertifikat: Utløpt ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Sertifikat: Tilbakekalt
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Snelle webweergave:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nee
|
||||
pdfjs-document-properties-close-button = Sluiten
|
||||
pdfjs-digital-signature-properties-view-certificate = Certificaat bekijken
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Reden: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tijdstempel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Ondertekening ({ $count })
|
||||
*[other] Ondertekeningen ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Bestand uploaden…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Pagina’s beheren
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Eigenschappen digitale handtekening
|
||||
.aria-label = Eigenschappen digitale handtekening
|
||||
pdfjs-digital-signature-properties-button-label = Eigenschappen digitale handtekening
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Document is ondertekend met een geldige digitale handtekening
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Document ondertekend, maar { $count } digitale handtekening kon niet worden geverifieerd
|
||||
*[other] Document ondertekend, maar { $count } digitale handtekeningen konden niet worden geverifieerd
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Document ondertekend met { $count } certificaat dat niet wordt vertrouwd
|
||||
*[other] Document ondertekend met { $count } certificaten die niet worden vertrouwd
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Document ondertekend met { $count } verlopen certificaat
|
||||
*[other] Document ondertekend met { $count } verlopen certificaten
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Document heeft { $count } ongeldige digitale handtekening
|
||||
*[other] Document heeft { $count } ongeldige digitale handtekeningen
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Document ondertekend met { $count } ingetrokken certificaat
|
||||
*[other] Document ondertekend met { $count } ingetrokken certificaten
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: handtekening geverifieerd
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: handtekening ongeldig
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: kan niet worden geverifieerd (niet ondersteund)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificaat: vertrouwd ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificaat: niet beschikbaar
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificaat: niet vertrouwd
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificaat: onbekende uitgever ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificaat: zelfondertekend ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificaat: niet-vertrouwde uitgever ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificaat: verlopen
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificaat: verlopen ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificaat: ingetrokken
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Rask nettvising:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nei
|
||||
pdfjs-document-properties-close-button = Lat att
|
||||
pdfjs-digital-signature-properties-view-certificate = Vis sertifikat
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Grunn: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tidsstempel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Undersignatur ({ $count })
|
||||
*[other] Undersignaturar ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -536,7 +515,7 @@ pdfjs-image-alt-text-settings-button-label = Alternative tekst-innstillingar for
|
||||
pdfjs-editor-alt-text-settings-dialog-label = Alternative tekst-innstillingar for bilde
|
||||
pdfjs-editor-alt-text-settings-automatic-title = Automatisk alternativ tekst
|
||||
pdfjs-editor-alt-text-settings-create-model-button-label = Opprett alternativ tekt automatisk
|
||||
pdfjs-editor-alt-text-settings-create-model-description = Føreslår skildringar for å hjelpe folk som ikkje kan sjå bildet eller når bildet ikkje blir lasta inn.
|
||||
pdfjs-editor-alt-text-settings-create-model-description = Foreslår skildringar for å hjelpe folk som ikkje kan sjå bildet eller når bildet ikkje blir lasta inn.
|
||||
# Variables:
|
||||
# $totalSize (Number) - the total size (in MB) of the AI model.
|
||||
pdfjs-editor-alt-text-settings-download-model-label = KI-modell for alternativ tekst ({ $totalSize } MB)
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Lastar opp fila…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Handsam sider
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Eigenskapar for digital signatur
|
||||
.aria-label = Eigenskapar for digital signatur
|
||||
pdfjs-digital-signature-properties-button-label = Eigenskapar for digital signatur
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokumentet vart signert med ei gyldig digital signatur
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert, men { $count } digital signatur kunne ikkje verifiserast
|
||||
*[other] Dokumentet er signert, men { $count } digitale signaturar kunne ikkje verifiserast
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } sertifikat som ikkje er klarert
|
||||
*[other] Dokumentet er signert med { $count } sertifikat som ikkje er klarerte
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } utgåttt sertifikat
|
||||
*[other] Dokumentet er signert med { $count } utgåtte sertifikat
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokumentet har { $count } ugyldig digital signatur
|
||||
*[other] Dokumentet har { $count } ugyldige digitale signaturar
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokumentet er signert med { $count } tilbakekalt sertifikat
|
||||
*[other] Dokumentet er signert med { $count } tilbakekalte sertifikat
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatur stadfesta
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Signatur ugyldig
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Kan ikkje stadfeste (blir ikkje støtta)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Sertifikat: Klarert ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Sertifikat: Utilgjengeleg
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Sertifikat: Ikkje klarert
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Sertifikat: Ukjent utferdar ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Sertifikat: Sjølvsignert ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Sertifikat: Ikkje klarert utferdar ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Sertifikat: Utgått
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Sertifikat: Utgått ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Sertifikat: Tilbakekalla
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,28 +153,6 @@ pdfjs-document-properties-linearized = Szybki podgląd w Internecie:
|
||||
pdfjs-document-properties-linearized-yes = tak
|
||||
pdfjs-document-properties-linearized-no = nie
|
||||
pdfjs-document-properties-close-button = Zamknij
|
||||
pdfjs-digital-signature-properties-view-certificate = Wyświetl certyfikat
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Powód: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Data: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] { $count } podpis podrzędny
|
||||
[few] { $count } podpisy podrzędne
|
||||
*[many] { $count } podpisów podrzędnych
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -761,79 +739,6 @@ pdfjs-views-manager-waiting-for-file = Przesyłanie pliku…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Zarządzaj stronami
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Właściwości podpisu cyfrowego
|
||||
.aria-label = Właściwości podpisu cyfrowego
|
||||
pdfjs-digital-signature-properties-button-label = Właściwości podpisu cyfrowego
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument został podpisany ważnym podpisem cyfrowym
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument jest popisany, ale nie można zweryfikować { $count } podpisu cyfrowego
|
||||
[few] Dokument jest popisany, ale nie można zweryfikować { $count } podpisów cyfrowych
|
||||
*[many] Dokument jest popisany, ale nie można zweryfikować { $count } podpisów cyfrowych
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument jest podpisany za pomocą { $count } certyfikatu, który nie jest zaufany
|
||||
[few] Dokument jest podpisany za pomocą { $count } certyfikatów, które nie są zaufane
|
||||
*[many] Dokument jest podpisany za pomocą { $count } certyfikatów, które nie są zaufane
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument jest podpisany za pomocą { $count } wygasłego certyfikatu
|
||||
[few] Dokument jest podpisany za pomocą { $count } wygasłych certyfikatów
|
||||
*[many] Dokument jest podpisany za pomocą { $count } wygasłych certyfikatów
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument ma { $count } nieważny podpis cyfrowy
|
||||
[few] Dokument ma { $count } nieważne podpisy cyfrowe
|
||||
*[many] Dokument ma { $count } nieważnych podpisów cyfrowych
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument jest podpisany za pomocą { $count } odwołanego certyfikatu
|
||||
[few] Dokument jest podpisany za pomocą { $count } odwołanych certyfikatów
|
||||
*[many] Dokument jest podpisany za pomocą { $count } odwołanych certyfikatów
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stan: podpis jest zweryfikowany
|
||||
pdfjs-digital-signature-properties-status-invalid = Stan: podpis jest nieważny
|
||||
pdfjs-digital-signature-properties-status-unknown = Stan: nie można zweryfikować (nieobsługiwane)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certyfikat: zaufany ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certyfikat: niedostępny
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certyfikat: niezaufany
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certyfikat: nieznany wystawca ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certyfikat: samopodpisany ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certyfikat: niezaufany wystawca ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certyfikat: wygasły
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certyfikat: wygasły ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certyfikat: odwołany
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Exibição web rápida:
|
||||
pdfjs-document-properties-linearized-yes = Sim
|
||||
pdfjs-document-properties-linearized-no = Não
|
||||
pdfjs-document-properties-close-button = Fechar
|
||||
pdfjs-digital-signature-properties-view-certificate = Ver certificado
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Motivo: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Data e hora: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Assinatura secundária ({ $count })
|
||||
*[other] Assinaturas secundárias ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Enviando arquivo…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gerenciar páginas
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Propriedades da assinatura digital
|
||||
.aria-label = Propriedades da assinatura digital
|
||||
pdfjs-digital-signature-properties-button-label = Propriedades da assinatura digital
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = O documento foi assinado com uma assinatura digital válida
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Documento assinado, mas { $count } assinatura digital não pôde ser verificada
|
||||
*[other] Documento assinado, mas { $count } assinaturas digitais não puderam ser verificadas
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Documento assinado com { $count } certificado que não é confiável
|
||||
*[other] Documento assinado com { $count } certificados que não são confiáveis
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Documento assinado com { $count } certificado expirado
|
||||
*[other] Documento assinado com { $count } certificados expirados
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] O documento tem { $count } assinatura digital inválida
|
||||
*[other] O documento tem { $count } assinaturas digitais inválidas
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Documento assinado com { $count } certificado revogado
|
||||
*[other] Documento assinado com { $count } certificados revogados
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Assinatura verificada
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Assinatura inválida
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Não foi possível verificar (não há suporte)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificado: Confiável ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificado: Não disponível
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificado: Não confiável
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificado: Emissor desconhecido ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificado: Autoassinado ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificado: Emissor não confiável ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificado: Expirado
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificado: Expirado ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificado: Revogado
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,28 +153,6 @@ pdfjs-document-properties-linearized = Vizualizare web rapidă:
|
||||
pdfjs-document-properties-linearized-yes = Da
|
||||
pdfjs-document-properties-linearized-no = Nu
|
||||
pdfjs-document-properties-close-button = Închide
|
||||
pdfjs-digital-signature-properties-view-certificate = Vezi certificatul
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Motiv: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Marcaj temporal: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] ({ $count }) sub semnătură
|
||||
[few] ({ $count }) sub semnături
|
||||
*[other] ({ $count }) de sub semnături
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -412,9 +390,8 @@ pdfjs-free-text2 =
|
||||
# $count (Number) - the number of comments.
|
||||
pdfjs-editor-comments-sidebar-title =
|
||||
{ $count ->
|
||||
[one] comentariu
|
||||
[few] comentarii
|
||||
*[other] de comentarii
|
||||
[one] Comentariu
|
||||
*[other] Comentarii
|
||||
}
|
||||
pdfjs-editor-comments-sidebar-close-button =
|
||||
.title = Închide bara laterală
|
||||
@ -762,79 +739,6 @@ pdfjs-views-manager-waiting-for-file = Se încarcă fișierul…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Gestionează paginile
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Proprietățile semnăturii digitale
|
||||
.aria-label = Proprietățile semnăturii digitale
|
||||
pdfjs-digital-signature-properties-button-label = Proprietățile semnăturii digitale
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Documentul a fost semnat cu o semnătură digitală validă
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Document semnat, dar { $count } semnătură digitală nu au putut fi verificată
|
||||
[few] Document semnat, dar { $count } semnături digitale nu au putut fi verificate
|
||||
*[other] Document semnat, dar { $count } de semnături digitale nu au putut fi verificate
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Document semnat cu { $count } certificat care nu este de încredere
|
||||
[few] Document semnat cu { $count } certificate care nu sunt de încredere
|
||||
*[other] Document semnat cu { $count } de certificate care nu sunt de încredere
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Document semnat cu { $count } certificat expirat
|
||||
[few] Document semnat cu { $count } certificate expirate
|
||||
*[other] Document semnat cu { $count } de certificate expirate
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Documentul are { $count } semnătură digitală nevalidă
|
||||
[few] Documentul are { $count } semnături digitale nevalide
|
||||
*[other] Documentul are { $count } de semnături digitale nevalide
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Document semnat cu { $count } certificat revocat
|
||||
[few] Document semnat cu { $count } certificate revocate
|
||||
*[other] Document semnat cu { $count } de certificate revocate
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stare: Semnătură verificată
|
||||
pdfjs-digital-signature-properties-status-invalid = Stare: Semnătură nevalidă
|
||||
pdfjs-digital-signature-properties-status-unknown = Stare: Nu se poate verifica (neacceptat)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certificat: De încredere ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certificat: Indisponibil
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certificat: De neîncredere
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certificat: Emitent necunoscut ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certificat: Autosemnat ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certificat: Emitent de neîncredere ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certificat: Expirat
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certificat: Expirat ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certificat: Revocat
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,28 +153,6 @@ pdfjs-document-properties-linearized = Быстрый просмотр в Web:
|
||||
pdfjs-document-properties-linearized-yes = Да
|
||||
pdfjs-document-properties-linearized-no = Нет
|
||||
pdfjs-document-properties-close-button = Закрыть
|
||||
pdfjs-digital-signature-properties-view-certificate = Просмотреть сертификат
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Причина: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Метка времени: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Дополнительная подпись ({ $count })
|
||||
[few] Дополнительные подписи ({ $count })
|
||||
*[many] Дополнительные подписи ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -762,79 +740,6 @@ pdfjs-views-manager-waiting-for-file = Загрузка файла…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Управление страницами
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Свойства цифровой подписи
|
||||
.aria-label = Свойства цифровой подписи
|
||||
pdfjs-digital-signature-properties-button-label = Свойства цифровой подписи
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Документ был подписан действительной цифровой подписью
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Документ подписан, но { $count } цифровая подпись не может быть проверены
|
||||
[few] Документ подписан, но { $count } цифровых подписи не могут быть проверены
|
||||
*[many] Документ подписан, но { $count } цифровых подписей не могут быть проверены
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Документ, подписанный { $count } недоверенным сертификатом
|
||||
[few] Документ, подписанный { $count } недоверенными сертификатами
|
||||
*[many] Документ, подписанный { $count } недоверенных сертификатов
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Документ, подписанный { $count } истёкшим сертификатом
|
||||
[few] Документ, подписанный { $count } истёкшими сертификатами
|
||||
*[many] Документ, подписанный { $count } истёкших сертификатов
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Документ имеет { $count } неверную цифровую подпись
|
||||
[few] Документ имеет { $count } неверных цифровых подписей
|
||||
*[many] Документ имеет { $count } неверных цифровых подписей
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Документ, подписанный { $count } отозванным сертификатом
|
||||
[few] Документ, подписанный { $count } отозванными сертификатами
|
||||
*[many] Документ, подписанный { $count } отозванных сертификатов
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Статус: Подпись проверена
|
||||
pdfjs-digital-signature-properties-status-invalid = Статус: Подпись недействительна
|
||||
pdfjs-digital-signature-properties-status-unknown = Статус: Не удалось проверить (не поддерживается)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Сертификат: Доверенный ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Сертификат: Недоступен
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Сертификат: Недоверенный
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Сертификат: Неизвестный издатель ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Сертификат: Самоподписанный ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Сертификат: Недоверенный издатель ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Сертификат: Истёк срок действия
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Сертификат: Истёк срок действия ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Сертификат: Отозван
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -87,7 +87,6 @@ pdfjs-scroll-horizontal-button-label = Iscurrimentu orizontale
|
||||
pdfjs-scroll-wrapped-button =
|
||||
.title = Imprea s'iscurrimentu continu
|
||||
pdfjs-scroll-wrapped-button-label = Iscurrimentu continu
|
||||
pdfjs-spread-none-button-label = Pàginas individuales
|
||||
|
||||
## Document properties dialog
|
||||
|
||||
@ -134,19 +133,6 @@ pdfjs-document-properties-linearized = Visualizatzione web lestra:
|
||||
pdfjs-document-properties-linearized-yes = Eja
|
||||
pdfjs-document-properties-linearized-no = Nono
|
||||
pdfjs-document-properties-close-button = Serra
|
||||
pdfjs-digital-signature-properties-view-certificate = Ammustra su tzertificadu
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Resone: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Data e ora: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
|
||||
## Print
|
||||
|
||||
@ -193,15 +179,6 @@ pdfjs-thumb-page-title =
|
||||
# $page (Number) - the page number
|
||||
pdfjs-thumb-page-canvas =
|
||||
.aria-label = Miniatura de sa pàgina { $page }
|
||||
# Variables:
|
||||
# $page (Number) - the page number
|
||||
pdfjs-thumb-page-checkbox1 =
|
||||
.title = Seletziona sa pàgina { $page }
|
||||
# Variables:
|
||||
# $page (Number) - the page number
|
||||
# $total (Number) - the number of pages
|
||||
pdfjs-thumb-page-title1 =
|
||||
.title = Pàgina { $page } de { $total }
|
||||
|
||||
## Find panel button title and messages
|
||||
|
||||
@ -220,27 +197,10 @@ pdfjs-find-match-diacritics-checkbox-label = Respeta is diacrìticos
|
||||
pdfjs-find-entire-word-checkbox-label = Faeddos intreos
|
||||
pdfjs-find-reached-top = S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu
|
||||
pdfjs-find-reached-bottom = Acabbu de su documentu, si sighit dae s'artu
|
||||
# Variables:
|
||||
# $current (Number) - the index of the currently active find result
|
||||
# $total (Number) - the total number of matches in the document
|
||||
pdfjs-find-match-count =
|
||||
{ $total ->
|
||||
[one] { $current } currispondèntzia de { $total }
|
||||
*[other] { $current } currispondèntzias de { $total }
|
||||
}
|
||||
# Variables:
|
||||
# $limit (Number) - the maximum number of matches
|
||||
pdfjs-find-match-count-limit =
|
||||
{ $limit ->
|
||||
[one] Prus de { $limit } currispondèntzia
|
||||
*[other] Prus de { $limit } currispondèntzias
|
||||
}
|
||||
pdfjs-find-not-found = Testu no agatadu
|
||||
|
||||
## Predefined zoom values
|
||||
|
||||
pdfjs-page-scale-width = Larghesa de sa pàgina
|
||||
pdfjs-page-scale-fit = Pàgina intrea
|
||||
pdfjs-page-scale-auto = Ingrandimentu automàticu
|
||||
pdfjs-page-scale-actual = Mannària reale
|
||||
# Variables:
|
||||
@ -262,12 +222,6 @@ pdfjs-missing-file-error = Ammancat s'archìviu PDF.
|
||||
pdfjs-unexpected-response-error = Risposta imprevista de su serbidore.
|
||||
pdfjs-rendering-error = Faddina in sa visualizatzione de sa pàgina.
|
||||
|
||||
## Annotations
|
||||
|
||||
# Variables:
|
||||
# $dateObj (Date) - the modification date and time of the annotation
|
||||
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
|
||||
## Password
|
||||
|
||||
pdfjs-password-label = Inserta sa crae pro abèrrere custu archìviu PDF.
|
||||
@ -280,13 +234,9 @@ pdfjs-web-fonts-disabled = Is tipografias web sunt disativadas: is tipografias i
|
||||
|
||||
pdfjs-editor-free-text-button =
|
||||
.title = Testu
|
||||
pdfjs-editor-color-picker-free-text-input =
|
||||
.title = Muda su colore de su testu
|
||||
pdfjs-editor-free-text-button-label = Testu
|
||||
pdfjs-editor-ink-button =
|
||||
.title = Disinnu
|
||||
pdfjs-editor-color-picker-ink-input =
|
||||
.title = Muda su colore pro su disinnu
|
||||
pdfjs-editor-ink-button-label = Disinnu
|
||||
pdfjs-editor-stamp-button =
|
||||
.title = Agiunghe o modìfica immàgines
|
||||
@ -298,33 +248,6 @@ pdfjs-highlight-floating-button1 =
|
||||
.title = Evidèntzia
|
||||
.aria-label = Evidèntzia
|
||||
pdfjs-highlight-floating-button-label = Evidèntzia
|
||||
pdfjs-comment-floating-button =
|
||||
.title = Cummenta
|
||||
.aria-label = Cummenta
|
||||
pdfjs-comment-floating-button-label = Cummenta
|
||||
pdfjs-editor-comment-button =
|
||||
.title = Cummenta
|
||||
.aria-label = Cummenta
|
||||
pdfjs-editor-comment-button-label = Cummenta
|
||||
pdfjs-editor-signature-button =
|
||||
.title = Agiunghe una firma
|
||||
pdfjs-editor-signature-button-label = Agiunghe una firma
|
||||
|
||||
## Default editor aria labels
|
||||
|
||||
# “Highlight” is a noun, the string is used on the editor for highlights.
|
||||
pdfjs-editor-highlight-editor =
|
||||
.aria-label = Editore de sutaliniadura
|
||||
# “Drawing” is a noun, the string is used on the editor for drawings.
|
||||
pdfjs-editor-ink-editor =
|
||||
.aria-label = Editore de disinnos
|
||||
# Used when a signature editor is selected/hovered.
|
||||
# Variables:
|
||||
# $description (String) - a string describing/labeling the signature.
|
||||
pdfjs-editor-signature-editor1 =
|
||||
.aria-description = Editore de firmas: { $description }
|
||||
pdfjs-editor-stamp-editor =
|
||||
.aria-label = Editore de immàgines
|
||||
|
||||
## Remove button for the various kind of editor.
|
||||
|
||||
@ -336,8 +259,6 @@ pdfjs-editor-remove-stamp-button =
|
||||
.title = Boga s’immàgine
|
||||
pdfjs-editor-remove-highlight-button =
|
||||
.title = Boga s’evidèntzia
|
||||
pdfjs-editor-remove-signature-button =
|
||||
.title = Boga·nche sa firma
|
||||
|
||||
##
|
||||
|
||||
@ -351,47 +272,19 @@ pdfjs-editor-stamp-add-image-button =
|
||||
pdfjs-editor-stamp-add-image-button-label = Agiunghe un’immàgine
|
||||
# This refers to the thickness of the line used for free highlighting (not bound to text)
|
||||
pdfjs-editor-free-highlight-thickness-input = Grussària
|
||||
pdfjs-editor-add-signature-container =
|
||||
.aria-label = Controllos de firma e firmas sarvadas
|
||||
pdfjs-editor-signature-add-signature-button =
|
||||
.title = Agiunghe una firma noa
|
||||
pdfjs-editor-signature-add-signature-button-label = Agiunghe una firma noa
|
||||
# Used on the button to use an already saved signature.
|
||||
# Variables:
|
||||
# $description (String) - a string describing/labeling the signature.
|
||||
pdfjs-editor-add-saved-signature-button =
|
||||
.title = Firma sarvada: { $description }
|
||||
# .default-content is used as a placeholder in an empty text editor.
|
||||
pdfjs-free-text2 =
|
||||
.aria-label = Editore de testu
|
||||
.default-content = Cumintza a iscrìere…
|
||||
# Used to show how many comments are present in the pdf file.
|
||||
# Variables:
|
||||
# $count (Number) - the number of comments.
|
||||
pdfjs-editor-comments-sidebar-title =
|
||||
{ $count ->
|
||||
[one] Cummentu
|
||||
*[other] Cummentos
|
||||
}
|
||||
pdfjs-editor-comments-sidebar-close-button =
|
||||
.title = Serra sa barra laterale
|
||||
.aria-label = Serra sa barra laterale
|
||||
pdfjs-editor-comments-sidebar-close-button-label = Serra sa barra laterale
|
||||
# Instructional copy to add a comment by selecting text or an annotations.
|
||||
pdfjs-editor-comments-sidebar-no-comments1 = As rilevadu una cosa de interessu? Sinnala·dda e agiunghe unu cummentu.
|
||||
|
||||
## Alt-text dialog
|
||||
|
||||
pdfjs-editor-alt-text-button-label = Testu alternativu
|
||||
pdfjs-editor-alt-text-edit-button =
|
||||
.aria-label = Modifica su testu alternativu
|
||||
pdfjs-editor-alt-text-dialog-label = Sèbera un’optzione
|
||||
pdfjs-editor-alt-text-dialog-description = Su testu alternativu (“alt text”) est ùtile pro persones chi non podent bìdere s’immàgine o cando non benit carrigada.
|
||||
pdfjs-editor-alt-text-add-description-label = Agiunghe una descritzione
|
||||
pdfjs-editor-alt-text-mark-decorative-label = Sinnala comente decorativa
|
||||
pdfjs-editor-alt-text-cancel-button = Annulla
|
||||
pdfjs-editor-alt-text-save-button = Sarva
|
||||
pdfjs-editor-alt-text-decorative-tooltip = Sinnalada comente decorativu
|
||||
|
||||
## Color picker
|
||||
|
||||
@ -411,13 +304,7 @@ pdfjs-editor-colorpicker-pink =
|
||||
## New alt-text dialog
|
||||
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
|
||||
|
||||
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
|
||||
pdfjs-editor-new-alt-text-missing-button =
|
||||
.aria-label = Mancat su testu alternativu
|
||||
pdfjs-editor-new-alt-text-missing-button-label = Mancat su testu alternativu
|
||||
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
|
||||
pdfjs-editor-new-alt-text-to-review-button =
|
||||
.aria-label = Revisiona su testu alternativu
|
||||
pdfjs-editor-new-alt-text-to-review-button-label = Revisiona su testu alternativu
|
||||
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
|
||||
# Variables:
|
||||
@ -445,19 +332,6 @@ pdfjs-editor-alt-text-settings-show-dialog-button-label = Mustra deretu s’edit
|
||||
pdfjs-editor-alt-text-settings-show-dialog-description = T’agiudat a assegurare chi totu is immàgines tuas tèngiant unu testu alternativu.
|
||||
pdfjs-editor-alt-text-settings-close-button = Serra
|
||||
|
||||
## "Annotations removed" bar
|
||||
|
||||
pdfjs-editor-undo-bar-message-freetext = Testu cantzelladu
|
||||
pdfjs-editor-undo-bar-message-ink = Disinnu cantzelladu
|
||||
pdfjs-editor-undo-bar-message-stamp = Immàgine cantzellada
|
||||
pdfjs-editor-undo-bar-message-signature = Firma cantzellada
|
||||
pdfjs-editor-undo-bar-undo-button =
|
||||
.title = Iscontza
|
||||
pdfjs-editor-undo-bar-undo-button-label = Iscontza
|
||||
pdfjs-editor-undo-bar-close-button =
|
||||
.title = Serra
|
||||
pdfjs-editor-undo-bar-close-button-label = Serra
|
||||
|
||||
## Dialog buttons
|
||||
|
||||
pdfjs-editor-add-signature-cancel-button = Annulla
|
||||
|
||||
@ -153,29 +153,6 @@ pdfjs-document-properties-linearized = Rýchle zobrazovanie z webu:
|
||||
pdfjs-document-properties-linearized-yes = Áno
|
||||
pdfjs-document-properties-linearized-no = Nie
|
||||
pdfjs-document-properties-close-button = Zavrieť
|
||||
pdfjs-digital-signature-properties-view-certificate = Zobraziť certifikát
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Dôvod: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Časová pečiatka: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Podpodpis ({ $count })
|
||||
[few] Podpodpisy ({ $count })
|
||||
[many] Podpodpisy ({ $count })
|
||||
*[other] Podpodpisy ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -771,84 +748,6 @@ pdfjs-views-manager-waiting-for-file = Nahráva sa súbor…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Spravovať strany
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Vlastnosti digitálneho podpisu
|
||||
.aria-label = Vlastnosti digitálneho podpisu
|
||||
pdfjs-digital-signature-properties-button-label = Vlastnosti digitálneho podpisu
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument bol podpísaný platným digitálnym podpisom
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument bol podpísaný, ale { $count } digitálny podpis sa nepodarilo overiť
|
||||
[few] Dokument bol podpísaný, ale { $count } digitálne podpisy sa nepodarilo overiť
|
||||
[many] Dokument bol podpísaný, ale { $count } digitálnych podpisov sa nepodarilo overiť
|
||||
*[other] Dokument bol podpísaný, ale { $count } digitálnych podpisov sa nepodarilo overiť
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument bol podpísaný { $count } certifikátom, ktorý nie je dôveryhodný
|
||||
[few] Dokument bol podpísaný { $count } certifikátmi, ktoré nie sú dôveryhodné
|
||||
[many] Dokument bol podpísaný { $count } certifikátmi, ktoré nie sú dôveryhodné
|
||||
*[other] Dokument bol podpísaný { $count } certifikátmi, ktoré nie sú dôveryhodné
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument bol podpísaný { $count } certifikátom, ktorému vypršala platnosť
|
||||
[few] Dokument bol podpísaný { $count } certifikátmi, ktorých platnosť vypršala
|
||||
[many] Dokument bol podpísaný { $count } certifikátmi, ktorých platnosť vypršala
|
||||
*[other] Dokument bol podpísaný { $count } certifikátmi, ktorých platnosť vypršala
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokument má { $count } neplatný digitálny podpis
|
||||
[few] Dokument má { $count } neplatné digitálne podpisy
|
||||
[many] Dokument má { $count } neplatných digitálnych podpisov
|
||||
*[other] Dokument má { $count } neplatných digitálnych podpisov
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument bol podpísaný { $count } zrušeným certifikátom
|
||||
[few] Dokument bol podpísaný { $count } zrušenými certifikátmi
|
||||
[many] Dokument bol podpísaný { $count } zrušenými certifikátmi
|
||||
*[other] Dokument bol podpísaný { $count } zrušenými certifikátmi
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Stav: Podpis overený
|
||||
pdfjs-digital-signature-properties-status-invalid = Stav: Podpis neplatný
|
||||
pdfjs-digital-signature-properties-status-unknown = Stav: Nedá sa overiť (nepodporovaný)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certifikát: Dôveryhodný ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certifikát: Nie je k dispozícii
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certifikát: Nedôveryhodný
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certifikát: Neznámy vydavateľ ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certifikát: Samopodpísaný ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certifikát: Nedôveryhodný vydavateľ ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certifikát: Platnosť vypršala
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certifikát: Platnosť vypršala ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certifikát: Zrušený
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -132,8 +132,8 @@ pdfjs-document-properties-page-size-orientation-portrait = pokončno
|
||||
pdfjs-document-properties-page-size-orientation-landscape = ležeče
|
||||
pdfjs-document-properties-page-size-name-a-three = A3
|
||||
pdfjs-document-properties-page-size-name-a-four = A4
|
||||
pdfjs-document-properties-page-size-name-letter = Letter
|
||||
pdfjs-document-properties-page-size-name-legal = Legal
|
||||
pdfjs-document-properties-page-size-name-letter = Pismo
|
||||
pdfjs-document-properties-page-size-name-legal = Pravno
|
||||
|
||||
## Variables:
|
||||
## $width (Number) - the width of the (current) page
|
||||
@ -153,29 +153,6 @@ pdfjs-document-properties-linearized = Hitri spletni ogled:
|
||||
pdfjs-document-properties-linearized-yes = Da
|
||||
pdfjs-document-properties-linearized-no = Ne
|
||||
pdfjs-document-properties-close-button = Zapri
|
||||
pdfjs-digital-signature-properties-view-certificate = Ogled digitalnega potrdila
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Razlog: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Časovni žig: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Podpodpis ({ $count })
|
||||
[two] Podpodpisi ({ $count })
|
||||
[few] Podpodpisi ({ $count })
|
||||
*[other] Podpodpisi ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -771,23 +748,6 @@ pdfjs-views-manager-waiting-for-file = Nalaganje datoteke …
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Upravljanje strani
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Lastnosti digitalnega podpisa
|
||||
.aria-label = Lastnosti digitalnega podpisa
|
||||
pdfjs-digital-signature-properties-button-label = Lastnosti digitalnega podpisa
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokument je bil podpisan z veljavnim digitalnim podpisom
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,28 +153,6 @@ pdfjs-document-properties-linearized = Брз веб приказ:
|
||||
pdfjs-document-properties-linearized-yes = Да
|
||||
pdfjs-document-properties-linearized-no = Не
|
||||
pdfjs-document-properties-close-button = Затвори
|
||||
pdfjs-digital-signature-properties-view-certificate = Прикажи сертификат
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Разлог: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Временски жиг: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Подпотпис ({ $count })
|
||||
[few] Подпотписа ({ $count })
|
||||
*[other] Подпотписа ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -762,79 +740,6 @@ pdfjs-views-manager-waiting-for-file = Отпремам датотеку…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Управљај страницама
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Својства дигиталног потписа
|
||||
.aria-label = Својства дигиталног потписа
|
||||
pdfjs-digital-signature-properties-button-label = Својства дигиталног потписа
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Документ је потписан исправним дигиталним потписом
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Документ је потписан, али { $count } дигитални потпис није могао да се потврди
|
||||
[few] Документ је потписан, али { $count } дигитална потписа нису могли да се потврде
|
||||
*[other] Документ је потписан, али { $count } дигиталних потписа није могло да се потврде
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Документ је потписан са { $count } сертификатом који није поуздан
|
||||
[few] Документ је потписан са { $count } сертификата који нису поуздани
|
||||
*[other] Документ је потписан са { $count } сертификата који нису поуздани
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Документ је потписан са { $count } истеклим сертификатом
|
||||
[few] Документ је потписан са { $count } истекла сертификата
|
||||
*[other] Документ је потписан са { $count } истеклих сертификата
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Документ има { $count } неважећи дигитални потпис
|
||||
[few] Документ има { $count } неважећа дигитална потписа
|
||||
*[other] Документ има { $count } неважећих дигиталних потписа
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Документ је потписан са { $count } опозваним сертификатом
|
||||
[few] Документ је потписан са { $count } опозвана сертификата
|
||||
*[other] Документ је потписан са { $count } опозваних сертификата
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Статус: потврђен потпис
|
||||
pdfjs-digital-signature-properties-status-invalid = Статус: неважећи потпис
|
||||
pdfjs-digital-signature-properties-status-unknown = Статус: није могуће потврдити (неподржано)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Сертификат: поуздан ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Сертификат: недоступан
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Сертификат: неповерљив
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Сертификат: непознат издавач ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Сертификат: самопотписан ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Сертификат: неповерљив издавач ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Сертификат: истекао
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Сертификат: истекао ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Сертификат: опозван
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Snabb webbvisning:
|
||||
pdfjs-document-properties-linearized-yes = Ja
|
||||
pdfjs-document-properties-linearized-no = Nej
|
||||
pdfjs-document-properties-close-button = Stäng
|
||||
pdfjs-digital-signature-properties-view-certificate = Visa certifikat
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Orsak: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Tidsstämpel: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Undersignatur ({ $count })
|
||||
*[other] Undersignaturer ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Överför fil…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Hantera sidor
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Egenskaper för digital signatur
|
||||
.aria-label = Egenskaper för digital signatur
|
||||
pdfjs-digital-signature-properties-button-label = Egenskaper för digital signatur
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Dokumentet signerades med en giltig digital signatur
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Dokument signerat men { $count } digital signatur kunde inte verifieras
|
||||
*[other] Dokument signerat men { $count } digitala signaturer kunde inte verifieras
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Dokument signerat med { $count } certifikat som inte är tillförlitligt
|
||||
*[other] Dokument signerat med { $count } certifikat som inte är tillförlitliga
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Dokument signerat med { $count } utgånget certifikat
|
||||
*[other] Dokument signerat med { $count } utgångna certifikat
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Dokumentet har { $count } ogiltig digital signatur
|
||||
*[other] Dokumentet har { $count } ogiltiga digitala signaturer
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Dokument signerat med { $count } återkallat certifikat
|
||||
*[other] Dokument signerat med { $count } återkallade certifikat
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Status: Signatur verifierad
|
||||
pdfjs-digital-signature-properties-status-invalid = Status: Ogiltig signatur
|
||||
pdfjs-digital-signature-properties-status-unknown = Status: Kan inte verifiera (stöds inte)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Certifikat: Tillförlitligt ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Certifikat: Ej tillgänglig
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Certifikat: Otillförlitligt
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Certifikat: Okänd utfärdare ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Certifikat: Självsignerat ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Certifikat: Otillförlitlig utfärdare ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Certifikat: Utgånget
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Certifikat: Utgånget ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Certifikat: Återkallat
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,27 +153,6 @@ pdfjs-document-properties-linearized = Hızlı web görünümü:
|
||||
pdfjs-document-properties-linearized-yes = Evet
|
||||
pdfjs-document-properties-linearized-no = Hayır
|
||||
pdfjs-document-properties-close-button = Kapat
|
||||
pdfjs-digital-signature-properties-view-certificate = Sertifikayı göster
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Neden: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Zaman damgası: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures =
|
||||
{ $count ->
|
||||
[one] Alt imza ({ $count })
|
||||
*[other] Alt imzalar ({ $count })
|
||||
}
|
||||
|
||||
## Print
|
||||
|
||||
@ -517,11 +496,11 @@ pdfjs-editor-new-alt-text-added-button =
|
||||
pdfjs-editor-new-alt-text-added-button-label = Alt metin eklendi
|
||||
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
|
||||
pdfjs-editor-new-alt-text-missing-button =
|
||||
.aria-label = Alt metin eksik
|
||||
.aria-label = Alternatif metin eksik
|
||||
pdfjs-editor-new-alt-text-missing-button-label = Alt metin eksik
|
||||
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
|
||||
pdfjs-editor-new-alt-text-to-review-button =
|
||||
.aria-label = Alt metni incele
|
||||
.aria-label = Alternatif metni incele
|
||||
pdfjs-editor-new-alt-text-to-review-button-label = Alt metni incele
|
||||
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
|
||||
# Variables:
|
||||
@ -753,74 +732,6 @@ pdfjs-views-manager-waiting-for-file = Dosya yükleniyor…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Sayfaları yönet
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Dijital imza özellikleri
|
||||
.aria-label = Dijital imza özellikleri
|
||||
pdfjs-digital-signature-properties-button-label = Dijital imza özellikleri
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Belge geçerli bir dijital imza ile imzalanmıştır
|
||||
pdfjs-digital-signature-properties-banner-unknown =
|
||||
{ $count ->
|
||||
[one] Belge imzalanmış ancak { $count } dijital imza doğrulanamadı
|
||||
*[other] Belge imzalanmış ancak { $count } dijital imza doğrulanamadı
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-untrusted =
|
||||
{ $count ->
|
||||
[one] Belge, güvenilmeyen { $count } sertifikayla imzalanmış
|
||||
*[other] Belge, güvenilmeyen { $count } sertifikayla imzalanmış
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-expired =
|
||||
{ $count ->
|
||||
[one] Belge, süresi dolmuş { $count } sertifika ile imzalanmış
|
||||
*[other] Belge, süresi dolmuş { $count } sertifika ile imzalanmış
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-invalid =
|
||||
{ $count ->
|
||||
[one] Belge { $count } geçersiz dijital imza içeriyor
|
||||
*[other] Belge { $count } geçersiz dijital imza içeriyor
|
||||
}
|
||||
pdfjs-digital-signature-properties-banner-revoked =
|
||||
{ $count ->
|
||||
[one] Belge, iptal edilmiş { $count } sertifika ile imzalanmış
|
||||
*[other] Belge, iptal edilmiş { $count } sertifika ile imzalanmış
|
||||
}
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Durum: İmza doğrulandı
|
||||
pdfjs-digital-signature-properties-status-invalid = Durum: İmza geçersiz
|
||||
pdfjs-digital-signature-properties-status-unknown = Durum: Doğrulanamadı (desteklenmiyor)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Sertifika: Güvenilir ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Sertifika: Kullanılamıyor
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Sertifika: Güvensiz
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Sertifika: Bilinmeyen yayıncı ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Sertifika: Kendi kendine imzalanmış ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Sertifika: Güvenilmeyen yayıncı ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Sertifika: Süresi dolmuş
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Sertifika: Süresi dolmuş ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Sertifika: İptal edilmiş
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,23 +153,6 @@ pdfjs-document-properties-linearized = Xem nhanh trên web:
|
||||
pdfjs-document-properties-linearized-yes = Có
|
||||
pdfjs-document-properties-linearized-no = Không
|
||||
pdfjs-document-properties-close-button = Ðóng
|
||||
pdfjs-digital-signature-properties-view-certificate = Xem chứng chỉ
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = Nguyên nhân: { $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = Timestamp: { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures = Chữ ký thành phần ({ $count })
|
||||
|
||||
## Print
|
||||
|
||||
@ -486,7 +469,7 @@ pdfjs-editor-new-alt-text-description = Mô tả ngắn gọn dành cho người
|
||||
pdfjs-editor-new-alt-text-disclaimer1 = Văn bản thay thế này được tạo tự động và có thể không chính xác.
|
||||
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Tìm hiểu thêm
|
||||
pdfjs-editor-new-alt-text-create-automatically-button-label = Tạo văn bản thay thế tự động
|
||||
pdfjs-editor-new-alt-text-not-now-button = Để sau
|
||||
pdfjs-editor-new-alt-text-not-now-button = Không phải bây giờ
|
||||
pdfjs-editor-new-alt-text-error-title = Không thể tạo tự động văn bản thay thế
|
||||
pdfjs-editor-new-alt-text-error-description = Vui lòng viết văn bản thay thế của riêng bạn hoặc thử lại sau.
|
||||
pdfjs-editor-new-alt-text-error-close-button = Đóng
|
||||
@ -717,54 +700,6 @@ pdfjs-views-manager-waiting-for-file = Đang tải lên tập tin…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = Quản lý trang
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = Thuộc tính chữ ký điện tử
|
||||
.aria-label = Thuộc tính chữ ký điện tử
|
||||
pdfjs-digital-signature-properties-button-label = Thuộc tính chữ ký điện tử
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = Tài liệu đã được ký bằng chữ ký điện tử hợp lệ
|
||||
pdfjs-digital-signature-properties-banner-unknown = Tài liệu đã được ký nhưng không thể xác minh { $count } chữ ký điện tử
|
||||
pdfjs-digital-signature-properties-banner-untrusted = Tài liệu được ký bằng { $count } chứng chỉ không đáng tin cậy
|
||||
pdfjs-digital-signature-properties-banner-expired = Tài liệu được ký bằng { $count } chứng chỉ đã hết hạn
|
||||
pdfjs-digital-signature-properties-banner-invalid = Tài liệu có { $count } chữ ký điện tử không hợp lệ
|
||||
pdfjs-digital-signature-properties-banner-revoked = Tài liệu được ký bằng { $count } chứng chỉ đã bị thu hồi
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = Trạng thái: Chữ ký đã được xác minh
|
||||
pdfjs-digital-signature-properties-status-invalid = Trạng thái: Chữ ký không hợp lệ
|
||||
pdfjs-digital-signature-properties-status-unknown = Trạng thái: Không thể xác minh (không được hỗ trợ)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = Chứng chỉ: Đáng tin cậy ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = Chứng chỉ: Không khả dụng
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = Chứng chỉ: Không đáng tin cậy
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = Chứng chỉ: Người cấp không xác định ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = Chứng chỉ: Tự ký ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = Chứng chỉ: Người cấp không đáng tin cậy ({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = Chứng chỉ: Đã hết hạn
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = Chứng chỉ: Đã hết hạn ({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = Chứng chỉ: Đã bị thu hồi
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
@ -153,19 +153,6 @@ pdfjs-document-properties-linearized = 快速 Web 视图:
|
||||
pdfjs-document-properties-linearized-yes = 是
|
||||
pdfjs-document-properties-linearized-no = 否
|
||||
pdfjs-document-properties-close-button = 关闭
|
||||
pdfjs-digital-signature-properties-view-certificate = 查看证书
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = 原因:{ $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = 时间戳:{ DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
|
||||
## Print
|
||||
|
||||
|
||||
@ -153,23 +153,6 @@ pdfjs-document-properties-linearized = 快速 Web 檢視:
|
||||
pdfjs-document-properties-linearized-yes = 是
|
||||
pdfjs-document-properties-linearized-no = 否
|
||||
pdfjs-document-properties-close-button = 關閉
|
||||
pdfjs-digital-signature-properties-view-certificate = 檢視憑證
|
||||
# Shown beneath an invalid signature card to explain why verification
|
||||
# failed. The text comes from NSS (e.g. "Signature integrity has been
|
||||
# compromised", "PKCS#7 signature could not be parsed") and is not
|
||||
# itself localized — it is the underlying error message produced by
|
||||
# the verification backend.
|
||||
# Variables:
|
||||
# $reason (String) - error message describing why the signature
|
||||
# could not be verified.
|
||||
pdfjs-digital-signature-properties-reason = 原因:{ $reason }
|
||||
# Variables:
|
||||
# $dateObj (Date) - the signing time from the /Sig dict's /M entry.
|
||||
pdfjs-digital-signature-properties-timestamp = 時間戳記:{ DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||||
# Variables:
|
||||
# $count (Number) - number of nested sub-signatures (one per earlier
|
||||
# incremental revision of the document).
|
||||
pdfjs-digital-signature-properties-sub-signatures = 子簽章({ $count })
|
||||
|
||||
## Print
|
||||
|
||||
@ -717,54 +700,6 @@ pdfjs-views-manager-waiting-for-file = 正在上傳檔案…
|
||||
pdfjs-toggle-views-manager-button1 =
|
||||
.title = 管理頁面
|
||||
|
||||
## Digital signature properties (signature verification panel)
|
||||
|
||||
pdfjs-digital-signature-properties-button =
|
||||
.title = 數位簽章屬性
|
||||
.aria-label = 數位簽章屬性
|
||||
pdfjs-digital-signature-properties-button-label = 數位簽章屬性
|
||||
|
||||
## Banner shown above the signature list summarising the overall
|
||||
## verification state of the document. Each variant is selected by the
|
||||
## viewer based on the worst per-signature status; one signature is
|
||||
## enough to lower the banner.
|
||||
##
|
||||
## Variables:
|
||||
## $count (Number) - number of signatures at the worst level.
|
||||
|
||||
pdfjs-digital-signature-properties-banner-verified = 文件使用有效的數位簽章進行簽署
|
||||
pdfjs-digital-signature-properties-banner-unknown = 文件已進行簽署,但無法驗證當中的 { $count } 筆數位簽章
|
||||
pdfjs-digital-signature-properties-banner-untrusted = 文件已進行簽署,但當中的 { $count } 筆數位簽章不受信任
|
||||
pdfjs-digital-signature-properties-banner-expired = 文件已進行簽署,但當中的 { $count } 筆數位簽章已過期
|
||||
pdfjs-digital-signature-properties-banner-invalid = 文件中有 { $count } 筆無效的數位簽章
|
||||
pdfjs-digital-signature-properties-banner-revoked = 文件已進行簽署,但當中的 { $count } 筆數位簽章已廢止
|
||||
|
||||
## Per-signature status row. Only three distinct strings are needed:
|
||||
## the signature crypto either verified (the cert chain may still be
|
||||
## untrusted/expired/revoked, but that's surfaced on the cert row
|
||||
## below), or it failed, or its sub-format isn't supported.
|
||||
|
||||
pdfjs-digital-signature-properties-status-verified = 狀態:已驗證簽章
|
||||
pdfjs-digital-signature-properties-status-invalid = 狀態:簽章無效
|
||||
pdfjs-digital-signature-properties-status-unknown = 狀態:無法驗證(不支援)
|
||||
|
||||
## Per-signature certificate row. The variants with an issuer / date in
|
||||
## parentheses embed fully-localized context — no English fall-through.
|
||||
##
|
||||
## Variables:
|
||||
## $issuer (String) - issuer or subject common name from the cert.
|
||||
## $dateObj (Date) - notAfter date for the expired-with-date form.
|
||||
|
||||
pdfjs-digital-signature-properties-certificate-trusted = 憑證:受信任({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-unknown = 憑證:無法使用
|
||||
pdfjs-digital-signature-properties-certificate-untrusted = 憑證:未受信任
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-unknown-issuer = 憑證:未知的簽發者({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-self-signed = 憑證:自行簽署({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-untrusted-untrusted-issuer = 憑證:未受信任的簽發者({ $issuer })
|
||||
pdfjs-digital-signature-properties-certificate-expired = 憑證:已過期
|
||||
pdfjs-digital-signature-properties-certificate-expired-with-date = 憑證:已過期({ DATETIME($dateObj, dateStyle: "medium") })
|
||||
pdfjs-digital-signature-properties-certificate-revoked = 憑證:已廢止
|
||||
|
||||
## Main menu for adding/removing signatures
|
||||
|
||||
pdfjs-editor-delete-signature-button1 =
|
||||
|
||||
4492
package-lock.json
generated
4492
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
54
package.json
54
package.json
@ -2,33 +2,33 @@
|
||||
"name": "pdf.js",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^8.0.1",
|
||||
"@babel/preset-env": "^8.0.2",
|
||||
"@babel/runtime": "^8.0.0",
|
||||
"@eslint/json": "^2.0.1",
|
||||
"@babel/core": "^7.29.0",
|
||||
"@babel/preset-env": "^7.29.5",
|
||||
"@babel/runtime": "^7.29.2",
|
||||
"@eslint/json": "^1.2.0",
|
||||
"@fluent/bundle": "^0.19.1",
|
||||
"@fluent/dom": "^0.10.2",
|
||||
"@metalsmith/layouts": "^3.0.0",
|
||||
"@metalsmith/markdown": "^1.10.0",
|
||||
"@napi-rs/canvas": "^1.0.3",
|
||||
"@types/node": "^26.1.2",
|
||||
"autoprefixer": "^10.5.4",
|
||||
"@napi-rs/canvas": "^1.0.0",
|
||||
"@types/node": "^25.9.1",
|
||||
"autoprefixer": "^10.5.0",
|
||||
"babel-loader": "^10.1.1",
|
||||
"babel-plugin-istanbul": "^8.0.2",
|
||||
"babel-plugin-polyfill-corejs3": "^1.0.0",
|
||||
"babel-plugin-add-header-comment": "^1.0.3",
|
||||
"babel-plugin-istanbul": "^8.0.0",
|
||||
"cached-iterable": "^0.3.0",
|
||||
"caniuse-lite": "^1.0.30001806",
|
||||
"caniuse-lite": "^1.0.30001793",
|
||||
"core-js": "^3.49.0",
|
||||
"eslint": "^10.8.0",
|
||||
"eslint": "^10.4.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-import-x": "^4.17.1",
|
||||
"eslint-plugin-import-x": "^4.16.2",
|
||||
"eslint-plugin-jasmine": "^4.2.2",
|
||||
"eslint-plugin-no-unsanitized": "^4.1.5",
|
||||
"eslint-plugin-perfectionist": "^5.10.0",
|
||||
"eslint-plugin-prettier": "^5.5.6",
|
||||
"eslint-plugin-regexp": "^3.1.1",
|
||||
"eslint-plugin-unicorn": "^72.0.0",
|
||||
"globals": "^17.8.0",
|
||||
"eslint-plugin-perfectionist": "^5.9.0",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"eslint-plugin-regexp": "^3.1.0",
|
||||
"eslint-plugin-unicorn": "^64.0.0",
|
||||
"globals": "^17.6.0",
|
||||
"gulp": "^5.0.1",
|
||||
"gulp-cli": "^3.1.0",
|
||||
"gulp-postcss": "^10.0.0",
|
||||
@ -39,28 +39,28 @@
|
||||
"istanbul-lib-coverage": "^3.2.2",
|
||||
"istanbul-lib-report": "^3.0.1",
|
||||
"istanbul-reports": "^3.2.0",
|
||||
"jasmine": "^6.3.0",
|
||||
"jasmine": "^6.2.0",
|
||||
"jsdoc": "^4.0.5",
|
||||
"jstransformer-nunjucks": "^1.2.0",
|
||||
"kleur": "^4.1.5",
|
||||
"metalsmith": "^2.7.0",
|
||||
"metalsmith-html-relative": "^2.0.13",
|
||||
"metalsmith-html-relative": "^2.0.12",
|
||||
"ordered-read-streams": "^2.0.0",
|
||||
"pngjs": "^7.0.0",
|
||||
"postcss": "^8.5.25",
|
||||
"postcss-discard-comments": "^8.0.1",
|
||||
"postcss": "^8.5.15",
|
||||
"postcss-discard-comments": "^8.0.0",
|
||||
"postcss-values-parser": "^8.0.0",
|
||||
"prettier": "^3.9.6",
|
||||
"puppeteer": "^25.4.0",
|
||||
"stylelint": "^17.14.1",
|
||||
"prettier": "^3.8.3",
|
||||
"puppeteer": "^25.1.0",
|
||||
"stylelint": "^17.12.0",
|
||||
"stylelint-prettier": "^5.0.3",
|
||||
"svglint": "^4.2.1",
|
||||
"terser-webpack-plugin": "^5.6.1",
|
||||
"tsc-alias": "^1.9.1",
|
||||
"terser-webpack-plugin": "^5.6.0",
|
||||
"tsc-alias": "^1.8.17",
|
||||
"ttest": "^4.0.0",
|
||||
"typescript": "^6.0.3",
|
||||
"vinyl": "^3.0.1",
|
||||
"webpack": "^5.109.2",
|
||||
"webpack": "^5.107.1",
|
||||
"webpack-stream": "^7.0.0"
|
||||
},
|
||||
"repository": {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"stableVersion": "6.2.108",
|
||||
"baseVersion": "ce4ff55faaa83b39b0137dc458af6eea6f96235f",
|
||||
"versionPrefix": "6.3."
|
||||
"stableVersion": "5.7.284",
|
||||
"baseVersion": "e6e06cf6b5307fe39e0de69c6c884f816b0cb21b",
|
||||
"versionPrefix": "6.0."
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -25,17 +25,11 @@ class BaseStream {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {number}
|
||||
*/
|
||||
// eslint-disable-next-line getter-return
|
||||
get length() {
|
||||
unreachable("Abstract getter `length` accessed");
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {boolean}
|
||||
*/
|
||||
// eslint-disable-next-line getter-return
|
||||
get isEmpty() {
|
||||
unreachable("Abstract getter `isEmpty` accessed");
|
||||
@ -49,10 +43,6 @@ class BaseStream {
|
||||
unreachable("Abstract method `getByte` called");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number | undefined} [length]
|
||||
* @returns {Uint8Array}
|
||||
*/
|
||||
getBytes(length) {
|
||||
unreachable("Abstract method `getBytes` called");
|
||||
}
|
||||
@ -145,10 +135,6 @@ class BaseStream {
|
||||
unreachable("Abstract method `makeSubStream` called");
|
||||
}
|
||||
|
||||
clone() {
|
||||
unreachable("Abstract method `clone` called");
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Array | null}
|
||||
*/
|
||||
|
||||
@ -75,7 +75,7 @@ function calculateMD5(data, offset, length) {
|
||||
i += 3;
|
||||
const w = new Int32Array(16);
|
||||
const { k, r } = PARAMS;
|
||||
for (i = 0; i < paddedLength;) {
|
||||
for (i = 0; i < paddedLength; ) {
|
||||
for (j = 0; j < 16; ++j, i += 4) {
|
||||
w[j] =
|
||||
padded[i] |
|
||||
|
||||
@ -96,7 +96,7 @@ function calculateSHA256(data, offset, length) {
|
||||
const w = new Uint32Array(64);
|
||||
const { k } = PARAMS;
|
||||
// for each 512 bit block
|
||||
for (i = 0; i < paddedLength;) {
|
||||
for (i = 0; i < paddedLength; ) {
|
||||
for (j = 0; j < 16; ++j) {
|
||||
w[j] =
|
||||
(padded[i] << 24) |
|
||||
|
||||
@ -303,7 +303,7 @@ function calculateSHA512(data, offset, length, mode384 = false) {
|
||||
let tmp3;
|
||||
|
||||
// for each 1024 bit block
|
||||
for (i = 0; i < paddedLength;) {
|
||||
for (i = 0; i < paddedLength; ) {
|
||||
for (j = 0; j < 16; ++j) {
|
||||
w[j].high =
|
||||
(padded[i] << 24) |
|
||||
|
||||
@ -19,7 +19,7 @@ import {
|
||||
DocumentActionEventType,
|
||||
FormatError,
|
||||
info,
|
||||
makeArr,
|
||||
objectSize,
|
||||
PermissionFlag,
|
||||
shadow,
|
||||
stringToUTF8String,
|
||||
@ -52,41 +52,9 @@ import { clearGlobalCaches } from "./cleanup_helper.js";
|
||||
import { ColorSpaceUtils } from "./colorspace_utils.js";
|
||||
import { FileSpec } from "./file_spec.js";
|
||||
import { MetadataParser } from "./metadata_parser.js";
|
||||
import { soundStreamToWav } from "./sound.js";
|
||||
import { stringToPDFString } from "./string_utils.js";
|
||||
import { StructTreeRoot } from "./struct_tree.js";
|
||||
|
||||
/**
|
||||
* @import {XRef} from "./xref.js";
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback GetAttachmentContent
|
||||
* Callback used to lazily fetch attachment content.
|
||||
* @param {string} id
|
||||
* Unique attachment identifier.
|
||||
* @returns {CatalogAttachmentContent}
|
||||
* Result.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Uint8Array | null} CatalogAttachmentContent
|
||||
* Attachment value.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef CatalogAttachment
|
||||
* Attachment metadata.
|
||||
* @property {CatalogAttachmentContent | undefined} [content]
|
||||
* Value, when already available.
|
||||
* @property {string} description
|
||||
* Description.
|
||||
* @property {string} filename
|
||||
* Filename (just the basename) for display.
|
||||
* @property {string} rawFilename
|
||||
* File path.
|
||||
*/
|
||||
|
||||
const isRef = v => v instanceof Ref;
|
||||
|
||||
const isValidExplicitDest = _isValidExplicitDest.bind(
|
||||
@ -120,12 +88,6 @@ function fetchRemoteDest(action) {
|
||||
class Catalog {
|
||||
#actualNumPages = null;
|
||||
|
||||
#annotationAttachmentIdByRef = new RefSetCache();
|
||||
|
||||
#annotationAttachmentRefById = new Map();
|
||||
|
||||
#soundAttachmentIds = new Set();
|
||||
|
||||
#catDict = null;
|
||||
|
||||
builtInCMapCache = new Map();
|
||||
@ -165,44 +127,6 @@ class Catalog {
|
||||
return this.#catDict.clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an id for an attachment from a FileAttachment annotation.
|
||||
*
|
||||
* The id is registered here rather than parsed from a public string prefix in
|
||||
* `attachmentContent`, since catalog attachment names can be arbitrary PDF
|
||||
* strings and may otherwise collide with annotation-local ids.
|
||||
*
|
||||
* @param {Ref} ref
|
||||
* File-spec or embedded-file stream reference.
|
||||
* @param {boolean} [isSound]
|
||||
* When set, the referenced stream holds raw PDF sound samples that
|
||||
* `attachmentContent` wraps in a WAV container on fetch.
|
||||
* @returns {string}
|
||||
* Attachment id.
|
||||
*/
|
||||
getAttachmentIdForAnnotation(ref, isSound = false) {
|
||||
let id = this.#annotationAttachmentIdByRef.get(ref);
|
||||
if (!id) {
|
||||
const baseId = `attachmentRef:${ref.toString()}`;
|
||||
id = baseId;
|
||||
|
||||
let i = 1;
|
||||
while (
|
||||
this.#annotationAttachmentRefById.has(id) ||
|
||||
this.attachments?.has(id)
|
||||
) {
|
||||
id = `${baseId}-${i++}`;
|
||||
}
|
||||
|
||||
this.#annotationAttachmentIdByRef.put(ref, id);
|
||||
this.#annotationAttachmentRefById.set(id, ref);
|
||||
}
|
||||
if (isSound) {
|
||||
this.#soundAttachmentIds.add(id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
get version() {
|
||||
const version = this.#catDict.get("Version");
|
||||
if (version instanceof Name) {
|
||||
@ -286,11 +210,11 @@ class Catalog {
|
||||
/* suppressEncryption = */ !this.xref.encrypt?.encryptMetadata
|
||||
);
|
||||
|
||||
if (
|
||||
stream instanceof BaseStream &&
|
||||
isDict(stream.dict, "Metadata") &&
|
||||
isName(stream.dict.get("Subtype"), "XML")
|
||||
) {
|
||||
if (stream instanceof BaseStream && stream.dict instanceof Dict) {
|
||||
const type = stream.dict.get("Type");
|
||||
const subtype = stream.dict.get("Subtype");
|
||||
|
||||
if (isName(type, "Metadata") && isName(subtype, "XML")) {
|
||||
// XXX: This should examine the charset the XML document defines,
|
||||
// however since there are currently no real means to decode arbitrary
|
||||
// charsets, let's just hope that the author of the PDF was reasonable
|
||||
@ -300,6 +224,7 @@ class Catalog {
|
||||
metadata = new MetadataParser(data).serializable;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
if (ex instanceof MissingDataException) {
|
||||
throw ex;
|
||||
@ -361,11 +286,15 @@ class Catalog {
|
||||
}
|
||||
|
||||
#readStructTreeRoot() {
|
||||
const rawObj = this.#catDict.getRaw("StructTreeRoot"),
|
||||
obj = this.xref.fetchIfRef(rawObj);
|
||||
return obj instanceof Dict
|
||||
? new StructTreeRoot(this.xref, obj, rawObj)
|
||||
: null;
|
||||
const rawObj = this.#catDict.getRaw("StructTreeRoot");
|
||||
const obj = this.xref.fetchIfRef(rawObj);
|
||||
if (!(obj instanceof Dict)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const root = new StructTreeRoot(this.xref, obj, rawObj);
|
||||
root.init();
|
||||
return root;
|
||||
}
|
||||
|
||||
get toplevelPagesDict() {
|
||||
@ -440,7 +369,6 @@ class Catalog {
|
||||
|
||||
const outlineItem = {
|
||||
action: data.action,
|
||||
attachmentId: data.attachmentId,
|
||||
attachment: data.attachment,
|
||||
dest: data.dest,
|
||||
url: data.url,
|
||||
@ -763,17 +691,15 @@ class Catalog {
|
||||
}
|
||||
|
||||
get destinations() {
|
||||
const dests = new Map();
|
||||
|
||||
for (const obj of this.#readDests()) {
|
||||
const rawDests = this.#readDests(),
|
||||
dests = Object.create(null);
|
||||
for (const obj of rawDests) {
|
||||
if (obj instanceof NameTree) {
|
||||
for (const [key, value] of obj.getAll()) {
|
||||
const dest = fetchDest(value);
|
||||
if (dest) {
|
||||
dests.set(
|
||||
stringToPDFString(key, /* keepEscapeSequence = */ true),
|
||||
dest
|
||||
);
|
||||
dests[stringToPDFString(key, /* keepEscapeSequence = */ true)] =
|
||||
dest;
|
||||
}
|
||||
}
|
||||
} else if (obj instanceof Dict) {
|
||||
@ -781,10 +707,8 @@ class Catalog {
|
||||
const dest = fetchDest(value);
|
||||
if (dest) {
|
||||
// Always let the NameTree take precedence.
|
||||
dests.getOrInsert(
|
||||
stringToPDFString(key, /* keepEscapeSequence = */ true),
|
||||
dest
|
||||
);
|
||||
dests[stringToPDFString(key, /* keepEscapeSequence = */ true)] ||=
|
||||
dest;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -795,10 +719,11 @@ class Catalog {
|
||||
getDestination(id) {
|
||||
// Avoid extra lookup/parsing when all destinations are already available.
|
||||
if (Object.hasOwn(this, "destinations")) {
|
||||
return this.destinations.get(id) ?? null;
|
||||
return this.destinations[id] ?? null;
|
||||
}
|
||||
|
||||
for (const obj of this.#readDests()) {
|
||||
const rawDests = this.#readDests();
|
||||
for (const obj of rawDests) {
|
||||
if (obj instanceof NameTree || obj instanceof Dict) {
|
||||
const dest = fetchDest(obj.get(id));
|
||||
if (dest) {
|
||||
@ -810,7 +735,13 @@ class Catalog {
|
||||
// Always fallback to checking all destinations, in order to support:
|
||||
// - PDF documents with out-of-order NameTrees (fixes issue 10272).
|
||||
// - Destination keys that use PDFDocEncoding (fixes issue 19835).
|
||||
return this.destinations.get(id) ?? null;
|
||||
if (rawDests.length) {
|
||||
const dest = this.destinations[id];
|
||||
if (dest) {
|
||||
return dest;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
#readDests() {
|
||||
@ -1076,19 +1007,18 @@ class Catalog {
|
||||
break;
|
||||
case "PrintPageRange":
|
||||
// The number of elements must be even.
|
||||
if (
|
||||
Array.isArray(value) &&
|
||||
value.length % 2 === 0 &&
|
||||
value.every(
|
||||
if (Array.isArray(value) && value.length % 2 === 0) {
|
||||
const isValid = value.every(
|
||||
(page, i, arr) =>
|
||||
Number.isInteger(page) &&
|
||||
page > 0 &&
|
||||
(i === 0 || page >= arr[i - 1]) &&
|
||||
page <= this.numPages
|
||||
)
|
||||
) {
|
||||
);
|
||||
if (isValid) {
|
||||
prefValue = value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "NumCopies":
|
||||
if (Number.isInteger(value) && value > 0) {
|
||||
@ -1104,14 +1034,15 @@ class Catalog {
|
||||
warn(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`);
|
||||
continue;
|
||||
}
|
||||
(prefs ??= new Map()).set(key, prefValue);
|
||||
prefs ??= Object.create(null);
|
||||
prefs[key] = prefValue;
|
||||
}
|
||||
return shadow(this, "viewerPreferences", prefs);
|
||||
}
|
||||
|
||||
get openAction() {
|
||||
const obj = this.#catDict.get("OpenAction");
|
||||
const openAction = new Map();
|
||||
const openAction = Object.create(null);
|
||||
|
||||
if (obj instanceof Dict) {
|
||||
// Convert the OpenAction dictionary into a format that works with
|
||||
@ -1123,92 +1054,36 @@ class Catalog {
|
||||
Catalog.parseDestDictionary({ destDict, resultObj });
|
||||
|
||||
if (Array.isArray(resultObj.dest)) {
|
||||
openAction.set("dest", resultObj.dest);
|
||||
openAction.dest = resultObj.dest;
|
||||
} else if (resultObj.action) {
|
||||
openAction.set("action", resultObj.action);
|
||||
openAction.action = resultObj.action;
|
||||
}
|
||||
} else if (isValidExplicitDest(obj)) {
|
||||
openAction.set("dest", obj);
|
||||
openAction.dest = obj;
|
||||
}
|
||||
return shadow(this, "openAction", openAction.size ? openAction : null);
|
||||
return shadow(
|
||||
this,
|
||||
"openAction",
|
||||
objectSize(openAction) > 0 ? openAction : null
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get attachments.
|
||||
*
|
||||
* @returns {Map<string, CatalogAttachment> | null}
|
||||
* Attachments.
|
||||
*/
|
||||
get attachments() {
|
||||
const obj = this.#catDict.get("Names");
|
||||
/** @type {Map<string, CatalogAttachment> | null} */
|
||||
let attachments = null;
|
||||
|
||||
if (obj instanceof Dict && obj.has("EmbeddedFiles")) {
|
||||
const nameTree = new NameTree(obj.getRaw("EmbeddedFiles"), this.xref);
|
||||
for (const [key, value] of nameTree.getAll()) {
|
||||
(attachments ??= new Map()).set(
|
||||
stringToPDFString(key, /* keepEscapeSequence = */ true),
|
||||
new FileSpec(value).serializable
|
||||
);
|
||||
const fs = new FileSpec(value);
|
||||
attachments ??= Object.create(null);
|
||||
attachments[stringToPDFString(key, /* keepEscapeSequence = */ true)] =
|
||||
fs.serializable;
|
||||
}
|
||||
}
|
||||
return shadow(this, "attachments", attachments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} id
|
||||
* Unique attachment identifier.
|
||||
* @returns {CatalogAttachmentContent | undefined}
|
||||
* Content, or `undefined` when no named attachment exists for the id.
|
||||
*/
|
||||
#attachmentContentByName(id) {
|
||||
const obj = this.#catDict.get("Names");
|
||||
if (obj instanceof Dict && obj.has("EmbeddedFiles")) {
|
||||
const nameTree = new NameTree(obj.getRaw("EmbeddedFiles"), this.xref);
|
||||
for (const [key, value] of nameTree.getAll()) {
|
||||
if (stringToPDFString(key, /* keepEscapeSequence = */ true) === id) {
|
||||
return FileSpec.readContent(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get content for an attachment.
|
||||
*
|
||||
* @param {string} id
|
||||
* Unique attachment identifier (required).
|
||||
* @returns {CatalogAttachmentContent}
|
||||
* Content.
|
||||
*/
|
||||
attachmentContent(id) {
|
||||
const namedContent = this.#attachmentContentByName(id);
|
||||
if (namedContent !== undefined) {
|
||||
return namedContent;
|
||||
}
|
||||
|
||||
// Annotation-local attachments register the reference of their embedded
|
||||
// content in the catalog, so it's re-fetched from the xref on demand
|
||||
// instead of being cached (which would then need to survive `cleanup`).
|
||||
// The reference points either at the file-spec dictionary or, for an inline
|
||||
// file-spec, straight at the embedded-file stream.
|
||||
const ref = this.#annotationAttachmentRefById.get(id);
|
||||
if (ref) {
|
||||
const target = this.xref.fetch(ref);
|
||||
if (target instanceof BaseStream) {
|
||||
const content = FileSpec.readStreamContent(target);
|
||||
if (this.#soundAttachmentIds.has(id)) {
|
||||
return soundStreamToWav(target, content) ?? content;
|
||||
}
|
||||
return content;
|
||||
}
|
||||
return target instanceof Dict ? FileSpec.readContent(target) : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
get rawEmbeddedFiles() {
|
||||
const obj = this.#catDict.get("Names");
|
||||
if (!(obj instanceof Dict) || !obj.has("EmbeddedFiles")) {
|
||||
@ -1242,9 +1117,13 @@ class Catalog {
|
||||
let javaScript = null;
|
||||
|
||||
function appendIfJavaScriptDict(name, jsDict) {
|
||||
if (!(jsDict instanceof Dict) || !isName(jsDict.get("S"), "JavaScript")) {
|
||||
if (!(jsDict instanceof Dict)) {
|
||||
return;
|
||||
}
|
||||
if (!isName(jsDict.get("S"), "JavaScript")) {
|
||||
return;
|
||||
}
|
||||
|
||||
let js = jsDict.get("JS");
|
||||
if (js instanceof BaseStream) {
|
||||
js = js.getString();
|
||||
@ -1257,7 +1136,7 @@ class Catalog {
|
||||
);
|
||||
// Skip empty entries, similar to the `_collectJS` function.
|
||||
if (js) {
|
||||
(javaScript ??= new Map()).set(name, js);
|
||||
(javaScript ||= new Map()).set(name, js);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1288,10 +1167,14 @@ class Catalog {
|
||||
);
|
||||
|
||||
if (javaScript) {
|
||||
actions ??= new Map();
|
||||
actions ||= Object.create(null);
|
||||
|
||||
for (const [key, val] of javaScript) {
|
||||
actions.getOrInsertComputed(key, makeArr).push(val);
|
||||
if (key in actions) {
|
||||
actions[key].push(val);
|
||||
} else {
|
||||
actions[key] = [val];
|
||||
}
|
||||
}
|
||||
}
|
||||
return shadow(this, "jsActions", actions);
|
||||
@ -1500,22 +1383,6 @@ class Catalog {
|
||||
}
|
||||
}
|
||||
if (!Array.isArray(kids)) {
|
||||
// Prevent errors in corrupt PDF documents that violate the
|
||||
// specification by *inlining* Page dicts (fixes issue21436.pdf).
|
||||
let type = currentNode.getRaw("Type");
|
||||
if (type instanceof Ref) {
|
||||
try {
|
||||
type = await xref.fetchAsync(type);
|
||||
} catch (ex) {
|
||||
addPageError(ex);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isName(type, "Page") || !currentNode.has("Kids")) {
|
||||
addPageDict(currentNode, null);
|
||||
break;
|
||||
}
|
||||
|
||||
addPageError(
|
||||
new FormatError("Page dictionary kids object is not an array.")
|
||||
);
|
||||
@ -1591,9 +1458,6 @@ class Catalog {
|
||||
const xref = this.xref;
|
||||
let total = 0,
|
||||
ref = pageRef;
|
||||
// Prevent circular references in the /Pages tree.
|
||||
const visited = new RefSet();
|
||||
visited.put(pageRef);
|
||||
|
||||
while (true) {
|
||||
const node = await xref.fetchAsync(ref);
|
||||
@ -1613,12 +1477,6 @@ class Catalog {
|
||||
throw new FormatError("Node must be a dictionary.");
|
||||
}
|
||||
const parentRef = node.getRaw("Parent");
|
||||
if (parentRef instanceof Ref) {
|
||||
if (visited.has(parentRef)) {
|
||||
throw new FormatError("Pages tree contains circular reference.");
|
||||
}
|
||||
visited.put(parentRef);
|
||||
}
|
||||
|
||||
const parent = await node.getAsync("Parent");
|
||||
if (!parent) {
|
||||
@ -1698,8 +1556,8 @@ class Catalog {
|
||||
* properties will be placed.
|
||||
* @property {string} [docBaseUrl] - The document base URL that is used when
|
||||
* attempting to recover valid absolute URLs from relative ones.
|
||||
* @property {Record<string, CatalogAttachment> | null} [docAttachments] - The
|
||||
* document attachments (may not exist in most PDF documents).
|
||||
* @property {Object} [docAttachments] - The document attachments (may not
|
||||
* exist in most PDF documents).
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -1731,19 +1589,9 @@ class Catalog {
|
||||
// reached (e.g. integer MCIDs or MCR/OBJR dicts without further K).
|
||||
if (!pageRef) {
|
||||
const queue = [seDict];
|
||||
// Prevent circular references in the structure tree.
|
||||
const visited = new RefSet();
|
||||
visited.put(seRef);
|
||||
while (queue.length > 0 && !pageRef) {
|
||||
const node = queue.shift();
|
||||
let kids = node.getRaw("K");
|
||||
if (kids instanceof Ref) {
|
||||
if (visited.has(kids)) {
|
||||
continue;
|
||||
}
|
||||
visited.put(kids);
|
||||
kids = xref.fetch(kids);
|
||||
}
|
||||
const kids = node.get("K");
|
||||
let kidsArr;
|
||||
if (Array.isArray(kids)) {
|
||||
kidsArr = kids;
|
||||
@ -1753,12 +1601,6 @@ class Catalog {
|
||||
continue;
|
||||
}
|
||||
for (const kid of kidsArr) {
|
||||
if (kid instanceof Ref) {
|
||||
if (visited.has(kid)) {
|
||||
continue;
|
||||
}
|
||||
visited.put(kid);
|
||||
}
|
||||
const kidObj = xref.fetchIfRef(kid);
|
||||
if (!(kidObj instanceof Dict)) {
|
||||
continue; // integer MCID – leaf node, no Pg here
|
||||
@ -1898,7 +1740,8 @@ class Catalog {
|
||||
case "GoToR":
|
||||
const urlDict = action.get("F");
|
||||
if (urlDict instanceof Dict) {
|
||||
url = new FileSpec(urlDict).filename;
|
||||
const fs = new FileSpec(urlDict, /* skipContent = */ true);
|
||||
({ rawFilename: url } = fs.serializable);
|
||||
} else if (typeof urlDict === "string") {
|
||||
url = urlDict;
|
||||
} else {
|
||||
@ -1923,21 +1766,22 @@ class Catalog {
|
||||
|
||||
case "GoToE":
|
||||
const target = action.get("T");
|
||||
/** @type {string | null} */
|
||||
let id = null;
|
||||
let attachment;
|
||||
|
||||
if (target instanceof Dict) {
|
||||
if (docAttachments && target instanceof Dict) {
|
||||
const relationship = target.get("R");
|
||||
const name = target.get("N");
|
||||
|
||||
if (isName(relationship, "C") && typeof name === "string") {
|
||||
id = stringToPDFString(name, /* keepEscapeSequence = */ true);
|
||||
attachment =
|
||||
docAttachments[
|
||||
stringToPDFString(name, /* keepEscapeSequence = */ true)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if (docAttachments && id) {
|
||||
resultObj.attachmentId = id;
|
||||
resultObj.attachment = docAttachments.get(id);
|
||||
if (attachment) {
|
||||
resultObj.attachment = attachment;
|
||||
|
||||
// NOTE: the destination is relative to the *attachment*.
|
||||
const attachmentDest = fetchRemoteDest(action);
|
||||
|
||||
@ -58,9 +58,11 @@ class CCITTFaxStream extends DecodeStream {
|
||||
if (this.eof) {
|
||||
return this.buffer;
|
||||
}
|
||||
bytes ??= this.stream.isAsync
|
||||
if (!bytes) {
|
||||
bytes = this.stream.isAsync
|
||||
? (await this.stream.asyncGetBytes()) || this.bytes
|
||||
: this.bytes;
|
||||
}
|
||||
|
||||
this.buffer = await JBig2CCITTFaxImage.instance.decode(
|
||||
bytes,
|
||||
|
||||
@ -546,7 +546,7 @@ class CFFParser {
|
||||
|
||||
let length = data.length;
|
||||
|
||||
for (let j = 0; j < length;) {
|
||||
for (let j = 0; j < length; ) {
|
||||
const value = data[j++];
|
||||
let validationCommand = null;
|
||||
if (value === 12) {
|
||||
@ -775,12 +775,14 @@ class CFFParser {
|
||||
} else if (localSubrIndex) {
|
||||
localSubrToUse = localSubrIndex;
|
||||
}
|
||||
valid &&= this.parseCharString(
|
||||
if (valid) {
|
||||
valid = this.parseCharString(
|
||||
state,
|
||||
charstring,
|
||||
localSubrToUse,
|
||||
globalSubrIndex
|
||||
);
|
||||
}
|
||||
if (state.width !== null) {
|
||||
const nominalWidth = privateDictToUse.getByName("nominalWidthX");
|
||||
widths[i] = nominalWidth + state.width;
|
||||
@ -892,22 +894,9 @@ class CFFParser {
|
||||
}
|
||||
}
|
||||
if (maxZoneHeight > 0) {
|
||||
// The lower bound of AFDKO's valid window is `0.5 / maxZoneHeight`.
|
||||
// When that bound is itself above the default BlueScale the font simply
|
||||
// has small zones (e.g. Eurostile LT Std, or the SofiaPro fonts shipped
|
||||
// with a near-default 0.037): even the default 0.039625 would be
|
||||
// flagged as out-of-range, so this is the rendered intent and forcing
|
||||
// BlueScale up only misaligns/collapses overshooting glyphs (notably
|
||||
// with macOS's Core Text rasterizer). Only apply the lower clamp when
|
||||
// its target does not exceed the default.
|
||||
// Round the bound in order to avoid too long operand (issue 21466).
|
||||
const PRECISION = 1e5;
|
||||
const lowerBound = 0.5 / maxZoneHeight;
|
||||
const minBlueScale =
|
||||
lowerBound <= DEFAULT_BLUE_SCALE
|
||||
? Math.ceil(lowerBound * PRECISION) / PRECISION
|
||||
: -Infinity;
|
||||
const maxBlueScale = Math.floor(PRECISION / maxZoneHeight) / PRECISION;
|
||||
blueScale < DEFAULT_BLUE_SCALE ? 0.5 / maxZoneHeight : -Infinity;
|
||||
const maxBlueScale = 1 / maxZoneHeight;
|
||||
const clamped = MathClamp(blueScale, minBlueScale, maxBlueScale);
|
||||
if (clamped !== blueScale) {
|
||||
privateDict.setByName("BlueScale", clamped);
|
||||
@ -1428,9 +1417,10 @@ class CFFFDSelect {
|
||||
}
|
||||
|
||||
getFDIndex(glyphIndex) {
|
||||
return glyphIndex < 0 || glyphIndex >= this.fdSelect.length
|
||||
? -1
|
||||
: this.fdSelect[glyphIndex];
|
||||
if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {
|
||||
return -1;
|
||||
}
|
||||
return this.fdSelect[glyphIndex];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -182,14 +182,28 @@ class ChunkedStream extends Stream {
|
||||
}
|
||||
|
||||
getBytes(length) {
|
||||
const bytes = this.bytes;
|
||||
const pos = this.pos;
|
||||
const endPos = !length ? this.end : Math.min(pos + length, this.end);
|
||||
const strEnd = this.end;
|
||||
|
||||
if (endPos > this.progressiveDataLength) {
|
||||
this.ensureRange(pos, endPos);
|
||||
if (!length) {
|
||||
if (strEnd > this.progressiveDataLength) {
|
||||
this.ensureRange(pos, strEnd);
|
||||
}
|
||||
this.pos = endPos;
|
||||
return this.bytes.subarray(pos, endPos);
|
||||
this.pos = strEnd;
|
||||
return bytes.subarray(pos, strEnd);
|
||||
}
|
||||
|
||||
let end = pos + length;
|
||||
if (end > strEnd) {
|
||||
end = strEnd;
|
||||
}
|
||||
if (end > this.progressiveDataLength) {
|
||||
this.ensureRange(pos, end);
|
||||
}
|
||||
|
||||
this.pos = end;
|
||||
return bytes.subarray(pos, end);
|
||||
}
|
||||
|
||||
getByteRange(begin, end) {
|
||||
@ -239,10 +253,10 @@ class ChunkedStream extends Stream {
|
||||
};
|
||||
Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", {
|
||||
get() {
|
||||
return (
|
||||
this.numChunksLoaded === this.numChunks ||
|
||||
this.getMissingChunks().length === 0
|
||||
);
|
||||
if (this.numChunksLoaded === this.numChunks) {
|
||||
return true;
|
||||
}
|
||||
return this.getMissingChunks().length === 0;
|
||||
},
|
||||
configurable: true,
|
||||
});
|
||||
@ -260,13 +274,13 @@ class ChunkedStream extends Stream {
|
||||
}
|
||||
|
||||
class ChunkedStreamManager {
|
||||
#aborted = false;
|
||||
aborted = false;
|
||||
|
||||
currRequestId = 0;
|
||||
|
||||
_chunksNeededByRequest = new Map();
|
||||
|
||||
#loadedStreamCapability = Promise.withResolvers();
|
||||
_loadedStreamCapability = Promise.withResolvers();
|
||||
|
||||
_promisesByRequest = new Map();
|
||||
|
||||
@ -288,7 +302,7 @@ class ChunkedStreamManager {
|
||||
while (true) {
|
||||
const { value, done } = await rangeReader.read();
|
||||
|
||||
if (this.#aborted) {
|
||||
if (this.aborted) {
|
||||
chunks = null;
|
||||
return; // Ignoring any data after abort.
|
||||
}
|
||||
@ -323,7 +337,7 @@ class ChunkedStreamManager {
|
||||
const missingChunks = this.stream.getMissingChunks();
|
||||
this._requestChunks(missingChunks);
|
||||
}
|
||||
return this.#loadedStreamCapability.promise;
|
||||
return this._loadedStreamCapability.promise;
|
||||
}
|
||||
|
||||
_requestChunks(chunks) {
|
||||
@ -346,13 +360,13 @@ class ChunkedStreamManager {
|
||||
|
||||
const chunksToRequest = [];
|
||||
for (const chunk of chunksNeeded) {
|
||||
const requestIds = this._requestsByChunk.getOrInsertComputed(
|
||||
chunk,
|
||||
() => {
|
||||
let requestIds = this._requestsByChunk.get(chunk);
|
||||
if (!requestIds) {
|
||||
requestIds = [];
|
||||
this._requestsByChunk.set(chunk, requestIds);
|
||||
|
||||
chunksToRequest.push(chunk);
|
||||
return [];
|
||||
}
|
||||
);
|
||||
requestIds.push(requestId);
|
||||
}
|
||||
|
||||
@ -369,7 +383,7 @@ class ChunkedStreamManager {
|
||||
}
|
||||
|
||||
return capability.promise.catch(reason => {
|
||||
if (this.#aborted) {
|
||||
if (this.aborted) {
|
||||
return; // Ignoring any pending requests after abort.
|
||||
}
|
||||
throw reason;
|
||||
@ -459,7 +473,7 @@ class ChunkedStreamManager {
|
||||
}
|
||||
|
||||
if (stream.isDataLoaded) {
|
||||
this.#loadedStreamCapability.resolve(stream);
|
||||
this._loadedStreamCapability.resolve(stream);
|
||||
}
|
||||
|
||||
const loadedRequests = [];
|
||||
@ -520,6 +534,10 @@ class ChunkedStreamManager {
|
||||
});
|
||||
}
|
||||
|
||||
onError(err) {
|
||||
this._loadedStreamCapability.reject(err);
|
||||
}
|
||||
|
||||
getBeginChunk(begin) {
|
||||
return Math.floor(begin / this.chunkSize);
|
||||
}
|
||||
@ -529,13 +547,12 @@ class ChunkedStreamManager {
|
||||
}
|
||||
|
||||
abort(reason) {
|
||||
this.#aborted = true;
|
||||
this.aborted = true;
|
||||
this.pdfStream?.cancelAllRequests(reason);
|
||||
|
||||
for (const capability of this._promisesByRequest.values()) {
|
||||
capability.reject(reason);
|
||||
}
|
||||
this.#loadedStreamCapability.reject(reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -326,7 +326,7 @@ class CMap {
|
||||
c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;
|
||||
// Check each codespace range to see if it falls within.
|
||||
const codespaceRange = codespaceRanges[n];
|
||||
for (let k = 0, kk = codespaceRange.length; k < kk;) {
|
||||
for (let k = 0, kk = codespaceRange.length; k < kk; ) {
|
||||
const low = codespaceRange[k++];
|
||||
const high = codespaceRange[k++];
|
||||
if (c >= low && c <= high) {
|
||||
@ -345,7 +345,7 @@ class CMap {
|
||||
for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
|
||||
// Check each codespace range to see if it falls within.
|
||||
const codespaceRange = codespaceRanges[n];
|
||||
for (let k = 0, kk = codespaceRange.length; k < kk;) {
|
||||
for (let k = 0, kk = codespaceRange.length; k < kk; ) {
|
||||
const low = codespaceRange[k++];
|
||||
const high = codespaceRange[k++];
|
||||
if (charCode >= low && charCode <= high) {
|
||||
|
||||
@ -183,21 +183,6 @@ class ColorSpace {
|
||||
unreachable("Should not call ColorSpace.getRgbBuffer");
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts `count` unscaled colors to RGB, starting at `destOffset`.
|
||||
* Components use the native color-space ranges expected by `getRgbItem`,
|
||||
* and each output has a `3 + alpha01` byte stride.
|
||||
* Subclasses may override this to batch expensive conversions.
|
||||
*/
|
||||
getRgbItems(src, count, dest, destOffset, alpha01) {
|
||||
const { numComps } = this;
|
||||
|
||||
for (let i = 0, srcOffset = 0; i < count; i++, srcOffset += numComps) {
|
||||
this.getRgbItem(src, srcOffset, dest, destOffset);
|
||||
destOffset += 3 + alpha01;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the number of bytes required to store the result of the
|
||||
* conversion done by the getRgbBuffer method. As in getRgbBuffer,
|
||||
@ -394,20 +379,6 @@ class AlternateCS extends ColorSpace {
|
||||
this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
|
||||
}
|
||||
|
||||
getRgbItems(src, count, dest, destOffset, alpha01) {
|
||||
const { base, numComps, tintFn } = this;
|
||||
const baseNumComps = base.numComps;
|
||||
// Tint first so the base color space can convert the batch at once.
|
||||
const tinted = new Float32Array(count * baseNumComps);
|
||||
|
||||
for (let i = 0, srcOffset = 0, tintedOffset = 0; i < count; i++) {
|
||||
tintFn(src, srcOffset, tinted, tintedOffset);
|
||||
srcOffset += numComps;
|
||||
tintedOffset += baseNumComps;
|
||||
}
|
||||
base.getRgbItems(tinted, count, dest, destOffset, alpha01);
|
||||
}
|
||||
|
||||
getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
|
||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
|
||||
assert(
|
||||
@ -475,36 +446,24 @@ class PatternCS extends ColorSpace {
|
||||
* The default color is `new Uint8Array([0])`.
|
||||
*/
|
||||
class IndexedCS extends ColorSpace {
|
||||
#rgbLookup;
|
||||
|
||||
constructor(base, highVal, lookup) {
|
||||
super("Indexed", 1);
|
||||
this.base = base;
|
||||
this.highVal = highVal;
|
||||
|
||||
const count = highVal + 1;
|
||||
const length = base.numComps * count;
|
||||
const palette = new Uint8Array(length);
|
||||
const length = base.numComps * (highVal + 1);
|
||||
this.lookup = new Uint8Array(length);
|
||||
|
||||
if (lookup instanceof BaseStream) {
|
||||
palette.set(lookup.getBytes(length));
|
||||
const bytes = lookup.getBytes(length);
|
||||
this.lookup.set(bytes);
|
||||
} else if (typeof lookup === "string") {
|
||||
for (let i = 0; i < length; ++i) {
|
||||
palette[i] = lookup.charCodeAt(i);
|
||||
this.lookup[i] = lookup.charCodeAt(i) & 0xff;
|
||||
}
|
||||
} else {
|
||||
throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);
|
||||
}
|
||||
|
||||
this.#rgbLookup = new Uint8ClampedArray(count * 3);
|
||||
base.getRgbBuffer(
|
||||
palette,
|
||||
0,
|
||||
count,
|
||||
this.#rgbLookup,
|
||||
0,
|
||||
/* bits = */ 8,
|
||||
/* alpha01 = */ 0
|
||||
);
|
||||
}
|
||||
|
||||
getRgbItem(src, srcOffset, dest, destOffset) {
|
||||
@ -514,12 +473,10 @@ class IndexedCS extends ColorSpace {
|
||||
'IndexedCS.getRgbItem: Unsupported "dest" type.'
|
||||
);
|
||||
}
|
||||
const rgbLookup = this.#rgbLookup;
|
||||
const pos = MathClamp(Math.round(src[srcOffset]), 0, this.highVal) * 3;
|
||||
|
||||
dest[destOffset] = rgbLookup[pos];
|
||||
dest[destOffset + 1] = rgbLookup[pos + 1];
|
||||
dest[destOffset + 2] = rgbLookup[pos + 2];
|
||||
const { base, highVal, lookup } = this;
|
||||
const start =
|
||||
MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps;
|
||||
base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0);
|
||||
}
|
||||
|
||||
getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
|
||||
@ -529,21 +486,20 @@ class IndexedCS extends ColorSpace {
|
||||
'IndexedCS.getRgbBuffer: Unsupported "dest" type.'
|
||||
);
|
||||
}
|
||||
const { highVal } = this;
|
||||
const rgbLookup = this.#rgbLookup;
|
||||
const { base, highVal, lookup } = this;
|
||||
const { numComps } = base;
|
||||
const outputDelta = base.getOutputLength(numComps, alpha01);
|
||||
|
||||
for (let i = 0; i < count; ++i) {
|
||||
const pos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * 3;
|
||||
|
||||
dest[destOffset++] = rgbLookup[pos];
|
||||
dest[destOffset++] = rgbLookup[pos + 1];
|
||||
dest[destOffset++] = rgbLookup[pos + 2];
|
||||
destOffset += alpha01;
|
||||
const lookupPos =
|
||||
MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps;
|
||||
base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
|
||||
destOffset += outputDelta;
|
||||
}
|
||||
}
|
||||
|
||||
getOutputLength(inputLength, alpha01) {
|
||||
return inputLength * (3 + alpha01);
|
||||
return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
|
||||
}
|
||||
|
||||
isDefaultDecode(decode, bpc) {
|
||||
|
||||
@ -243,7 +243,9 @@ class ColorSpaceUtils {
|
||||
break;
|
||||
case "Pattern":
|
||||
baseCS = cs[1] || null;
|
||||
baseCS &&= this.#subParse(baseCS, options);
|
||||
if (baseCS) {
|
||||
baseCS = this.#subParse(baseCS, options);
|
||||
}
|
||||
return new PatternCS(baseCS);
|
||||
case "I":
|
||||
case "Indexed":
|
||||
|
||||
@ -18,12 +18,12 @@ import {
|
||||
assert,
|
||||
BaseException,
|
||||
makeArr,
|
||||
objectSize,
|
||||
Util,
|
||||
warn,
|
||||
} from "../shared/util.js";
|
||||
import { Dict, isName, isRefsEqual, Name, Ref, RefSet } from "./primitives.js";
|
||||
import { BaseStream } from "./base_stream.js";
|
||||
import { CONTROL_CHAR_REGEXP } from "../shared/css_utils.js";
|
||||
import { stringToPDFString } from "./string_utils.js";
|
||||
|
||||
const PDF_VERSION_REGEXP = /^[1-9]\.\d$/;
|
||||
@ -342,8 +342,7 @@ function lookupNormalRect(arr, fallback) {
|
||||
* each part of the path.
|
||||
*/
|
||||
function parseXFAPath(path) {
|
||||
// Anchoring prevents retrying the match at every character.
|
||||
const positionPattern = /^(.+)\[(\d+)\]$/;
|
||||
const positionPattern = /(.+)\[(\d+)\]$/;
|
||||
return path.split(".").map(component => {
|
||||
const m = component.match(positionPattern);
|
||||
if (m) {
|
||||
@ -377,7 +376,7 @@ function escapePDFName(str) {
|
||||
if (start < i) {
|
||||
buffer.push(str.substring(start, i));
|
||||
}
|
||||
buffer.push(`#${char.toString(16).padStart(2, "0")}`);
|
||||
buffer.push(`#${char.toString(16)}`);
|
||||
start = i + 1;
|
||||
}
|
||||
}
|
||||
@ -387,7 +386,7 @@ function escapePDFName(str) {
|
||||
}
|
||||
|
||||
if (start < str.length) {
|
||||
buffer.push(str.substring(start));
|
||||
buffer.push(str.substring(start, str.length));
|
||||
}
|
||||
|
||||
return buffer.join("");
|
||||
@ -451,7 +450,7 @@ function _collectJS(entry, xref, list, parents) {
|
||||
}
|
||||
|
||||
function collectActions(xref, dict, eventType) {
|
||||
const actions = new Map();
|
||||
const actions = Object.create(null);
|
||||
const additionalActionsDicts = getInheritableProperty({
|
||||
dict,
|
||||
key: "AA",
|
||||
@ -477,7 +476,7 @@ function collectActions(xref, dict, eventType) {
|
||||
const list = [];
|
||||
_collectJS(rawActionDict, xref, list, parents);
|
||||
if (list.length > 0) {
|
||||
actions.set(action, list);
|
||||
actions[action] = list;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -489,10 +488,10 @@ function collectActions(xref, dict, eventType) {
|
||||
const list = [];
|
||||
_collectJS(actionDict, xref, list, parents);
|
||||
if (list.length > 0) {
|
||||
actions.set("Action", list);
|
||||
actions.Action = list;
|
||||
}
|
||||
}
|
||||
return actions.size ? actions : null;
|
||||
return objectSize(actions) > 0 ? actions : null;
|
||||
}
|
||||
|
||||
const XMLEntities = {
|
||||
@ -534,7 +533,7 @@ function encodeToXmlString(str) {
|
||||
buffer.push(str.substring(start, i));
|
||||
}
|
||||
buffer.push(`&#x${char.toString(16).toUpperCase()};`);
|
||||
if (char > 0xffff) {
|
||||
if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
|
||||
// char is represented by two u16
|
||||
i++;
|
||||
}
|
||||
@ -546,7 +545,7 @@ function encodeToXmlString(str) {
|
||||
return str;
|
||||
}
|
||||
if (start < str.length) {
|
||||
buffer.push(str.substring(start));
|
||||
buffer.push(str.substring(start, str.length));
|
||||
}
|
||||
return buffer.join("");
|
||||
}
|
||||
@ -562,17 +561,6 @@ function validateFontName(fontFamily, mustWarn = false) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// A <string> is terminated by a newline, which for CSS also includes the
|
||||
// form feed character; see https://drafts.csswg.org/css-syntax/#newline.
|
||||
// The font family is escaped before being used, see `serializeFontFamily`,
|
||||
// hence this only prevents values that cannot sensibly name a font from
|
||||
// being used at all (the unquoted case below is already this strict).
|
||||
if (CONTROL_CHAR_REGEXP.test(fontFamily)) {
|
||||
if (mustWarn) {
|
||||
warn(`FontFamily contains control characters: ${fontFamily}.`);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.
|
||||
for (const ident of fontFamily.split(/[ \t]+/)) {
|
||||
@ -587,18 +575,6 @@ function validateFontName(fontFamily, mustWarn = false) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Strip the spaces preceding a digit, since e.g. "Wingdings 3" is not a valid
|
||||
// font name in the css specs.
|
||||
// The optional trailing digit is matched as part of the space run, so that a
|
||||
// failing match cannot backtrack over the spaces; otherwise the replacement
|
||||
// would be quadratic in the number of consecutive spaces.
|
||||
function normalizeCSSFontFamily(fontFamily) {
|
||||
return fontFamily.replaceAll(
|
||||
/( +)(\d)?/g,
|
||||
(_, spaces, digit) => digit ?? " "
|
||||
);
|
||||
}
|
||||
|
||||
function validateCSSFont(cssFontInfo) {
|
||||
// See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.
|
||||
const DEFAULT_CSS_FONT_OBLIQUE = "14";
|
||||
@ -775,7 +751,6 @@ export {
|
||||
lookupRect,
|
||||
MAX_INT_32,
|
||||
MissingDataException,
|
||||
normalizeCSSFontFamily,
|
||||
numberToString,
|
||||
ParserEOFException,
|
||||
parseXFAPath,
|
||||
|
||||
@ -13,10 +13,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @import {BaseStream} from "./base_stream.js";
|
||||
*/
|
||||
|
||||
import {
|
||||
bytesToString,
|
||||
FormatError,
|
||||
@ -30,11 +26,10 @@ import {
|
||||
warn,
|
||||
} from "../shared/util.js";
|
||||
import { calculateSHA384, calculateSHA512 } from "./calculate_sha_other.js";
|
||||
import { Dict, isDict, isName, Name } from "./primitives.js";
|
||||
import { Dict, isName, Name } from "./primitives.js";
|
||||
import { calculateMD5 } from "./calculate_md5.js";
|
||||
import { calculateSHA256 } from "./calculate_sha256.js";
|
||||
import { DecryptStream } from "./decrypt_stream.js";
|
||||
import { saslPrep } from "./sasl_prep.js";
|
||||
|
||||
/**
|
||||
* @typedef {typeof AES128Cipher | typeof AES256Cipher | typeof ARCFourCipher
|
||||
@ -759,9 +754,6 @@ class CipherTransform {
|
||||
/** @type {Map<string, CipherConstructors>} */
|
||||
#cipherCache = new Map();
|
||||
|
||||
/** @type {Name | null} */
|
||||
embeddedFilterName = null;
|
||||
|
||||
/**
|
||||
* @param {ResolveCipher} resolveCipher
|
||||
* Resolve a cipher constructor from a crypt filter name.
|
||||
@ -797,11 +789,7 @@ class CipherTransform {
|
||||
* @returns {DecryptStream}
|
||||
*/
|
||||
createStream(stream, length, cryptFilterName = null) {
|
||||
const defaultFilterName =
|
||||
this.embeddedFilterName && isDict(stream.dict, "EmbeddedFile")
|
||||
? this.embeddedFilterName
|
||||
: this.streamFilterName;
|
||||
const Cipher = this.#getCipher(cryptFilterName || defaultFilterName);
|
||||
const Cipher = this.#getCipher(cryptFilterName || this.streamFilterName);
|
||||
const cipher = new Cipher();
|
||||
return new DecryptStream(
|
||||
stream,
|
||||
@ -854,18 +842,7 @@ class CipherTransform {
|
||||
}
|
||||
}
|
||||
|
||||
function utf8PasswordToBytes(password) {
|
||||
try {
|
||||
password = utf8StringToString(password);
|
||||
} catch {
|
||||
warn("CipherTransformFactory: Unable to convert UTF8 encoded password.");
|
||||
}
|
||||
return stringToBytes(password);
|
||||
}
|
||||
|
||||
class CipherTransformFactory {
|
||||
#fileId;
|
||||
|
||||
static get _defaultPasswordBytes() {
|
||||
return shadow(
|
||||
this,
|
||||
@ -1065,7 +1042,6 @@ class CipherTransformFactory {
|
||||
}
|
||||
this.filterName = filter.name;
|
||||
this.dict = dict;
|
||||
this.#fileId = fileId;
|
||||
const algorithm = dict.get("V");
|
||||
if (
|
||||
!Number.isInteger(algorithm) ||
|
||||
@ -1101,29 +1077,6 @@ class CipherTransformFactory {
|
||||
throw new FormatError("invalid key length");
|
||||
}
|
||||
|
||||
let cf = null;
|
||||
let stmf = Name.get("Identity");
|
||||
let strf = Name.get("Identity");
|
||||
let eff = stmf;
|
||||
|
||||
if (algorithm >= 4) {
|
||||
cf = dict.get("CF");
|
||||
if (cf instanceof Dict) {
|
||||
// The 'CF' dictionary itself should not be encrypted, and by setting
|
||||
// `suppressEncryption` we can prevent an infinite loop inside of
|
||||
// `XRef_fetchUncompressed` if the dictionary contains indirect
|
||||
// objects (fixes issue7665.pdf).
|
||||
cf.suppressEncryption = true;
|
||||
}
|
||||
stmf = dict.get("StmF") || Name.get("Identity");
|
||||
strf = dict.get("StrF") || Name.get("Identity");
|
||||
eff = dict.get("EFF") || stmf;
|
||||
}
|
||||
this.cf = cf;
|
||||
this.stmf = stmf;
|
||||
this.strf = strf;
|
||||
this.eff = eff;
|
||||
|
||||
const ownerBytes = stringToBytes(dict.get("O")),
|
||||
userBytes = stringToBytes(dict.get("U"));
|
||||
// prepare keys
|
||||
@ -1138,20 +1091,19 @@ class CipherTransformFactory {
|
||||
this.encryptMetadata = encryptMetadata;
|
||||
|
||||
const fileIdBytes = stringToBytes(fileId);
|
||||
let passwordBytes, rawPasswordBytes;
|
||||
let passwordBytes;
|
||||
if (password) {
|
||||
if (revision === 6) {
|
||||
const preppedPassword = saslPrep(password);
|
||||
passwordBytes = utf8PasswordToBytes(preppedPassword);
|
||||
if (preppedPassword !== password) {
|
||||
rawPasswordBytes = utf8PasswordToBytes(password);
|
||||
try {
|
||||
password = utf8StringToString(password);
|
||||
} catch {
|
||||
warn(
|
||||
"CipherTransformFactory: Unable to convert UTF8 encoded password."
|
||||
);
|
||||
}
|
||||
}
|
||||
} else if (algorithm === 5) {
|
||||
passwordBytes = utf8PasswordToBytes(password);
|
||||
} else {
|
||||
passwordBytes = stringToBytes(password);
|
||||
}
|
||||
}
|
||||
|
||||
let encryptionKey;
|
||||
if (algorithm !== 5) {
|
||||
@ -1174,12 +1126,9 @@ class CipherTransformFactory {
|
||||
const ownerEncryption = stringToBytes(dict.get("OE"));
|
||||
const userEncryption = stringToBytes(dict.get("UE"));
|
||||
const perms = stringToBytes(dict.get("Perms"));
|
||||
for (const candidate of rawPasswordBytes
|
||||
? [passwordBytes, rawPasswordBytes]
|
||||
: [passwordBytes]) {
|
||||
encryptionKey = this.#createEncryptionKey20(
|
||||
revision,
|
||||
candidate,
|
||||
passwordBytes,
|
||||
ownerPassword,
|
||||
ownerValidationSalt,
|
||||
ownerKeySalt,
|
||||
@ -1191,28 +1140,9 @@ class CipherTransformFactory {
|
||||
userEncryption,
|
||||
perms
|
||||
);
|
||||
if (encryptionKey) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!encryptionKey) {
|
||||
if (!password) {
|
||||
if (
|
||||
this.algorithm >= 4 &&
|
||||
isName(this.stmf, "Identity") &&
|
||||
isName(this.strf, "Identity")
|
||||
) {
|
||||
const effCF = this.cf?.get(this.eff.name);
|
||||
const authEvent = effCF?.get("AuthEvent");
|
||||
|
||||
if (isName(authEvent, "EFOpen")) {
|
||||
// For EFOpen with Identity as default stream/string filters, defer
|
||||
// password prompting until an EmbeddedFile stream is actually read.
|
||||
this.encryptionKey = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw new PasswordException(
|
||||
"No password given",
|
||||
PasswordResponses.NEED_PASSWORD
|
||||
@ -1252,23 +1182,21 @@ class CipherTransformFactory {
|
||||
} else {
|
||||
this.encryptionKey = encryptionKey;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set password.
|
||||
*
|
||||
* @param {string} password
|
||||
* New password.
|
||||
* @returns {undefined}
|
||||
* Nothing.
|
||||
*/
|
||||
setPassword(password) {
|
||||
const transform = new CipherTransformFactory(
|
||||
this.dict,
|
||||
this.#fileId,
|
||||
password
|
||||
);
|
||||
this.encryptionKey = transform.encryptionKey;
|
||||
if (algorithm >= 4) {
|
||||
const cf = dict.get("CF");
|
||||
if (cf instanceof Dict) {
|
||||
// The 'CF' dictionary itself should not be encrypted, and by setting
|
||||
// `suppressEncryption` we can prevent an infinite loop inside of
|
||||
// `XRef_fetchUncompressed` if the dictionary contains indirect
|
||||
// objects (fixes issue7665.pdf).
|
||||
cf.suppressEncryption = true;
|
||||
}
|
||||
this.cf = cf;
|
||||
this.stmf = dict.get("StmF") || Name.get("Identity");
|
||||
this.strf = dict.get("StrF") || Name.get("Identity");
|
||||
this.eff = dict.get("EFF") || this.stmf;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1292,18 +1220,6 @@ class CipherTransformFactory {
|
||||
if (!cfm || cfm.name === "None") {
|
||||
return NullCipher;
|
||||
}
|
||||
if (!this.encryptionKey) {
|
||||
throw new PasswordException(
|
||||
"No password given",
|
||||
PasswordResponses.NEED_PASSWORD
|
||||
);
|
||||
}
|
||||
if (this.algorithm === 5 || cfm.name === "AESV3") {
|
||||
// V=5 always uses 256-bit AES with the file encryption key, even
|
||||
// when a producer wrongly sets the crypt filter's CFM to AESV2
|
||||
// (bug 2046659).
|
||||
return AES256Cipher.bind(null, this.encryptionKey);
|
||||
}
|
||||
if (cfm.name === "V2") {
|
||||
return ARCFourCipher.bind(
|
||||
null,
|
||||
@ -1326,16 +1242,13 @@ class CipherTransformFactory {
|
||||
)
|
||||
);
|
||||
}
|
||||
if (cfm.name === "AESV3") {
|
||||
return AES256Cipher.bind(null, this.encryptionKey);
|
||||
}
|
||||
throw new FormatError("Unknown crypto method");
|
||||
};
|
||||
|
||||
const transform = new CipherTransform(
|
||||
resolveCipher,
|
||||
this.strf,
|
||||
this.stmf
|
||||
);
|
||||
transform.embeddedFilterName = this.eff;
|
||||
return transform;
|
||||
return new CipherTransform(resolveCipher, this.strf, this.stmf);
|
||||
}
|
||||
|
||||
// algorithms 1 and 2
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user